@davidorex/pi-workflows 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/CHANGELOG.md +7 -4
  2. package/README.md +12 -2
  3. package/agents/architecture-designer.agent.yaml +58 -0
  4. package/agents/architecture-inferrer.agent.yaml +60 -0
  5. package/agents/gap-identifier.agent.yaml +66 -0
  6. package/agents/handoff-writer.agent.yaml +64 -0
  7. package/agents/plan-creator.agent.yaml +63 -0
  8. package/agents/project-definer.agent.yaml +53 -0
  9. package/agents/project-inferrer.agent.yaml +63 -0
  10. package/agents/requirements-gatherer.agent.yaml +58 -0
  11. package/dist/agent-spec.d.ts +27 -0
  12. package/dist/agent-spec.d.ts.map +1 -0
  13. package/dist/agent-spec.js +112 -0
  14. package/dist/agent-spec.js.map +1 -0
  15. package/dist/checkpoint.d.ts +50 -0
  16. package/dist/checkpoint.d.ts.map +1 -0
  17. package/dist/checkpoint.js +109 -0
  18. package/dist/checkpoint.js.map +1 -0
  19. package/dist/completion.d.ts +18 -0
  20. package/dist/completion.d.ts.map +1 -0
  21. package/dist/completion.js +58 -0
  22. package/dist/completion.js.map +1 -0
  23. package/dist/dag.d.ts +56 -0
  24. package/dist/dag.d.ts.map +1 -0
  25. package/dist/dag.js +178 -0
  26. package/dist/dag.js.map +1 -0
  27. package/dist/dispatch.d.ts +35 -0
  28. package/dist/dispatch.d.ts.map +1 -0
  29. package/dist/dispatch.js +311 -0
  30. package/dist/dispatch.js.map +1 -0
  31. package/dist/expression.d.ts +64 -0
  32. package/dist/expression.d.ts.map +1 -0
  33. package/dist/expression.js +294 -0
  34. package/dist/expression.js.map +1 -0
  35. package/dist/format.d.ts +19 -0
  36. package/dist/format.d.ts.map +1 -0
  37. package/dist/format.js +42 -0
  38. package/dist/format.js.map +1 -0
  39. package/dist/index.d.ts +8 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +724 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/output.d.ts +12 -0
  44. package/dist/output.d.ts.map +1 -0
  45. package/dist/output.js +59 -0
  46. package/dist/output.js.map +1 -0
  47. package/dist/state.d.ts +66 -0
  48. package/dist/state.d.ts.map +1 -0
  49. package/dist/state.js +227 -0
  50. package/dist/state.js.map +1 -0
  51. package/dist/step-agent.d.ts +35 -0
  52. package/dist/step-agent.d.ts.map +1 -0
  53. package/dist/step-agent.js +171 -0
  54. package/dist/step-agent.js.map +1 -0
  55. package/dist/step-command.d.ts +21 -0
  56. package/dist/step-command.d.ts.map +1 -0
  57. package/dist/step-command.js +150 -0
  58. package/dist/step-command.js.map +1 -0
  59. package/dist/step-foreach.d.ts +33 -0
  60. package/dist/step-foreach.d.ts.map +1 -0
  61. package/dist/step-foreach.js +112 -0
  62. package/dist/step-foreach.js.map +1 -0
  63. package/dist/step-gate.d.ts +18 -0
  64. package/dist/step-gate.d.ts.map +1 -0
  65. package/dist/step-gate.js +137 -0
  66. package/dist/step-gate.js.map +1 -0
  67. package/dist/step-loop.d.ts +32 -0
  68. package/dist/step-loop.d.ts.map +1 -0
  69. package/dist/step-loop.js +278 -0
  70. package/dist/step-loop.js.map +1 -0
  71. package/dist/step-monitor.d.ts +56 -0
  72. package/dist/step-monitor.d.ts.map +1 -0
  73. package/dist/step-monitor.js +317 -0
  74. package/dist/step-monitor.js.map +1 -0
  75. package/dist/step-parallel.d.ts +43 -0
  76. package/dist/step-parallel.d.ts.map +1 -0
  77. package/dist/step-parallel.js +122 -0
  78. package/dist/step-parallel.js.map +1 -0
  79. package/{src/step-pause.ts → dist/step-pause.d.ts} +3 -13
  80. package/dist/step-pause.d.ts.map +1 -0
  81. package/dist/step-pause.js +22 -0
  82. package/dist/step-pause.js.map +1 -0
  83. package/dist/step-shared.d.ts +63 -0
  84. package/dist/step-shared.d.ts.map +1 -0
  85. package/dist/step-shared.js +136 -0
  86. package/dist/step-shared.js.map +1 -0
  87. package/dist/step-transform.d.ts +11 -0
  88. package/dist/step-transform.d.ts.map +1 -0
  89. package/dist/step-transform.js +41 -0
  90. package/dist/step-transform.js.map +1 -0
  91. package/dist/template.d.ts +51 -0
  92. package/dist/template.d.ts.map +1 -0
  93. package/{src/template.ts → dist/template.js} +32 -38
  94. package/dist/template.js.map +1 -0
  95. package/dist/test-helpers.d.ts +17 -0
  96. package/dist/test-helpers.d.ts.map +1 -0
  97. package/dist/test-helpers.js +46 -0
  98. package/dist/test-helpers.js.map +1 -0
  99. package/dist/tui.d.ts +47 -0
  100. package/dist/tui.d.ts.map +1 -0
  101. package/dist/tui.js +143 -0
  102. package/dist/tui.js.map +1 -0
  103. package/dist/types.d.ts +165 -0
  104. package/dist/types.d.ts.map +1 -0
  105. package/dist/types.js +3 -0
  106. package/dist/types.js.map +1 -0
  107. package/dist/workflow-discovery.d.ts +23 -0
  108. package/dist/workflow-discovery.d.ts.map +1 -0
  109. package/dist/workflow-discovery.js +103 -0
  110. package/dist/workflow-discovery.js.map +1 -0
  111. package/dist/workflow-executor.d.ts +50 -0
  112. package/dist/workflow-executor.d.ts.map +1 -0
  113. package/dist/workflow-executor.js +738 -0
  114. package/dist/workflow-executor.js.map +1 -0
  115. package/dist/workflow-sdk.d.ts +44 -0
  116. package/dist/workflow-sdk.d.ts.map +1 -0
  117. package/dist/workflow-sdk.js +457 -0
  118. package/dist/workflow-sdk.js.map +1 -0
  119. package/dist/workflow-spec.d.ts +33 -0
  120. package/dist/workflow-spec.d.ts.map +1 -0
  121. package/dist/workflow-spec.js +476 -0
  122. package/dist/workflow-spec.js.map +1 -0
  123. package/dist/workflows-dir.d.ts +3 -0
  124. package/dist/workflows-dir.d.ts.map +1 -0
  125. package/{src/workflows-dir.ts → dist/workflows-dir.js} +1 -0
  126. package/dist/workflows-dir.js.map +1 -0
  127. package/package.json +53 -38
  128. package/schemas/decomposition-specs.schema.json +48 -48
  129. package/schemas/execution-results.schema.json +48 -48
  130. package/schemas/investigation-findings.schema.json +43 -43
  131. package/schemas/pattern-analysis.schema.json +41 -41
  132. package/schemas/phase.schema.json +48 -0
  133. package/schemas/plan-breakdown.schema.json +20 -20
  134. package/schemas/quality-analysis.schema.json +33 -33
  135. package/schemas/research-findings.schema.json +42 -42
  136. package/schemas/structure-analysis.schema.json +40 -40
  137. package/schemas/synthesis.schema.json +31 -31
  138. package/schemas/verifier-output.schema.json +94 -94
  139. package/skill-narrative.md +107 -0
  140. package/skills/pi-workflows/SKILL.md +185 -0
  141. package/skills/pi-workflows/references/bundled-resources.md +87 -0
  142. package/templates/architecture-designer/task.md +117 -0
  143. package/templates/architecture-inferrer/task.md +61 -0
  144. package/templates/gap-identifier/task.md +103 -0
  145. package/templates/handoff-writer/task.md +91 -0
  146. package/templates/plan-creator/task.md +143 -0
  147. package/templates/project-definer/task.md +67 -0
  148. package/templates/project-inferrer/task.md +56 -0
  149. package/templates/requirements-gatherer/task.md +90 -0
  150. package/workflows/analyze-existing-project.workflow.yaml +94 -0
  151. package/workflows/create-handoff.workflow.yaml +66 -0
  152. package/workflows/create-phase.workflow.yaml +1 -1
  153. package/workflows/do-gap.workflow.yaml +4 -4
  154. package/workflows/fix-audit.workflow.yaml +1 -1
  155. package/workflows/gap-to-phase.workflow.yaml +1 -1
  156. package/workflows/init-new-project.workflow.yaml +81 -0
  157. package/workflows/plan-from-requirements.workflow.yaml +59 -0
  158. package/workflows/self-implement.workflow.yaml +3 -3
  159. package/workflows/typed-analysis.workflow.yaml +4 -4
  160. package/src/agent-spec.test.ts +0 -289
  161. package/src/agent-spec.ts +0 -122
  162. package/src/block-validation.test.ts +0 -350
  163. package/src/checkpoint.test.ts +0 -237
  164. package/src/checkpoint.ts +0 -140
  165. package/src/completion.test.ts +0 -143
  166. package/src/completion.ts +0 -68
  167. package/src/dag.test.ts +0 -350
  168. package/src/dag.ts +0 -219
  169. package/src/dispatch.test.ts +0 -475
  170. package/src/dispatch.ts +0 -353
  171. package/src/expression.test.ts +0 -353
  172. package/src/expression.ts +0 -332
  173. package/src/format.test.ts +0 -80
  174. package/src/format.ts +0 -41
  175. package/src/graduated-failure.test.ts +0 -556
  176. package/src/index.test.ts +0 -114
  177. package/src/index.ts +0 -516
  178. package/src/loop.test.ts +0 -551
  179. package/src/output.test.ts +0 -213
  180. package/src/output.ts +0 -70
  181. package/src/parallel-integration.test.ts +0 -175
  182. package/src/resume.test.ts +0 -192
  183. package/src/state.test.ts +0 -192
  184. package/src/state.ts +0 -254
  185. package/src/step-agent.test.ts +0 -327
  186. package/src/step-agent.ts +0 -178
  187. package/src/step-command.test.ts +0 -330
  188. package/src/step-command.ts +0 -132
  189. package/src/step-foreach.test.ts +0 -647
  190. package/src/step-foreach.ts +0 -148
  191. package/src/step-gate.test.ts +0 -185
  192. package/src/step-gate.ts +0 -116
  193. package/src/step-loop.test.ts +0 -626
  194. package/src/step-loop.ts +0 -323
  195. package/src/step-parallel.test.ts +0 -475
  196. package/src/step-parallel.ts +0 -168
  197. package/src/step-pause.test.ts +0 -30
  198. package/src/step-shared.test.ts +0 -355
  199. package/src/step-shared.ts +0 -157
  200. package/src/step-transform.test.ts +0 -155
  201. package/src/step-transform.ts +0 -47
  202. package/src/template-integration.test.ts +0 -72
  203. package/src/template.test.ts +0 -162
  204. package/src/test-helpers.ts +0 -51
  205. package/src/tui.test.ts +0 -355
  206. package/src/tui.ts +0 -182
  207. package/src/types.ts +0 -195
  208. package/src/verifier-schema.test.ts +0 -226
  209. package/src/workflow-discovery.test.ts +0 -105
  210. package/src/workflow-discovery.ts +0 -114
  211. package/src/workflow-executor.test.ts +0 -1532
  212. package/src/workflow-executor.ts +0 -810
  213. package/src/workflow-sdk.test.ts +0 -238
  214. package/src/workflow-sdk.ts +0 -262
  215. package/src/workflow-spec.test.ts +0 -576
  216. package/src/workflow-spec.ts +0 -471
@@ -1,50 +1,50 @@
1
1
  {
2
- "type": "object",
3
- "required": ["specs", "ordering_rationale"],
4
- "properties": {
5
- "specs": {
6
- "type": "array",
7
- "items": {
8
- "type": "object",
9
- "required": ["name", "description", "files", "acceptance_criteria", "parallel_safe", "estimated_complexity"],
10
- "properties": {
11
- "name": {
12
- "type": "string",
13
- "description": "Kebab-case identifier for this spec"
14
- },
15
- "description": {
16
- "type": "string",
17
- "description": "What this spec implements — the unit of work"
18
- },
19
- "files": {
20
- "type": "array",
21
- "items": { "type": "string" },
22
- "description": "File paths this spec will modify"
23
- },
24
- "depends_on": {
25
- "type": "array",
26
- "items": { "type": "string" },
27
- "description": "Names of other specs that must complete before this one"
28
- },
29
- "acceptance_criteria": {
30
- "type": "array",
31
- "items": { "type": "string" },
32
- "description": "How to verify this spec is correctly implemented"
33
- },
34
- "parallel_safe": {
35
- "type": "boolean",
36
- "description": "Whether this spec can run in parallel with other parallel_safe specs that have no file overlap"
37
- },
38
- "estimated_complexity": {
39
- "type": "string",
40
- "enum": ["low", "medium", "high"]
41
- }
42
- }
43
- }
44
- },
45
- "ordering_rationale": {
46
- "type": "string",
47
- "description": "Why this ordering and parallelization structure was chosen"
48
- }
49
- }
2
+ "type": "object",
3
+ "required": ["specs", "ordering_rationale"],
4
+ "properties": {
5
+ "specs": {
6
+ "type": "array",
7
+ "items": {
8
+ "type": "object",
9
+ "required": ["name", "description", "files", "acceptance_criteria", "parallel_safe", "estimated_complexity"],
10
+ "properties": {
11
+ "name": {
12
+ "type": "string",
13
+ "description": "Kebab-case identifier for this spec"
14
+ },
15
+ "description": {
16
+ "type": "string",
17
+ "description": "What this spec implements — the unit of work"
18
+ },
19
+ "files": {
20
+ "type": "array",
21
+ "items": { "type": "string" },
22
+ "description": "File paths this spec will modify"
23
+ },
24
+ "depends_on": {
25
+ "type": "array",
26
+ "items": { "type": "string" },
27
+ "description": "Names of other specs that must complete before this one"
28
+ },
29
+ "acceptance_criteria": {
30
+ "type": "array",
31
+ "items": { "type": "string" },
32
+ "description": "How to verify this spec is correctly implemented"
33
+ },
34
+ "parallel_safe": {
35
+ "type": "boolean",
36
+ "description": "Whether this spec can run in parallel with other parallel_safe specs that have no file overlap"
37
+ },
38
+ "estimated_complexity": {
39
+ "type": "string",
40
+ "enum": ["low", "medium", "high"]
41
+ }
42
+ }
43
+ }
44
+ },
45
+ "ordering_rationale": {
46
+ "type": "string",
47
+ "description": "Why this ordering and parallelization structure was chosen"
48
+ }
49
+ }
50
50
  }
@@ -1,50 +1,50 @@
1
1
  {
2
- "type": "object",
3
- "required": ["status", "tasks"],
4
- "properties": {
5
- "status": {
6
- "type": "string",
7
- "enum": ["complete", "partial", "failed"]
8
- },
9
- "tasks": {
10
- "type": "array",
11
- "items": {
12
- "type": "object",
13
- "required": ["name", "status"],
14
- "properties": {
15
- "name": { "type": "string" },
16
- "status": { "type": "string", "enum": ["done", "partial", "skipped", "failed"] },
17
- "files_modified": { "type": "array", "items": { "type": "string" } },
18
- "commit_hash": { "type": "string" },
19
- "notes": { "type": "string" }
20
- }
21
- }
22
- },
23
- "decisions": {
24
- "type": "array",
25
- "items": {
26
- "type": "object",
27
- "required": ["id", "decision", "rationale", "status"],
28
- "properties": {
29
- "id": { "type": "string" },
30
- "decision": { "type": "string" },
31
- "rationale": { "type": "string" },
32
- "status": { "type": "string", "enum": ["decided", "deferred", "reversed"] }
33
- }
34
- }
35
- },
36
- "issues": {
37
- "type": "array",
38
- "items": {
39
- "type": "object",
40
- "required": ["severity", "description"],
41
- "properties": {
42
- "severity": { "type": "string", "enum": ["info", "warning", "error", "critical"] },
43
- "description": { "type": "string" }
44
- }
45
- }
46
- },
47
- "test_count": { "type": "integer" },
48
- "commit_hash": { "type": "string" }
49
- }
2
+ "type": "object",
3
+ "required": ["status", "tasks"],
4
+ "properties": {
5
+ "status": {
6
+ "type": "string",
7
+ "enum": ["complete", "partial", "failed"]
8
+ },
9
+ "tasks": {
10
+ "type": "array",
11
+ "items": {
12
+ "type": "object",
13
+ "required": ["name", "status"],
14
+ "properties": {
15
+ "name": { "type": "string" },
16
+ "status": { "type": "string", "enum": ["done", "partial", "skipped", "failed"] },
17
+ "files_modified": { "type": "array", "items": { "type": "string" } },
18
+ "commit_hash": { "type": "string" },
19
+ "notes": { "type": "string" }
20
+ }
21
+ }
22
+ },
23
+ "decisions": {
24
+ "type": "array",
25
+ "items": {
26
+ "type": "object",
27
+ "required": ["id", "decision", "rationale", "status"],
28
+ "properties": {
29
+ "id": { "type": "string" },
30
+ "decision": { "type": "string" },
31
+ "rationale": { "type": "string" },
32
+ "status": { "type": "string", "enum": ["decided", "deferred", "reversed"] }
33
+ }
34
+ }
35
+ },
36
+ "issues": {
37
+ "type": "array",
38
+ "items": {
39
+ "type": "object",
40
+ "required": ["severity", "description"],
41
+ "properties": {
42
+ "severity": { "type": "string", "enum": ["info", "warning", "error", "critical"] },
43
+ "description": { "type": "string" }
44
+ }
45
+ }
46
+ },
47
+ "test_count": { "type": "integer" },
48
+ "commit_hash": { "type": "string" }
49
+ }
50
50
  }
@@ -1,45 +1,45 @@
1
1
  {
2
- "type": "object",
3
- "required": ["affected_files", "constraints", "risks", "needs_research", "complexity", "summary"],
4
- "properties": {
5
- "affected_files": {
6
- "type": "array",
7
- "items": {
8
- "type": "object",
9
- "required": ["path", "role", "current_behavior"],
10
- "properties": {
11
- "path": { "type": "string" },
12
- "role": { "type": "string", "description": "What this file does in the context of the gap" },
13
- "current_behavior": { "type": "string", "description": "What it currently does that's relevant to the gap" }
14
- }
15
- }
16
- },
17
- "constraints": {
18
- "type": "array",
19
- "items": { "type": "string" },
20
- "description": "Technical constraints, invariants, or requirements that the solution must respect"
21
- },
22
- "risks": {
23
- "type": "array",
24
- "items": { "type": "string" },
25
- "description": "What could go wrong, edge cases, regression risks"
26
- },
27
- "needs_research": {
28
- "type": "boolean",
29
- "description": "Whether the gap requires external knowledge beyond what codebase analysis and LLM training data provide"
30
- },
31
- "research_questions": {
32
- "type": "array",
33
- "items": { "type": "string" },
34
- "description": "Specific questions for the research step to answer. Only meaningful if needs_research is true."
35
- },
36
- "complexity": {
37
- "type": "string",
38
- "enum": ["low", "medium", "high"]
39
- },
40
- "summary": {
41
- "type": "string",
42
- "description": "Concise summary of the investigation — what's the problem, what's involved, what's the path forward"
43
- }
44
- }
2
+ "type": "object",
3
+ "required": ["affected_files", "constraints", "risks", "needs_research", "complexity", "summary"],
4
+ "properties": {
5
+ "affected_files": {
6
+ "type": "array",
7
+ "items": {
8
+ "type": "object",
9
+ "required": ["path", "role", "current_behavior"],
10
+ "properties": {
11
+ "path": { "type": "string" },
12
+ "role": { "type": "string", "description": "What this file does in the context of the gap" },
13
+ "current_behavior": { "type": "string", "description": "What it currently does that's relevant to the gap" }
14
+ }
15
+ }
16
+ },
17
+ "constraints": {
18
+ "type": "array",
19
+ "items": { "type": "string" },
20
+ "description": "Technical constraints, invariants, or requirements that the solution must respect"
21
+ },
22
+ "risks": {
23
+ "type": "array",
24
+ "items": { "type": "string" },
25
+ "description": "What could go wrong, edge cases, regression risks"
26
+ },
27
+ "needs_research": {
28
+ "type": "boolean",
29
+ "description": "Whether the gap requires external knowledge beyond what codebase analysis and LLM training data provide"
30
+ },
31
+ "research_questions": {
32
+ "type": "array",
33
+ "items": { "type": "string" },
34
+ "description": "Specific questions for the research step to answer. Only meaningful if needs_research is true."
35
+ },
36
+ "complexity": {
37
+ "type": "string",
38
+ "enum": ["low", "medium", "high"]
39
+ },
40
+ "summary": {
41
+ "type": "string",
42
+ "description": "Concise summary of the investigation — what's the problem, what's involved, what's the path forward"
43
+ }
44
+ }
45
45
  }
@@ -1,43 +1,43 @@
1
1
  {
2
- "type": "object",
3
- "required": ["patterns", "conventions", "recommendations"],
4
- "properties": {
5
- "patterns": {
6
- "type": "array",
7
- "items": {
8
- "type": "object",
9
- "required": ["name", "usage", "files"],
10
- "properties": {
11
- "name": { "type": "string" },
12
- "usage": { "type": "string" },
13
- "files": { "type": "array", "items": { "type": "string" } },
14
- "correct": { "type": "boolean" }
15
- }
16
- }
17
- },
18
- "conventions": {
19
- "type": "array",
20
- "items": {
21
- "type": "object",
22
- "required": ["convention", "followed"],
23
- "properties": {
24
- "convention": { "type": "string" },
25
- "followed": { "type": "boolean" },
26
- "violations": { "type": "array", "items": { "type": "string" } }
27
- }
28
- }
29
- },
30
- "recommendations": {
31
- "type": "array",
32
- "items": {
33
- "type": "object",
34
- "required": ["pattern", "suggestion"],
35
- "properties": {
36
- "pattern": { "type": "string" },
37
- "suggestion": { "type": "string" },
38
- "priority": { "type": "string", "enum": ["high", "medium", "low"] }
39
- }
40
- }
41
- }
42
- }
2
+ "type": "object",
3
+ "required": ["patterns", "conventions", "recommendations"],
4
+ "properties": {
5
+ "patterns": {
6
+ "type": "array",
7
+ "items": {
8
+ "type": "object",
9
+ "required": ["name", "usage", "files"],
10
+ "properties": {
11
+ "name": { "type": "string" },
12
+ "usage": { "type": "string" },
13
+ "files": { "type": "array", "items": { "type": "string" } },
14
+ "correct": { "type": "boolean" }
15
+ }
16
+ }
17
+ },
18
+ "conventions": {
19
+ "type": "array",
20
+ "items": {
21
+ "type": "object",
22
+ "required": ["convention", "followed"],
23
+ "properties": {
24
+ "convention": { "type": "string" },
25
+ "followed": { "type": "boolean" },
26
+ "violations": { "type": "array", "items": { "type": "string" } }
27
+ }
28
+ }
29
+ },
30
+ "recommendations": {
31
+ "type": "array",
32
+ "items": {
33
+ "type": "object",
34
+ "required": ["pattern", "suggestion"],
35
+ "properties": {
36
+ "pattern": { "type": "string" },
37
+ "suggestion": { "type": "string" },
38
+ "priority": { "type": "string", "enum": ["high", "medium", "low"] }
39
+ }
40
+ }
41
+ }
42
+ }
43
43
  }
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Phase",
4
+ "type": "object",
5
+ "required": ["number", "name", "intent", "status"],
6
+ "properties": {
7
+ "number": { "type": "integer" },
8
+ "name": { "type": "string" },
9
+ "intent": { "type": "string" },
10
+ "status": { "type": "string", "enum": ["planned", "in-progress", "completed"] },
11
+ "success_criteria": {
12
+ "type": "array",
13
+ "items": {
14
+ "type": "object",
15
+ "required": ["criterion", "verify_method"],
16
+ "properties": {
17
+ "criterion": { "type": "string" },
18
+ "verify_method": { "type": "string", "enum": ["command", "inspect", "human"] }
19
+ }
20
+ }
21
+ },
22
+ "specs": {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "object",
26
+ "required": ["number", "name", "intent", "status"],
27
+ "properties": {
28
+ "number": { "type": "integer" },
29
+ "name": { "type": "string" },
30
+ "intent": { "type": "string" },
31
+ "status": { "type": "string", "enum": ["planned", "in-progress", "completed"] },
32
+ "acceptance_criteria": {
33
+ "type": "array",
34
+ "items": { "type": "string" }
35
+ }
36
+ }
37
+ }
38
+ },
39
+ "dependencies": {
40
+ "type": "array",
41
+ "items": { "type": "integer" }
42
+ },
43
+ "artifacts_produced": {
44
+ "type": "array",
45
+ "items": { "type": "string" }
46
+ }
47
+ }
48
+ }
@@ -1,22 +1,22 @@
1
1
  {
2
- "type": "object",
3
- "required": ["plans"],
4
- "properties": {
5
- "plans": {
6
- "type": "array",
7
- "items": {
8
- "type": "object",
9
- "required": ["name", "intent", "tasks", "acceptance_criteria"],
10
- "properties": {
11
- "name": { "type": "string" },
12
- "intent": { "type": "string" },
13
- "tasks": { "type": "array", "items": { "type": "string" } },
14
- "files_to_change": { "type": "array", "items": { "type": "string" } },
15
- "acceptance_criteria": { "type": "array", "items": { "type": "string" } },
16
- "context_needed": { "type": "array", "items": { "type": "string" } },
17
- "parallel_group": { "type": "string" }
18
- }
19
- }
20
- }
21
- }
2
+ "type": "object",
3
+ "required": ["plans"],
4
+ "properties": {
5
+ "plans": {
6
+ "type": "array",
7
+ "items": {
8
+ "type": "object",
9
+ "required": ["name", "intent", "tasks", "acceptance_criteria"],
10
+ "properties": {
11
+ "name": { "type": "string" },
12
+ "intent": { "type": "string" },
13
+ "tasks": { "type": "array", "items": { "type": "string" } },
14
+ "files_to_change": { "type": "array", "items": { "type": "string" } },
15
+ "acceptance_criteria": { "type": "array", "items": { "type": "string" } },
16
+ "context_needed": { "type": "array", "items": { "type": "string" } },
17
+ "parallel_group": { "type": "string" }
18
+ }
19
+ }
20
+ }
21
+ }
22
22
  }
@@ -1,35 +1,35 @@
1
1
  {
2
- "type": "object",
3
- "required": ["concerns", "testCoverage", "maintainability"],
4
- "properties": {
5
- "concerns": {
6
- "type": "array",
7
- "items": {
8
- "type": "object",
9
- "required": ["description", "severity"],
10
- "properties": {
11
- "description": { "type": "string" },
12
- "severity": { "type": "string", "enum": ["info", "warning", "critical"] },
13
- "file": { "type": "string" },
14
- "suggestion": { "type": "string" }
15
- }
16
- }
17
- },
18
- "testCoverage": {
19
- "type": "object",
20
- "required": ["tested", "untested"],
21
- "properties": {
22
- "tested": { "type": "array", "items": { "type": "string" } },
23
- "untested": { "type": "array", "items": { "type": "string" } }
24
- }
25
- },
26
- "maintainability": {
27
- "type": "object",
28
- "required": ["score", "factors"],
29
- "properties": {
30
- "score": { "type": "string", "enum": ["high", "medium", "low"] },
31
- "factors": { "type": "array", "items": { "type": "string" } }
32
- }
33
- }
34
- }
2
+ "type": "object",
3
+ "required": ["concerns", "testCoverage", "maintainability"],
4
+ "properties": {
5
+ "concerns": {
6
+ "type": "array",
7
+ "items": {
8
+ "type": "object",
9
+ "required": ["description", "severity"],
10
+ "properties": {
11
+ "description": { "type": "string" },
12
+ "severity": { "type": "string", "enum": ["info", "warning", "critical"] },
13
+ "file": { "type": "string" },
14
+ "suggestion": { "type": "string" }
15
+ }
16
+ }
17
+ },
18
+ "testCoverage": {
19
+ "type": "object",
20
+ "required": ["tested", "untested"],
21
+ "properties": {
22
+ "tested": { "type": "array", "items": { "type": "string" } },
23
+ "untested": { "type": "array", "items": { "type": "string" } }
24
+ }
25
+ },
26
+ "maintainability": {
27
+ "type": "object",
28
+ "required": ["score", "factors"],
29
+ "properties": {
30
+ "score": { "type": "string", "enum": ["high", "medium", "low"] },
31
+ "factors": { "type": "array", "items": { "type": "string" } }
32
+ }
33
+ }
34
+ }
35
35
  }
@@ -1,44 +1,44 @@
1
1
  {
2
- "type": "object",
3
- "required": ["questions", "patterns", "recommendations"],
4
- "properties": {
5
- "questions": {
6
- "type": "array",
7
- "items": {
8
- "type": "object",
9
- "required": ["question", "answer", "confidence"],
10
- "properties": {
11
- "question": { "type": "string" },
12
- "answer": { "type": "string" },
13
- "sources": {
14
- "type": "array",
15
- "items": { "type": "string" },
16
- "description": "Where the answer came from — docs, other projects, known patterns"
17
- },
18
- "confidence": {
19
- "type": "string",
20
- "enum": ["high", "medium", "low"],
21
- "description": "How confident the answer is — high = well-known pattern, low = best guess"
22
- }
23
- }
24
- }
25
- },
26
- "patterns": {
27
- "type": "array",
28
- "items": {
29
- "type": "object",
30
- "required": ["name", "description", "applicability"],
31
- "properties": {
32
- "name": { "type": "string" },
33
- "description": { "type": "string" },
34
- "applicability": { "type": "string", "description": "How this pattern applies to the specific gap" }
35
- }
36
- }
37
- },
38
- "recommendations": {
39
- "type": "array",
40
- "items": { "type": "string" },
41
- "description": "Concrete recommendations based on research findings"
42
- }
43
- }
2
+ "type": "object",
3
+ "required": ["questions", "patterns", "recommendations"],
4
+ "properties": {
5
+ "questions": {
6
+ "type": "array",
7
+ "items": {
8
+ "type": "object",
9
+ "required": ["question", "answer", "confidence"],
10
+ "properties": {
11
+ "question": { "type": "string" },
12
+ "answer": { "type": "string" },
13
+ "sources": {
14
+ "type": "array",
15
+ "items": { "type": "string" },
16
+ "description": "Where the answer came from — docs, other projects, known patterns"
17
+ },
18
+ "confidence": {
19
+ "type": "string",
20
+ "enum": ["high", "medium", "low"],
21
+ "description": "How confident the answer is — high = well-known pattern, low = best guess"
22
+ }
23
+ }
24
+ }
25
+ },
26
+ "patterns": {
27
+ "type": "array",
28
+ "items": {
29
+ "type": "object",
30
+ "required": ["name", "description", "applicability"],
31
+ "properties": {
32
+ "name": { "type": "string" },
33
+ "description": { "type": "string" },
34
+ "applicability": { "type": "string", "description": "How this pattern applies to the specific gap" }
35
+ }
36
+ }
37
+ },
38
+ "recommendations": {
39
+ "type": "array",
40
+ "items": { "type": "string" },
41
+ "description": "Concrete recommendations based on research findings"
42
+ }
43
+ }
44
44
  }