@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ export interface WorkflowSpec {
2
+ name: string;
3
+ description: string;
4
+ version?: string;
5
+ input?: Record<string, unknown>;
6
+ output?: Record<string, unknown>;
7
+ triggerTurn?: boolean;
8
+ completion?: CompletionSpec;
9
+ steps: Record<string, StepSpec>;
10
+ artifacts?: Record<string, ArtifactSpec>;
11
+ source: "user" | "project";
12
+ filePath: string;
13
+ }
14
+ export interface ArtifactSpec {
15
+ path: string;
16
+ from: string;
17
+ schema?: string;
18
+ }
19
+ export interface RetryConfig {
20
+ maxAttempts?: number;
21
+ onExhausted?: "fail" | "skip";
22
+ steeringMessage?: string;
23
+ }
24
+ export interface StepSpec {
25
+ agent?: string;
26
+ model?: string;
27
+ context?: string[];
28
+ input?: Record<string, unknown>;
29
+ output?: StepOutputSpec;
30
+ when?: string;
31
+ timeout?: {
32
+ seconds: number;
33
+ };
34
+ retry?: RetryConfig;
35
+ loop?: LoopSpec;
36
+ gate?: GateSpec;
37
+ transform?: TransformSpec;
38
+ parallel?: Record<string, StepSpec>;
39
+ pause?: string | boolean;
40
+ monitor?: string;
41
+ command?: string;
42
+ forEach?: string;
43
+ as?: string;
44
+ workflow?: string;
45
+ }
46
+ export interface LoopSpec {
47
+ maxAttempts: number;
48
+ attempts?: string;
49
+ steps: Record<string, StepSpec>;
50
+ onExhausted?: StepSpec;
51
+ }
52
+ export interface GateSpec {
53
+ check: string;
54
+ onPass?: "continue" | "break";
55
+ onFail?: "continue" | "break" | "fail";
56
+ }
57
+ export interface TransformSpec {
58
+ /**
59
+ * A mapping of output field names to ${{ }} expressions.
60
+ * The result is an object with each field resolved.
61
+ * No LLM invocation — pure data transformation.
62
+ */
63
+ mapping: Record<string, unknown>;
64
+ }
65
+ export interface StepOutputSpec {
66
+ format?: "json" | "text";
67
+ schema?: string;
68
+ path?: string;
69
+ }
70
+ export interface AgentSpec {
71
+ name: string;
72
+ description?: string;
73
+ role?: string;
74
+ systemPrompt?: string;
75
+ promptTemplate?: string;
76
+ taskTemplate?: string;
77
+ model?: string;
78
+ thinking?: string;
79
+ tools?: string[];
80
+ extensions?: string[];
81
+ skills?: string[];
82
+ output?: string;
83
+ inputSchema?: Record<string, unknown>;
84
+ outputFormat?: "json" | "text";
85
+ outputSchema?: string;
86
+ }
87
+ export interface ExecutionState {
88
+ input: unknown;
89
+ steps: Record<string, StepResult>;
90
+ status: "running" | "completed" | "failed" | "paused";
91
+ loop?: LoopState;
92
+ workflowName?: string;
93
+ specVersion?: string;
94
+ startedAt?: string;
95
+ updatedAt?: string;
96
+ }
97
+ export interface LoopState {
98
+ stepName: string;
99
+ iteration: number;
100
+ maxAttempts: number;
101
+ priorAttempts: LoopAttempt[];
102
+ }
103
+ export interface LoopAttempt {
104
+ iteration: number;
105
+ steps: Record<string, StepResult>;
106
+ }
107
+ export interface StepResult {
108
+ step: string;
109
+ agent: string;
110
+ status: "completed" | "failed" | "skipped";
111
+ output?: unknown;
112
+ textOutput?: string;
113
+ outputPath?: string;
114
+ sessionLog?: string;
115
+ usage: StepUsage;
116
+ durationMs: number;
117
+ error?: string;
118
+ truncated?: boolean;
119
+ warnings?: string[];
120
+ attempt?: number;
121
+ totalAttempts?: number;
122
+ priorErrors?: string[];
123
+ }
124
+ export interface StepUsage {
125
+ input: number;
126
+ output: number;
127
+ cacheRead: number;
128
+ cacheWrite: number;
129
+ cost: number;
130
+ turns: number;
131
+ }
132
+ export interface WorkflowResult {
133
+ workflow: string;
134
+ runId: string;
135
+ status: "completed" | "failed" | "paused";
136
+ steps: Record<string, StepResult>;
137
+ output?: unknown;
138
+ totalUsage: StepUsage;
139
+ totalDurationMs: number;
140
+ runDir: string;
141
+ artifacts?: Record<string, string>;
142
+ }
143
+ export interface CompletionSpec {
144
+ message?: string;
145
+ include?: string[];
146
+ template?: string;
147
+ }
148
+ export interface ExpressionScope {
149
+ input: unknown;
150
+ steps: Record<string, StepResult>;
151
+ [key: string]: unknown;
152
+ }
153
+ export interface CompletionScope {
154
+ input: unknown;
155
+ steps: Record<string, StepResult>;
156
+ totalUsage: StepUsage;
157
+ totalDurationMs: number;
158
+ runDir: string;
159
+ runId: string;
160
+ workflow: string;
161
+ status: "completed" | "failed";
162
+ output?: unknown;
163
+ [key: string]: unknown;
164
+ }
165
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAEzC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,QAAQ;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAID,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtD,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACd;AAID,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAID,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAID,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,UAAU,EAAE,SAAS,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ // ── Workflow Spec (parsed from YAML) ──
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,yCAAyC"}
@@ -0,0 +1,23 @@
1
+ import type { WorkflowSpec } from "./types.js";
2
+ /**
3
+ * Discover all workflow specs from project, user, and builtin directories.
4
+ *
5
+ * Scans (highest priority first):
6
+ * 1. .workflows/ (project-level, source: "project")
7
+ * 2. ~/.pi/agent/workflows/ (user-level, source: "user")
8
+ * 3. <package>/workflows/ (builtin workflows, source: "user")
9
+ *
10
+ * Higher-priority specs shadow lower-priority specs with the same name.
11
+ *
12
+ * @param cwd - current working directory (project root)
13
+ * @param builtinDir - optional path to builtin workflows (defaults to workflows/ relative to package root)
14
+ * @returns Array of parsed WorkflowSpec objects. Specs that fail parsing are
15
+ * skipped with a warning (logged to stderr), not thrown.
16
+ */
17
+ export declare function discoverWorkflows(cwd: string, builtinDir?: string): WorkflowSpec[];
18
+ /**
19
+ * Find a workflow by name from discovered workflows.
20
+ * Returns undefined if not found.
21
+ */
22
+ export declare function findWorkflow(name: string, cwd: string, builtinDir?: string): WorkflowSpec | undefined;
23
+ //# sourceMappingURL=workflow-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-discovery.d.ts","sourceRoot":"","sources":["../src/workflow-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CA0BlF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGrG"}
@@ -0,0 +1,103 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { parseWorkflowSpec } from "./workflow-spec.js";
5
+ import { WORKFLOWS_DIR } from "./workflows-dir.js";
6
+ /**
7
+ * Discover all workflow specs from project, user, and builtin directories.
8
+ *
9
+ * Scans (highest priority first):
10
+ * 1. .workflows/ (project-level, source: "project")
11
+ * 2. ~/.pi/agent/workflows/ (user-level, source: "user")
12
+ * 3. <package>/workflows/ (builtin workflows, source: "user")
13
+ *
14
+ * Higher-priority specs shadow lower-priority specs with the same name.
15
+ *
16
+ * @param cwd - current working directory (project root)
17
+ * @param builtinDir - optional path to builtin workflows (defaults to workflows/ relative to package root)
18
+ * @returns Array of parsed WorkflowSpec objects. Specs that fail parsing are
19
+ * skipped with a warning (logged to stderr), not thrown.
20
+ */
21
+ export function discoverWorkflows(cwd, builtinDir) {
22
+ const projectDir = path.join(cwd, WORKFLOWS_DIR);
23
+ const userDir = path.join(os.homedir(), ".pi", "agent", "workflows");
24
+ const demoDir = builtinDir ?? path.resolve(import.meta.dirname, "..", "workflows");
25
+ const projectSpecs = scanDirectory(projectDir, "project");
26
+ const userSpecs = scanDirectory(userDir, "user");
27
+ const builtinSpecs = scanDirectory(demoDir, "user");
28
+ // Deduplicate: project > user > builtin (last write wins, so add lowest priority first)
29
+ const byName = new Map();
30
+ for (const spec of builtinSpecs) {
31
+ byName.set(spec.name, spec);
32
+ }
33
+ for (const spec of userSpecs) {
34
+ byName.set(spec.name, spec);
35
+ }
36
+ for (const spec of projectSpecs) {
37
+ byName.set(spec.name, spec);
38
+ }
39
+ // Return sorted by name
40
+ const result = Array.from(byName.values());
41
+ result.sort((a, b) => a.name.localeCompare(b.name));
42
+ return result;
43
+ }
44
+ /**
45
+ * Find a workflow by name from discovered workflows.
46
+ * Returns undefined if not found.
47
+ */
48
+ export function findWorkflow(name, cwd, builtinDir) {
49
+ const specs = discoverWorkflows(cwd, builtinDir);
50
+ return specs.find((s) => s.name === name);
51
+ }
52
+ /**
53
+ * Scan a directory for *.workflow.yaml files and parse them.
54
+ * Non-recursive. Returns parsed specs; logs warnings for parse failures.
55
+ */
56
+ function scanDirectory(dirPath, source) {
57
+ if (!fs.existsSync(dirPath)) {
58
+ return [];
59
+ }
60
+ let entries;
61
+ try {
62
+ entries = fs.readdirSync(dirPath);
63
+ }
64
+ catch {
65
+ return [];
66
+ }
67
+ const specs = [];
68
+ for (const entry of entries) {
69
+ if (!entry.endsWith(".workflow.yaml")) {
70
+ continue;
71
+ }
72
+ const filePath = path.join(dirPath, entry);
73
+ // Only process files, not directories
74
+ let stat;
75
+ try {
76
+ stat = fs.statSync(filePath);
77
+ }
78
+ catch {
79
+ continue;
80
+ }
81
+ if (!stat.isFile()) {
82
+ continue;
83
+ }
84
+ let content;
85
+ try {
86
+ content = fs.readFileSync(filePath, "utf-8");
87
+ }
88
+ catch {
89
+ console.error(`[pi-workflows] Warning: skipping ${filePath}: could not read file`);
90
+ continue;
91
+ }
92
+ try {
93
+ const spec = parseWorkflowSpec(content, filePath, source);
94
+ specs.push(spec);
95
+ }
96
+ catch (err) {
97
+ const msg = err instanceof Error ? err.message : String(err);
98
+ console.error(`[pi-workflows] Warning: skipping ${filePath}: ${msg}`);
99
+ }
100
+ }
101
+ return specs;
102
+ }
103
+ //# sourceMappingURL=workflow-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-discovery.js","sourceRoot":"","sources":["../src/workflow-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { dispatch } from "./dispatch.js";
2
+ import { SIGKILL_GRACE_MS } from "./step-shared.js";
3
+ import type { AgentSpec, ExecutionState, WorkflowResult, WorkflowSpec } from "./types.js";
4
+ export { SIGKILL_GRACE_MS };
5
+ /** Set by the extension keybinding to request a pause after the current step. */
6
+ export declare function requestPause(): void;
7
+ export interface ExecuteOptions {
8
+ /** pi extension context (for TUI, cwd, etc.) */
9
+ ctx: any;
10
+ /** pi extension API (for sendMessage) */
11
+ pi: any;
12
+ /** AbortSignal for cancellation (e.g. user presses Ctrl+C) */
13
+ signal?: AbortSignal;
14
+ /**
15
+ * Agent spec loader. Given an agent name, returns the AgentSpec.
16
+ * The executor does not know how to load agent specs — the caller provides this.
17
+ * If the agent is not found, return a minimal spec with just the name.
18
+ */
19
+ loadAgent: (name: string) => AgentSpec;
20
+ /** Injectable dispatch function for testing; defaults to real dispatch. */
21
+ dispatchFn?: typeof dispatch;
22
+ /** Project-level model config; loaded from .project/model-config.json if not provided. */
23
+ modelConfig?: import("./dispatch.js").ModelConfig;
24
+ /** Resume from an incomplete run instead of starting fresh. */
25
+ resume?: {
26
+ runId: string;
27
+ runDir: string;
28
+ state: ExecutionState;
29
+ };
30
+ }
31
+ /** Retry context passed to step executors on retry attempts. */
32
+ export interface RetryContext {
33
+ attempt: number;
34
+ priorErrors: string[];
35
+ steeringMessage?: string;
36
+ }
37
+ /**
38
+ * Execute a workflow from a parsed spec and validated input.
39
+ *
40
+ * Runs steps sequentially (phase 1), resolving ${{ }} expressions,
41
+ * dispatching subprocesses, validating outputs, persisting state,
42
+ * updating TUI, and injecting the result into the conversation.
43
+ *
44
+ * Supports step types: agent (default), gate, transform, loop.
45
+ * Supports `when` conditionals for skipping steps.
46
+ *
47
+ * Returns the WorkflowResult (also injected into conversation via sendMessage).
48
+ */
49
+ export declare function executeWorkflow(spec: WorkflowSpec, input: unknown, options: ExecuteOptions): Promise<WorkflowResult>;
50
+ //# sourceMappingURL=workflow-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../src/workflow-executor.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmBzC,OAAO,EAAkC,gBAAgB,EAAwB,MAAM,kBAAkB,CAAC;AAK1G,OAAO,KAAK,EACX,SAAS,EACT,cAAc,EAId,cAAc,EACd,YAAY,EACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAK5B,iFAAiF;AACjF,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAOD,MAAM,WAAW,cAAc;IAC9B,gDAAgD;IAChD,GAAG,EAAE,GAAG,CAAC;IACT,yCAAyC;IACzC,EAAE,EAAE,GAAG,CAAC;IACR,8DAA8D;IAC9D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IACvC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,QAAQ,CAAC;IAC7B,0FAA0F;IAC1F,WAAW,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAClD,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,cAAc,CAAC;KACtB,CAAC;CACF;AAgTD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAuND;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACpC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CA8QzB"}