pocket-agent 0.1.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 (166) hide show
  1. package/README.md +140 -0
  2. package/dist/adapters/createLLMEvaluator.d.ts +19 -0
  3. package/dist/adapters/createLLMEvaluator.d.ts.map +1 -0
  4. package/dist/adapters/createLLMEvaluator.js +150 -0
  5. package/dist/adapters/createLLMEvaluator.js.map +1 -0
  6. package/dist/adapters/models/anthropic.d.ts +15 -0
  7. package/dist/adapters/models/anthropic.d.ts.map +1 -0
  8. package/dist/adapters/models/anthropic.js +45 -0
  9. package/dist/adapters/models/anthropic.js.map +1 -0
  10. package/dist/adapters/models/gemini.d.ts +16 -0
  11. package/dist/adapters/models/gemini.d.ts.map +1 -0
  12. package/dist/adapters/models/gemini.js +58 -0
  13. package/dist/adapters/models/gemini.js.map +1 -0
  14. package/dist/adapters/models/lmStudioStreaming.d.ts +21 -0
  15. package/dist/adapters/models/lmStudioStreaming.d.ts.map +1 -0
  16. package/dist/adapters/models/lmStudioStreaming.js +90 -0
  17. package/dist/adapters/models/lmStudioStreaming.js.map +1 -0
  18. package/dist/adapters/models/lmstudio.d.ts +20 -0
  19. package/dist/adapters/models/lmstudio.d.ts.map +1 -0
  20. package/dist/adapters/models/lmstudio.js +59 -0
  21. package/dist/adapters/models/lmstudio.js.map +1 -0
  22. package/dist/adapters/models/ollama.d.ts +22 -0
  23. package/dist/adapters/models/ollama.d.ts.map +1 -0
  24. package/dist/adapters/models/ollama.js +61 -0
  25. package/dist/adapters/models/ollama.js.map +1 -0
  26. package/dist/adapters/models/ollamaStreaming.d.ts +30 -0
  27. package/dist/adapters/models/ollamaStreaming.d.ts.map +1 -0
  28. package/dist/adapters/models/ollamaStreaming.js +88 -0
  29. package/dist/adapters/models/ollamaStreaming.js.map +1 -0
  30. package/dist/adapters/models/openai.d.ts +17 -0
  31. package/dist/adapters/models/openai.d.ts.map +1 -0
  32. package/dist/adapters/models/openai.js +50 -0
  33. package/dist/adapters/models/openai.js.map +1 -0
  34. package/dist/defaults/defaultExecutor.d.ts +20 -0
  35. package/dist/defaults/defaultExecutor.d.ts.map +1 -0
  36. package/dist/defaults/defaultExecutor.js +67 -0
  37. package/dist/defaults/defaultExecutor.js.map +1 -0
  38. package/dist/defaults/llmPlanner.d.ts +20 -0
  39. package/dist/defaults/llmPlanner.d.ts.map +1 -0
  40. package/dist/defaults/llmPlanner.js +151 -0
  41. package/dist/defaults/llmPlanner.js.map +1 -0
  42. package/dist/defaults/planBuilder.d.ts +48 -0
  43. package/dist/defaults/planBuilder.d.ts.map +1 -0
  44. package/dist/defaults/planBuilder.js +105 -0
  45. package/dist/defaults/planBuilder.js.map +1 -0
  46. package/dist/defaults/singleStepPlanner.d.ts +17 -0
  47. package/dist/defaults/singleStepPlanner.d.ts.map +1 -0
  48. package/dist/defaults/singleStepPlanner.js +52 -0
  49. package/dist/defaults/singleStepPlanner.js.map +1 -0
  50. package/dist/evaluator/StepEvaluator.d.ts +9 -0
  51. package/dist/evaluator/StepEvaluator.d.ts.map +1 -0
  52. package/dist/evaluator/StepEvaluator.js +5 -0
  53. package/dist/evaluator/StepEvaluator.js.map +1 -0
  54. package/dist/events/EventBus.d.ts +13 -0
  55. package/dist/events/EventBus.d.ts.map +1 -0
  56. package/dist/events/EventBus.js +34 -0
  57. package/dist/events/EventBus.js.map +1 -0
  58. package/dist/executor/StepExecutor.d.ts +9 -0
  59. package/dist/executor/StepExecutor.d.ts.map +1 -0
  60. package/dist/executor/StepExecutor.js +5 -0
  61. package/dist/executor/StepExecutor.js.map +1 -0
  62. package/dist/index.d.ts +48 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +22 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/models/ModelAdapter.d.ts +5 -0
  67. package/dist/models/ModelAdapter.d.ts.map +1 -0
  68. package/dist/models/ModelAdapter.js +5 -0
  69. package/dist/models/ModelAdapter.js.map +1 -0
  70. package/dist/planner/PlanValidator.d.ts +16 -0
  71. package/dist/planner/PlanValidator.d.ts.map +1 -0
  72. package/dist/planner/PlanValidator.js +44 -0
  73. package/dist/planner/PlanValidator.js.map +1 -0
  74. package/dist/planner/Planner.d.ts +10 -0
  75. package/dist/planner/Planner.d.ts.map +1 -0
  76. package/dist/planner/Planner.js +5 -0
  77. package/dist/planner/Planner.js.map +1 -0
  78. package/dist/quickStart.d.ts +49 -0
  79. package/dist/quickStart.d.ts.map +1 -0
  80. package/dist/quickStart.js +77 -0
  81. package/dist/quickStart.js.map +1 -0
  82. package/dist/runner/AgentRunner.d.ts +29 -0
  83. package/dist/runner/AgentRunner.d.ts.map +1 -0
  84. package/dist/runner/AgentRunner.js +223 -0
  85. package/dist/runner/AgentRunner.js.map +1 -0
  86. package/dist/runner/RunStateManager.d.ts +21 -0
  87. package/dist/runner/RunStateManager.d.ts.map +1 -0
  88. package/dist/runner/RunStateManager.js +96 -0
  89. package/dist/runner/RunStateManager.js.map +1 -0
  90. package/dist/runner/RunningExecution.d.ts +14 -0
  91. package/dist/runner/RunningExecution.d.ts.map +1 -0
  92. package/dist/runner/RunningExecution.js +5 -0
  93. package/dist/runner/RunningExecution.js.map +1 -0
  94. package/dist/runner/StepScheduler.d.ts +12 -0
  95. package/dist/runner/StepScheduler.d.ts.map +1 -0
  96. package/dist/runner/StepScheduler.js +42 -0
  97. package/dist/runner/StepScheduler.js.map +1 -0
  98. package/dist/runner/createAgentRunner.d.ts +32 -0
  99. package/dist/runner/createAgentRunner.d.ts.map +1 -0
  100. package/dist/runner/createAgentRunner.js +57 -0
  101. package/dist/runner/createAgentRunner.js.map +1 -0
  102. package/dist/runner/resolveInputs.d.ts +7 -0
  103. package/dist/runner/resolveInputs.d.ts.map +1 -0
  104. package/dist/runner/resolveInputs.js +28 -0
  105. package/dist/runner/resolveInputs.js.map +1 -0
  106. package/dist/tools/ToolAdapter.d.ts +5 -0
  107. package/dist/tools/ToolAdapter.d.ts.map +1 -0
  108. package/dist/tools/ToolAdapter.js +5 -0
  109. package/dist/tools/ToolAdapter.js.map +1 -0
  110. package/dist/types/errors.d.ts +28 -0
  111. package/dist/types/errors.d.ts.map +1 -0
  112. package/dist/types/errors.js +37 -0
  113. package/dist/types/errors.js.map +1 -0
  114. package/dist/types/evaluator.d.ts +14 -0
  115. package/dist/types/evaluator.d.ts.map +1 -0
  116. package/dist/types/evaluator.js +5 -0
  117. package/dist/types/evaluator.js.map +1 -0
  118. package/dist/types/events.d.ts +79 -0
  119. package/dist/types/events.d.ts.map +1 -0
  120. package/dist/types/events.js +17 -0
  121. package/dist/types/events.js.map +1 -0
  122. package/dist/types/executor.d.ts +18 -0
  123. package/dist/types/executor.d.ts.map +1 -0
  124. package/dist/types/executor.js +5 -0
  125. package/dist/types/executor.js.map +1 -0
  126. package/dist/types/models.d.ts +18 -0
  127. package/dist/types/models.d.ts.map +1 -0
  128. package/dist/types/models.js +6 -0
  129. package/dist/types/models.js.map +1 -0
  130. package/dist/types/plan.d.ts +37 -0
  131. package/dist/types/plan.d.ts.map +1 -0
  132. package/dist/types/plan.js +5 -0
  133. package/dist/types/plan.js.map +1 -0
  134. package/dist/types/planner.d.ts +24 -0
  135. package/dist/types/planner.d.ts.map +1 -0
  136. package/dist/types/planner.js +5 -0
  137. package/dist/types/planner.js.map +1 -0
  138. package/dist/types/run.d.ts +48 -0
  139. package/dist/types/run.d.ts.map +1 -0
  140. package/dist/types/run.js +14 -0
  141. package/dist/types/run.js.map +1 -0
  142. package/dist/types/step.d.ts +52 -0
  143. package/dist/types/step.d.ts.map +1 -0
  144. package/dist/types/step.js +5 -0
  145. package/dist/types/step.js.map +1 -0
  146. package/dist/types/tools.d.ts +21 -0
  147. package/dist/types/tools.d.ts.map +1 -0
  148. package/dist/types/tools.js +5 -0
  149. package/dist/types/tools.js.map +1 -0
  150. package/dist/utils/dag.d.ts +18 -0
  151. package/dist/utils/dag.d.ts.map +1 -0
  152. package/dist/utils/dag.js +77 -0
  153. package/dist/utils/dag.js.map +1 -0
  154. package/dist/utils/ids.d.ts +6 -0
  155. package/dist/utils/ids.d.ts.map +1 -0
  156. package/dist/utils/ids.js +11 -0
  157. package/dist/utils/ids.js.map +1 -0
  158. package/dist/utils/schema.d.ts +15 -0
  159. package/dist/utils/schema.d.ts.map +1 -0
  160. package/dist/utils/schema.js +11 -0
  161. package/dist/utils/schema.js.map +1 -0
  162. package/dist/utils/time.d.ts +6 -0
  163. package/dist/utils/time.d.ts.map +1 -0
  164. package/dist/utils/time.js +10 -0
  165. package/dist/utils/time.js.map +1 -0
  166. package/package.json +50 -0
@@ -0,0 +1,77 @@
1
+ /**
2
+ * One-call quick start: create an agent with default single-step plan and
3
+ * model-based executor. Get running in a few lines, then customize as needed.
4
+ */
5
+ import { createAgentRunner } from "./runner/createAgentRunner.js";
6
+ import { createLLMEvaluator } from "./adapters/createLLMEvaluator.js";
7
+ import { createOpenAIModelAdapter } from "./adapters/models/openai.js";
8
+ import { createAnthropicModelAdapter } from "./adapters/models/anthropic.js";
9
+ import { createGeminiModelAdapter } from "./adapters/models/gemini.js";
10
+ import { createOllamaModelAdapter } from "./adapters/models/ollama.js";
11
+ import { createLmStudioModelAdapter } from "./adapters/models/lmstudio.js";
12
+ import { createSingleStepPlanner } from "./defaults/singleStepPlanner.js";
13
+ import { createLLMPlanner } from "./defaults/llmPlanner.js";
14
+ import { createDefaultExecutor } from "./defaults/defaultExecutor.js";
15
+ function resolveModel(provider, modelConfig = {}) {
16
+ switch (provider) {
17
+ case "openai":
18
+ return createOpenAIModelAdapter(modelConfig);
19
+ case "anthropic":
20
+ return createAnthropicModelAdapter(modelConfig);
21
+ case "gemini":
22
+ return createGeminiModelAdapter(modelConfig);
23
+ case "ollama":
24
+ return createOllamaModelAdapter(modelConfig);
25
+ case "lmstudio":
26
+ return createLmStudioModelAdapter(modelConfig);
27
+ default:
28
+ throw new Error(`Unknown provider: ${provider}`);
29
+ }
30
+ }
31
+ /**
32
+ * Create an agent runner with a single-step plan and model-based executor.
33
+ * No tools; just set your provider (and API key in env) and run.
34
+ *
35
+ * @example
36
+ * const runner = createQuickAgent({ provider: "openai" });
37
+ * const run = await runner.run({ goal: "What is 2+2? Explain briefly." });
38
+ * console.log(run.outputs?.answer);
39
+ */
40
+ export function createQuickAgent(config) {
41
+ const { provider, modelConfig = {}, systemPrompt } = config;
42
+ const model = resolveModel(provider, modelConfig);
43
+ const evaluator = createLLMEvaluator(model);
44
+ const planner = createSingleStepPlanner();
45
+ const executor = createDefaultExecutor({ model, systemPrompt });
46
+ return createAgentRunner({
47
+ planner,
48
+ executor,
49
+ evaluator,
50
+ model,
51
+ });
52
+ }
53
+ /**
54
+ * Create an agent runner that works from a goal only: no steps defined by you.
55
+ * When useLLMPlanner is true, the LLM generates the plan (steps) from the goal;
56
+ * otherwise a single implicit step is used (same as createQuickAgent).
57
+ * No tools; uses default executor and evaluator.
58
+ *
59
+ * @example
60
+ * const runner = createGoalDrivenAgent({ provider: "openai", useLLMPlanner: true });
61
+ * const run = await runner.run({ goal: "Explain quantum computing in 3 steps." });
62
+ * console.log(run.plan.steps, run.outputs);
63
+ */
64
+ export function createGoalDrivenAgent(config) {
65
+ const { provider, modelConfig = {}, systemPrompt, useLLMPlanner = false, llmPlannerOptions } = config;
66
+ const model = resolveModel(provider, modelConfig);
67
+ const evaluator = createLLMEvaluator(model);
68
+ const planner = useLLMPlanner ? createLLMPlanner(model, llmPlannerOptions ?? {}) : createSingleStepPlanner();
69
+ const executor = createDefaultExecutor({ model, systemPrompt });
70
+ return createAgentRunner({
71
+ planner,
72
+ executor,
73
+ evaluator,
74
+ model,
75
+ });
76
+ }
77
+ //# sourceMappingURL=quickStart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickStart.js","sourceRoot":"","sources":["../src/quickStart.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAMlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAyBtE,SAAS,YAAY,CAAC,QAAsB,EAAE,cAAsB,EAAE;IACpE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,WAAgC,CAAC,CAAC;QACpE,KAAK,WAAW;YACd,OAAO,2BAA2B,CAAC,WAAmC,CAAC,CAAC;QAC1E,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,WAAgC,CAAC,CAAC;QACpE,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,WAAgC,CAAC,CAAC;QACpE,KAAK,UAAU;YACb,OAAO,0BAA0B,CAAC,WAAkC,CAAC,CAAC;QACxE;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,EAAE,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAChE,OAAO,iBAAiB,CAAC;QACvB,OAAO;QACP,QAAQ;QACR,SAAS;QACT,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,EAAE,EAAE,YAAY,EAAE,aAAa,GAAG,KAAK,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;IACtG,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAC7G,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAChE,OAAO,iBAAiB,CAAC;QACvB,OAAO;QACP,QAAQ;QACR,SAAS;QACT,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Top-level orchestrator (spec §6.1, §7).
3
+ */
4
+ import type { RunTaskInput, RunResult, RunOptions } from "../types/run.js";
5
+ import type { Planner } from "../planner/Planner.js";
6
+ import type { StepExecutor } from "../executor/StepExecutor.js";
7
+ import type { StepEvaluator } from "../evaluator/StepEvaluator.js";
8
+ import type { ToolAdapter } from "../types/tools.js";
9
+ import type { ModelAdapter } from "../types/models.js";
10
+ import { RunStateManager } from "./RunStateManager.js";
11
+ import { EventBus } from "../events/EventBus.js";
12
+ export interface AgentRunnerDeps {
13
+ planner: Planner;
14
+ executor: StepExecutor;
15
+ evaluator: StepEvaluator;
16
+ tools?: Record<string, ToolAdapter>;
17
+ model?: ModelAdapter;
18
+ defaultOptions?: Partial<RunOptions>;
19
+ }
20
+ export declare class AgentRunner {
21
+ private deps;
22
+ private stateManager;
23
+ private eventBus;
24
+ constructor(deps: AgentRunnerDeps, stateManager: RunStateManager, eventBus: EventBus);
25
+ start(input: RunTaskInput): import("./RunningExecution.js").RunningExecution;
26
+ run(input: RunTaskInput): Promise<RunResult>;
27
+ private runLoop;
28
+ }
29
+ //# sourceMappingURL=AgentRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRunner.d.ts","sourceRoot":"","sources":["../../src/runner/AgentRunner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AA2BjD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CACtC;AAED,qBAAa,WAAW;IAEpB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;gBAFR,IAAI,EAAE,eAAe,EACrB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,QAAQ;IAG5B,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,uBAAuB,EAAE,gBAAgB;IAYtE,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;YAIpC,OAAO;CAuMtB"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Top-level orchestrator (spec §6.1, §7).
3
+ */
4
+ import { DEFAULT_RUN_OPTIONS } from "../types/run.js";
5
+ import { assertValidPlan } from "../planner/PlanValidator.js";
6
+ import { getReadyStepIds } from "./StepScheduler.js";
7
+ import { resolveInputs } from "./resolveInputs.js";
8
+ import { nowISO } from "../utils/time.js";
9
+ import { durationMs } from "../utils/time.js";
10
+ import { RunFailureError } from "../types/errors.js";
11
+ function mergeOptions(overrides) {
12
+ return { ...DEFAULT_RUN_OPTIONS, ...overrides };
13
+ }
14
+ function toRunResult(state) {
15
+ const completedAt = state.completedAt ?? nowISO();
16
+ const status = state.status === "completed" || state.status === "failed" || state.status === "partial"
17
+ ? state.status
18
+ : "failed";
19
+ return {
20
+ runId: state.runId,
21
+ status,
22
+ plan: state.currentPlan,
23
+ steps: { ...state.steps },
24
+ outputs: { ...state.outputs },
25
+ startedAt: state.startedAt,
26
+ completedAt,
27
+ durationMs: durationMs(state.startedAt, completedAt),
28
+ };
29
+ }
30
+ export class AgentRunner {
31
+ constructor(deps, stateManager, eventBus) {
32
+ this.deps = deps;
33
+ this.stateManager = stateManager;
34
+ this.eventBus = eventBus;
35
+ }
36
+ start(input) {
37
+ this.stateManager.createRun(input, input.options ?? this.deps.defaultOptions);
38
+ const runId = this.stateManager.getState().runId;
39
+ const result = this.runLoop(input, true);
40
+ return {
41
+ runId,
42
+ result,
43
+ on: (eventName, handler) => this.eventBus.on(eventName, handler),
44
+ getState: () => this.stateManager.getState(),
45
+ };
46
+ }
47
+ async run(input) {
48
+ return this.runLoop(input, false);
49
+ }
50
+ async runLoop(input, skipCreateRun) {
51
+ const options = mergeOptions(input.options ?? this.deps.defaultOptions);
52
+ const tools = this.deps.tools ?? {};
53
+ const context = input.context ?? {};
54
+ if (!skipCreateRun) {
55
+ this.stateManager.createRun(input, options);
56
+ }
57
+ const state = this.stateManager.getState();
58
+ this.eventBus.emit("run.started", { runId: state.runId });
59
+ // Planning
60
+ const plan = await this.deps.planner.createPlan({
61
+ goal: input.goal,
62
+ context: context,
63
+ constraints: input.constraints ?? [],
64
+ availableTools: Object.values(tools).map((t) => t.definition),
65
+ options,
66
+ });
67
+ assertValidPlan(plan);
68
+ this.stateManager.setPlan(plan);
69
+ this.eventBus.emit("plan.created", { runId: state.runId, plan });
70
+ this.stateManager.setRunStatus("running");
71
+ let planRevisions = 0;
72
+ const startTime = Date.now();
73
+ // Execution loop
74
+ while (true) {
75
+ const currentState = this.stateManager.getState();
76
+ if (currentState.status === "failed" || currentState.status === "completed" || currentState.status === "partial") {
77
+ break;
78
+ }
79
+ if (Date.now() - startTime > options.maxExecutionTimeMs) {
80
+ this.stateManager.setRunStatus("failed", nowISO());
81
+ this.eventBus.emit("run.failed", { runId: state.runId, error: new RunFailureError("maxExecutionTimeMs exceeded", state.runId) });
82
+ break;
83
+ }
84
+ const totalStepsExecuted = Object.values(currentState.steps).reduce((n, r) => n + r.attempts.length, 0);
85
+ if (totalStepsExecuted >= options.maxTotalSteps) {
86
+ this.stateManager.setRunStatus("failed", nowISO());
87
+ this.eventBus.emit("run.failed", { runId: state.runId, error: new RunFailureError("maxTotalSteps exceeded", state.runId) });
88
+ break;
89
+ }
90
+ const readyIds = getReadyStepIds(currentState.currentPlan, currentState.steps, options);
91
+ if (readyIds.length === 0) {
92
+ const allTerminal = currentState.currentPlan.steps.every((s) => {
93
+ const r = currentState.steps[s.id];
94
+ return r && (r.status === "completed" || r.status === "failed" || r.status === "blocked" || r.status === "skipped");
95
+ });
96
+ if (allTerminal) {
97
+ const anyFailed = currentState.currentPlan.steps.some((s) => currentState.steps[s.id]?.status === "failed");
98
+ this.stateManager.setRunStatus(anyFailed ? "failed" : "completed", nowISO());
99
+ this.eventBus.emit(anyFailed ? "run.failed" : "run.completed", anyFailed ? { runId: state.runId, timestamp: nowISO() } : { runId: state.runId, outputs: currentState.outputs, timestamp: nowISO() });
100
+ }
101
+ else {
102
+ this.stateManager.setRunStatus("partial", nowISO());
103
+ this.eventBus.emit("run.failed", { runId: state.runId, timestamp: nowISO() });
104
+ }
105
+ break;
106
+ }
107
+ for (const stepId of readyIds) {
108
+ const stepRecord = this.stateManager.getStepRecord(stepId);
109
+ const step = stepRecord.step;
110
+ const attempt = stepRecord.attempts.length + 1;
111
+ if (attempt > options.maxStepAttempts) {
112
+ this.stateManager.setStepStatus(stepId, "failed");
113
+ this.eventBus.emit("step.failed", { runId: state.runId, stepId, attempt: attempt - 1, timestamp: nowISO() });
114
+ if (options.stopOnStepFailure) {
115
+ this.stateManager.setRunStatus("failed", nowISO());
116
+ this.eventBus.emit("run.failed", { runId: state.runId, timestamp: nowISO() });
117
+ return toRunResult(this.stateManager.getState());
118
+ }
119
+ continue;
120
+ }
121
+ this.stateManager.setStepStatus(stepId, attempt > 1 ? "retrying" : "running");
122
+ this.eventBus.emit("step.started", { runId: state.runId, stepId, attempt, timestamp: nowISO() });
123
+ if (attempt > 1) {
124
+ this.eventBus.emit("step.retrying", { runId: state.runId, stepId, attempt, timestamp: nowISO() });
125
+ }
126
+ const resolvedInputs = resolveInputs(step.inputs, context, this.stateManager.getState().steps);
127
+ let attemptResult;
128
+ try {
129
+ attemptResult = await this.deps.executor.execute({
130
+ runId: state.runId,
131
+ step,
132
+ attempt,
133
+ resolvedInputs,
134
+ runContext: context,
135
+ tools,
136
+ model: this.deps.model,
137
+ priorAttempts: stepRecord.attempts,
138
+ });
139
+ }
140
+ catch (err) {
141
+ attemptResult = {
142
+ stepId,
143
+ attempt,
144
+ status: "error",
145
+ error: { code: "EXECUTION_ERROR", message: String(err), details: err },
146
+ startedAt: nowISO(),
147
+ completedAt: nowISO(),
148
+ durationMs: 0,
149
+ };
150
+ }
151
+ this.stateManager.recordStepAttempt(stepId, attemptResult);
152
+ const evaluation = await this.deps.evaluator.evaluate({
153
+ runId: state.runId,
154
+ step,
155
+ attemptResult,
156
+ priorAttempts: stepRecord.attempts,
157
+ });
158
+ this.stateManager.setStepEvaluation(stepId, evaluation);
159
+ if (evaluation.verdict === "complete") {
160
+ const output = attemptResult.structuredOutput ?? attemptResult.rawOutput ?? {};
161
+ this.stateManager.setFinalOutput(stepId, output, attemptResult.artifacts);
162
+ this.stateManager.setRunOutputs(output);
163
+ this.eventBus.emit("step.completed", {
164
+ runId: state.runId,
165
+ stepId,
166
+ attempt,
167
+ outputs: output,
168
+ timestamp: nowISO(),
169
+ });
170
+ continue;
171
+ }
172
+ if (evaluation.verdict === "retry") {
173
+ if (attempt < step.retryPolicy.maxAttempts && attempt < options.maxStepAttempts) {
174
+ this.stateManager.setStepStatus(stepId, "ready");
175
+ break; // re-enter main loop to re-pick this step
176
+ }
177
+ this.stateManager.setStepStatus(stepId, "failed");
178
+ this.eventBus.emit("step.failed", { runId: state.runId, stepId, attempt, error: evaluation.reasons, timestamp: nowISO() });
179
+ if (options.stopOnStepFailure) {
180
+ this.stateManager.setRunStatus("failed", nowISO());
181
+ this.eventBus.emit("run.failed", { runId: state.runId, timestamp: nowISO() });
182
+ return toRunResult(this.stateManager.getState());
183
+ }
184
+ continue;
185
+ }
186
+ if (evaluation.verdict === "needs_replan") {
187
+ if (planRevisions >= options.maxPlanRevisions) {
188
+ this.stateManager.setStepStatus(stepId, "failed");
189
+ this.stateManager.setRunStatus("failed", nowISO());
190
+ this.eventBus.emit("run.failed", { runId: state.runId, timestamp: nowISO() });
191
+ return toRunResult(this.stateManager.getState());
192
+ }
193
+ const newPlan = await this.deps.planner.replan({
194
+ runId: state.runId,
195
+ goal: input.goal,
196
+ context: context,
197
+ constraints: input.constraints ?? [],
198
+ currentPlan: this.stateManager.getState().currentPlan,
199
+ failedStepId: stepId,
200
+ availableTools: Object.values(tools).map((t) => t.definition),
201
+ options,
202
+ });
203
+ assertValidPlan(newPlan);
204
+ this.stateManager.appendPlanHistory(this.stateManager.getState().currentPlan);
205
+ this.stateManager.setPlan(newPlan);
206
+ planRevisions++;
207
+ this.eventBus.emit("plan.revised", { runId: state.runId, plan: newPlan, timestamp: nowISO() });
208
+ break; // re-enter loop to get new ready steps
209
+ }
210
+ // failed
211
+ this.stateManager.setStepStatus(stepId, "failed");
212
+ this.eventBus.emit("step.failed", { runId: state.runId, stepId, attempt, error: evaluation.reasons, timestamp: nowISO() });
213
+ if (options.stopOnStepFailure) {
214
+ this.stateManager.setRunStatus("failed", nowISO());
215
+ this.eventBus.emit("run.failed", { runId: state.runId, timestamp: nowISO() });
216
+ return toRunResult(this.stateManager.getState());
217
+ }
218
+ }
219
+ }
220
+ return toRunResult(this.stateManager.getState());
221
+ }
222
+ }
223
+ //# sourceMappingURL=AgentRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRunner.js","sourceRoot":"","sources":["../../src/runner/AgentRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Run-scoped execution state (spec §15).
3
+ */
4
+ import type { RunState, RunStatus, RunTaskInput, RunOptions } from "../types/run.js";
5
+ import type { Plan } from "../types/plan.js";
6
+ import type { StepRunRecord, StepStatus, StepAttemptResult, EvaluationResult, ArtifactRef } from "../types/step.js";
7
+ export declare class RunStateManager {
8
+ private state;
9
+ createRun(task: RunTaskInput, options?: Partial<RunOptions>): RunState;
10
+ setPlan(plan: Plan): void;
11
+ appendPlanHistory(plan: Plan): void;
12
+ getStepRecord(stepId: string): StepRunRecord | undefined;
13
+ recordStepAttempt(stepId: string, attemptResult: StepAttemptResult): void;
14
+ setStepStatus(stepId: string, status: StepStatus): void;
15
+ setStepEvaluation(stepId: string, evaluation: EvaluationResult): void;
16
+ setFinalOutput(stepId: string, output: Record<string, unknown>, artifacts?: ArtifactRef[]): void;
17
+ setRunOutputs(outputs: Record<string, unknown>): void;
18
+ setRunStatus(status: RunStatus, completedAt?: string): void;
19
+ getState(): RunState;
20
+ }
21
+ //# sourceMappingURL=RunStateManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunStateManager.d.ts","sourceRoot":"","sources":["../../src/runner/RunStateManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA2BpH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAY;IAEzB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,QAAQ;IAkBtE,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAQzB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAInC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIxD,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,GAAG,IAAI;IAOzE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAOvD,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAOrE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI;IAShG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIrD,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAO3D,QAAQ,IAAI,QAAQ;CAGrB"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Run-scoped execution state (spec §15).
3
+ */
4
+ import { createRunId } from "../utils/ids.js";
5
+ import { nowISO } from "../utils/time.js";
6
+ import { DEFAULT_RUN_OPTIONS } from "../types/run.js";
7
+ function mergeOptions(overrides) {
8
+ return { ...DEFAULT_RUN_OPTIONS, ...overrides };
9
+ }
10
+ function emptyPlan(goal) {
11
+ return {
12
+ id: "",
13
+ version: 0,
14
+ goal,
15
+ steps: [],
16
+ createdAt: nowISO(),
17
+ };
18
+ }
19
+ function createStepRecord(step) {
20
+ return {
21
+ step,
22
+ status: "pending",
23
+ attempts: [],
24
+ };
25
+ }
26
+ export class RunStateManager {
27
+ createRun(task, options) {
28
+ const runId = createRunId();
29
+ const opts = mergeOptions(task.options ?? options);
30
+ this.state = {
31
+ runId,
32
+ status: "planning",
33
+ task,
34
+ options: opts,
35
+ currentPlan: emptyPlan(task.goal),
36
+ planHistory: [],
37
+ steps: {},
38
+ outputs: {},
39
+ artifacts: {},
40
+ startedAt: nowISO(),
41
+ };
42
+ return this.state;
43
+ }
44
+ setPlan(plan) {
45
+ this.state.currentPlan = plan;
46
+ this.state.steps = {};
47
+ for (const s of plan.steps) {
48
+ this.state.steps[s.id] = createStepRecord(s);
49
+ }
50
+ }
51
+ appendPlanHistory(plan) {
52
+ this.state.planHistory.push(plan);
53
+ }
54
+ getStepRecord(stepId) {
55
+ return this.state.steps[stepId];
56
+ }
57
+ recordStepAttempt(stepId, attemptResult) {
58
+ const record = this.state.steps[stepId];
59
+ if (record) {
60
+ record.attempts.push(attemptResult);
61
+ }
62
+ }
63
+ setStepStatus(stepId, status) {
64
+ const record = this.state.steps[stepId];
65
+ if (record) {
66
+ record.status = status;
67
+ }
68
+ }
69
+ setStepEvaluation(stepId, evaluation) {
70
+ const record = this.state.steps[stepId];
71
+ if (record) {
72
+ record.latestEvaluation = evaluation;
73
+ }
74
+ }
75
+ setFinalOutput(stepId, output, artifacts) {
76
+ const record = this.state.steps[stepId];
77
+ if (record) {
78
+ record.finalOutput = output;
79
+ record.finalArtifacts = artifacts;
80
+ record.status = "completed";
81
+ }
82
+ }
83
+ setRunOutputs(outputs) {
84
+ this.state.outputs = { ...this.state.outputs, ...outputs };
85
+ }
86
+ setRunStatus(status, completedAt) {
87
+ this.state.status = status;
88
+ if (completedAt) {
89
+ this.state.completedAt = completedAt;
90
+ }
91
+ }
92
+ getState() {
93
+ return this.state;
94
+ }
95
+ }
96
+ //# sourceMappingURL=RunStateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunStateManager.js","sourceRoot":"","sources":["../../src/runner/RunStateManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,SAAS,YAAY,CAAC,SAA+B;IACnD,OAAO,EAAE,GAAG,mBAAmB,EAAE,GAAG,SAAS,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO;QACL,EAAE,EAAE,EAAE;QACN,OAAO,EAAE,CAAC;QACV,IAAI;QACJ,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,MAAM,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAsB;IAC9C,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,eAAe;IAG1B,SAAS,CAAC,IAAkB,EAAE,OAA6B;QACzD,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG;YACX,KAAK;YACL,MAAM,EAAE,UAAU;YAClB,IAAI;YACJ,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,MAAM,EAAE;SACpB,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,IAAU;QAChB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,IAAU;QAC1B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,iBAAiB,CAAC,MAAc,EAAE,aAAgC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,MAAkB;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,MAAc,EAAE,UAA4B;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,gBAAgB,GAAG,UAAU,CAAC;QACvC,CAAC;IACH,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,MAA+B,EAAE,SAAyB;QACvF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;YAC5B,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;YAClC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,aAAa,CAAC,OAAgC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IAC7D,CAAC;IAED,YAAY,CAAC,MAAiB,EAAE,WAAoB;QAClD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3B,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QACvC,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Event-driven execution handle (spec §23.3).
3
+ */
4
+ import type { RunResult } from "../types/run.js";
5
+ import type { RunState } from "../types/run.js";
6
+ import type { EventName } from "../types/events.js";
7
+ import type { AgentRunnerEvent } from "../types/events.js";
8
+ export interface RunningExecution {
9
+ runId: string;
10
+ result: Promise<RunResult>;
11
+ on(eventName: EventName, handler: (event: AgentRunnerEvent) => void): void;
12
+ getState(): RunState;
13
+ }
14
+ //# sourceMappingURL=RunningExecution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunningExecution.d.ts","sourceRoot":"","sources":["../../src/runner/RunningExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3E,QAAQ,IAAI,QAAQ,CAAC;CACtB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Event-driven execution handle (spec §23.3).
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=RunningExecution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunningExecution.js","sourceRoot":"","sources":["../../src/runner/RunningExecution.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Determines which steps are ready to run (spec §6.1, §7.3, §20).
3
+ */
4
+ import type { Plan } from "../types/plan.js";
5
+ import type { StepRunRecord } from "../types/step.js";
6
+ import type { RunOptions } from "../types/run.js";
7
+ /**
8
+ * Returns step IDs that are ready: dependencies satisfied and status is pending/ready.
9
+ * Respects maxParallelSteps (v1: default 1 = sequential).
10
+ */
11
+ export declare function getReadyStepIds(plan: Plan, stepRecords: Record<string, StepRunRecord>, options: RunOptions): string[];
12
+ //# sourceMappingURL=StepScheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepScheduler.d.ts","sourceRoot":"","sources":["../../src/runner/StepScheduler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC1C,OAAO,EAAE,UAAU,GAClB,MAAM,EAAE,CA+BV"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Determines which steps are ready to run (spec §6.1, §7.3, §20).
3
+ */
4
+ const TERMINAL_STATUSES = new Set(["completed", "failed", "blocked", "skipped"]);
5
+ const SCHEDULABLE_STATUSES = new Set(["pending", "ready"]);
6
+ /**
7
+ * Returns step IDs that are ready: dependencies satisfied and status is pending/ready.
8
+ * Respects maxParallelSteps (v1: default 1 = sequential).
9
+ */
10
+ export function getReadyStepIds(plan, stepRecords, options) {
11
+ const completedOrTerminal = new Set();
12
+ for (const [id, record] of Object.entries(stepRecords)) {
13
+ if (record.status === "completed" || record.status === "failed" || record.status === "blocked" || record.status === "skipped") {
14
+ completedOrTerminal.add(id);
15
+ }
16
+ }
17
+ const dependencySatisfied = new Set();
18
+ for (const step of plan.steps) {
19
+ const deps = step.dependencies ?? [];
20
+ const allDone = deps.every((d) => completedOrTerminal.has(d));
21
+ if (allDone) {
22
+ dependencySatisfied.add(step.id);
23
+ }
24
+ }
25
+ const ready = [];
26
+ for (const step of plan.steps) {
27
+ if (!dependencySatisfied.has(step.id))
28
+ continue;
29
+ const record = stepRecords[step.id];
30
+ const status = record?.status ?? "pending";
31
+ if (record?.status === "running" || record?.status === "retrying")
32
+ continue;
33
+ if (TERMINAL_STATUSES.has(status))
34
+ continue;
35
+ if (SCHEDULABLE_STATUSES.has(status)) {
36
+ ready.push(step.id);
37
+ }
38
+ }
39
+ const max = options.maxParallelSteps ?? 1;
40
+ return ready.slice(0, max);
41
+ }
42
+ //# sourceMappingURL=StepScheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepScheduler.js","sourceRoot":"","sources":["../../src/runner/StepScheduler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AACzF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAU,EACV,WAA0C,EAC1C,OAAmB;IAEnB,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9C,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9H,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,OAAO,EAAE,CAAC;YACZ,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,SAAS;QAChD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,SAAS,CAAC;QAC3C,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,EAAE,MAAM,KAAK,UAAU;YAAE,SAAS;QAC5E,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAC5C,IAAI,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Factory for AgentRunner (spec §23.1).
3
+ */
4
+ import type { Planner } from "../planner/Planner.js";
5
+ import type { StepExecutor } from "../executor/StepExecutor.js";
6
+ import type { StepEvaluator } from "../evaluator/StepEvaluator.js";
7
+ import type { ToolAdapter } from "../types/tools.js";
8
+ import type { ModelAdapter } from "../types/models.js";
9
+ import type { RunOptions } from "../types/run.js";
10
+ import { AgentRunner } from "./AgentRunner.js";
11
+ import type { OpenAIModelConfig } from "../adapters/models/openai.js";
12
+ import type { AnthropicModelConfig } from "../adapters/models/anthropic.js";
13
+ import type { GeminiModelConfig } from "../adapters/models/gemini.js";
14
+ import type { OllamaModelConfig } from "../adapters/models/ollama.js";
15
+ import type { LmStudioModelConfig } from "../adapters/models/lmstudio.js";
16
+ export type ProviderName = "openai" | "anthropic" | "gemini" | "ollama" | "lmstudio";
17
+ export interface AgentRunnerConfig {
18
+ planner: Planner;
19
+ executor: StepExecutor;
20
+ /** Required when provider is not set. When provider is set, a default LLM evaluator is used. */
21
+ evaluator?: StepEvaluator;
22
+ tools?: Record<string, ToolAdapter>;
23
+ model?: ModelAdapter;
24
+ defaultOptions?: Partial<RunOptions>;
25
+ /** When set, model and evaluator are created from env/modelConfig; install the matching SDK (openai for openai/ollama/lmstudio). */
26
+ provider?: ProviderName;
27
+ /** Override env-based config for the chosen provider. */
28
+ modelConfig?: OpenAIModelConfig | AnthropicModelConfig | GeminiModelConfig | OllamaModelConfig | LmStudioModelConfig;
29
+ }
30
+ export declare function createAgentRunner(config: AgentRunnerConfig): AgentRunner;
31
+ export type { AgentRunner };
32
+ //# sourceMappingURL=createAgentRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAgentRunner.d.ts","sourceRoot":"","sources":["../../src/runner/createAgentRunner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAS/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAErF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,gGAAgG;IAChG,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,oIAAoI;IACpI,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,yDAAyD;IACzD,WAAW,CAAC,EACR,iBAAiB,GACjB,oBAAoB,GACpB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,CAAC;CACzB;AAuCD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAgBxE;AAED,YAAY,EAAE,WAAW,EAAE,CAAC"}