agentera 3.0.0-dev.25 → 3.0.0-dev.26

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 (270) hide show
  1. package/README.md +16 -20
  2. package/bundle/CHANGELOG.md +15 -25
  3. package/bundle/README.md +13 -34
  4. package/bundle/UPGRADE.md +71 -165
  5. package/bundle/references/adapters/package-manifest-interface-model.yaml +40 -241
  6. package/bundle/references/adapters/package-registry.yaml +0 -145
  7. package/bundle/references/adapters/package-surface-characterization.md +13 -38
  8. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +5 -219
  9. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -29
  10. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +1 -1
  11. package/bundle/references/artifacts/state-storage-authority.yaml +43 -447
  12. package/bundle/references/cli/agent-ready-state-contract.yaml +9 -9
  13. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  14. package/bundle/references/cli/bundle-skill-vocabulary.yaml +9 -18
  15. package/bundle/references/cli/capability-tool-classification.yaml +2 -2
  16. package/bundle/references/cli/prime-consumer-compatibility.yaml +28 -98
  17. package/bundle/references/cli/routing-execution-vocabulary.yaml +4 -22
  18. package/bundle/references/cli/upgrade-repair-wording.md +8 -28
  19. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +2 -3
  20. package/bundle/references/cli/vocabulary.md +18 -23
  21. package/bundle/references/meta/documentation-inventory.md +1 -1
  22. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +3 -11
  23. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +1 -1
  24. package/dist/cli/capabilityContext/bespoke.js +8 -2
  25. package/dist/cli/capabilityContext/bespoke.js.map +1 -1
  26. package/dist/cli/capabilityContext/closeout.js +3 -3
  27. package/dist/cli/capabilityContext/closeout.js.map +1 -1
  28. package/dist/cli/capabilityContext/evidence.js +52 -40
  29. package/dist/cli/capabilityContext/evidence.js.map +1 -1
  30. package/dist/cli/capabilityContext/startup.js +1 -1
  31. package/dist/cli/capabilityContext/startup.js.map +1 -1
  32. package/dist/cli/commands/doctor.js +6 -64
  33. package/dist/cli/commands/doctor.js.map +1 -1
  34. package/dist/cli/commands/durability.js +12 -48
  35. package/dist/cli/commands/durability.js.map +1 -1
  36. package/dist/cli/commands/prime/briefOrientation.js +2 -19
  37. package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
  38. package/dist/cli/commands/prime/bundleStatus.js +8 -2
  39. package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
  40. package/dist/cli/commands/prime/collectEntityOrientation.js +27 -14
  41. package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
  42. package/dist/cli/commands/prime/collectOrientationState.js +31 -52
  43. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  44. package/dist/cli/commands/prime/orientationOutput.js +3 -11
  45. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  46. package/dist/cli/commands/prime.js +0 -5
  47. package/dist/cli/commands/prime.js.map +1 -1
  48. package/dist/cli/commands/query.js +17 -49
  49. package/dist/cli/commands/query.js.map +1 -1
  50. package/dist/cli/commands/schema.js +19 -78
  51. package/dist/cli/commands/schema.js.map +1 -1
  52. package/dist/cli/commands/state/decisions.js +11 -57
  53. package/dist/cli/commands/state/decisions.js.map +1 -1
  54. package/dist/cli/commands/state/docs.js +56 -120
  55. package/dist/cli/commands/state/docs.js.map +1 -1
  56. package/dist/cli/commands/state/experimentRecords.js +22 -121
  57. package/dist/cli/commands/state/experimentRecords.js.map +1 -1
  58. package/dist/cli/commands/state/experiments.js +9 -75
  59. package/dist/cli/commands/state/experiments.js.map +1 -1
  60. package/dist/cli/commands/state/get.js +62 -143
  61. package/dist/cli/commands/state/get.js.map +1 -1
  62. package/dist/cli/commands/state/health.js +9 -123
  63. package/dist/cli/commands/state/health.js.map +1 -1
  64. package/dist/cli/commands/state/index.js +2 -2
  65. package/dist/cli/commands/state/index.js.map +1 -1
  66. package/dist/cli/commands/state/list.js +20 -36
  67. package/dist/cli/commands/state/list.js.map +1 -1
  68. package/dist/cli/commands/state/objective.js +19 -86
  69. package/dist/cli/commands/state/objective.js.map +1 -1
  70. package/dist/cli/commands/state/plan.js +9 -388
  71. package/dist/cli/commands/state/plan.js.map +1 -1
  72. package/dist/cli/commands/state/planTasks.js +58 -93
  73. package/dist/cli/commands/state/planTasks.js.map +1 -1
  74. package/dist/cli/commands/state/plans.js +13 -40
  75. package/dist/cli/commands/state/plans.js.map +1 -1
  76. package/dist/cli/commands/state/progress.js +10 -55
  77. package/dist/cli/commands/state/progress.js.map +1 -1
  78. package/dist/cli/commands/state/todo.js +24 -133
  79. package/dist/cli/commands/state/todo.js.map +1 -1
  80. package/dist/cli/commands/state/write.js +11 -33
  81. package/dist/cli/commands/state/write.js.map +1 -1
  82. package/dist/cli/commands/upgrade.js +48 -18
  83. package/dist/cli/commands/upgrade.js.map +1 -1
  84. package/dist/cli/commands/upgradeVerify.js +21 -15
  85. package/dist/cli/commands/upgradeVerify.js.map +1 -1
  86. package/dist/cli/commands/validate.js +1 -9
  87. package/dist/cli/commands/validate.js.map +1 -1
  88. package/dist/cli/dispatch/check.js +5 -12
  89. package/dist/cli/dispatch/check.js.map +1 -1
  90. package/dist/cli/dispatch/index.js +30 -29
  91. package/dist/cli/dispatch/index.js.map +1 -1
  92. package/dist/cli/dispatch/lifecycle.js +23 -40
  93. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  94. package/dist/cli/help.js +20 -100
  95. package/dist/cli/help.js.map +1 -1
  96. package/dist/cli/migrationRequired.js +22 -19
  97. package/dist/cli/migrationRequired.js.map +1 -1
  98. package/dist/cli/orientation/attention.js +1 -97
  99. package/dist/cli/orientation/attention.js.map +1 -1
  100. package/dist/cli/stateQuery.js +1 -2
  101. package/dist/cli/stateQuery.js.map +1 -1
  102. package/dist/core/skillIdentity.js +24 -0
  103. package/dist/core/skillIdentity.js.map +1 -0
  104. package/dist/hooks/common.js +1 -1
  105. package/dist/hooks/common.js.map +1 -1
  106. package/dist/hooks/compaction/status.js +2 -1
  107. package/dist/hooks/compaction/status.js.map +1 -1
  108. package/dist/hooks/cursorSessionStart.js +4 -25
  109. package/dist/hooks/cursorSessionStart.js.map +1 -1
  110. package/dist/hooks/projectHookInput.js +26 -0
  111. package/dist/hooks/projectHookInput.js.map +1 -0
  112. package/dist/hooks/sessionStart.js +23 -239
  113. package/dist/hooks/sessionStart.js.map +1 -1
  114. package/dist/hooks/sessionStop.js +4 -12
  115. package/dist/hooks/sessionStop.js.map +1 -1
  116. package/dist/hooks/validateArtifact/traversal.js +1 -1
  117. package/dist/hooks/validateArtifact/traversal.js.map +1 -1
  118. package/dist/registries/artifactRegistry.js +2 -1
  119. package/dist/registries/artifactRegistry.js.map +1 -1
  120. package/dist/registries/packageRegistry.js +57 -231
  121. package/dist/registries/packageRegistry.js.map +1 -1
  122. package/dist/release/releaseMetadata.js +1 -13
  123. package/dist/release/releaseMetadata.js.map +1 -1
  124. package/dist/runtime/lifecycleAdapterContract.js +4 -4
  125. package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
  126. package/dist/runtime/lifecycleAdapters.js +14 -2
  127. package/dist/runtime/lifecycleAdapters.js.map +1 -1
  128. package/dist/runtime/lifecycleAuthority.js +5 -43
  129. package/dist/runtime/lifecycleAuthority.js.map +1 -1
  130. package/dist/runtime/lifecycleOperationContract.js +3 -2
  131. package/dist/runtime/lifecycleOperationContract.js.map +1 -1
  132. package/dist/runtime/lifecyclePublication.js +21 -0
  133. package/dist/runtime/lifecyclePublication.js.map +1 -1
  134. package/dist/setup/opencode.js +20 -12
  135. package/dist/setup/opencode.js.map +1 -1
  136. package/dist/setup/sharedSkill.js +46 -0
  137. package/dist/setup/sharedSkill.js.map +1 -0
  138. package/dist/setup/smokeChecks.js +16 -43
  139. package/dist/setup/smokeChecks.js.map +1 -1
  140. package/dist/state/decisionEntities.js +7 -4
  141. package/dist/state/decisionEntities.js.map +1 -1
  142. package/dist/state/durability.js +4 -240
  143. package/dist/state/durability.js.map +1 -1
  144. package/dist/state/entityCutover.js +90 -186
  145. package/dist/state/entityCutover.js.map +1 -1
  146. package/dist/state/entityStorage.js +27 -8
  147. package/dist/state/entityStorage.js.map +1 -1
  148. package/dist/state/healthEntities.js +7 -4
  149. package/dist/state/healthEntities.js.map +1 -1
  150. package/dist/state/objectiveExperimentEntities.js +7 -5
  151. package/dist/state/objectiveExperimentEntities.js.map +1 -1
  152. package/dist/state/planEntities.js +14 -10
  153. package/dist/state/planEntities.js.map +1 -1
  154. package/dist/state/progressEntities.js +4 -2
  155. package/dist/state/progressEntities.js.map +1 -1
  156. package/dist/state/startupProjection.js +3 -2
  157. package/dist/state/startupProjection.js.map +1 -1
  158. package/dist/state/stateMode.js +7 -0
  159. package/dist/state/stateMode.js.map +1 -1
  160. package/dist/state/todoDocsEntities.js +6 -4
  161. package/dist/state/todoDocsEntities.js.map +1 -1
  162. package/dist/state/write/explain.js +1 -9
  163. package/dist/state/write/explain.js.map +1 -1
  164. package/dist/state/write/transaction.js +22 -532
  165. package/dist/state/write/transaction.js.map +1 -1
  166. package/dist/upgrade/appContentRefresh.js +43 -28
  167. package/dist/upgrade/appContentRefresh.js.map +1 -1
  168. package/dist/upgrade/doctor.js +5 -1
  169. package/dist/upgrade/doctor.js.map +1 -1
  170. package/dist/upgrade/installedHooksRetirement.js +46 -39
  171. package/dist/upgrade/installedHooksRetirement.js.map +1 -1
  172. package/dist/upgrade/legacyAgentCleanup.js +132 -32
  173. package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
  174. package/dist/upgrade/lifecycleUpgrade.js +65 -378
  175. package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
  176. package/dist/upgrade/migrateArtifactsV2ToV3.js +151 -52
  177. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  178. package/dist/upgrade/migrationPublication.js +123 -0
  179. package/dist/upgrade/migrationPublication.js.map +1 -0
  180. package/dist/upgrade/projectIntegration.js +46 -113
  181. package/dist/upgrade/projectIntegration.js.map +1 -1
  182. package/dist/upgrade/projectIntegrationDecision.js +6 -96
  183. package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
  184. package/dist/upgrade/runtimeMigration.js +222 -402
  185. package/dist/upgrade/runtimeMigration.js.map +1 -1
  186. package/dist/upgrade/upgradeCommands.js +5 -4
  187. package/dist/upgrade/upgradeCommands.js.map +1 -1
  188. package/dist/upgrade/upgradeLock.js +73 -41
  189. package/dist/upgrade/upgradeLock.js.map +1 -1
  190. package/dist/upgrade/upgradeOrchestrator.js +91 -158
  191. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  192. package/dist/upgrade/v3CapabilitySurface.js +2 -2
  193. package/dist/validate/appHomeContract.js +0 -4
  194. package/dist/validate/appHomeContract.js.map +1 -1
  195. package/package.json +7 -5
  196. package/bundle/.codex-plugin/plugin.json +0 -92
  197. package/bundle/.cursor/agents/agentera.md +0 -7
  198. package/bundle/.cursor/hooks.json +0 -32
  199. package/bundle/.cursor-plugin/plugin.json +0 -34
  200. package/bundle/.github/hooks/postToolUse.json +0 -9
  201. package/bundle/.github/hooks/preToolUse.json +0 -8
  202. package/bundle/.github/hooks/sessionEnd.json +0 -8
  203. package/bundle/.github/hooks/sessionStart.json +0 -8
  204. package/bundle/.github/plugin/plugin.json +0 -7
  205. package/bundle/.opencode/agents/agentera.md +0 -12
  206. package/bundle/.opencode/commands/agentera.md +0 -5
  207. package/bundle/.opencode/package.json +0 -31
  208. package/bundle/.opencode/plugins/agentera.js +0 -820
  209. package/bundle/agents/openai.yaml +0 -87
  210. package/bundle/hooks/codex-hooks.json +0 -31
  211. package/bundle/hooks/codex-plugin-hooks.json +0 -31
  212. package/bundle/plugin.json +0 -13
  213. package/bundle/references/adapters/cursor.md +0 -224
  214. package/bundle/references/adapters/opencode.md +0 -529
  215. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -44
  216. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  217. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -387
  218. package/bundle/references/adapters/runtime-feature-parity.md +0 -129
  219. package/dist/cli/commands/backfill.js +0 -231
  220. package/dist/cli/commands/backfill.js.map +0 -1
  221. package/dist/cli/commands/migrate.js +0 -681
  222. package/dist/cli/commands/migrate.js.map +0 -1
  223. package/dist/registries/runtimeAdapterRegistry.js +0 -324
  224. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  225. package/dist/setup/copilot.js +0 -227
  226. package/dist/setup/copilot.js.map +0 -1
  227. package/dist/setup/cursor.js +0 -129
  228. package/dist/setup/cursor.js.map +0 -1
  229. package/dist/setup/cursorSurfaces.js +0 -67
  230. package/dist/setup/cursorSurfaces.js.map +0 -1
  231. package/dist/setup/doctor/core.js +0 -296
  232. package/dist/setup/doctor/core.js.map +0 -1
  233. package/dist/setup/doctor/diagnostics.js +0 -201
  234. package/dist/setup/doctor/diagnostics.js.map +0 -1
  235. package/dist/setup/doctor/opencode.js +0 -301
  236. package/dist/setup/doctor/opencode.js.map +0 -1
  237. package/dist/setup/doctor/report.js +0 -425
  238. package/dist/setup/doctor/report.js.map +0 -1
  239. package/dist/setup/doctor.js +0 -10
  240. package/dist/setup/doctor.js.map +0 -1
  241. package/dist/state/gitBackfill.js +0 -561
  242. package/dist/state/gitBackfill.js.map +0 -1
  243. package/dist/state/gitBackfillAuthority.js +0 -141
  244. package/dist/state/gitBackfillAuthority.js.map +0 -1
  245. package/dist/state/gitBackfillHistory.js +0 -278
  246. package/dist/state/gitBackfillHistory.js.map +0 -1
  247. package/dist/state/gitBackfillOutput.js +0 -209
  248. package/dist/state/gitBackfillOutput.js.map +0 -1
  249. package/dist/state/legacyMigration.js +0 -516
  250. package/dist/state/legacyMigration.js.map +0 -1
  251. package/dist/state/legacyMigrationParser.js +0 -489
  252. package/dist/state/legacyMigrationParser.js.map +0 -1
  253. package/dist/state/migrationAuthority.js +0 -413
  254. package/dist/state/migrationAuthority.js.map +0 -1
  255. package/dist/state/migrationEnrichment.js +0 -35
  256. package/dist/state/migrationEnrichment.js.map +0 -1
  257. package/dist/state/projectionRecovery.js +0 -458
  258. package/dist/state/projectionRecovery.js.map +0 -1
  259. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -568
  260. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  261. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  262. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  263. package/dist/validate/lifecycleAdapters/lifecycleMain.js +0 -154
  264. package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +0 -1
  265. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -481
  266. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  267. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  268. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  269. package/dist/validate/lifecycleAdapters.js +0 -10
  270. package/dist/validate/lifecycleAdapters.js.map +0 -1
@@ -1,394 +1,15 @@
1
- /**
2
- * `state plan` query (active PLAN.yaml + immutable archive history).
3
- *
4
- * Source-contract builder for plan artifacts: declares the
5
- * `complete_for_plan_artifact` / `complete_for_normal_startup_evaluation`
6
- * flags that downstream capabilities (prime, orchestrate) read
7
- * before raw plan access.
8
- */
9
- import { emitStateStructured, filterByFieldValue, missingSchemaError, sourceMetadata, statusCounts, structuredState, } from "../../stateQuery.js";
10
- import { artifactPath } from "../../appContext.js";
11
- import { firstPresent } from "../../stateQuery.js";
12
- import { out, err } from "./shared.js";
13
- import { discoverPlanArtifacts, planDocumentParts, planCatalogEntry, } from "../../planArtifacts.js";
14
- import { planLifecycleState } from "../../planLifecycleState.js";
15
- import { resolvePlanTaskEvidence } from "../../planEvidence.js";
16
- import { STATE_FAMILY_FALLBACK_COMMANDS } from "../../capabilityContext/types.js";
17
- import { detectStateMode } from "../../../state/stateMode.js";
18
- import { currentPlanEntityView } from "../../../state/planEntities.js";
19
1
  import { emitStructured } from "../../structured.js";
2
+ import { currentPlanEntityView } from "../../../state/planEntities.js";
20
3
  import YAML from "yaml";
21
- const PLAN_HISTORY_CATALOG_LIMIT = 10;
22
- const PLAN_TEXT_TASK_LIMIT = 10;
23
- const PLAN_TEXT_MAX_UTF8_BYTES = 32_768;
24
- function planCatalogRetrieval() {
25
- return {
26
- list: "agentera state plan list --format json",
27
- get: "agentera state plan get --plan PLAN_ID --format json",
28
- };
29
- }
30
- function textScalar(value) {
31
- return String(value).replace(/\r/g, "\\r").replace(/\n/g, "\\n");
32
- }
33
- function taskTextRow(task) {
34
- const parts = [];
35
- for (const field of ["number", "status", "name", "title"]) {
36
- const value = task[field];
37
- if (value !== null && value !== undefined && value !== "" && !Array.isArray(value) && typeof value !== "object") {
38
- parts.push(`${field}=${textScalar(value)}`);
39
- }
40
- }
41
- return `Task: ${parts.join(" | ")}\n`;
42
- }
43
- function renderPlanText(data, tasks, summary, evidenceComplete, planId, diagnostics) {
44
- const rows = [{
45
- kind: "plan",
46
- text: `Plan: status=${textScalar(summary.status ?? "unknown")} | title=${textScalar(summary.title ?? "")} | created=${textScalar(summary.created ?? "-")}\n`,
47
- }];
48
- if (!evidenceComplete)
49
- rows.push({ kind: "plan", text: "Evidence: incomplete | missing authoritative task evidence\n" });
50
- for (const diagnostic of diagnostics) {
51
- rows.push({
52
- kind: "plan",
53
- text: `Plan diagnostic: path=${textScalar(diagnostic.path)} | category=${textScalar(diagnostic.category)} | diagnostic=${textScalar(diagnostic.message)}\n`,
54
- });
55
- }
56
- for (const key of ["what", "why"]) {
57
- if (data[key] !== null && data[key] !== undefined && data[key] !== "") {
58
- rows.push({ kind: "plan", text: `${key}: ${textScalar(data[key])}\n` });
59
- }
60
- }
61
- const counts = statusCounts(tasks);
62
- if (Object.keys(counts).length > 0) {
63
- rows.push({
64
- kind: "plan",
65
- text: `Task status: ${Object.keys(counts).sort().map((name) => `${name}=${counts[name]}`).join(", ")}\n`,
66
- });
67
- }
68
- rows.push(...tasks.slice(0, PLAN_TEXT_TASK_LIMIT).map((task) => ({ kind: "task", text: taskTextRow(task) })));
69
- const retained = [];
70
- const countOmitted = Math.max(0, tasks.length - PLAN_TEXT_TASK_LIMIT);
71
- let byteTaskOmitted = 0;
72
- let bytePlanOmitted = 0;
73
- const output = () => {
74
- const lines = retained.map((row) => row.text);
75
- const taskOmitted = countOmitted + byteTaskOmitted;
76
- if (taskOmitted > 0) {
77
- const reason = countOmitted > 0 && byteTaskOmitted > 0
78
- ? "text_projection_limit_and_output_byte_budget"
79
- : byteTaskOmitted > 0 ? "text_output_byte_budget" : "text_projection_limit";
80
- lines.push(`Tasks omitted: ${taskOmitted} | reason=${reason}\n`);
81
- lines.push("Continue: agentera state plan tasks list --format json\n");
82
- lines.push("Get one: agentera state plan tasks get --task N --format json\n");
83
- }
84
- if (bytePlanOmitted > 0) {
85
- lines.push(`Plan fields omitted: ${bytePlanOmitted} | reason=text_output_byte_budget\n`);
86
- lines.push(`Get plan: agentera state plan get --plan ${planId} --format json\n`);
87
- }
88
- return lines.join("");
89
- };
90
- for (const row of rows) {
91
- retained.push(row);
92
- while (Buffer.byteLength(output(), "utf8") > PLAN_TEXT_MAX_UTF8_BYTES) {
93
- const omitted = retained.pop();
94
- if (!omitted)
95
- break;
96
- if (omitted.kind === "task")
97
- byteTaskOmitted += 1;
98
- else
99
- bytePlanOmitted += 1;
100
- }
101
- }
102
- return output();
103
- }
104
- function planArtifactSummary(artifact) {
105
- const { data } = artifact;
106
- const parts = planDocumentParts(data);
107
- const header = { ...parts.header, status: parts.status };
108
- const summary = {
109
- header,
110
- title: firstPresent(header, ["title"], data.title ?? ""),
111
- status: parts.status,
112
- created: firstPresent(header, ["created"], data.created ?? ""),
113
- what: data.what,
114
- why: data.why,
115
- constraints: data.constraints,
116
- scope: data.scope,
117
- design: data.design,
118
- overall_acceptance: data.overall_acceptance,
119
- surprises: data.surprises,
120
- previous_plan_archived: data.previous_plan_archived,
121
- };
122
- const out = {};
123
- for (const [k, v] of Object.entries(summary)) {
124
- if (v !== null && v !== undefined && v !== "")
125
- out[k] = v;
126
- }
127
- return out;
128
- }
129
- function planSource(primary, discovery) {
130
- const source = sourceMetadata("plan", primary?.path ?? discovery.activePath);
131
- const archivePaths = discovery.archived.map((artifact) => artifact.path);
132
- source.active = Boolean(discovery.active);
133
- source.archived = Boolean(primary?.archived);
134
- source.active_path = discovery.activePath;
135
- source.archive_count = archivePaths.length;
136
- source.archive_paths = archivePaths.slice(0, PLAN_HISTORY_CATALOG_LIMIT);
137
- const archivePathsOmitted = Math.max(0, archivePaths.length - PLAN_HISTORY_CATALOG_LIMIT);
138
- source.archive_paths_omitted = archivePathsOmitted > 0;
139
- source.archive_paths_omitted_count = archivePathsOmitted;
140
- source.archive_paths_omission_reason = archivePathsOmitted > 0 ? "archive_path_catalog_limit" : null;
141
- source.archive_paths_retrieval = {
142
- list: "agentera state plan list --format json",
143
- get: "agentera state plan get --plan PLAN_ID --format json",
144
- };
145
- if (discovery.diagnostics.length > 0)
146
- source.diagnostics = discovery.diagnostics;
147
- const activeDiagnostics = discovery.diagnostics.filter((diagnostic) => diagnostic.path === discovery.activePath && diagnostic.category !== "legacy");
148
- if (activeDiagnostics.length > 0)
149
- source.invalid_path = discovery.activePath;
150
- if (primary && discovery.diagnostics.some((diagnostic) => diagnostic.path === primary.path && diagnostic.category === "legacy")) {
151
- source.legacy_input = true;
152
- }
153
- if (discovery.invalidArchivePaths.length > 0)
154
- source.invalid_archive_paths = discovery.invalidArchivePaths;
155
- return source;
156
- }
157
- function planCatalog(discovery) {
158
- const artifacts = [
159
- ...(discovery.active ? [discovery.active] : []),
160
- ...discovery.archived,
161
- ];
162
- return artifacts
163
- .slice(0, PLAN_HISTORY_CATALOG_LIMIT)
164
- .map((artifact) => planCatalogEntry(artifact, discovery.activePath, discovery.identities.find((identity) => identity.artifact.path === artifact.path)));
165
- }
166
- function activePlanDiagnostics(discovery) {
167
- return discovery.diagnostics.filter((diagnostic) => diagnostic.path === discovery.activePath && diagnostic.category !== "legacy");
168
- }
169
- function planSourceContract(source, summary, discovery) {
170
- const legacyEntries = Boolean(summary.legacy_entries);
171
- const evidenceIncomplete = summary.evidence_status === "incomplete";
172
- const currentDiagnostics = activePlanDiagnostics(discovery);
173
- const active = source.active === true;
174
- const verifiedAbsence = !active && currentDiagnostics.length === 0;
175
- const lifecycle = planLifecycleState({
176
- exists: source.exists,
177
- active: source.active,
178
- active_path: source.active_path,
179
- diagnostics: currentDiagnostics,
180
- });
181
- const complete = verifiedAbsence ||
182
- (Boolean(source.exists) &&
183
- !legacyEntries &&
184
- !evidenceIncomplete &&
185
- currentDiagnostics.length === 0 &&
186
- lifecycle.current_plan_degraded !== true);
187
- const startupComplete = complete;
188
- const missingState = [];
189
- if (!source.exists && !verifiedAbsence)
190
- missingState.push("plan artifact");
191
- else if (!active && !verifiedAbsence)
192
- missingState.push("active plan artifact");
193
- if (legacyEntries)
194
- missingState.push("current plan task artifact shape");
195
- if (evidenceIncomplete)
196
- missingState.push("task evidence");
197
- if (currentDiagnostics.length > 0)
198
- missingState.push("valid current plan artifact");
199
- const summaryFields = Object.keys(summary).sort();
200
- const entryFields = [
201
- "number",
202
- "name",
203
- "depends_on",
204
- "status",
205
- "acceptance",
206
- "evidence",
207
- "evidence_status",
208
- "evidence_provenance",
209
- "blocked_reason",
210
- ];
211
- return {
212
- artifact: "plan",
213
- canonical_artifact_label: "plan",
214
- persisted_artifact_path: source.path,
215
- active_plan_path: discovery.activePath,
216
- active_plan_exists: active,
217
- archived_plan_count: discovery.archived.length,
218
- archive_paths: discovery.archived
219
- .slice(0, PLAN_HISTORY_CATALOG_LIMIT)
220
- .map((artifact) => artifact.path),
221
- archive_paths_omitted: discovery.archived.length > PLAN_HISTORY_CATALOG_LIMIT,
222
- archive_paths_omitted_count: Math.max(0, discovery.archived.length - PLAN_HISTORY_CATALOG_LIMIT),
223
- archive_paths_omission_reason: discovery.archived.length > PLAN_HISTORY_CATALOG_LIMIT ? "archive_path_catalog_limit" : null,
224
- archive_paths_retrieval: {
225
- list: "agentera state plan list --format json",
226
- get: "agentera state plan get --plan PLAN_ID --format json",
227
- },
228
- invalid_archive_paths: discovery.invalidArchivePaths,
229
- lifecycle_state: lifecycle,
230
- complete_for_plan_artifact: complete,
231
- complete_for_normal_startup_evaluation: startupComplete,
232
- raw_artifact_reads_required: false,
233
- raw_artifact_read_policy: "Use `agentera state plan --format json` entries, summary, source, and source_contract before raw plan access. " +
234
- "When complete_for_plan_artifact is true, skip defensive `.agentera/plan.yaml` reads during normal read-only " +
235
- "plan startup/evaluation; raw plan artifact access is reserved for writes, archival, validation, corruption " +
236
- "diagnostics, or unavailable/incomplete CLI state.",
237
- included_state: [
238
- "header",
239
- "what",
240
- "why",
241
- "constraints",
242
- "scope",
243
- "design",
244
- "tasks",
245
- "task dependencies",
246
- "task acceptance criteria",
247
- "task evidence",
248
- "task evidence provenance",
249
- "overall_acceptance",
250
- "surprises",
251
- "previous_plan_archived",
252
- "archived plan history",
253
- ],
254
- complete_state: {
255
- summary: summaryFields,
256
- entries: entryFields,
257
- normal_startup_evaluation: startupComplete,
258
- },
259
- raw_artifact_access_boundary: {
260
- normal_read_only_startup_evaluation: "skip raw plan artifact reads when complete_for_plan_artifact is true",
261
- allowed_raw_artifact_uses: [
262
- "artifact writes",
263
- "plan archival",
264
- "artifact validation",
265
- "corruption diagnostics",
266
- "unavailable or incomplete CLI state after CLI fallbacks",
267
- ],
268
- },
269
- missing_state: missingState,
270
- fallback: complete ? [] : [STATE_FAMILY_FALLBACK_COMMANDS.docs],
271
- fallback_policy: `When plan CLI output is missing or incomplete, use supported CLI state such as \`${STATE_FAMILY_FALLBACK_COMMANDS.docs}\` ` +
272
- "for artifact mapping before any last-resort raw plan artifact read.",
273
- summary_fields: summaryFields,
274
- entry_fields: entryFields,
275
- };
276
- }
277
- export function queryPlan(args, schemas, io) {
278
- if (detectStateMode(process.cwd()) === "entities") {
279
- const o = out(io);
280
- const format = args.format ?? "text";
281
- const response = currentPlanEntityView(process.cwd(), args.limit ?? undefined, args.cursor ?? undefined, args.status ?? undefined, { format });
282
- if (format === "text")
283
- o(YAML.stringify(response));
284
- else
285
- emitStructured(response, format, o);
286
- return 0;
287
- }
288
- const o = out(io);
289
- const e = err(io);
290
- const info = schemas.plan;
291
- if (!info) {
292
- e(missingSchemaError("plan") + "\n");
293
- return 1;
294
- }
295
- const p = artifactPath(info, "plan");
296
- const discovery = discoverPlanArtifacts(p);
297
- const currentDiagnostics = activePlanDiagnostics(discovery);
298
- // Archived plans are immutable history, never executable current state.
299
- // Keep them in the catalog instead of promoting the newest archive to the
300
- // current plan when the active artifact is absent.
301
- const primary = discovery.active;
4
+ import { out } from "./shared.js";
5
+ export function queryPlan(args, _schemas, io) {
302
6
  const format = args.format ?? "text";
303
- const catalog = planCatalog(discovery);
304
- const catalogTotal = (discovery.active ? 1 : 0) + discovery.archived.length;
305
- if (!primary) {
306
- if (format !== "text") {
307
- const source = planSource(null, discovery);
308
- const lifecycle = planLifecycleState({
309
- exists: false,
310
- active: false,
311
- active_path: discovery.activePath,
312
- diagnostics: currentDiagnostics,
313
- });
314
- const summary = lifecycle.status === "degraded"
315
- ? {
316
- invalid_path: discovery.activePath,
317
- diagnostic: currentDiagnostics[0] ?? discovery.diagnostics.find((diagnostic) => diagnostic.category !== "legacy"),
318
- absence_reason: "Current plan artifact is invalid.",
319
- }
320
- : { absence_reason: "No active plan exists." };
321
- summary.lifecycle_state = lifecycle;
322
- const payload = structuredState("plan", [], source, {
323
- filters: { status: args.status ?? null },
324
- summary,
325
- sourceContract: planSourceContract(source, summary, discovery),
326
- });
327
- if (lifecycle.current_plan_degraded === true)
328
- payload.status = "incomplete";
329
- payload.plans = catalog;
330
- payload.plan_catalog = {
331
- total: catalogTotal,
332
- returned: catalog.length,
333
- omitted: catalogTotal > catalog.length,
334
- omitted_count: Math.max(0, catalogTotal - catalog.length),
335
- omission_reason: catalogTotal > catalog.length ? "archive_catalog_limit" : null,
336
- retrieval: planCatalogRetrieval(),
337
- };
338
- return emitStateStructured("plan", payload, format, args.fields, o, e);
339
- }
340
- const [diagnostic] = activePlanDiagnostics(discovery);
341
- if (diagnostic) {
342
- o(`Plan: invalid | path=${diagnostic.path} | category=${diagnostic.category} | diagnostic=${diagnostic.message}\n`);
343
- }
344
- return 0;
345
- }
346
- const dataDict = primary.data;
347
- const parts = planDocumentParts(dataDict);
348
- const evidence = resolvePlanTaskEvidence(primary, parts.tasks, schemas);
349
- const summary = {
350
- ...planArtifactSummary(primary),
351
- ...(parts.legacyEntries ? { legacy_entries: true } : {}),
352
- };
353
- if (currentDiagnostics.length > 0) {
354
- summary.invalid_path = discovery.activePath;
355
- summary.current_plan_diagnostic = currentDiagnostics[0];
356
- }
357
- summary.evidence_status = evidence.complete ? "complete" : "incomplete";
358
- summary.evidence_sources = evidence.sources;
359
- let tasks = evidence.tasks;
360
- const statusFilter = args.status ?? null;
361
- if (statusFilter)
362
- tasks = filterByFieldValue(tasks, "status", statusFilter);
363
- const source = planSource(primary, discovery);
364
- const lifecycle = planLifecycleState({
365
- exists: source.active === true || source.archived === true,
366
- active: source.active,
367
- active_path: source.active_path,
368
- diagnostics: currentDiagnostics,
369
- });
370
- summary.lifecycle_state = lifecycle;
371
- if (format !== "text") {
372
- const payload = structuredState("plan", tasks, source, {
373
- filters: { status: statusFilter },
374
- summary,
375
- sourceContract: planSourceContract(source, summary, discovery),
376
- });
377
- if (!evidence.complete || lifecycle.current_plan_degraded === true)
378
- payload.status = "incomplete";
379
- payload.plans = catalog;
380
- payload.plan_catalog = {
381
- total: catalogTotal,
382
- returned: catalog.length,
383
- omitted: catalogTotal > catalog.length,
384
- omitted_count: Math.max(0, catalogTotal - catalog.length),
385
- omission_reason: catalogTotal > catalog.length ? "archive_catalog_limit" : null,
386
- retrieval: planCatalogRetrieval(),
387
- };
388
- return emitStateStructured("plan", payload, format, args.fields, o, e);
389
- }
390
- const identity = discovery.identities.find((candidate) => candidate.artifact.path === primary.path);
391
- o(renderPlanText(dataDict, tasks, summary, evidence.complete, identity?.stableId ?? "PLAN_ID", currentDiagnostics));
7
+ const response = currentPlanEntityView(process.cwd(), args.limit ?? undefined, args.cursor ?? undefined, args.status ?? undefined, { format });
8
+ const output = out(io);
9
+ if (format === "text")
10
+ output(YAML.stringify(response));
11
+ else
12
+ emitStructured(response, format, output);
392
13
  return 0;
393
14
  }
394
15
  //# sourceMappingURL=plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/cli/commands/state/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAA2B,MAAM,aAAa,CAAC;AAE3D,MAAM,UAAU,SAAS,CAAC,IAAe,EAAE,QAAoC,EAAE,EAAM;IACrF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CACpC,OAAO,CAAC,GAAG,EAAE,EACb,IAAI,CAAC,KAAK,IAAI,SAAS,EACvB,IAAI,CAAC,MAAM,IAAI,SAAS,EACxB,IAAI,CAAC,MAAM,IAAI,SAAS,EACxB,EAAE,MAAM,EAAE,CACX,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IACvB,IAAI,MAAM,KAAK,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;;QACnD,cAAc,CAAC,QAAQ,EAAE,MAAyB,EAAE,MAAM,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,10 +1,7 @@
1
1
  import YAML from "yaml";
2
- import { artifactPath, discoverSchemasDir, loadSchemas } from "../../appContext.js";
3
- import { emitStructured } from "../../structured.js";
4
2
  import { StateRetrievalFailure } from "../../../state/directRetrieval.js";
5
- import { getPlanTask, listPlanTasks } from "../../../state/planTaskRetrieval.js";
6
- import { detectStateMode } from "../../../state/stateMode.js";
7
3
  import { getPlanTaskEntity, listPlanTaskEntities } from "../../../state/planEntities.js";
4
+ import { emitStructured } from "../../structured.js";
8
5
  function requestedFormat(argv) {
9
6
  for (let index = 0; index < argv.length; index += 1) {
10
7
  const token = argv[index];
@@ -23,81 +20,76 @@ function readValue(argv, index, name) {
23
20
  throw new Error(`${name} requires a value`);
24
21
  return { value, next: index + 2 };
25
22
  }
26
- function parse(argv, verb, entityMode) {
23
+ function failure(message, verb) {
24
+ const list = verb === "list";
25
+ return new StateRetrievalFailure({
26
+ schemaVersion: "agentera.stateFailure.v1",
27
+ status: "fail",
28
+ error: {
29
+ class: "invalid_request",
30
+ message,
31
+ syntax: list
32
+ ? "agentera state plan tasks list [PLAN_ID] [--limit N] [--cursor TOKEN] --format json"
33
+ : "agentera state plan tasks get --id ID --format json",
34
+ example: list
35
+ ? "agentera state plan tasks list abcdefghij --limit 20 --format json"
36
+ : "agentera state plan tasks get --id qjtrmnpvka --format json",
37
+ recovery: "Correct the command using one of the valid forms and retry; no state was changed.",
38
+ valid_values: list
39
+ ? ["list", "PLAN_ID", "--limit 1..100", "--cursor TOKEN", "--format text|json|yaml"]
40
+ : ["get", "--id ID", "--format text|json|yaml"],
41
+ },
42
+ }, 2);
43
+ }
44
+ function parse(argv, verb) {
27
45
  let format = "text";
28
46
  let plan;
29
47
  let limit = 20;
30
48
  let cursor;
31
- let task;
32
49
  let id;
33
50
  const seen = new Set();
34
51
  for (let index = 0; index < argv.length;) {
35
52
  const token = argv[index];
36
- const name = ["--format", "--plan", "--plan-id", "--limit", "--cursor", "--task", "--id"].find((flag) => token === flag || token.startsWith(`${flag}=`));
37
- if (!name || (entityMode && ["--plan", "--plan-id", "--task"].includes(name)) || (verb === "list" && (name === "--task" || name === "--id")) || (verb === "get" && (name === "--limit" || name === "--cursor"))) {
38
- throw requestFailure(`unrecognized argument '${token}'`, verb, entityMode);
53
+ if (verb === "list" && !token.startsWith("--")) {
54
+ if (plan)
55
+ throw failure(`unrecognized argument '${token}'`, verb);
56
+ plan = token;
57
+ index += 1;
58
+ continue;
39
59
  }
60
+ const allowed = verb === "list" ? ["--format", "--limit", "--cursor"] : ["--format", "--id"];
61
+ const name = allowed.find((flag) => token === flag || token.startsWith(`${flag}=`));
62
+ if (!name)
63
+ throw failure(`unrecognized argument '${token}'`, verb);
40
64
  if (seen.has(name))
41
- throw requestFailure(`${name} may only be supplied once`, verb, entityMode);
65
+ throw failure(`${name} may only be supplied once`, verb);
42
66
  seen.add(name);
43
- let value;
67
+ let parsed;
44
68
  try {
45
- const parsed = readValue(argv, index, name);
46
- value = parsed.value;
47
- index = parsed.next;
69
+ parsed = readValue(argv, index, name);
48
70
  }
49
71
  catch (error) {
50
- throw requestFailure(error.message, verb, entityMode);
72
+ throw failure(error.message, verb);
51
73
  }
74
+ index = parsed.next;
52
75
  if (name === "--format") {
53
- if (!["text", "json", "yaml"].includes(value))
54
- throw requestFailure(`invalid --format '${value}'`, verb, entityMode);
55
- format = value;
56
- }
57
- else if (name === "--plan" || name === "--plan-id") {
58
- if (entityMode && name === "--plan")
59
- throw requestFailure("entity mode rejects legacy --plan; use --plan-id ID with a bare plan ID", verb, true);
60
- if (!entityMode && name === "--plan-id")
61
- throw requestFailure("legacy mode rejects --plan-id; use --plan PLAN_ID", verb, false);
62
- plan = value;
76
+ if (!["text", "json", "yaml"].includes(parsed.value))
77
+ throw failure(`invalid --format '${parsed.value}'`, verb);
78
+ format = parsed.value;
63
79
  }
64
- else if (name === "--cursor")
65
- cursor = value;
66
80
  else if (name === "--limit") {
67
- if (!/^[1-9][0-9]*$/.test(value))
68
- throw requestFailure("--limit must be an integer from 1 through 100", verb, entityMode);
69
- limit = Number(value);
70
- }
71
- else if (name === "--task") {
72
- if (!/^[1-9][0-9]*$/.test(value))
73
- throw requestFailure("--task must be a positive integer without leading zeros", verb, entityMode);
74
- task = Number(value);
81
+ if (!/^[1-9][0-9]*$/.test(parsed.value))
82
+ throw failure("--limit must be an integer from 1 through 100", verb);
83
+ limit = Number(parsed.value);
75
84
  }
85
+ else if (name === "--cursor")
86
+ cursor = parsed.value;
76
87
  else
77
- id = value;
88
+ id = parsed.value;
78
89
  }
79
- return { format, plan, limit, cursor, task, id };
80
- }
81
- function requestFailure(message, verb, entityMode = false) {
82
- const list = verb === "list";
83
- return new StateRetrievalFailure({
84
- schemaVersion: "agentera.stateFailure.v1",
85
- status: "fail",
86
- error: {
87
- class: "invalid_request",
88
- message,
89
- syntax: list
90
- ? entityMode ? "agentera state plan tasks list [--limit N] [--cursor TOKEN] --format json" : "agentera state plan tasks list [legacy plan selector] [--limit N] [--cursor TOKEN] --format json"
91
- : entityMode ? "agentera state plan tasks get --id ID --format json" : "agentera state plan tasks get [legacy plan selector] [legacy task selector] --format json",
92
- example: list
93
- ? "agentera state plan tasks list --limit 20 --format json"
94
- : entityMode ? "agentera state plan tasks get --id qjtrmnpvka --format json" : "agentera state plan tasks get --task 1 --format json",
95
- recovery: "Correct the command using one of the valid forms and retry; no state was changed.",
96
- valid_values: list
97
- ? entityMode ? ["list", "--limit 1..100", "--cursor TOKEN", "--format text|json|yaml"] : ["list", "legacy plan selector", "--limit 1..100", "--cursor TOKEN", "--format text|json|yaml"]
98
- : entityMode ? ["get", "--id ID", "--format text|json|yaml"] : ["get", "legacy selectors", "--format text|json|yaml"],
99
- },
100
- }, 2);
90
+ if (verb === "get" && !id)
91
+ throw failure("entity mode requires --id ID and rejects numeric --task selectors", verb);
92
+ return { format, limit, ...(plan ? { plan } : {}), ...(cursor ? { cursor } : {}), ...(id ? { id } : {}) };
101
93
  }
102
94
  function emitFailure(error, format, io) {
103
95
  if (format === "json" || format === "yaml")
@@ -108,54 +100,27 @@ function emitFailure(error, format, io) {
108
100
  `Error: ${detail.message}`,
109
101
  `Class: ${detail.class}`,
110
102
  `Valid forms: ${(detail.valid_values ?? [detail.syntax]).join("; ")}`,
111
- `Syntax: ${detail.syntax}`,
112
103
  `Example: ${detail.example}`,
113
104
  `Recovery: ${detail.recovery}`,
114
105
  ].join("\n") + "\n");
115
106
  }
116
107
  return error.exitCode;
117
108
  }
118
- function renderList(response) {
119
- const lines = [
120
- `Plan tasks: plan=${response.filters.plan} | order=${response.order} | returned=${response.counts.returned}/${response.counts.total}`,
121
- ];
122
- for (const value of response.entries) {
123
- const entry = value;
124
- lines.push(`Task: number=${entry.task_number} | stable_id=${entry.stable_id} | get=${entry.retrieval.get}`);
125
- }
126
- if (response.omitted === true) {
127
- lines.push(`Omitted: ${response.omitted_count} task(s) | reason=${response.omission_reason}`);
128
- lines.push(`Continue: ${response.retrieval.continue}`);
129
- lines.push(`Get one: ${response.retrieval.get}`);
130
- }
131
- return lines.join("\n") + "\n";
132
- }
133
109
  export function runPlanTasks(argv, io) {
134
110
  const format = requestedFormat(argv);
135
111
  const verb = argv[0];
136
112
  if (verb !== "list" && verb !== "get")
137
- return emitFailure(requestFailure(`expected 'list' or 'get', received '${verb ?? "nothing"}'`, "list"), format, io);
113
+ return emitFailure(failure(`expected 'list' or 'get', received '${verb ?? "nothing"}'`, "list"), format, io);
138
114
  try {
139
- const entityMode = detectStateMode(process.cwd()) === "entities";
140
- const args = parse(argv.slice(1), verb, entityMode);
141
- if (verb === "get" && entityMode && (!args.id || args.task !== undefined))
142
- throw requestFailure("entity mode requires --id ID and rejects numeric --task selectors", verb, true);
143
- if (verb === "get" && !entityMode && (args.task === undefined || args.id))
144
- throw requestFailure("legacy mode requires --task N and rejects --id", verb);
145
- const schema = loadSchemas(discoverSchemasDir()).plan;
146
- if (!schema)
147
- throw new Error("plan schema is unavailable");
148
- const activePath = artifactPath(schema, "plan");
149
- const response = entityMode
150
- ? verb === "list" ? listPlanTaskEntities(process.cwd(), undefined, args.limit, args.cursor, { format: args.format }) : getPlanTaskEntity(process.cwd(), args.id)
151
- : verb === "list" ? listPlanTasks(process.cwd(), activePath, { plan: args.plan, limit: args.limit, cursor: args.cursor, format: args.format }) : getPlanTask(process.cwd(), activePath, args.task, args.plan);
152
- const out = io.out ?? ((text) => process.stdout.write(text));
115
+ const args = parse(argv.slice(1), verb);
116
+ const response = verb === "list"
117
+ ? listPlanTaskEntities(process.cwd(), args.plan, args.limit, args.cursor, { format: args.format })
118
+ : getPlanTaskEntity(process.cwd(), args.id);
119
+ const output = io.out ?? ((text) => process.stdout.write(text));
153
120
  if (args.format === "json" || args.format === "yaml")
154
- emitStructured(response, args.format, out);
155
- else if (verb === "list")
156
- out(entityMode ? YAML.stringify(response) : renderList(response));
121
+ emitStructured(response, args.format, output);
157
122
  else
158
- out(YAML.stringify(response));
123
+ output(YAML.stringify(response));
159
124
  return 0;
160
125
  }
161
126
  catch (error) {