agentplane 0.3.4 → 0.3.6

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 (217) hide show
  1. package/README.md +103 -75
  2. package/assets/AGENTS.md +4 -2
  3. package/bin/dist-guard.js +13 -3
  4. package/bin/runtime-watch.d.ts +1 -0
  5. package/bin/runtime-watch.js +22 -5
  6. package/bin/stale-dist-policy.js +9 -2
  7. package/dist/.build-manifest.json +220 -790
  8. package/dist/adapters/task-backend/task-backend-adapter.d.ts +1 -1
  9. package/dist/adapters/task-backend/task-backend-adapter.d.ts.map +1 -1
  10. package/dist/adapters/task-backend/task-backend-adapter.js +5 -2
  11. package/dist/backends/task-backend/local-backend.d.ts +13 -0
  12. package/dist/backends/task-backend/local-backend.d.ts.map +1 -1
  13. package/dist/backends/task-backend/local-backend.js +17 -0
  14. package/dist/backends/task-backend/redmine-backend.d.ts +18 -0
  15. package/dist/backends/task-backend/redmine-backend.d.ts.map +1 -1
  16. package/dist/backends/task-backend/redmine-backend.js +35 -25
  17. package/dist/backends/task-backend/shared/types.d.ts +20 -0
  18. package/dist/backends/task-backend/shared/types.d.ts.map +1 -1
  19. package/dist/backends/task-backend/shared.d.ts +1 -1
  20. package/dist/backends/task-backend/shared.d.ts.map +1 -1
  21. package/dist/backends/task-backend.d.ts +1 -1
  22. package/dist/backends/task-backend.d.ts.map +1 -1
  23. package/dist/backends/task-backend.test-helpers.d.ts +4 -0
  24. package/dist/backends/task-backend.test-helpers.d.ts.map +1 -0
  25. package/dist/backends/task-backend.test-helpers.js +33 -0
  26. package/dist/cli/bootstrap-guide.d.ts.map +1 -1
  27. package/dist/cli/bootstrap-guide.js +1 -0
  28. package/dist/cli/command-guide.d.ts.map +1 -1
  29. package/dist/cli/command-guide.js +3 -2
  30. package/dist/cli/reason-codes.d.ts.map +1 -1
  31. package/dist/cli/reason-codes.js +30 -0
  32. package/dist/cli/run-cli/command-catalog/core.d.ts +3 -0
  33. package/dist/cli/run-cli/command-catalog/core.d.ts.map +1 -0
  34. package/dist/cli/run-cli/command-catalog/core.js +137 -0
  35. package/dist/cli/run-cli/command-catalog/lifecycle.d.ts +3 -0
  36. package/dist/cli/run-cli/command-catalog/lifecycle.d.ts.map +1 -0
  37. package/dist/cli/run-cli/command-catalog/lifecycle.js +52 -0
  38. package/dist/cli/run-cli/command-catalog/project.d.ts +3 -0
  39. package/dist/cli/run-cli/command-catalog/project.d.ts.map +1 -0
  40. package/dist/cli/run-cli/command-catalog/project.js +78 -0
  41. package/dist/cli/run-cli/command-catalog/shared.d.ts +19 -0
  42. package/dist/cli/run-cli/command-catalog/shared.d.ts.map +1 -0
  43. package/dist/cli/run-cli/command-catalog/shared.js +9 -0
  44. package/dist/cli/run-cli/command-catalog/task.d.ts +3 -0
  45. package/dist/cli/run-cli/command-catalog/task.d.ts.map +1 -0
  46. package/dist/cli/run-cli/command-catalog/task.js +85 -0
  47. package/dist/cli/run-cli/command-catalog.d.ts +3 -18
  48. package/dist/cli/run-cli/command-catalog.d.ts.map +1 -1
  49. package/dist/cli/run-cli/command-catalog.js +8 -337
  50. package/dist/cli/run-cli/commands/ide.d.ts.map +1 -1
  51. package/dist/cli/run-cli/commands/ide.js +64 -2
  52. package/dist/cli/run-cli/commands/init/ui.d.ts.map +1 -1
  53. package/dist/cli/run-cli/commands/init/ui.js +33 -13
  54. package/dist/cli/run-cli.core.pr-flow.test-helpers.d.ts +3 -0
  55. package/dist/cli/run-cli.core.pr-flow.test-helpers.d.ts.map +1 -0
  56. package/dist/cli/run-cli.core.pr-flow.test-helpers.js +41 -0
  57. package/dist/cli/run-cli.core.tasks.test-helpers.d.ts +2 -0
  58. package/dist/cli/run-cli.core.tasks.test-helpers.d.ts.map +1 -0
  59. package/dist/cli/run-cli.core.tasks.test-helpers.js +6 -0
  60. package/dist/cli/run-cli.test-helpers.d.ts +3 -0
  61. package/dist/cli/run-cli.test-helpers.d.ts.map +1 -1
  62. package/dist/cli/run-cli.test-helpers.js +138 -6
  63. package/dist/commands/commit.spec.d.ts.map +1 -1
  64. package/dist/commands/commit.spec.js +2 -2
  65. package/dist/commands/doctor/runtime.d.ts.map +1 -1
  66. package/dist/commands/doctor/runtime.js +3 -6
  67. package/dist/commands/doctor/workspace.d.ts +4 -1
  68. package/dist/commands/doctor/workspace.d.ts.map +1 -1
  69. package/dist/commands/doctor/workspace.js +87 -4
  70. package/dist/commands/doctor.run.d.ts.map +1 -1
  71. package/dist/commands/doctor.run.js +8 -1
  72. package/dist/commands/guard/commit.command.js +1 -1
  73. package/dist/commands/guard/impl/allow.d.ts +5 -0
  74. package/dist/commands/guard/impl/allow.d.ts.map +1 -1
  75. package/dist/commands/guard/impl/allow.js +15 -10
  76. package/dist/commands/guard/impl/commands.d.ts.map +1 -1
  77. package/dist/commands/guard/impl/commands.js +137 -18
  78. package/dist/commands/guard/impl/comment-commit.d.ts.map +1 -1
  79. package/dist/commands/guard/impl/comment-commit.js +2 -0
  80. package/dist/commands/hooks/index.d.ts.map +1 -1
  81. package/dist/commands/hooks/index.js +8 -35
  82. package/dist/commands/recipes/impl/apply.d.ts +4 -0
  83. package/dist/commands/recipes/impl/apply.d.ts.map +1 -1
  84. package/dist/commands/recipes/impl/apply.js +34 -0
  85. package/dist/commands/recipes/impl/commands/explain.d.ts.map +1 -1
  86. package/dist/commands/recipes/impl/commands/explain.js +70 -11
  87. package/dist/commands/recipes/impl/commands/info.d.ts.map +1 -1
  88. package/dist/commands/recipes/impl/commands/info.js +24 -12
  89. package/dist/commands/recipes/impl/commands/install.d.ts.map +1 -1
  90. package/dist/commands/recipes/impl/commands/install.js +32 -36
  91. package/dist/commands/recipes/impl/commands/list.d.ts.map +1 -1
  92. package/dist/commands/recipes/impl/commands/list.js +7 -4
  93. package/dist/commands/recipes/impl/commands/remove.d.ts.map +1 -1
  94. package/dist/commands/recipes/impl/commands/remove.js +9 -11
  95. package/dist/commands/recipes/impl/constants.d.ts +2 -0
  96. package/dist/commands/recipes/impl/constants.d.ts.map +1 -1
  97. package/dist/commands/recipes/impl/constants.js +2 -0
  98. package/dist/commands/recipes/impl/manifest.d.ts.map +1 -1
  99. package/dist/commands/recipes/impl/manifest.js +219 -23
  100. package/dist/commands/recipes/impl/normalize.d.ts +3 -0
  101. package/dist/commands/recipes/impl/normalize.d.ts.map +1 -1
  102. package/dist/commands/recipes/impl/normalize.js +28 -24
  103. package/dist/commands/recipes/impl/paths.d.ts +9 -0
  104. package/dist/commands/recipes/impl/paths.d.ts.map +1 -1
  105. package/dist/commands/recipes/impl/paths.js +10 -1
  106. package/dist/commands/recipes/impl/project-installed-recipes.d.ts +7 -0
  107. package/dist/commands/recipes/impl/project-installed-recipes.d.ts.map +1 -0
  108. package/dist/commands/recipes/impl/project-installed-recipes.js +102 -0
  109. package/dist/commands/recipes/impl/resolver.d.ts +20 -0
  110. package/dist/commands/recipes/impl/resolver.d.ts.map +1 -0
  111. package/dist/commands/recipes/impl/resolver.js +220 -0
  112. package/dist/commands/recipes/impl/scenario.d.ts.map +1 -1
  113. package/dist/commands/recipes/impl/scenario.js +40 -11
  114. package/dist/commands/recipes/impl/types.d.ts +145 -16
  115. package/dist/commands/recipes/impl/types.d.ts.map +1 -1
  116. package/dist/commands/recipes/install.spec.d.ts.map +1 -1
  117. package/dist/commands/recipes/install.spec.js +3 -2
  118. package/dist/commands/recipes.d.ts +6 -4
  119. package/dist/commands/recipes.d.ts.map +1 -1
  120. package/dist/commands/recipes.js +5 -3
  121. package/dist/commands/recipes.test-helpers.d.ts +185 -0
  122. package/dist/commands/recipes.test-helpers.d.ts.map +1 -0
  123. package/dist/commands/recipes.test-helpers.js +339 -0
  124. package/dist/commands/scenario/impl/commands.d.ts.map +1 -1
  125. package/dist/commands/scenario/impl/commands.js +192 -336
  126. package/dist/commands/scenario/info.command.d.ts.map +1 -1
  127. package/dist/commands/scenario/info.command.js +7 -2
  128. package/dist/commands/scenario/list.command.js +2 -2
  129. package/dist/commands/scenario/run.command.d.ts.map +1 -1
  130. package/dist/commands/scenario/run.command.js +7 -2
  131. package/dist/commands/shared/git-context.d.ts +1 -0
  132. package/dist/commands/shared/git-context.d.ts.map +1 -1
  133. package/dist/commands/shared/git-context.js +4 -0
  134. package/dist/commands/shared/reconcile-check.d.ts.map +1 -1
  135. package/dist/commands/shared/reconcile-check.js +77 -2
  136. package/dist/commands/shared/task-backend.d.ts +5 -0
  137. package/dist/commands/shared/task-backend.d.ts.map +1 -1
  138. package/dist/commands/shared/task-backend.js +24 -0
  139. package/dist/commands/shared/task-store.d.ts +32 -1
  140. package/dist/commands/shared/task-store.d.ts.map +1 -1
  141. package/dist/commands/shared/task-store.js +166 -42
  142. package/dist/commands/task/block.d.ts.map +1 -1
  143. package/dist/commands/task/block.js +46 -29
  144. package/dist/commands/task/close-duplicate.d.ts.map +1 -1
  145. package/dist/commands/task/close-duplicate.js +12 -37
  146. package/dist/commands/task/close-noop.d.ts.map +1 -1
  147. package/dist/commands/task/close-noop.js +12 -30
  148. package/dist/commands/task/close-shared.d.ts +14 -0
  149. package/dist/commands/task/close-shared.d.ts.map +1 -0
  150. package/dist/commands/task/close-shared.js +76 -0
  151. package/dist/commands/task/comment.d.ts.map +1 -1
  152. package/dist/commands/task/comment.js +35 -17
  153. package/dist/commands/task/doc-set.command.d.ts +2 -1
  154. package/dist/commands/task/doc-set.command.d.ts.map +1 -1
  155. package/dist/commands/task/doc-set.command.js +36 -4
  156. package/dist/commands/task/doc-template.d.ts.map +1 -1
  157. package/dist/commands/task/doc-template.js +2 -7
  158. package/dist/commands/task/doc.command.js +1 -1
  159. package/dist/commands/task/doc.d.ts +2 -1
  160. package/dist/commands/task/doc.d.ts.map +1 -1
  161. package/dist/commands/task/doc.js +123 -71
  162. package/dist/commands/task/export.d.ts.map +1 -1
  163. package/dist/commands/task/export.js +4 -4
  164. package/dist/commands/task/finish.d.ts.map +1 -1
  165. package/dist/commands/task/finish.js +141 -78
  166. package/dist/commands/task/migrate-doc.d.ts.map +1 -1
  167. package/dist/commands/task/migrate-doc.js +15 -11
  168. package/dist/commands/task/plan-set.command.js +1 -1
  169. package/dist/commands/task/plan.command.d.ts +8 -0
  170. package/dist/commands/task/plan.command.d.ts.map +1 -0
  171. package/dist/commands/task/plan.command.js +37 -0
  172. package/dist/commands/task/plan.d.ts.map +1 -1
  173. package/dist/commands/task/plan.js +190 -93
  174. package/dist/commands/task/set-status.command.d.ts.map +1 -1
  175. package/dist/commands/task/set-status.command.js +1 -1
  176. package/dist/commands/task/set-status.d.ts.map +1 -1
  177. package/dist/commands/task/set-status.js +40 -3
  178. package/dist/commands/task/shared/docs.d.ts +1 -0
  179. package/dist/commands/task/shared/docs.d.ts.map +1 -1
  180. package/dist/commands/task/shared/docs.js +7 -0
  181. package/dist/commands/task/shared/transitions.d.ts +0 -2
  182. package/dist/commands/task/shared/transitions.d.ts.map +1 -1
  183. package/dist/commands/task/shared/transitions.js +0 -6
  184. package/dist/commands/task/shared.d.ts +2 -2
  185. package/dist/commands/task/shared.d.ts.map +1 -1
  186. package/dist/commands/task/shared.js +2 -2
  187. package/dist/commands/task/start.d.ts.map +1 -1
  188. package/dist/commands/task/start.js +88 -63
  189. package/dist/commands/task/task.command.d.ts +8 -0
  190. package/dist/commands/task/task.command.d.ts.map +1 -0
  191. package/dist/commands/task/task.command.js +71 -0
  192. package/dist/commands/task/verify-command-shared.d.ts +16 -0
  193. package/dist/commands/task/verify-command-shared.d.ts.map +1 -0
  194. package/dist/commands/task/verify-command-shared.js +53 -0
  195. package/dist/commands/task/verify-ok.command.d.ts +2 -6
  196. package/dist/commands/task/verify-ok.command.d.ts.map +1 -1
  197. package/dist/commands/task/verify-ok.command.js +8 -50
  198. package/dist/commands/task/verify-record.d.ts.map +1 -1
  199. package/dist/commands/task/verify-record.js +119 -140
  200. package/dist/commands/task/verify-rework.command.d.ts +2 -6
  201. package/dist/commands/task/verify-rework.command.d.ts.map +1 -1
  202. package/dist/commands/task/verify-rework.command.js +8 -50
  203. package/dist/commands/verify.spec.d.ts.map +1 -1
  204. package/dist/commands/verify.spec.js +3 -12
  205. package/dist/policy/rules/allowlist.d.ts.map +1 -1
  206. package/dist/policy/rules/allowlist.js +13 -4
  207. package/dist/policy/rules/protected-paths.d.ts.map +1 -1
  208. package/dist/policy/rules/protected-paths.js +6 -1
  209. package/dist/ports/task-backend-port.d.ts +1 -1
  210. package/dist/ports/task-backend-port.d.ts.map +1 -1
  211. package/dist/shared/agent-emoji.d.ts.map +1 -1
  212. package/dist/shared/protected-paths.d.ts +7 -0
  213. package/dist/shared/protected-paths.d.ts.map +1 -1
  214. package/dist/shared/protected-paths.js +26 -10
  215. package/dist/shared/repo-cli-version.d.ts.map +1 -1
  216. package/dist/shared/repo-cli-version.js +9 -3
  217. package/package.json +2 -2
@@ -1,339 +1,10 @@
1
- import { initSpec } from "./commands/init.js";
2
- import { agentsSpec, preflightSpec, quickstartSpec, roleSpec } from "./commands/core.js";
3
- import { configSetSpec, configShowSpec, modeGetSpec, modeSetSpec, profileSetSpec, } from "./commands/config.js";
4
- import { ideSyncSpec } from "./commands/ide.js";
5
- import { taskNewSpec } from "../../commands/task/new.spec.js";
6
- import { taskListSpec } from "../../commands/task/list.spec.js";
7
- import { taskNextSpec } from "../../commands/task/next.spec.js";
8
- import { taskSearchSpec } from "../../commands/task/search.spec.js";
9
- import { taskShowSpec } from "../../commands/task/show.spec.js";
10
- import { taskAddSpec } from "../../commands/task/add.command.js";
11
- import { taskUpdateSpec } from "../../commands/task/update.command.js";
12
- import { taskCommentSpec } from "../../commands/task/comment.command.js";
13
- import { taskSetStatusSpec } from "../../commands/task/set-status.command.js";
14
- import { taskDocSpec } from "../../commands/task/doc.command.js";
15
- import { taskDocShowSpec } from "../../commands/task/doc-show.command.js";
16
- import { taskDocSetSpec } from "../../commands/task/doc-set.command.js";
17
- import { taskScrubSpec } from "../../commands/task/scrub.command.js";
18
- import { taskScaffoldSpec } from "../../commands/task/scaffold.command.js";
19
- import { taskNormalizeSpec } from "../../commands/task/normalize.command.js";
20
- import { taskExportSpec } from "../../commands/task/export.command.js";
21
- import { taskLintSpec } from "../../commands/task/lint.command.js";
22
- import { taskMigrateSpec } from "../../commands/task/migrate.command.js";
23
- import { taskMigrateDocSpec } from "../../commands/task/migrate-doc.command.js";
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";
28
- import { taskPlanSetSpec } from "../../commands/task/plan-set.command.js";
29
- import { taskPlanApproveSpec } from "../../commands/task/plan-approve.command.js";
30
- import { taskPlanRejectSpec } from "../../commands/task/plan-reject.command.js";
31
- import { taskVerifySpec } from "../../commands/task/verify.command.js";
32
- import { taskVerifyOkSpec } from "../../commands/task/verify-ok.command.js";
33
- import { taskVerifyReworkSpec } from "../../commands/task/verify-rework.command.js";
34
- import { taskVerifyShowSpec } from "../../commands/task/verify-show.command.js";
35
- import { taskRebuildIndexSpec } from "../../commands/task/rebuild-index.command.js";
36
- import { workStartSpec } from "../../commands/branch/work-start.command.js";
37
- import { branchBaseClearSpec, branchBaseExplainSpec, branchBaseGetSpec, branchBaseSetSpec, branchBaseSpec, } from "../../commands/branch/base.command.js";
38
- import { branchStatusSpec } from "../../commands/branch/status.command.js";
39
- import { branchRemoveSpec } from "../../commands/branch/remove.command.js";
40
- import { recipesInstallSpec } from "../../commands/recipes/install.spec.js";
41
- import { recipesListSpec } from "../../commands/recipes/list.command.js";
42
- import { recipesListRemoteSpec } from "../../commands/recipes/list-remote.command.js";
43
- import { recipesInfoSpec } from "../../commands/recipes/info.command.js";
44
- import { recipesExplainSpec } from "../../commands/recipes/explain.command.js";
45
- import { recipesRemoveSpec } from "../../commands/recipes/remove.command.js";
46
- import { recipesCachePruneSpec } from "../../commands/recipes/cache-prune.command.js";
47
- import { recipesSpec } from "../../commands/recipes/recipes.command.js";
48
- import { recipesCacheSpec } from "../../commands/recipes/cache.command.js";
49
- import { upgradeSpec } from "../../commands/upgrade.command.js";
50
- import { backendSpec, backendSyncSpec } from "../../commands/backend/sync.command.js";
51
- import { syncSpec } from "../../commands/sync.command.js";
52
- import { scenarioListSpec } from "../../commands/scenario/list.command.js";
53
- import { scenarioInfoSpec } from "../../commands/scenario/info.command.js";
54
- import { scenarioRunSpec } from "../../commands/scenario/run.command.js";
55
- import { scenarioSpec } from "../../commands/scenario/scenario.command.js";
56
- import { prCheckSpec, prNoteSpec, prOpenSpec, prSpec, prUpdateSpec, } from "../../commands/pr/pr.command.js";
57
- import { integrateSpec } from "../../commands/integrate.command.js";
58
- import { commitSpec } from "../../commands/commit.spec.js";
59
- import { startSpec } from "../../commands/start.spec.js";
60
- import { blockSpec } from "../../commands/block.spec.js";
61
- import { verifySpec } from "../../commands/verify.spec.js";
62
- import { finishSpec } from "../../commands/finish.spec.js";
63
- import { readySpec } from "../../commands/ready.command.js";
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";
69
- import { docsCliSpec } from "../../commands/docs/cli.command.js";
70
- import { runtimeExplainSpec, runtimeSpec } from "../../commands/runtime.command.js";
71
- import { hooksSpec } from "../../commands/hooks/hooks.command.js";
72
- import { hooksInstallSpec } from "../../commands/hooks/install.command.js";
73
- import { hooksUninstallSpec } from "../../commands/hooks/uninstall.command.js";
74
- import { hooksRunSpec } from "../../commands/hooks/run.command.js";
75
- import { cleanupMergedSpec, cleanupSpec } from "../../commands/cleanup/merged.command.js";
76
- import { guardSpec } from "../../commands/guard/guard.command.js";
77
- import { guardCleanSpec } from "../../commands/guard/clean.command.js";
78
- import { guardSuggestAllowSpec } from "../../commands/guard/suggest-allow.command.js";
79
- import { guardCommitSpec } from "../../commands/guard/commit.command.js";
80
- import { releaseSpec } from "../../commands/release/release.command.js";
81
- import { releasePlanSpec } from "../../commands/release/plan.command.js";
82
- import { releaseApplySpec } from "../../commands/release/apply.command.js";
83
- function entry(spec, load, meta) {
84
- return {
85
- spec: spec,
86
- load: (deps) => load(deps),
87
- needsProject: meta?.needsProject ?? true,
88
- needsConfig: meta?.needsConfig ?? meta?.needsProject ?? true,
89
- needsTaskContext: meta?.needsTaskContext ?? true,
90
- };
91
- }
1
+ import { CORE_COMMANDS } from "./command-catalog/core.js";
2
+ import { LIFECYCLE_COMMANDS } from "./command-catalog/lifecycle.js";
3
+ import { PROJECT_COMMANDS } from "./command-catalog/project.js";
4
+ import { TASK_COMMANDS } from "./command-catalog/task.js";
92
5
  export const COMMANDS = [
93
- entry(initSpec, () => import("./commands/init.js").then((m) => m.runInit), {
94
- needsProject: false,
95
- needsConfig: false,
96
- needsTaskContext: false,
97
- }),
98
- entry(upgradeSpec, () => import("../../commands/upgrade.command.js").then((m) => m.runUpgrade), {
99
- needsProject: false,
100
- needsConfig: false,
101
- needsTaskContext: false,
102
- }),
103
- entry(releaseSpec, () => import("../../commands/release/release.command.js").then((m) => m.runRelease), {
104
- needsProject: false,
105
- needsConfig: false,
106
- needsTaskContext: false,
107
- }),
108
- entry(releasePlanSpec, () => import("../../commands/release/plan.command.js").then((m) => m.runReleasePlan), {
109
- needsProject: true,
110
- needsConfig: false,
111
- needsTaskContext: false,
112
- }),
113
- entry(releaseApplySpec, () => import("../../commands/release/apply.command.js").then((m) => m.runReleaseApply), {
114
- needsProject: true,
115
- needsConfig: false,
116
- needsTaskContext: false,
117
- }),
118
- entry(quickstartSpec, () => import("./commands/core.js").then((m) => m.runQuickstart), {
119
- needsProject: false,
120
- needsConfig: false,
121
- needsTaskContext: false,
122
- }),
123
- entry(preflightSpec, () => import("./commands/core.js").then((m) => m.runPreflight), {
124
- needsProject: false,
125
- needsConfig: false,
126
- needsTaskContext: false,
127
- }),
128
- entry(runtimeSpec, () => import("../../commands/runtime.command.js").then((m) => m.runRuntime), {
129
- needsProject: false,
130
- needsConfig: false,
131
- needsTaskContext: false,
132
- }),
133
- entry(runtimeExplainSpec, () => import("../../commands/runtime.command.js").then((m) => m.runRuntimeExplain), {
134
- needsProject: false,
135
- needsConfig: false,
136
- needsTaskContext: false,
137
- }),
138
- entry(roleSpec, () => import("./commands/core.js").then((m) => m.runRole), {
139
- needsProject: false,
140
- needsConfig: false,
141
- needsTaskContext: false,
142
- }),
143
- entry(agentsSpec, (deps) => import("./commands/core.js").then((m) => m.makeRunAgentsHandler(deps)), {
144
- needsProject: true,
145
- needsConfig: false,
146
- needsTaskContext: false,
147
- }),
148
- entry(configShowSpec, (deps) => import("./commands/config.js").then((m) => m.makeRunConfigShowHandler(deps)), {
149
- needsProject: true,
150
- needsConfig: true,
151
- needsTaskContext: false,
152
- }),
153
- entry(configSetSpec, (deps) => import("./commands/config.js").then((m) => m.makeRunConfigSetHandler(deps)), {
154
- needsProject: true,
155
- needsConfig: true,
156
- needsTaskContext: false,
157
- }),
158
- entry(modeGetSpec, (deps) => import("./commands/config.js").then((m) => m.makeRunModeGetHandler(deps)), {
159
- needsProject: true,
160
- needsConfig: true,
161
- needsTaskContext: false,
162
- }),
163
- entry(modeSetSpec, (deps) => import("./commands/config.js").then((m) => m.makeRunModeSetHandler(deps)), {
164
- needsProject: true,
165
- needsConfig: true,
166
- needsTaskContext: false,
167
- }),
168
- entry(profileSetSpec, (deps) => import("./commands/config.js").then((m) => m.makeRunProfileSetHandler(deps)), {
169
- needsProject: true,
170
- needsConfig: true,
171
- needsTaskContext: false,
172
- }),
173
- entry(ideSyncSpec, (deps) => import("./commands/ide.js").then((m) => m.makeRunIdeSyncHandler(deps)), {
174
- needsProject: true,
175
- needsConfig: true,
176
- needsTaskContext: false,
177
- }),
178
- entry(doctorSpec, () => import("../../commands/doctor.run.js").then((m) => m.runDoctor), {
179
- needsProject: true,
180
- needsConfig: false,
181
- needsTaskContext: false,
182
- }),
183
- entry(workflowSpec, () => import("../../commands/workflow.command.js").then((m) => m.runWorkflow), {
184
- needsProject: false,
185
- needsConfig: false,
186
- needsTaskContext: false,
187
- }),
188
- entry(workflowBuildSpec, () => import("../../commands/workflow-build.command.js").then((m) => m.runWorkflowBuild), {
189
- needsProject: true,
190
- needsConfig: false,
191
- needsTaskContext: false,
192
- }),
193
- entry(workflowRestoreSpec, () => import("../../commands/workflow-restore.command.js").then((m) => m.runWorkflowRestore), {
194
- needsProject: true,
195
- needsConfig: false,
196
- needsTaskContext: false,
197
- }),
198
- entry(workflowDebugSpec, () => import("../../commands/workflow-playbook.command.js").then((m) => m.runWorkflowDebug), {
199
- needsProject: true,
200
- needsConfig: false,
201
- needsTaskContext: false,
202
- }),
203
- entry(workflowSyncSpec, () => import("../../commands/workflow-playbook.command.js").then((m) => m.runWorkflowSync), {
204
- needsProject: true,
205
- needsConfig: false,
206
- needsTaskContext: false,
207
- }),
208
- entry(workflowLandSpec, () => import("../../commands/workflow-playbook.command.js").then((m) => m.runWorkflowLand), {
209
- needsProject: true,
210
- needsConfig: false,
211
- needsTaskContext: false,
212
- }),
213
- entry(taskListSpec, (deps) => import("../../commands/task/list.run.js").then((m) => m.makeRunTaskListHandler(deps.getCtx))),
214
- entry(taskNextSpec, (deps) => import("../../commands/task/next.run.js").then((m) => m.makeRunTaskNextHandler(deps.getCtx))),
215
- entry(taskSearchSpec, (deps) => import("../../commands/task/search.run.js").then((m) => m.makeRunTaskSearchHandler(deps.getCtx))),
216
- entry(taskShowSpec, (deps) => import("../../commands/task/show.run.js").then((m) => m.makeRunTaskShowHandler(deps.getCtx))),
217
- entry(taskNewSpec, (deps) => import("../../commands/task/new.command.js").then((m) => m.makeRunTaskNewHandler(deps.getCtx))),
218
- entry(taskDeriveSpec, (deps) => import("../../commands/task/derive.command.js").then((m) => m.makeRunTaskDeriveHandler(deps.getCtx))),
219
- entry(taskCloseDuplicateSpec, (deps) => import("../../commands/task/close-duplicate.command.js").then((m) => m.makeRunTaskCloseDuplicateHandler(deps.getCtx))),
220
- entry(taskStartReadySpec, (deps) => import("../../commands/task/start-ready.command.js").then((m) => m.makeRunTaskStartReadyHandler(deps.getCtx))),
221
- entry(taskCloseNoopSpec, (deps) => import("../../commands/task/close-noop.command.js").then((m) => m.makeRunTaskCloseNoopHandler(deps.getCtx))),
222
- entry(taskAddSpec, (deps) => import("../../commands/task/add.command.js").then((m) => m.makeRunTaskAddHandler(deps.getCtx))),
223
- entry(taskUpdateSpec, (deps) => import("../../commands/task/update.command.js").then((m) => m.makeRunTaskUpdateHandler(deps.getCtx))),
224
- entry(taskCommentSpec, (deps) => import("../../commands/task/comment.command.js").then((m) => m.makeRunTaskCommentHandler(deps.getCtx))),
225
- entry(taskSetStatusSpec, (deps) => import("../../commands/task/set-status.command.js").then((m) => m.makeRunTaskSetStatusHandler(deps.getCtx))),
226
- entry(taskDocSpec, () => import("../../commands/task/doc.command.js").then((m) => m.runTaskDoc), {
227
- needsProject: false,
228
- needsConfig: false,
229
- needsTaskContext: false,
230
- }),
231
- entry(taskDocShowSpec, (deps) => import("../../commands/task/doc-show.command.js").then((m) => m.makeRunTaskDocShowHandler(deps.getCtx))),
232
- entry(taskDocSetSpec, (deps) => import("../../commands/task/doc-set.command.js").then((m) => m.makeRunTaskDocSetHandler(deps.getCtx))),
233
- entry(taskScrubSpec, (deps) => import("../../commands/task/scrub.command.js").then((m) => m.makeRunTaskScrubHandler(deps.getCtx))),
234
- entry(taskScaffoldSpec, (deps) => import("../../commands/task/scaffold.command.js").then((m) => m.makeRunTaskScaffoldHandler(deps.getCtx))),
235
- entry(taskNormalizeSpec, (deps) => import("../../commands/task/normalize.command.js").then((m) => m.makeRunTaskNormalizeHandler(deps.getCtx))),
236
- entry(taskExportSpec, (deps) => import("../../commands/task/export.command.js").then((m) => m.makeRunTaskExportHandler(deps.getCtx))),
237
- entry(taskLintSpec, () => import("../../commands/task/lint.command.js").then((m) => m.runTaskLint)),
238
- entry(taskMigrateSpec, (deps) => import("../../commands/task/migrate.command.js").then((m) => m.makeRunTaskMigrateHandler(deps.getCtx))),
239
- entry(taskMigrateDocSpec, () => import("../../commands/task/migrate-doc.command.js").then((m) => m.runTaskMigrateDoc)),
240
- entry(taskPlanSetSpec, (deps) => import("../../commands/task/plan-set.command.js").then((m) => m.makeRunTaskPlanSetHandler(deps.getCtx))),
241
- entry(taskPlanApproveSpec, (deps) => import("../../commands/task/plan-approve.command.js").then((m) => m.makeRunTaskPlanApproveHandler(deps.getCtx))),
242
- entry(taskPlanRejectSpec, (deps) => import("../../commands/task/plan-reject.command.js").then((m) => m.makeRunTaskPlanRejectHandler(deps.getCtx))),
243
- entry(taskVerifySpec, () => import("../../commands/task/verify.command.js").then((m) => m.runTaskVerify), {
244
- needsProject: false,
245
- needsConfig: false,
246
- needsTaskContext: false,
247
- }),
248
- entry(taskVerifyOkSpec, (deps) => import("../../commands/task/verify-ok.command.js").then((m) => m.makeRunTaskVerifyOkHandler(deps.getCtx))),
249
- entry(taskVerifyReworkSpec, (deps) => import("../../commands/task/verify-rework.command.js").then((m) => m.makeRunTaskVerifyReworkHandler(deps.getCtx))),
250
- entry(taskVerifyShowSpec, (deps) => import("../../commands/task/verify-show.command.js").then((m) => m.makeRunTaskVerifyShowHandler(deps.getCtx))),
251
- entry(taskRebuildIndexSpec, (deps) => import("../../commands/task/rebuild-index.command.js").then((m) => m.makeRunTaskRebuildIndexHandler(deps.getCtx))),
252
- entry(workStartSpec, (deps) => import("../../commands/branch/work-start.command.js").then((m) => m.makeRunWorkStartHandler(deps.getCtx))),
253
- entry(recipesSpec, () => import("../../commands/recipes/recipes.command.js").then((m) => m.runRecipes), {
254
- needsProject: false,
255
- needsConfig: false,
256
- needsTaskContext: false,
257
- }),
258
- entry(recipesCacheSpec, () => import("../../commands/recipes/cache.command.js").then((m) => m.runRecipesCache), {
259
- needsProject: false,
260
- needsConfig: false,
261
- needsTaskContext: false,
262
- }),
263
- entry(recipesListSpec, () => import("../../commands/recipes/list.command.js").then((m) => m.runRecipesList)),
264
- entry(recipesListRemoteSpec, () => import("../../commands/recipes/list-remote.command.js").then((m) => m.runRecipesListRemote)),
265
- entry(recipesInfoSpec, () => import("../../commands/recipes/info.command.js").then((m) => m.runRecipesInfo)),
266
- entry(recipesExplainSpec, () => import("../../commands/recipes/explain.command.js").then((m) => m.runRecipesExplain)),
267
- entry(recipesRemoveSpec, () => import("../../commands/recipes/remove.command.js").then((m) => m.runRecipesRemove)),
268
- entry(recipesCachePruneSpec, () => import("../../commands/recipes/cache-prune.command.js").then((m) => m.runRecipesCachePrune)),
269
- entry(recipesInstallSpec, () => import("../../commands/recipes/install.run.js").then((m) => m.runRecipesInstall)),
270
- entry(scenarioSpec, () => import("../../commands/scenario/scenario.command.js").then((m) => m.runScenario), {
271
- needsProject: false,
272
- needsConfig: false,
273
- needsTaskContext: false,
274
- }),
275
- entry(scenarioListSpec, () => import("../../commands/scenario/list.command.js").then((m) => m.runScenarioList)),
276
- entry(scenarioInfoSpec, () => import("../../commands/scenario/info.command.js").then((m) => m.runScenarioInfo)),
277
- entry(scenarioRunSpec, () => import("../../commands/scenario/run.command.js").then((m) => m.runScenarioRun)),
278
- entry(branchBaseSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBase), {
279
- needsProject: false,
280
- needsConfig: false,
281
- needsTaskContext: false,
282
- }),
283
- entry(branchBaseGetSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBaseGet)),
284
- entry(branchBaseSetSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBaseSet)),
285
- entry(branchBaseClearSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBaseClear)),
286
- entry(branchBaseExplainSpec, () => import("../../commands/branch/base.command.js").then((m) => m.runBranchBaseExplain)),
287
- entry(branchStatusSpec, () => import("../../commands/branch/status.command.js").then((m) => m.runBranchStatus)),
288
- entry(branchRemoveSpec, () => import("../../commands/branch/remove.command.js").then((m) => m.runBranchRemove)),
289
- entry(backendSpec, (deps) => import("../../commands/backend/sync.command.js").then((m) => m.makeRunBackendHandler(deps.getCtx)), {
290
- needsProject: false,
291
- needsConfig: false,
292
- needsTaskContext: false,
293
- }),
294
- entry(backendSyncSpec, (deps) => import("../../commands/backend/sync.command.js").then((m) => m.makeRunBackendSyncHandler(deps.getCtx))),
295
- entry(syncSpec, (deps) => import("../../commands/sync.command.js").then((m) => m.makeRunSyncHandler(deps.getCtx))),
296
- entry(prSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrHandler(deps.getCtx)), {
297
- needsProject: false,
298
- needsConfig: false,
299
- needsTaskContext: false,
300
- }),
301
- entry(prOpenSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrOpenHandler(deps.getCtx))),
302
- entry(prUpdateSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrUpdateHandler(deps.getCtx))),
303
- entry(prCheckSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrCheckHandler(deps.getCtx))),
304
- entry(prNoteSpec, (deps) => import("../../commands/pr/pr.command.js").then((m) => m.makeRunPrNoteHandler(deps.getCtx))),
305
- entry(integrateSpec, (deps) => import("../../commands/integrate.command.js").then((m) => m.makeRunIntegrateHandler(deps.getCtx))),
306
- entry(commitSpec, (deps) => import("../../commands/commit.command.js").then((m) => m.makeRunCommitHandler(deps.getCtx))),
307
- entry(startSpec, (deps) => import("../../commands/start.run.js").then((m) => m.makeRunStartHandler(deps.getCtx))),
308
- entry(blockSpec, (deps) => import("../../commands/block.run.js").then((m) => m.makeRunBlockHandler(deps.getCtx))),
309
- entry(verifySpec, (deps) => import("../../commands/verify.run.js").then((m) => m.makeRunVerifyHandler(deps.getCtx))),
310
- entry(finishSpec, (deps) => import("../../commands/finish.run.js").then((m) => m.makeRunFinishHandler(deps.getCtx))),
311
- entry(readySpec, (deps) => import("../../commands/ready.command.js").then((m) => m.makeRunReadyHandler(deps.getCtx))),
312
- entry(docsCliSpec, (deps) => import("../../commands/docs/cli.command.js").then((m) => m.makeRunDocsCliHandler(deps.getHelpJsonForDocs)), {
313
- needsProject: false,
314
- needsConfig: false,
315
- needsTaskContext: false,
316
- }),
317
- entry(hooksSpec, () => import("../../commands/hooks/hooks.command.js").then((m) => m.runHooks), {
318
- needsProject: false,
319
- needsConfig: false,
320
- needsTaskContext: false,
321
- }),
322
- entry(hooksInstallSpec, () => import("../../commands/hooks/install.command.js").then((m) => m.runHooksInstall)),
323
- entry(hooksUninstallSpec, () => import("../../commands/hooks/uninstall.command.js").then((m) => m.runHooksUninstall)),
324
- entry(hooksRunSpec, () => import("../../commands/hooks/run.command.js").then((m) => m.runHooksRun)),
325
- entry(cleanupSpec, () => import("../../commands/cleanup/merged.command.js").then((m) => m.runCleanup), {
326
- needsProject: false,
327
- needsConfig: false,
328
- needsTaskContext: false,
329
- }),
330
- entry(cleanupMergedSpec, (deps) => import("../../commands/cleanup/merged.command.js").then((m) => m.makeRunCleanupMergedHandler(deps.getCtx))),
331
- entry(guardSpec, () => import("../../commands/guard/guard.command.js").then((m) => m.runGuard), {
332
- needsProject: false,
333
- needsConfig: false,
334
- needsTaskContext: false,
335
- }),
336
- entry(guardCleanSpec, () => import("../../commands/guard/clean.command.js").then((m) => m.runGuardClean)),
337
- entry(guardSuggestAllowSpec, () => import("../../commands/guard/suggest-allow.command.js").then((m) => m.runGuardSuggestAllow)),
338
- entry(guardCommitSpec, (deps) => import("../../commands/guard/commit.command.js").then((m) => m.makeRunGuardCommitHandler(deps.getCtx))),
6
+ ...CORE_COMMANDS,
7
+ ...TASK_COMMANDS,
8
+ ...PROJECT_COMMANDS,
9
+ ...LIFECYCLE_COMMANDS,
339
10
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"ide.d.ts","sourceRoot":"","sources":["../../../../src/cli/run-cli/commands/ide.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,aAAa,GAAG;IAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAE,CAAC;AAErD,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,aAAa,CAkBlD,CAAC;AAEF,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC,MAAM,CAAC,CA4ClB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAElF"}
1
+ {"version":3,"file":"ide.d.ts","sourceRoot":"","sources":["../../../../src/cli/run-cli/commands/ide.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,KAAK,aAAa,GAAG;IAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAE,CAAC;AAErD,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,aAAa,CAkBlD,CAAC;AAEF,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC,MAAM,CAAC,CA0DlB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAElF"}
@@ -1,7 +1,8 @@
1
- import { mkdir, readFile } from "node:fs/promises";
1
+ import { mkdir, readdir, readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { writeTextIfChanged } from "../../../shared/write-if-changed.js";
4
4
  import { resolvePolicyGatewayForRepo } from "../../../shared/policy-gateway.js";
5
+ import { renderRole } from "../../command-guide.js";
5
6
  import { wrapCommand } from "./wrap-command.js";
6
7
  export const ideSyncSpec = {
7
8
  id: ["ide", "sync"],
@@ -31,6 +32,7 @@ export async function cmdIdeSync(opts) {
31
32
  });
32
33
  const agentsPath = gateway.absPath;
33
34
  const agentsText = await readFile(agentsPath, "utf8");
35
+ const roleGuides = await loadInstalledRoleGuides(resolved.agentplaneDir);
34
36
  const header = [
35
37
  "<!--",
36
38
  " AUTOGENERATED by agentplane ide sync.",
@@ -39,7 +41,19 @@ export async function cmdIdeSync(opts) {
39
41
  "-->",
40
42
  "",
41
43
  ].join("\n");
42
- const content = `${header}${agentsText.trimEnd()}\n`;
44
+ const roleGuideText = roleGuides.length === 0
45
+ ? ""
46
+ : [
47
+ "",
48
+ "## Synced Role Activation",
49
+ "",
50
+ "- Use `agentplane role ORCHESTRATOR` while planning and approvals are active.",
51
+ "- As soon as a task owner is known, switch to that owner role before owner-scoped execution.",
52
+ "- Do not keep implementation or verification inside ORCHESTRATOR once the task owner is established.",
53
+ "",
54
+ ...roleGuides,
55
+ ].join("\n");
56
+ const content = `${header}${agentsText.trimEnd()}${roleGuideText}\n`;
43
57
  const targets = opts.ide === "cursor"
44
58
  ? ["cursor"]
45
59
  : opts.ide === "windsurf"
@@ -65,3 +79,51 @@ export async function cmdIdeSync(opts) {
65
79
  export function makeRunIdeSyncHandler(deps) {
66
80
  return (ctx, p) => cmdIdeSync({ cwd: ctx.cwd, rootOverride: ctx.rootOverride, ide: p.ide, deps });
67
81
  }
82
+ function toStringList(value) {
83
+ return Array.isArray(value)
84
+ ? value
85
+ .filter((item) => typeof item === "string")
86
+ .map((item) => item.trim())
87
+ .filter(Boolean)
88
+ : [];
89
+ }
90
+ function toRoleProfileGuide(opts) {
91
+ return {
92
+ filename: opts.filename,
93
+ id: (typeof opts.profile.id === "string" ? opts.profile.id : "").trim() || opts.roleId,
94
+ role: (typeof opts.profile.role === "string" ? opts.profile.role : "").trim(),
95
+ description: (typeof opts.profile.description === "string"
96
+ ? opts.profile.description
97
+ : "").trim(),
98
+ inputs: toStringList(opts.profile.inputs),
99
+ outputs: toStringList(opts.profile.outputs),
100
+ permissions: toStringList(opts.profile.permissions),
101
+ workflow: toStringList(opts.profile.workflow),
102
+ };
103
+ }
104
+ async function loadInstalledRoleGuides(agentplaneDir) {
105
+ const agentsDir = path.join(agentplaneDir, "agents");
106
+ let entries = [];
107
+ try {
108
+ const dirEntries = await readdir(agentsDir);
109
+ entries = dirEntries.filter((entry) => entry.endsWith(".json")).toSorted();
110
+ }
111
+ catch {
112
+ return [];
113
+ }
114
+ const guides = [];
115
+ for (const entry of entries) {
116
+ const roleId = entry.replace(/\.json$/i, "");
117
+ const raw = JSON.parse(await readFile(path.join(agentsDir, entry), "utf8"));
118
+ const guide = renderRole(roleId, {
119
+ profile: toRoleProfileGuide({
120
+ filename: entry,
121
+ roleId,
122
+ profile: raw,
123
+ }),
124
+ });
125
+ if (guide)
126
+ guides.push(guide);
127
+ }
128
+ return guides;
129
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../../src/cli/run-cli/commands/init/ui.ts"],"names":[],"mappings":"AAyBA,wBAAgB,iBAAiB,IAAI,MAAM,CAW1C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAG5E"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../../src/cli/run-cli/commands/init/ui.ts"],"names":[],"mappings":"AA4CA,wBAAgB,iBAAiB,IAAI,MAAM,CAc1C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAO5E"}
@@ -7,32 +7,52 @@ function color(text, code) {
7
7
  return text;
8
8
  return `\u001B[${code}m${text}\u001B[0m`;
9
9
  }
10
+ function muted(text) {
11
+ return color(text, "90");
12
+ }
13
+ function accent(text) {
14
+ return color(text, "36");
15
+ }
16
+ function heading(text) {
17
+ return color(text, "1;33");
18
+ }
19
+ function body(text) {
20
+ return color(text, "37");
21
+ }
10
22
  function padLine(line, width) {
11
23
  const lineLen = visibleLen(line);
12
24
  if (lineLen >= width)
13
25
  return line;
14
26
  return `${line}${" ".repeat(width - lineLen)}`;
15
27
  }
16
- function box(lines) {
17
- const width = Math.max(...lines.map((line) => visibleLen(line)), 0);
18
- const top = `┌${"─".repeat(width + 2)}┐`;
19
- const body = lines.map((line) => `│ ${padLine(line, width)} │`);
20
- const bottom = `└${"".repeat(width + 2)}┘`;
21
- return [top, ...body, bottom].join("\n");
28
+ function framedRailCallout(titleText, lines) {
29
+ const width = Math.max(visibleLen(titleText), ...lines.map((line) => visibleLen(line)), 0);
30
+ const ruleLen = Math.max(1, width - visibleLen(titleText) + 1);
31
+ const header = `${heading("◇")} ${heading(titleText)} ${accent("─".repeat(ruleLen))}${accent("╮")}`;
32
+ const bodyLines = lines.map((line) => `${muted("")} ${padLine(body(line), width)} ${muted("│")}`);
33
+ const footer = `${muted("├")}${accent("─".repeat(width + 4))}${accent("")}`;
34
+ return [muted("│"), header, ...bodyLines, footer].join("\n");
22
35
  }
23
36
  export function renderInitWelcome() {
24
37
  const logo = [
25
38
  "░█▀█░█▀▀░█▀▀░█▀█░▀█▀░░░█░█▀█░█░░░█▀█░█▀█░█▀▀",
26
39
  "░█▀█░█░█░█▀▀░█░█░░█░░▄▀░░█▀▀░█░░░█▀█░█░█░█▀▀",
27
40
  "░▀░▀░▀▀▀░▀▀▀░▀░▀░░▀░░▀░░░▀░░░▀▀▀░▀░▀░▀░▀░▀▀▀",
28
- ].map((line) => color(line, "36"));
29
- const intro = [
30
- color("Bootstrap an agent-first workflow in this repository.", "1"),
41
+ ].map((line) => accent(line));
42
+ const intro = framedRailCallout("Interactive Setup", [
43
+ "",
44
+ "Bootstrap an agent-first workflow in this repository.",
31
45
  "This interactive setup runs once; daily work is executed by agents.",
32
- ];
33
- return `${logo.join("\n")}\n\n${box(intro)}\n\n`;
46
+ "Follow the prompts below to choose policy, workflow, and safety defaults.",
47
+ "",
48
+ ]);
49
+ return `${logo.join("\n")}\n\n${intro}\n\n`;
34
50
  }
35
51
  export function renderInitSection(title, description) {
36
- const header = color(`[${title}]`, "33");
37
- return `${header}\n${description}\n\n`;
52
+ const lines = description.split("\n");
53
+ const width = Math.max(visibleLen(title), ...lines.map((line) => visibleLen(line)), 0);
54
+ const ruleLen = Math.max(1, width - visibleLen(title) + 1);
55
+ const header = `${heading("◇")} ${heading(title)} ${accent("─".repeat(ruleLen))}`;
56
+ const bodyLines = lines.map((line) => `${muted("│")} ${body(line)}`);
57
+ return `${header}\n${bodyLines.join("\n")}\n${muted("│")}\n\n`;
38
58
  }
@@ -0,0 +1,3 @@
1
+ export declare function approveTaskPlan(root: string, taskId: string): Promise<void>;
2
+ export declare function recordVerificationOk(root: string, taskId: string): Promise<void>;
3
+ //# sourceMappingURL=run-cli.core.pr-flow.test-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-cli.core.pr-flow.test-helpers.d.ts","sourceRoot":"","sources":["../../src/cli/run-cli.core.pr-flow.test-helpers.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBjF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAatF"}
@@ -0,0 +1,41 @@
1
+ import { runCliSilent } from "./run-cli.test-helpers.js";
2
+ export async function approveTaskPlan(root, taskId) {
3
+ await runCliSilent([
4
+ "task",
5
+ "plan",
6
+ "set",
7
+ taskId,
8
+ "--text",
9
+ "1) Do the work\n2) Verify the work",
10
+ "--updated-by",
11
+ "ORCHESTRATOR",
12
+ "--root",
13
+ root,
14
+ ]);
15
+ await runCliSilent([
16
+ "task",
17
+ "plan",
18
+ "approve",
19
+ taskId,
20
+ "--by",
21
+ "USER",
22
+ "--note",
23
+ "OK",
24
+ "--root",
25
+ root,
26
+ ]);
27
+ }
28
+ export async function recordVerificationOk(root, taskId) {
29
+ await runCliSilent([
30
+ "verify",
31
+ taskId,
32
+ "--ok",
33
+ "--by",
34
+ "REVIEWER",
35
+ "--note",
36
+ "Ok to integrate",
37
+ "--quiet",
38
+ "--root",
39
+ root,
40
+ ]);
41
+ }
@@ -0,0 +1,2 @@
1
+ export declare function writeAndConfigureRoot(): Promise<string>;
2
+ //# sourceMappingURL=run-cli.core.tasks.test-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-cli.core.tasks.test-helpers.d.ts","sourceRoot":"","sources":["../../src/cli/run-cli.core.tasks.test-helpers.ts"],"names":[],"mappings":"AAEA,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAI7D"}
@@ -0,0 +1,6 @@
1
+ import { mkGitRepoRoot, writeDefaultConfig } from "./run-cli.test-helpers.js";
2
+ export async function writeAndConfigureRoot() {
3
+ const root = await mkGitRepoRoot();
4
+ await writeDefaultConfig(root);
5
+ return root;
6
+ }
@@ -1,5 +1,7 @@
1
1
  import { defaultConfig } from "@agentplaneorg/core";
2
+ import type { TaskBackend } from "../backends/task-backend.js";
2
3
  export declare function registerAgentplaneHome(): void;
4
+ export declare function installRunCliIntegrationHarness(): void;
3
5
  export declare function getAgentplaneHome(): string | null;
4
6
  export declare function captureStdIO(): {
5
7
  readonly stdout: string;
@@ -7,6 +9,7 @@ export declare function captureStdIO(): {
7
9
  restore(): void;
8
10
  };
9
11
  export declare function silenceStdIO(): () => void;
12
+ export declare function stubTaskBackend(overrides?: Partial<TaskBackend>): TaskBackend;
10
13
  export declare function runCliSilent(args: string[]): Promise<number>;
11
14
  export declare function mkGitRepoRoot(): Promise<string>;
12
15
  export declare function mkTempDir(): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"run-cli.test-helpers.d.ts","sourceRoot":"","sources":["../../src/cli/run-cli.test-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-cli.test-helpers.d.ts","sourceRoot":"","sources":["../../src/cli/run-cli.test-helpers.ts"],"names":[],"mappings":"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"}