@amodalai/runtime 0.1.15 → 0.1.17

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 (121) hide show
  1. package/dist/src/agent/agent-runner.js +13 -1
  2. package/dist/src/agent/agent-runner.js.map +1 -1
  3. package/dist/src/agent/config-watcher.d.ts +2 -2
  4. package/dist/src/agent/config-watcher.js +28 -15
  5. package/dist/src/agent/config-watcher.js.map +1 -1
  6. package/dist/src/agent/config-watcher.test.js +13 -4
  7. package/dist/src/agent/config-watcher.test.js.map +1 -1
  8. package/dist/src/agent/eval-store.d.ts +14 -0
  9. package/dist/src/agent/eval-store.js +44 -0
  10. package/dist/src/agent/eval-store.js.map +1 -1
  11. package/dist/src/agent/feedback-store.d.ts +39 -0
  12. package/dist/src/agent/feedback-store.js +98 -0
  13. package/dist/src/agent/feedback-store.js.map +1 -0
  14. package/dist/src/agent/local-server.d.ts +1 -1
  15. package/dist/src/agent/local-server.js +48 -28
  16. package/dist/src/agent/local-server.js.map +1 -1
  17. package/dist/src/agent/local-server.test.js +2 -1
  18. package/dist/src/agent/local-server.test.js.map +1 -1
  19. package/dist/src/agent/proactive/proactive-runner.d.ts +3 -3
  20. package/dist/src/agent/proactive/proactive-runner.js +3 -3
  21. package/dist/src/agent/proactive/proactive-runner.js.map +1 -1
  22. package/dist/src/agent/proactive/proactive-runner.test.js +2 -2
  23. package/dist/src/agent/proactive/proactive-runner.test.js.map +1 -1
  24. package/dist/src/agent/routes/admin-chat.d.ts +3 -2
  25. package/dist/src/agent/routes/admin-chat.js +3 -3
  26. package/dist/src/agent/routes/admin-chat.js.map +1 -1
  27. package/dist/src/agent/routes/chat.d.ts +6 -6
  28. package/dist/src/agent/routes/chat.js +3 -3
  29. package/dist/src/agent/routes/chat.js.map +1 -1
  30. package/dist/src/agent/routes/chat.test.js +7 -6
  31. package/dist/src/agent/routes/chat.test.js.map +1 -1
  32. package/dist/src/agent/routes/evals.d.ts +2 -2
  33. package/dist/src/agent/routes/evals.js +143 -68
  34. package/dist/src/agent/routes/evals.js.map +1 -1
  35. package/dist/src/agent/routes/feedback.d.ts +11 -0
  36. package/dist/src/agent/routes/feedback.js +72 -0
  37. package/dist/src/agent/routes/feedback.js.map +1 -0
  38. package/dist/src/agent/routes/files.js +118 -12
  39. package/dist/src/agent/routes/files.js.map +1 -1
  40. package/dist/src/agent/routes/inspect.d.ts +2 -2
  41. package/dist/src/agent/routes/inspect.js +44 -22
  42. package/dist/src/agent/routes/inspect.js.map +1 -1
  43. package/dist/src/agent/routes/inspect.test.js +11 -16
  44. package/dist/src/agent/routes/inspect.test.js.map +1 -1
  45. package/dist/src/agent/routes/task.d.ts +2 -2
  46. package/dist/src/agent/routes/task.js +4 -4
  47. package/dist/src/agent/routes/task.js.map +1 -1
  48. package/dist/src/agent/routes/task.test.js.map +1 -1
  49. package/dist/src/agent/session-store.d.ts +2 -2
  50. package/dist/src/agent/session-store.js +9 -6
  51. package/dist/src/agent/session-store.js.map +1 -1
  52. package/dist/src/agent/snapshot-server.js +10 -2
  53. package/dist/src/agent/snapshot-server.js.map +1 -1
  54. package/dist/src/cron/heartbeat-runner.d.ts +3 -6
  55. package/dist/src/cron/heartbeat-runner.js +1 -10
  56. package/dist/src/cron/heartbeat-runner.js.map +1 -1
  57. package/dist/src/index.d.ts +5 -3
  58. package/dist/src/index.js +4 -9
  59. package/dist/src/index.js.map +1 -1
  60. package/dist/src/middleware/auth.d.ts +3 -19
  61. package/dist/src/middleware/auth.js +0 -118
  62. package/dist/src/middleware/auth.js.map +1 -1
  63. package/dist/src/routes/ai-stream.d.ts +8 -7
  64. package/dist/src/routes/ai-stream.js +3 -16
  65. package/dist/src/routes/ai-stream.js.map +1 -1
  66. package/dist/src/routes/chat-stream.d.ts +4 -3
  67. package/dist/src/routes/chat-stream.js +5 -17
  68. package/dist/src/routes/chat-stream.js.map +1 -1
  69. package/dist/src/routes/chat.d.ts +4 -2
  70. package/dist/src/routes/chat.js +2 -14
  71. package/dist/src/routes/chat.js.map +1 -1
  72. package/dist/src/routes/chat.test.js +2 -2
  73. package/dist/src/routes/chat.test.js.map +1 -1
  74. package/dist/src/server.d.ts +16 -3
  75. package/dist/src/server.js +24 -27
  76. package/dist/src/server.js.map +1 -1
  77. package/dist/src/server.test.js +37 -6
  78. package/dist/src/server.test.js.map +1 -1
  79. package/dist/src/session/admin-file-tools.d.ts +136 -0
  80. package/dist/src/session/admin-file-tools.js +240 -0
  81. package/dist/src/session/admin-file-tools.js.map +1 -0
  82. package/dist/src/session/custom-tool-adapter.d.ts +74 -0
  83. package/dist/src/session/custom-tool-adapter.js +149 -0
  84. package/dist/src/session/custom-tool-adapter.js.map +1 -0
  85. package/dist/src/session/session-manager.d.ts +101 -3
  86. package/dist/src/session/session-manager.js +467 -31
  87. package/dist/src/session/session-manager.js.map +1 -1
  88. package/dist/src/session/session-manager.test.js +93 -58
  89. package/dist/src/session/session-manager.test.js.map +1 -1
  90. package/dist/src/session/session-runner.d.ts +29 -13
  91. package/dist/src/session/session-runner.js +40 -91
  92. package/dist/src/session/session-runner.js.map +1 -1
  93. package/dist/src/session/session-runner.test.js +70 -80
  94. package/dist/src/session/session-runner.test.js.map +1 -1
  95. package/dist/src/types.d.ts +1 -0
  96. package/dist/tsconfig.tsbuildinfo +1 -1
  97. package/package.json +2 -2
  98. package/dist/src/agent/agent-runner.test.d.ts +0 -6
  99. package/dist/src/agent/agent-runner.test.js +0 -552
  100. package/dist/src/agent/agent-runner.test.js.map +0 -1
  101. package/dist/src/agent/session-manager.d.ts +0 -88
  102. package/dist/src/agent/session-manager.js +0 -341
  103. package/dist/src/agent/session-manager.js.map +0 -1
  104. package/dist/src/agent/session-manager.test.d.ts +0 -6
  105. package/dist/src/agent/session-manager.test.js +0 -145
  106. package/dist/src/agent/session-manager.test.js.map +0 -1
  107. package/dist/src/audit/audit-client.d.ts +0 -46
  108. package/dist/src/audit/audit-client.js +0 -83
  109. package/dist/src/audit/audit-client.js.map +0 -1
  110. package/dist/src/middleware/auth.test.d.ts +0 -6
  111. package/dist/src/middleware/auth.test.js +0 -260
  112. package/dist/src/middleware/auth.test.js.map +0 -1
  113. package/dist/src/routes/sessions.d.ts +0 -14
  114. package/dist/src/routes/sessions.js +0 -82
  115. package/dist/src/routes/sessions.js.map +0 -1
  116. package/dist/src/utils/jwt-verify.d.ts +0 -19
  117. package/dist/src/utils/jwt-verify.js +0 -32
  118. package/dist/src/utils/jwt-verify.js.map +0 -1
  119. package/dist/src/utils/jwt-verify.test.d.ts +0 -6
  120. package/dist/src/utils/jwt-verify.test.js +0 -150
  121. package/dist/src/utils/jwt-verify.test.js.map +0 -1
@@ -13,7 +13,6 @@ import { GeminiEventType, ToolErrorType, PRESENT_TOOL_NAME, ACTIVATE_SKILL_TOOL_
13
13
  const SUBAGENT_ACTIVITY_EVENT = 'subagent-activity';
14
14
  import { SSEEventType, } from '../types.js';
15
15
  const MAX_TURNS = 50;
16
- const MAX_RESULT_LENGTH = 2000;
17
16
  /**
18
17
  * Extract text from tool response parts, truncated for audit logging.
19
18
  * Handles both plain text parts and functionResponse parts (from task agents).
@@ -38,9 +37,7 @@ function extractResultText(parts) {
38
37
  const text = segments.join('');
39
38
  if (!text)
40
39
  return undefined;
41
- return text.length > MAX_RESULT_LENGTH
42
- ? text.slice(0, MAX_RESULT_LENGTH) + '...[truncated]'
43
- : text;
40
+ return text;
44
41
  }
45
42
  const MAX_SUBAGENT_RESULT_LENGTH = 300;
46
43
  /**
@@ -86,70 +83,11 @@ function subagentMessageToSSE(msg, parentToolId) {
86
83
  timestamp: new Date().toISOString(),
87
84
  };
88
85
  }
89
- /**
90
- * Fire-and-forget POST to platform-api to report usage.
91
- * Never blocks the chat stream — errors are logged to stderr.
92
- */
93
- function reportUsage(audit, model, taskAgentRuns, tokens) {
94
- if (!audit.platformApiUrl || !audit.orgId)
95
- return;
96
- const url = `${audit.platformApiUrl}/api/orgs/${audit.orgId}/usage`;
97
- const body = JSON.stringify({
98
- model,
99
- api_calls: 1,
100
- chat_sessions: 1,
101
- task_agent_runs: taskAgentRuns,
102
- input_tokens: tokens.inputTokens,
103
- output_tokens: tokens.outputTokens,
104
- cached_tokens: tokens.cachedTokens,
105
- });
106
- fetch(url, {
107
- method: 'POST',
108
- headers: {
109
- 'Content-Type': 'application/json',
110
- ...(process.env['INTERNAL_API_KEY']
111
- ? { 'X-Internal-Key': process.env['INTERNAL_API_KEY'] }
112
- : {}),
113
- },
114
- body,
115
- }).catch((err) => {
116
- process.stderr.write(`[USAGE] Failed to report usage for org ${audit.orgId}: ${err instanceof Error ? err.message : String(err)}\n`);
117
- });
118
- }
119
- /**
120
- * Fire-and-forget POST to platform-api to persist session history.
121
- * Never blocks the chat stream — errors are logged to stderr.
122
- */
123
- function saveSessionHistory(audit, sessionId, messages, status, sessionMeta) {
124
- if (!audit.platformApiUrl || !audit.appId)
125
- return;
126
- const url = `${audit.platformApiUrl}/api/applications/${audit.appId}/sessions`;
127
- const body = JSON.stringify({
128
- id: sessionId,
129
- app_id: audit.appId,
130
- actor: audit.actor,
131
- messages,
132
- status,
133
- // Persist model/provider so hydrated sessions use the same model
134
- ...(sessionMeta?.model ? { model: sessionMeta.model } : {}),
135
- ...(sessionMeta?.provider ? { provider: sessionMeta.provider } : {}),
136
- });
137
- fetch(url, {
138
- method: 'POST',
139
- headers: {
140
- 'Content-Type': 'application/json',
141
- Authorization: `Bearer ${audit.token}`,
142
- },
143
- body,
144
- }).catch((err) => {
145
- process.stderr.write(`[SESSION-HISTORY] Failed to save session ${sessionId}: ${err instanceof Error ? err.message : String(err)}\n`);
146
- });
147
- }
148
86
  /**
149
87
  * Run a synchronous (non-streaming) message through the agentic loop.
150
88
  * Collects all text and tool calls, returns a ChatResponse.
151
89
  */
152
- export async function runMessage(session, message, signal, audit) {
90
+ export async function runMessage(session, message, signal, hooks) {
153
91
  const { geminiClient, scheduler, config } = session;
154
92
  const promptId = `msg-${Date.now()}`;
155
93
  const sessionStartMs = Date.now();
@@ -261,16 +199,16 @@ export async function runMessage(session, message, signal, audit) {
261
199
  throw err;
262
200
  }
263
201
  finally {
264
- if (audit) {
202
+ if (hooks) {
265
203
  const model = geminiClient.getCurrentSequenceModel() ?? config.getModel();
266
- logSessionCompleted(audit, session.id, message, responseText, turnCount, toolCalls, skillsActivated, status, errorMessage, sessionStartMs, model, tokens);
204
+ logSessionCompleted(hooks, session.id, message, responseText, turnCount, toolCalls, skillsActivated, status, errorMessage, sessionStartMs, model, tokens);
267
205
  }
268
206
  }
269
207
  }
270
208
  /**
271
209
  * Stream a message through the agentic loop, yielding SSE events.
272
210
  */
273
- export async function* streamMessage(session, message, signal, audit, sessionManager) {
211
+ export async function* streamMessage(session, message, signal, hooks, sessionManager) {
274
212
  const { geminiClient, scheduler, config } = session;
275
213
  const promptId = `msg-${Date.now()}`;
276
214
  const sessionStartMs = Date.now();
@@ -379,8 +317,8 @@ export async function* streamMessage(session, message, signal, audit, sessionMan
379
317
  message: errMsg,
380
318
  timestamp: new Date().toISOString(),
381
319
  };
382
- logSessionCompleted(audit, session.id, message, responseText, turnCount, auditToolCalls, skillsActivated, auditStatus, auditError, sessionStartMs, geminiClient.getCurrentSequenceModel() ?? config.getModel(), tokens);
383
- accumulateAssistantAndSave(session, audit, responseText, auditToolCalls, skillsActivated, widgetEvents, contentBlockOrder, 'error');
320
+ logSessionCompleted(hooks, session.id, message, responseText, turnCount, auditToolCalls, skillsActivated, auditStatus, auditError, sessionStartMs, geminiClient.getCurrentSequenceModel() ?? config.getModel(), tokens);
321
+ accumulateAssistantAndSave(session, hooks, responseText, auditToolCalls, skillsActivated, widgetEvents, contentBlockOrder, 'error');
384
322
  yield {
385
323
  type: SSEEventType.Done,
386
324
  timestamp: new Date().toISOString(),
@@ -394,8 +332,8 @@ export async function* streamMessage(session, message, signal, audit, sessionMan
394
332
  return;
395
333
  }
396
334
  else if (event.type === GeminiEventType.AgentExecutionStopped) {
397
- logSessionCompleted(audit, session.id, message, responseText, turnCount, auditToolCalls, skillsActivated, auditStatus, auditError, sessionStartMs, geminiClient.getCurrentSequenceModel() ?? config.getModel(), tokens);
398
- accumulateAssistantAndSave(session, audit, responseText, auditToolCalls, skillsActivated, widgetEvents, contentBlockOrder, 'completed');
335
+ logSessionCompleted(hooks, session.id, message, responseText, turnCount, auditToolCalls, skillsActivated, auditStatus, auditError, sessionStartMs, geminiClient.getCurrentSequenceModel() ?? config.getModel(), tokens);
336
+ accumulateAssistantAndSave(session, hooks, responseText, auditToolCalls, skillsActivated, widgetEvents, contentBlockOrder, 'completed');
399
337
  yield {
400
338
  type: SSEEventType.Done,
401
339
  timestamp: new Date().toISOString(),
@@ -455,7 +393,7 @@ export async function* streamMessage(session, message, signal, audit, sessionMan
455
393
  type: SSEEventType.ToolCallResult,
456
394
  tool_id: askId,
457
395
  status: 'success',
458
- result: resultOutput.slice(0, 500),
396
+ result: resultOutput,
459
397
  duration_ms: askDuration,
460
398
  timestamp: new Date().toISOString(),
461
399
  };
@@ -650,7 +588,7 @@ export async function* streamMessage(session, message, signal, audit, sessionMan
650
588
  type: SSEEventType.ToolCallResult,
651
589
  tool_id: completed.request.callId,
652
590
  status: completed.response.error ? 'error' : 'success',
653
- result: extractResultText(completed.response.responseParts)?.slice(0, 500),
591
+ result: extractResultText(completed.response.responseParts),
654
592
  duration_ms: duration,
655
593
  error: completed.response.error?.message,
656
594
  timestamp: new Date().toISOString(),
@@ -685,11 +623,17 @@ export async function* streamMessage(session, message, signal, audit, sessionMan
685
623
  }
686
624
  const stopTool = completedToolCalls.find((tc) => tc.response.errorType === ToolErrorType.STOP_EXECUTION);
687
625
  if (stopTool) {
688
- logSessionCompleted(audit, session.id, message, responseText, turnCount, auditToolCalls, skillsActivated, auditStatus, auditError, sessionStartMs, geminiClient.getCurrentSequenceModel() ?? config.getModel(), tokens);
689
- accumulateAssistantAndSave(session, audit, responseText, auditToolCalls, skillsActivated, widgetEvents, contentBlockOrder, 'completed');
626
+ logSessionCompleted(hooks, session.id, message, responseText, turnCount, auditToolCalls, skillsActivated, auditStatus, auditError, sessionStartMs, geminiClient.getCurrentSequenceModel() ?? config.getModel(), tokens);
627
+ accumulateAssistantAndSave(session, hooks, responseText, auditToolCalls, skillsActivated, widgetEvents, contentBlockOrder, 'completed');
690
628
  yield {
691
629
  type: SSEEventType.Done,
692
630
  timestamp: new Date().toISOString(),
631
+ usage: {
632
+ input_tokens: tokens.inputTokens,
633
+ output_tokens: tokens.outputTokens,
634
+ cached_tokens: tokens.cachedTokens,
635
+ total_tokens: tokens.inputTokens + tokens.outputTokens,
636
+ },
693
637
  };
694
638
  return;
695
639
  }
@@ -700,17 +644,23 @@ export async function* streamMessage(session, message, signal, audit, sessionMan
700
644
  break;
701
645
  }
702
646
  }
703
- logSessionCompleted(audit, session.id, message, responseText, turnCount, auditToolCalls, skillsActivated, auditStatus, auditError, sessionStartMs, geminiClient.getCurrentSequenceModel() ?? config.getModel(), tokens);
704
- accumulateAssistantAndSave(session, audit, responseText, auditToolCalls, skillsActivated, widgetEvents, contentBlockOrder, auditStatus === 'completed' ? 'completed' : 'error');
647
+ logSessionCompleted(hooks, session.id, message, responseText, turnCount, auditToolCalls, skillsActivated, auditStatus, auditError, sessionStartMs, geminiClient.getCurrentSequenceModel() ?? config.getModel(), tokens);
648
+ accumulateAssistantAndSave(session, hooks, responseText, auditToolCalls, skillsActivated, widgetEvents, contentBlockOrder, auditStatus === 'completed' ? 'completed' : 'error');
705
649
  yield {
706
650
  type: SSEEventType.Done,
707
651
  timestamp: new Date().toISOString(),
652
+ usage: {
653
+ input_tokens: tokens.inputTokens,
654
+ output_tokens: tokens.outputTokens,
655
+ cached_tokens: tokens.cachedTokens,
656
+ total_tokens: tokens.inputTokens + tokens.outputTokens,
657
+ },
708
658
  };
709
659
  }
710
660
  /**
711
661
  * Accumulate the assistant response message and fire-and-forget save to platform-api.
712
662
  */
713
- function accumulateAssistantAndSave(session, audit, responseText, toolCalls, skillsActivated, widgetEvents, contentBlocks, status) {
663
+ function accumulateAssistantAndSave(session, hooks, responseText, toolCalls, skillsActivated, widgetEvents, contentBlocks, status) {
714
664
  const assistantMsg = {
715
665
  type: 'assistant_text',
716
666
  id: `msg-${Date.now()}`,
@@ -734,21 +684,17 @@ function accumulateAssistantAndSave(session, audit, responseText, toolCalls, ski
734
684
  contentBlocks,
735
685
  };
736
686
  session.accumulatedMessages.push(assistantMsg);
737
- if (audit) {
738
- saveSessionHistory(audit, session.id, session.accumulatedMessages, status, {
739
- model: session.model,
740
- provider: session.provider,
741
- });
742
- }
687
+ hooks?.onSessionPersist?.(session.id, session.accumulatedMessages, status, {
688
+ model: session.model,
689
+ provider: session.provider,
690
+ });
743
691
  }
744
- function logSessionCompleted(audit, sessionId, message, response, turns, toolCalls, skillsActivated, status, error, startMs, model, tokens) {
745
- if (!audit)
692
+ function logSessionCompleted(hooks, sessionId, message, response, turns, toolCalls, skillsActivated, status, error, startMs, model, tokens) {
693
+ if (!hooks)
746
694
  return;
747
695
  const details = {
748
696
  message,
749
697
  response,
750
- app_id: audit.appId,
751
- org_id: audit.orgId,
752
698
  turns,
753
699
  duration_ms: Date.now() - startMs,
754
700
  status,
@@ -758,13 +704,16 @@ function logSessionCompleted(audit, sessionId, message, response, turns, toolCal
758
704
  if (error) {
759
705
  details['error'] = error;
760
706
  }
761
- audit.auditClient.log(audit.appId, audit.token, {
707
+ hooks.onAuditLog?.({
762
708
  event: 'session_completed',
763
709
  resource_name: sessionId,
764
710
  details,
765
711
  });
766
- // Report usage to platform API
767
712
  const taskAgentRuns = toolCalls.filter((tc) => tc.tool_name === 'dispatch').length;
768
- reportUsage(audit, model ?? 'unknown', taskAgentRuns, tokens ?? { inputTokens: 0, outputTokens: 0, cachedTokens: 0 });
713
+ hooks.onUsageReport?.({
714
+ model: model ?? 'unknown',
715
+ taskAgentRuns,
716
+ tokens: tokens ?? { inputTokens: 0, outputTokens: 0, cachedTokens: 0 },
717
+ });
769
718
  }
770
719
  //# sourceMappingURL=session-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-runner.js","sourceRoot":"","sources":["../../../src/session/session-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-runner.js","sourceRoot":"","sources":["../../../src/session/session-runner.ts"],"names":[],"mappings":"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"}
@@ -241,26 +241,21 @@ describe('runMessage', () => {
241
241
  durationMs: 50,
242
242
  },
243
243
  ]);
244
- const mockLog = vi.fn();
245
- const audit = {
246
- auditClient: { log: mockLog },
247
- appId: 'app-1',
248
- token: 'tok-1',
249
- orgId: 'org-1',
244
+ const mockAuditLog = vi.fn();
245
+ const mockUsageReport = vi.fn();
246
+ const hooks = {
247
+ onAuditLog: mockAuditLog,
248
+ onUsageReport: mockUsageReport,
250
249
  };
251
- await runMessage(session, 'do something', controller.signal, audit);
252
- expect(mockLog).toHaveBeenCalledOnce();
253
- const [appId, token, entry] = mockLog.mock.calls[0];
254
- expect(appId).toBe('app-1');
255
- expect(token).toBe('tok-1');
250
+ await runMessage(session, 'do something', controller.signal, hooks);
251
+ expect(mockAuditLog).toHaveBeenCalledOnce();
252
+ const entry = mockAuditLog.mock.calls[0][0];
256
253
  expect(entry['event']).toBe('session_completed');
257
254
  expect(entry['resource_name']).toBe('sess-123');
258
255
  const details = entry['details'];
259
256
  expect(details['status']).toBe('completed');
260
257
  expect(details['message']).toBe('do something');
261
258
  expect(details['response']).toBe('Done');
262
- expect(details['app_id']).toBe('app-1');
263
- expect(details['org_id']).toBe('org-1');
264
259
  expect(details['turns']).toBe(2);
265
260
  const toolCalls = details['tool_calls'];
266
261
  expect(toolCalls).toHaveLength(1);
@@ -300,14 +295,14 @@ describe('runMessage', () => {
300
295
  durationMs: 120,
301
296
  },
302
297
  ]);
303
- const mockLog = vi.fn();
304
- const audit = {
305
- auditClient: { log: mockLog },
306
- appId: 'app-1',
307
- token: 'tok-1',
298
+ const mockAuditLog = vi.fn();
299
+ const mockUsageReport = vi.fn();
300
+ const hooks = {
301
+ onAuditLog: mockAuditLog,
302
+ onUsageReport: mockUsageReport,
308
303
  };
309
- await runMessage(session, 'list devices', controller.signal, audit);
310
- const [, , entry] = mockLog.mock.calls[0];
304
+ await runMessage(session, 'list devices', controller.signal, hooks);
305
+ const entry = mockAuditLog.mock.calls[0][0];
311
306
  const details = entry['details'];
312
307
  const toolCalls = details['tool_calls'];
313
308
  expect(toolCalls[0]?.['result']).toBe('{"devices": [{"id": "d1", "name": "sensor-001"}]}');
@@ -351,14 +346,14 @@ describe('runMessage', () => {
351
346
  durationMs: 20000,
352
347
  },
353
348
  ]);
354
- const mockLog = vi.fn();
355
- const audit = {
356
- auditClient: { log: mockLog },
357
- appId: 'app-1',
358
- token: 'tok-1',
349
+ const mockAuditLog = vi.fn();
350
+ const mockUsageReport = vi.fn();
351
+ const hooks = {
352
+ onAuditLog: mockAuditLog,
353
+ onUsageReport: mockUsageReport,
359
354
  };
360
- await runMessage(session, 'scan environment', controller.signal, audit);
361
- const [, , entry] = mockLog.mock.calls[0];
355
+ await runMessage(session, 'scan environment', controller.signal, hooks);
356
+ const entry = mockAuditLog.mock.calls[0][0];
362
357
  const details = entry['details'];
363
358
  const toolCalls = details['tool_calls'];
364
359
  expect(toolCalls[0]?.['result']).toBe('{"summary":"No anomalies detected","devices_scanned":42}');
@@ -395,19 +390,19 @@ describe('runMessage', () => {
395
390
  durationMs: 200,
396
391
  },
397
392
  ]);
398
- const mockLog = vi.fn();
399
- const audit = {
400
- auditClient: { log: mockLog },
401
- appId: 'app-1',
402
- token: 'tok-1',
393
+ const mockAuditLog = vi.fn();
394
+ const mockUsageReport = vi.fn();
395
+ const hooks = {
396
+ onAuditLog: mockAuditLog,
397
+ onUsageReport: mockUsageReport,
403
398
  };
404
- await runMessage(session, 'big query', controller.signal, audit);
405
- const [, , entry] = mockLog.mock.calls[0];
399
+ await runMessage(session, 'big query', controller.signal, hooks);
400
+ const entry = mockAuditLog.mock.calls[0][0];
406
401
  const details = entry['details'];
407
402
  const toolCalls = details['tool_calls'];
408
403
  const result = toolCalls[0]?.['result'];
409
- expect(result).toHaveLength(2000 + '...[truncated]'.length);
410
- expect(result).toContain('...[truncated]');
404
+ // Tool results are no longer truncated — full output is preserved
405
+ expect(result).toHaveLength(3000);
411
406
  });
412
407
  it('logs session_completed with error status on throw', async () => {
413
408
  const { session } = createMockSession([
@@ -416,15 +411,15 @@ describe('runMessage', () => {
416
411
  value: { error: { message: 'LLM error' } },
417
412
  },
418
413
  ]);
419
- const mockLog = vi.fn();
420
- const audit = {
421
- auditClient: { log: mockLog },
422
- appId: 'app-1',
423
- token: 'tok-1',
414
+ const mockAuditLog = vi.fn();
415
+ const mockUsageReport = vi.fn();
416
+ const hooks = {
417
+ onAuditLog: mockAuditLog,
418
+ onUsageReport: mockUsageReport,
424
419
  };
425
- await expect(runMessage(session, 'fail', controller.signal, audit)).rejects.toThrow('LLM error');
426
- expect(mockLog).toHaveBeenCalledOnce();
427
- const [, , entry] = mockLog.mock.calls[0];
420
+ await expect(runMessage(session, 'fail', controller.signal, hooks)).rejects.toThrow('LLM error');
421
+ expect(mockAuditLog).toHaveBeenCalledOnce();
422
+ const entry = mockAuditLog.mock.calls[0][0];
428
423
  expect(entry['event']).toBe('session_completed');
429
424
  const details = entry['details'];
430
425
  expect(details['status']).toBe('error');
@@ -591,26 +586,21 @@ describe('streamMessage', () => {
591
586
  },
592
587
  },
593
588
  ]);
594
- const mockLog = vi.fn();
595
- const audit = {
596
- auditClient: { log: mockLog },
597
- appId: 'app-1',
598
- token: 'tok-1',
599
- orgId: 'org-1',
589
+ const mockAuditLog = vi.fn();
590
+ const mockUsageReport = vi.fn();
591
+ const hooks = {
592
+ onAuditLog: mockAuditLog,
593
+ onUsageReport: mockUsageReport,
600
594
  };
601
- await collectEvents(streamMessage(session, 'triage please', controller.signal, audit));
602
- expect(mockLog).toHaveBeenCalledOnce();
603
- const [appId, token, entry] = mockLog.mock.calls[0];
604
- expect(appId).toBe('app-1');
605
- expect(token).toBe('tok-1');
595
+ await collectEvents(streamMessage(session, 'triage please', controller.signal, hooks));
596
+ expect(mockAuditLog).toHaveBeenCalledOnce();
597
+ const entry = mockAuditLog.mock.calls[0][0];
606
598
  expect(entry['event']).toBe('session_completed');
607
599
  expect(entry['resource_name']).toBe('sess-123');
608
600
  const details = entry['details'];
609
601
  expect(details['status']).toBe('completed');
610
602
  expect(details['message']).toBe('triage please');
611
603
  expect(details['response']).toBe('skill loaded');
612
- expect(details['app_id']).toBe('app-1');
613
- expect(details['org_id']).toBe('org-1');
614
604
  expect(details['skills_activated']).toEqual(['triage']);
615
605
  const toolCalls = details['tool_calls'];
616
606
  expect(toolCalls).toHaveLength(1);
@@ -649,14 +639,14 @@ describe('streamMessage', () => {
649
639
  durationMs: 80,
650
640
  },
651
641
  ]);
652
- const mockLog = vi.fn();
653
- const audit = {
654
- auditClient: { log: mockLog },
655
- appId: 'app-1',
656
- token: 'tok-1',
642
+ const mockAuditLog = vi.fn();
643
+ const mockUsageReport = vi.fn();
644
+ const hooks = {
645
+ onAuditLog: mockAuditLog,
646
+ onUsageReport: mockUsageReport,
657
647
  };
658
- await collectEvents(streamMessage(session, 'check alerts', controller.signal, audit));
659
- const [, , entry] = mockLog.mock.calls[0];
648
+ await collectEvents(streamMessage(session, 'check alerts', controller.signal, hooks));
649
+ const entry = mockAuditLog.mock.calls[0][0];
660
650
  const details = entry['details'];
661
651
  const toolCalls = details['tool_calls'];
662
652
  expect(toolCalls[0]?.['result']).toBe('{"alerts": [{"severity": "high", "message": "anomaly detected"}]}');
@@ -668,15 +658,15 @@ describe('streamMessage', () => {
668
658
  value: { error: { message: 'boom' } },
669
659
  },
670
660
  ]);
671
- const mockLog = vi.fn();
672
- const audit = {
673
- auditClient: { log: mockLog },
674
- appId: 'app-1',
675
- token: 'tok-1',
661
+ const mockAuditLog = vi.fn();
662
+ const mockUsageReport = vi.fn();
663
+ const hooks = {
664
+ onAuditLog: mockAuditLog,
665
+ onUsageReport: mockUsageReport,
676
666
  };
677
- await collectEvents(streamMessage(session, 'fail', controller.signal, audit));
678
- expect(mockLog).toHaveBeenCalledOnce();
679
- const [, , entry] = mockLog.mock.calls[0];
667
+ await collectEvents(streamMessage(session, 'fail', controller.signal, hooks));
668
+ expect(mockAuditLog).toHaveBeenCalledOnce();
669
+ const entry = mockAuditLog.mock.calls[0][0];
680
670
  expect(entry['event']).toBe('session_completed');
681
671
  const details = entry['details'];
682
672
  expect(details['status']).toBe('error');
@@ -707,15 +697,15 @@ describe('streamMessage', () => {
707
697
  },
708
698
  },
709
699
  ]);
710
- const mockLog = vi.fn();
711
- const audit = {
712
- auditClient: { log: mockLog },
713
- appId: 'app-1',
714
- token: 'tok-1',
700
+ const mockAuditLog = vi.fn();
701
+ const mockUsageReport = vi.fn();
702
+ const hooks = {
703
+ onAuditLog: mockAuditLog,
704
+ onUsageReport: mockUsageReport,
715
705
  };
716
- await collectEvents(streamMessage(session, 'loop forever', controller.signal, audit));
717
- expect(mockLog).toHaveBeenCalledOnce();
718
- const [, , entry] = mockLog.mock.calls[0];
706
+ await collectEvents(streamMessage(session, 'loop forever', controller.signal, hooks));
707
+ expect(mockAuditLog).toHaveBeenCalledOnce();
708
+ const entry = mockAuditLog.mock.calls[0][0];
719
709
  expect(entry['event']).toBe('session_completed');
720
710
  const details = entry['details'];
721
711
  expect(details['status']).toBe('max_turns');