agentplane 0.2.19 → 0.2.22
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/assets/AGENTS.md +6 -4
- package/bin/agentplane.js +24 -0
- package/dist/backends/task-backend/load.d.ts +2 -0
- package/dist/backends/task-backend/load.d.ts.map +1 -1
- package/dist/backends/task-backend/load.js +38 -18
- package/dist/backends/task-backend/local-backend.d.ts.map +1 -1
- package/dist/backends/task-backend/local-backend.js +27 -7
- package/dist/cli/command-guide.d.ts.map +1 -1
- package/dist/cli/command-guide.js +12 -11
- package/dist/cli/run-cli/command-catalog.d.ts +1 -1
- package/dist/cli/run-cli/command-catalog.d.ts.map +1 -1
- package/dist/cli/run-cli/command-catalog.js +72 -13
- package/dist/cli/run-cli/commands/core.d.ts +11 -1
- package/dist/cli/run-cli/commands/core.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/core.js +295 -8
- package/dist/cli/run-cli/commands/init/write-agents.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init/write-agents.js +33 -1
- package/dist/cli/run-cli/commands/init/write-config.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init/write-config.js +4 -0
- package/dist/cli/run-cli/commands/init/write-gitignore.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init/write-gitignore.js +3 -18
- package/dist/cli/run-cli/commands/init.d.ts +1 -0
- package/dist/cli/run-cli/commands/init.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init.js +96 -31
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +86 -17
- package/dist/cli/spec/docs-render.d.ts.map +1 -1
- package/dist/cli/spec/docs-render.js +13 -6
- package/dist/commands/backend/sync.command.d.ts +3 -2
- package/dist/commands/backend/sync.command.d.ts.map +1 -1
- package/dist/commands/backend/sync.command.js +13 -15
- package/dist/commands/commit.command.d.ts.map +1 -1
- package/dist/commands/commit.command.js +2 -0
- package/dist/commands/commit.spec.d.ts +2 -0
- package/dist/commands/commit.spec.d.ts.map +1 -1
- package/dist/commands/commit.spec.js +26 -0
- package/dist/commands/doctor.run.d.ts.map +1 -1
- package/dist/commands/doctor.run.js +15 -6
- package/dist/commands/finish.run.d.ts.map +1 -1
- package/dist/commands/finish.run.js +2 -0
- package/dist/commands/finish.spec.d.ts +2 -0
- package/dist/commands/finish.spec.d.ts.map +1 -1
- package/dist/commands/finish.spec.js +36 -0
- package/dist/commands/guard/impl/allow.d.ts.map +1 -1
- package/dist/commands/guard/impl/allow.js +33 -7
- package/dist/commands/guard/impl/commands.d.ts +2 -0
- package/dist/commands/guard/impl/commands.d.ts.map +1 -1
- package/dist/commands/guard/impl/commands.js +24 -4
- package/dist/commands/guard/impl/comment-commit.d.ts +1 -0
- package/dist/commands/guard/impl/comment-commit.d.ts.map +1 -1
- package/dist/commands/guard/impl/comment-commit.js +16 -24
- package/dist/commands/pr/pr.command.d.ts +1 -1
- package/dist/commands/pr/pr.command.d.ts.map +1 -1
- package/dist/commands/pr/pr.command.js +15 -15
- package/dist/commands/release/apply.command.d.ts.map +1 -1
- package/dist/commands/release/apply.command.js +51 -3
- package/dist/commands/release/plan.command.d.ts.map +1 -1
- package/dist/commands/release/plan.command.js +25 -1
- package/dist/commands/shared/task-backend.d.ts +3 -0
- package/dist/commands/shared/task-backend.d.ts.map +1 -1
- package/dist/commands/shared/task-backend.js +4 -1
- package/dist/commands/task/block.d.ts.map +1 -1
- package/dist/commands/task/block.js +16 -16
- package/dist/commands/task/close-duplicate.command.d.ts +14 -0
- package/dist/commands/task/close-duplicate.command.d.ts.map +1 -0
- package/dist/commands/task/close-duplicate.command.js +102 -0
- package/dist/commands/task/close-duplicate.d.ts +14 -0
- package/dist/commands/task/close-duplicate.d.ts.map +1 -0
- package/dist/commands/task/close-duplicate.js +90 -0
- package/dist/commands/task/close-noop.command.d.ts +14 -0
- package/dist/commands/task/close-noop.command.d.ts.map +1 -0
- package/dist/commands/task/close-noop.command.js +77 -0
- package/dist/commands/task/close-noop.d.ts +13 -0
- package/dist/commands/task/close-noop.d.ts.map +1 -0
- package/dist/commands/task/close-noop.js +77 -0
- package/dist/commands/task/finish.d.ts +2 -0
- package/dist/commands/task/finish.d.ts.map +1 -1
- package/dist/commands/task/finish.js +63 -14
- package/dist/commands/task/index.d.ts +3 -0
- package/dist/commands/task/index.d.ts.map +1 -1
- package/dist/commands/task/index.js +3 -0
- package/dist/commands/task/new.d.ts.map +1 -1
- package/dist/commands/task/new.js +34 -6
- package/dist/commands/task/new.spec.js +1 -1
- package/dist/commands/task/plan.d.ts.map +1 -1
- package/dist/commands/task/plan.js +16 -5
- package/dist/commands/task/ready.d.ts.map +1 -1
- package/dist/commands/task/ready.js +6 -8
- package/dist/commands/task/set-status.d.ts.map +1 -1
- package/dist/commands/task/set-status.js +19 -21
- package/dist/commands/task/shared.d.ts +35 -1
- package/dist/commands/task/shared.d.ts.map +1 -1
- package/dist/commands/task/shared.js +188 -0
- package/dist/commands/task/start-ready.command.d.ts +14 -0
- package/dist/commands/task/start-ready.command.d.ts.map +1 -0
- package/dist/commands/task/start-ready.command.js +77 -0
- package/dist/commands/task/start-ready.d.ts +13 -0
- package/dist/commands/task/start-ready.d.ts.map +1 -0
- package/dist/commands/task/start-ready.js +37 -0
- package/dist/commands/task/start.d.ts.map +1 -1
- package/dist/commands/task/start.js +20 -23
- package/dist/commands/task/update.command.d.ts +1 -0
- package/dist/commands/task/update.command.d.ts.map +1 -1
- package/dist/commands/task/update.command.js +8 -0
- package/dist/commands/task/update.d.ts +1 -0
- package/dist/commands/task/update.d.ts.map +1 -1
- package/dist/commands/task/update.js +19 -3
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +67 -19
- package/dist/shared/errors.d.ts +9 -1
- package/dist/shared/errors.d.ts.map +1 -1
- package/dist/shared/errors.js +3 -1
- package/dist/shared/runtime-artifacts.d.ts +3 -0
- package/dist/shared/runtime-artifacts.d.ts.map +1 -0
- package/dist/shared/runtime-artifacts.js +18 -0
- package/dist/usecases/context/resolve-context.d.ts +3 -0
- package/dist/usecases/context/resolve-context.d.ts.map +1 -1
- package/dist/usecases/context/resolve-context.js +6 -1
- package/package.json +2 -2
- package/dist/cli/parse/lifecycle.d.ts +0 -64
- package/dist/cli/parse/lifecycle.d.ts.map +0 -1
- package/dist/cli/parse/lifecycle.js +0 -285
package/assets/AGENTS.md
CHANGED
|
@@ -137,7 +137,7 @@ Precedence:
|
|
|
137
137
|
|
|
138
138
|
## Framework Upgrade / Prompt Merge
|
|
139
139
|
|
|
140
|
-
`agentplane upgrade` is responsible for mechanical upgrades and safe merges.
|
|
140
|
+
`agentplane upgrade` is responsible for mechanical upgrades and safe merges. Treat prompt-merge as required only for unresolved semantic conflicts (for example, both local and incoming changes exist relative to a baseline and cannot be safely reconciled automatically, or merge parsing fails). If local files did not change relative to baseline, the upgrade may apply incoming framework updates without semantic review.
|
|
141
141
|
|
|
142
142
|
Trigger:
|
|
143
143
|
|
|
@@ -145,6 +145,7 @@ Trigger:
|
|
|
145
145
|
- Agent mode: `.agentplane/.upgrade/agent/<runId>/review.json`
|
|
146
146
|
- Auto mode: `.agentplane/.upgrade/last-review.json`
|
|
147
147
|
- If any record has `needsSemanticReview: true`, prompt merge is required.
|
|
148
|
+
- `needsSemanticReview: false` means the change was mechanically safe (including cases where local files were unchanged vs baseline and incoming updates were applied directly).
|
|
148
149
|
|
|
149
150
|
Protocol:
|
|
150
151
|
|
|
@@ -425,7 +426,7 @@ If config sets `agents.approvals.require_plan=true`:
|
|
|
425
426
|
- `## Verify Steps` is the **ex-ante verification contract**: instructions and pass criteria addressed to the verifier.
|
|
426
427
|
- `## Verification` is the **ex-post verification log**: append-only entries written by `agentplane verify ...`.
|
|
427
428
|
- Do not hand-edit `## Verification` entries. Treat them as audit records.
|
|
428
|
-
- For tasks with verify-required tags (default: `code`, `
|
|
429
|
+
- For tasks with verify-required primary tags (default: `code`, `data`, `ops`) and for `spike`, `agentplane task plan approve`
|
|
429
430
|
will block until `## Verify Steps` is filled (the placeholder `<!-- TODO: FILL VERIFY STEPS -->` is treated as empty).
|
|
430
431
|
- Use `agentplane task verify-show <task-id>` to print the current `## Verify Steps` to stdout.
|
|
431
432
|
|
|
@@ -471,8 +472,9 @@ Use comment-driven flags (where supported by agentplane), e.g.:
|
|
|
471
472
|
|
|
472
473
|
In this mode:
|
|
473
474
|
|
|
474
|
-
- agentplane builds the commit subject as `<emoji> <suffix> <
|
|
475
|
-
-
|
|
475
|
+
- agentplane builds the commit subject as `<emoji> <suffix> <primary>: <status>` for major transitions only.
|
|
476
|
+
- major transitions for status/comment-driven commits: `TODO->DOING`, `DOING->BLOCKED`, `BLOCKED->DOING`, `DOING->DONE`.
|
|
477
|
+
- agentplane adds a short structured commit body (`Task` / `Primary` / `Status` / `Comment`) automatically for comment-driven commits.
|
|
476
478
|
|
|
477
479
|
## Commit subject format (enforced)
|
|
478
480
|
|
package/bin/agentplane.js
CHANGED
|
@@ -12,6 +12,29 @@ async function exists(p) {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
async function maybeWarnGlobalBinaryInRepoCheckout() {
|
|
16
|
+
const cwd = process.cwd();
|
|
17
|
+
const repoCli = path.join(cwd, "packages", "agentplane", "src", "cli.ts");
|
|
18
|
+
const repoBin = path.join(cwd, "packages", "agentplane", "bin", "agentplane.js");
|
|
19
|
+
if (!(await exists(repoCli)) || !(await exists(repoBin))) return;
|
|
20
|
+
|
|
21
|
+
const thisBin = fileURLToPath(import.meta.url);
|
|
22
|
+
const normalizedThis = path.resolve(thisBin);
|
|
23
|
+
const normalizedRepo = path.resolve(repoBin);
|
|
24
|
+
if (normalizedThis === normalizedRepo) return;
|
|
25
|
+
|
|
26
|
+
process.stderr.write(
|
|
27
|
+
"warning: running global agentplane binary inside repository checkout.\n" +
|
|
28
|
+
"using global binary: " +
|
|
29
|
+
normalizedThis +
|
|
30
|
+
"\n" +
|
|
31
|
+
"expected local binary: " +
|
|
32
|
+
normalizedRepo +
|
|
33
|
+
"\n" +
|
|
34
|
+
"tip: run `node packages/agentplane/bin/agentplane.js ...` for repo-local changes.\n",
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
15
38
|
function isTestLikePath(absPath) {
|
|
16
39
|
// The repo build does not emit test files to dist. If we treat test mtimes as
|
|
17
40
|
// "src is newer than dist", we can block normal commits that only change tests.
|
|
@@ -106,5 +129,6 @@ async function assertDistUpToDate() {
|
|
|
106
129
|
return true;
|
|
107
130
|
}
|
|
108
131
|
|
|
132
|
+
await maybeWarnGlobalBinaryInRepoCheckout();
|
|
109
133
|
const ok = await assertDistUpToDate();
|
|
110
134
|
if (ok) await import("../dist/cli.js");
|
|
@@ -3,6 +3,8 @@ import { type TaskBackend } from "./shared.js";
|
|
|
3
3
|
export declare function loadTaskBackend(opts: {
|
|
4
4
|
cwd: string;
|
|
5
5
|
rootOverride?: string | null;
|
|
6
|
+
resolvedProject?: ResolvedProject;
|
|
7
|
+
config?: AgentplaneConfig;
|
|
6
8
|
}): Promise<{
|
|
7
9
|
backend: TaskBackend;
|
|
8
10
|
backendId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/backends/task-backend/load.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/backends/task-backend/load.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAuF7D,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC,CAUD"}
|
|
@@ -18,6 +18,37 @@ async function loadBackendConfig(configPath) {
|
|
|
18
18
|
throw err;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
+
async function instantiateTaskBackend(opts) {
|
|
22
|
+
const backendConfigPath = path.join(opts.resolved.gitRoot, opts.config.tasks_backend.config_path);
|
|
23
|
+
const backendConfig = await loadBackendConfig(backendConfigPath);
|
|
24
|
+
const normalized = normalizeBackendConfig(backendConfig);
|
|
25
|
+
const backendId = normalized.id;
|
|
26
|
+
const settings = normalized.settings;
|
|
27
|
+
if (backendId === "redmine") {
|
|
28
|
+
await loadDotEnv(opts.resolved.gitRoot);
|
|
29
|
+
const cacheDirRaw = resolveMaybeRelative(opts.resolved.gitRoot, settings.cache_dir);
|
|
30
|
+
const cacheDir = cacheDirRaw ?? path.join(opts.resolved.gitRoot, opts.config.paths.workflow_dir);
|
|
31
|
+
const cache = cacheDir ? new LocalBackend({ dir: cacheDir }) : null;
|
|
32
|
+
const redmine = new RedmineBackend(settings, { cache });
|
|
33
|
+
return {
|
|
34
|
+
backend: redmine,
|
|
35
|
+
backendId,
|
|
36
|
+
resolved: opts.resolved,
|
|
37
|
+
config: opts.config,
|
|
38
|
+
backendConfigPath,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const localDir = resolveMaybeRelative(opts.resolved.gitRoot, settings.dir) ??
|
|
42
|
+
path.join(opts.resolved.gitRoot, opts.config.paths.workflow_dir);
|
|
43
|
+
const local = new LocalBackend({ dir: localDir });
|
|
44
|
+
return {
|
|
45
|
+
backend: local,
|
|
46
|
+
backendId: "local",
|
|
47
|
+
resolved: opts.resolved,
|
|
48
|
+
config: opts.config,
|
|
49
|
+
backendConfigPath,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
21
52
|
function resolveMaybeRelative(root, input) {
|
|
22
53
|
if (!input)
|
|
23
54
|
return null;
|
|
@@ -36,23 +67,12 @@ function normalizeBackendConfig(raw) {
|
|
|
36
67
|
return { id, version, settings };
|
|
37
68
|
}
|
|
38
69
|
export async function loadTaskBackend(opts) {
|
|
39
|
-
const resolved =
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const normalized = normalizeBackendConfig(backendConfig);
|
|
44
|
-
const backendId = normalized.id;
|
|
45
|
-
const settings = normalized.settings;
|
|
46
|
-
if (backendId === "redmine") {
|
|
47
|
-
await loadDotEnv(resolved.gitRoot);
|
|
48
|
-
const cacheDirRaw = resolveMaybeRelative(resolved.gitRoot, settings.cache_dir);
|
|
49
|
-
const cacheDir = cacheDirRaw ?? path.join(resolved.gitRoot, loaded.config.paths.workflow_dir);
|
|
50
|
-
const cache = cacheDir ? new LocalBackend({ dir: cacheDir }) : null;
|
|
51
|
-
const redmine = new RedmineBackend(settings, { cache });
|
|
52
|
-
return { backend: redmine, backendId, resolved, config: loaded.config, backendConfigPath };
|
|
70
|
+
const resolved = opts.resolvedProject ??
|
|
71
|
+
(await resolveProject({ cwd: opts.cwd, rootOverride: opts.rootOverride ?? null }));
|
|
72
|
+
if (opts.config) {
|
|
73
|
+
return await instantiateTaskBackend({ resolved, config: opts.config });
|
|
53
74
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return { backend: local, backendId: "local", resolved, config: loaded.config, backendConfigPath };
|
|
75
|
+
const loadedConfig = await loadConfig(resolved.agentplaneDir);
|
|
76
|
+
const config = loadedConfig.config;
|
|
77
|
+
return await instantiateTaskBackend({ resolved, config });
|
|
58
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-backend.d.ts","sourceRoot":"","sources":["../../../src/backends/task-backend/local-backend.ts"],"names":[],"mappings":"AAqBA,OAAO,EAiBL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AAErB,qBAAa,YAAa,YAAW,WAAW;IAC9C,EAAE,SAAW;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;gBAEN,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAKrD,cAAc,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB3E,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"local-backend.d.ts","sourceRoot":"","sources":["../../../src/backends/task-backend/local-backend.ts"],"names":[],"mappings":"AAqBA,OAAO,EAiBL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AAErB,qBAAa,YAAa,YAAW,WAAW;IAC9C,EAAE,SAAW;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;gBAEN,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAKrD,cAAc,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB3E,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgHhC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAoBjD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;IAKzD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO3C,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAyExC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1E,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAoF/D,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzD"}
|
|
@@ -41,14 +41,15 @@ export class LocalBackend {
|
|
|
41
41
|
const entries = await readdir(this.root, { withFileTypes: true }).catch(() => []);
|
|
42
42
|
const indexPath = resolveTaskIndexPath(this.root);
|
|
43
43
|
const cachedIndex = await loadTaskIndex(indexPath);
|
|
44
|
-
const
|
|
44
|
+
const cachedEntryByPath = new Map();
|
|
45
45
|
if (cachedIndex) {
|
|
46
46
|
for (const [readmePath, taskId] of Object.entries(cachedIndex.byPath)) {
|
|
47
47
|
const entry = cachedIndex.byId[taskId];
|
|
48
48
|
if (entry)
|
|
49
|
-
|
|
49
|
+
cachedEntryByPath.set(readmePath, entry);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
+
let indexDirty = cachedIndex === null;
|
|
52
53
|
const nextById = {};
|
|
53
54
|
const nextByPath = {};
|
|
54
55
|
const seen = new Set();
|
|
@@ -68,10 +69,11 @@ export class LocalBackend {
|
|
|
68
69
|
}
|
|
69
70
|
if (!stats.isFile())
|
|
70
71
|
return null;
|
|
71
|
-
const cached =
|
|
72
|
+
const cached = cachedEntryByPath.get(readme);
|
|
72
73
|
if (cached?.mtimeMs === stats.mtimeMs) {
|
|
73
74
|
return { task: cached.task, index: cached, mtimeMs: stats.mtimeMs, readme };
|
|
74
75
|
}
|
|
76
|
+
indexDirty = true;
|
|
75
77
|
let text = "";
|
|
76
78
|
try {
|
|
77
79
|
text = await readFile(readme, "utf8");
|
|
@@ -115,11 +117,29 @@ export class LocalBackend {
|
|
|
115
117
|
nextByPath[entry.readmePath] = taskId;
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
+
if (cachedIndex && indexDirty === false) {
|
|
121
|
+
const cachedPaths = Object.keys(cachedIndex.byPath);
|
|
122
|
+
const nextPaths = Object.keys(nextByPath);
|
|
123
|
+
if (cachedPaths.length === nextPaths.length) {
|
|
124
|
+
for (const readmePath of nextPaths) {
|
|
125
|
+
if (cachedIndex.byPath[readmePath] === nextByPath[readmePath]) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
indexDirty = true;
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
indexDirty = true;
|
|
134
|
+
}
|
|
120
135
|
}
|
|
121
|
-
|
|
122
|
-
|
|
136
|
+
if (indexDirty) {
|
|
137
|
+
try {
|
|
138
|
+
await saveTaskIndex(indexPath, { schema_version: 2, byId: nextById, byPath: nextByPath });
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// Best-effort cache; ignore failures.
|
|
142
|
+
}
|
|
123
143
|
}
|
|
124
144
|
return tasks;
|
|
125
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-guide.d.ts","sourceRoot":"","sources":["../../src/cli/command-guide.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command-guide.d.ts","sourceRoot":"","sources":["../../src/cli/command-guide.ts"],"names":[],"mappings":"AAgMA,wBAAgB,SAAS,IAAI,MAAM,EAAE,CAEpC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOzD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CA8EzC"}
|
|
@@ -57,11 +57,11 @@ const CHEAT_SHEET_ROWS = [
|
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
operation: "INTEGRATOR: finish task(s)",
|
|
60
|
-
command: '`agentplane finish <task-id> [<task-id> ...] --commit <git-rev> --author INTEGRATOR --body "Verified: ..." [--result "<one line>"]`',
|
|
60
|
+
command: '`agentplane finish <task-id> [<task-id> ...] --commit <git-rev> --author INTEGRATOR --body "Verified: ..." [--result "<one line>"] [--close-commit] [--close-unstage-others]`',
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
operation: "INTEGRATOR: commit closure",
|
|
64
|
-
command: "`agentplane commit <task-id> --close`",
|
|
64
|
+
command: "Preferred: `agentplane finish <task-id> --close-commit` (single command). Legacy/manual: `agentplane commit <task-id> --close [--check-only] [--unstage-others]` / duplicate no-op close: `agentplane task close-duplicate <task-id> --of <canonical-task-id> --author <ROLE>`",
|
|
65
65
|
},
|
|
66
66
|
];
|
|
67
67
|
const ROLE_GUIDES = [
|
|
@@ -82,7 +82,7 @@ const ROLE_GUIDES = [
|
|
|
82
82
|
'- Update tasks: `agentplane task update <task-id> --title "..." --description "..." --priority med --owner <ROLE> --depends-on <task-id>`',
|
|
83
83
|
"- Scaffold artifacts: `agentplane task scaffold <task-id>`",
|
|
84
84
|
'- Plan lifecycle: `agentplane task plan set <task-id> --text "..." --updated-by <ROLE>` -> `agentplane task plan approve <task-id> --by <id>`',
|
|
85
|
-
"- Verify Steps discipline: if a task
|
|
85
|
+
"- Verify Steps discipline: if a task primary tag is verify-required (default: code/data/ops), fill `## Verify Steps` before plan approval.",
|
|
86
86
|
'- Task docs (when planning needs it): `agentplane task doc set <task-id> --section Summary --text "..."`',
|
|
87
87
|
],
|
|
88
88
|
},
|
|
@@ -95,7 +95,7 @@ const ROLE_GUIDES = [
|
|
|
95
95
|
"- Verify Steps: `agentplane task verify-show <task-id>` (use as the verification contract before recording results).",
|
|
96
96
|
'- Verify: `agentplane verify <task-id> --ok|--rework --by <ROLE> --note "..."`',
|
|
97
97
|
'- PR artifacts (branch_pr): `agentplane pr open <task-id> --branch task/<task-id>/<slug> --author <ROLE>` / `agentplane pr update <task-id>` / `agentplane pr note <task-id> --author <ROLE> --body "..."`',
|
|
98
|
-
'- Commit: `agentplane guard commit <task-id> -m "<emoji> <suffix> <scope>: <summary>"` / `agentplane commit <task-id> -m "<emoji> <suffix> <scope>: <summary>" --allow <path-prefix>` / close: `agentplane
|
|
98
|
+
'- Commit: `agentplane guard commit <task-id> -m "<emoji> <suffix> <scope>: <summary>"` / `agentplane commit <task-id> -m "<emoji> <suffix> <scope>: <summary>" --allow <path-prefix>` / preferred close path: `agentplane finish <task-id> --close-commit [--close-unstage-others]`',
|
|
99
99
|
],
|
|
100
100
|
},
|
|
101
101
|
{
|
|
@@ -107,7 +107,7 @@ const ROLE_GUIDES = [
|
|
|
107
107
|
"- Verify Steps: `agentplane task verify-show <task-id>` (treat as the verification contract).",
|
|
108
108
|
'- Verify: `agentplane verify <task-id> --ok|--rework --by <ROLE> --note "..."`',
|
|
109
109
|
'- PR artifacts (branch_pr): `agentplane pr open <task-id> --branch task/<task-id>/<slug> --author <ROLE>` / `agentplane pr update <task-id>` / `agentplane pr note <task-id> --author <ROLE> --body "..."`',
|
|
110
|
-
'- Commit: `agentplane guard commit <task-id> -m "<emoji> <suffix> <scope>: <summary>"` / `agentplane commit <task-id> -m "<emoji> <suffix> <scope>: <summary>" --allow <path-prefix>` / close: `agentplane
|
|
110
|
+
'- Commit: `agentplane guard commit <task-id> -m "<emoji> <suffix> <scope>: <summary>"` / `agentplane commit <task-id> -m "<emoji> <suffix> <scope>: <summary>" --allow <path-prefix>` / preferred close path: `agentplane finish <task-id> --close-commit [--close-unstage-others]`',
|
|
111
111
|
],
|
|
112
112
|
},
|
|
113
113
|
{
|
|
@@ -115,7 +115,7 @@ const ROLE_GUIDES = [
|
|
|
115
115
|
lines: [
|
|
116
116
|
'- Task docs: `agentplane task doc set <task-id> --section Summary --text "..."` (repeat per section or use `--file`)',
|
|
117
117
|
'- PR notes: `agentplane pr note <task-id> --author DOCS --body "..."`',
|
|
118
|
-
'- Commit: `agentplane guard commit <task-id> -m "<emoji> <suffix> <scope>: <summary>"` / `agentplane commit <task-id> -m "<emoji> <suffix> <scope>: <summary>" --allow <path-prefix>` / close: `agentplane
|
|
118
|
+
'- Commit: `agentplane guard commit <task-id> -m "<emoji> <suffix> <scope>: <summary>"` / `agentplane commit <task-id> -m "<emoji> <suffix> <scope>: <summary>" --allow <path-prefix>` / preferred close path: `agentplane finish <task-id> --close-commit [--close-unstage-others]`',
|
|
119
119
|
],
|
|
120
120
|
},
|
|
121
121
|
{
|
|
@@ -128,8 +128,8 @@ const ROLE_GUIDES = [
|
|
|
128
128
|
{
|
|
129
129
|
role: "INTEGRATOR",
|
|
130
130
|
lines: [
|
|
131
|
-
'- branch_pr: `agentplane pr check <task-id>` -> `agentplane integrate <task-id> --branch task/<task-id>/<slug> --merge-strategy squash --run-verify` -> `agentplane finish <task-id> --commit <git-rev> --author INTEGRATOR --body "Verified: ..."`',
|
|
132
|
-
'- direct: task owner uses `agentplane finish <task-id> --commit <git-rev> --author <OWNER> --body "Verified: ..."` after the implementation commit',
|
|
131
|
+
'- branch_pr: `agentplane pr check <task-id>` -> `agentplane integrate <task-id> --branch task/<task-id>/<slug> --merge-strategy squash --run-verify` -> `agentplane finish <task-id> --commit <git-rev> --author INTEGRATOR --body "Verified: ..." --close-commit`',
|
|
132
|
+
'- direct: task owner uses `agentplane finish <task-id> --commit <git-rev> --author <OWNER> --body "Verified: ..." --close-commit` after the implementation commit',
|
|
133
133
|
"- Optional cleanup: `agentplane cleanup merged --yes`",
|
|
134
134
|
],
|
|
135
135
|
},
|
|
@@ -205,7 +205,7 @@ export function renderQuickstart() {
|
|
|
205
205
|
'- `agentplane task new --title "..." --description "..." --priority med --owner CODER --tag <tag>`',
|
|
206
206
|
'- `agentplane start <task-id> --author <ROLE> --body "Start: ..."`',
|
|
207
207
|
'- `agentplane verify <task-id> --ok|--rework --by <ROLE> --note "..."`',
|
|
208
|
-
'- `agentplane finish <task-id> --author <ROLE> --body "Verified: ..."`',
|
|
208
|
+
'- `agentplane finish <task-id> --author <ROLE> --body "Verified: ..." --commit <git-rev> --close-commit`',
|
|
209
209
|
"",
|
|
210
210
|
"## Branch workflow (branch_pr)",
|
|
211
211
|
"",
|
|
@@ -233,7 +233,7 @@ export function renderQuickstart() {
|
|
|
233
233
|
"",
|
|
234
234
|
"- Show the current config: `agentplane config show`",
|
|
235
235
|
"- Set a value by dotted key: `agentplane config set workflow_mode branch_pr`",
|
|
236
|
-
'- Set JSON values (lists/objects): `agentplane config set tasks.verify.
|
|
236
|
+
'- Set JSON values (lists/objects): `agentplane config set tasks.verify.require_steps_for_primary \'["code","data","ops"]\'`',
|
|
237
237
|
"",
|
|
238
238
|
"## Role/phase command guide (when to use what)",
|
|
239
239
|
"",
|
|
@@ -258,6 +258,7 @@ export function renderQuickstart() {
|
|
|
258
258
|
"",
|
|
259
259
|
"Notes:",
|
|
260
260
|
"- `suffix` is the task ID segment after the last dash.",
|
|
261
|
-
"- When using comment-driven flags, the subject is auto-built as `<emoji> <suffix> <
|
|
261
|
+
"- When using comment-driven flags, the subject is auto-built as `<emoji> <suffix> <primary>: <status>` and only for major transitions (TODO->DOING, DOING->BLOCKED, BLOCKED->DOING, DOING->DONE).",
|
|
262
|
+
"- Comment-driven commit bodies are structured: `Task`, `Primary`, `Status`, `Comment`.",
|
|
262
263
|
].join("\n");
|
|
263
264
|
}
|
|
@@ -15,5 +15,5 @@ export type CommandEntry = {
|
|
|
15
15
|
needsConfig: boolean;
|
|
16
16
|
needsTaskContext: boolean;
|
|
17
17
|
};
|
|
18
|
-
export declare const COMMANDS: readonly [CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry];
|
|
18
|
+
export declare const COMMANDS: readonly [CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry, CommandEntry];
|
|
19
19
|
//# sourceMappingURL=command-catalog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-catalog.d.ts","sourceRoot":"","sources":["../../../src/cli/run-cli/command-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"command-catalog.d.ts","sourceRoot":"","sources":["../../../src/cli/run-cli/command-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAoGvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEzE,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,CAAC,sBAAsB,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACpE,kBAAkB,EAAE,CAAC,sBAAsB,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACjF,eAAe,EAAE,CAAC,sBAAsB,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3E,kBAAkB,EAAE,MAAM,SAAS,QAAQ,EAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAgBF,eAAO,MAAM,QAAQ,iyCAgeuB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { initSpec } from "./commands/init.js";
|
|
2
|
-
import { agentsSpec, quickstartSpec, roleSpec } from "./commands/core.js";
|
|
2
|
+
import { agentsSpec, preflightSpec, quickstartSpec, roleSpec } from "./commands/core.js";
|
|
3
3
|
import { configSetSpec, configShowSpec, modeGetSpec, modeSetSpec } from "./commands/config.js";
|
|
4
4
|
import { ideSyncSpec } from "./commands/ide.js";
|
|
5
5
|
import { taskNewSpec } from "../../commands/task/new.spec.js";
|
|
@@ -22,6 +22,9 @@ import { taskLintSpec } from "../../commands/task/lint.command.js";
|
|
|
22
22
|
import { taskMigrateSpec } from "../../commands/task/migrate.command.js";
|
|
23
23
|
import { taskMigrateDocSpec } from "../../commands/task/migrate-doc.command.js";
|
|
24
24
|
import { taskDeriveSpec } from "../../commands/task/derive.command.js";
|
|
25
|
+
import { taskCloseDuplicateSpec } from "../../commands/task/close-duplicate.command.js";
|
|
26
|
+
import { taskCloseNoopSpec } from "../../commands/task/close-noop.command.js";
|
|
27
|
+
import { taskStartReadySpec } from "../../commands/task/start-ready.command.js";
|
|
25
28
|
import { taskPlanSetSpec } from "../../commands/task/plan-set.command.js";
|
|
26
29
|
import { taskPlanApproveSpec } from "../../commands/task/plan-approve.command.js";
|
|
27
30
|
import { taskPlanRejectSpec } from "../../commands/task/plan-reject.command.js";
|
|
@@ -112,6 +115,11 @@ export const COMMANDS = [
|
|
|
112
115
|
needsConfig: false,
|
|
113
116
|
needsTaskContext: false,
|
|
114
117
|
}),
|
|
118
|
+
entry(preflightSpec, () => import("./commands/core.js").then((m) => m.runPreflight), {
|
|
119
|
+
needsProject: false,
|
|
120
|
+
needsConfig: false,
|
|
121
|
+
needsTaskContext: false,
|
|
122
|
+
}),
|
|
115
123
|
entry(roleSpec, () => import("./commands/core.js").then((m) => m.runRole), {
|
|
116
124
|
needsProject: false,
|
|
117
125
|
needsConfig: false,
|
|
@@ -158,11 +166,18 @@ export const COMMANDS = [
|
|
|
158
166
|
entry(taskShowSpec, (deps) => import("../../commands/task/show.run.js").then((m) => m.makeRunTaskShowHandler(deps.getCtx))),
|
|
159
167
|
entry(taskNewSpec, (deps) => import("../../commands/task/new.command.js").then((m) => m.makeRunTaskNewHandler(deps.getCtx))),
|
|
160
168
|
entry(taskDeriveSpec, (deps) => import("../../commands/task/derive.command.js").then((m) => m.makeRunTaskDeriveHandler(deps.getCtx))),
|
|
169
|
+
entry(taskCloseDuplicateSpec, (deps) => import("../../commands/task/close-duplicate.command.js").then((m) => m.makeRunTaskCloseDuplicateHandler(deps.getCtx))),
|
|
170
|
+
entry(taskStartReadySpec, (deps) => import("../../commands/task/start-ready.command.js").then((m) => m.makeRunTaskStartReadyHandler(deps.getCtx))),
|
|
171
|
+
entry(taskCloseNoopSpec, (deps) => import("../../commands/task/close-noop.command.js").then((m) => m.makeRunTaskCloseNoopHandler(deps.getCtx))),
|
|
161
172
|
entry(taskAddSpec, (deps) => import("../../commands/task/add.command.js").then((m) => m.makeRunTaskAddHandler(deps.getCtx))),
|
|
162
173
|
entry(taskUpdateSpec, (deps) => import("../../commands/task/update.command.js").then((m) => m.makeRunTaskUpdateHandler(deps.getCtx))),
|
|
163
174
|
entry(taskCommentSpec, (deps) => import("../../commands/task/comment.command.js").then((m) => m.makeRunTaskCommentHandler(deps.getCtx))),
|
|
164
175
|
entry(taskSetStatusSpec, (deps) => import("../../commands/task/set-status.command.js").then((m) => m.makeRunTaskSetStatusHandler(deps.getCtx))),
|
|
165
|
-
entry(taskDocSpec, () => import("../../commands/task/doc.command.js").then((m) => m.runTaskDoc)
|
|
176
|
+
entry(taskDocSpec, () => import("../../commands/task/doc.command.js").then((m) => m.runTaskDoc), {
|
|
177
|
+
needsProject: false,
|
|
178
|
+
needsConfig: false,
|
|
179
|
+
needsTaskContext: false,
|
|
180
|
+
}),
|
|
166
181
|
entry(taskDocShowSpec, (deps) => import("../../commands/task/doc-show.command.js").then((m) => m.makeRunTaskDocShowHandler(deps.getCtx))),
|
|
167
182
|
entry(taskDocSetSpec, (deps) => import("../../commands/task/doc-set.command.js").then((m) => m.makeRunTaskDocSetHandler(deps.getCtx))),
|
|
168
183
|
entry(taskScrubSpec, (deps) => import("../../commands/task/scrub.command.js").then((m) => m.makeRunTaskScrubHandler(deps.getCtx))),
|
|
@@ -175,14 +190,26 @@ export const COMMANDS = [
|
|
|
175
190
|
entry(taskPlanSetSpec, (deps) => import("../../commands/task/plan-set.command.js").then((m) => m.makeRunTaskPlanSetHandler(deps.getCtx))),
|
|
176
191
|
entry(taskPlanApproveSpec, (deps) => import("../../commands/task/plan-approve.command.js").then((m) => m.makeRunTaskPlanApproveHandler(deps.getCtx))),
|
|
177
192
|
entry(taskPlanRejectSpec, (deps) => import("../../commands/task/plan-reject.command.js").then((m) => m.makeRunTaskPlanRejectHandler(deps.getCtx))),
|
|
178
|
-
entry(taskVerifySpec, () => import("../../commands/task/verify.command.js").then((m) => m.runTaskVerify)
|
|
193
|
+
entry(taskVerifySpec, () => import("../../commands/task/verify.command.js").then((m) => m.runTaskVerify), {
|
|
194
|
+
needsProject: false,
|
|
195
|
+
needsConfig: false,
|
|
196
|
+
needsTaskContext: false,
|
|
197
|
+
}),
|
|
179
198
|
entry(taskVerifyOkSpec, (deps) => import("../../commands/task/verify-ok.command.js").then((m) => m.makeRunTaskVerifyOkHandler(deps.getCtx))),
|
|
180
199
|
entry(taskVerifyReworkSpec, (deps) => import("../../commands/task/verify-rework.command.js").then((m) => m.makeRunTaskVerifyReworkHandler(deps.getCtx))),
|
|
181
200
|
entry(taskVerifyShowSpec, (deps) => import("../../commands/task/verify-show.command.js").then((m) => m.makeRunTaskVerifyShowHandler(deps.getCtx))),
|
|
182
201
|
entry(taskRebuildIndexSpec, (deps) => import("../../commands/task/rebuild-index.command.js").then((m) => m.makeRunTaskRebuildIndexHandler(deps.getCtx))),
|
|
183
202
|
entry(workStartSpec, (deps) => import("../../commands/branch/work-start.command.js").then((m) => m.makeRunWorkStartHandler(deps.getCtx))),
|
|
184
|
-
entry(recipesSpec, () => import("../../commands/recipes/recipes.command.js").then((m) => m.runRecipes)
|
|
185
|
-
|
|
203
|
+
entry(recipesSpec, () => import("../../commands/recipes/recipes.command.js").then((m) => m.runRecipes), {
|
|
204
|
+
needsProject: false,
|
|
205
|
+
needsConfig: false,
|
|
206
|
+
needsTaskContext: false,
|
|
207
|
+
}),
|
|
208
|
+
entry(recipesCacheSpec, () => import("../../commands/recipes/cache.command.js").then((m) => m.runRecipesCache), {
|
|
209
|
+
needsProject: false,
|
|
210
|
+
needsConfig: false,
|
|
211
|
+
needsTaskContext: false,
|
|
212
|
+
}),
|
|
186
213
|
entry(recipesListSpec, () => import("../../commands/recipes/list.command.js").then((m) => m.runRecipesList)),
|
|
187
214
|
entry(recipesListRemoteSpec, () => import("../../commands/recipes/list-remote.command.js").then((m) => m.runRecipesListRemote)),
|
|
188
215
|
entry(recipesInfoSpec, () => import("../../commands/recipes/info.command.js").then((m) => m.runRecipesInfo)),
|
|
@@ -190,21 +217,37 @@ export const COMMANDS = [
|
|
|
190
217
|
entry(recipesRemoveSpec, () => import("../../commands/recipes/remove.command.js").then((m) => m.runRecipesRemove)),
|
|
191
218
|
entry(recipesCachePruneSpec, () => import("../../commands/recipes/cache-prune.command.js").then((m) => m.runRecipesCachePrune)),
|
|
192
219
|
entry(recipesInstallSpec, () => import("../../commands/recipes/install.run.js").then((m) => m.runRecipesInstall)),
|
|
193
|
-
entry(scenarioSpec, () => import("../../commands/scenario/scenario.command.js").then((m) => m.runScenario)
|
|
220
|
+
entry(scenarioSpec, () => import("../../commands/scenario/scenario.command.js").then((m) => m.runScenario), {
|
|
221
|
+
needsProject: false,
|
|
222
|
+
needsConfig: false,
|
|
223
|
+
needsTaskContext: false,
|
|
224
|
+
}),
|
|
194
225
|
entry(scenarioListSpec, () => import("../../commands/scenario/list.command.js").then((m) => m.runScenarioList)),
|
|
195
226
|
entry(scenarioInfoSpec, () => import("../../commands/scenario/info.command.js").then((m) => m.runScenarioInfo)),
|
|
196
227
|
entry(scenarioRunSpec, () => import("../../commands/scenario/run.command.js").then((m) => m.runScenarioRun)),
|
|
197
|
-
entry(branchBaseSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBase)
|
|
228
|
+
entry(branchBaseSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBase), {
|
|
229
|
+
needsProject: false,
|
|
230
|
+
needsConfig: false,
|
|
231
|
+
needsTaskContext: false,
|
|
232
|
+
}),
|
|
198
233
|
entry(branchBaseGetSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBaseGet)),
|
|
199
234
|
entry(branchBaseSetSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBaseSet)),
|
|
200
235
|
entry(branchBaseClearSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBaseClear)),
|
|
201
236
|
entry(branchBaseExplainSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBaseExplain)),
|
|
202
237
|
entry(branchStatusSpec, () => import("../../commands/branch/status.command.js").then((m) => m.runBranchStatus)),
|
|
203
238
|
entry(branchRemoveSpec, () => import("../../commands/branch/remove.command.js").then((m) => m.runBranchRemove)),
|
|
204
|
-
entry(backendSpec, (deps) => import("../../commands/backend/sync.command.js").then((m) => m.makeRunBackendHandler(deps.getCtx))
|
|
239
|
+
entry(backendSpec, (deps) => import("../../commands/backend/sync.command.js").then((m) => m.makeRunBackendHandler(deps.getCtx)), {
|
|
240
|
+
needsProject: false,
|
|
241
|
+
needsConfig: false,
|
|
242
|
+
needsTaskContext: false,
|
|
243
|
+
}),
|
|
205
244
|
entry(backendSyncSpec, (deps) => import("../../commands/backend/sync.command.js").then((m) => m.makeRunBackendSyncHandler(deps.getCtx))),
|
|
206
245
|
entry(syncSpec, (deps) => import("../../commands/sync.command.js").then((m) => m.makeRunSyncHandler(deps.getCtx))),
|
|
207
|
-
entry(prSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrHandler(deps.getCtx))
|
|
246
|
+
entry(prSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrHandler(deps.getCtx)), {
|
|
247
|
+
needsProject: false,
|
|
248
|
+
needsConfig: false,
|
|
249
|
+
needsTaskContext: false,
|
|
250
|
+
}),
|
|
208
251
|
entry(prOpenSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrOpenHandler(deps.getCtx))),
|
|
209
252
|
entry(prUpdateSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrUpdateHandler(deps.getCtx))),
|
|
210
253
|
entry(prCheckSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrCheckHandler(deps.getCtx))),
|
|
@@ -216,14 +259,30 @@ export const COMMANDS = [
|
|
|
216
259
|
entry(verifySpec, (deps) => import("../../commands/verify.run.js").then((m) => m.makeRunVerifyHandler(deps.getCtx))),
|
|
217
260
|
entry(finishSpec, (deps) => import("../../commands/finish.run.js").then((m) => m.makeRunFinishHandler(deps.getCtx))),
|
|
218
261
|
entry(readySpec, (deps) => import("../../commands/ready.command.js").then((m) => m.makeRunReadyHandler(deps.getCtx))),
|
|
219
|
-
entry(docsCliSpec, (deps) => import("../../commands/docs/cli.command.js").then((m) => m.makeRunDocsCliHandler(deps.getHelpJsonForDocs))
|
|
220
|
-
|
|
262
|
+
entry(docsCliSpec, (deps) => import("../../commands/docs/cli.command.js").then((m) => m.makeRunDocsCliHandler(deps.getHelpJsonForDocs)), {
|
|
263
|
+
needsProject: false,
|
|
264
|
+
needsConfig: false,
|
|
265
|
+
needsTaskContext: false,
|
|
266
|
+
}),
|
|
267
|
+
entry(hooksSpec, () => import("../../commands/hooks/hooks.command.js").then((m) => m.runHooks), {
|
|
268
|
+
needsProject: false,
|
|
269
|
+
needsConfig: false,
|
|
270
|
+
needsTaskContext: false,
|
|
271
|
+
}),
|
|
221
272
|
entry(hooksInstallSpec, () => import("../../commands/hooks/install.command.js").then((m) => m.runHooksInstall)),
|
|
222
273
|
entry(hooksUninstallSpec, () => import("../../commands/hooks/uninstall.command.js").then((m) => m.runHooksUninstall)),
|
|
223
274
|
entry(hooksRunSpec, () => import("../../commands/hooks/run.command.js").then((m) => m.runHooksRun)),
|
|
224
|
-
entry(cleanupSpec, () => import("../../commands/cleanup/merged.command.js").then((m) => m.runCleanup)
|
|
275
|
+
entry(cleanupSpec, () => import("../../commands/cleanup/merged.command.js").then((m) => m.runCleanup), {
|
|
276
|
+
needsProject: false,
|
|
277
|
+
needsConfig: false,
|
|
278
|
+
needsTaskContext: false,
|
|
279
|
+
}),
|
|
225
280
|
entry(cleanupMergedSpec, (deps) => import("../../commands/cleanup/merged.command.js").then((m) => m.makeRunCleanupMergedHandler(deps.getCtx))),
|
|
226
|
-
entry(guardSpec, () => import("../../commands/guard/guard.command.js").then((m) => m.runGuard)
|
|
281
|
+
entry(guardSpec, () => import("../../commands/guard/guard.command.js").then((m) => m.runGuard), {
|
|
282
|
+
needsProject: false,
|
|
283
|
+
needsConfig: false,
|
|
284
|
+
needsTaskContext: false,
|
|
285
|
+
}),
|
|
227
286
|
entry(guardCleanSpec, () => import("../../commands/guard/clean.command.js").then((m) => m.runGuardClean)),
|
|
228
287
|
entry(guardSuggestAllowSpec, () => import("../../commands/guard/suggest-allow.command.js").then((m) => m.runGuardSuggestAllow)),
|
|
229
288
|
entry(guardCommitSpec, (deps) => import("../../commands/guard/commit.command.js").then((m) => m.makeRunGuardCommitHandler(deps.getCtx))),
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import type { CommandHandler, CommandSpec } from "../../spec/spec.js";
|
|
2
2
|
import type { RunDeps } from "../command-catalog.js";
|
|
3
|
-
type QuickstartParsed =
|
|
3
|
+
type QuickstartParsed = {
|
|
4
|
+
json: boolean;
|
|
5
|
+
};
|
|
4
6
|
export declare const quickstartSpec: CommandSpec<QuickstartParsed>;
|
|
5
7
|
export declare const runQuickstart: CommandHandler<QuickstartParsed>;
|
|
8
|
+
type PreflightMode = "quick" | "full";
|
|
9
|
+
type PreflightParsed = {
|
|
10
|
+
json: boolean;
|
|
11
|
+
mode: PreflightMode;
|
|
12
|
+
};
|
|
13
|
+
export declare const preflightSpec: CommandSpec<PreflightParsed>;
|
|
14
|
+
export declare const runPreflight: CommandHandler<PreflightParsed>;
|
|
6
15
|
type RoleParsed = {
|
|
7
16
|
role: string;
|
|
17
|
+
json: boolean;
|
|
8
18
|
};
|
|
9
19
|
export declare const roleSpec: CommandSpec<RoleParsed>;
|
|
10
20
|
export declare const runRole: CommandHandler<RoleParsed>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../src/cli/run-cli/commands/core.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../src/cli/run-cli/commands/core.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAIrD,KAAK,gBAAgB,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1C,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAcxD,CAAC;AA6BF,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,gBAAgB,CAE1D,CAAC;AAEF,KAAK,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AACtC,KAAK,eAAe,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AA6L9D,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,eAAe,CAuCtD,CAAC;AA4CF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,eAAe,CAExD,CAAC;AAEF,KAAK,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAElD,eAAO,MAAM,QAAQ,EAAE,WAAW,CAAC,UAAU,CAe5C,CAAC;AAoOF,eAAO,MAAM,OAAO,EAAE,cAAc,CAAC,UAAU,CAE9C,CAAC;AAEF,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1C,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,YAAY,CAMhD,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CA0FhF"}
|