agentplane 0.2.6 → 0.2.13
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 +11 -0
- package/assets/AGENTS.md +35 -0
- package/assets/agents/CODER.json +0 -1
- package/assets/agents/INTEGRATOR.json +0 -1
- package/assets/agents/ORCHESTRATOR.json +1 -2
- package/assets/agents/PLANNER.json +1 -3
- package/assets/agents/TESTER.json +0 -1
- package/assets/agents/UPGRADER.json +17 -15
- package/dist/cli/archive.d.ts.map +1 -1
- package/dist/cli/archive.js +61 -36
- package/dist/cli/command-guide.d.ts.map +1 -1
- package/dist/cli/command-guide.js +5 -3
- package/dist/cli/run-cli/command-catalog.d.ts +4 -1
- package/dist/cli/run-cli/command-catalog.d.ts.map +1 -1
- package/dist/cli/run-cli/command-catalog.js +44 -26
- package/dist/cli/run-cli/commands/config.d.ts +5 -4
- package/dist/cli/run-cli/commands/config.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/config.js +47 -58
- package/dist/cli/run-cli/commands/core.d.ts +2 -1
- package/dist/cli/run-cli/commands/core.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/core.js +187 -51
- package/dist/cli/run-cli/commands/ide.d.ts +3 -1
- package/dist/cli/run-cli/commands/ide.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/ide.js +7 -12
- package/dist/cli/run-cli/commands/init/ide-sync.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init/ide-sync.js +10 -1
- package/dist/cli/run-cli/commands/init/write-agents.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init/write-agents.js +4 -24
- package/dist/cli/run-cli/commands/init/write-gitignore.d.ts +5 -0
- package/dist/cli/run-cli/commands/init/write-gitignore.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/init/write-gitignore.js +48 -0
- 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 +34 -8
- package/dist/cli/run-cli/commands/wrap-command.d.ts +6 -0
- package/dist/cli/run-cli/commands/wrap-command.d.ts.map +1 -0
- package/dist/cli/run-cli/commands/wrap-command.js +17 -0
- package/dist/cli/run-cli/registry.run.d.ts +6 -2
- package/dist/cli/run-cli/registry.run.d.ts.map +1 -1
- package/dist/cli/run-cli/registry.run.js +7 -2
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +96 -75
- package/dist/cli/run-cli.test-helpers.d.ts.map +1 -1
- package/dist/cli/run-cli.test-helpers.js +99 -3
- package/dist/cli/spec/parse-utils.d.ts +11 -0
- package/dist/cli/spec/parse-utils.d.ts.map +1 -0
- package/dist/cli/spec/parse-utils.js +28 -0
- package/dist/commands/block.command.d.ts +3 -18
- package/dist/commands/block.command.d.ts.map +1 -1
- package/dist/commands/block.command.js +2 -143
- package/dist/commands/block.run.d.ts +5 -0
- package/dist/commands/block.run.d.ts.map +1 -0
- package/dist/commands/block.run.js +22 -0
- package/dist/commands/block.spec.d.ts +17 -0
- package/dist/commands/block.spec.d.ts.map +1 -0
- package/dist/commands/block.spec.js +115 -0
- package/dist/commands/doctor.command.d.ts +2 -7
- package/dist/commands/doctor.command.d.ts.map +1 -1
- package/dist/commands/doctor.command.js +2 -137
- package/dist/commands/doctor.run.d.ts +4 -0
- package/dist/commands/doctor.run.d.ts.map +1 -0
- package/dist/commands/doctor.run.js +174 -0
- package/dist/commands/doctor.spec.d.ts +7 -0
- package/dist/commands/doctor.spec.d.ts.map +1 -0
- package/dist/commands/doctor.spec.js +20 -0
- package/dist/commands/finish.command.d.ts +3 -27
- package/dist/commands/finish.command.d.ts.map +1 -1
- package/dist/commands/finish.command.js +2 -237
- package/dist/commands/finish.run.d.ts +5 -0
- package/dist/commands/finish.run.d.ts.map +1 -0
- package/dist/commands/finish.run.js +40 -0
- package/dist/commands/finish.spec.d.ts +26 -0
- package/dist/commands/finish.spec.d.ts.map +1 -0
- package/dist/commands/finish.spec.js +193 -0
- package/dist/commands/recipes/install.command.d.ts +2 -11
- package/dist/commands/recipes/install.command.d.ts.map +1 -1
- package/dist/commands/recipes/install.command.js +2 -161
- package/dist/commands/recipes/install.run.d.ts +4 -0
- package/dist/commands/recipes/install.run.d.ts.map +1 -0
- package/dist/commands/recipes/install.run.js +23 -0
- package/dist/commands/recipes/install.spec.d.ts +11 -0
- package/dist/commands/recipes/install.spec.d.ts.map +1 -0
- package/dist/commands/recipes/install.spec.js +140 -0
- package/dist/commands/release/apply.command.d.ts +11 -0
- package/dist/commands/release/apply.command.d.ts.map +1 -0
- package/dist/commands/release/apply.command.js +343 -0
- package/dist/commands/release/plan.command.d.ts +12 -0
- package/dist/commands/release/plan.command.d.ts.map +1 -0
- package/dist/commands/release/plan.command.js +206 -0
- package/dist/commands/release/release.command.d.ts +5 -0
- package/dist/commands/release/release.command.d.ts.map +1 -0
- package/dist/commands/release/release.command.js +18 -0
- package/dist/commands/shared/git-context.d.ts +3 -0
- package/dist/commands/shared/git-context.d.ts.map +1 -1
- package/dist/commands/shared/git-context.js +10 -0
- package/dist/commands/shared/task-backend.d.ts +1 -0
- package/dist/commands/shared/task-backend.d.ts.map +1 -1
- package/dist/commands/start.command.d.ts +3 -18
- package/dist/commands/start.command.d.ts.map +1 -1
- package/dist/commands/start.command.js +2 -143
- package/dist/commands/start.run.d.ts +5 -0
- package/dist/commands/start.run.d.ts.map +1 -0
- package/dist/commands/start.run.js +22 -0
- package/dist/commands/start.spec.d.ts +17 -0
- package/dist/commands/start.spec.d.ts.map +1 -0
- package/dist/commands/start.spec.js +115 -0
- package/dist/commands/task/add.command.d.ts.map +1 -1
- package/dist/commands/task/add.command.js +1 -7
- package/dist/commands/task/derive.command.d.ts.map +1 -1
- package/dist/commands/task/derive.command.js +1 -7
- package/dist/commands/task/finish.d.ts.map +1 -1
- package/dist/commands/task/finish.js +34 -2
- package/dist/commands/task/list.command.d.ts +3 -8
- package/dist/commands/task/list.command.d.ts.map +1 -1
- package/dist/commands/task/list.command.js +2 -67
- package/dist/commands/task/list.run.d.ts +5 -0
- package/dist/commands/task/list.run.d.ts.map +1 -0
- package/dist/commands/task/list.run.js +10 -0
- package/dist/commands/task/list.spec.d.ts +7 -0
- package/dist/commands/task/list.spec.d.ts.map +1 -0
- package/dist/commands/task/list.spec.js +51 -0
- package/dist/commands/task/next.command.d.ts +3 -8
- package/dist/commands/task/next.command.d.ts.map +1 -1
- package/dist/commands/task/next.command.js +2 -89
- package/dist/commands/task/next.run.d.ts +5 -0
- package/dist/commands/task/next.run.d.ts.map +1 -0
- package/dist/commands/task/next.run.js +11 -0
- package/dist/commands/task/next.spec.d.ts +7 -0
- package/dist/commands/task/next.spec.d.ts.map +1 -0
- package/dist/commands/task/next.spec.js +69 -0
- package/dist/commands/task/search.command.d.ts +3 -10
- package/dist/commands/task/search.command.d.ts.map +1 -1
- package/dist/commands/task/search.command.js +2 -101
- package/dist/commands/task/search.run.d.ts +5 -0
- package/dist/commands/task/search.run.d.ts.map +1 -0
- package/dist/commands/task/search.run.js +13 -0
- package/dist/commands/task/search.spec.d.ts +9 -0
- package/dist/commands/task/search.spec.d.ts.map +1 -0
- package/dist/commands/task/search.spec.js +79 -0
- package/dist/commands/task/set-status.command.d.ts.map +1 -1
- package/dist/commands/task/set-status.command.js +1 -7
- package/dist/commands/task/shared.d.ts.map +1 -1
- package/dist/commands/task/shared.js +15 -8
- package/dist/commands/task/show.command.d.ts +3 -7
- package/dist/commands/task/show.command.d.ts.map +1 -1
- package/dist/commands/task/show.command.js +2 -19
- package/dist/commands/task/show.run.d.ts +5 -0
- package/dist/commands/task/show.run.d.ts.map +1 -0
- package/dist/commands/task/show.run.js +11 -0
- package/dist/commands/task/show.spec.d.ts +6 -0
- package/dist/commands/task/show.spec.d.ts.map +1 -0
- package/dist/commands/task/show.spec.js +8 -0
- package/dist/commands/task/update.command.d.ts.map +1 -1
- package/dist/commands/task/update.command.js +1 -7
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +171 -32
- package/dist/commands/verify.command.d.ts +3 -15
- package/dist/commands/verify.command.d.ts.map +1 -1
- package/dist/commands/verify.command.js +2 -113
- package/dist/commands/verify.run.d.ts +5 -0
- package/dist/commands/verify.run.d.ts.map +1 -0
- package/dist/commands/verify.run.js +17 -0
- package/dist/commands/verify.spec.d.ts +14 -0
- package/dist/commands/verify.spec.d.ts.map +1 -0
- package/dist/commands/verify.spec.js +96 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/next.command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"next.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/next.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,89 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function toStringList(v) {
|
|
4
|
-
if (typeof v === "string")
|
|
5
|
-
return [v];
|
|
6
|
-
if (Array.isArray(v))
|
|
7
|
-
return v.filter((x) => typeof x === "string");
|
|
8
|
-
return [];
|
|
9
|
-
}
|
|
10
|
-
export const taskNextSpec = {
|
|
11
|
-
id: ["task", "next"],
|
|
12
|
-
group: "Task",
|
|
13
|
-
summary: "List ready tasks (default status=TODO) with optional filters.",
|
|
14
|
-
options: [
|
|
15
|
-
{
|
|
16
|
-
kind: "string",
|
|
17
|
-
name: "status",
|
|
18
|
-
valueHint: "<status>",
|
|
19
|
-
repeatable: true,
|
|
20
|
-
description: "Repeatable. Filter by status (default: TODO).",
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
kind: "string",
|
|
24
|
-
name: "owner",
|
|
25
|
-
valueHint: "<owner>",
|
|
26
|
-
repeatable: true,
|
|
27
|
-
description: "Repeatable. Filter by owner id.",
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
kind: "string",
|
|
31
|
-
name: "tag",
|
|
32
|
-
valueHint: "<tag>",
|
|
33
|
-
repeatable: true,
|
|
34
|
-
description: "Repeatable. Filter by tag.",
|
|
35
|
-
},
|
|
36
|
-
{ kind: "string", name: "limit", valueHint: "<n>", description: "Max rows to print." },
|
|
37
|
-
{ kind: "boolean", name: "quiet", default: false, description: "Suppress summary output." },
|
|
38
|
-
],
|
|
39
|
-
examples: [
|
|
40
|
-
{ cmd: "agentplane task next", why: "List ready TODO tasks." },
|
|
41
|
-
{ cmd: "agentplane task next --limit 3", why: "Limit output." },
|
|
42
|
-
],
|
|
43
|
-
validateRaw: (raw) => {
|
|
44
|
-
for (const key of ["status", "owner", "tag"]) {
|
|
45
|
-
const list = toStringList(raw.opts[key]);
|
|
46
|
-
if (list.some((s) => s.trim() === "")) {
|
|
47
|
-
throw usageError({ spec: taskNextSpec, message: `Invalid value for --${key}: empty.` });
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
if (raw.opts.limit !== undefined) {
|
|
51
|
-
const limitRaw = raw.opts.limit;
|
|
52
|
-
if (typeof limitRaw !== "string") {
|
|
53
|
-
throw usageError({
|
|
54
|
-
spec: taskNextSpec,
|
|
55
|
-
message: `Invalid value for --limit: ${JSON.stringify(limitRaw)} (expected integer)`,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
const parsed = Number.parseInt(limitRaw, 10);
|
|
59
|
-
if (Number.isFinite(parsed)) {
|
|
60
|
-
// ok
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
throw usageError({
|
|
64
|
-
spec: taskNextSpec,
|
|
65
|
-
message: `Invalid value for --limit: ${limitRaw} (expected integer)`,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
parse: (raw) => ({
|
|
71
|
-
filters: {
|
|
72
|
-
status: toStringList(raw.opts.status),
|
|
73
|
-
owner: toStringList(raw.opts.owner),
|
|
74
|
-
tag: toStringList(raw.opts.tag),
|
|
75
|
-
limit: typeof raw.opts.limit === "string" ? Number.parseInt(raw.opts.limit, 10) : undefined,
|
|
76
|
-
quiet: raw.opts.quiet === true,
|
|
77
|
-
},
|
|
78
|
-
}),
|
|
79
|
-
};
|
|
80
|
-
export function makeRunTaskNextHandler(getCtx) {
|
|
81
|
-
return async (ctx, p) => {
|
|
82
|
-
return await cmdTaskNext({
|
|
83
|
-
ctx: await getCtx("task next"),
|
|
84
|
-
cwd: ctx.cwd,
|
|
85
|
-
rootOverride: ctx.rootOverride,
|
|
86
|
-
filters: p.filters,
|
|
87
|
-
});
|
|
88
|
-
};
|
|
89
|
-
}
|
|
1
|
+
export { taskNextSpec } from "./next.spec.js";
|
|
2
|
+
export { makeRunTaskNextHandler } from "./next.run.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CommandCtx } from "../../cli/spec/spec.js";
|
|
2
|
+
import type { CommandContext } from "../shared/task-backend.js";
|
|
3
|
+
import type { TaskNextParsed } from "./next.spec.js";
|
|
4
|
+
export declare function makeRunTaskNextHandler(getCtx: (cmd: string) => Promise<CommandContext>): (ctx: CommandCtx, p: TaskNextParsed) => Promise<number>;
|
|
5
|
+
//# sourceMappingURL=next.run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.run.d.ts","sourceRoot":"","sources":["../../../src/commands/task/next.run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IACvE,KAAK,UAAU,EAAE,GAAG,cAAc,KAAG,OAAO,CAAC,MAAM,CAAC,CAQnE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { cmdTaskNext } from "./next.js";
|
|
2
|
+
export function makeRunTaskNextHandler(getCtx) {
|
|
3
|
+
return async (ctx, p) => {
|
|
4
|
+
return await cmdTaskNext({
|
|
5
|
+
ctx: await getCtx("task next"),
|
|
6
|
+
cwd: ctx.cwd,
|
|
7
|
+
rootOverride: ctx.rootOverride,
|
|
8
|
+
filters: p.filters,
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CommandSpec } from "../../cli/spec/spec.js";
|
|
2
|
+
import type { TaskListFilters } from "./shared.js";
|
|
3
|
+
export type TaskNextParsed = {
|
|
4
|
+
filters: TaskListFilters;
|
|
5
|
+
};
|
|
6
|
+
export declare const taskNextSpec: CommandSpec<TaskNextParsed>;
|
|
7
|
+
//# sourceMappingURL=next.spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.spec.d.ts","sourceRoot":"","sources":["../../../src/commands/task/next.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,MAAM,cAAc,GAAG;IAAE,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAE1D,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,cAAc,CAkEpD,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { usageError } from "../../cli/spec/errors.js";
|
|
2
|
+
import { toStringList } from "../../cli/spec/parse-utils.js";
|
|
3
|
+
export const taskNextSpec = {
|
|
4
|
+
id: ["task", "next"],
|
|
5
|
+
group: "Task",
|
|
6
|
+
summary: "List ready tasks (default status=TODO) with optional filters.",
|
|
7
|
+
options: [
|
|
8
|
+
{
|
|
9
|
+
kind: "string",
|
|
10
|
+
name: "status",
|
|
11
|
+
valueHint: "<status>",
|
|
12
|
+
repeatable: true,
|
|
13
|
+
description: "Repeatable. Filter by status (default: TODO).",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
kind: "string",
|
|
17
|
+
name: "owner",
|
|
18
|
+
valueHint: "<owner>",
|
|
19
|
+
repeatable: true,
|
|
20
|
+
description: "Repeatable. Filter by owner id.",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
kind: "string",
|
|
24
|
+
name: "tag",
|
|
25
|
+
valueHint: "<tag>",
|
|
26
|
+
repeatable: true,
|
|
27
|
+
description: "Repeatable. Filter by tag.",
|
|
28
|
+
},
|
|
29
|
+
{ kind: "string", name: "limit", valueHint: "<n>", description: "Max rows to print." },
|
|
30
|
+
{ kind: "boolean", name: "quiet", default: false, description: "Suppress summary output." },
|
|
31
|
+
],
|
|
32
|
+
examples: [
|
|
33
|
+
{ cmd: "agentplane task next", why: "List ready TODO tasks." },
|
|
34
|
+
{ cmd: "agentplane task next --limit 3", why: "Limit output." },
|
|
35
|
+
],
|
|
36
|
+
validateRaw: (raw) => {
|
|
37
|
+
for (const key of ["status", "owner", "tag"]) {
|
|
38
|
+
const list = toStringList(raw.opts[key]);
|
|
39
|
+
if (list.some((s) => s.trim() === "")) {
|
|
40
|
+
throw usageError({ spec: taskNextSpec, message: `Invalid value for --${key}: empty.` });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (raw.opts.limit !== undefined) {
|
|
44
|
+
const limitRaw = raw.opts.limit;
|
|
45
|
+
if (typeof limitRaw !== "string") {
|
|
46
|
+
throw usageError({
|
|
47
|
+
spec: taskNextSpec,
|
|
48
|
+
message: `Invalid value for --limit: ${JSON.stringify(limitRaw)} (expected integer)`,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const parsed = Number.parseInt(limitRaw, 10);
|
|
52
|
+
if (!Number.isFinite(parsed)) {
|
|
53
|
+
throw usageError({
|
|
54
|
+
spec: taskNextSpec,
|
|
55
|
+
message: `Invalid value for --limit: ${limitRaw} (expected integer)`,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
parse: (raw) => ({
|
|
61
|
+
filters: {
|
|
62
|
+
status: toStringList(raw.opts.status),
|
|
63
|
+
owner: toStringList(raw.opts.owner),
|
|
64
|
+
tag: toStringList(raw.opts.tag),
|
|
65
|
+
limit: typeof raw.opts.limit === "string" ? Number.parseInt(raw.opts.limit, 10) : undefined,
|
|
66
|
+
quiet: raw.opts.quiet === true,
|
|
67
|
+
},
|
|
68
|
+
}),
|
|
69
|
+
};
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export type TaskSearchParsed = {
|
|
5
|
-
query: string;
|
|
6
|
-
regex: boolean;
|
|
7
|
-
filters: TaskListFilters;
|
|
8
|
-
};
|
|
9
|
-
export declare const taskSearchSpec: CommandSpec<TaskSearchParsed>;
|
|
10
|
-
export declare function makeRunTaskSearchHandler(getCtx: (cmd: string) => Promise<CommandContext>): (ctx: CommandCtx, p: TaskSearchParsed) => Promise<number>;
|
|
1
|
+
export { taskSearchSpec } from "./search.spec.js";
|
|
2
|
+
export type { TaskSearchParsed } from "./search.spec.js";
|
|
3
|
+
export { makeRunTaskSearchHandler } from "./search.run.js";
|
|
11
4
|
//# sourceMappingURL=search.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/search.command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"search.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/search.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,101 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function toStringList(v) {
|
|
4
|
-
if (typeof v === "string")
|
|
5
|
-
return [v];
|
|
6
|
-
if (Array.isArray(v))
|
|
7
|
-
return v.filter((x) => typeof x === "string");
|
|
8
|
-
return [];
|
|
9
|
-
}
|
|
10
|
-
export const taskSearchSpec = {
|
|
11
|
-
id: ["task", "search"],
|
|
12
|
-
group: "Task",
|
|
13
|
-
summary: "Search tasks by text or regex with optional filters.",
|
|
14
|
-
args: [{ name: "query", required: true, valueHint: "<query>" }],
|
|
15
|
-
options: [
|
|
16
|
-
{ kind: "boolean", name: "regex", default: false, description: "Treat query as a regex." },
|
|
17
|
-
{
|
|
18
|
-
kind: "string",
|
|
19
|
-
name: "status",
|
|
20
|
-
valueHint: "<status>",
|
|
21
|
-
repeatable: true,
|
|
22
|
-
description: "Repeatable. Filter by status.",
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
kind: "string",
|
|
26
|
-
name: "owner",
|
|
27
|
-
valueHint: "<owner>",
|
|
28
|
-
repeatable: true,
|
|
29
|
-
description: "Repeatable. Filter by owner id.",
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
kind: "string",
|
|
33
|
-
name: "tag",
|
|
34
|
-
valueHint: "<tag>",
|
|
35
|
-
repeatable: true,
|
|
36
|
-
description: "Repeatable. Filter by tag.",
|
|
37
|
-
},
|
|
38
|
-
{ kind: "string", name: "limit", valueHint: "<n>", description: "Max rows to print." },
|
|
39
|
-
],
|
|
40
|
-
examples: [
|
|
41
|
-
{ cmd: "agentplane task search cli", why: "Search tasks by substring." },
|
|
42
|
-
{ cmd: "agentplane task search 'CLI.*' --regex", why: "Search tasks by regex." },
|
|
43
|
-
],
|
|
44
|
-
validateRaw: (raw) => {
|
|
45
|
-
const q = String(raw.args.query ?? "").trim();
|
|
46
|
-
if (!q) {
|
|
47
|
-
throw usageError({
|
|
48
|
-
spec: taskSearchSpec,
|
|
49
|
-
message: "Missing query (expected non-empty text)",
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
for (const key of ["status", "owner", "tag"]) {
|
|
53
|
-
const list = toStringList(raw.opts[key]);
|
|
54
|
-
if (list.some((s) => s.trim() === "")) {
|
|
55
|
-
throw usageError({ spec: taskSearchSpec, message: `Invalid value for --${key}: empty.` });
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (raw.opts.limit !== undefined) {
|
|
59
|
-
const limitRaw = raw.opts.limit;
|
|
60
|
-
if (typeof limitRaw !== "string") {
|
|
61
|
-
throw usageError({
|
|
62
|
-
spec: taskSearchSpec,
|
|
63
|
-
message: `Invalid value for --limit: ${JSON.stringify(limitRaw)} (expected integer)`,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
const parsed = Number.parseInt(limitRaw, 10);
|
|
67
|
-
if (Number.isFinite(parsed)) {
|
|
68
|
-
// ok
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
throw usageError({
|
|
72
|
-
spec: taskSearchSpec,
|
|
73
|
-
message: `Invalid value for --limit: ${limitRaw} (expected integer)`,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
parse: (raw) => ({
|
|
79
|
-
query: String(raw.args.query),
|
|
80
|
-
regex: raw.opts.regex === true,
|
|
81
|
-
filters: {
|
|
82
|
-
status: toStringList(raw.opts.status),
|
|
83
|
-
owner: toStringList(raw.opts.owner),
|
|
84
|
-
tag: toStringList(raw.opts.tag),
|
|
85
|
-
limit: typeof raw.opts.limit === "string" ? Number.parseInt(raw.opts.limit, 10) : undefined,
|
|
86
|
-
quiet: true,
|
|
87
|
-
},
|
|
88
|
-
}),
|
|
89
|
-
};
|
|
90
|
-
export function makeRunTaskSearchHandler(getCtx) {
|
|
91
|
-
return async (ctx, p) => {
|
|
92
|
-
return await cmdTaskSearch({
|
|
93
|
-
ctx: await getCtx("task search"),
|
|
94
|
-
cwd: ctx.cwd,
|
|
95
|
-
rootOverride: ctx.rootOverride,
|
|
96
|
-
query: p.query,
|
|
97
|
-
regex: p.regex,
|
|
98
|
-
filters: p.filters,
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
}
|
|
1
|
+
export { taskSearchSpec } from "./search.spec.js";
|
|
2
|
+
export { makeRunTaskSearchHandler } from "./search.run.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CommandCtx } from "../../cli/spec/spec.js";
|
|
2
|
+
import type { CommandContext } from "../shared/task-backend.js";
|
|
3
|
+
import type { TaskSearchParsed } from "./search.spec.js";
|
|
4
|
+
export declare function makeRunTaskSearchHandler(getCtx: (cmd: string) => Promise<CommandContext>): (ctx: CommandCtx, p: TaskSearchParsed) => Promise<number>;
|
|
5
|
+
//# sourceMappingURL=search.run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.run.d.ts","sourceRoot":"","sources":["../../../src/commands/task/search.run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IACzE,KAAK,UAAU,EAAE,GAAG,gBAAgB,KAAG,OAAO,CAAC,MAAM,CAAC,CAUrE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { cmdTaskSearch } from "./search.js";
|
|
2
|
+
export function makeRunTaskSearchHandler(getCtx) {
|
|
3
|
+
return async (ctx, p) => {
|
|
4
|
+
return await cmdTaskSearch({
|
|
5
|
+
ctx: await getCtx("task search"),
|
|
6
|
+
cwd: ctx.cwd,
|
|
7
|
+
rootOverride: ctx.rootOverride,
|
|
8
|
+
query: p.query,
|
|
9
|
+
regex: p.regex,
|
|
10
|
+
filters: p.filters,
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CommandSpec } from "../../cli/spec/spec.js";
|
|
2
|
+
import type { TaskListFilters } from "./shared.js";
|
|
3
|
+
export type TaskSearchParsed = {
|
|
4
|
+
query: string;
|
|
5
|
+
regex: boolean;
|
|
6
|
+
filters: TaskListFilters;
|
|
7
|
+
};
|
|
8
|
+
export declare const taskSearchSpec: CommandSpec<TaskSearchParsed>;
|
|
9
|
+
//# sourceMappingURL=search.spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.spec.d.ts","sourceRoot":"","sources":["../../../src/commands/task/search.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,gBAAgB,CA4ExD,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { usageError } from "../../cli/spec/errors.js";
|
|
2
|
+
import { toStringList } from "../../cli/spec/parse-utils.js";
|
|
3
|
+
export const taskSearchSpec = {
|
|
4
|
+
id: ["task", "search"],
|
|
5
|
+
group: "Task",
|
|
6
|
+
summary: "Search tasks by text or regex with optional filters.",
|
|
7
|
+
args: [{ name: "query", required: true, valueHint: "<query>" }],
|
|
8
|
+
options: [
|
|
9
|
+
{ kind: "boolean", name: "regex", default: false, description: "Treat query as a regex." },
|
|
10
|
+
{
|
|
11
|
+
kind: "string",
|
|
12
|
+
name: "status",
|
|
13
|
+
valueHint: "<status>",
|
|
14
|
+
repeatable: true,
|
|
15
|
+
description: "Repeatable. Filter by status.",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
kind: "string",
|
|
19
|
+
name: "owner",
|
|
20
|
+
valueHint: "<owner>",
|
|
21
|
+
repeatable: true,
|
|
22
|
+
description: "Repeatable. Filter by owner id.",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
kind: "string",
|
|
26
|
+
name: "tag",
|
|
27
|
+
valueHint: "<tag>",
|
|
28
|
+
repeatable: true,
|
|
29
|
+
description: "Repeatable. Filter by tag.",
|
|
30
|
+
},
|
|
31
|
+
{ kind: "string", name: "limit", valueHint: "<n>", description: "Max rows to print." },
|
|
32
|
+
],
|
|
33
|
+
examples: [
|
|
34
|
+
{ cmd: "agentplane task search cli", why: "Search tasks by substring." },
|
|
35
|
+
{ cmd: "agentplane task search 'CLI.*' --regex", why: "Search tasks by regex." },
|
|
36
|
+
],
|
|
37
|
+
validateRaw: (raw) => {
|
|
38
|
+
const q = String(raw.args.query ?? "").trim();
|
|
39
|
+
if (!q) {
|
|
40
|
+
throw usageError({
|
|
41
|
+
spec: taskSearchSpec,
|
|
42
|
+
message: "Missing query (expected non-empty text)",
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
for (const key of ["status", "owner", "tag"]) {
|
|
46
|
+
const list = toStringList(raw.opts[key]);
|
|
47
|
+
if (list.some((s) => s.trim() === "")) {
|
|
48
|
+
throw usageError({ spec: taskSearchSpec, message: `Invalid value for --${key}: empty.` });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (raw.opts.limit !== undefined) {
|
|
52
|
+
const limitRaw = raw.opts.limit;
|
|
53
|
+
if (typeof limitRaw !== "string") {
|
|
54
|
+
throw usageError({
|
|
55
|
+
spec: taskSearchSpec,
|
|
56
|
+
message: `Invalid value for --limit: ${JSON.stringify(limitRaw)} (expected integer)`,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const parsed = Number.parseInt(limitRaw, 10);
|
|
60
|
+
if (!Number.isFinite(parsed)) {
|
|
61
|
+
throw usageError({
|
|
62
|
+
spec: taskSearchSpec,
|
|
63
|
+
message: `Invalid value for --limit: ${limitRaw} (expected integer)`,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
parse: (raw) => ({
|
|
69
|
+
query: String(raw.args.query),
|
|
70
|
+
regex: raw.opts.regex === true,
|
|
71
|
+
filters: {
|
|
72
|
+
status: toStringList(raw.opts.status),
|
|
73
|
+
owner: toStringList(raw.opts.owner),
|
|
74
|
+
tag: toStringList(raw.opts.tag),
|
|
75
|
+
limit: typeof raw.opts.limit === "string" ? Number.parseInt(raw.opts.limit, 10) : undefined,
|
|
76
|
+
quiet: true,
|
|
77
|
+
},
|
|
78
|
+
}),
|
|
79
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-status.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/set-status.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"set-status.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/set-status.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CA6I9D,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IAC5E,KAAK,UAAU,EAAE,GAAG,mBAAmB,KAAG,OAAO,CAAC,MAAM,CAAC,CAqBxE"}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import { usageError } from "../../cli/spec/errors.js";
|
|
2
|
+
import { toStringList } from "../../cli/spec/parse-utils.js";
|
|
2
3
|
import { cmdTaskSetStatus } from "./set-status.js";
|
|
3
|
-
function toStringList(v) {
|
|
4
|
-
if (typeof v === "string")
|
|
5
|
-
return [v];
|
|
6
|
-
if (Array.isArray(v))
|
|
7
|
-
return v.filter((x) => typeof x === "string");
|
|
8
|
-
return [];
|
|
9
|
-
}
|
|
10
4
|
export const taskSetStatusSpec = {
|
|
11
5
|
id: ["task", "set-status"],
|
|
12
6
|
group: "Task",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/task/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK9C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAW5D,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAI/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,eAAO,MAAM,aAAa,+BAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/task/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,20 @@ import { dedupeStrings } from "../../shared/strings.js";
|
|
|
11
11
|
import { parseGitLogHashSubject } from "../../shared/git-log.js";
|
|
12
12
|
export { dedupeStrings } from "../../shared/strings.js";
|
|
13
13
|
export const execFileAsync = promisify(execFile);
|
|
14
|
+
async function listAgentIdsMemo(ctx) {
|
|
15
|
+
ctx.memo.agentIds ??= (async () => {
|
|
16
|
+
const agentsDir = path.join(ctx.resolvedProject.gitRoot, ctx.config.paths.agents_dir);
|
|
17
|
+
if (!(await fileExists(agentsDir)))
|
|
18
|
+
return [];
|
|
19
|
+
const entries = await readdir(agentsDir);
|
|
20
|
+
return entries
|
|
21
|
+
.filter((name) => name.endsWith(".json"))
|
|
22
|
+
.map((name) => name.slice(0, -".json".length))
|
|
23
|
+
.map((id) => id.trim())
|
|
24
|
+
.filter((id) => id.length > 0);
|
|
25
|
+
})();
|
|
26
|
+
return await ctx.memo.agentIds;
|
|
27
|
+
}
|
|
14
28
|
export function nowIso() {
|
|
15
29
|
return new Date().toISOString();
|
|
16
30
|
}
|
|
@@ -77,14 +91,7 @@ export async function warnIfUnknownOwner(ctx, owner) {
|
|
|
77
91
|
const trimmed = owner.trim();
|
|
78
92
|
if (!trimmed)
|
|
79
93
|
return;
|
|
80
|
-
const
|
|
81
|
-
if (!(await fileExists(agentsDir)))
|
|
82
|
-
return;
|
|
83
|
-
const entries = await readdir(agentsDir);
|
|
84
|
-
const ids = entries
|
|
85
|
-
.filter((name) => name.endsWith(".json"))
|
|
86
|
-
.map((name) => name.slice(0, -".json".length))
|
|
87
|
-
.filter((id) => id.trim().length > 0);
|
|
94
|
+
const ids = await listAgentIdsMemo(ctx);
|
|
88
95
|
if (ids.length === 0)
|
|
89
96
|
return;
|
|
90
97
|
if (!ids.includes(trimmed)) {
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
taskId: string;
|
|
5
|
-
};
|
|
6
|
-
export declare const taskShowSpec: CommandSpec<TaskShowParsed>;
|
|
7
|
-
export declare function makeRunTaskShowHandler(getCtx: (cmd: string) => Promise<CommandContext>): (ctx: CommandCtx, p: TaskShowParsed) => Promise<number>;
|
|
1
|
+
export { taskShowSpec } from "./show.spec.js";
|
|
2
|
+
export type { TaskShowParsed } from "./show.spec.js";
|
|
3
|
+
export { makeRunTaskShowHandler } from "./show.run.js";
|
|
8
4
|
//# sourceMappingURL=show.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/show.command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"show.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/show.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,19 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
id: ["task", "show"],
|
|
4
|
-
group: "Task",
|
|
5
|
-
summary: "Print task metadata as JSON (frontmatter shape).",
|
|
6
|
-
args: [{ name: "task-id", required: true, valueHint: "<task-id>" }],
|
|
7
|
-
examples: [{ cmd: "agentplane task show 202602030608-F1Q8AB", why: "Show task metadata." }],
|
|
8
|
-
parse: (raw) => ({ taskId: String(raw.args["task-id"]) }),
|
|
9
|
-
};
|
|
10
|
-
export function makeRunTaskShowHandler(getCtx) {
|
|
11
|
-
return async (ctx, p) => {
|
|
12
|
-
return await cmdTaskShow({
|
|
13
|
-
ctx: await getCtx("task show"),
|
|
14
|
-
cwd: ctx.cwd,
|
|
15
|
-
rootOverride: ctx.rootOverride,
|
|
16
|
-
taskId: p.taskId,
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
}
|
|
1
|
+
export { taskShowSpec } from "./show.spec.js";
|
|
2
|
+
export { makeRunTaskShowHandler } from "./show.run.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CommandCtx } from "../../cli/spec/spec.js";
|
|
2
|
+
import type { CommandContext } from "../shared/task-backend.js";
|
|
3
|
+
import type { TaskShowParsed } from "./show.spec.js";
|
|
4
|
+
export declare function makeRunTaskShowHandler(getCtx: (cmd: string) => Promise<CommandContext>): (ctx: CommandCtx, p: TaskShowParsed) => Promise<number>;
|
|
5
|
+
//# sourceMappingURL=show.run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.run.d.ts","sourceRoot":"","sources":["../../../src/commands/task/show.run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IACvE,KAAK,UAAU,EAAE,GAAG,cAAc,KAAG,OAAO,CAAC,MAAM,CAAC,CAQnE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { cmdTaskShow } from "./show.js";
|
|
2
|
+
export function makeRunTaskShowHandler(getCtx) {
|
|
3
|
+
return async (ctx, p) => {
|
|
4
|
+
return await cmdTaskShow({
|
|
5
|
+
ctx: await getCtx("task show"),
|
|
6
|
+
cwd: ctx.cwd,
|
|
7
|
+
rootOverride: ctx.rootOverride,
|
|
8
|
+
taskId: p.taskId,
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.spec.d.ts","sourceRoot":"","sources":["../../../src/commands/task/show.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,cAAc,CAOpD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const taskShowSpec = {
|
|
2
|
+
id: ["task", "show"],
|
|
3
|
+
group: "Task",
|
|
4
|
+
summary: "Print task metadata as JSON (frontmatter shape).",
|
|
5
|
+
args: [{ name: "task-id", required: true, valueHint: "<task-id>" }],
|
|
6
|
+
examples: [{ cmd: "agentplane task show 202602030608-F1Q8AB", why: "Show task metadata." }],
|
|
7
|
+
parse: (raw) => ({ taskId: String(raw.args["task-id"]) }),
|
|
8
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/update.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.command.d.ts","sourceRoot":"","sources":["../../../src/commands/task/update.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAiHxD,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IACzE,KAAK,UAAU,EAAE,GAAG,gBAAgB,KAAG,OAAO,CAAC,MAAM,CAAC,CAkBrE"}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { usageError } from "../../cli/spec/errors.js";
|
|
2
|
+
import { toStringList } from "../../cli/spec/parse-utils.js";
|
|
2
3
|
import { cmdTaskUpdate } from "./update.js";
|
|
3
4
|
import { normalizeDependsOnInput } from "./shared.js";
|
|
4
|
-
function toStringList(v) {
|
|
5
|
-
if (typeof v === "string")
|
|
6
|
-
return [v];
|
|
7
|
-
if (Array.isArray(v))
|
|
8
|
-
return v.filter((x) => typeof x === "string");
|
|
9
|
-
return [];
|
|
10
|
-
}
|
|
11
5
|
export const taskUpdateSpec = {
|
|
12
6
|
id: ["task", "update"],
|
|
13
7
|
group: "Task",
|