diff --git a/.gitignore b/.gitignore index 65368e4..7db03f1 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ .packages # If you're building an application, you may want to check-in your pubspec.lock pubspec.lock +!apps/client/pubspec.lock +!apps/runner/pubspec.lock # Directory created by dartdoc # If you don't generate documentation locally you can remove this line. @@ -60,6 +62,9 @@ agent-ops/rules/private/ .claude/settings.local.json /services/core/oto-core agent-test/local/ +!agent-test/ +!agent-test/local/ +!agent-test/local/*.md agent-test/runs/ # BEGIN Agent-Ops managed gitignore diff --git a/agent-roadmap/ROADMAP.md b/agent-roadmap/ROADMAP.md index 6de6c93..309b775 100644 --- a/agent-roadmap/ROADMAP.md +++ b/agent-roadmap/ROADMAP.md @@ -17,9 +17,9 @@ OTO는 YAML 기반 빌드/배포 파이프라인을 실행하는 Dart CLI에서 - [폐기] Edge 직접 연결 기반 `oto-agent` - 경로: `agent-roadmap/archive/phase/edge-direct-oto-agent/PHASE.md` - 요약: OTO가 iop Edge와 proto-socket 기반 outbound 통신을 하는 경로는 검증 근거만 보존하고, 독립 OTO Control Plane 방향으로 전환하며 기본 제품 경로에서는 폐기한다. -- [진행중] 독립 Control Plane 기반 OTO +- [검토중] 독립 Control Plane 기반 OTO - 경로: `agent-roadmap/phase/independent-control-plane/PHASE.md` - - 요약: OTO를 iop 직접 연결 구조에서 분리해 `apps/runner`, `apps/client`, `services/core`를 가진 독립 CI/CD runner/control plane 제품 구조로 전환하며, 현재는 core server 모듈 경계 정리를 진행 중이다. + - 요약: OTO를 iop 직접 연결 구조에서 분리해 `apps/runner`, `apps/client`, `services/core`를 가진 독립 CI/CD runner/control plane 제품 구조로 전환했고, Phase 완료 후보로 검토 중이다. - [검토중] 메시지 기반 빌드 에이전트 - 경로: `agent-roadmap/phase/message-based-build-agent/PHASE.md` - 요약: `oto agent` 또는 `oto daemon` 모드에서 Edge와 양방향 메시지 통신을 사용하며, OTO를 build/deploy 전용 domain agent로 노출한다. diff --git a/agent-roadmap/archive/phase/independent-control-plane/milestones/workspace-metadata-reproducibility.md b/agent-roadmap/archive/phase/independent-control-plane/milestones/workspace-metadata-reproducibility.md new file mode 100644 index 0000000..6d9943f --- /dev/null +++ b/agent-roadmap/archive/phase/independent-control-plane/milestones/workspace-metadata-reproducibility.md @@ -0,0 +1,58 @@ +# Milestone: workspace 메타데이터와 재현성 정리 + +## 상태 + +[완료] + +## 목표 + +모노레포의 lockfile, local test 문서, package metadata, 배포 템플릿 상태를 정리해 새 작업과 배포 검증이 일관되게 재현되도록 만든다. + +## 범위 + +- `.gitignore`의 `pubspec.lock`과 `agent-test/local/` ignore 정책을 현재 추적 파일과 맞춘다. +- Flutter client와 runner package description, web manifest, Chocolatey package placeholder를 제품 상태에 맞게 갱신한다. +- package별 lockfile 추적 또는 비추적 기준을 명시한다. + +## 범위 제외 + +- 배포 채널 추가 +- package versioning 정책 전면 개편 +- secret 또는 private 설정 문서화 + +## 구현 잠금 + +- 상태: 해제 +- 결정 필요: + - 없음 + +## 작업 컨텍스트 + +- `.gitignore`는 기본적으로 `pubspec.lock`을 ignore하되, executable application인 `apps/client`와 `apps/runner` lockfile만 추적 예외로 둔다. +- root에는 `pubspec.yaml`이 없으므로 root `pubspec.lock`은 stale local artifact로 제거하고 계속 ignore한다. +- library package인 `packages/flutter/oto_console`의 `pubspec.lock`은 비추적 기준으로 두고 local artifact로 제거한다. +- `agent-test/local/*.md`는 tracked local test rule/smoke 문서로 유지하고, `agent-test/runs/`는 local 산출물로 ignore한다. +- `apps/client`와 `apps/runner` metadata의 Flutter/Dart 기본 템플릿 문구는 OTO 제품 설명으로 갱신했다. +- `apps/runner/assets/package/chocolatey/_TODO.txt`는 generic Chocolatey TODO 대신 OTO packaging status와 release 전 확인 항목을 기록한다. + +## 기능 + +### Epic: [metadata] workspace metadata + +- [x] [lock-policy] application/library package별 `pubspec.lock` 추적 기준을 확정하고 `.gitignore`를 그 기준에 맞춘다. +- [x] [test-docs] `agent-test/local/` ignore 정책과 tracked smoke 문서 운영 방식이 충돌하지 않도록 정리한다. +- [x] [descriptions] Flutter client, web manifest, runner package description의 기본 템플릿 문구를 제품 설명으로 갱신한다. +- [x] [package-todo] Chocolatey package placeholder의 처리 방향을 결정하고 배포 템플릿 상태를 문서 또는 파일 구조에 반영한다. + +## 완료 리뷰 + +- 상태: 승인됨 +- 요청일: 2026-06-09 +- 승인일: 2026-06-09 +- 완료 근거: + - `.gitignore`가 app lockfile만 추적 예외로 두고 root/library lockfile은 비추적 기준으로 정리되었다. + - local test 문서 추적 예외, package/web metadata, Chocolatey packaging status가 현재 제품 구조에 맞게 갱신되었다. + - `dart pub get`, `flutter pub get`, runner/client analyzer, client test, focused runner CLI smoke가 통과했다. +- 사용자 최종 확인: + - 2026-06-09 완료 및 archive 이동 승인. +- 리뷰 코멘트: runner 전체 `dart test`는 외부 iop Edge smoke의 `agent_kind` 설정 문제로 실패했으며, 이번 변경과 직접 관련된 focused runner CLI smoke는 통과했다. 해당 runner 검증 기준 정합화는 별도 후속 Milestone 범위로 분리한다. diff --git a/agent-roadmap/phase/independent-control-plane/PHASE.md b/agent-roadmap/phase/independent-control-plane/PHASE.md index 53373d2..0125b6c 100644 --- a/agent-roadmap/phase/independent-control-plane/PHASE.md +++ b/agent-roadmap/phase/independent-control-plane/PHASE.md @@ -2,7 +2,7 @@ ## 상태 -[진행중] +[검토중] ## 목표 @@ -33,10 +33,21 @@ OTO를 iop Edge에 직접 붙는 domain agent가 아니라, 독립 실행 가능 - [완료] core server 모듈 경계 정리 - 경로: `agent-roadmap/archive/phase/independent-control-plane/milestones/core-server-boundary-cleanup.md` - 요약: Go core service의 HTTP routing, handler, DTO, clock 의존을 모듈 경계별로 분리한다. -- [진행중] workspace 메타데이터와 재현성 정리 - - 경로: `agent-roadmap/phase/independent-control-plane/milestones/workspace-metadata-reproducibility.md` +- [완료] workspace 메타데이터와 재현성 정리 + - 경로: `agent-roadmap/archive/phase/independent-control-plane/milestones/workspace-metadata-reproducibility.md` - 요약: lockfile, local test 문서, package metadata, 배포 템플릿의 추적/설명 기준을 정리한다. +## 완료 리뷰 + +- 상태: 요청됨 +- 요청일: 2026-06-09 +- 완료 근거: + - 독립 Control Plane 분리, 포트/환경, agent-ops 규칙, runner 출력, oto_console, core server, workspace metadata Milestone이 모두 완료되어 archive 경로로 정리되었다. + - `apps/runner`, `apps/client`, `services/core` 중심의 독립 OTO runner/control plane 구조와 재현성 메타데이터 기준이 정리되었다. +- 사용자 최종 확인: + - [ ] 이 Phase를 완료로 승인하고 archive 이동해도 되는지 확인한다. +- 리뷰 코멘트: runner 전체 test baseline 정리는 `메시지 기반 빌드 에이전트` Phase의 `runner 검증 기준 정합화` Milestone에서 별도 후속으로 추적한다. + ## Phase 경계 - OTO는 iop의 native module이나 iop Edge domain agent로 동작하지 않는다. diff --git a/agent-roadmap/phase/independent-control-plane/milestones/workspace-metadata-reproducibility.md b/agent-roadmap/phase/independent-control-plane/milestones/workspace-metadata-reproducibility.md deleted file mode 100644 index 3628629..0000000 --- a/agent-roadmap/phase/independent-control-plane/milestones/workspace-metadata-reproducibility.md +++ /dev/null @@ -1,43 +0,0 @@ -# Milestone: workspace 메타데이터와 재현성 정리 - -## 상태 - -[진행중] - -## 목표 - -모노레포의 lockfile, local test 문서, package metadata, 배포 템플릿 상태를 정리해 새 작업과 배포 검증이 일관되게 재현되도록 만든다. - -## 범위 - -- `.gitignore`의 `pubspec.lock`과 `agent-test/local/` ignore 정책을 현재 추적 파일과 맞춘다. -- Flutter client와 runner package description, web manifest, Chocolatey package placeholder를 제품 상태에 맞게 갱신한다. -- package별 lockfile 추적 또는 비추적 기준을 명시한다. - -## 범위 제외 - -- 배포 채널 추가 -- package versioning 정책 전면 개편 -- secret 또는 private 설정 문서화 - -## 구현 잠금 - -- 상태: 잠금 -- 결정 필요: - - [ ] Flutter/Dart application package의 `pubspec.lock`을 추적할지, library package는 계속 비추적할지 결정한다. - -## 작업 컨텍스트 - -- `.gitignore`는 모든 `pubspec.lock`을 ignore해 application lockfile도 기본적으로 추적되지 않는다. -- `.gitignore`는 `agent-test/local/`을 ignore하지만, 현재 local test rule과 smoke 문서는 일부 tracked 상태다. -- `apps/client`와 `apps/runner` metadata에는 Flutter/Dart 기본 템플릿 문구가 남아 있다. -- `apps/runner/assets/package/chocolatey/_TODO.txt`는 배포 템플릿 후속 정리 필요 신호로 남아 있다. - -## 기능 - -### Epic: [metadata] workspace metadata - -- [ ] [lock-policy] application/library package별 `pubspec.lock` 추적 기준을 확정하고 `.gitignore`를 그 기준에 맞춘다. -- [ ] [test-docs] `agent-test/local/` ignore 정책과 tracked smoke 문서 운영 방식이 충돌하지 않도록 정리한다. -- [ ] [descriptions] Flutter client, web manifest, runner package description의 기본 템플릿 문구를 제품 설명으로 갱신한다. -- [ ] [package-todo] Chocolatey package placeholder의 처리 방향을 결정하고 배포 템플릿 상태를 문서 또는 파일 구조에 반영한다. diff --git a/apps/client/pubspec.lock b/apps/client/pubspec.lock new file mode 100644 index 0000000..93da6e8 --- /dev/null +++ b/apps/client/pubspec.lock @@ -0,0 +1,227 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + agent_shell: + dependency: "direct main" + description: + path: "../../../agent-shell" + relative: true + source: path + version: "0.1.0" + async: + dependency: transitive + description: + name: async + sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 + url: "https://pub.dev" + source: hosted + version: "2.13.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + url: "https://pub.dev" + source: hosted + version: "1.4.1" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd" + url: "https://pub.dev" + source: hosted + version: "1.0.9" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" + url: "https://pub.dev" + source: hosted + version: "11.0.2" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + url: "https://pub.dev" + source: hosted + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + lints: + dependency: transitive + description: + name: lints + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" + url: "https://pub.dev" + source: hosted + version: "6.1.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + url: "https://pub.dev" + source: hosted + version: "0.12.19" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" + url: "https://pub.dev" + source: hosted + version: "0.13.0" + meta: + dependency: transitive + description: + name: meta + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + url: "https://pub.dev" + source: hosted + version: "1.17.0" + oto_console: + dependency: "direct main" + description: + path: "../../packages/flutter/oto_console" + relative: true + source: path + version: "0.1.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" + url: "https://pub.dev" + source: hosted + version: "1.10.2" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" + url: "https://pub.dev" + source: hosted + version: "0.7.10" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + url: "https://pub.dev" + source: hosted + version: "2.2.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360" + url: "https://pub.dev" + source: hosted + version: "15.2.0" +sdks: + dart: ">=3.11.3 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54" diff --git a/apps/client/pubspec.yaml b/apps/client/pubspec.yaml index f1121e0..8c51b7c 100644 --- a/apps/client/pubspec.yaml +++ b/apps/client/pubspec.yaml @@ -1,5 +1,5 @@ name: oto_client -description: "A new Flutter project." +description: "Flutter client for operating the OTO CI/CD runner control plane." # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/apps/client/web/index.html b/apps/client/web/index.html index 8d55fc0..5700939 100644 --- a/apps/client/web/index.html +++ b/apps/client/web/index.html @@ -18,18 +18,18 @@ - + - + - oto_client + OTO Client diff --git a/apps/client/web/manifest.json b/apps/client/web/manifest.json index c89f35d..c53efd3 100644 --- a/apps/client/web/manifest.json +++ b/apps/client/web/manifest.json @@ -1,11 +1,11 @@ { - "name": "oto_client", - "short_name": "oto_client", + "name": "OTO Client", + "short_name": "OTO", "start_url": ".", "display": "standalone", "background_color": "#0175C2", "theme_color": "#0175C2", - "description": "A new Flutter project.", + "description": "Flutter control-plane client for the OTO CI/CD runner.", "orientation": "portrait-primary", "prefer_related_applications": false, "icons": [ diff --git a/apps/runner/assets/package/chocolatey/_TODO.txt b/apps/runner/assets/package/chocolatey/_TODO.txt index 50bca03..7e16295 100644 --- a/apps/runner/assets/package/chocolatey/_TODO.txt +++ b/apps/runner/assets/package/chocolatey/_TODO.txt @@ -1,131 +1,15 @@ -TODO +OTO Chocolatey Packaging Status -1. Determine Package Use: +Status: tracked packaging scaffold, not ready for public/community release. - Organization? Internal Use? - You are not subject to distribution - rights when you keep everything internal. Put the binaries directly - into the tools directory (as long as total nupkg size is under 1GB). - When bigger, look to use from a share or download binaries from an - internal location. Embedded binaries makes for the most reliable use - of Chocolatey. Use `$fileLocation` (`$file`/`$file64`) and - `Install-ChocolateyInstallPackage`/`Get-ChocolateyUnzip` in - tools\chocolateyInstall.ps1. +Current direction: +- Keep this directory as an internal packaging template for the Dart runner CLI. +- Treat tools/chocolateyinstall.ps1 as a zip/download install scaffold; release URLs and checksums are filled by the release process. +- Do not embed private binaries, credentials, or private release hosts in tracked files. +- Keep tools/LICENSE.txt and tools/VERIFICATION.txt only when a package includes redistributable binaries or public feed evidence. - You can also choose to download from internal urls, see the next - section, but ignore whether you have distribution rights or not, it - doesn't apply. Under no circumstances should download from the - internet, it is completely unreliable. See - https://docs.chocolatey.org/en-us/community-repository/community-packages-disclaimer - to understand the limitations of a publicly available repository. - - Community Repository? - Have Distribution Rights? - If you are the software vendor OR the software EXPLICITLY allows - redistribution and the total nupkg size will be under 200MB, you - have the option to embed the binaries directly into the package to - provide the most reliable install experience. Put the binaries - directly into the tools folder, use `$fileLocation` (`$file`/ - `$file64`) and `Install-ChocolateyInstallPackage`/ - `Get-ChocolateyUnzip` in tools\chocolateyInstall.ps1. Additionally, - fill out the LICENSE and VERIFICATION file (see 3 below and those - files for specifics). - - NOTE: You can choose to download binaries at runtime, but be sure - the download location will remain stable. See the next section. - - Do Not Have Distribution Rights? - - Note: Packages built this way cannot be 100% reliable, but it's a - constraint of publicly available packages and there is little - that can be done to change that. See - https://docs.chocolatey.org/en-us/community-repository/community-packages-disclaimer - to better understand the limitations of a publicly available - repository. - Download Location is Publicly Available? - You will need to download the runtime files from their official - location at runtime. Use `$url`/`$url64` and - `Install-ChocolateyPackage`/`Install-ChocolateyZipPackage` in - tools\chocolateyInstall.ps1. - Download Location is Not Publicly Available? - Stop here, you can't push this to the community repository. You - can ask the vendor for permission to embed, then include a PDF of - that signed permission directly in the package. Otherwise you - will need to seek alternate locations to non-publicly host the - package. - Download Location Is Same For All Versions? - You still need to point to those urls, but you may wish to set up - something like Automatic Updater (AU) so that when a new version - of the software becomes available, the new package version - automatically gets pushed up to the community repository. See - https://docs.chocolatey.org/en-us/create/automatic-packages#automatic-updater-au - -2. Determine Package Type: - -- Installer Package - contains an installer (everything in template is - geared towards this type of package) -- Zip Package - downloads or embeds and unpacks archives, may unpack - and run an installer using `Install-ChocolateyInstallPackage` as a - secondary step. -- Portable Package - Contains runtime binaries (or unpacks them as a - zip package) - cannot require administrative permissions to install - or use -- Config Package - sets config like files, registry keys, etc -- Extension Package - Packages that add PowerShell functions to - Chocolatey - https://docs.chocolatey.org/en-us/features/extensions -- Template Package - Packages that add templates like this for `choco - new -t=name` - https://docs.chocolatey.org/en-us/guides/create/create-custom-package-templates -- Other - there are other types of packages as well, these are the main - package types seen in the wild - -3. Fill out the package contents: - -- tools\chocolateyBeforeModify.ps1 - remove if you have no processes - or services to shut down before upgrade/uninstall -- tools\LICENSE.txt / tools\VERIFICATION.txt - Remove if you are not - embedding binaries. Keep and fill out if you are embedding binaries - in the package AND pushing to the community repository, even if you - are the author of software. The file becomes easier to fill out - (does not require changes each version) if you are the software - vendor. If you are building packages for internal use (organization, - etc), you don't need these files as you are not subject to - distribution rights internally. -- tools\chocolateyUninstall.ps1 - remove if autouninstaller can - automatically uninstall and you have nothing additional to do during - uninstall -- Readme.txt - delete this file once you have read over and used - anything you've needed from here -- nuspec - fill this out, then clean out all the comments (you may wish - to leave the headers for the package vs software metadata) -- tools\chocolateyInstall.ps1 - instructions in next section. - -4. ChocolateyInstall.ps1: - -- For embedded binaries - use `$fileLocation` (`$file`/`$file64`) and - `Install-ChocolateyInstallPackage`/ `Get-ChocolateyUnzip`. -- Downloading binaries at runtime - use `$url`/`$url64` and - `Install-ChocolateyPackage` / `Install-ChocolateyZipPackage`. -- Other needs (creating files, setting registry keys), use regular - PowerShell to do so or see if there is a function already defined: - https://docs.chocolatey.org/en-us/create/functions -- There may also be functions available in extension packages, see - https://community.chocolatey.org/packages?q=id%3A.extension for examples and - availability. -- Clean out the comments and sections you are not using. - -5. Test the package to ensure install/uninstall work appropriately. - There is a test environment you can use for this - - https://github.com/chocolatey/chocolatey-test-environment - -6. Learn more about Chocolatey packaging - go through the workshop at - https://github.com/chocolatey/chocolatey-workshop - You will learn about - - General packaging - - Customizing package behavior at runtime (package parameters) - - Extension packages - - Custom packaging templates - - Setting up an internal Chocolatey.Server repository - - Adding and using internal repositories - - Reporting - - Advanced packaging techniques when installers are not friendly to - automation - -7. Delete this file. +Before publishing: +1. Decide whether the package is internal-only or community feed. +2. Fill package metadata, license, verification, release notes, and checksums from release artifacts. +3. Test install, upgrade, and uninstall in a disposable Windows/Chocolatey environment. +4. Remove or rename this status file only after the template is release-ready. diff --git a/apps/runner/pubspec.lock b/apps/runner/pubspec.lock new file mode 100644 index 0000000..a713c1c --- /dev/null +++ b/apps/runner/pubspec.lock @@ -0,0 +1,725 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + url: "https://pub.dev" + source: hosted + version: "67.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + url: "https://pub.dev" + source: hosted + version: "6.4.1" + archive: + dependency: "direct main" + description: + name: archive + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + url: "https://pub.dev" + source: hosted + version: "3.6.1" + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + asn1lib: + dependency: transitive + description: + name: asn1lib + sha256: "9a8f69025044eb466b9b60ef3bc3ac99b4dc6c158ae9c56d25eeccf5bc56d024" + url: "https://pub.dev" + source: hosted + version: "1.6.5" + async: + dependency: transitive + description: + name: async + sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 + url: "https://pub.dev" + source: hosted + version: "2.13.1" + basics: + dependency: transitive + description: + name: basics + sha256: "41ff8aded84ae174d1df5cce0bcac3ab9070caac9f7da35fd2cc638dfee6163f" + url: "https://pub.dev" + source: hosted + version: "0.10.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + build: + dependency: transitive + description: + name: build + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + build_config: + dependency: transitive + description: + name: build_config + sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957 + url: "https://pub.dev" + source: hosted + version: "4.1.1" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d" + url: "https://pub.dev" + source: hosted + version: "2.4.13" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 + url: "https://pub.dev" + source: hosted + version: "7.3.2" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: "34e4067d30ce212937df995f03b69992eea683539ceeac7f679a1f1eba055b56" + url: "https://pub.dev" + source: hosted + version: "8.12.6" + characters: + dependency: transitive + description: + name: characters + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + url: "https://pub.dev" + source: hosted + version: "1.4.1" + charcode: + dependency: transitive + description: + name: charcode + sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a + url: "https://pub.dev" + source: hosted + version: "1.4.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" + source: hosted + version: "2.0.4" + cli_config: + dependency: transitive + description: + name: cli_config + sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec + url: "https://pub.dev" + source: hosted + version: "0.2.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d" + url: "https://pub.dev" + source: hosted + version: "4.11.1" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + color: + dependency: "direct main" + description: + name: color + sha256: ddcdf1b3badd7008233f5acffaf20ca9f5dc2cd0172b75f68f24526a5f5725cb + url: "https://pub.dev" + source: hosted + version: "3.0.0" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + coverage: + dependency: transitive + description: + name: coverage + sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d" + url: "https://pub.dev" + source: hosted + version: "1.15.0" + cron: + dependency: "direct main" + description: + name: cron + sha256: "2af3de2cabcc81346c00ff9db06296cdaf37ad17bd6f97fb63777a9ddefcacf3" + url: "https://pub.dev" + source: hosted + version: "0.6.2" + crypto: + dependency: transitive + description: + name: crypto + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf + url: "https://pub.dev" + source: hosted + version: "3.0.7" + dart_framework: + dependency: "direct main" + description: + path: "." + ref: master + resolved-ref: ecf7a9414d351370ae0ab0e0706f77f798bb2fae + url: "https://git.toki-labs.com/toki/dart-app-core.git" + source: git + version: "1.0.0" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + url: "https://pub.dev" + source: hosted + version: "2.3.6" + encrypt: + dependency: transitive + description: + name: encrypt + sha256: "62d9aa4670cc2a8798bab89b39fc71b6dfbacf615de6cf5001fb39f7e4a996a2" + url: "https://pub.dev" + source: hosted + version: "5.0.3" + file: + dependency: transitive + description: + name: file + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" + source: hosted + version: "6.1.4" + file_hasher: + dependency: "direct main" + description: + name: file_hasher + sha256: "1fcb11fac52637c081d58daeee717aa6aa463b302759f4c20f8b053168858973" + url: "https://pub.dev" + source: hosted + version: "0.1.0+0" + fixnum: + dependency: "direct main" + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + ftpconnect: + dependency: "direct main" + description: + name: ftpconnect + sha256: a9ebac24a50b17dc9a1101fff85c3729fd8c16ec41346b0fa6e549616e23b2f6 + url: "https://pub.dev" + source: hosted + version: "2.0.10" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + http: + dependency: "direct main" + description: + name: http + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" + url: "https://pub.dev" + source: hosted + version: "1.6.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + intl: + dependency: transitive + description: + name: intl + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" + url: "https://pub.dev" + source: hosted + version: "0.20.2" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" + js: + dependency: transitive + description: + name: js + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" + url: "https://pub.dev" + source: hosted + version: "0.7.2" + json_annotation: + dependency: "direct main" + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + json_serializable: + dependency: "direct dev" + description: + name: json_serializable + sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b + url: "https://pub.dev" + source: hosted + version: "6.8.0" + lints: + dependency: "direct dev" + description: + name: lints + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" + url: "https://pub.dev" + source: hosted + version: "6.1.0" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + meta: + dependency: transitive + description: + name: meta + sha256: c82594181e3312f3d0695fc95aaaf7758d75b8d4ae2bbecf223b9fd5109a059d + url: "https://pub.dev" + source: hosted + version: "1.18.3" + mime: + dependency: transitive + description: + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" + path: + dependency: "direct main" + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" + url: "https://pub.dev" + source: hosted + version: "7.0.2" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe" + url: "https://pub.dev" + source: hosted + version: "3.9.1" + pool: + dependency: transitive + description: + name: pool + sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" + url: "https://pub.dev" + source: hosted + version: "1.5.2" + proto_socket: + dependency: "direct main" + description: + path: "../../../proto-socket/dart" + relative: true + source: path + version: "1.0.5" + protobuf: + dependency: "direct main" + description: + name: protobuf + sha256: "75ec242d22e950bdcc79ee38dd520ce4ee0bc491d7fadc4ea47694604d22bf06" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + resource_importer: + dependency: "direct main" + description: + name: resource_importer + sha256: "90c9a1aee014b03262cff2a6163d4451e3f06d7e6eaf59cab18167f2a3d8defc" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + source_helper: + dependency: transitive + description: + name: source_helper + sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c" + url: "https://pub.dev" + source: hosted + version: "1.3.5" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" + source_span: + dependency: transitive + description: + name: source_span + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" + url: "https://pub.dev" + source: hosted + version: "1.10.2" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 + url: "https://pub.dev" + source: hosted + version: "2.1.1" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test: + dependency: "direct dev" + description: + name: test + sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" + url: "https://pub.dev" + source: hosted + version: "1.26.3" + test_api: + dependency: transitive + description: + name: test_api + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 + url: "https://pub.dev" + source: hosted + version: "0.7.7" + test_core: + dependency: transitive + description: + name: test_core + sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" + url: "https://pub.dev" + source: hosted + version: "0.6.12" + timing: + dependency: transitive + description: + name: timing + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360" + url: "https://pub.dev" + source: hosted + version: "15.2.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + xml: + dependency: "direct main" + description: + name: xml + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" + url: "https://pub.dev" + source: hosted + version: "6.6.1" + xxh3: + dependency: transitive + description: + name: xxh3 + sha256: "399a0438f5d426785723c99da6b16e136f4953fb1e9db0bf270bd41dd4619916" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + yaml: + dependency: "direct main" + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" +sdks: + dart: ">=3.8.0 <4.0.0" diff --git a/apps/runner/pubspec.yaml b/apps/runner/pubspec.yaml index f222c58..71cfd78 100644 --- a/apps/runner/pubspec.yaml +++ b/apps/runner/pubspec.yaml @@ -1,5 +1,5 @@ name: oto -description: A sample command-line application. +description: Dart CLI runner for OTO CI/CD pipeline automation. version: 1.0.0 publish_to: none repository: https://git.toki-labs.com/toki/oto.git