@xyne/workflow-sdk 1.0.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 (310) hide show
  1. package/README.md +36 -0
  2. package/dist/agents/agent-step.d.ts +152 -0
  3. package/dist/agents/agent-step.d.ts.map +1 -0
  4. package/dist/agents/agent-step.js +403 -0
  5. package/dist/agents/agent-step.js.map +1 -0
  6. package/dist/agents/base-runtime.d.ts +38 -0
  7. package/dist/agents/base-runtime.d.ts.map +1 -0
  8. package/dist/agents/base-runtime.js +21 -0
  9. package/dist/agents/base-runtime.js.map +1 -0
  10. package/dist/agents/index.d.ts +12 -0
  11. package/dist/agents/index.d.ts.map +1 -0
  12. package/dist/agents/index.js +17 -0
  13. package/dist/agents/index.js.map +1 -0
  14. package/dist/agents/interceptor.d.ts +19 -0
  15. package/dist/agents/interceptor.d.ts.map +1 -0
  16. package/dist/agents/interceptor.js +21 -0
  17. package/dist/agents/interceptor.js.map +1 -0
  18. package/dist/agents/interceptors/approval-gate.d.ts +14 -0
  19. package/dist/agents/interceptors/approval-gate.d.ts.map +1 -0
  20. package/dist/agents/interceptors/approval-gate.js +19 -0
  21. package/dist/agents/interceptors/approval-gate.js.map +1 -0
  22. package/dist/agents/interceptors/tool-logger.d.ts +15 -0
  23. package/dist/agents/interceptors/tool-logger.d.ts.map +1 -0
  24. package/dist/agents/interceptors/tool-logger.js +23 -0
  25. package/dist/agents/interceptors/tool-logger.js.map +1 -0
  26. package/dist/agents/pi-mono-runtime.d.ts +88 -0
  27. package/dist/agents/pi-mono-runtime.d.ts.map +1 -0
  28. package/dist/agents/pi-mono-runtime.js +129 -0
  29. package/dist/agents/pi-mono-runtime.js.map +1 -0
  30. package/dist/agents/tool-registry.d.ts +25 -0
  31. package/dist/agents/tool-registry.d.ts.map +1 -0
  32. package/dist/agents/tool-registry.js +47 -0
  33. package/dist/agents/tool-registry.js.map +1 -0
  34. package/dist/agents/tool-types.d.ts +25 -0
  35. package/dist/agents/tool-types.d.ts.map +1 -0
  36. package/dist/agents/tool-types.js +9 -0
  37. package/dist/agents/tool-types.js.map +1 -0
  38. package/dist/agents/types.d.ts +91 -0
  39. package/dist/agents/types.d.ts.map +1 -0
  40. package/dist/agents/types.js +12 -0
  41. package/dist/agents/types.js.map +1 -0
  42. package/dist/builder/index.d.ts +30 -0
  43. package/dist/builder/index.d.ts.map +1 -0
  44. package/dist/builder/index.js +32 -0
  45. package/dist/builder/index.js.map +1 -0
  46. package/dist/client/index.d.ts +19 -0
  47. package/dist/client/index.d.ts.map +1 -0
  48. package/dist/client/index.js +18 -0
  49. package/dist/client/index.js.map +1 -0
  50. package/dist/client/types.d.ts +128 -0
  51. package/dist/client/types.d.ts.map +1 -0
  52. package/dist/client/types.js +10 -0
  53. package/dist/client/types.js.map +1 -0
  54. package/dist/client/workflow-client.d.ts +15 -0
  55. package/dist/client/workflow-client.d.ts.map +1 -0
  56. package/dist/client/workflow-client.js +293 -0
  57. package/dist/client/workflow-client.js.map +1 -0
  58. package/dist/common/attachment.d.ts +31 -0
  59. package/dist/common/attachment.d.ts.map +1 -0
  60. package/dist/common/attachment.js +21 -0
  61. package/dist/common/attachment.js.map +1 -0
  62. package/dist/common/executable-check.d.ts +42 -0
  63. package/dist/common/executable-check.d.ts.map +1 -0
  64. package/dist/common/executable-check.js +115 -0
  65. package/dist/common/executable-check.js.map +1 -0
  66. package/dist/common/index.d.ts +21 -0
  67. package/dist/common/index.d.ts.map +1 -0
  68. package/dist/common/index.js +19 -0
  69. package/dist/common/index.js.map +1 -0
  70. package/dist/common/resume-payload.d.ts +34 -0
  71. package/dist/common/resume-payload.d.ts.map +1 -0
  72. package/dist/common/resume-payload.js +12 -0
  73. package/dist/common/resume-payload.js.map +1 -0
  74. package/dist/engine/available-context.d.ts +29 -0
  75. package/dist/engine/available-context.d.ts.map +1 -0
  76. package/dist/engine/available-context.js +66 -0
  77. package/dist/engine/available-context.js.map +1 -0
  78. package/dist/engine/condition-evaluator.d.ts +13 -0
  79. package/dist/engine/condition-evaluator.d.ts.map +1 -0
  80. package/dist/engine/condition-evaluator.js +92 -0
  81. package/dist/engine/condition-evaluator.js.map +1 -0
  82. package/dist/engine/config-validator.d.ts +25 -0
  83. package/dist/engine/config-validator.d.ts.map +1 -0
  84. package/dist/engine/config-validator.js +316 -0
  85. package/dist/engine/config-validator.js.map +1 -0
  86. package/dist/engine/pause-step.d.ts +20 -0
  87. package/dist/engine/pause-step.d.ts.map +1 -0
  88. package/dist/engine/pause-step.js +24 -0
  89. package/dist/engine/pause-step.js.map +1 -0
  90. package/dist/engine/service-registry.d.ts +49 -0
  91. package/dist/engine/service-registry.d.ts.map +1 -0
  92. package/dist/engine/service-registry.js +76 -0
  93. package/dist/engine/service-registry.js.map +1 -0
  94. package/dist/engine/variable-resolver.d.ts +29 -0
  95. package/dist/engine/variable-resolver.d.ts.map +1 -0
  96. package/dist/engine/variable-resolver.js +130 -0
  97. package/dist/engine/variable-resolver.js.map +1 -0
  98. package/dist/engine/workflow-executor.d.ts +96 -0
  99. package/dist/engine/workflow-executor.d.ts.map +1 -0
  100. package/dist/engine/workflow-executor.js +837 -0
  101. package/dist/engine/workflow-executor.js.map +1 -0
  102. package/dist/index.d.ts +57 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +56 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/persistence/in-memory-adapter.d.ts +138 -0
  107. package/dist/persistence/in-memory-adapter.d.ts.map +1 -0
  108. package/dist/persistence/in-memory-adapter.js +315 -0
  109. package/dist/persistence/in-memory-adapter.js.map +1 -0
  110. package/dist/persistence/types.d.ts +214 -0
  111. package/dist/persistence/types.d.ts.map +1 -0
  112. package/dist/persistence/types.js +8 -0
  113. package/dist/persistence/types.js.map +1 -0
  114. package/dist/router/types.d.ts +57 -0
  115. package/dist/router/types.d.ts.map +1 -0
  116. package/dist/router/types.js +8 -0
  117. package/dist/router/types.js.map +1 -0
  118. package/dist/router/workflow-router.d.ts +26 -0
  119. package/dist/router/workflow-router.d.ts.map +1 -0
  120. package/dist/router/workflow-router.js +611 -0
  121. package/dist/router/workflow-router.js.map +1 -0
  122. package/dist/runtime/execution-event-bus.d.ts +38 -0
  123. package/dist/runtime/execution-event-bus.d.ts.map +1 -0
  124. package/dist/runtime/execution-event-bus.js +87 -0
  125. package/dist/runtime/execution-event-bus.js.map +1 -0
  126. package/dist/runtime/types.d.ts +129 -0
  127. package/dist/runtime/types.d.ts.map +1 -0
  128. package/dist/runtime/types.js +5 -0
  129. package/dist/runtime/types.js.map +1 -0
  130. package/dist/runtime/workflow-runtime.d.ts +256 -0
  131. package/dist/runtime/workflow-runtime.d.ts.map +1 -0
  132. package/dist/runtime/workflow-runtime.js +699 -0
  133. package/dist/runtime/workflow-runtime.js.map +1 -0
  134. package/dist/steps/base-step.d.ts +204 -0
  135. package/dist/steps/base-step.d.ts.map +1 -0
  136. package/dist/steps/base-step.js +69 -0
  137. package/dist/steps/base-step.js.map +1 -0
  138. package/dist/steps/builtin/code.step.d.ts +95 -0
  139. package/dist/steps/builtin/code.step.d.ts.map +1 -0
  140. package/dist/steps/builtin/code.step.js +122 -0
  141. package/dist/steps/builtin/code.step.js.map +1 -0
  142. package/dist/steps/builtin/conditional.step.d.ts +146 -0
  143. package/dist/steps/builtin/conditional.step.d.ts.map +1 -0
  144. package/dist/steps/builtin/conditional.step.js +71 -0
  145. package/dist/steps/builtin/conditional.step.js.map +1 -0
  146. package/dist/steps/builtin/dedup.step.d.ts +65 -0
  147. package/dist/steps/builtin/dedup.step.d.ts.map +1 -0
  148. package/dist/steps/builtin/dedup.step.js +61 -0
  149. package/dist/steps/builtin/dedup.step.js.map +1 -0
  150. package/dist/steps/builtin/http-request.step.d.ts +928 -0
  151. package/dist/steps/builtin/http-request.step.d.ts.map +1 -0
  152. package/dist/steps/builtin/http-request.step.js +570 -0
  153. package/dist/steps/builtin/http-request.step.js.map +1 -0
  154. package/dist/steps/builtin/loop.step.d.ts +100 -0
  155. package/dist/steps/builtin/loop.step.d.ts.map +1 -0
  156. package/dist/steps/builtin/loop.step.js +79 -0
  157. package/dist/steps/builtin/loop.step.js.map +1 -0
  158. package/dist/steps/builtin/parallel.step.d.ts +208 -0
  159. package/dist/steps/builtin/parallel.step.d.ts.map +1 -0
  160. package/dist/steps/builtin/parallel.step.js +249 -0
  161. package/dist/steps/builtin/parallel.step.js.map +1 -0
  162. package/dist/steps/builtin/switch.step.d.ts +200 -0
  163. package/dist/steps/builtin/switch.step.d.ts.map +1 -0
  164. package/dist/steps/builtin/switch.step.js +92 -0
  165. package/dist/steps/builtin/switch.step.js.map +1 -0
  166. package/dist/steps/builtin/transform.step.d.ts +247 -0
  167. package/dist/steps/builtin/transform.step.d.ts.map +1 -0
  168. package/dist/steps/builtin/transform.step.js +135 -0
  169. package/dist/steps/builtin/transform.step.js.map +1 -0
  170. package/dist/steps/builtin/wait.step.d.ts +921 -0
  171. package/dist/steps/builtin/wait.step.d.ts.map +1 -0
  172. package/dist/steps/builtin/wait.step.js +211 -0
  173. package/dist/steps/builtin/wait.step.js.map +1 -0
  174. package/dist/steps/step-registry.d.ts +64 -0
  175. package/dist/steps/step-registry.d.ts.map +1 -0
  176. package/dist/steps/step-registry.js +102 -0
  177. package/dist/steps/step-registry.js.map +1 -0
  178. package/dist/storage/in-memory-adapter.d.ts +25 -0
  179. package/dist/storage/in-memory-adapter.d.ts.map +1 -0
  180. package/dist/storage/in-memory-adapter.js +41 -0
  181. package/dist/storage/in-memory-adapter.js.map +1 -0
  182. package/dist/storage/types.d.ts +53 -0
  183. package/dist/storage/types.d.ts.map +1 -0
  184. package/dist/storage/types.js +13 -0
  185. package/dist/storage/types.js.map +1 -0
  186. package/dist/testing/index.d.ts +10 -0
  187. package/dist/testing/index.d.ts.map +1 -0
  188. package/dist/testing/index.js +10 -0
  189. package/dist/testing/index.js.map +1 -0
  190. package/dist/testing/mock-context.d.ts +13 -0
  191. package/dist/testing/mock-context.d.ts.map +1 -0
  192. package/dist/testing/mock-context.js +21 -0
  193. package/dist/testing/mock-context.js.map +1 -0
  194. package/dist/testing/mock-step-context.d.ts +47 -0
  195. package/dist/testing/mock-step-context.d.ts.map +1 -0
  196. package/dist/testing/mock-step-context.js +59 -0
  197. package/dist/testing/mock-step-context.js.map +1 -0
  198. package/dist/triggers/base-trigger.d.ts +58 -0
  199. package/dist/triggers/base-trigger.d.ts.map +1 -0
  200. package/dist/triggers/base-trigger.js +37 -0
  201. package/dist/triggers/base-trigger.js.map +1 -0
  202. package/dist/triggers/builtin/default-cron-trigger.d.ts +44 -0
  203. package/dist/triggers/builtin/default-cron-trigger.d.ts.map +1 -0
  204. package/dist/triggers/builtin/default-cron-trigger.js +31 -0
  205. package/dist/triggers/builtin/default-cron-trigger.js.map +1 -0
  206. package/dist/triggers/builtin/default-event-trigger.d.ts +32 -0
  207. package/dist/triggers/builtin/default-event-trigger.d.ts.map +1 -0
  208. package/dist/triggers/builtin/default-event-trigger.js +21 -0
  209. package/dist/triggers/builtin/default-event-trigger.js.map +1 -0
  210. package/dist/triggers/builtin/default-manual-trigger.d.ts +119 -0
  211. package/dist/triggers/builtin/default-manual-trigger.d.ts.map +1 -0
  212. package/dist/triggers/builtin/default-manual-trigger.js +64 -0
  213. package/dist/triggers/builtin/default-manual-trigger.js.map +1 -0
  214. package/dist/triggers/builtin/default-webhook-trigger.d.ts +72 -0
  215. package/dist/triggers/builtin/default-webhook-trigger.d.ts.map +1 -0
  216. package/dist/triggers/builtin/default-webhook-trigger.js +91 -0
  217. package/dist/triggers/builtin/default-webhook-trigger.js.map +1 -0
  218. package/dist/triggers/cron-trigger.d.ts +52 -0
  219. package/dist/triggers/cron-trigger.d.ts.map +1 -0
  220. package/dist/triggers/cron-trigger.js +15 -0
  221. package/dist/triggers/cron-trigger.js.map +1 -0
  222. package/dist/triggers/event-trigger.d.ts +14 -0
  223. package/dist/triggers/event-trigger.d.ts.map +1 -0
  224. package/dist/triggers/event-trigger.js +13 -0
  225. package/dist/triggers/event-trigger.js.map +1 -0
  226. package/dist/triggers/manual-trigger.d.ts +11 -0
  227. package/dist/triggers/manual-trigger.d.ts.map +1 -0
  228. package/dist/triggers/manual-trigger.js +10 -0
  229. package/dist/triggers/manual-trigger.js.map +1 -0
  230. package/dist/triggers/trigger-registry.d.ts +48 -0
  231. package/dist/triggers/trigger-registry.d.ts.map +1 -0
  232. package/dist/triggers/trigger-registry.js +81 -0
  233. package/dist/triggers/trigger-registry.js.map +1 -0
  234. package/dist/triggers/webhook-trigger.d.ts +54 -0
  235. package/dist/triggers/webhook-trigger.d.ts.map +1 -0
  236. package/dist/triggers/webhook-trigger.js +13 -0
  237. package/dist/triggers/webhook-trigger.js.map +1 -0
  238. package/dist/types/attachment.d.ts +23 -0
  239. package/dist/types/attachment.d.ts.map +1 -0
  240. package/dist/types/attachment.js +2 -0
  241. package/dist/types/attachment.js.map +1 -0
  242. package/dist/types/categories.d.ts +14 -0
  243. package/dist/types/categories.d.ts.map +1 -0
  244. package/dist/types/categories.js +10 -0
  245. package/dist/types/categories.js.map +1 -0
  246. package/dist/types/context.d.ts +61 -0
  247. package/dist/types/context.d.ts.map +1 -0
  248. package/dist/types/context.js +2 -0
  249. package/dist/types/context.js.map +1 -0
  250. package/dist/types/index.d.ts +18 -0
  251. package/dist/types/index.d.ts.map +1 -0
  252. package/dist/types/index.js +12 -0
  253. package/dist/types/index.js.map +1 -0
  254. package/dist/types/known-types.d.ts +34 -0
  255. package/dist/types/known-types.d.ts.map +1 -0
  256. package/dist/types/known-types.js +49 -0
  257. package/dist/types/known-types.js.map +1 -0
  258. package/dist/types/operators.d.ts +20 -0
  259. package/dist/types/operators.d.ts.map +1 -0
  260. package/dist/types/operators.js +27 -0
  261. package/dist/types/operators.js.map +1 -0
  262. package/dist/types/pause-path.d.ts +23 -0
  263. package/dist/types/pause-path.d.ts.map +1 -0
  264. package/dist/types/pause-path.js +2 -0
  265. package/dist/types/pause-path.js.map +1 -0
  266. package/dist/types/pause-state.d.ts +100 -0
  267. package/dist/types/pause-state.d.ts.map +1 -0
  268. package/dist/types/pause-state.js +15 -0
  269. package/dist/types/pause-state.js.map +1 -0
  270. package/dist/types/resume-payload.d.ts +34 -0
  271. package/dist/types/resume-payload.d.ts.map +1 -0
  272. package/dist/types/resume-payload.js +12 -0
  273. package/dist/types/resume-payload.js.map +1 -0
  274. package/dist/types/status.d.ts +27 -0
  275. package/dist/types/status.d.ts.map +1 -0
  276. package/dist/types/status.js +41 -0
  277. package/dist/types/status.js.map +1 -0
  278. package/dist/types/step-events.d.ts +22 -0
  279. package/dist/types/step-events.d.ts.map +1 -0
  280. package/dist/types/step-events.js +8 -0
  281. package/dist/types/step-events.js.map +1 -0
  282. package/dist/types/step-types.d.ts +12 -0
  283. package/dist/types/step-types.d.ts.map +1 -0
  284. package/dist/types/step-types.js +2 -0
  285. package/dist/types/step-types.js.map +1 -0
  286. package/dist/types/trigger-types.d.ts +12 -0
  287. package/dist/types/trigger-types.d.ts.map +1 -0
  288. package/dist/types/trigger-types.js +2 -0
  289. package/dist/types/trigger-types.js.map +1 -0
  290. package/dist/types/validation.d.ts +19 -0
  291. package/dist/types/validation.d.ts.map +1 -0
  292. package/dist/types/validation.js +11 -0
  293. package/dist/types/validation.js.map +1 -0
  294. package/dist/types/workflow-config.d.ts +122 -0
  295. package/dist/types/workflow-config.d.ts.map +1 -0
  296. package/dist/types/workflow-config.js +71 -0
  297. package/dist/types/workflow-config.js.map +1 -0
  298. package/dist/util/executable-check.d.ts +42 -0
  299. package/dist/util/executable-check.d.ts.map +1 -0
  300. package/dist/util/executable-check.js +115 -0
  301. package/dist/util/executable-check.js.map +1 -0
  302. package/dist/util/schema-convert.d.ts +14 -0
  303. package/dist/util/schema-convert.d.ts.map +1 -0
  304. package/dist/util/schema-convert.js +16 -0
  305. package/dist/util/schema-convert.js.map +1 -0
  306. package/dist/util/variable-ref.d.ts +52 -0
  307. package/dist/util/variable-ref.d.ts.map +1 -0
  308. package/dist/util/variable-ref.js +89 -0
  309. package/dist/util/variable-ref.js.map +1 -0
  310. package/package.json +97 -0
package/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # @xyne/workflow-sdk
2
+
3
+ Workflow engine SDK — build, validate, and execute workflows composed of triggers, steps, and control-flow primitives, with a framework-agnostic HTTP router and an optional LLM-agent system.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @xyne/workflow-sdk
9
+ ```
10
+
11
+ The agent system (`@xyne/workflow-sdk/agents`) additionally requires the pi-mono peer dependencies:
12
+
13
+ ```bash
14
+ npm install @earendil-works/pi-agent-core @earendil-works/pi-ai typebox
15
+ ```
16
+
17
+ ## Entry points
18
+
19
+ | Import | Contents |
20
+ | --- | --- |
21
+ | `@xyne/workflow-sdk` | Core: registries, executor, runtime, types |
22
+ | `@xyne/workflow-sdk/builder` | `WorkflowConfig` / step / trigger config types for building workflows |
23
+ | `@xyne/workflow-sdk/client` | Typed HTTP client for the workflow router |
24
+ | `@xyne/workflow-sdk/router` | Framework-agnostic route definitions |
25
+ | `@xyne/workflow-sdk/runtime` | Runtime wiring types |
26
+ | `@xyne/workflow-sdk/agents` | LLM agent step + tool registry (requires pi-mono peers) |
27
+ | `@xyne/workflow-sdk/testing` | Mock contexts + test helpers |
28
+ | `@xyne/workflow-sdk/common` | Shared utilities |
29
+
30
+ ## Built-in steps
31
+
32
+ `CODE`, `HTTP_REQUEST`, `CONDITIONAL`, `SWITCH`, `LOOP`, `PARALLEL`, `WAIT`, `DEDUP`, plus the agent step (`RUN_AGENT`).
33
+
34
+ ## License
35
+
36
+ UNLICENSED — © Xyne. All rights reserved.
@@ -0,0 +1,152 @@
1
+ /**
2
+ * AgentStep — orchestrator step that runs an LLM agent within a workflow.
3
+ *
4
+ * Extends BaseActionStep. Receives a BaseAgentRuntime via composition (not
5
+ * inheritance). Handles tool resolution, interceptor chain, event
6
+ * consumption, pause/resume, and capability-based degradation.
7
+ *
8
+ * All configuration (tools, model, system prompt, MCP servers) comes from
9
+ * per-workflow config — nothing is baked in at registration.
10
+ */
11
+ import { z } from 'zod';
12
+ import { BaseActionStep } from '../steps/base-step.js';
13
+ import type { StepExecutionContext } from '../steps/base-step.js';
14
+ import type { StepType } from '../types/step-types.js';
15
+ import type { StepCategory } from '../types/categories.js';
16
+ import type { BaseAgentRuntime } from './base-runtime.js';
17
+ import type { AgentToolRegistry } from './tool-registry.js';
18
+ import type { AgentResult } from './types.js';
19
+ export declare const AgentStepConfigSchema: z.ZodObject<{
20
+ systemPrompt: z.ZodString;
21
+ userMessage: z.ZodString;
22
+ tools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
23
+ requireApproval: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
24
+ maxTurns: z.ZodDefault<z.ZodNumber>;
25
+ toolTimeout: z.ZodDefault<z.ZodNumber>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ systemPrompt: string;
28
+ userMessage: string;
29
+ maxTurns: number;
30
+ toolTimeout: number;
31
+ tools?: string[] | undefined;
32
+ requireApproval?: string[] | undefined;
33
+ }, {
34
+ systemPrompt: string;
35
+ userMessage: string;
36
+ tools?: string[] | undefined;
37
+ requireApproval?: string[] | undefined;
38
+ maxTurns?: number | undefined;
39
+ toolTimeout?: number | undefined;
40
+ }>;
41
+ export type AgentStepConfig = z.infer<typeof AgentStepConfigSchema>;
42
+ export declare class AgentStep extends BaseActionStep<typeof AgentStepConfigSchema, AgentResult> {
43
+ private readonly runtime;
44
+ private readonly toolRegistry;
45
+ readonly type: StepType;
46
+ readonly name = "Run Agent";
47
+ readonly description = "Execute an LLM agent with tools";
48
+ readonly configSchema: z.ZodObject<{
49
+ systemPrompt: z.ZodString;
50
+ userMessage: z.ZodString;
51
+ tools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
52
+ requireApproval: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
53
+ maxTurns: z.ZodDefault<z.ZodNumber>;
54
+ toolTimeout: z.ZodDefault<z.ZodNumber>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ systemPrompt: string;
57
+ userMessage: string;
58
+ maxTurns: number;
59
+ toolTimeout: number;
60
+ tools?: string[] | undefined;
61
+ requireApproval?: string[] | undefined;
62
+ }, {
63
+ systemPrompt: string;
64
+ userMessage: string;
65
+ tools?: string[] | undefined;
66
+ requireApproval?: string[] | undefined;
67
+ maxTurns?: number | undefined;
68
+ toolTimeout?: number | undefined;
69
+ }>;
70
+ readonly outputSchema: z.ZodObject<{
71
+ response: z.ZodString;
72
+ toolCalls: z.ZodArray<z.ZodObject<{
73
+ name: z.ZodString;
74
+ args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
75
+ result: z.ZodUnknown;
76
+ durationMs: z.ZodNumber;
77
+ }, "strip", z.ZodTypeAny, {
78
+ name: string;
79
+ args: Record<string, unknown>;
80
+ durationMs: number;
81
+ result?: unknown;
82
+ }, {
83
+ name: string;
84
+ args: Record<string, unknown>;
85
+ durationMs: number;
86
+ result?: unknown;
87
+ }>, "many">;
88
+ turnCount: z.ZodNumber;
89
+ usage: z.ZodObject<{
90
+ inputTokens: z.ZodNumber;
91
+ outputTokens: z.ZodNumber;
92
+ }, "strip", z.ZodTypeAny, {
93
+ inputTokens: number;
94
+ outputTokens: number;
95
+ }, {
96
+ inputTokens: number;
97
+ outputTokens: number;
98
+ }>;
99
+ }, "strip", z.ZodTypeAny, {
100
+ response: string;
101
+ toolCalls: {
102
+ name: string;
103
+ args: Record<string, unknown>;
104
+ durationMs: number;
105
+ result?: unknown;
106
+ }[];
107
+ turnCount: number;
108
+ usage: {
109
+ inputTokens: number;
110
+ outputTokens: number;
111
+ };
112
+ }, {
113
+ response: string;
114
+ toolCalls: {
115
+ name: string;
116
+ args: Record<string, unknown>;
117
+ durationMs: number;
118
+ result?: unknown;
119
+ }[];
120
+ turnCount: number;
121
+ usage: {
122
+ inputTokens: number;
123
+ outputTokens: number;
124
+ };
125
+ }>;
126
+ readonly category: StepCategory;
127
+ constructor(runtime: BaseAgentRuntime, toolRegistry: AgentToolRegistry);
128
+ decorateConfigSchema(jsonSchema: Record<string, unknown>): Record<string, unknown>;
129
+ execute(config: AgentStepConfig, ctx: StepExecutionContext): Promise<AgentResult>;
130
+ /**
131
+ * Continue a prior conversation. Called from `execute()` when
132
+ * `ctx.priorState.messages` is present (review-gate retry or rerunFromStep).
133
+ *
134
+ * Reconstructs the agent input with the full prior conversation and the
135
+ * current `config.userMessage` as the new user turn. The runtime decides
136
+ * how to inject the new message into the message stream.
137
+ */
138
+ private continueConversation;
139
+ onResume(rowData: Record<string, unknown>, config: AgentStepConfig, ctx: StepExecutionContext): Promise<AgentResult>;
140
+ private convertTools;
141
+ /**
142
+ * Convert a Zod schema to a JSON Schema object for pi-mono tool parameters.
143
+ * Uses Zod's built-in JSON Schema support when available, falls back to
144
+ * a basic type: "object" wrapper.
145
+ */
146
+ private zodToJsonSchema;
147
+ private buildInterceptors;
148
+ private buildHooks;
149
+ private consumeEvents;
150
+ private buildResult;
151
+ }
152
+ //# sourceMappingURL=agent-step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-step.d.ts","sourceRoot":"","sources":["../../src/agents/agent-step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAQ5D,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,YAAY,CAAC;AAIpB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;EAOhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAiDpE,qBAAa,SAAU,SAAQ,cAAc,CAC3C,OAAO,qBAAqB,EAC5B,WAAW,CACZ;IASG,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAT/B,SAAkB,IAAI,EAAE,QAAQ,CAAe;IAC/C,SAAkB,IAAI,eAAe;IACrC,SAAkB,WAAW,qCAAqC;IAClE,SAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;OAAyB;IACvD,SAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAqB;IACnD,SAAkB,QAAQ,EAAE,YAAY,CAAQ;gBAG7B,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,iBAAiB;IAKzC,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAyB5E,OAAO,CACpB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,WAAW,CAAC;IA2CvB;;;;;;;OAOG;YACW,oBAAoB;IAkDnB,QAAQ,CACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,WAAW,CAAC;IAiDvB,OAAO,CAAC,YAAY;IA8BpB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,UAAU;YAmBJ,aAAa;IAkI3B,OAAO,CAAC,WAAW;CAkBpB"}
@@ -0,0 +1,403 @@
1
+ /**
2
+ * AgentStep — orchestrator step that runs an LLM agent within a workflow.
3
+ *
4
+ * Extends BaseActionStep. Receives a BaseAgentRuntime via composition (not
5
+ * inheritance). Handles tool resolution, interceptor chain, event
6
+ * consumption, pause/resume, and capability-based degradation.
7
+ *
8
+ * All configuration (tools, model, system prompt, MCP servers) comes from
9
+ * per-workflow config — nothing is baked in at registration.
10
+ */
11
+ import { z } from 'zod';
12
+ import { BaseActionStep } from '../steps/base-step.js';
13
+ import { runInterceptorChain, } from './interceptor.js';
14
+ import { ApprovalGateInterceptor } from './interceptors/approval-gate.js';
15
+ import { ToolLoggingInterceptor } from './interceptors/tool-logger.js';
16
+ // ─── Config Schema ───
17
+ export const AgentStepConfigSchema = z.object({
18
+ systemPrompt: z.string().describe('Instructions that define the agent\'s behavior and capabilities'),
19
+ userMessage: z.string().describe('The user message or task prompt sent to the agent'),
20
+ tools: z.array(z.string()).optional().describe('Tool names the agent is allowed to use'),
21
+ requireApproval: z.array(z.string()).optional().describe('Tool names that require human approval before execution'),
22
+ maxTurns: z.number().int().min(1).default(10).describe('Maximum number of agent reasoning turns'),
23
+ toolTimeout: z.number().int().positive().default(30_000).describe('Timeout per tool call in milliseconds'),
24
+ });
25
+ // ─── Result Schema ───
26
+ const AgentResultSchema = z.object({
27
+ response: z.string(),
28
+ toolCalls: z.array(z.object({
29
+ name: z.string(),
30
+ args: z.record(z.unknown()),
31
+ result: z.unknown(),
32
+ durationMs: z.number(),
33
+ })),
34
+ turnCount: z.number(),
35
+ usage: z.object({
36
+ inputTokens: z.number(),
37
+ outputTokens: z.number(),
38
+ }),
39
+ });
40
+ // ─── Utility ───
41
+ function withTimeout(promise, timeoutMs) {
42
+ return Promise.race([
43
+ promise,
44
+ new Promise((_resolve, reject) => {
45
+ const timer = setTimeout(() => { reject(new Error(`Tool execution timed out after ${timeoutMs}ms`)); }, timeoutMs);
46
+ // Don't block Node from exiting
47
+ if (typeof timer === 'object' && 'unref' in timer) {
48
+ timer.unref();
49
+ }
50
+ }),
51
+ ]);
52
+ }
53
+ /** Extract text content from an AssistantMessage. */
54
+ function extractResponseText(message) {
55
+ return message.content
56
+ .filter((c) => c.type === 'text')
57
+ .map((c) => c.text)
58
+ .join('');
59
+ }
60
+ // ─── AgentStep ───
61
+ export class AgentStep extends BaseActionStep {
62
+ runtime;
63
+ toolRegistry;
64
+ type = 'RUN_AGENT';
65
+ name = 'Run Agent';
66
+ description = 'Execute an LLM agent with tools';
67
+ configSchema = AgentStepConfigSchema;
68
+ outputSchema = AgentResultSchema;
69
+ category = 'ai';
70
+ constructor(runtime, toolRegistry) {
71
+ super();
72
+ this.runtime = runtime;
73
+ this.toolRegistry = toolRegistry;
74
+ }
75
+ decorateConfigSchema(jsonSchema) {
76
+ const toolNames = this.toolRegistry.getNames();
77
+ if (toolNames.length === 0)
78
+ return jsonSchema;
79
+ const props = jsonSchema['properties'];
80
+ if (!props)
81
+ return jsonSchema;
82
+ // Inject enum into tools array items so the generic renderer shows multi-select
83
+ if (props['tools']?.['items']) {
84
+ props['tools'] = {
85
+ ...props['tools'],
86
+ items: { ...props['tools']['items'], enum: toolNames },
87
+ };
88
+ }
89
+ // Same for requireApproval
90
+ if (props['requireApproval']?.['items']) {
91
+ props['requireApproval'] = {
92
+ ...props['requireApproval'],
93
+ items: { ...props['requireApproval']['items'], enum: toolNames },
94
+ };
95
+ }
96
+ return jsonSchema;
97
+ }
98
+ async execute(config, ctx) {
99
+ // Conversation continuity: when a prior run left messages (review-gate
100
+ // retry or rerunFromStep), continue the conversation with the new
101
+ // userMessage as additional context. The agent sees the full history.
102
+ const priorMessages = extractPriorMessages(ctx.priorState);
103
+ if (priorMessages && priorMessages.length > 0) {
104
+ return this.continueConversation(priorMessages, config, ctx);
105
+ }
106
+ // 1. Resolve tools from registry
107
+ const workflowTools = config.tools
108
+ ? this.toolRegistry.resolve(config.tools)
109
+ : [];
110
+ // 2. Convert WorkflowTools → pi-mono AgentTools
111
+ const piTools = this.convertTools(workflowTools, config.toolTimeout, ctx);
112
+ // 3. Clamp maxTurns if runtime doesn't support multi-turn
113
+ const effectiveMaxTurns = this.runtime.capabilities.multiTurn
114
+ ? config.maxTurns
115
+ : 1;
116
+ // 4. Build interceptor chain
117
+ const interceptors = this.buildInterceptors(config, ctx);
118
+ // 5. Map interceptors → AgentHooks
119
+ const hooks = this.buildHooks(interceptors, ctx);
120
+ // 6. Execute runtime
121
+ const events = this.runtime.execute(config, {
122
+ tools: this.runtime.capabilities.toolUse ? piTools : [],
123
+ hooks: this.runtime.capabilities.hooks ? hooks : {},
124
+ signal: ctx.runtime.metadata['signal'] ?? new AbortController().signal,
125
+ }, ctx);
126
+ // 7. Consume event stream
127
+ return this.consumeEvents(events, ctx, effectiveMaxTurns);
128
+ }
129
+ /**
130
+ * Continue a prior conversation. Called from `execute()` when
131
+ * `ctx.priorState.messages` is present (review-gate retry or rerunFromStep).
132
+ *
133
+ * Reconstructs the agent input with the full prior conversation and the
134
+ * current `config.userMessage` as the new user turn. The runtime decides
135
+ * how to inject the new message into the message stream.
136
+ */
137
+ async continueConversation(priorMessages, config, ctx) {
138
+ const priorState = (ctx.priorState ?? {});
139
+ const workflowTools = config.tools
140
+ ? this.toolRegistry.resolve(config.tools)
141
+ : [];
142
+ const piTools = this.convertTools(workflowTools, config.toolTimeout, ctx);
143
+ const interceptors = this.buildInterceptors(config, ctx);
144
+ const hooks = this.buildHooks(interceptors, ctx);
145
+ const effectiveMaxTurns = this.runtime.capabilities.multiTurn
146
+ ? config.maxTurns
147
+ : 1;
148
+ const completedToolCalls = priorState.completedToolCalls ?? [];
149
+ const usage = priorState.usage ?? { inputTokens: 0, outputTokens: 0 };
150
+ const currentTurn = priorState.currentTurn ?? 0;
151
+ const input = {
152
+ tools: this.runtime.capabilities.toolUse ? piTools : [],
153
+ hooks: this.runtime.capabilities.hooks ? hooks : {},
154
+ signal: ctx.runtime.metadata['signal'] ?? new AbortController().signal,
155
+ resume: {
156
+ messages: priorMessages,
157
+ payload: { action: 'approve', feedback: config.userMessage },
158
+ pauseState: {
159
+ type: 'awaiting_feedback',
160
+ reason: 'Continuing prior conversation',
161
+ prompt: config.userMessage,
162
+ state: {
163
+ messages: priorMessages,
164
+ currentTurn,
165
+ completedToolCalls,
166
+ usage,
167
+ },
168
+ },
169
+ },
170
+ };
171
+ const events = this.runtime.execute(config, input, ctx);
172
+ return this.consumeEvents(events, ctx, effectiveMaxTurns, {
173
+ messages: priorMessages,
174
+ currentTurn,
175
+ completedToolCalls,
176
+ usage,
177
+ });
178
+ }
179
+ async onResume(rowData, config, ctx) {
180
+ const pauseState = rowData;
181
+ const resumePayload = ctx.runtime.metadata['resumePayload'];
182
+ const pauseRequest = ctx.runtime.metadata['pauseRequest'];
183
+ if (resumePayload?.action === 'abort') {
184
+ return {
185
+ response: pauseState.messages.length > 0
186
+ ? 'Agent execution aborted by user.'
187
+ : '',
188
+ toolCalls: pauseState.completedToolCalls,
189
+ turnCount: pauseState.currentTurn,
190
+ usage: pauseState.usage,
191
+ };
192
+ }
193
+ // Resolve tools again (MCP tools may have changed)
194
+ const workflowTools = config.tools
195
+ ? this.toolRegistry.resolve(config.tools)
196
+ : [];
197
+ const piTools = this.convertTools(workflowTools, config.toolTimeout, ctx);
198
+ const interceptors = this.buildInterceptors(config, ctx);
199
+ const hooks = this.buildHooks(interceptors, ctx);
200
+ const effectiveMaxTurns = this.runtime.capabilities.multiTurn
201
+ ? config.maxTurns
202
+ : 1;
203
+ const input = {
204
+ tools: this.runtime.capabilities.toolUse ? piTools : [],
205
+ hooks: this.runtime.capabilities.hooks ? hooks : {},
206
+ signal: ctx.runtime.metadata['signal'] ?? new AbortController().signal,
207
+ };
208
+ if (pauseRequest) {
209
+ input.resume = {
210
+ messages: pauseState.messages,
211
+ payload: resumePayload ?? { action: 'approve' },
212
+ pauseState: pauseRequest,
213
+ };
214
+ }
215
+ const events = this.runtime.execute(config, input, ctx);
216
+ // Consume events, carrying over state from before pause
217
+ return this.consumeEvents(events, ctx, effectiveMaxTurns, pauseState);
218
+ }
219
+ // ─── Private: Tool conversion ───
220
+ convertTools(tools, timeoutMs, ctx) {
221
+ return tools.map((tool) => ({
222
+ name: tool.name,
223
+ label: tool.name,
224
+ description: tool.description,
225
+ parameters: this.zodToJsonSchema(tool.inputSchema),
226
+ execute: async (_toolCallId, params, signal) => {
227
+ const result = await withTimeout(tool.execute(params, {
228
+ signal: signal ?? new AbortController().signal,
229
+ log: ctx.log,
230
+ }), timeoutMs);
231
+ return {
232
+ content: [{ type: 'text', text: JSON.stringify(result) }],
233
+ details: result,
234
+ };
235
+ },
236
+ }));
237
+ }
238
+ /**
239
+ * Convert a Zod schema to a JSON Schema object for pi-mono tool parameters.
240
+ * Uses Zod's built-in JSON Schema support when available, falls back to
241
+ * a basic type: "object" wrapper.
242
+ */
243
+ zodToJsonSchema(schema) {
244
+ // Zod v3.25+ has a built-in jsonSchema() method
245
+ if ('jsonSchema' in schema && typeof schema.jsonSchema === 'function') {
246
+ return schema.jsonSchema();
247
+ }
248
+ // Fallback: opaque object schema
249
+ return { type: 'object' };
250
+ }
251
+ // ─── Private: Interceptors ───
252
+ buildInterceptors(config, ctx) {
253
+ const interceptors = [
254
+ new ToolLoggingInterceptor(ctx.emit.bind(ctx)),
255
+ ];
256
+ if (config.requireApproval && config.requireApproval.length > 0) {
257
+ interceptors.push(new ApprovalGateInterceptor(config.requireApproval));
258
+ }
259
+ return interceptors;
260
+ }
261
+ buildHooks(interceptors, ctx) {
262
+ return {
263
+ async beforeToolCall(tool, args) {
264
+ return runInterceptorChain(interceptors, tool, args);
265
+ },
266
+ async afterToolCall(tool, args, result) {
267
+ ctx.emit({
268
+ type: 'tool_call',
269
+ data: { tool, args, result, phase: 'end' },
270
+ });
271
+ },
272
+ };
273
+ }
274
+ // ─── Private: Event consumption ───
275
+ async consumeEvents(events, ctx, maxTurns, initialState) {
276
+ const state = initialState ?? {
277
+ messages: [],
278
+ currentTurn: 0,
279
+ completedToolCalls: [],
280
+ usage: { inputTokens: 0, outputTokens: 0 },
281
+ };
282
+ // Track args from tool_execution_start for use in tool_execution_end
283
+ const pendingToolArgs = new Map();
284
+ for await (const event of events) {
285
+ switch (event.type) {
286
+ case 'turn_start':
287
+ state.currentTurn++;
288
+ if (state.currentTurn > maxTurns) {
289
+ ctx.log.warn(`Agent exceeded maxTurns (${maxTurns}), stopping`);
290
+ return this.buildResult(state);
291
+ }
292
+ break;
293
+ case 'message_start':
294
+ ctx.emit({ type: 'thinking', data: { phase: 'start' } });
295
+ break;
296
+ case 'message_update': {
297
+ const updateMsg = event.message;
298
+ const partialText = extractResponseText(updateMsg);
299
+ ctx.emit({
300
+ type: 'progress',
301
+ data: { content: partialText },
302
+ });
303
+ break;
304
+ }
305
+ case 'message_end': {
306
+ const endMsg = event.message;
307
+ state.messages.push(endMsg);
308
+ // Accumulate usage from assistant messages
309
+ if (endMsg.role === 'assistant' && endMsg.usage) {
310
+ state.usage.inputTokens += endMsg.usage.input;
311
+ state.usage.outputTokens += endMsg.usage.output;
312
+ }
313
+ ctx.emit({
314
+ type: 'substep',
315
+ data: { type: 'message', content: extractResponseText(endMsg) },
316
+ });
317
+ break;
318
+ }
319
+ case 'tool_execution_start': {
320
+ const startEvt = event;
321
+ pendingToolArgs.set(startEvt.toolCallId, startEvt.args ?? {});
322
+ ctx.emit({
323
+ type: 'tool_call',
324
+ data: {
325
+ tool: startEvt.toolName,
326
+ args: startEvt.args,
327
+ phase: 'start',
328
+ toolCallId: startEvt.toolCallId,
329
+ },
330
+ });
331
+ break;
332
+ }
333
+ case 'tool_execution_end': {
334
+ const endEvt = event;
335
+ const toolArgs = pendingToolArgs.get(endEvt.toolCallId) ?? {};
336
+ pendingToolArgs.delete(endEvt.toolCallId);
337
+ state.completedToolCalls.push({
338
+ name: endEvt.toolName,
339
+ args: toolArgs,
340
+ result: endEvt.result,
341
+ durationMs: 0, // pi-mono doesn't provide timing; host can enrich
342
+ });
343
+ ctx.emit({
344
+ type: 'tool_call',
345
+ data: {
346
+ tool: endEvt.toolName,
347
+ result: endEvt.result,
348
+ phase: 'end',
349
+ toolCallId: endEvt.toolCallId,
350
+ isError: endEvt.isError,
351
+ },
352
+ });
353
+ break;
354
+ }
355
+ case 'turn_end': {
356
+ const turnEvt = event;
357
+ // Store tool result messages in state for resume
358
+ for (const tr of turnEvt.toolResults) {
359
+ state.messages.push(tr);
360
+ }
361
+ break;
362
+ }
363
+ case 'agent_end':
364
+ // Final event — loop will exit naturally
365
+ break;
366
+ default:
367
+ // agent_start, tool_execution_update, etc. — ignore
368
+ break;
369
+ }
370
+ }
371
+ return this.buildResult(state);
372
+ }
373
+ buildResult(state) {
374
+ // Find the last assistant message for the response text
375
+ let response = '';
376
+ for (let i = state.messages.length - 1; i >= 0; i--) {
377
+ const msg = state.messages[i];
378
+ if (msg && 'role' in msg && msg.role === 'assistant') {
379
+ response = extractResponseText(msg);
380
+ break;
381
+ }
382
+ }
383
+ return {
384
+ response,
385
+ toolCalls: state.completedToolCalls,
386
+ turnCount: state.currentTurn,
387
+ usage: state.usage,
388
+ };
389
+ }
390
+ }
391
+ /**
392
+ * Pull prior conversation messages out of an opaque `priorState` blob.
393
+ * Returns null if the shape doesn't match a serialized `AgentPauseState`.
394
+ */
395
+ function extractPriorMessages(priorState) {
396
+ if (!priorState)
397
+ return null;
398
+ const candidate = priorState['messages'];
399
+ if (!Array.isArray(candidate))
400
+ return null;
401
+ return candidate;
402
+ }
403
+ //# sourceMappingURL=agent-step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-step.js","sourceRoot":"","sources":["../../src/agents/agent-step.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * BaseAgentRuntime — abstract class for LLM runtime implementations.
3
+ *
4
+ * Returns `AsyncIterable<AgentEvent>` (pi-mono type). Single `execute()`
5
+ * method — run and resume use the same entry point (resume context is
6
+ * optional in `AgentInput`).
7
+ *
8
+ * **What the runtime does:**
9
+ * - Sends messages to the LLM
10
+ * - Yields pi-mono AgentEvent stream
11
+ * - Calls tools via hooks
12
+ *
13
+ * **What the runtime does NOT do:**
14
+ * - Tool resolution (AgentStep does this)
15
+ * - HITL / pause decisions (interceptor chain does this)
16
+ * - MCP connections (host-side adapter does this)
17
+ * - Event persistence (AgentStep does this via ctx.emit)
18
+ */
19
+ import type { z } from 'zod';
20
+ import type { AgentEvent } from '@earendil-works/pi-agent-core';
21
+ import type { AgentCapabilities, AgentInput } from './types.js';
22
+ import type { StepExecutionContext } from '../steps/base-step.js';
23
+ export declare abstract class BaseAgentRuntime<TConfig extends z.ZodTypeAny = z.ZodTypeAny> {
24
+ abstract readonly name: string;
25
+ abstract readonly capabilities: AgentCapabilities;
26
+ abstract readonly configSchema: TConfig;
27
+ /**
28
+ * Execute the agent. Returns an async iterable of pi-mono AgentEvent.
29
+ *
30
+ * - Fresh run: `input.resume` is undefined
31
+ * - Resuming after pause: `input.resume` contains conversation history + user's response
32
+ *
33
+ * The runtime does NOT handle tool execution, HITL, or MCP — AgentStep
34
+ * orchestrates all of that before calling this method.
35
+ */
36
+ abstract execute(config: z.infer<TConfig>, input: AgentInput, ctx: StepExecutionContext): AsyncIterable<AgentEvent>;
37
+ }
38
+ //# sourceMappingURL=base-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-runtime.d.ts","sourceRoot":"","sources":["../../src/agents/base-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,8BAAsB,gBAAgB,CACpC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IAE3C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAExC;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CACd,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EACxB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,oBAAoB,GACxB,aAAa,CAAC,UAAU,CAAC;CAC7B"}