funolio-agent 0.17.8 → 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 (223) 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/auth/anthropic-subscription.d.ts +9 -29
  6. package/dist/auth/anthropic-subscription.d.ts.map +1 -1
  7. package/dist/auth/anthropic-subscription.js +12 -133
  8. package/dist/auth/anthropic-subscription.js.map +1 -1
  9. package/dist/auth/auto-detect.d.ts +28 -6
  10. package/dist/auth/auto-detect.d.ts.map +1 -1
  11. package/dist/auth/auto-detect.js +52 -205
  12. package/dist/auth/auto-detect.js.map +1 -1
  13. package/dist/auth/credential-reader.d.ts +24 -4
  14. package/dist/auth/credential-reader.d.ts.map +1 -1
  15. package/dist/auth/credential-reader.js +31 -256
  16. package/dist/auth/credential-reader.js.map +1 -1
  17. package/dist/auth/credential-status.d.ts +7 -27
  18. package/dist/auth/credential-status.d.ts.map +1 -1
  19. package/dist/auth/credential-status.js +7 -95
  20. package/dist/auth/credential-status.js.map +1 -1
  21. package/dist/auth/index.d.ts +9 -2
  22. package/dist/auth/index.d.ts.map +1 -1
  23. package/dist/auth/index.js +10 -10
  24. package/dist/auth/index.js.map +1 -1
  25. package/dist/auth/subscription-runtime.d.ts +19 -23
  26. package/dist/auth/subscription-runtime.d.ts.map +1 -1
  27. package/dist/auth/subscription-runtime.js +24 -292
  28. package/dist/auth/subscription-runtime.js.map +1 -1
  29. package/dist/auth/token-refresh.d.ts +19 -28
  30. package/dist/auth/token-refresh.d.ts.map +1 -1
  31. package/dist/auth/token-refresh.js +26 -464
  32. package/dist/auth/token-refresh.js.map +1 -1
  33. package/dist/backfill.js +2 -2
  34. package/dist/backfill.js.map +1 -1
  35. package/dist/bot-manager.d.ts +5 -6
  36. package/dist/bot-manager.d.ts.map +1 -1
  37. package/dist/bot-manager.js +20 -62
  38. package/dist/bot-manager.js.map +1 -1
  39. package/dist/clerk-model.d.ts +0 -1
  40. package/dist/clerk-model.d.ts.map +1 -1
  41. package/dist/clerk-model.js +24 -50
  42. package/dist/clerk-model.js.map +1 -1
  43. package/dist/commands/configure-provider.js +2 -2
  44. package/dist/commands/configure-provider.js.map +1 -1
  45. package/dist/commands/configure.d.ts.map +1 -1
  46. package/dist/commands/configure.js +10 -14
  47. package/dist/commands/configure.js.map +1 -1
  48. package/dist/commands/start.d.ts.map +1 -1
  49. package/dist/commands/start.js +51 -229
  50. package/dist/commands/start.js.map +1 -1
  51. package/dist/config.d.ts +1 -1
  52. package/dist/config.d.ts.map +1 -1
  53. package/dist/config.js +2 -2
  54. package/dist/config.js.map +1 -1
  55. package/dist/context-compressor.d.ts +6 -1
  56. package/dist/context-compressor.d.ts.map +1 -1
  57. package/dist/context-compressor.js +87 -18
  58. package/dist/context-compressor.js.map +1 -1
  59. package/dist/context-window.d.ts +2 -8
  60. package/dist/context-window.d.ts.map +1 -1
  61. package/dist/context-window.js +4 -4
  62. package/dist/context-window.js.map +1 -1
  63. package/dist/eval/orchestrator-front-door-replay.js +43 -2
  64. package/dist/eval/orchestrator-front-door-replay.js.map +1 -1
  65. package/dist/eval/orchestrator-todo-dispatch-replay.d.ts +2 -0
  66. package/dist/eval/orchestrator-todo-dispatch-replay.d.ts.map +1 -0
  67. package/dist/eval/orchestrator-todo-dispatch-replay.js +253 -0
  68. package/dist/eval/orchestrator-todo-dispatch-replay.js.map +1 -0
  69. package/dist/eval/orchestrator-todo-planning-replay.d.ts +2 -0
  70. package/dist/eval/orchestrator-todo-planning-replay.d.ts.map +1 -0
  71. package/dist/eval/orchestrator-todo-planning-replay.js +247 -0
  72. package/dist/eval/orchestrator-todo-planning-replay.js.map +1 -0
  73. package/dist/eval/policy-detection-replay.d.ts +2 -0
  74. package/dist/eval/policy-detection-replay.d.ts.map +1 -0
  75. package/dist/eval/policy-detection-replay.js +122 -0
  76. package/dist/eval/policy-detection-replay.js.map +1 -0
  77. package/dist/eval/todo-worker-runtime-replay.d.ts +2 -0
  78. package/dist/eval/todo-worker-runtime-replay.d.ts.map +1 -0
  79. package/dist/eval/todo-worker-runtime-replay.js +520 -0
  80. package/dist/eval/todo-worker-runtime-replay.js.map +1 -0
  81. package/dist/integration-tokens.d.ts +6 -0
  82. package/dist/integration-tokens.d.ts.map +1 -1
  83. package/dist/integration-tokens.js +43 -0
  84. package/dist/integration-tokens.js.map +1 -1
  85. package/dist/local-data.d.ts +134 -1
  86. package/dist/local-data.d.ts.map +1 -1
  87. package/dist/local-data.js +711 -18
  88. package/dist/local-data.js.map +1 -1
  89. package/dist/local-db.d.ts.map +1 -1
  90. package/dist/local-db.js +216 -12
  91. package/dist/local-db.js.map +1 -1
  92. package/dist/local-funnel.d.ts.map +1 -1
  93. package/dist/local-funnel.js +7 -0
  94. package/dist/local-funnel.js.map +1 -1
  95. package/dist/local-server.d.ts.map +1 -1
  96. package/dist/local-server.js +119 -96
  97. package/dist/local-server.js.map +1 -1
  98. package/dist/mcp/bridge-server.d.ts.map +1 -1
  99. package/dist/mcp/bridge-server.js +8 -2
  100. package/dist/mcp/bridge-server.js.map +1 -1
  101. package/dist/mcp/manager.d.ts +5 -0
  102. package/dist/mcp/manager.d.ts.map +1 -1
  103. package/dist/mcp/manager.js +131 -2
  104. package/dist/mcp/manager.js.map +1 -1
  105. package/dist/mcp/sync-cli-config.d.ts +5 -0
  106. package/dist/mcp/sync-cli-config.d.ts.map +1 -1
  107. package/dist/mcp/sync-cli-config.js +10 -2
  108. package/dist/mcp/sync-cli-config.js.map +1 -1
  109. package/dist/message-loop.d.ts +1 -10
  110. package/dist/message-loop.d.ts.map +1 -1
  111. package/dist/message-loop.js +179 -250
  112. package/dist/message-loop.js.map +1 -1
  113. package/dist/mqtt-client.d.ts +44 -0
  114. package/dist/mqtt-client.d.ts.map +1 -1
  115. package/dist/mqtt-client.js +2 -2
  116. package/dist/mqtt-client.js.map +1 -1
  117. package/dist/orchestration/front-door-policy.d.ts +26 -9
  118. package/dist/orchestration/front-door-policy.d.ts.map +1 -1
  119. package/dist/orchestration/front-door-policy.js +242 -69
  120. package/dist/orchestration/front-door-policy.js.map +1 -1
  121. package/dist/orchestration/orchestrator-blocked-prompt.d.ts +18 -0
  122. package/dist/orchestration/orchestrator-blocked-prompt.d.ts.map +1 -0
  123. package/dist/orchestration/orchestrator-blocked-prompt.js +46 -0
  124. package/dist/orchestration/orchestrator-blocked-prompt.js.map +1 -0
  125. package/dist/orchestration/orchestrator-final-response-prompt.d.ts +10 -0
  126. package/dist/orchestration/orchestrator-final-response-prompt.d.ts.map +1 -0
  127. package/dist/orchestration/orchestrator-final-response-prompt.js +39 -0
  128. package/dist/orchestration/orchestrator-final-response-prompt.js.map +1 -0
  129. package/dist/orchestration/orchestrator-operating-prompt.d.ts +11 -0
  130. package/dist/orchestration/orchestrator-operating-prompt.d.ts.map +1 -1
  131. package/dist/orchestration/orchestrator-operating-prompt.js +106 -36
  132. package/dist/orchestration/orchestrator-operating-prompt.js.map +1 -1
  133. package/dist/orchestration/policy-prompt.d.ts +6 -0
  134. package/dist/orchestration/policy-prompt.d.ts.map +1 -0
  135. package/dist/orchestration/policy-prompt.js +40 -0
  136. package/dist/orchestration/policy-prompt.js.map +1 -0
  137. package/dist/orchestration/worker-operating-prompt.d.ts +16 -0
  138. package/dist/orchestration/worker-operating-prompt.d.ts.map +1 -0
  139. package/dist/orchestration/worker-operating-prompt.js +75 -0
  140. package/dist/orchestration/worker-operating-prompt.js.map +1 -0
  141. package/dist/orchestrator.d.ts +19 -0
  142. package/dist/orchestrator.d.ts.map +1 -1
  143. package/dist/orchestrator.js +614 -54
  144. package/dist/orchestrator.js.map +1 -1
  145. package/dist/policy-detection.d.ts +40 -0
  146. package/dist/policy-detection.d.ts.map +1 -0
  147. package/dist/policy-detection.js +298 -0
  148. package/dist/policy-detection.js.map +1 -0
  149. package/dist/providers/anthropic.d.ts +0 -5
  150. package/dist/providers/anthropic.d.ts.map +1 -1
  151. package/dist/providers/anthropic.js +34 -51
  152. package/dist/providers/anthropic.js.map +1 -1
  153. package/dist/providers/claude-cli.d.ts.map +1 -1
  154. package/dist/providers/claude-cli.js +11 -2
  155. package/dist/providers/claude-cli.js.map +1 -1
  156. package/dist/providers/codex-cli.d.ts.map +1 -1
  157. package/dist/providers/codex-cli.js +121 -2
  158. package/dist/providers/codex-cli.js.map +1 -1
  159. package/dist/providers/index.d.ts +6 -2
  160. package/dist/providers/index.d.ts.map +1 -1
  161. package/dist/providers/index.js.map +1 -1
  162. package/dist/summarization-pipeline.d.ts +1 -4
  163. package/dist/summarization-pipeline.d.ts.map +1 -1
  164. package/dist/summarization-pipeline.js +43 -56
  165. package/dist/summarization-pipeline.js.map +1 -1
  166. package/dist/tools/analyze-image.js +2 -2
  167. package/dist/tools/analyze-image.js.map +1 -1
  168. package/dist/tools/edit-file.d.ts.map +1 -1
  169. package/dist/tools/edit-file.js +16 -1
  170. package/dist/tools/edit-file.js.map +1 -1
  171. package/dist/tools/git-tools.d.ts.map +1 -1
  172. package/dist/tools/git-tools.js +32 -1
  173. package/dist/tools/git-tools.js.map +1 -1
  174. package/dist/tools/index.d.ts.map +1 -1
  175. package/dist/tools/index.js +2 -0
  176. package/dist/tools/index.js.map +1 -1
  177. package/dist/tools/list-directory.d.ts.map +1 -1
  178. package/dist/tools/list-directory.js +23 -0
  179. package/dist/tools/list-directory.js.map +1 -1
  180. package/dist/tools/notify-user.d.ts.map +1 -1
  181. package/dist/tools/notify-user.js +15 -1
  182. package/dist/tools/notify-user.js.map +1 -1
  183. package/dist/tools/read-file.d.ts.map +1 -1
  184. package/dist/tools/read-file.js +3 -1
  185. package/dist/tools/read-file.js.map +1 -1
  186. package/dist/tools/request-mcp-install.js +5 -5
  187. package/dist/tools/request-mcp-install.js.map +1 -1
  188. package/dist/tools/run-command.d.ts.map +1 -1
  189. package/dist/tools/run-command.js +16 -4
  190. package/dist/tools/run-command.js.map +1 -1
  191. package/dist/tools/sandbox.d.ts.map +1 -1
  192. package/dist/tools/sandbox.js +6 -0
  193. package/dist/tools/sandbox.js.map +1 -1
  194. package/dist/tools/schedule-task.d.ts.map +1 -1
  195. package/dist/tools/schedule-task.js +37 -0
  196. package/dist/tools/schedule-task.js.map +1 -1
  197. package/dist/tools/search-codebase.d.ts.map +1 -1
  198. package/dist/tools/search-codebase.js +251 -32
  199. package/dist/tools/search-codebase.js.map +1 -1
  200. package/dist/tools/todo-tasks.d.ts +2 -0
  201. package/dist/tools/todo-tasks.d.ts.map +1 -1
  202. package/dist/tools/todo-tasks.js +203 -6
  203. package/dist/tools/todo-tasks.js.map +1 -1
  204. package/dist/tools/web-fetch.d.ts.map +1 -1
  205. package/dist/tools/web-fetch.js +21 -2
  206. package/dist/tools/web-fetch.js.map +1 -1
  207. package/dist/tools/web-search.d.ts.map +1 -1
  208. package/dist/tools/web-search.js +38 -34
  209. package/dist/tools/web-search.js.map +1 -1
  210. package/dist/types.d.ts +2 -0
  211. package/dist/types.d.ts.map +1 -1
  212. package/dist/wizard-state.d.ts.map +1 -1
  213. package/dist/wizard-state.js +30 -8
  214. package/dist/wizard-state.js.map +1 -1
  215. package/dist/wizard-support.d.ts +2 -2
  216. package/dist/wizard-support.d.ts.map +1 -1
  217. package/dist/wizard-support.js +80 -93
  218. package/dist/wizard-support.js.map +1 -1
  219. package/dist/workflow-engine.d.ts +3 -0
  220. package/dist/workflow-engine.d.ts.map +1 -1
  221. package/dist/workflow-engine.js +111 -82
  222. package/dist/workflow-engine.js.map +1 -1
  223. package/package.json +6 -1
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator-todo-planning-replay.js","sourceRoot":"","sources":["../../src/eval/orchestrator-todo-planning-replay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=policy-detection-replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-detection-replay.d.ts","sourceRoot":"","sources":["../../src/eval/policy-detection-replay.ts"],"names":[],"mappings":""}