funolio-agent 0.17.9 → 1.0.3

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 (147) hide show
  1. package/dist/approval.d.ts +7 -6
  2. package/dist/approval.d.ts.map +1 -1
  3. package/dist/approval.js +40 -10
  4. package/dist/approval.js.map +1 -1
  5. package/dist/backfill.js +2 -2
  6. package/dist/backfill.js.map +1 -1
  7. package/dist/clerk-model.d.ts +0 -1
  8. package/dist/clerk-model.d.ts.map +1 -1
  9. package/dist/clerk-model.js +24 -50
  10. package/dist/clerk-model.js.map +1 -1
  11. package/dist/commands/configure-provider.js +2 -2
  12. package/dist/commands/configure-provider.js.map +1 -1
  13. package/dist/commands/configure.d.ts.map +1 -1
  14. package/dist/commands/configure.js +10 -14
  15. package/dist/commands/configure.js.map +1 -1
  16. package/dist/commands/start.d.ts.map +1 -1
  17. package/dist/commands/start.js +17 -2
  18. package/dist/commands/start.js.map +1 -1
  19. package/dist/config.d.ts +1 -1
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +2 -2
  22. package/dist/config.js.map +1 -1
  23. package/dist/context-window.d.ts +2 -8
  24. package/dist/context-window.d.ts.map +1 -1
  25. package/dist/context-window.js +4 -4
  26. package/dist/context-window.js.map +1 -1
  27. package/dist/eval/orchestrator-front-door-replay.js +43 -2
  28. package/dist/eval/orchestrator-front-door-replay.js.map +1 -1
  29. package/dist/eval/orchestrator-todo-dispatch-replay.d.ts +2 -0
  30. package/dist/eval/orchestrator-todo-dispatch-replay.d.ts.map +1 -0
  31. package/dist/eval/orchestrator-todo-dispatch-replay.js +253 -0
  32. package/dist/eval/orchestrator-todo-dispatch-replay.js.map +1 -0
  33. package/dist/eval/orchestrator-todo-planning-replay.d.ts +2 -0
  34. package/dist/eval/orchestrator-todo-planning-replay.d.ts.map +1 -0
  35. package/dist/eval/orchestrator-todo-planning-replay.js +247 -0
  36. package/dist/eval/orchestrator-todo-planning-replay.js.map +1 -0
  37. package/dist/eval/policy-detection-replay.d.ts +2 -0
  38. package/dist/eval/policy-detection-replay.d.ts.map +1 -0
  39. package/dist/eval/policy-detection-replay.js +122 -0
  40. package/dist/eval/policy-detection-replay.js.map +1 -0
  41. package/dist/eval/todo-worker-runtime-replay.d.ts +2 -0
  42. package/dist/eval/todo-worker-runtime-replay.d.ts.map +1 -0
  43. package/dist/eval/todo-worker-runtime-replay.js +520 -0
  44. package/dist/eval/todo-worker-runtime-replay.js.map +1 -0
  45. package/dist/integration-tokens.d.ts +6 -0
  46. package/dist/integration-tokens.d.ts.map +1 -1
  47. package/dist/integration-tokens.js +43 -0
  48. package/dist/integration-tokens.js.map +1 -1
  49. package/dist/local-data.d.ts +128 -1
  50. package/dist/local-data.d.ts.map +1 -1
  51. package/dist/local-data.js +702 -18
  52. package/dist/local-data.js.map +1 -1
  53. package/dist/local-db.d.ts.map +1 -1
  54. package/dist/local-db.js +216 -12
  55. package/dist/local-db.js.map +1 -1
  56. package/dist/local-funnel.d.ts.map +1 -1
  57. package/dist/local-funnel.js +7 -0
  58. package/dist/local-funnel.js.map +1 -1
  59. package/dist/local-server.d.ts.map +1 -1
  60. package/dist/local-server.js +119 -96
  61. package/dist/local-server.js.map +1 -1
  62. package/dist/mcp/bridge-server.d.ts.map +1 -1
  63. package/dist/mcp/bridge-server.js +8 -2
  64. package/dist/mcp/bridge-server.js.map +1 -1
  65. package/dist/mcp/manager.d.ts +5 -0
  66. package/dist/mcp/manager.d.ts.map +1 -1
  67. package/dist/mcp/manager.js +36 -0
  68. package/dist/mcp/manager.js.map +1 -1
  69. package/dist/mcp/sync-cli-config.d.ts +5 -0
  70. package/dist/mcp/sync-cli-config.d.ts.map +1 -1
  71. package/dist/mcp/sync-cli-config.js +10 -2
  72. package/dist/mcp/sync-cli-config.js.map +1 -1
  73. package/dist/message-loop.d.ts.map +1 -1
  74. package/dist/message-loop.js +113 -14
  75. package/dist/message-loop.js.map +1 -1
  76. package/dist/mqtt-client.d.ts +44 -0
  77. package/dist/mqtt-client.d.ts.map +1 -1
  78. package/dist/mqtt-client.js.map +1 -1
  79. package/dist/orchestration/front-door-policy.d.ts +26 -9
  80. package/dist/orchestration/front-door-policy.d.ts.map +1 -1
  81. package/dist/orchestration/front-door-policy.js +242 -69
  82. package/dist/orchestration/front-door-policy.js.map +1 -1
  83. package/dist/orchestration/orchestrator-blocked-prompt.d.ts +18 -0
  84. package/dist/orchestration/orchestrator-blocked-prompt.d.ts.map +1 -0
  85. package/dist/orchestration/orchestrator-blocked-prompt.js +46 -0
  86. package/dist/orchestration/orchestrator-blocked-prompt.js.map +1 -0
  87. package/dist/orchestration/orchestrator-final-response-prompt.d.ts +10 -0
  88. package/dist/orchestration/orchestrator-final-response-prompt.d.ts.map +1 -0
  89. package/dist/orchestration/orchestrator-final-response-prompt.js +39 -0
  90. package/dist/orchestration/orchestrator-final-response-prompt.js.map +1 -0
  91. package/dist/orchestration/orchestrator-operating-prompt.d.ts +11 -0
  92. package/dist/orchestration/orchestrator-operating-prompt.d.ts.map +1 -1
  93. package/dist/orchestration/orchestrator-operating-prompt.js +106 -36
  94. package/dist/orchestration/orchestrator-operating-prompt.js.map +1 -1
  95. package/dist/orchestration/policy-prompt.d.ts +6 -0
  96. package/dist/orchestration/policy-prompt.d.ts.map +1 -0
  97. package/dist/orchestration/policy-prompt.js +40 -0
  98. package/dist/orchestration/policy-prompt.js.map +1 -0
  99. package/dist/orchestration/worker-operating-prompt.d.ts +16 -0
  100. package/dist/orchestration/worker-operating-prompt.d.ts.map +1 -0
  101. package/dist/orchestration/worker-operating-prompt.js +75 -0
  102. package/dist/orchestration/worker-operating-prompt.js.map +1 -0
  103. package/dist/orchestrator.d.ts +19 -0
  104. package/dist/orchestrator.d.ts.map +1 -1
  105. package/dist/orchestrator.js +614 -54
  106. package/dist/orchestrator.js.map +1 -1
  107. package/dist/policy-detection.d.ts +40 -0
  108. package/dist/policy-detection.d.ts.map +1 -0
  109. package/dist/policy-detection.js +298 -0
  110. package/dist/policy-detection.js.map +1 -0
  111. package/dist/providers/anthropic.d.ts.map +1 -1
  112. package/dist/providers/anthropic.js +28 -5
  113. package/dist/providers/anthropic.js.map +1 -1
  114. package/dist/providers/claude-cli.d.ts.map +1 -1
  115. package/dist/providers/claude-cli.js +11 -2
  116. package/dist/providers/claude-cli.js.map +1 -1
  117. package/dist/providers/codex-cli.d.ts.map +1 -1
  118. package/dist/providers/codex-cli.js +121 -2
  119. package/dist/providers/codex-cli.js.map +1 -1
  120. package/dist/providers/index.d.ts +4 -0
  121. package/dist/providers/index.d.ts.map +1 -1
  122. package/dist/providers/index.js.map +1 -1
  123. package/dist/summarization-pipeline.d.ts +1 -4
  124. package/dist/summarization-pipeline.d.ts.map +1 -1
  125. package/dist/summarization-pipeline.js +43 -56
  126. package/dist/summarization-pipeline.js.map +1 -1
  127. package/dist/tools/index.d.ts.map +1 -1
  128. package/dist/tools/index.js +2 -0
  129. package/dist/tools/index.js.map +1 -1
  130. package/dist/tools/todo-tasks.d.ts +2 -0
  131. package/dist/tools/todo-tasks.d.ts.map +1 -1
  132. package/dist/tools/todo-tasks.js +203 -6
  133. package/dist/tools/todo-tasks.js.map +1 -1
  134. package/dist/types.d.ts +2 -0
  135. package/dist/types.d.ts.map +1 -1
  136. package/dist/wizard-state.d.ts.map +1 -1
  137. package/dist/wizard-state.js +30 -8
  138. package/dist/wizard-state.js.map +1 -1
  139. package/dist/wizard-support.d.ts +2 -2
  140. package/dist/wizard-support.d.ts.map +1 -1
  141. package/dist/wizard-support.js +80 -93
  142. package/dist/wizard-support.js.map +1 -1
  143. package/dist/workflow-engine.d.ts +3 -0
  144. package/dist/workflow-engine.d.ts.map +1 -1
  145. package/dist/workflow-engine.js +111 -82
  146. package/dist/workflow-engine.js.map +1 -1
  147. package/package.json +5 -1
@@ -41,6 +41,9 @@ const orchestrator_profile_1 = require("../orchestrator-profile");
41
41
  const workflow_engine_1 = require("../workflow-engine");
42
42
  const orchestrator_operating_prompt_1 = require("../orchestration/orchestrator-operating-prompt");
43
43
  const front_door_policy_1 = require("../orchestration/front-door-policy");
44
+ function normalize(value) {
45
+ return String(value || '').trim().toLowerCase();
46
+ }
44
47
  function parseArgs(argv) {
45
48
  const args = {
46
49
  input: '',
@@ -179,12 +182,18 @@ async function main() {
179
182
  const projectOverview = args.projectId ? data.getProjectOverview(args.projectId) : undefined;
180
183
  const project = args.projectId ? data.getProject(args.projectId) : undefined;
181
184
  const roleAssignments = resolveRoleAssignments(args.projectId);
182
- // Build specialists list from non-orchestrator agent profiles
183
- const specialists = (0, orchestrator_profile_1.filterOutOrchestratorProfiles)(data.listAgentProfiles())
185
+ const allAgents = data.listAgentProfiles();
186
+ // Prompt specialists remain non-orchestrator-facing, but signal extraction
187
+ // should still be able to match the orchestrator bot by name.
188
+ const specialists = (0, orchestrator_profile_1.filterOutOrchestratorProfiles)(allAgents)
184
189
  .map((agent) => ({
185
190
  name: agent.name,
186
191
  roleLabel: agent.role_label || agent.role_class || 'general',
187
192
  }));
193
+ const signalSpecialists = allAgents.map((agent) => ({
194
+ name: agent.name,
195
+ roleLabel: agent.role_label || agent.role_class || 'general',
196
+ }));
188
197
  // Build workflow names list from enabled templates
189
198
  const workflowNames = [];
190
199
  if (args.projectId) {
@@ -250,20 +259,52 @@ async function main() {
250
259
  orchestratorName: bot.name,
251
260
  orchestratorRoleClass: bot.role_class,
252
261
  roleAssignments,
262
+ specialists: signalSpecialists,
263
+ workflowNames,
253
264
  highRisk: hasHighRiskPrompt(sample.prompt),
254
265
  })
255
266
  : null;
267
+ const signals = (0, front_door_policy_1.extractFrontDoorSignals)({
268
+ prompt: sample.prompt,
269
+ specialists: signalSpecialists,
270
+ workflowNames,
271
+ roleAssignments,
272
+ });
273
+ const recoveredDecision = rawDecision
274
+ ? null
275
+ : signals.preferredMode === 'workflow'
276
+ ? {
277
+ mode: 'workflow',
278
+ reason: signals.matchedWorkflowNames.length > 0
279
+ ? 'Replay recovered routing by matching a named workflow.'
280
+ : 'Replay recovered routing from explicit TODO/workflow signals.',
281
+ workflow_request: sample.prompt,
282
+ }
283
+ : signals.preferredMode === 'delegate' && signals.preferredTarget
284
+ ? {
285
+ mode: 'delegate',
286
+ reason: 'Replay recovered routing from an explicit single-worker TODO/workflow signal.',
287
+ delegate_target: signals.preferredTarget,
288
+ delegate_role: signals.matchedRoles[0]
289
+ || (normalize(signals.preferredTarget) === normalize(roleAssignments.qa) ? 'qa'
290
+ : normalize(signals.preferredTarget) === normalize(roleAssignments.research) ? 'research'
291
+ : 'coding'),
292
+ delegate_request: sample.prompt,
293
+ }
294
+ : null;
256
295
  const legacy = args.compareLegacy ? await runLegacyRouting(sample.prompt) : null;
257
296
  results.push({
258
297
  label: sample.label,
259
298
  prompt: sample.prompt,
260
299
  rawModelOutput: result.mergedResult,
261
300
  rawDecision,
301
+ recoveredDecision,
262
302
  correctedDecision: corrected?.decision || null,
263
303
  corrected: corrected?.corrected || false,
264
304
  correctionReason: corrected?.correctionReason || null,
265
305
  taskType: corrected?.taskType || null,
266
306
  qaMode: corrected?.qaMode || null,
307
+ signals,
267
308
  legacy,
268
309
  });
269
310
  flushReport();
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator-front-door-replay.js","sourceRoot":"","sources":["../../src/eval/orchestrator-front-door-replay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator-front-door-replay.js","sourceRoot":"","sources":["../../src/eval/orchestrator-front-door-replay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=orchestrator-todo-dispatch-replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator-todo-dispatch-replay.d.ts","sourceRoot":"","sources":["../../src/eval/orchestrator-todo-dispatch-replay.ts"],"names":[],"mappings":""}
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const fs_1 = __importDefault(require("fs"));
40
+ const os_1 = __importDefault(require("os"));
41
+ const path_1 = __importDefault(require("path"));
42
+ const orchestrator_1 = require("../orchestrator");
43
+ const data = __importStar(require("../local-data"));
44
+ class DispatchStubWorkflowEngine {
45
+ calls = [];
46
+ actions;
47
+ constructor(actions) {
48
+ this.actions = [...actions];
49
+ }
50
+ async execute(prompt, conversationId, agentId, opts) {
51
+ this.calls.push({ prompt, conversationId, agentId, opts });
52
+ const action = this.actions.shift();
53
+ if (!action) {
54
+ return { id: `wf-${this.calls.length}`, status: 'completed', mergedResult: 'No scripted action remained.', steps: [] };
55
+ }
56
+ if (action.type === 'decision') {
57
+ return { id: `wf-${this.calls.length}`, status: 'completed', mergedResult: JSON.stringify(action.payload), steps: [] };
58
+ }
59
+ if (action.type === 'respond') {
60
+ return { id: `wf-${this.calls.length}`, status: 'completed', mergedResult: action.text, steps: [] };
61
+ }
62
+ const task = conversationId ? data.getNextActiveTodoForConversation(conversationId) : undefined;
63
+ if (!task)
64
+ throw new Error('No active TODO task found for scripted worker action');
65
+ if (action.type === 'complete') {
66
+ data.completeTodoTaskByWorker(task.id, {
67
+ outputSummary: action.outputSummary,
68
+ handoffPrompt: action.handoffPrompt,
69
+ actor: { actorType: 'llm', actorId: task.owner_name || 'Worker' },
70
+ });
71
+ return { id: `wf-${this.calls.length}`, status: 'completed', mergedResult: action.outputSummary, steps: [] };
72
+ }
73
+ data.blockTodoTaskByWorker(task.id, {
74
+ blockerSummary: action.blockerSummary,
75
+ checkedContext: action.checkedContext,
76
+ userQuestion: action.userQuestion,
77
+ actor: { actorType: 'llm', actorId: task.owner_name || 'Worker' },
78
+ });
79
+ return { id: `wf-${this.calls.length}`, status: 'completed', mergedResult: action.blockerSummary, steps: [] };
80
+ }
81
+ getActiveWorkflows() {
82
+ return [];
83
+ }
84
+ }
85
+ function parseArgs(argv) {
86
+ const args = {};
87
+ for (let i = 0; i < argv.length; i += 1) {
88
+ if (argv[i] === '--output' && argv[i + 1]) {
89
+ args.output = argv[i + 1];
90
+ i += 1;
91
+ }
92
+ }
93
+ return args;
94
+ }
95
+ function setupTempDb() {
96
+ const tempRoot = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'funolio-orchestrator-todo-dispatch-'));
97
+ process.env.FUNOLIO_LOCAL_DB_PATH = path_1.default.join(tempRoot, 'local.db');
98
+ data.closeDb();
99
+ return tempRoot;
100
+ }
101
+ function teardownTempDb(tempRoot) {
102
+ data.closeDb();
103
+ delete process.env.FUNOLIO_LOCAL_DB_PATH;
104
+ fs_1.default.rmSync(tempRoot, { recursive: true, force: true });
105
+ }
106
+ function seedContext() {
107
+ const orchestratorBot = data.createAgentProfile({
108
+ provider: 'claude-cli',
109
+ model: 'claude-opus-4-6',
110
+ name: 'Ben',
111
+ roleClass: 'coding',
112
+ isOrchestrator: true,
113
+ });
114
+ const john = data.createAgentProfile({
115
+ provider: 'codex-cli',
116
+ model: 'gpt-5.2-codex',
117
+ name: 'John',
118
+ roleClass: 'qa',
119
+ });
120
+ const project = data.createProject({ name: 'Dispatch Eval Project', folder: 'C:\\Projects\\Funolio' });
121
+ const conversation = data.createConversation(orchestratorBot.id, 'Dispatch Eval Conversation', 'local', { projectId: project.id });
122
+ return { orchestratorBot, john, project, conversation };
123
+ }
124
+ function makeOpts(projectId) {
125
+ return {
126
+ projectDir: 'C:\\Projects\\Funolio',
127
+ projectId,
128
+ onProgress: () => { },
129
+ onWorkerChunk: undefined,
130
+ mqttPublish: async () => { },
131
+ commandId: 'cmd-dispatch-eval',
132
+ };
133
+ }
134
+ async function runScenarios() {
135
+ const scenarios = [];
136
+ {
137
+ const tempRoot = setupTempDb();
138
+ try {
139
+ const { project, conversation } = seedContext();
140
+ const engine = new DispatchStubWorkflowEngine([
141
+ {
142
+ type: 'decision',
143
+ payload: {
144
+ mode: 'workflow',
145
+ reason: 'User explicitly requested TODO workflow.',
146
+ workflow_request: 'Ben coding then John QA',
147
+ },
148
+ },
149
+ { type: 'complete', outputSummary: 'Implemented the page.', handoffPrompt: 'Implementation complete for QA.' },
150
+ { type: 'complete', outputSummary: 'QA passed.', handoffPrompt: 'The page is complete and QA passed.' },
151
+ { type: 'respond', text: 'The page is complete and QA passed.' },
152
+ ]);
153
+ const orchestrator = new orchestrator_1.OrchestratorAgent({}, engine);
154
+ const response = await orchestrator.handleUserMessage('Use the TODO list with Ben for coding and John for QA after coding is complete.', conversation.id, makeOpts(project.id));
155
+ const completed = data.listCompletedTodoTasksForConversation(conversation.id);
156
+ scenarios.push({
157
+ name: 'automatic_dispatch_final_response',
158
+ expected: 'Workflow planning should dispatch worker TODOs in order and end with a final orchestrator response.',
159
+ pass: response === 'The page is complete and QA passed.'
160
+ && data.getNextActiveTodoForConversation(conversation.id) === undefined
161
+ && completed.map((task) => task.owner_name).join(',') === 'Ben,John',
162
+ details: {
163
+ response,
164
+ completedOwners: completed.map((task) => task.owner_name),
165
+ completedSummaries: completed.map((task) => task.output_summary),
166
+ callCount: engine.calls.length,
167
+ callOrder: engine.calls.map((call) => ({
168
+ agentId: call.agentId,
169
+ promptPreview: call.prompt.slice(0, 120),
170
+ })),
171
+ },
172
+ });
173
+ }
174
+ finally {
175
+ teardownTempDb(tempRoot);
176
+ }
177
+ }
178
+ {
179
+ const tempRoot = setupTempDb();
180
+ try {
181
+ const { project, conversation } = seedContext();
182
+ const engine = new DispatchStubWorkflowEngine([
183
+ {
184
+ type: 'decision',
185
+ payload: {
186
+ mode: 'delegate',
187
+ reason: 'User explicitly requested Ben-only TODO delegation.',
188
+ delegate_target: 'Ben',
189
+ delegate_role: 'coding',
190
+ delegate_request: 'Build the requested page.',
191
+ },
192
+ },
193
+ {
194
+ type: 'block',
195
+ blockerSummary: 'The output location is missing.',
196
+ checkedContext: 'Checked the current TODO, summary, and recent turns.',
197
+ userQuestion: 'Where should the finished HTML file be written?',
198
+ },
199
+ { type: 'respond', text: 'Where should the finished HTML file be written?' },
200
+ ]);
201
+ const orchestrator = new orchestrator_1.OrchestratorAgent({}, engine);
202
+ const response = await orchestrator.handleUserMessage('Use the TODO list with Ben only. Ben should code this request.', conversation.id, makeOpts(project.id));
203
+ const blockedTask = data.getNextActiveTodoForConversation(conversation.id);
204
+ scenarios.push({
205
+ name: 'automatic_dispatch_blocked_resolution',
206
+ expected: 'A blocked worker should return control to the orchestrator, which should ask the user the one unblock question.',
207
+ pass: response === 'Where should the finished HTML file be written?'
208
+ && blockedTask?.blocker_summary === 'The output location is missing.'
209
+ && blockedTask?.blocker_question === 'Where should the finished HTML file be written?',
210
+ details: {
211
+ response,
212
+ blockedTaskId: blockedTask?.id ?? null,
213
+ blockerSummary: blockedTask?.blocker_summary ?? null,
214
+ blockerQuestion: blockedTask?.blocker_question ?? null,
215
+ callCount: engine.calls.length,
216
+ callOrder: engine.calls.map((call) => ({
217
+ agentId: call.agentId,
218
+ promptPreview: call.prompt.slice(0, 120),
219
+ })),
220
+ },
221
+ });
222
+ }
223
+ finally {
224
+ teardownTempDb(tempRoot);
225
+ }
226
+ }
227
+ return scenarios;
228
+ }
229
+ async function main() {
230
+ const args = parseArgs(process.argv.slice(2));
231
+ const scenarios = await runScenarios();
232
+ const passed = scenarios.filter((item) => item.pass).length;
233
+ const report = {
234
+ generatedAt: new Date().toISOString(),
235
+ slice: 'orchestrator-todo-dispatch',
236
+ passed,
237
+ total: scenarios.length,
238
+ success: passed === scenarios.length,
239
+ scenarios,
240
+ };
241
+ const serialized = JSON.stringify(report, null, 2);
242
+ if (args.output) {
243
+ fs_1.default.writeFileSync(path_1.default.resolve(args.output), serialized, 'utf8');
244
+ }
245
+ else {
246
+ console.log(serialized);
247
+ }
248
+ }
249
+ main().catch((err) => {
250
+ console.error(err);
251
+ process.exit(1);
252
+ });
253
+ //# sourceMappingURL=orchestrator-todo-dispatch-replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator-todo-dispatch-replay.js","sourceRoot":"","sources":["../../src/eval/orchestrator-todo-dispatch-replay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=orchestrator-todo-planning-replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator-todo-planning-replay.d.ts","sourceRoot":"","sources":["../../src/eval/orchestrator-todo-planning-replay.ts"],"names":[],"mappings":""}
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs"));
37
+ const os = __importStar(require("os"));
38
+ const path = __importStar(require("path"));
39
+ class StubWorkflowEngine {
40
+ calls = [];
41
+ responses;
42
+ constructor(responses) {
43
+ this.responses = [...responses];
44
+ }
45
+ async execute(prompt, conversationId, agentId, opts) {
46
+ this.calls.push({ prompt, conversationId, agentId, opts });
47
+ const mergedResult = this.responses.shift() ?? JSON.stringify({ mode: 'respond', reason: 'default', response: 'default' });
48
+ return {
49
+ id: `wf-${this.calls.length}`,
50
+ status: 'completed',
51
+ mergedResult,
52
+ steps: [],
53
+ };
54
+ }
55
+ getActiveWorkflows() {
56
+ return [];
57
+ }
58
+ }
59
+ function parseArgs(argv) {
60
+ const args = {};
61
+ for (let i = 0; i < argv.length; i += 1) {
62
+ if (argv[i] === '--output' && argv[i + 1]) {
63
+ args.output = argv[i + 1];
64
+ i += 1;
65
+ }
66
+ }
67
+ return args;
68
+ }
69
+ async function withTempDb(fn) {
70
+ const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'funolio-orchestrator-todo-eval-'));
71
+ process.env.FUNOLIO_LOCAL_DB_PATH = path.join(tempRoot, 'local.db');
72
+ const data = await Promise.resolve().then(() => __importStar(require('../local-data')));
73
+ const orchestratorModule = await Promise.resolve().then(() => __importStar(require('../orchestrator')));
74
+ data.closeDb();
75
+ try {
76
+ return await fn({ data, OrchestratorAgent: orchestratorModule.OrchestratorAgent });
77
+ }
78
+ finally {
79
+ data.closeDb();
80
+ delete process.env.FUNOLIO_LOCAL_DB_PATH;
81
+ fs.rmSync(tempRoot, { recursive: true, force: true });
82
+ }
83
+ }
84
+ function makeOpts(projectId) {
85
+ return {
86
+ projectDir: process.cwd(),
87
+ projectId,
88
+ autoDispatchTodos: false,
89
+ onProgress: () => { },
90
+ onWorkerChunk: undefined,
91
+ mqttPublish: async () => { },
92
+ commandId: 'eval-cmd',
93
+ };
94
+ }
95
+ async function seedContext(data) {
96
+ const orchestratorBot = data.createAgentProfile({
97
+ provider: 'claude-cli',
98
+ model: 'claude-opus-4-6',
99
+ name: 'Ben',
100
+ roleClass: 'coding',
101
+ isOrchestrator: true,
102
+ });
103
+ const brain = data.createAgentProfile({
104
+ provider: 'openai',
105
+ model: 'gpt-5.2-chat-latest',
106
+ name: 'Brain',
107
+ roleClass: 'research',
108
+ });
109
+ const john = data.createAgentProfile({
110
+ provider: 'codex-cli',
111
+ model: 'gpt-5.2-codex',
112
+ name: 'John',
113
+ roleClass: 'qa',
114
+ });
115
+ const project = data.createProject({ name: 'Planning Eval Project', folder: process.cwd() });
116
+ const conversation = data.createConversation(orchestratorBot.id, 'Planning Eval Conversation', 'local', { projectId: project.id });
117
+ return { orchestratorBot, brain, john, project, conversation };
118
+ }
119
+ async function runScenarios() {
120
+ const scenarios = [];
121
+ scenarios.push(await withTempDb(async ({ data, OrchestratorAgent }) => {
122
+ const { project, conversation } = await seedContext(data);
123
+ const engine = new StubWorkflowEngine([
124
+ JSON.stringify({
125
+ mode: 'workflow',
126
+ reason: 'User explicitly asked for TODO workflow orchestration.',
127
+ workflow_request: 'Brain research, Ben code, John QA',
128
+ }),
129
+ ]);
130
+ const orchestrator = new OrchestratorAgent({}, engine);
131
+ const response = await orchestrator.handleUserMessage('Use the TODO workflow. Brain should brainstorm the design, Ben should code it, and John should QA it.', conversation.id, makeOpts(project.id));
132
+ const activeTasks = data.listTodoTasks({ state: 'active', projectId: project.id }).filter((task) => task.conversation_id === conversation.id);
133
+ return {
134
+ name: 'explicit_workflow_creates_chain',
135
+ expected: 'Explicit workflow request creates a 3-step TODO chain with next-worker wiring.',
136
+ pass: activeTasks.length === 3
137
+ && activeTasks.map((task) => task.owner_name).join('|') === 'Brain|Ben|John'
138
+ && activeTasks.map((task) => task.next_worker_name ?? 'NONE').join('|') === 'Ben|John|NONE',
139
+ details: {
140
+ response,
141
+ taskOwners: activeTasks.map((task) => task.owner_name),
142
+ nextWorkers: activeTasks.map((task) => task.next_worker_name),
143
+ workflowEngineCalls: engine.calls.length,
144
+ },
145
+ };
146
+ }));
147
+ scenarios.push(await withTempDb(async ({ data, OrchestratorAgent }) => {
148
+ const { project, conversation } = await seedContext(data);
149
+ const engine = new StubWorkflowEngine([
150
+ JSON.stringify({
151
+ mode: 'delegate',
152
+ reason: 'User explicitly requested delegation.',
153
+ delegate_target: 'John',
154
+ delegate_role: 'qa',
155
+ delegate_request: 'QA the requested change and report findings.',
156
+ }),
157
+ ]);
158
+ const orchestrator = new OrchestratorAgent({}, engine);
159
+ const response = await orchestrator.handleUserMessage('Delegate this to John for QA.', conversation.id, makeOpts(project.id));
160
+ const activeTasks = data.listTodoTasks({ state: 'active', projectId: project.id }).filter((task) => task.conversation_id === conversation.id);
161
+ return {
162
+ name: 'explicit_delegate_creates_single_todo',
163
+ expected: 'Explicit delegate request creates one queued TODO for the target worker.',
164
+ pass: activeTasks.length === 1 && activeTasks[0].owner_name === 'John' && activeTasks[0].task_type === 'qa',
165
+ details: {
166
+ response,
167
+ tasks: activeTasks.map((task) => ({ owner: task.owner_name, taskType: task.task_type, title: task.title })),
168
+ workflowEngineCalls: engine.calls.length,
169
+ },
170
+ };
171
+ }));
172
+ scenarios.push(await withTempDb(async ({ data, OrchestratorAgent }) => {
173
+ const { orchestratorBot, brain, john, project, conversation } = await seedContext(data);
174
+ const template = data.createWorkflowTemplate({ projectId: project.id, name: 'Normal Workflow', description: 'Research, code, QA' });
175
+ data.addWorkflowTemplateStep({ templateId: template.id, orderIndex: 1, agentId: brain.id, instruction: 'Research and plan the work.' });
176
+ data.addWorkflowTemplateStep({ templateId: template.id, orderIndex: 2, agentId: orchestratorBot.id, instruction: 'Implement the work.' });
177
+ data.addWorkflowTemplateStep({ templateId: template.id, orderIndex: 3, agentId: john.id, instruction: 'QA the finished work.', isCheckpoint: true });
178
+ const engine = new StubWorkflowEngine([]);
179
+ const orchestrator = new OrchestratorAgent({}, engine);
180
+ const response = await orchestrator.handleUserMessage('Please run the selected workflow for this feature.', conversation.id, {
181
+ ...makeOpts(project.id),
182
+ workflowTemplateId: template.id,
183
+ });
184
+ const activeTasks = data.listTodoTasks({ state: 'active', projectId: project.id }).filter((task) => task.conversation_id === conversation.id);
185
+ return {
186
+ name: 'selected_template_creates_chain',
187
+ expected: 'Selecting a workflow template creates TODOs directly from the template without front-door LLM routing.',
188
+ pass: activeTasks.length === 3
189
+ && activeTasks.map((task) => task.owner_name).join('|') === 'Brain|Ben|John'
190
+ && engine.calls.length === 0,
191
+ details: {
192
+ response,
193
+ taskTypes: activeTasks.map((task) => task.task_type),
194
+ workflowEngineCalls: engine.calls.length,
195
+ },
196
+ };
197
+ }));
198
+ scenarios.push(await withTempDb(async ({ data, OrchestratorAgent }) => {
199
+ const { project, conversation } = await seedContext(data);
200
+ const engine = new StubWorkflowEngine([
201
+ JSON.stringify({
202
+ mode: 'execute_self',
203
+ reason: 'Direct work is appropriate.',
204
+ }),
205
+ 'Direct work result',
206
+ ]);
207
+ const orchestrator = new OrchestratorAgent({}, engine);
208
+ const response = await orchestrator.handleUserMessage('Build a simple direct response without workflow.', conversation.id, makeOpts(project.id));
209
+ const activeTasks = data.listTodoTasks({ state: 'active', projectId: project.id }).filter((task) => task.conversation_id === conversation.id);
210
+ return {
211
+ name: 'direct_mode_does_not_create_todos',
212
+ expected: 'Direct execute-self path should not create TODO items.',
213
+ pass: activeTasks.length === 0 && response.includes('Direct work result'),
214
+ details: {
215
+ response,
216
+ activeTaskCount: activeTasks.length,
217
+ workflowEngineCalls: engine.calls.length,
218
+ },
219
+ };
220
+ }));
221
+ return scenarios;
222
+ }
223
+ async function main() {
224
+ const args = parseArgs(process.argv.slice(2));
225
+ const scenarios = await runScenarios();
226
+ const passed = scenarios.filter((item) => item.pass).length;
227
+ const report = {
228
+ generatedAt: new Date().toISOString(),
229
+ slice: 'orchestrator-todo-planning',
230
+ passed,
231
+ total: scenarios.length,
232
+ success: passed === scenarios.length,
233
+ scenarios,
234
+ };
235
+ const serialized = JSON.stringify(report, null, 2);
236
+ if (args.output) {
237
+ fs.writeFileSync(path.resolve(args.output), serialized, 'utf8');
238
+ }
239
+ else {
240
+ console.log(serialized);
241
+ }
242
+ }
243
+ main().catch((err) => {
244
+ console.error(err);
245
+ process.exit(1);
246
+ });
247
+ //# sourceMappingURL=orchestrator-todo-planning-replay.js.map