agentplane 0.2.25 → 0.3.1

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.
Files changed (221) hide show
  1. package/README.md +3 -1
  2. package/assets/AGENTS.md +123 -526
  3. package/assets/agents/UPGRADER.json +10 -9
  4. package/assets/framework.manifest.json +112 -7
  5. package/assets/policy/check-routing.mjs +180 -0
  6. package/assets/policy/dod.code.md +25 -0
  7. package/assets/policy/dod.core.md +32 -0
  8. package/assets/policy/dod.docs.md +32 -0
  9. package/assets/policy/examples/migration-note.md +6 -0
  10. package/assets/policy/examples/pr-note.md +16 -0
  11. package/assets/policy/examples/unit-test-pattern.md +19 -0
  12. package/assets/policy/governance.md +37 -0
  13. package/assets/policy/incidents.md +36 -0
  14. package/assets/policy/security.must.md +7 -0
  15. package/assets/policy/workflow.branch_pr.md +34 -0
  16. package/assets/policy/workflow.direct.md +46 -0
  17. package/assets/policy/workflow.md +9 -0
  18. package/assets/policy/workflow.release.md +31 -0
  19. package/assets/policy/workflow.upgrade.md +20 -0
  20. package/bin/agentplane.js +47 -57
  21. package/bin/dist-guard.js +124 -0
  22. package/dist/.build-manifest.json +11 -0
  23. package/dist/agents/agents-template.d.ts +7 -0
  24. package/dist/agents/agents-template.d.ts.map +1 -1
  25. package/dist/agents/agents-template.js +41 -2
  26. package/dist/backends/task-backend/local-backend.d.ts +2 -0
  27. package/dist/backends/task-backend/local-backend.d.ts.map +1 -1
  28. package/dist/backends/task-backend/local-backend.js +12 -1
  29. package/dist/backends/task-backend/redmine/mapping.d.ts.map +1 -1
  30. package/dist/backends/task-backend/redmine/mapping.js +26 -1
  31. package/dist/backends/task-backend/redmine-backend.d.ts +4 -0
  32. package/dist/backends/task-backend/redmine-backend.d.ts.map +1 -1
  33. package/dist/backends/task-backend/redmine-backend.js +92 -9
  34. package/dist/backends/task-backend/shared/types.d.ts +1 -0
  35. package/dist/backends/task-backend/shared/types.d.ts.map +1 -1
  36. package/dist/backends/task-index.d.ts.map +1 -1
  37. package/dist/backends/task-index.js +8 -1
  38. package/dist/cli/command-guide.d.ts.map +1 -1
  39. package/dist/cli/command-guide.js +39 -17
  40. package/dist/cli/command-snippets.d.ts +24 -0
  41. package/dist/cli/command-snippets.d.ts.map +1 -0
  42. package/dist/cli/command-snippets.js +23 -0
  43. package/dist/cli/reason-codes.d.ts +9 -0
  44. package/dist/cli/reason-codes.d.ts.map +1 -0
  45. package/dist/cli/reason-codes.js +79 -0
  46. package/dist/cli/recipes-bundled.d.ts +1 -0
  47. package/dist/cli/recipes-bundled.d.ts.map +1 -1
  48. package/dist/cli/recipes-bundled.js +4 -1
  49. package/dist/cli/run-cli/command-catalog.d.ts +1 -1
  50. package/dist/cli/run-cli/command-catalog.d.ts.map +1 -1
  51. package/dist/cli/run-cli/command-catalog.js +40 -1
  52. package/dist/cli/run-cli/commands/config.d.ts +5 -0
  53. package/dist/cli/run-cli/commands/config.d.ts.map +1 -1
  54. package/dist/cli/run-cli/commands/config.js +86 -1
  55. package/dist/cli/run-cli/commands/core.d.ts.map +1 -1
  56. package/dist/cli/run-cli/commands/core.js +57 -2
  57. package/dist/cli/run-cli/commands/ide.d.ts.map +1 -1
  58. package/dist/cli/run-cli/commands/ide.js +8 -3
  59. package/dist/cli/run-cli/commands/init/recipes.d.ts +5 -1
  60. package/dist/cli/run-cli/commands/init/recipes.d.ts.map +1 -1
  61. package/dist/cli/run-cli/commands/init/recipes.js +24 -4
  62. package/dist/cli/run-cli/commands/init/ui.d.ts.map +1 -1
  63. package/dist/cli/run-cli/commands/init/ui.js +1 -2
  64. package/dist/cli/run-cli/commands/init/write-agents.d.ts +2 -0
  65. package/dist/cli/run-cli/commands/init/write-agents.d.ts.map +1 -1
  66. package/dist/cli/run-cli/commands/init/write-agents.js +24 -5
  67. package/dist/cli/run-cli/commands/init/write-workflow.d.ts +12 -0
  68. package/dist/cli/run-cli/commands/init/write-workflow.d.ts.map +1 -0
  69. package/dist/cli/run-cli/commands/init/write-workflow.js +58 -0
  70. package/dist/cli/run-cli/commands/init.d.ts +4 -1
  71. package/dist/cli/run-cli/commands/init.d.ts.map +1 -1
  72. package/dist/cli/run-cli/commands/init.js +126 -48
  73. package/dist/cli/run-cli.d.ts.map +1 -1
  74. package/dist/cli/run-cli.js +195 -8
  75. package/dist/commands/backend/sync.command.d.ts.map +1 -1
  76. package/dist/commands/backend/sync.command.js +7 -6
  77. package/dist/commands/backend.d.ts.map +1 -1
  78. package/dist/commands/backend.js +2 -0
  79. package/dist/commands/doctor.run.d.ts.map +1 -1
  80. package/dist/commands/doctor.run.js +107 -16
  81. package/dist/commands/guard/impl/commands.d.ts.map +1 -1
  82. package/dist/commands/guard/impl/commands.js +12 -6
  83. package/dist/commands/recipes/impl/commands/install.d.ts.map +1 -1
  84. package/dist/commands/recipes/impl/commands/install.js +36 -13
  85. package/dist/commands/recipes/impl/scenario.d.ts.map +1 -1
  86. package/dist/commands/recipes/impl/scenario.js +25 -0
  87. package/dist/commands/recipes/impl/types.d.ts +4 -0
  88. package/dist/commands/recipes/impl/types.d.ts.map +1 -1
  89. package/dist/commands/release/apply.command.d.ts.map +1 -1
  90. package/dist/commands/release/apply.command.js +9 -4
  91. package/dist/commands/release/plan.command.d.ts.map +1 -1
  92. package/dist/commands/release/plan.command.js +9 -3
  93. package/dist/commands/scenario/impl/commands.d.ts.map +1 -1
  94. package/dist/commands/scenario/impl/commands.js +74 -3
  95. package/dist/commands/scenario/impl/report.d.ts +8 -0
  96. package/dist/commands/scenario/impl/report.d.ts.map +1 -1
  97. package/dist/commands/scenario/impl/report.js +1 -0
  98. package/dist/commands/shared/reconcile-check.d.ts +7 -0
  99. package/dist/commands/shared/reconcile-check.d.ts.map +1 -0
  100. package/dist/commands/shared/reconcile-check.js +60 -0
  101. package/dist/commands/sync.command.d.ts.map +1 -1
  102. package/dist/commands/sync.command.js +9 -2
  103. package/dist/commands/task/add.d.ts.map +1 -1
  104. package/dist/commands/task/add.js +32 -0
  105. package/dist/commands/task/doc.command.d.ts.map +1 -1
  106. package/dist/commands/task/doc.command.js +1 -0
  107. package/dist/commands/task/finish.d.ts.map +1 -1
  108. package/dist/commands/task/finish.js +11 -1
  109. package/dist/commands/task/list.d.ts.map +1 -1
  110. package/dist/commands/task/list.js +2 -1
  111. package/dist/commands/task/list.spec.d.ts.map +1 -1
  112. package/dist/commands/task/list.spec.js +7 -0
  113. package/dist/commands/task/new.d.ts.map +1 -1
  114. package/dist/commands/task/new.js +41 -4
  115. package/dist/commands/task/next.d.ts.map +1 -1
  116. package/dist/commands/task/next.js +2 -1
  117. package/dist/commands/task/next.spec.d.ts.map +1 -1
  118. package/dist/commands/task/next.spec.js +7 -0
  119. package/dist/commands/task/plan.d.ts.map +1 -1
  120. package/dist/commands/task/plan.js +7 -1
  121. package/dist/commands/task/search.d.ts.map +1 -1
  122. package/dist/commands/task/search.js +2 -1
  123. package/dist/commands/task/search.spec.d.ts.map +1 -1
  124. package/dist/commands/task/search.spec.js +7 -0
  125. package/dist/commands/task/shared.d.ts +14 -0
  126. package/dist/commands/task/shared.d.ts.map +1 -1
  127. package/dist/commands/task/shared.js +58 -1
  128. package/dist/commands/task/start-ready.js +1 -1
  129. package/dist/commands/task/verify-record.d.ts.map +1 -1
  130. package/dist/commands/task/verify-record.js +2 -0
  131. package/dist/commands/upgrade.command.d.ts.map +1 -1
  132. package/dist/commands/upgrade.command.js +2 -2
  133. package/dist/commands/upgrade.d.ts.map +1 -1
  134. package/dist/commands/upgrade.js +263 -294
  135. package/dist/commands/workflow-build.command.d.ts +8 -0
  136. package/dist/commands/workflow-build.command.d.ts.map +1 -0
  137. package/dist/commands/workflow-build.command.js +103 -0
  138. package/dist/commands/workflow-playbook.command.d.ts +10 -0
  139. package/dist/commands/workflow-playbook.command.d.ts.map +1 -0
  140. package/dist/commands/workflow-playbook.command.js +173 -0
  141. package/dist/commands/workflow-restore.command.d.ts +5 -0
  142. package/dist/commands/workflow-restore.command.d.ts.map +1 -0
  143. package/dist/commands/workflow-restore.command.js +30 -0
  144. package/dist/commands/workflow.command.d.ts +6 -0
  145. package/dist/commands/workflow.command.d.ts.map +1 -0
  146. package/dist/commands/workflow.command.js +36 -0
  147. package/dist/harness/dynamic-tool-contract.d.ts +29 -0
  148. package/dist/harness/dynamic-tool-contract.d.ts.map +1 -0
  149. package/dist/harness/dynamic-tool-contract.js +86 -0
  150. package/dist/harness/hooks-lifecycle.d.ts +27 -0
  151. package/dist/harness/hooks-lifecycle.d.ts.map +1 -0
  152. package/dist/harness/hooks-lifecycle.js +67 -0
  153. package/dist/harness/index.d.ts +9 -0
  154. package/dist/harness/index.d.ts.map +1 -0
  155. package/dist/harness/index.js +8 -0
  156. package/dist/harness/reconcile.d.ts +37 -0
  157. package/dist/harness/reconcile.d.ts.map +1 -0
  158. package/dist/harness/reconcile.js +42 -0
  159. package/dist/harness/retry-policy.d.ts +31 -0
  160. package/dist/harness/retry-policy.d.ts.map +1 -0
  161. package/dist/harness/retry-policy.js +33 -0
  162. package/dist/harness/scheduler.d.ts +18 -0
  163. package/dist/harness/scheduler.d.ts.map +1 -0
  164. package/dist/harness/scheduler.js +55 -0
  165. package/dist/harness/state-machine.d.ts +17 -0
  166. package/dist/harness/state-machine.d.ts.map +1 -0
  167. package/dist/harness/state-machine.js +70 -0
  168. package/dist/harness/token-accounting.d.ts +19 -0
  169. package/dist/harness/token-accounting.d.ts.map +1 -0
  170. package/dist/harness/token-accounting.js +77 -0
  171. package/dist/harness/workspace-safety.d.ts +14 -0
  172. package/dist/harness/workspace-safety.d.ts.map +1 -0
  173. package/dist/harness/workspace-safety.js +62 -0
  174. package/dist/recipes/bundled-recipes.d.ts +4 -0
  175. package/dist/recipes/bundled-recipes.d.ts.map +1 -1
  176. package/dist/recipes/bundled-recipes.js +11 -0
  177. package/dist/shared/errors.d.ts +6 -0
  178. package/dist/shared/errors.d.ts.map +1 -1
  179. package/dist/shared/errors.js +1 -0
  180. package/dist/shared/policy-gateway.d.ts +15 -0
  181. package/dist/shared/policy-gateway.d.ts.map +1 -0
  182. package/dist/shared/policy-gateway.js +49 -0
  183. package/dist/shared/protected-paths.d.ts.map +1 -1
  184. package/dist/shared/protected-paths.js +1 -0
  185. package/dist/shared/runtime-artifacts.d.ts +2 -2
  186. package/dist/shared/runtime-artifacts.d.ts.map +1 -1
  187. package/dist/shared/runtime-artifacts.js +4 -0
  188. package/dist/workflow-runtime/build.d.ts +4 -0
  189. package/dist/workflow-runtime/build.d.ts.map +1 -0
  190. package/dist/workflow-runtime/build.js +126 -0
  191. package/dist/workflow-runtime/enforcement.d.ts +3 -0
  192. package/dist/workflow-runtime/enforcement.d.ts.map +1 -0
  193. package/dist/workflow-runtime/enforcement.js +10 -0
  194. package/dist/workflow-runtime/file-ops.d.ts +11 -0
  195. package/dist/workflow-runtime/file-ops.d.ts.map +1 -0
  196. package/dist/workflow-runtime/file-ops.js +248 -0
  197. package/dist/workflow-runtime/fix.d.ts +9 -0
  198. package/dist/workflow-runtime/fix.d.ts.map +1 -0
  199. package/dist/workflow-runtime/fix.js +107 -0
  200. package/dist/workflow-runtime/index.d.ts +11 -0
  201. package/dist/workflow-runtime/index.d.ts.map +1 -0
  202. package/dist/workflow-runtime/index.js +10 -0
  203. package/dist/workflow-runtime/markdown.d.ts +10 -0
  204. package/dist/workflow-runtime/markdown.d.ts.map +1 -0
  205. package/dist/workflow-runtime/markdown.js +147 -0
  206. package/dist/workflow-runtime/observability.d.ts +12 -0
  207. package/dist/workflow-runtime/observability.d.ts.map +1 -0
  208. package/dist/workflow-runtime/observability.js +14 -0
  209. package/dist/workflow-runtime/paths.d.ts +3 -0
  210. package/dist/workflow-runtime/paths.d.ts.map +1 -0
  211. package/dist/workflow-runtime/paths.js +11 -0
  212. package/dist/workflow-runtime/template.d.ts +7 -0
  213. package/dist/workflow-runtime/template.d.ts.map +1 -0
  214. package/dist/workflow-runtime/template.js +94 -0
  215. package/dist/workflow-runtime/types.d.ts +68 -0
  216. package/dist/workflow-runtime/types.d.ts.map +1 -0
  217. package/dist/workflow-runtime/types.js +1 -0
  218. package/dist/workflow-runtime/validate.d.ts +8 -0
  219. package/dist/workflow-runtime/validate.d.ts.map +1 -0
  220. package/dist/workflow-runtime/validate.js +331 -0
  221. package/package.json +3 -3
@@ -22,6 +22,7 @@ export class RedmineBackend {
22
22
  cache;
23
23
  issueCache = new Map();
24
24
  reverseStatus = new Map();
25
+ inferredStatusByTaskStatus = null;
25
26
  constructor(settings, opts) {
26
27
  const env = readRedmineEnv();
27
28
  this.baseUrl = firstNonEmptyString(env.url, settings.url).replaceAll(/\/+$/gu, "");
@@ -89,11 +90,8 @@ export class RedmineBackend {
89
90
  }
90
91
  async listTasks() {
91
92
  try {
92
- const tasks = await this.listTasksRemote();
93
- for (const task of tasks) {
94
- await this.cacheTask(task, false);
95
- }
96
- return tasks;
93
+ // Read-only listing must not rewrite local task READMEs through cache updates.
94
+ return await this.listTasksRemote();
97
95
  }
98
96
  catch (err) {
99
97
  if (err instanceof RedmineUnavailable) {
@@ -119,10 +117,8 @@ export class RedmineBackend {
119
117
  const issue = await this.findIssueByTaskId(taskId);
120
118
  if (!issue)
121
119
  return null;
122
- const task = this.issueToTask(issue, taskId);
123
- if (task)
124
- await this.cacheTask(task, false);
125
- return task;
120
+ // Read-only fetch must not rewrite local task READMEs through cache updates.
121
+ return this.issueToTask(issue, taskId);
126
122
  }
127
123
  catch (err) {
128
124
  if (err instanceof RedmineUnavailable) {
@@ -249,6 +245,11 @@ export class RedmineBackend {
249
245
  existingIssue = this.issueFromPayload(payload);
250
246
  }
251
247
  const payload = this.taskToIssuePayload(task, existingIssue ?? undefined);
248
+ if (payload.status_id === undefined) {
249
+ const inferredStatusId = await this.inferStatusIdForTaskStatus(task.status);
250
+ if (inferredStatusId !== null)
251
+ payload.status_id = inferredStatusId;
252
+ }
252
253
  if (issueIdText) {
253
254
  await this.requestJson("PUT", `issues/${issueIdText}.json`, { issue: payload });
254
255
  }
@@ -437,6 +438,88 @@ export class RedmineBackend {
437
438
  issueFromPayload(payload) {
438
439
  return isRecord(payload.issue) ? payload.issue : null;
439
440
  }
441
+ async inferStatusIdForTaskStatus(statusRaw) {
442
+ const status = toStringSafe(statusRaw).trim().toUpperCase();
443
+ if (!status)
444
+ return null;
445
+ const explicit = this.statusMap?.[status];
446
+ if (typeof explicit === "number" && Number.isFinite(explicit))
447
+ return explicit;
448
+ const inferred = await this.loadInferredStatusByTaskStatus();
449
+ return inferred.get(status) ?? null;
450
+ }
451
+ async loadInferredStatusByTaskStatus() {
452
+ if (this.inferredStatusByTaskStatus)
453
+ return this.inferredStatusByTaskStatus;
454
+ const map = new Map();
455
+ this.inferredStatusByTaskStatus = map;
456
+ try {
457
+ const payload = await this.requestJson("GET", "issue_statuses.json");
458
+ const statuses = Array.isArray(payload.issue_statuses) ? payload.issue_statuses : [];
459
+ const parsed = [];
460
+ for (const item of statuses) {
461
+ if (!isRecord(item))
462
+ continue;
463
+ const id = typeof item.id === "number" ? item.id : null;
464
+ if (!id || !Number.isFinite(id))
465
+ continue;
466
+ parsed.push({
467
+ id,
468
+ name: toStringSafe(item.name).trim().toLowerCase(),
469
+ isClosed: item.is_closed === true,
470
+ isDefault: item.is_default === true,
471
+ });
472
+ }
473
+ const done = this.selectInferredStatus(parsed, "DONE");
474
+ const doing = this.selectInferredStatus(parsed, "DOING");
475
+ const todo = this.selectInferredStatus(parsed, "TODO");
476
+ if (done !== null)
477
+ map.set("DONE", done);
478
+ if (doing !== null)
479
+ map.set("DOING", doing);
480
+ if (todo !== null)
481
+ map.set("TODO", todo);
482
+ }
483
+ catch {
484
+ // Best effort: keep previous behavior when status discovery is unavailable.
485
+ }
486
+ return map;
487
+ }
488
+ selectInferredStatus(statuses, target) {
489
+ if (statuses.length === 0)
490
+ return null;
491
+ if (target === "DOING") {
492
+ const byId = statuses.find((item) => item.id === 2);
493
+ if (byId)
494
+ return byId.id;
495
+ const byName = statuses.find((item) => item.name.includes("progress") || item.name.includes("doing"));
496
+ if (byName)
497
+ return byName.id;
498
+ return null;
499
+ }
500
+ if (target === "DONE") {
501
+ const closed = statuses.find((item) => item.isClosed);
502
+ if (closed)
503
+ return closed.id;
504
+ const byId = statuses.find((item) => item.id === 5 || item.id === 3 || item.id === 6);
505
+ if (byId)
506
+ return byId.id;
507
+ const byName = statuses.find((item) => item.name.includes("done") ||
508
+ item.name.includes("closed") ||
509
+ item.name.includes("resolved") ||
510
+ item.name.includes("complete"));
511
+ if (byName)
512
+ return byName.id;
513
+ return null;
514
+ }
515
+ const byDefault = statuses.find((item) => item.isDefault);
516
+ if (byDefault)
517
+ return byDefault.id;
518
+ const byId = statuses.find((item) => item.id === 1);
519
+ if (byId)
520
+ return byId.id;
521
+ return statuses[0]?.id ?? null;
522
+ }
440
523
  async findIssueByTaskId(taskId) {
441
524
  const taskFieldId = this.taskIdFieldId();
442
525
  return await findIssueByTaskIdImpl({
@@ -58,6 +58,7 @@ export type TaskDocMeta = Pick<TaskData, "doc" | "doc_version" | "doc_updated_at
58
58
  export type TaskBackend = {
59
59
  id: string;
60
60
  listTasks(): Promise<TaskData[]>;
61
+ getLastListWarnings?(): string[];
61
62
  getTask(taskId: string): Promise<TaskData | null>;
62
63
  getTasks?(taskIds: string[]): Promise<(TaskData | null)[]>;
63
64
  writeTask(task: TaskData): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/backends/task-backend/shared/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/backends/task-backend/shared/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-index.d.ts","sourceRoot":"","sources":["../../src/backends/task-index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAI3C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,CAAC,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,CAAC,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAE5C,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU7D;AA8ED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAWpF;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5F;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,cAAc,CAMhB"}
1
+ {"version":3,"file":"task-index.d.ts","sourceRoot":"","sources":["../../src/backends/task-index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAI3C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,CAAC,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,CAAC,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAE5C,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU7D;AA8ED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAWpF;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5F;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,cAAc,CAahB"}
@@ -123,8 +123,15 @@ export async function saveTaskIndex(indexPath, index) {
123
123
  await writeJsonStableIfChanged(indexPath, index);
124
124
  }
125
125
  export function buildTaskIndexEntry(task, readmePath, mtimeMs) {
126
+ const compactTask = {
127
+ ...task,
128
+ // Keep the index payload lean for list/search/next paths.
129
+ doc: undefined,
130
+ comments: undefined,
131
+ events: undefined,
132
+ };
126
133
  return {
127
- task,
134
+ task: compactTask,
128
135
  readmePath,
129
136
  mtimeMs,
130
137
  };
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"command-guide.d.ts","sourceRoot":"","sources":["../../src/cli/command-guide.ts"],"names":[],"mappings":"AA0MA,wBAAgB,SAAS,IAAI,MAAM,EAAE,CAEpC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOzD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CA6FzC"}
@@ -1,3 +1,4 @@
1
+ import { COMMAND_SNIPPETS } from "./command-snippets.js";
1
2
  const CHEAT_SHEET_ROWS = [
2
3
  {
3
4
  operation: "PLANNER: list/show tasks",
@@ -31,6 +32,10 @@ const CHEAT_SHEET_ROWS = [
31
32
  operation: "CODER/TESTER/DOCS: start checkout (branch_pr)",
32
33
  command: "`agentplane work start <task-id> --agent <ROLE> --slug <slug> --worktree`",
33
34
  },
35
+ {
36
+ operation: "CODER/TESTER: start task deterministically",
37
+ command: '`agentplane task start-ready <task-id> --author <ROLE> --body "Start: ..."` (run after successful `task plan approve`; do not run in parallel)',
38
+ },
34
39
  {
35
40
  operation: "CODER/TESTER/DOCS: update PR artifacts",
36
41
  command: "`agentplane pr update <task-id>`",
@@ -83,15 +88,17 @@ const ROLE_GUIDES = [
83
88
  "- `task new` auto-seeds README sections; use `task scaffold` only for backfill/import/manual repair.",
84
89
  '- Plan lifecycle: `agentplane task plan set <task-id> --text "..." --updated-by <ROLE>` -> `agentplane task plan approve <task-id> --by <id>`',
85
90
  "- Verify Steps discipline: if a task primary tag is verify-required (default: code/data/ops), fill `## Verify Steps` before plan approval.",
86
- '- Task docs (when planning needs it): `agentplane task doc set <task-id> --section Summary --text "..."`',
91
+ "- Doc quality gate: `task plan approve` and `finish` fail when required agent-filled sections (`Summary/Scope/Plan/Risks/Rollback Plan`, per config) are empty/TODO placeholders.",
92
+ '- Task docs (when planning needs it): `agentplane task doc set <task-id> --section Summary --text "..."`; if `--text`/`--file` contains multiple known headings, the command applies it as one batched full-doc update.',
87
93
  ],
88
94
  },
89
95
  {
90
96
  role: "CODER",
91
97
  lines: [
92
- "- direct mode: single-stream in the current checkout; `agentplane work start <task-id> --agent <ROLE> --slug <slug>` records the active task and keeps the current branch (no task branches). Use `task doc set` / `task plan set` for normal docs updates.",
98
+ "- direct mode: single-stream in the current checkout; `agentplane work start <task-id> --agent <ROLE> --slug <slug>` records the active task and keeps the current branch (no task branches). Use `task doc set` / `task plan set` for normal docs updates; batched doc updates are allowed before approval.",
93
99
  "- branch_pr: `agentplane work start <task-id> --agent <ROLE> --slug <slug> --worktree`",
94
- '- Status updates: `agentplane start <task-id> --author <ROLE> --body "Start: ..."` / `agentplane block <task-id> --author <ROLE> --body "Blocked: ..."`',
100
+ '- Start status (deterministic): `agentplane task start-ready <task-id> --author <ROLE> --body "Start: ..."` (after `task plan approve`, sequential only).',
101
+ '- Other status updates: `agentplane block <task-id> --author <ROLE> --body "Blocked: ..."`',
95
102
  "- Verify Steps: `agentplane task verify-show <task-id>` (use as the verification contract before recording results).",
96
103
  '- Verify: `agentplane verify <task-id> --ok|--rework --by <ROLE> --note "..."`',
97
104
  '- 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 "..."`',
@@ -101,9 +108,10 @@ const ROLE_GUIDES = [
101
108
  {
102
109
  role: "TESTER",
103
110
  lines: [
104
- "- direct mode: single-stream in the current checkout; `agentplane work start <task-id> --agent <ROLE> --slug <slug>` records the active task and keeps the current branch (no task branches). Use `task doc set` / `task plan set` for normal docs updates.",
111
+ "- direct mode: single-stream in the current checkout; `agentplane work start <task-id> --agent <ROLE> --slug <slug>` records the active task and keeps the current branch (no task branches). Use `task doc set` / `task plan set` for normal docs updates; batched doc updates are allowed before approval.",
105
112
  "- branch_pr: `agentplane work start <task-id> --agent <ROLE> --slug <slug> --worktree`",
106
- '- Status updates: `agentplane start <task-id> --author <ROLE> --body "Start: ..."` / `agentplane block <task-id> --author <ROLE> --body "Blocked: ..."`',
113
+ '- Start status (deterministic): `agentplane task start-ready <task-id> --author <ROLE> --body "Start: ..."` (after `task plan approve`, sequential only).',
114
+ '- Other status updates: `agentplane block <task-id> --author <ROLE> --body "Blocked: ..."`',
107
115
  "- Verify Steps: `agentplane task verify-show <task-id>` (treat as the verification contract).",
108
116
  '- Verify: `agentplane verify <task-id> --ok|--rework --by <ROLE> --note "..."`',
109
117
  '- 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 "..."`',
@@ -113,7 +121,7 @@ const ROLE_GUIDES = [
113
121
  {
114
122
  role: "DOCS",
115
123
  lines: [
116
- '- Task docs: `agentplane task doc set <task-id> --section Summary --text "..."` (repeat per section or use `--file`)',
124
+ '- Task docs: `agentplane task doc set <task-id> --section Summary --text "..."` (repeat per section, or send one multi-heading full-doc payload via `--text`/`--file`)',
117
125
  '- PR notes: `agentplane pr note <task-id> --author DOCS --body "..."`',
118
126
  '- 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
127
  ],
@@ -136,14 +144,14 @@ const ROLE_GUIDES = [
136
144
  {
137
145
  role: "CREATOR",
138
146
  lines: [
139
- '- Task bookkeeping: `agentplane task update <task-id> ...` / `agentplane start <task-id> --author CREATOR --body "Start: ..."`',
147
+ '- Task bookkeeping: `agentplane task update <task-id> ...` / `agentplane task start-ready <task-id> --author CREATOR --body "Start: ..."`',
140
148
  '- Commits: `agentplane guard commit <task-id> -m "<emoji> <suffix> <scope>: <summary>"` / `agentplane commit <task-id> -m "<emoji> <suffix> <scope>: <summary>" --allow <path-prefix>`',
141
149
  ],
142
150
  },
143
151
  {
144
152
  role: "REDMINE",
145
153
  lines: [
146
- "- Sync before/after updates: `agentplane sync redmine --direction pull` / `agentplane sync redmine --direction push --yes`",
154
+ `- Sync before/after updates: \`${COMMAND_SNIPPETS.sync.pullRedmineExplicit}\` / \`${COMMAND_SNIPPETS.sync.pushRedmineExplicitWithYes}\``,
147
155
  "- Then use normal task/doc commands (`agentplane task list` / `agentplane task show` / `agentplane task update` / `agentplane task doc set`) as needed.",
148
156
  ],
149
157
  },
@@ -187,10 +195,10 @@ export function renderQuickstart() {
187
195
  return [
188
196
  "# agentplane quickstart",
189
197
  "",
190
- "AGENTS.md is the source of truth for the workflow/process policy; quickstart and role output are the source of truth for CLI syntax and artifacts.",
198
+ "The policy gateway file (AGENTS.md or CLAUDE.md) is the source of truth for workflow/process policy; quickstart and role output are the source of truth for CLI syntax and artifacts.",
191
199
  "Do not edit `.agentplane/tasks.json` by hand.",
192
200
  "",
193
- "- See AGENTS.md for the canonical workflow policy and approval gates.",
201
+ "- See your policy gateway file (AGENTS.md or CLAUDE.md) for canonical workflow policy and approval gates.",
194
202
  "",
195
203
  "## Project setup",
196
204
  "",
@@ -201,11 +209,18 @@ export function renderQuickstart() {
201
209
  "",
202
210
  "## Daily task workflow",
203
211
  "",
204
- "- `agentplane task list` / `agentplane task show <task-id>`",
205
- '- `agentplane task new --title "..." --description "..." --priority med --owner CODER --tag <tag>`',
206
- '- `agentplane start <task-id> --author <ROLE> --body "Start: ..."`',
207
- '- `agentplane verify <task-id> --ok|--rework --by <ROLE> --note "..."`',
208
- '- `agentplane finish <task-id> --author <ROLE> --body "Verified: ..." --commit <git-rev> --close-commit`',
212
+ `- \`${COMMAND_SNIPPETS.core.taskList}\` / \`${COMMAND_SNIPPETS.core.taskShow}\``,
213
+ `- \`${COMMAND_SNIPPETS.core.taskNew}\``,
214
+ `- \`${COMMAND_SNIPPETS.core.startTask}\``,
215
+ `- \`${COMMAND_SNIPPETS.core.verifyTask}\``,
216
+ `- \`${COMMAND_SNIPPETS.core.finishTask}\``,
217
+ "",
218
+ "## Harness engeneering loop",
219
+ "",
220
+ "- Constrain: policy + workflow contract first.",
221
+ "- Execute: small explicit transitions.",
222
+ "- Observe: structured artifacts and diagnostics.",
223
+ "- Recover: deterministic fallback before manual repair.",
209
224
  "",
210
225
  "## Branch workflow (branch_pr)",
211
226
  "",
@@ -213,7 +228,12 @@ export function renderQuickstart() {
213
228
  "- `agentplane pr open <task-id>` / `agentplane pr update <task-id>` / `agentplane pr check <task-id>`",
214
229
  "- `agentplane integrate <task-id> --branch task/<task-id>/<slug> --run-verify`",
215
230
  "",
216
- "## Recipes and scenarios",
231
+ "## Workflow operations (core)",
232
+ "- `agentplane workflow debug`",
233
+ "- `agentplane workflow sync`",
234
+ "- `agentplane workflow land`",
235
+ "",
236
+ "## Recipes and scenarios (extensions)",
217
237
  "",
218
238
  "- `agentplane recipes list`",
219
239
  "- `agentplane recipes list --tag <tag>`",
@@ -223,7 +243,7 @@ export function renderQuickstart() {
223
243
  "",
224
244
  "## More guidance",
225
245
  "",
226
- "- `agentplane quickstart` and `agentplane role <ROLE>` show command guidance.",
246
+ `- \`${COMMAND_SNIPPETS.core.quickstart}\` and \`${COMMAND_SNIPPETS.core.role}\` show command guidance.`,
227
247
  "",
228
248
  "## Agent cheat sheet",
229
249
  "",
@@ -244,12 +264,14 @@ export function renderQuickstart() {
244
264
  "## Global flags",
245
265
  "",
246
266
  "- `--root <path>`: treat <path> as project root",
267
+ "- `--output <text|json>`: force global CLI output mode (`json` is agent-oriented envelope mode)",
247
268
  "- `--json-errors`: emit JSON-formatted errors",
248
269
  "- `--help` / `-h`: show help",
249
270
  "- `--version`: show version",
250
271
  "- `--no-update-check`: skip checking npm for a newer CLI version",
251
272
  "",
252
273
  "Notes:",
274
+ "- `AGENTPLANE_OUTPUT=json` enables global JSON output mode for agent runtimes.",
253
275
  "- `.env` at the repo root is loaded automatically (without overwriting existing environment variables).",
254
276
  "",
255
277
  "## Commit message format",
@@ -0,0 +1,24 @@
1
+ export declare const COMMAND_SNIPPETS: {
2
+ readonly core: {
3
+ readonly taskList: "agentplane task list";
4
+ readonly taskShow: "agentplane task show <task-id>";
5
+ readonly taskNew: "agentplane task new --title \"...\" --description \"...\" --priority med --owner CODER --tag <tag>";
6
+ readonly startTask: "agentplane task start-ready <task-id> --author <ROLE> --body \"Start: ...\"";
7
+ readonly verifyTask: "agentplane verify <task-id> --ok|--rework --by <ROLE> --note \"...\"";
8
+ readonly finishTask: "agentplane finish <task-id> --author <ROLE> --body \"Verified: ...\" --commit <git-rev> --close-commit";
9
+ readonly quickstart: "agentplane quickstart";
10
+ readonly role: "agentplane role <ROLE>";
11
+ };
12
+ readonly sync: {
13
+ readonly pullConfigured: "agentplane sync --direction pull";
14
+ readonly pushConfiguredWithYes: "agentplane sync --direction push --yes";
15
+ readonly pullRedmineExplicit: "agentplane sync redmine --direction pull";
16
+ readonly pushRedmineExplicitWithYes: "agentplane sync redmine --direction push --yes";
17
+ };
18
+ readonly backendSync: {
19
+ readonly pullLocal: "agentplane backend sync local --direction pull";
20
+ readonly pullRedmine: "agentplane backend sync redmine --direction pull";
21
+ readonly pushRedmineWithYes: "agentplane backend sync redmine --direction push --yes";
22
+ };
23
+ };
24
+ //# sourceMappingURL=command-snippets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-snippets.d.ts","sourceRoot":"","sources":["../../src/cli/command-snippets.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;CAwBnB,CAAC"}
@@ -0,0 +1,23 @@
1
+ export const COMMAND_SNIPPETS = {
2
+ core: {
3
+ taskList: "agentplane task list",
4
+ taskShow: "agentplane task show <task-id>",
5
+ taskNew: 'agentplane task new --title "..." --description "..." --priority med --owner CODER --tag <tag>',
6
+ startTask: 'agentplane task start-ready <task-id> --author <ROLE> --body "Start: ..."',
7
+ verifyTask: 'agentplane verify <task-id> --ok|--rework --by <ROLE> --note "..."',
8
+ finishTask: 'agentplane finish <task-id> --author <ROLE> --body "Verified: ..." --commit <git-rev> --close-commit',
9
+ quickstart: "agentplane quickstart",
10
+ role: "agentplane role <ROLE>",
11
+ },
12
+ sync: {
13
+ pullConfigured: "agentplane sync --direction pull",
14
+ pushConfiguredWithYes: "agentplane sync --direction push --yes",
15
+ pullRedmineExplicit: "agentplane sync redmine --direction pull",
16
+ pushRedmineExplicitWithYes: "agentplane sync redmine --direction push --yes",
17
+ },
18
+ backendSync: {
19
+ pullLocal: "agentplane backend sync local --direction pull",
20
+ pullRedmine: "agentplane backend sync redmine --direction pull",
21
+ pushRedmineWithYes: "agentplane backend sync redmine --direction push --yes",
22
+ },
23
+ };
@@ -0,0 +1,9 @@
1
+ export type ReasonCodeCategory = "usage" | "reconcile" | "git" | "network" | "backend" | "validation";
2
+ export type ReasonCodeMeta = {
3
+ code: string;
4
+ category: ReasonCodeCategory;
5
+ summary: string;
6
+ action: string;
7
+ };
8
+ export declare function getReasonCodeMeta(code: string | undefined): ReasonCodeMeta | undefined;
9
+ //# sourceMappingURL=reason-codes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reason-codes.d.ts","sourceRoot":"","sources":["../../src/cli/reason-codes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,WAAW,GACX,KAAK,GACL,SAAS,GACT,SAAS,GACT,YAAY,CAAC;AAEjB,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA6EF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAGtF"}
@@ -0,0 +1,79 @@
1
+ const REASON_CODE_MAP = {
2
+ usage_help: {
3
+ code: "usage_help",
4
+ category: "usage",
5
+ summary: "command invocation is incomplete or invalid",
6
+ action: "open command help and fix required args/flags",
7
+ },
8
+ sync_backend_mismatch: {
9
+ code: "sync_backend_mismatch",
10
+ category: "backend",
11
+ summary: "sync command backend id does not match active backend",
12
+ action: "inspect config and rerun sync for matching backend",
13
+ },
14
+ reconcile_git_state_unreadable: {
15
+ code: "reconcile_git_state_unreadable",
16
+ category: "reconcile",
17
+ summary: "reconcile guard cannot read git state",
18
+ action: "run git status and fix repository visibility/permissions",
19
+ },
20
+ reconcile_task_scan_failed: {
21
+ code: "reconcile_task_scan_failed",
22
+ category: "reconcile",
23
+ summary: "reconcile guard could not complete task scan",
24
+ action: "run strict task scan and resolve parse/read errors",
25
+ },
26
+ reconcile_task_scan_incomplete: {
27
+ code: "reconcile_task_scan_incomplete",
28
+ category: "reconcile",
29
+ summary: "task scan produced skipped files/warnings",
30
+ action: "resolve scan warnings before mutating commands",
31
+ },
32
+ git_branch_state: {
33
+ code: "git_branch_state",
34
+ category: "git",
35
+ summary: "branch command cannot determine branch state",
36
+ action: "inspect branch state and repository context",
37
+ },
38
+ git_index_state: {
39
+ code: "git_index_state",
40
+ category: "git",
41
+ summary: "commit command found problematic index/worktree state",
42
+ action: "inspect staged/unstaged changes and retry",
43
+ },
44
+ git_context: {
45
+ code: "git_context",
46
+ category: "git",
47
+ summary: "command requires valid git repository context",
48
+ action: "confirm repository root and tracked changes",
49
+ },
50
+ network_gate: {
51
+ code: "network_gate",
52
+ category: "network",
53
+ summary: "network access is blocked by policy or environment",
54
+ action: "recheck approvals/connectivity and retry",
55
+ },
56
+ backend_sync_config: {
57
+ code: "backend_sync_config",
58
+ category: "backend",
59
+ summary: "sync command failed due to backend configuration",
60
+ action: "inspect backend config and active backend settings",
61
+ },
62
+ backend_config: {
63
+ code: "backend_config",
64
+ category: "backend",
65
+ summary: "backend configuration is missing or invalid",
66
+ action: "inspect backend config under .agentplane/backends",
67
+ },
68
+ validation_preflight: {
69
+ code: "validation_preflight",
70
+ category: "validation",
71
+ summary: "input/config validation failed before execution",
72
+ action: "run preflight and fix reported validation issues",
73
+ },
74
+ };
75
+ export function getReasonCodeMeta(code) {
76
+ if (!code)
77
+ return undefined;
78
+ return REASON_CODE_MAP[code];
79
+ }
@@ -6,4 +6,5 @@ export type BundledRecipeInfo = {
6
6
  export declare function listBundledRecipes(): BundledRecipeInfo[];
7
7
  export declare function renderBundledRecipesHint(): string;
8
8
  export declare function validateBundledRecipesSelection(recipes: string[]): void;
9
+ export declare function getBundledRecipeSourcePath(recipeId: string): string | null;
9
10
  //# sourceMappingURL=recipes-bundled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recipes-bundled.d.ts","sourceRoot":"","sources":["../../src/cli/recipes-bundled.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,wBAAgB,kBAAkB,IAAI,iBAAiB,EAAE,CAMxD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAMjD;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAevE"}
1
+ {"version":3,"file":"recipes-bundled.d.ts","sourceRoot":"","sources":["../../src/cli/recipes-bundled.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,wBAAgB,kBAAkB,IAAI,iBAAiB,EAAE,CAMxD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAMjD;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAevE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE1E"}
@@ -1,4 +1,4 @@
1
- import { BUNDLED_RECIPES_CATALOG } from "../recipes/bundled-recipes.js";
1
+ import { BUNDLED_RECIPES_CATALOG, resolveBundledRecipeSourcePath, } from "../recipes/bundled-recipes.js";
2
2
  import { CliError } from "../shared/errors.js";
3
3
  export function listBundledRecipes() {
4
4
  return BUNDLED_RECIPES_CATALOG.recipes.map((recipe) => ({
@@ -31,3 +31,6 @@ export function validateBundledRecipesSelection(recipes) {
31
31
  });
32
32
  }
33
33
  }
34
+ export function getBundledRecipeSourcePath(recipeId) {
35
+ return resolveBundledRecipeSourcePath(recipeId);
36
+ }
@@ -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, 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, 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;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
+ {"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;AAkHvD,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,m4CA+hBuB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { initSpec } from "./commands/init.js";
2
2
  import { agentsSpec, preflightSpec, quickstartSpec, roleSpec } from "./commands/core.js";
3
- import { configSetSpec, configShowSpec, modeGetSpec, modeSetSpec } from "./commands/config.js";
3
+ import { configSetSpec, configShowSpec, modeGetSpec, modeSetSpec, profileSetSpec, } from "./commands/config.js";
4
4
  import { ideSyncSpec } from "./commands/ide.js";
5
5
  import { taskNewSpec } from "../../commands/task/new.spec.js";
6
6
  import { taskListSpec } from "../../commands/task/list.spec.js";
@@ -62,6 +62,10 @@ import { verifySpec } from "../../commands/verify.spec.js";
62
62
  import { finishSpec } from "../../commands/finish.spec.js";
63
63
  import { readySpec } from "../../commands/ready.command.js";
64
64
  import { doctorSpec } from "../../commands/doctor.spec.js";
65
+ import { workflowSpec } from "../../commands/workflow.command.js";
66
+ import { workflowBuildSpec } from "../../commands/workflow-build.command.js";
67
+ import { workflowRestoreSpec } from "../../commands/workflow-restore.command.js";
68
+ import { workflowDebugSpec, workflowLandSpec, workflowSyncSpec, } from "../../commands/workflow-playbook.command.js";
65
69
  import { docsCliSpec } from "../../commands/docs/cli.command.js";
66
70
  import { hooksSpec } from "../../commands/hooks/hooks.command.js";
67
71
  import { hooksInstallSpec } from "../../commands/hooks/install.command.js";
@@ -150,6 +154,11 @@ export const COMMANDS = [
150
154
  needsConfig: true,
151
155
  needsTaskContext: false,
152
156
  }),
157
+ entry(profileSetSpec, (deps) => import("./commands/config.js").then((m) => m.makeRunProfileSetHandler(deps)), {
158
+ needsProject: true,
159
+ needsConfig: true,
160
+ needsTaskContext: false,
161
+ }),
153
162
  entry(ideSyncSpec, (deps) => import("./commands/ide.js").then((m) => m.makeRunIdeSyncHandler(deps)), {
154
163
  needsProject: true,
155
164
  needsConfig: true,
@@ -160,6 +169,36 @@ export const COMMANDS = [
160
169
  needsConfig: false,
161
170
  needsTaskContext: false,
162
171
  }),
172
+ entry(workflowSpec, () => import("../../commands/workflow.command.js").then((m) => m.runWorkflow), {
173
+ needsProject: false,
174
+ needsConfig: false,
175
+ needsTaskContext: false,
176
+ }),
177
+ entry(workflowBuildSpec, () => import("../../commands/workflow-build.command.js").then((m) => m.runWorkflowBuild), {
178
+ needsProject: true,
179
+ needsConfig: false,
180
+ needsTaskContext: false,
181
+ }),
182
+ entry(workflowRestoreSpec, () => import("../../commands/workflow-restore.command.js").then((m) => m.runWorkflowRestore), {
183
+ needsProject: true,
184
+ needsConfig: false,
185
+ needsTaskContext: false,
186
+ }),
187
+ entry(workflowDebugSpec, () => import("../../commands/workflow-playbook.command.js").then((m) => m.runWorkflowDebug), {
188
+ needsProject: true,
189
+ needsConfig: false,
190
+ needsTaskContext: false,
191
+ }),
192
+ entry(workflowSyncSpec, () => import("../../commands/workflow-playbook.command.js").then((m) => m.runWorkflowSync), {
193
+ needsProject: true,
194
+ needsConfig: false,
195
+ needsTaskContext: false,
196
+ }),
197
+ entry(workflowLandSpec, () => import("../../commands/workflow-playbook.command.js").then((m) => m.runWorkflowLand), {
198
+ needsProject: true,
199
+ needsConfig: false,
200
+ needsTaskContext: false,
201
+ }),
163
202
  entry(taskListSpec, (deps) => import("../../commands/task/list.run.js").then((m) => m.makeRunTaskListHandler(deps.getCtx))),
164
203
  entry(taskNextSpec, (deps) => import("../../commands/task/next.run.js").then((m) => m.makeRunTaskNextHandler(deps.getCtx))),
165
204
  entry(taskSearchSpec, (deps) => import("../../commands/task/search.run.js").then((m) => m.makeRunTaskSearchHandler(deps.getCtx))),
@@ -17,5 +17,10 @@ type ModeSetParsed = {
17
17
  };
18
18
  export declare const modeSetSpec: CommandSpec<ModeSetParsed>;
19
19
  export declare function makeRunModeSetHandler(deps: RunDeps): CommandHandler<ModeSetParsed>;
20
+ type ProfileSetParsed = {
21
+ profile: string;
22
+ };
23
+ export declare const profileSetSpec: CommandSpec<ProfileSetParsed>;
24
+ export declare function makeRunProfileSetHandler(deps: RunDeps): CommandHandler<ProfileSetParsed>;
20
25
  export {};
21
26
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/cli/run-cli/commands/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE9C,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAMxD,CAAC;AAcF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAExF;AAED,KAAK,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,eAAe,CAgBtD,CAAC;AA6BF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,CAStF;AAED,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,aAAa,CAMlD,CAAC;AAcF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAElF;AAED,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,aAAa,CAgBlD,CAAC;AA0BF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAQlF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/cli/run-cli/commands/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE9C,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAMxD,CAAC;AAcF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAExF;AAED,KAAK,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,eAAe,CAgBtD,CAAC;AA6BF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,CAStF;AAED,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,aAAa,CAMlD,CAAC;AAcF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAElF;AAED,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,aAAa,CAgBlD,CAAC;AA0BF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAQlF;AAED,KAAK,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AA4C5C,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAoBxD,CAAC;AAmCF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAQxF"}