@tiic-tech/openworkflow 0.1.1 → 0.1.2

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 (213) hide show
  1. package/dist/adapters/codex/src/cleanCodexAdapter.js +4 -1
  2. package/dist/adapters/codex/src/cleanCodexAdapter.js.map +1 -1
  3. package/dist/adapters/codex/src/constants.d.ts +1 -0
  4. package/dist/adapters/codex/src/constants.js +2 -0
  5. package/dist/adapters/codex/src/constants.js.map +1 -0
  6. package/dist/adapters/codex/src/generateCommands.js +14 -9
  7. package/dist/adapters/codex/src/generateCommands.js.map +1 -1
  8. package/dist/adapters/codex/src/generateSkills.js +13 -0
  9. package/dist/adapters/codex/src/generateSkills.js.map +1 -1
  10. package/dist/adapters/codex/src/generatedFiles.js +1 -1
  11. package/dist/adapters/codex/src/manifest.js +11 -2
  12. package/dist/adapters/codex/src/manifest.js.map +1 -1
  13. package/dist/adapters/codex/src/templates.d.ts +0 -1
  14. package/dist/adapters/codex/src/templates.js +0 -1
  15. package/dist/adapters/codex/src/templates.js.map +1 -1
  16. package/dist/adapters/src/registry.d.ts +20 -0
  17. package/dist/adapters/src/registry.js +81 -0
  18. package/dist/adapters/src/registry.js.map +1 -0
  19. package/dist/cli/src/commands/brief.d.ts +46 -0
  20. package/dist/cli/src/commands/brief.js +294 -0
  21. package/dist/cli/src/commands/brief.js.map +1 -0
  22. package/dist/cli/src/commands/check.d.ts +42 -0
  23. package/dist/cli/src/commands/check.js +326 -0
  24. package/dist/cli/src/commands/check.js.map +1 -0
  25. package/dist/cli/src/commands/clean.js +46 -1
  26. package/dist/cli/src/commands/clean.js.map +1 -1
  27. package/dist/cli/src/commands/context.d.ts +1 -0
  28. package/dist/cli/src/commands/context.js +471 -0
  29. package/dist/cli/src/commands/context.js.map +1 -0
  30. package/dist/cli/src/commands/doctor.js +122 -12
  31. package/dist/cli/src/commands/doctor.js.map +1 -1
  32. package/dist/cli/src/commands/draft.d.ts +1 -0
  33. package/dist/cli/src/commands/draft.js +175 -0
  34. package/dist/cli/src/commands/draft.js.map +1 -0
  35. package/dist/cli/src/commands/gitAutomation.d.ts +1 -0
  36. package/dist/cli/src/commands/gitAutomation.js +378 -0
  37. package/dist/cli/src/commands/gitAutomation.js.map +1 -0
  38. package/dist/cli/src/commands/handoff.d.ts +22 -0
  39. package/dist/cli/src/commands/handoff.js +122 -0
  40. package/dist/cli/src/commands/handoff.js.map +1 -0
  41. package/dist/cli/src/commands/init.js +52 -1
  42. package/dist/cli/src/commands/init.js.map +1 -1
  43. package/dist/cli/src/commands/inspect.d.ts +23 -0
  44. package/dist/cli/src/commands/inspect.js +157 -0
  45. package/dist/cli/src/commands/inspect.js.map +1 -0
  46. package/dist/cli/src/commands/register.d.ts +1 -0
  47. package/dist/cli/src/commands/register.js +251 -0
  48. package/dist/cli/src/commands/register.js.map +1 -0
  49. package/dist/cli/src/commands/resume.d.ts +59 -0
  50. package/dist/cli/src/commands/resume.js +280 -0
  51. package/dist/cli/src/commands/resume.js.map +1 -0
  52. package/dist/cli/src/commands/shared.js +6 -2
  53. package/dist/cli/src/commands/shared.js.map +1 -1
  54. package/dist/cli/src/commands/summaries.d.ts +1 -0
  55. package/dist/cli/src/commands/summaries.js +77 -0
  56. package/dist/cli/src/commands/summaries.js.map +1 -0
  57. package/dist/cli/src/commands/summarize.d.ts +1 -0
  58. package/dist/cli/src/commands/summarize.js +316 -0
  59. package/dist/cli/src/commands/summarize.js.map +1 -0
  60. package/dist/cli/src/commands/sync.js +135 -12
  61. package/dist/cli/src/commands/sync.js.map +1 -1
  62. package/dist/cli/src/commands/validate.js +25 -1
  63. package/dist/cli/src/commands/validate.js.map +1 -1
  64. package/dist/cli/src/dev/verifyAgentE2E.d.ts +2 -0
  65. package/dist/cli/src/dev/verifyAgentE2E.js +391 -0
  66. package/dist/cli/src/dev/verifyAgentE2E.js.map +1 -0
  67. package/dist/cli/src/dev/verifyCleanCommand.js +213 -2
  68. package/dist/cli/src/dev/verifyCleanCommand.js.map +1 -1
  69. package/dist/cli/src/dev/verifyRuntimeSurface.js +4940 -54
  70. package/dist/cli/src/dev/verifyRuntimeSurface.js.map +1 -1
  71. package/dist/cli/src/dev/verifyWorkflowE2E.js +477 -45
  72. package/dist/cli/src/dev/verifyWorkflowE2E.js.map +1 -1
  73. package/dist/cli/src/index.js +184 -6
  74. package/dist/cli/src/index.js.map +1 -1
  75. package/dist/cli/src/report.d.ts +26 -0
  76. package/dist/cli/src/report.js +17 -0
  77. package/dist/cli/src/report.js.map +1 -0
  78. package/dist/core/src/artifacts/readiness.d.ts +7 -0
  79. package/dist/core/src/artifacts/readiness.js +240 -0
  80. package/dist/core/src/artifacts/readiness.js.map +1 -0
  81. package/dist/core/src/artifacts/registry.d.ts +9 -2
  82. package/dist/core/src/artifacts/registry.js +687 -60
  83. package/dist/core/src/artifacts/registry.js.map +1 -1
  84. package/dist/core/src/commands/registry.js +1425 -146
  85. package/dist/core/src/commands/registry.js.map +1 -1
  86. package/dist/core/src/contracts/index.d.ts +1 -1
  87. package/dist/core/src/fs/index.d.ts +24 -0
  88. package/dist/core/src/fs/index.js +48 -1
  89. package/dist/core/src/fs/index.js.map +1 -1
  90. package/dist/core/src/git/autonomousSimulator.d.ts +46 -0
  91. package/dist/core/src/git/autonomousSimulator.js +163 -0
  92. package/dist/core/src/git/autonomousSimulator.js.map +1 -0
  93. package/dist/core/src/git/branchIdentity.d.ts +19 -0
  94. package/dist/core/src/git/branchIdentity.js +75 -0
  95. package/dist/core/src/git/branchIdentity.js.map +1 -0
  96. package/dist/core/src/git/draftPrPilot.d.ts +47 -0
  97. package/dist/core/src/git/draftPrPilot.js +196 -0
  98. package/dist/core/src/git/draftPrPilot.js.map +1 -0
  99. package/dist/core/src/git/localEvidenceReader.d.ts +21 -0
  100. package/dist/core/src/git/localEvidenceReader.js +142 -0
  101. package/dist/core/src/git/localEvidenceReader.js.map +1 -0
  102. package/dist/core/src/git/localGitAutomation.d.ts +68 -0
  103. package/dist/core/src/git/localGitAutomation.js +470 -0
  104. package/dist/core/src/git/localGitAutomation.js.map +1 -0
  105. package/dist/core/src/git/mergeReadinessCheckpoint.d.ts +31 -0
  106. package/dist/core/src/git/mergeReadinessCheckpoint.js +110 -0
  107. package/dist/core/src/git/mergeReadinessCheckpoint.js.map +1 -0
  108. package/dist/core/src/git/prReadySummary.d.ts +16 -0
  109. package/dist/core/src/git/prReadySummary.js +144 -0
  110. package/dist/core/src/git/prReadySummary.js.map +1 -0
  111. package/dist/core/src/git/remoteReadonlyPlanner.d.ts +60 -0
  112. package/dist/core/src/git/remoteReadonlyPlanner.js +223 -0
  113. package/dist/core/src/git/remoteReadonlyPlanner.js.map +1 -0
  114. package/dist/core/src/onboarding/agentsGuide.d.ts +32 -0
  115. package/dist/core/src/onboarding/agentsGuide.js +164 -0
  116. package/dist/core/src/onboarding/agentsGuide.js.map +1 -0
  117. package/dist/core/src/validators/validateOpenWorkflow.js +1331 -15
  118. package/dist/core/src/validators/validateOpenWorkflow.js.map +1 -1
  119. package/dist/core/src/validators/validateRepositoryContracts.js +2321 -306
  120. package/dist/core/src/validators/validateRepositoryContracts.js.map +1 -1
  121. package/dist/core/src/workflow/cleanOpenWorkflow.d.ts +2 -0
  122. package/dist/core/src/workflow/cleanOpenWorkflow.js +97 -8
  123. package/dist/core/src/workflow/cleanOpenWorkflow.js.map +1 -1
  124. package/dist/core/src/workflow/doctorOpenWorkflow.d.ts +7 -0
  125. package/dist/core/src/workflow/doctorOpenWorkflow.js +26 -0
  126. package/dist/core/src/workflow/doctorOpenWorkflow.js.map +1 -0
  127. package/dist/core/src/workflow/initOpenWorkflow.d.ts +7 -0
  128. package/dist/core/src/workflow/initOpenWorkflow.js +96 -8
  129. package/dist/core/src/workflow/initOpenWorkflow.js.map +1 -1
  130. package/dist/core/src/workflow/planningQueueResume.d.ts +105 -0
  131. package/dist/core/src/workflow/planningQueueResume.js +596 -0
  132. package/dist/core/src/workflow/planningQueueResume.js.map +1 -0
  133. package/dist/core/src/workflow/readWorkflowConfig.d.ts +6 -0
  134. package/dist/core/src/workflow/readWorkflowConfig.js +28 -0
  135. package/dist/core/src/workflow/readWorkflowConfig.js.map +1 -0
  136. package/dist/core/src/workflow/summaryHealth.d.ts +60 -0
  137. package/dist/core/src/workflow/summaryHealth.js +713 -0
  138. package/dist/core/src/workflow/summaryHealth.js.map +1 -0
  139. package/dist/core/src/workflow/syncOpenWorkflow.d.ts +22 -0
  140. package/dist/core/src/workflow/syncOpenWorkflow.js +235 -0
  141. package/dist/core/src/workflow/syncOpenWorkflow.js.map +1 -0
  142. package/package.json +2 -1
  143. package/references/artifact-authoring-templates.md +14 -12
  144. package/references/artifact-instruction-envelope.md +133 -0
  145. package/references/coder-continuous-growth-loop.md +68 -0
  146. package/references/gh-operation-governance.md +114 -0
  147. package/references/git-automation-governance.md +324 -0
  148. package/references/git-version-control-governance.md +227 -0
  149. package/references/internal-coder-protocol.md +202 -0
  150. package/references/issue-governance.md +115 -0
  151. package/references/planning-artifact-contracts.md +595 -0
  152. package/references/planning-skill-runtime-exposure.md +159 -0
  153. package/references/proto-redesign-artifact-contracts.md +217 -0
  154. package/references/proto2html-artifact-contracts.md +113 -0
  155. package/references/skill-system-lifecycle.md +198 -0
  156. package/references/validation-trust-domains.md +286 -0
  157. package/references/workflow-blueprint-runtime-alignment.md +287 -0
  158. package/schemas/atom-tasks.schema.json +101 -0
  159. package/schemas/candidate-changes.schema.json +323 -0
  160. package/schemas/current-state.schema.json +113 -0
  161. package/schemas/html-prototype.schema.json +288 -0
  162. package/schemas/openworkflow-contract.schema.json +9 -1
  163. package/schemas/proto-prompt-pack.schema.json +1333 -0
  164. package/schemas/prototype-evidence.schema.json +684 -142
  165. package/schemas/selected-change.schema.json +104 -0
  166. package/schemas/validation-target.schema.json +187 -1
  167. package/schemas/validation.schema.json +187 -1
  168. package/schemas/vision-session.schema.json +151 -0
  169. package/skills/analyze-changes/SKILL.md +92 -0
  170. package/skills/analyze-changes/agents/openai.yaml +4 -0
  171. package/skills/analyze-changes/references/analysis-protocol.md +116 -0
  172. package/skills/build-proto-prompt/SKILL.md +125 -0
  173. package/skills/build-proto-prompt/references/output-boundary.md +54 -0
  174. package/skills/build-proto-prompt/references/prompt-pack-compiler-protocol.md +80 -0
  175. package/skills/build-prototype/SKILL.md +162 -38
  176. package/skills/build-prototype/agents/openai.yaml +2 -2
  177. package/skills/build-prototype/references/philosophy-engine.md +61 -0
  178. package/skills/build-prototype/references/strategic-prompt-pack-protocol.md +365 -0
  179. package/skills/build-prototype/references/vision2prompt/01_input_contract.md +84 -0
  180. package/skills/build-prototype/references/vision2prompt/02_vision_decomposition.md +108 -0
  181. package/skills/build-prototype/references/vision2prompt/03_strategy_hypothesis_generation.md +89 -0
  182. package/skills/build-prototype/references/vision2prompt/04_product_system_extraction.md +78 -0
  183. package/skills/build-prototype/references/vision2prompt/05_prototype_prompt_schema.md +189 -0
  184. package/skills/build-prototype/references/vision2prompt/06_output_templates.md +125 -0
  185. package/skills/build-prototype/references/vision2prompt/07_quality_rubric.md +171 -0
  186. package/skills/build-validation/SKILL.md +136 -54
  187. package/skills/build-validation/references/prototype-validation-target-rubric.md +35 -0
  188. package/skills/build-validation/references/return-to-vision-gate.md +32 -0
  189. package/skills/build-vision/SKILL.md +192 -0
  190. package/skills/build-vision/references/proto-readiness-rubric.md +48 -0
  191. package/skills/build-vision/references/vision-interview-protocol.md +48 -0
  192. package/skills/coder/SKILL.md +204 -0
  193. package/skills/decompose-to-changes/SKILL.md +176 -0
  194. package/skills/decompose-to-changes/agents/openai.yaml +4 -0
  195. package/skills/decompose-to-changes/references/decomposition-protocol.md +278 -0
  196. package/skills/prompt2proto/SKILL.md +157 -0
  197. package/skills/prompt2proto/agents/openai.yaml +4 -0
  198. package/skills/prompt2proto/references/00_role_philosophy_engine.md +96 -0
  199. package/skills/prompt2proto/references/01_input_contract.md +53 -0
  200. package/skills/prompt2proto/references/02_prompt_pack_readiness.md +50 -0
  201. package/skills/prompt2proto/references/03_visual_translation_workflow.md +64 -0
  202. package/skills/prompt2proto/references/04_output_contract.md +67 -0
  203. package/skills/prompt2proto/references/05_quality_rubric.md +46 -0
  204. package/skills/proto2html/SKILL.md +136 -0
  205. package/skills/proto2html/agents/openai.yaml +4 -0
  206. package/skills/proto2html/references/proto2html-protocol.md +115 -0
  207. package/skills/run-team/SKILL.md +4 -0
  208. package/skills/select-change/SKILL.md +200 -0
  209. package/skills/select-change/agents/openai.yaml +4 -0
  210. package/skills/select-change/references/selection-protocol.md +281 -0
  211. package/skills/tune-prototype/SKILL.md +121 -0
  212. package/skills/tune-prototype/agents/openai.yaml +4 -0
  213. package/skills/tune-prototype/references/refined-prompt-pack-protocol.md +161 -0
@@ -0,0 +1,280 @@
1
+ import { resolve } from "node:path";
2
+ import { buildPlanningQueueResume } from "../../../core/src/workflow/planningQueueResume.js";
3
+ import { buildSummaryQualitySummary, evaluateSummaryQualityGate } from "../../../core/src/workflow/summaryHealth.js";
4
+ import { booleanFlag, stringFlag } from "../args.js";
5
+ import { emptyEffects, printJsonReport } from "../report.js";
6
+ import { buildBriefModel } from "./brief.js";
7
+ import { buildReadiness } from "./check.js";
8
+ import { buildHandoffModel } from "./handoff.js";
9
+ import { buildInspectModel } from "./inspect.js";
10
+ import { parseTools } from "./shared.js";
11
+ export async function resumeCommand(flags) {
12
+ const root = resolve(stringFlag(flags, "root", ".") ?? ".");
13
+ const json = booleanFlag(flags, "json");
14
+ const brief = await buildBriefModel(root, parseTools(stringFlag(flags, "tools")));
15
+ const nextCommand = brief.workflow.next_command;
16
+ const nextCommandCheck = nextCommand ? await buildReadiness(root, nextCommand) : null;
17
+ const strictQuality = evaluateSummaryQualityGate(brief.health.summaries, true);
18
+ const inspect = buildInspectModel(brief, nextCommandCheck, strictQuality);
19
+ const qualitySummary = buildSummaryQualitySummary(brief.health.summaries, strictQuality);
20
+ const handoff = buildHandoffModel(brief, nextCommandCheck, inspect.read_order, qualitySummary);
21
+ const planningQueue = await buildPlanningQueueResume(root, brief.git.branch);
22
+ const model = buildResumeModel(brief, nextCommandCheck, handoff, planningQueue);
23
+ const warnings = warningsFor(brief, nextCommandCheck, model, planningQueue.warnings);
24
+ const healthErrors = model.trust.handoff_ok ? [] : model.trust.blocking_reasons;
25
+ if (json) {
26
+ printJsonReport({
27
+ command: "resume",
28
+ ok: model.trust.handoff_ok,
29
+ root,
30
+ data: model,
31
+ warnings,
32
+ errors: healthErrors,
33
+ health_errors: healthErrors,
34
+ effects: emptyEffects(),
35
+ next_actions: model.actions.immediate,
36
+ });
37
+ }
38
+ else {
39
+ printResume(model);
40
+ }
41
+ return model.trust.handoff_ok ? 0 : 1;
42
+ }
43
+ function buildResumeModel(brief, nextCommandCheck, handoff, planningQueue) {
44
+ return {
45
+ resume_version: "0.1.0",
46
+ project: brief.project,
47
+ command_boundary: {
48
+ read_only: true,
49
+ writes: [],
50
+ allowed_commands: [
51
+ "openworkflow handoff --root . --json",
52
+ "openworkflow inspect --root . --strict --json",
53
+ "openworkflow context --root . --handoff --json",
54
+ "openworkflow check <next_command> --root . --json",
55
+ "openworkflow summaries --root . --strict --json",
56
+ "git status --short --branch",
57
+ ],
58
+ forbidden_operations: [
59
+ "mutate .openworkflow/CURRENT_STATE.yaml",
60
+ "refresh SUMMARY.yaml files",
61
+ "select, reprioritize, or complete candidate changes",
62
+ "stage or commit files",
63
+ "push, open PRs, or mutate remote state",
64
+ ],
65
+ deferred_capabilities: [
66
+ "artifact lineage graph",
67
+ "write/commit preflight compiler",
68
+ "project-local SOUL.md and MEMORY.md learning artifacts",
69
+ ],
70
+ },
71
+ trust: {
72
+ handoff_ok: handoff.handoff_ok,
73
+ blocking_reasons: handoff.blocking_reasons,
74
+ managed_surface_ok: handoff.managed_surface_ok,
75
+ adapter_ok: handoff.adapter_ok,
76
+ summary_freshness_ok: handoff.summary_freshness_ok,
77
+ summary_quality_ok: handoff.summary_quality_ok,
78
+ next_command_ready: handoff.next_command_ready,
79
+ quality_summary: handoff.quality_summary,
80
+ },
81
+ workflow: {
82
+ active_stage: handoff.active_stage,
83
+ next_command: handoff.next_command,
84
+ active_pointers: handoff.active_pointers,
85
+ read_order: handoff.read_order,
86
+ next_command_check: nextCommandCheck,
87
+ },
88
+ active_queue: planningQueue.active_queue,
89
+ current_work_item: planningQueue.current_work_item,
90
+ actions: {
91
+ immediate: immediateActionsFor(handoff, brief, planningQueue.current_work_item),
92
+ allowed_next_steps: allowedNextStepsFor(handoff),
93
+ allowed_actions: allowedActionsFor(handoff, planningQueue.current_work_item),
94
+ forbidden_actions: forbiddenActionsFor(nextCommandCheck, planningQueue.current_work_item),
95
+ stop_conditions: stopConditionsFor(handoff, brief, planningQueue.current_work_item),
96
+ stop_if: stopConditionsFor(handoff, brief, planningQueue.current_work_item),
97
+ },
98
+ evidence: {
99
+ primary_context: primaryContextFor(handoff.read_order),
100
+ primary: primaryEvidenceFor(planningQueue.active_queue, planningQueue.current_work_item),
101
+ auxiliary: auxiliaryEvidenceFor(planningQueue.active_queue, planningQueue.current_work_item),
102
+ comparison: comparisonEvidenceFor(planningQueue.active_queue),
103
+ raw_evidence_only_if: handoff.read_order.raw_evidence_only_if,
104
+ missing_or_unknown: missingOrUnknownFor(planningQueue.active_queue, planningQueue.current_work_item),
105
+ },
106
+ product_alignment: productAlignmentFor(handoff.active_pointers),
107
+ git: brief.git,
108
+ sources: [
109
+ "brief",
110
+ "inspect --strict",
111
+ "handoff",
112
+ ...(nextCommandCheck ? ["check <next_command>"] : []),
113
+ "summaries --strict",
114
+ "git status --porcelain",
115
+ ...planningQueue.sources,
116
+ ],
117
+ };
118
+ }
119
+ function missingOrUnknownFor(activeQueue, currentWorkItem) {
120
+ return unique([
121
+ activeQueue.status === "unknown" ? "active planning queue" : "",
122
+ currentWorkItem.status === "unknown" ? "selected candidate/current work item" : "",
123
+ ...(activeQueue.status === "found" && activeQueue.commit_evidence.missing.length > 0 ? ["candidate-specific commit evidence"] : []),
124
+ ]);
125
+ }
126
+ function immediateActionsFor(handoff, brief, currentWorkItem) {
127
+ if (handoff.handoff_ok) {
128
+ return unique([
129
+ currentWorkItem.status !== "unknown" ? currentWorkItem.next_action ?? "" : "",
130
+ ...handoff.next_actions,
131
+ brief.git.dirty ? "inspect git.changed_files before editing; preserve existing uncommitted work" : "",
132
+ ]);
133
+ }
134
+ return unique([
135
+ "stop implementation until trust blockers are resolved",
136
+ currentWorkItem.status !== "unknown" ? currentWorkItem.next_action ?? "" : "",
137
+ ...handoff.next_actions,
138
+ ]);
139
+ }
140
+ function allowedNextStepsFor(handoff) {
141
+ if (!handoff.handoff_ok) {
142
+ return [
143
+ "read blocking_reasons",
144
+ "run the recommended maintenance/read-only diagnostics",
145
+ "resume only after handoff_ok is true",
146
+ ];
147
+ }
148
+ return unique([
149
+ "load only workflow.read_order.must_read first",
150
+ "use current_work_item.next_action when active_queue.status is found",
151
+ "continue with workflow.next_command only when no queue-local action is available",
152
+ "load raw evidence only when evidence.raw_evidence_only_if applies",
153
+ ]);
154
+ }
155
+ function allowedActionsFor(handoff, currentWorkItem) {
156
+ if (!handoff.handoff_ok) {
157
+ return ["repair trust blockers before implementation"];
158
+ }
159
+ if (currentWorkItem.status === "unknown") {
160
+ return ["run read-only diagnostics until behavior boundary is known"];
161
+ }
162
+ return unique([
163
+ currentWorkItem.next_action ?? "",
164
+ currentWorkItem.status === "selected" ? "continue only the selected change" : "",
165
+ currentWorkItem.status === "next_ready" ? "select the ready candidate before implementation" : "",
166
+ ...currentWorkItem.owned_paths.map((path) => `edit owned path: ${path}`),
167
+ ...currentWorkItem.validation_commands.map((command) => `run validation: ${command}`),
168
+ currentWorkItem.commit_evidence.required ? "record local commit evidence through openworkflow git-automation commit" : "",
169
+ ]);
170
+ }
171
+ function forbiddenActionsFor(nextCommandCheck, currentWorkItem) {
172
+ const commandForbidden = nextCommandCheck?.forbidden_outputs.map((path) => `write forbidden command output: ${path}`) ?? [];
173
+ if (currentWorkItem.status === "unknown") {
174
+ return unique([
175
+ "select or implement work before active queue/current work item is known",
176
+ ...commandForbidden,
177
+ ]);
178
+ }
179
+ return unique([
180
+ ...currentWorkItem.forbidden_paths.map((path) => `edit forbidden path: ${path}`),
181
+ ...currentWorkItem.scope.excludes.map((item) => `out of scope: ${item}`),
182
+ ...commandForbidden,
183
+ "push, create PRs, merge, or mutate remote state without explicit approval",
184
+ ]);
185
+ }
186
+ function stopConditionsFor(handoff, brief, currentWorkItem) {
187
+ return unique([
188
+ ...handoff.blocking_reasons,
189
+ ...brief.workflow.blocked_by.map((item) => `CURRENT_STATE blocked_by: ${item}`),
190
+ brief.git.dirty ? "git worktree has uncommitted changes; classify ownership before editing" : "",
191
+ ...(currentWorkItem.status === "unknown" ? ["active_queue.status is unknown and the task requires queue-specific mutation"] : []),
192
+ ...(currentWorkItem.status !== "unknown" ? currentWorkItem.stop_if : []),
193
+ ]);
194
+ }
195
+ function primaryContextFor(readOrder) {
196
+ return unique([
197
+ ...readOrder.must_read,
198
+ "openworkflow resume --root . --json",
199
+ ]);
200
+ }
201
+ function primaryEvidenceFor(activeQueue, currentWorkItem) {
202
+ return unique([
203
+ activeQueue.status === "found" ? activeQueue.queue_path : "",
204
+ currentWorkItem.status !== "unknown" ? currentWorkItem.selected_change_path ?? "" : "",
205
+ currentWorkItem.status !== "unknown" ? currentWorkItem.atom_tasks_path ?? "" : "",
206
+ currentWorkItem.status !== "unknown" ? currentWorkItem.implementation_brief_path ?? "" : "",
207
+ ]);
208
+ }
209
+ function auxiliaryEvidenceFor(activeQueue, currentWorkItem) {
210
+ return unique([
211
+ activeQueue.status === "found" ? activeQueue.summary_path ?? "" : "",
212
+ currentWorkItem.status !== "unknown" ? currentWorkItem.commit_evidence.expected_path ?? "" : "",
213
+ ...(activeQueue.status === "found" && activeQueue.completed_candidate?.selected_change_id
214
+ ? [`completed candidate ${activeQueue.completed_candidate.id}: ${activeQueue.completed_candidate.selected_change_id}`]
215
+ : []),
216
+ ]);
217
+ }
218
+ function comparisonEvidenceFor(activeQueue) {
219
+ return activeQueue.status === "found"
220
+ ? activeQueue.alternatives.map((item) => `${item.queue_path}: ${item.reason}`)
221
+ : [];
222
+ }
223
+ function productAlignmentFor(activePointers) {
224
+ const available = Object.entries(activePointers)
225
+ .filter(([, value]) => typeof value === "string" && value.length > 0)
226
+ .map(([key, value]) => `${key}: ${value}`);
227
+ return {
228
+ active_pointers: activePointers,
229
+ available_context: available,
230
+ missing_context: available.length === 0 ? ["no active vision, validation, design, spec, decision, or accepted evidence pointer is registered"] : [],
231
+ };
232
+ }
233
+ function warningsFor(brief, nextCommandCheck, model, planningQueueWarnings) {
234
+ return unique([
235
+ ...brief.health.workflow.warnings,
236
+ ...brief.health.agents_md.warnings,
237
+ ...Object.values(brief.health.adapters).flatMap((section) => section.warnings),
238
+ ...brief.health.summaries.warnings,
239
+ ...nextCommandCheck?.warnings ?? [],
240
+ ...planningQueueWarnings,
241
+ ...(model.active_queue.status === "unknown" ? model.active_queue.uncertainty : []),
242
+ ...(model.current_work_item.status === "unknown" ? model.current_work_item.uncertainty : []),
243
+ ]);
244
+ }
245
+ function printResume(model) {
246
+ console.log(`OpenWorkflow resume for ${model.project.title}`);
247
+ console.log(`root: ${model.project.root}`);
248
+ console.log(`handoff_ok: ${model.trust.handoff_ok}`);
249
+ console.log(`active_stage: ${model.workflow.active_stage ?? "unknown"}`);
250
+ console.log(`next_command: ${model.workflow.next_command ?? "none"}`);
251
+ console.log(`next_command_ready: ${model.trust.next_command_ready ?? "unknown"}`);
252
+ console.log(`active_queue: ${activeQueueLabel(model.active_queue)}`);
253
+ console.log(`current_work_item: ${currentWorkItemLabel(model.current_work_item)}`);
254
+ console.log(`git: available=${model.git.available}, branch=${model.git.branch ?? "none"}, dirty=${model.git.dirty}`);
255
+ printList("blocking_reasons", model.trust.blocking_reasons);
256
+ printList("must_read", model.workflow.read_order.must_read);
257
+ printList("immediate_actions", model.actions.immediate);
258
+ }
259
+ function activeQueueLabel(queue) {
260
+ if (queue.status === "unknown") {
261
+ return `unknown (${queue.reason})`;
262
+ }
263
+ return `${queue.plan_id} (${queue.breakpoint.status})`;
264
+ }
265
+ function currentWorkItemLabel(workItem) {
266
+ if (workItem.status === "unknown") {
267
+ return `unknown (${workItem.reason})`;
268
+ }
269
+ return `${workItem.status}${workItem.candidate_id ? ` ${workItem.candidate_id}` : ""}`;
270
+ }
271
+ function printList(label, values) {
272
+ console.log(`${label}:`);
273
+ for (const value of values.length > 0 ? values : ["none"]) {
274
+ console.log(` - ${value}`);
275
+ }
276
+ }
277
+ function unique(values) {
278
+ return [...new Set(values.filter((value) => value.trim().length > 0))];
279
+ }
280
+ //# sourceMappingURL=resume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../../packages/cli/src/commands/resume.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { basename, resolve } from "node:path";
1
2
  export function parseTools(raw) {
2
3
  if (!raw) {
3
4
  return [];
@@ -5,8 +6,11 @@ export function parseTools(raw) {
5
6
  return raw.split(",").map((tool) => tool.trim()).filter(Boolean);
6
7
  }
7
8
  export function basenameForTitle(path) {
8
- const parts = path.split(/[\\/]/).filter(Boolean);
9
- return parts.at(-1) ?? "OpenWorkflow Project";
9
+ const name = basename(resolve(path));
10
+ if (!name || name === "." || name === "..") {
11
+ return "OpenWorkflow Project";
12
+ }
13
+ return name;
10
14
  }
11
15
  export function slugify(value) {
12
16
  return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "project";
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../packages/cli/src/commands/shared.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,GAAuB;IAChD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../packages/cli/src/commands/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,UAAU,UAAU,CAAC,GAAuB;IAChD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function summariesCommand(flags: Map<string, string | boolean>): Promise<number>;
@@ -0,0 +1,77 @@
1
+ import { resolve } from "node:path";
2
+ import { evaluateSummaryHealth, evaluateSummaryQualityGate, } from "../../../core/src/workflow/summaryHealth.js";
3
+ import { booleanFlag, stringFlag } from "../args.js";
4
+ import { emptyEffects, printJsonReport } from "../report.js";
5
+ export async function summariesCommand(flags) {
6
+ const root = resolve(stringFlag(flags, "root", ".") ?? ".");
7
+ const json = booleanFlag(flags, "json");
8
+ const strict = booleanFlag(flags, "strict");
9
+ const health = await evaluateSummaryHealth(root);
10
+ const qualityGate = evaluateSummaryQualityGate(health, strict);
11
+ const ok = health.ok && qualityGate.ok;
12
+ if (json) {
13
+ const healthErrors = healthErrorsForSummaries(health, qualityGate);
14
+ printJsonReport({
15
+ command: "summaries",
16
+ ok,
17
+ root,
18
+ data: {
19
+ ...health,
20
+ strict_quality: qualityGate,
21
+ },
22
+ warnings: health.warnings,
23
+ errors: health.initialized ? [] : health.warnings,
24
+ health_errors: healthErrors,
25
+ effects: emptyEffects(),
26
+ next_actions: nextActionsFor(health, qualityGate),
27
+ });
28
+ }
29
+ else {
30
+ printSummaries(health, qualityGate);
31
+ }
32
+ return ok ? 0 : 1;
33
+ }
34
+ function healthErrorsForSummaries(health, qualityGate) {
35
+ const freshnessErrors = health.ok
36
+ ? []
37
+ : health.warnings.length > 0 ? health.warnings : ["summary health is not ok"];
38
+ return unique([...freshnessErrors, ...qualityGate.health_errors]);
39
+ }
40
+ function nextActionsFor(health, qualityGate) {
41
+ const strictActions = qualityGate.health_errors.length > 0
42
+ ? ["repair thin source artifacts or inspect raw evidence before trusting summaries"]
43
+ : [];
44
+ return unique([...health.next_actions, ...strictActions]);
45
+ }
46
+ function printSummaries(health, qualityGate) {
47
+ console.log("OpenWorkflow summary health");
48
+ console.log(`ok: ${health.ok && qualityGate.ok}`);
49
+ console.log(`strict_quality: ${qualityGate.strict}`);
50
+ console.log(`initialized: ${health.initialized}`);
51
+ if (!health.initialized) {
52
+ for (const warning of health.warnings) {
53
+ console.log(`warning: ${warning}`);
54
+ }
55
+ }
56
+ console.log(`counts: current=${health.counts.current}, missing=${health.counts.missing}, stale_unknown=${health.counts.stale_unknown}, not_instantiated=${health.counts.not_instantiated}, not_applicable=${health.counts.not_applicable}`);
57
+ for (const entry of health.entries) {
58
+ if (entry.strategy === "none") {
59
+ continue;
60
+ }
61
+ console.log(`${entry.artifact_type}: ${entry.status} (${entry.instantiated_count} instantiated, ${entry.strategy})`);
62
+ for (const item of entry.items.filter((candidate) => candidate.quality_status === "current_but_thin")) {
63
+ console.log(` quality: ${item.quality_status} (${item.artifact_path})`);
64
+ }
65
+ }
66
+ const nextActions = nextActionsFor(health, qualityGate);
67
+ if (nextActions.length > 0) {
68
+ console.log("next_actions:");
69
+ for (const action of nextActions) {
70
+ console.log(` - ${action}`);
71
+ }
72
+ }
73
+ }
74
+ function unique(values) {
75
+ return [...new Set(values.filter((value) => value.trim().length > 0))];
76
+ }
77
+ //# sourceMappingURL=summaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summaries.js","sourceRoot":"","sources":["../../../../packages/cli/src/commands/summaries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function summarizeCommand(flags: Map<string, string | boolean>): Promise<number>;