codebyplan 1.13.65 → 1.13.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +118 -75
- package/dist/__tests__/helpers.d.ts +22 -0
- package/dist/__tests__/helpers.d.ts.map +1 -0
- package/dist/ci-public.d.ts +20 -0
- package/dist/ci-public.d.ts.map +1 -0
- package/dist/ci.js +11 -2
- package/dist/cli/arch-map.d.ts +33 -0
- package/dist/cli/arch-map.d.ts.map +1 -0
- package/dist/cli/branch.d.ts +10 -0
- package/dist/cli/branch.d.ts.map +1 -0
- package/dist/cli/bump.d.ts +12 -0
- package/dist/cli/bump.d.ts.map +1 -0
- package/dist/cli/cd.d.ts +20 -0
- package/dist/cli/cd.d.ts.map +1 -0
- package/dist/cli/check.d.ts +30 -0
- package/dist/cli/check.d.ts.map +1 -0
- package/dist/cli/checkpoint.d.ts +17 -0
- package/dist/cli/checkpoint.d.ts.map +1 -0
- package/dist/cli/ci.d.ts +31 -0
- package/dist/cli/ci.d.ts.map +1 -0
- package/dist/cli/claude/__test-helpers__/expect-manifest.d.ts +7 -0
- package/dist/cli/claude/__test-helpers__/expect-manifest.d.ts.map +1 -0
- package/dist/cli/claude/__test-helpers__/tmp-fixture.d.ts +64 -0
- package/dist/cli/claude/__test-helpers__/tmp-fixture.d.ts.map +1 -0
- package/dist/cli/claude/audit-mode.d.ts +16 -0
- package/dist/cli/claude/audit-mode.d.ts.map +1 -0
- package/dist/cli/claude/generate.d.ts +23 -0
- package/dist/cli/claude/generate.d.ts.map +1 -0
- package/dist/cli/claude/install.d.ts +55 -0
- package/dist/cli/claude/install.d.ts.map +1 -0
- package/dist/cli/claude/migrate-memory.d.ts +117 -0
- package/dist/cli/claude/migrate-memory.d.ts.map +1 -0
- package/dist/cli/claude/readme.d.ts +28 -0
- package/dist/cli/claude/readme.d.ts.map +1 -0
- package/dist/cli/claude/status.d.ts +41 -0
- package/dist/cli/claude/status.d.ts.map +1 -0
- package/dist/cli/claude/uninstall.d.ts +21 -0
- package/dist/cli/claude/uninstall.d.ts.map +1 -0
- package/dist/cli/claude/update.d.ts +25 -0
- package/dist/cli/claude/update.d.ts.map +1 -0
- package/dist/cli/claude/verify-parity.d.ts +25 -0
- package/dist/cli/claude/verify-parity.d.ts.map +1 -0
- package/dist/cli/cleanup-plan-folders.d.ts +21 -0
- package/dist/cli/cleanup-plan-folders.d.ts.map +1 -0
- package/dist/cli/commit.d.ts +25 -0
- package/dist/cli/commit.d.ts.map +1 -0
- package/dist/cli/config.d.ts +50 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/confirm.d.ts +9 -0
- package/dist/cli/confirm.d.ts.map +1 -0
- package/dist/cli/create-org.d.ts +9 -0
- package/dist/cli/create-org.d.ts.map +1 -0
- package/dist/cli/create-project.d.ts +10 -0
- package/dist/cli/create-project.d.ts.map +1 -0
- package/dist/cli/create-repo.d.ts +14 -0
- package/dist/cli/create-repo.d.ts.map +1 -0
- package/dist/cli/docs.d.ts +41 -0
- package/dist/cli/docs.d.ts.map +1 -0
- package/dist/cli/doctor.d.ts +17 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/e2e/verify-round.d.ts +46 -0
- package/dist/cli/e2e/verify-round.d.ts.map +1 -0
- package/dist/cli/e2e.d.ts +11 -0
- package/dist/cli/e2e.d.ts.map +1 -0
- package/dist/cli/eslint.d.ts +20 -0
- package/dist/cli/eslint.d.ts.map +1 -0
- package/dist/cli/export-writer.d.ts +99 -0
- package/dist/cli/export-writer.d.ts.map +1 -0
- package/dist/cli/handoff.d.ts +13 -0
- package/dist/cli/handoff.d.ts.map +1 -0
- package/dist/cli/login.d.ts +10 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/logout.d.ts +2 -0
- package/dist/cli/logout.d.ts.map +1 -0
- package/dist/cli/lsp.d.ts +16 -0
- package/dist/cli/lsp.d.ts.map +1 -0
- package/dist/cli/migration-collisions.d.ts +10 -0
- package/dist/cli/migration-collisions.d.ts.map +1 -0
- package/dist/cli/ports.d.ts +29 -0
- package/dist/cli/ports.d.ts.map +1 -0
- package/dist/cli/process-exit-signal.d.ts +24 -0
- package/dist/cli/process-exit-signal.d.ts.map +1 -0
- package/dist/cli/round.d.ts +79 -0
- package/dist/cli/round.d.ts.map +1 -0
- package/dist/cli/scaffold-publish-workflow.d.ts +16 -0
- package/dist/cli/scaffold-publish-workflow.d.ts.map +1 -0
- package/dist/cli/session/freshness-gate.d.ts +21 -0
- package/dist/cli/session/freshness-gate.d.ts.map +1 -0
- package/dist/cli/session/home-ff.d.ts +16 -0
- package/dist/cli/session/home-ff.d.ts.map +1 -0
- package/dist/cli/session/infra-files.d.ts +21 -0
- package/dist/cli/session/infra-files.d.ts.map +1 -0
- package/dist/cli/session/start.d.ts +70 -0
- package/dist/cli/session/start.d.ts.map +1 -0
- package/dist/cli/session.d.ts +17 -0
- package/dist/cli/session.d.ts.map +1 -0
- package/dist/cli/setup.d.ts +2 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/ship.d.ts +16 -0
- package/dist/cli/ship.d.ts.map +1 -0
- package/dist/cli/slug.d.ts +10 -0
- package/dist/cli/slug.d.ts.map +1 -0
- package/dist/cli/standalone-task.d.ts +31 -0
- package/dist/cli/standalone-task.d.ts.map +1 -0
- package/dist/cli/statusline.d.ts +10 -0
- package/dist/cli/statusline.d.ts.map +1 -0
- package/dist/cli/supabase/new-migration.d.ts +24 -0
- package/dist/cli/supabase/new-migration.d.ts.map +1 -0
- package/dist/cli/supabase/preview-check.d.ts +30 -0
- package/dist/cli/supabase/preview-check.d.ts.map +1 -0
- package/dist/cli/supabase/resolve-preview.d.ts +19 -0
- package/dist/cli/supabase/resolve-preview.d.ts.map +1 -0
- package/dist/cli/supabase/teardown-preview.d.ts +22 -0
- package/dist/cli/supabase/teardown-preview.d.ts.map +1 -0
- package/dist/cli/sync.d.ts +13 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/task.d.ts +17 -0
- package/dist/cli/task.d.ts.map +1 -0
- package/dist/cli/tech-stack.d.ts +11 -0
- package/dist/cli/tech-stack.d.ts.map +1 -0
- package/dist/cli/upgrade-auth.d.ts +2 -0
- package/dist/cli/upgrade-auth.d.ts.map +1 -0
- package/dist/cli/upload-e2e-images.d.ts +18 -0
- package/dist/cli/upload-e2e-images.d.ts.map +1 -0
- package/dist/cli/validate-waves.d.ts +22 -0
- package/dist/cli/validate-waves.d.ts.map +1 -0
- package/dist/cli/version-status.d.ts +42 -0
- package/dist/cli/version-status.d.ts.map +1 -0
- package/dist/cli/watch.d.ts +18 -0
- package/dist/cli/watch.d.ts.map +1 -0
- package/dist/cli/whoami.d.ts +5 -0
- package/dist/cli/whoami.d.ts.map +1 -0
- package/dist/cli/worktree/add.d.ts +81 -0
- package/dist/cli/worktree/add.d.ts.map +1 -0
- package/dist/cli/worktree/create.d.ts +46 -0
- package/dist/cli/worktree/create.d.ts.map +1 -0
- package/dist/cli/worktree/path.d.ts +19 -0
- package/dist/cli/worktree/path.d.ts.map +1 -0
- package/dist/cli/worktree/remove.d.ts +92 -0
- package/dist/cli/worktree/remove.d.ts.map +1 -0
- package/dist/cli/worktree.d.ts +15 -0
- package/dist/cli/worktree.d.ts.map +1 -0
- package/dist/cli.js +5697 -5322
- package/dist/dispatch.d.ts +64 -0
- package/dist/dispatch.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/lib/agents-generator.d.ts +42 -0
- package/dist/lib/agents-generator.d.ts.map +1 -0
- package/dist/lib/api.d.ts +54 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/atomic-write.d.ts +27 -0
- package/dist/lib/atomic-write.d.ts.map +1 -0
- package/dist/lib/branch-checkout.d.ts +47 -0
- package/dist/lib/branch-checkout.d.ts.map +1 -0
- package/dist/lib/branch-port-resolver.d.ts +58 -0
- package/dist/lib/branch-port-resolver.d.ts.map +1 -0
- package/dist/lib/bump.d.ts +97 -0
- package/dist/lib/bump.d.ts.map +1 -0
- package/dist/lib/cd-init.d.ts +86 -0
- package/dist/lib/cd-init.d.ts.map +1 -0
- package/dist/lib/check-baseline.d.ts +91 -0
- package/dist/lib/check-baseline.d.ts.map +1 -0
- package/dist/lib/check.d.ts +178 -0
- package/dist/lib/check.d.ts.map +1 -0
- package/dist/lib/ci-init.d.ts +106 -0
- package/dist/lib/ci-init.d.ts.map +1 -0
- package/dist/lib/ci-resolve.d.ts +60 -0
- package/dist/lib/ci-resolve.d.ts.map +1 -0
- package/dist/lib/claude-mode-audit.d.ts +41 -0
- package/dist/lib/claude-mode-audit.d.ts.map +1 -0
- package/dist/lib/claude-plan.d.ts +34 -0
- package/dist/lib/claude-plan.d.ts.map +1 -0
- package/dist/lib/commit-scope.d.ts +21 -0
- package/dist/lib/commit-scope.d.ts.map +1 -0
- package/dist/lib/e2e.d.ts +157 -0
- package/dist/lib/e2e.d.ts.map +1 -0
- package/dist/lib/eslint-generator.d.ts +86 -0
- package/dist/lib/eslint-generator.d.ts.map +1 -0
- package/dist/lib/file-lock.d.ts +44 -0
- package/dist/lib/file-lock.d.ts.map +1 -0
- package/dist/lib/flags.d.ts +115 -0
- package/dist/lib/flags.d.ts.map +1 -0
- package/dist/lib/gh-required-checks.d.ts +76 -0
- package/dist/lib/gh-required-checks.d.ts.map +1 -0
- package/dist/lib/git-utils.d.ts +46 -0
- package/dist/lib/git-utils.d.ts.map +1 -0
- package/dist/lib/gitignore-block.d.ts +32 -0
- package/dist/lib/gitignore-block.d.ts.map +1 -0
- package/dist/lib/gitignore-detect.d.ts +117 -0
- package/dist/lib/gitignore-detect.d.ts.map +1 -0
- package/dist/lib/handoff-file.d.ts +63 -0
- package/dist/lib/handoff-file.d.ts.map +1 -0
- package/dist/lib/hash.d.ts +9 -0
- package/dist/lib/hash.d.ts.map +1 -0
- package/dist/lib/lsp-detect.d.ts +42 -0
- package/dist/lib/lsp-detect.d.ts.map +1 -0
- package/dist/lib/manifest.d.ts +88 -0
- package/dist/lib/manifest.d.ts.map +1 -0
- package/dist/lib/mcp-client.d.ts +39 -0
- package/dist/lib/mcp-client.d.ts.map +1 -0
- package/dist/lib/migrate-branch-model.d.ts +34 -0
- package/dist/lib/migrate-branch-model.d.ts.map +1 -0
- package/dist/lib/migrate-local-config.d.ts +39 -0
- package/dist/lib/migrate-local-config.d.ts.map +1 -0
- package/dist/lib/migration-collisions.d.ts +61 -0
- package/dist/lib/migration-collisions.d.ts.map +1 -0
- package/dist/lib/port-verify.d.ts +73 -0
- package/dist/lib/port-verify.d.ts.map +1 -0
- package/dist/lib/prompt.d.ts +41 -0
- package/dist/lib/prompt.d.ts.map +1 -0
- package/dist/lib/readme-generator.d.ts +108 -0
- package/dist/lib/readme-generator.d.ts.map +1 -0
- package/dist/lib/repo-reader.d.ts +59 -0
- package/dist/lib/repo-reader.d.ts.map +1 -0
- package/dist/lib/scaffold-cd-workflow.d.ts +48 -0
- package/dist/lib/scaffold-cd-workflow.d.ts.map +1 -0
- package/dist/lib/scaffold-ci-workflow.d.ts +83 -0
- package/dist/lib/scaffold-ci-workflow.d.ts.map +1 -0
- package/dist/lib/scaffold-publish-workflow.d.ts +48 -0
- package/dist/lib/scaffold-publish-workflow.d.ts.map +1 -0
- package/dist/lib/server-detect.d.ts +20 -0
- package/dist/lib/server-detect.d.ts.map +1 -0
- package/dist/lib/session.d.ts +371 -0
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/settings-merge.d.ts +268 -0
- package/dist/lib/settings-merge.d.ts.map +1 -0
- package/dist/lib/ship.d.ts +84 -0
- package/dist/lib/ship.d.ts.map +1 -0
- package/dist/lib/slug.d.ts +26 -0
- package/dist/lib/slug.d.ts.map +1 -0
- package/dist/lib/spawn.d.ts +12 -0
- package/dist/lib/spawn.d.ts.map +1 -0
- package/dist/lib/state-client.d.ts +54 -0
- package/dist/lib/state-client.d.ts.map +1 -0
- package/dist/lib/state-store.d.ts +153 -0
- package/dist/lib/state-store.d.ts.map +1 -0
- package/dist/lib/state-sync.d.ts +101 -0
- package/dist/lib/state-sync.d.ts.map +1 -0
- package/dist/lib/statusline-config.d.ts +55 -0
- package/dist/lib/statusline-config.d.ts.map +1 -0
- package/dist/lib/structure-generator.d.ts +63 -0
- package/dist/lib/structure-generator.d.ts.map +1 -0
- package/dist/lib/supabase.d.ts +87 -0
- package/dist/lib/supabase.d.ts.map +1 -0
- package/dist/lib/sync-approvals.d.ts +108 -0
- package/dist/lib/sync-approvals.d.ts.map +1 -0
- package/dist/lib/tech-detect.d.ts +77 -0
- package/dist/lib/tech-detect.d.ts.map +1 -0
- package/dist/lib/template-walker.d.ts +26 -0
- package/dist/lib/template-walker.d.ts.map +1 -0
- package/dist/lib/templates-dir.d.ts +25 -0
- package/dist/lib/templates-dir.d.ts.map +1 -0
- package/dist/lib/types.d.ts +843 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/validate-waves.d.ts +38 -0
- package/dist/lib/validate-waves.d.ts.map +1 -0
- package/dist/lib/verify-parity.d.ts +154 -0
- package/dist/lib/verify-parity.d.ts.map +1 -0
- package/dist/lib/version.d.ts +3 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/watch-daemon.d.ts +114 -0
- package/dist/lib/watch-daemon.d.ts.map +1 -0
- package/dist/lib/worktree.d.ts +56 -0
- package/dist/lib/worktree.d.ts.map +1 -0
- package/dist/oauth/browser.d.ts +8 -0
- package/dist/oauth/browser.d.ts.map +1 -0
- package/dist/oauth/client-registration.d.ts +16 -0
- package/dist/oauth/client-registration.d.ts.map +1 -0
- package/dist/oauth/device-flow.d.ts +40 -0
- package/dist/oauth/device-flow.d.ts.map +1 -0
- package/dist/oauth/jwt-decode.d.ts +10 -0
- package/dist/oauth/jwt-decode.d.ts.map +1 -0
- package/dist/oauth/keychain.d.ts +17 -0
- package/dist/oauth/keychain.d.ts.map +1 -0
- package/dist/oauth/token-refresh.d.ts +7 -0
- package/dist/oauth/token-refresh.d.ts.map +1 -0
- package/dist/oauth/types.d.ts +28 -0
- package/dist/oauth/types.d.ts.map +1 -0
- package/dist/oauth/urls.d.ts +16 -0
- package/dist/oauth/urls.d.ts.map +1 -0
- package/package.json +5 -6
- package/templates/agents/cbp-security-agent.md +0 -1
- package/templates/agents/cbp-stripe-agent.md +0 -1
- package/templates/agents/cbp-testing-qa-agent.md +0 -1
- package/templates/hooks/cbp-skill-context-guard.sh +0 -1
- package/templates/hooks/cbp-test-hooks.sh +0 -81
- package/templates/hooks/validate-structure-lib.sh +36 -9
- package/templates/rules/cbp-operating-gotchas.md +8 -10
- package/templates/rules/todo-backend.md +4 -2
- package/templates/skills/cbp-build-cc-settings/reference/cbp-permission-policy.md +3 -3
- package/templates/skills/cbp-checkpoint-check/SKILL.md +0 -1
- package/templates/skills/cbp-checkpoint-end/SKILL.md +11 -5
- package/templates/skills/cbp-clear-continue/SKILL.md +0 -1
- package/templates/skills/cbp-clear-prep/SKILL.md +0 -1
- package/templates/skills/cbp-finalize/SKILL.md +2 -2
- package/templates/skills/cbp-setup-cd/SKILL.md +0 -1
- package/templates/skills/cbp-setup-ci/SKILL.md +0 -1
- package/templates/skills/cbp-standalone-task-complete/SKILL.md +40 -0
- package/templates/skills/cbp-stripe/SKILL.md +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handler for `codebyplan standalone-task <subcommand>`.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the standalone MCP write tools (create_standalone_task /
|
|
5
|
+
* update_standalone_task / complete_standalone_task). Unlike `codebyplan task`
|
|
6
|
+
* (REST via state-client against the checkpoint-bound `tasks` table), the
|
|
7
|
+
* standalone surface has NO NestJS controller — the ONLY writers for the
|
|
8
|
+
* standalone_tasks table are the MCP tools in
|
|
9
|
+
* packages/mcp-tools/src/tools/standalone-write.ts. So the transport here is
|
|
10
|
+
* MCP JSON-RPC via mcpCall, NOT apiBackendPost/apiBackendPatch.
|
|
11
|
+
*
|
|
12
|
+
* Local-first write semantics (mirrors task.ts / round.ts):
|
|
13
|
+
* 1. Snapshot current local file (update/complete)
|
|
14
|
+
* 2. Optimistic local write
|
|
15
|
+
* 3. MCP call via mcpCall
|
|
16
|
+
* 4a. Success: overwrite local from server row + update entity_hashes
|
|
17
|
+
* 4b. 401 auth error: revert optimistic write + exit 1 (suggest `codebyplan login`)
|
|
18
|
+
* 4c. transient (>=500 / network error): KEEP optimistic + write pending marker + exit 1
|
|
19
|
+
* 4d. tool-level error (zod validation / CHK-104 lock / unapproved files):
|
|
20
|
+
* revert optimistic write + exit 1 (NO pending marker)
|
|
21
|
+
*
|
|
22
|
+
* Local-cache paths are FLAT — `.codebyplan/state/standalone_tasks/<id>.json` —
|
|
23
|
+
* with no checkpoint partitioning, so there is NO --checkpoint-id flag (that is
|
|
24
|
+
* exactly why `task` needs it and `standalone-task` does not).
|
|
25
|
+
*
|
|
26
|
+
* Subcommands: create | update | complete | help
|
|
27
|
+
*
|
|
28
|
+
* Uses parseFlagsFromArgs pattern (no Commander dependency).
|
|
29
|
+
*/
|
|
30
|
+
export declare function runStandaloneTaskCommand(args: string[]): Promise<void>;
|
|
31
|
+
//# sourceMappingURL=standalone-task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone-task.d.ts","sourceRoot":"","sources":["../../src/cli/standalone-task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AA4cH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC5E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codebyplan statusline` — show or set the statusline renderer.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* codebyplan statusline Show current state (renderer, availability, toggles)
|
|
6
|
+
* codebyplan statusline bash|node|python Set the renderer
|
|
7
|
+
* codebyplan statusline --bash|--node|--python Set the renderer (flag form)
|
|
8
|
+
*/
|
|
9
|
+
export declare function runStatusline(args: string[]): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=statusline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../../src/cli/statusline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwCH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgGjE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI entry point for `codebyplan supabase new-migration`.
|
|
3
|
+
*
|
|
4
|
+
* Usage: codebyplan supabase new-migration <name>
|
|
5
|
+
*
|
|
6
|
+
* Creates an empty migration file at supabase/migrations/<stamp>_<slug>.sql.
|
|
7
|
+
*
|
|
8
|
+
* Output JSON: { path }
|
|
9
|
+
*
|
|
10
|
+
* Exit codes:
|
|
11
|
+
* 0 — file created
|
|
12
|
+
* 1 — missing <name> argument
|
|
13
|
+
*/
|
|
14
|
+
import { type GenerateMonotonicTimestampOpts } from "../../lib/supabase.js";
|
|
15
|
+
export interface NewMigrationDeps {
|
|
16
|
+
cwd?: string;
|
|
17
|
+
generateTimestamp?: (opts: GenerateMonotonicTimestampOpts) => string;
|
|
18
|
+
mkdirSyncFn?: (dir: string, opts: {
|
|
19
|
+
recursive: boolean;
|
|
20
|
+
}) => void;
|
|
21
|
+
writeFileSyncFn?: (filePath: string, content: string) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare function newMigration(args: string[], deps?: NewMigrationDeps): number;
|
|
24
|
+
//# sourceMappingURL=new-migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-migration.d.ts","sourceRoot":"","sources":["../../../src/cli/supabase/new-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,8BAA8B,KAAK,MAAM,CAAC;IACrE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAClE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D;AAeD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,gBAAqB,GAC1B,MAAM,CAiCR"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI entry point for `codebyplan supabase preview-check`.
|
|
3
|
+
*
|
|
4
|
+
* Usage: codebyplan supabase preview-check [--mode pre_merge|pre_pr_create]
|
|
5
|
+
*
|
|
6
|
+
* Resolves the current PR number and polls gh pr checks until the
|
|
7
|
+
* "Supabase Preview" check resolves (or times out).
|
|
8
|
+
*
|
|
9
|
+
* Output JSON: { status, reason, failed_step?, log_excerpt? }
|
|
10
|
+
* Exit: 0 always — the status field carries the verdict; callers branch on it.
|
|
11
|
+
*/
|
|
12
|
+
import { type RunFn, type PollGhPreviewCheckResult } from "../../lib/supabase.js";
|
|
13
|
+
export interface PreviewCheckDeps {
|
|
14
|
+
cwd?: string;
|
|
15
|
+
run?: RunFn;
|
|
16
|
+
sleep?: (ms: number) => Promise<void>;
|
|
17
|
+
/** Override PR number resolution. Returns null when no open PR exists. */
|
|
18
|
+
getPrNumber?: (cwd: string, run: RunFn) => string | null;
|
|
19
|
+
/** Override the actual poll (for unit testing without real gh). */
|
|
20
|
+
pollCheck?: (opts: {
|
|
21
|
+
prNumber?: string;
|
|
22
|
+
mode?: "pre_merge" | "pre_pr_create";
|
|
23
|
+
run?: RunFn;
|
|
24
|
+
sleep?: (ms: number) => Promise<void>;
|
|
25
|
+
maxPolls?: number;
|
|
26
|
+
intervalMs?: number;
|
|
27
|
+
}) => Promise<PollGhPreviewCheckResult>;
|
|
28
|
+
}
|
|
29
|
+
export declare function previewCheck(args: string[], deps?: PreviewCheckDeps): Promise<number>;
|
|
30
|
+
//# sourceMappingURL=preview-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-check.d.ts","sourceRoot":"","sources":["../../../src/cli/supabase/preview-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,mEAAmE;IACnE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,WAAW,GAAG,eAAe,CAAC;QACrC,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACzC;AA4BD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA+BjB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI entry point for `codebyplan supabase resolve-preview`.
|
|
3
|
+
*
|
|
4
|
+
* Usage: codebyplan supabase resolve-preview [--branch <name>]
|
|
5
|
+
*
|
|
6
|
+
* Output JSON: { branch, parent_ref, project_ref, db_changed, base }
|
|
7
|
+
* Exit: 0 always.
|
|
8
|
+
*/
|
|
9
|
+
import { type ShipmentConfig, type GitConfig, type DetectDbChangedOpts } from "../../lib/supabase.js";
|
|
10
|
+
export interface ResolvePreviewDeps {
|
|
11
|
+
cwd?: string;
|
|
12
|
+
readShipment?: (cwd: string) => ShipmentConfig;
|
|
13
|
+
readGit?: (cwd: string) => GitConfig;
|
|
14
|
+
detectDb?: (opts: DetectDbChangedOpts) => boolean;
|
|
15
|
+
/** Override current-branch detection. */
|
|
16
|
+
getCurrentBranch?: (cwd: string) => string;
|
|
17
|
+
}
|
|
18
|
+
export declare function resolvePreview(args: string[], deps?: ResolvePreviewDeps): number;
|
|
19
|
+
//# sourceMappingURL=resolve-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-preview.d.ts","sourceRoot":"","sources":["../../../src/cli/supabase/resolve-preview.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC;IAClD,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAYD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,kBAAuB,GAC5B,MAAM,CAqCR"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI entry point for `codebyplan supabase teardown-preview`.
|
|
3
|
+
*
|
|
4
|
+
* Usage: codebyplan supabase teardown-preview <branch>
|
|
5
|
+
*
|
|
6
|
+
* Guard/resolver only — does NOT delete anything. The MCP delete stays in the skill.
|
|
7
|
+
*
|
|
8
|
+
* Output JSON:
|
|
9
|
+
* { status: 'allowed'|'not_found'|'rejected', branch, parent_ref, project_ref, reason? }
|
|
10
|
+
*
|
|
11
|
+
* Exit codes:
|
|
12
|
+
* 0 — allowed or not_found (idempotent)
|
|
13
|
+
* 1 — rejected (guard failed) or missing required arg
|
|
14
|
+
*/
|
|
15
|
+
import { type ShipmentConfig, type GitConfig } from "../../lib/supabase.js";
|
|
16
|
+
export interface TeardownPreviewDeps {
|
|
17
|
+
cwd?: string;
|
|
18
|
+
readShipment?: (cwd: string) => ShipmentConfig;
|
|
19
|
+
readGit?: (cwd: string) => GitConfig;
|
|
20
|
+
}
|
|
21
|
+
export declare function teardownPreview(args: string[], deps?: TeardownPreviewDeps): number;
|
|
22
|
+
//# sourceMappingURL=teardown-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teardown-preview.d.ts","sourceRoot":"","sources":["../../../src/cli/supabase/teardown-preview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC;CACtC;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,mBAAwB,GAC7B,MAAM,CAuGR"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handler for `codebyplan sync`.
|
|
3
|
+
*
|
|
4
|
+
* Hydrates or delta-syncs `.codebyplan/state/` from the backend `/sync`
|
|
5
|
+
* endpoint. Always exits 0 (hook-safe) regardless of outcome.
|
|
6
|
+
*
|
|
7
|
+
* Flags:
|
|
8
|
+
* --full Force a full hydrate (since=0); discards cursor and prunes stale files.
|
|
9
|
+
* --dry-run Resolve paths but skip all writes (prints what would happen).
|
|
10
|
+
* --json Emit structured JSON to stdout instead of human-readable lines.
|
|
11
|
+
*/
|
|
12
|
+
export declare function runSyncCommand(args: string[]): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDlE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handler for `codebyplan task <subcommand>`.
|
|
3
|
+
*
|
|
4
|
+
* Implements local-first write semantics (same pattern as checkpoint.ts):
|
|
5
|
+
* 1. Snapshot current local file
|
|
6
|
+
* 2. Optimistic local write
|
|
7
|
+
* 3. Backend call via state-client
|
|
8
|
+
* 4a. Success: overwrite local from server response + update entity_hashes
|
|
9
|
+
* 4b. 4xx BackendError: restore snapshot + exit 1 with stderr message
|
|
10
|
+
* 4c. 5xx / network error: keep local + write _pending/<id>.json + exit 1
|
|
11
|
+
*
|
|
12
|
+
* Subcommands: create | update | complete
|
|
13
|
+
*
|
|
14
|
+
* Uses parseFlagsFromArgs pattern (no Commander dependency).
|
|
15
|
+
*/
|
|
16
|
+
export declare function runTaskCommand(args: string[]): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/cli/task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+bH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgClE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codebyplan tech-stack` — detect and sync tech stack, and run local config migration.
|
|
3
|
+
*/
|
|
4
|
+
export declare function runTechStack(): Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* `codebyplan tech-stack --full-tech-stack` — simplified to current-repo-only
|
|
7
|
+
* mode (CHK-225 TASK-3: worktree identity stack retired; no device filter, no
|
|
8
|
+
* cross-worktree scan). Behaves identically to the default `runTechStack` call.
|
|
9
|
+
*/
|
|
10
|
+
export declare function runFullTechStack(dryRun: boolean): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=tech-stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tech-stack.d.ts","sourceRoot":"","sources":["../../src/cli/tech-stack.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAqHlD;AA8DD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAerE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-auth.d.ts","sourceRoot":"","sources":["../../src/cli/upgrade-auth.ts"],"names":[],"mappings":"AA+DA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBpD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handler for `codebyplan upload-e2e-images`.
|
|
3
|
+
*
|
|
4
|
+
* Collects new/changed committed e2e PNGs on this branch vs a base branch
|
|
5
|
+
* (feat-vs-base git diff) and POSTs them to the checkpoint-images endpoint.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* codebyplan upload-e2e-images <checkpointId> [--repo-id <uuid>]
|
|
9
|
+
* [--base-branch <name>] [--json] [--dry-run]
|
|
10
|
+
*
|
|
11
|
+
* Flags:
|
|
12
|
+
* --repo-id <uuid> Repository ID (default: read from .codebyplan/repo.json)
|
|
13
|
+
* --base-branch <name> Base branch for git diff (default: main)
|
|
14
|
+
* --json Write JSON result to stdout
|
|
15
|
+
* --dry-run Print collected manifest without uploading
|
|
16
|
+
*/
|
|
17
|
+
export declare function runUploadE2eImagesCommand(args: string[]): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=upload-e2e-images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-e2e-images.d.ts","sourceRoot":"","sources":["../../src/cli/upload-e2e-images.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwOH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8J7E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handler for `codebyplan validate-waves`.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* codebyplan validate-waves [plan.json] [--json]
|
|
6
|
+
* echo '{"waves":[...]}' | codebyplan validate-waves [--json]
|
|
7
|
+
*
|
|
8
|
+
* Input: a JSON file path (first positional arg) or JSON on stdin.
|
|
9
|
+
* Accepts either:
|
|
10
|
+
* { waves: [...] } full plan object
|
|
11
|
+
* [...] bare waves array
|
|
12
|
+
*
|
|
13
|
+
* Output:
|
|
14
|
+
* ok:true → human success line to stdout; exit 0.
|
|
15
|
+
* ok:false → violations to stderr (or JSON to stdout with --json); exit 1.
|
|
16
|
+
*
|
|
17
|
+
* Exit codes:
|
|
18
|
+
* 0 — all invariants pass
|
|
19
|
+
* 1 — one or more violations, or input error
|
|
20
|
+
*/
|
|
21
|
+
export declare function runValidateWavesCommand(args: string[]): Promise<number>;
|
|
22
|
+
//# sourceMappingURL=validate-waves.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-waves.d.ts","sourceRoot":"","sources":["../../src/cli/validate-waves.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAwBH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwG7E"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handler for `codebyplan version-status`.
|
|
3
|
+
*
|
|
4
|
+
* Performs pure DETECTION: reports the installed vs latest codebyplan version
|
|
5
|
+
* and whether an auto-update should be guarded. Never mutates anything.
|
|
6
|
+
*
|
|
7
|
+
* Exit behaviour (always exits 0 — safe for scripted consumption):
|
|
8
|
+
* - Emits a single JSON object to stdout then exits 0
|
|
9
|
+
* - On ANY unhandled error → emits fail-safe JSON and exits 0
|
|
10
|
+
*
|
|
11
|
+
* JSON output keys:
|
|
12
|
+
* installed — running version (from npm_package_version)
|
|
13
|
+
* latest — latest version from npm registry, or null on network failure
|
|
14
|
+
* newer — true iff latest > installed (semver)
|
|
15
|
+
* packageManager — "pnpm" | "yarn" | "npm" (detected from lockfiles)
|
|
16
|
+
* installCommand — local install command for the detected PM
|
|
17
|
+
* guarded — true when auto-update must be skipped
|
|
18
|
+
* guardReason — "protected_branch" | "canonical_source" | "unknown" | null
|
|
19
|
+
* ("unknown" = detection failed; guard conservatively)
|
|
20
|
+
*/
|
|
21
|
+
type GuardReason = "protected_branch" | "canonical_source" | "unknown" | null;
|
|
22
|
+
/**
|
|
23
|
+
* Fetch latest version of the codebyplan package from the npm registry.
|
|
24
|
+
* Returns null on ANY failure (network timeout, registry unavailable, etc.).
|
|
25
|
+
*/
|
|
26
|
+
export declare function fetchLatestVersion(): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Determine the guard reason. Canonical source wins if both apply.
|
|
29
|
+
*
|
|
30
|
+
* canonical_source: gitRoot/packages/codebyplan-package/package.json exists and
|
|
31
|
+
* its `name` field === "codebyplan".
|
|
32
|
+
*
|
|
33
|
+
* protected_branch: current branch is in .codebyplan/git.json branch_config.protected[]
|
|
34
|
+
* OR equals "main".
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveGuard(gitRoot: string | null, currentBranch: string): Promise<{
|
|
37
|
+
guarded: boolean;
|
|
38
|
+
guardReason: GuardReason;
|
|
39
|
+
}>;
|
|
40
|
+
export declare function runVersionStatus(): Promise<void>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=version-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-status.d.ts","sourceRoot":"","sources":["../../src/cli/version-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAgBH,KAAK,WAAW,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAAC;AAgC9E;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAalD;AAwDD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC,CA4EzD;AAMD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6CtD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handler for `codebyplan watch`.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* start — spawn the daemon in background (idempotent)
|
|
6
|
+
* stop — SIGTERM the daemon + remove pidfile
|
|
7
|
+
* status — print daemon status (--json for machine-readable)
|
|
8
|
+
* run — run the daemon in foreground (used internally by `start`)
|
|
9
|
+
*
|
|
10
|
+
* Pidfile layout:
|
|
11
|
+
* <repoRoot>/.codebyplan/state/_watch/<branchSlug|'default'>.pid
|
|
12
|
+
* <repoRoot>/.codebyplan/state/_watch/<branchSlug|'default'>.health.json
|
|
13
|
+
*
|
|
14
|
+
* All FS operations are advisory / non-throwing (mirror state-store.ts contract).
|
|
15
|
+
* Always exits 0 — hook-safe.
|
|
16
|
+
*/
|
|
17
|
+
export declare function runWatchCommand(args: string[]): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAiXH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/cli/whoami.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAiCD,wBAAsB,SAAS,CAAC,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCpE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI entry point for `codebyplan worktree add <CHK-NNN>`.
|
|
3
|
+
*
|
|
4
|
+
* Usage: codebyplan worktree add <CHK-NNN | CHK-007 | bare-number>
|
|
5
|
+
*
|
|
6
|
+
* Looks up the checkpoint's branch_name via MCP, verifies it is available at
|
|
7
|
+
* origin, adds a git worktree at <parent>/<base>-CHK-NNN (T3-D1 naming), copies
|
|
8
|
+
* config stubs into it, and registers it in CodeByPlan via the REST API.
|
|
9
|
+
*
|
|
10
|
+
* Output JSON:
|
|
11
|
+
* { status: 'added', worktree_path, branch_name, worktree_id? }
|
|
12
|
+
* { status: 'branch_pending', message } — branch not yet created (exit 0, DISC4)
|
|
13
|
+
* { status: 'branch_not_ready', message } — branch absent at origin after retries (exit 1)
|
|
14
|
+
* { error: string } — on stderr for hard errors (exit 1)
|
|
15
|
+
*
|
|
16
|
+
* Exit: 0 on success or branch_pending; 1 on usage/hard errors or branch_not_ready.
|
|
17
|
+
*/
|
|
18
|
+
export type BranchLookupResult = {
|
|
19
|
+
found: true;
|
|
20
|
+
branch_name: string;
|
|
21
|
+
} | {
|
|
22
|
+
found: false;
|
|
23
|
+
pending: boolean;
|
|
24
|
+
message: string;
|
|
25
|
+
};
|
|
26
|
+
export interface GitRunResult {
|
|
27
|
+
status: number | null;
|
|
28
|
+
stdout: string;
|
|
29
|
+
stderr: string;
|
|
30
|
+
error?: Error;
|
|
31
|
+
}
|
|
32
|
+
export interface AddWorktreeDeps {
|
|
33
|
+
cwd?: string;
|
|
34
|
+
/** Override repo_id resolution from .codebyplan/repo.json. */
|
|
35
|
+
getRepoId?: (cwd: string) => Promise<string | null>;
|
|
36
|
+
/**
|
|
37
|
+
* Look up the branch_name for a checkpoint number.
|
|
38
|
+
* Returns found=true + branch_name, or found=false + pending/message.
|
|
39
|
+
*/
|
|
40
|
+
lookupBranch?: (repoId: string, checkpointNumber: number) => Promise<BranchLookupResult>;
|
|
41
|
+
/** Override git invocations (fetch, ls-remote, worktree add). */
|
|
42
|
+
gitRun?: (args: string[], cwd: string) => GitRunResult;
|
|
43
|
+
/** Override sleep for retry back-off (injectable for tests). */
|
|
44
|
+
sleep?: (ms: number) => Promise<void>;
|
|
45
|
+
/** Override config-stub copy (.mcp.json, .env.local, .codebyplan/repo.json). */
|
|
46
|
+
copyConfigStubs?: (srcCwd: string, destPath: string) => Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
export interface AddWorktreeResult {
|
|
49
|
+
status: "added" | "branch_pending" | "branch_not_ready";
|
|
50
|
+
worktree_path?: string;
|
|
51
|
+
branch_name?: string;
|
|
52
|
+
message?: string;
|
|
53
|
+
warn?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Copy `.claude/settings.json` and `.claude/settings.local.json` from srcCwd
|
|
57
|
+
* to destPath. Creates `.claude/` in the destination when needed.
|
|
58
|
+
*
|
|
59
|
+
* Non-fatal: skips a file silently when:
|
|
60
|
+
* - it is absent in the source
|
|
61
|
+
* - it already exists in the destination (never overwrite)
|
|
62
|
+
*
|
|
63
|
+
* Exported so `worktree/create.ts` can share the same logic.
|
|
64
|
+
*/
|
|
65
|
+
export declare function copyClaudeSettings(srcCwd: string, destPath: string, deps?: {
|
|
66
|
+
readFileFn?: (p: string) => Promise<string>;
|
|
67
|
+
writeFileFn?: (p: string, content: string) => Promise<void>;
|
|
68
|
+
existsFn?: (p: string) => Promise<boolean>;
|
|
69
|
+
mkdirFn?: (p: string, opts: {
|
|
70
|
+
recursive: boolean;
|
|
71
|
+
}) => Promise<void>;
|
|
72
|
+
}): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Run `codebyplan worktree add <CHK-NNN>`.
|
|
75
|
+
*
|
|
76
|
+
* @param args Remaining args after "add" was stripped — e.g. ["CHK-207"]
|
|
77
|
+
* @param deps Injectable deps for testing.
|
|
78
|
+
* @returns Exit code: 0 on success or branch_pending; 1 on errors.
|
|
79
|
+
*/
|
|
80
|
+
export declare function runWorktreeAdd(args: string[], deps?: AddWorktreeDeps): Promise<number>;
|
|
81
|
+
//# sourceMappingURL=add.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/worktree/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAaH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpD;;;OAGG;IACH,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,KACrB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjC,iEAAiE;IACjE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;IACvD,gEAAgE;IAChE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,gFAAgF;IAChF,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IACJ,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE,GACL,OAAO,CAAC,IAAI,CAAC,CAgCf;AA8DD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,MAAM,CAAC,CAqJjB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI entry point for `codebyplan worktree create <name>`.
|
|
3
|
+
*
|
|
4
|
+
* Usage: codebyplan worktree create <name> [--path <abs>]
|
|
5
|
+
*
|
|
6
|
+
* Writes .codebyplan/ config files into an already-git-worktree-added path
|
|
7
|
+
* and registers the worktree in CodeByPlan via the REST API.
|
|
8
|
+
*
|
|
9
|
+
* The git worktree add itself is intentionally left to the cbp-git-worktree-create
|
|
10
|
+
* skill — this CLI only writes files + registers (planner decision).
|
|
11
|
+
*
|
|
12
|
+
* Output JSON: { worktree_files_written: boolean, mcp_registered: boolean, worktree_id?, warn? }
|
|
13
|
+
* Exit: 0 on success or non-fatal failure; 1 on usage error.
|
|
14
|
+
*/
|
|
15
|
+
import { type FsDeps } from "../../lib/worktree.js";
|
|
16
|
+
/** Repo identity read from the current repo's `.codebyplan/repo.json`. */
|
|
17
|
+
export interface RepoIdentity {
|
|
18
|
+
repo_id: string;
|
|
19
|
+
organization_id?: string;
|
|
20
|
+
project_id?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface CreateWorktreeDeps {
|
|
23
|
+
cwd?: string;
|
|
24
|
+
fsDeps?: FsDeps;
|
|
25
|
+
/** Override repo identity resolution. Returns null when not in a CBP project. */
|
|
26
|
+
getRepoIdentity?: (cwd: string) => Promise<RepoIdentity | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Override the .claude/settings copy step.
|
|
29
|
+
* Called after createWorktreeFiles() succeeds; failure is non-fatal.
|
|
30
|
+
* Defaults to copyClaudeSettings(srcCwd, destPath).
|
|
31
|
+
*/
|
|
32
|
+
copyClaudeSettingsFn?: (srcCwd: string, destPath: string) => Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export interface CreateWorktreeResult {
|
|
35
|
+
worktree_files_written: boolean;
|
|
36
|
+
warn?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Run `codebyplan worktree create`.
|
|
40
|
+
*
|
|
41
|
+
* @param args Remaining args after "create" was stripped — e.g. ["my-branch", "--path", "/abs/path"]
|
|
42
|
+
* @param deps Injectable deps for testing.
|
|
43
|
+
* @returns Exit code: 0 success / non-fatal, 1 usage error.
|
|
44
|
+
*/
|
|
45
|
+
export declare function runWorktreeCreate(args: string[], deps?: CreateWorktreeDeps): Promise<number>;
|
|
46
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/worktree/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOzE,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAChE;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAgCD,MAAM,WAAW,oBAAoB;IACnC,sBAAsB,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA0FjB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared worktree-path utility.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for the T3-D1 naming convention used by both
|
|
5
|
+
* `worktree add` and `worktree remove`:
|
|
6
|
+
* <parent>/<base>-CHK-NNN
|
|
7
|
+
*
|
|
8
|
+
* Example: cwd=/Users/foo/codebyplan-web-2, number=207
|
|
9
|
+
* → /Users/foo/codebyplan-web-2-CHK-207
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Compute the git worktree path for a given checkpoint number.
|
|
13
|
+
*
|
|
14
|
+
* @param cwd Absolute path to the current (home) worktree.
|
|
15
|
+
* @param checkpointNumber Checkpoint number (e.g. 207).
|
|
16
|
+
* @returns Absolute path to the per-checkpoint sibling worktree.
|
|
17
|
+
*/
|
|
18
|
+
export declare function computeWorktreePath(cwd: string, checkpointNumber: number): string;
|
|
19
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/cli/worktree/path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI entry point for `codebyplan worktree remove <name|CHK-NNN|abs-path>`.
|
|
3
|
+
*
|
|
4
|
+
* Usage: codebyplan worktree remove <name> (legacy name-based path)
|
|
5
|
+
* codebyplan worktree remove <CHK-NNN> (checkpoint path — git rm + Supabase teardown)
|
|
6
|
+
* codebyplan worktree remove <bare-number> (same as CHK-NNN)
|
|
7
|
+
* codebyplan worktree remove <abs-path> (direct path — same logic as CHK-NNN without number computation)
|
|
8
|
+
*
|
|
9
|
+
* Legacy path: deregistration retired in CHK-225 TASK-3; returns { mcp_deregistered: false } with no MCP call.
|
|
10
|
+
* CHK-NNN / abs-path: performs git worktree remove and Supabase preview-branch teardown; deregistration removed.
|
|
11
|
+
*
|
|
12
|
+
* Output JSON:
|
|
13
|
+
* Legacy: { mcp_deregistered: boolean, warn? }
|
|
14
|
+
* CHK-NNN / abs-path: { mcp_deregistered: boolean, git_removed: boolean, supabase_torn_down: boolean,
|
|
15
|
+
* remote_branch_deleted?: boolean, local_branch_deleted?: boolean, warn? }
|
|
16
|
+
*
|
|
17
|
+
* Exit: 0 on success or non-fatal failure; 1 on usage error; 2 when cwd is inside the target worktree.
|
|
18
|
+
*/
|
|
19
|
+
export interface GitRunResult {
|
|
20
|
+
status: number | null;
|
|
21
|
+
stdout: string;
|
|
22
|
+
stderr: string;
|
|
23
|
+
error?: Error;
|
|
24
|
+
}
|
|
25
|
+
export interface SupabaseTeardownResult {
|
|
26
|
+
deleted: boolean;
|
|
27
|
+
warn?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface RemoveWorktreeDeps {
|
|
30
|
+
cwd?: string;
|
|
31
|
+
/** Override git invocations (worktree remove, symbolic-ref). */
|
|
32
|
+
gitRun?: (args: string[], cwd: string) => GitRunResult;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the branch checked out in a worktree directory.
|
|
35
|
+
* Called before git worktree remove so the branch name is available for teardown.
|
|
36
|
+
* Returns null when the worktree path is missing or git fails.
|
|
37
|
+
*/
|
|
38
|
+
getWorktreeBranchName?: (worktreePath: string) => string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Delete the Supabase preview branch for a git branch.
|
|
41
|
+
* Non-fatal: returns { deleted: false, warn } on any failure.
|
|
42
|
+
* Idempotent: not-found is success ({ deleted: true }).
|
|
43
|
+
*/
|
|
44
|
+
deleteSupabaseBranch?: (branchName: string, cwd: string) => Promise<SupabaseTeardownResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Guard: returns true when cwd is the worktree being removed or a child of it.
|
|
47
|
+
* When true, removal is aborted with exit code 2.
|
|
48
|
+
* Default: cwd === worktreePath || cwd.startsWith(worktreePath + sep)
|
|
49
|
+
*/
|
|
50
|
+
isInsideWorktreePath?: (worktreePath: string, cwd: string) => boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Verify the remote branch exists (ls-remote --exit-code) and delete it when found.
|
|
53
|
+
* Non-fatal: failures emit warnings and never change the exit code.
|
|
54
|
+
* Returns { remote_branch_deleted: boolean, warn?: string }.
|
|
55
|
+
*/
|
|
56
|
+
verifyAndDeleteRemoteBranch?: (branchName: string, cwd: string) => Promise<{
|
|
57
|
+
remote_branch_deleted: boolean;
|
|
58
|
+
warn?: string;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Delete the local tracking branch after the worktree has been removed.
|
|
62
|
+
* Attempts `git branch -d` first; escalates to `git branch -D` only when the
|
|
63
|
+
* remote is confirmed gone (remote_is_gone === true).
|
|
64
|
+
* Non-fatal: failures emit warnings and never change the exit code.
|
|
65
|
+
* Returns { local_branch_deleted: boolean, warn?: string }.
|
|
66
|
+
*/
|
|
67
|
+
deleteFeatBranch?: (branchName: string, cwd: string, remote_is_gone: boolean) => Promise<{
|
|
68
|
+
local_branch_deleted: boolean;
|
|
69
|
+
warn?: string;
|
|
70
|
+
}>;
|
|
71
|
+
}
|
|
72
|
+
export interface RemoveWorktreeResult {
|
|
73
|
+
mcp_deregistered: boolean;
|
|
74
|
+
/** CHK-NNN / abs-path: whether git worktree remove succeeded. */
|
|
75
|
+
git_removed?: boolean;
|
|
76
|
+
/** CHK-NNN / abs-path: whether the Supabase preview branch was deleted. */
|
|
77
|
+
supabase_torn_down?: boolean;
|
|
78
|
+
/** CHK-NNN / abs-path: whether the remote git branch was deleted. */
|
|
79
|
+
remote_branch_deleted?: boolean;
|
|
80
|
+
/** CHK-NNN / abs-path: whether the local git branch was deleted. */
|
|
81
|
+
local_branch_deleted?: boolean;
|
|
82
|
+
warn?: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Run `codebyplan worktree remove`.
|
|
86
|
+
*
|
|
87
|
+
* @param args Remaining args after "remove" was stripped — e.g. ["my-branch"], ["CHK-207"], or ["/abs/path"]
|
|
88
|
+
* @param deps Injectable deps for testing.
|
|
89
|
+
* @returns Exit code: 0 success / non-fatal, 1 usage error, 2 cwd-inside guard.
|
|
90
|
+
*/
|
|
91
|
+
export declare function runWorktreeRemove(args: string[], deps?: RemoveWorktreeDeps): Promise<number>;
|
|
92
|
+
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/worktree/remove.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IAIb,gEAAgE;IAChE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;IACvD;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAChE;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CACrB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACtE;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,CAC5B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,KACR,OAAO,CAAC;QAAE,qBAAqB,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CACjB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,OAAO,KACpB,OAAO,CAAC;QAAE,oBAAoB,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAoOD,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qEAAqE;IACrE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4LD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAgCjB"}
|