@davidorex/pi-workflows 0.2.0 → 0.3.0

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 (215) 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 +172 -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 +675 -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 +156 -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 +57 -0
  84. package/dist/step-shared.d.ts.map +1 -0
  85. package/dist/step-shared.js +125 -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 +164 -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 +726 -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 +438 -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 +464 -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 +84 -0
  140. package/skills/pi-workflows/SKILL.md +247 -0
  141. package/templates/architecture-designer/task.md +117 -0
  142. package/templates/architecture-inferrer/task.md +61 -0
  143. package/templates/gap-identifier/task.md +103 -0
  144. package/templates/handoff-writer/task.md +91 -0
  145. package/templates/plan-creator/task.md +143 -0
  146. package/templates/project-definer/task.md +67 -0
  147. package/templates/project-inferrer/task.md +56 -0
  148. package/templates/requirements-gatherer/task.md +90 -0
  149. package/workflows/analyze-existing-project.workflow.yaml +74 -0
  150. package/workflows/create-handoff.workflow.yaml +58 -0
  151. package/workflows/create-phase.workflow.yaml +1 -1
  152. package/workflows/do-gap.workflow.yaml +4 -4
  153. package/workflows/fix-audit.workflow.yaml +1 -1
  154. package/workflows/gap-to-phase.workflow.yaml +1 -1
  155. package/workflows/init-new-project.workflow.yaml +55 -0
  156. package/workflows/plan-from-requirements.workflow.yaml +51 -0
  157. package/workflows/self-implement.workflow.yaml +3 -3
  158. package/workflows/typed-analysis.workflow.yaml +4 -4
  159. package/src/agent-spec.test.ts +0 -289
  160. package/src/agent-spec.ts +0 -122
  161. package/src/block-validation.test.ts +0 -350
  162. package/src/checkpoint.test.ts +0 -237
  163. package/src/checkpoint.ts +0 -140
  164. package/src/completion.test.ts +0 -143
  165. package/src/completion.ts +0 -68
  166. package/src/dag.test.ts +0 -350
  167. package/src/dag.ts +0 -219
  168. package/src/dispatch.test.ts +0 -475
  169. package/src/dispatch.ts +0 -353
  170. package/src/expression.test.ts +0 -353
  171. package/src/expression.ts +0 -332
  172. package/src/format.test.ts +0 -80
  173. package/src/format.ts +0 -41
  174. package/src/graduated-failure.test.ts +0 -556
  175. package/src/index.test.ts +0 -114
  176. package/src/index.ts +0 -516
  177. package/src/loop.test.ts +0 -551
  178. package/src/output.test.ts +0 -213
  179. package/src/output.ts +0 -70
  180. package/src/parallel-integration.test.ts +0 -175
  181. package/src/resume.test.ts +0 -192
  182. package/src/state.test.ts +0 -192
  183. package/src/state.ts +0 -254
  184. package/src/step-agent.test.ts +0 -327
  185. package/src/step-agent.ts +0 -178
  186. package/src/step-command.test.ts +0 -330
  187. package/src/step-command.ts +0 -132
  188. package/src/step-foreach.test.ts +0 -647
  189. package/src/step-foreach.ts +0 -148
  190. package/src/step-gate.test.ts +0 -185
  191. package/src/step-gate.ts +0 -116
  192. package/src/step-loop.test.ts +0 -626
  193. package/src/step-loop.ts +0 -323
  194. package/src/step-parallel.test.ts +0 -475
  195. package/src/step-parallel.ts +0 -168
  196. package/src/step-pause.test.ts +0 -30
  197. package/src/step-shared.test.ts +0 -355
  198. package/src/step-shared.ts +0 -157
  199. package/src/step-transform.test.ts +0 -155
  200. package/src/step-transform.ts +0 -47
  201. package/src/template-integration.test.ts +0 -72
  202. package/src/template.test.ts +0 -162
  203. package/src/test-helpers.ts +0 -51
  204. package/src/tui.test.ts +0 -355
  205. package/src/tui.ts +0 -182
  206. package/src/types.ts +0 -195
  207. package/src/verifier-schema.test.ts +0 -226
  208. package/src/workflow-discovery.test.ts +0 -105
  209. package/src/workflow-discovery.ts +0 -114
  210. package/src/workflow-executor.test.ts +0 -1532
  211. package/src/workflow-executor.ts +0 -810
  212. package/src/workflow-sdk.test.ts +0 -238
  213. package/src/workflow-sdk.ts +0 -262
  214. package/src/workflow-spec.test.ts +0 -576
  215. 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
  }