@norskvideo/norsk-studio-alpha 1.27.0-2026-01-25-4ad2ca43 → 1.27.0-2026-01-31-e37a5429

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 (103) hide show
  1. package/client/info.js +1630 -1316
  2. package/client/style.css +7 -599
  3. package/lib/info.js +6 -4
  4. package/lib/info.js.map +1 -1
  5. package/lib/processor.objectDetect/_gen/schema.d.ts +12 -0
  6. package/lib/processor.objectDetect/_gen/schema.js +16 -0
  7. package/lib/processor.objectDetect/_gen/schema.js.map +1 -0
  8. package/lib/processor.objectDetect/_gen/types.d.ts +49 -0
  9. package/lib/processor.objectDetect/_gen/types.js.map +1 -0
  10. package/lib/processor.objectDetect/_gen/zod.js +60 -0
  11. package/lib/processor.objectDetect/_gen/zod.js.map +1 -0
  12. package/lib/processor.objectDetect/info.d.ts +27 -0
  13. package/lib/processor.objectDetect/info.js +63 -0
  14. package/lib/processor.objectDetect/info.js.map +1 -0
  15. package/lib/processor.objectDetect/inline-view.d.ts +6 -0
  16. package/lib/processor.objectDetect/inline-view.js +41 -0
  17. package/lib/processor.objectDetect/inline-view.js.map +1 -0
  18. package/lib/processor.objectDetect/runtime.d.ts +28 -0
  19. package/lib/processor.objectDetect/runtime.js +112 -0
  20. package/lib/processor.objectDetect/runtime.js.map +1 -0
  21. package/lib/processor.objectDetect/types.yaml +78 -0
  22. package/lib/test/output.tams.js.map +1 -1
  23. package/lib/util.claudeAgent/_gen/schema.d.ts +17 -0
  24. package/lib/util.claudeAgent/_gen/schema.js +21 -0
  25. package/lib/util.claudeAgent/_gen/schema.js.map +1 -0
  26. package/lib/util.claudeAgent/_gen/types.d.ts +370 -0
  27. package/lib/util.claudeAgent/_gen/types.js.map +1 -0
  28. package/lib/util.claudeAgent/_gen/zod.js +147 -0
  29. package/lib/util.claudeAgent/_gen/zod.js.map +1 -0
  30. package/lib/util.claudeAgent/info.d.ts +63 -0
  31. package/lib/util.claudeAgent/info.js +131 -0
  32. package/lib/util.claudeAgent/info.js.map +1 -0
  33. package/lib/util.claudeAgent/runtime.d.ts +105 -0
  34. package/lib/util.claudeAgent/runtime.js +567 -0
  35. package/lib/util.claudeAgent/runtime.js.map +1 -0
  36. package/lib/util.claudeAgent/types.yaml +393 -0
  37. package/lib/util.geminiAgent/_gen/schema.d.ts +17 -0
  38. package/lib/util.geminiAgent/_gen/schema.js +21 -0
  39. package/lib/util.geminiAgent/_gen/schema.js.map +1 -0
  40. package/lib/util.geminiAgent/_gen/types.d.ts +370 -0
  41. package/lib/util.geminiAgent/_gen/types.js.map +1 -0
  42. package/lib/util.geminiAgent/_gen/zod.d.ts +2 -0
  43. package/lib/util.geminiAgent/_gen/zod.js +147 -0
  44. package/lib/util.geminiAgent/_gen/zod.js.map +1 -0
  45. package/lib/util.geminiAgent/info.d.ts +63 -0
  46. package/lib/util.geminiAgent/info.js +131 -0
  47. package/lib/util.geminiAgent/info.js.map +1 -0
  48. package/lib/util.geminiAgent/runtime.d.ts +107 -0
  49. package/lib/util.geminiAgent/runtime.js +621 -0
  50. package/lib/util.geminiAgent/runtime.js.map +1 -0
  51. package/lib/util.geminiAgent/types.yaml +392 -0
  52. package/package.json +24 -5
  53. package/client/util.aiChat/styles.css +0 -371
  54. package/lib/util.agent/_gen/schema.d.ts +0 -13
  55. package/lib/util.agent/_gen/schema.js +0 -17
  56. package/lib/util.agent/_gen/schema.js.map +0 -1
  57. package/lib/util.agent/_gen/types.d.ts +0 -343
  58. package/lib/util.agent/_gen/types.js.map +0 -1
  59. package/lib/util.agent/_gen/zod.js +0 -206
  60. package/lib/util.agent/_gen/zod.js.map +0 -1
  61. package/lib/util.agent/fullscreen-view.d.ts +0 -4
  62. package/lib/util.agent/fullscreen-view.js +0 -142
  63. package/lib/util.agent/fullscreen-view.js.map +0 -1
  64. package/lib/util.agent/info.d.ts +0 -126
  65. package/lib/util.agent/info.js +0 -141
  66. package/lib/util.agent/info.js.map +0 -1
  67. package/lib/util.agent/inline-view.d.ts +0 -6
  68. package/lib/util.agent/inline-view.js +0 -43
  69. package/lib/util.agent/inline-view.js.map +0 -1
  70. package/lib/util.agent/runtime.d.ts +0 -180
  71. package/lib/util.agent/runtime.js +0 -1254
  72. package/lib/util.agent/runtime.js.map +0 -1
  73. package/lib/util.agent/summary-view.d.ts +0 -4
  74. package/lib/util.agent/summary-view.js +0 -68
  75. package/lib/util.agent/summary-view.js.map +0 -1
  76. package/lib/util.agent/types.d.ts +0 -285
  77. package/lib/util.agent/types.js.map +0 -1
  78. package/lib/util.agent/types.yaml +0 -440
  79. package/lib/util.aiChat/_gen/schema.d.ts +0 -12
  80. package/lib/util.aiChat/_gen/schema.js +0 -16
  81. package/lib/util.aiChat/_gen/schema.js.map +0 -1
  82. package/lib/util.aiChat/_gen/types.d.ts +0 -98
  83. package/lib/util.aiChat/_gen/types.js.map +0 -1
  84. package/lib/util.aiChat/_gen/zod.js +0 -132
  85. package/lib/util.aiChat/_gen/zod.js.map +0 -1
  86. package/lib/util.aiChat/info.d.ts +0 -70
  87. package/lib/util.aiChat/info.js +0 -92
  88. package/lib/util.aiChat/info.js.map +0 -1
  89. package/lib/util.aiChat/runtime.d.ts +0 -32
  90. package/lib/util.aiChat/runtime.js +0 -304
  91. package/lib/util.aiChat/runtime.js.map +0 -1
  92. package/lib/util.aiChat/summary-view.d.ts +0 -7
  93. package/lib/util.aiChat/summary-view.js +0 -48
  94. package/lib/util.aiChat/summary-view.js.map +0 -1
  95. package/lib/util.aiChat/types.d.ts +0 -62
  96. package/lib/util.aiChat/types.js +0 -3
  97. package/lib/util.aiChat/types.js.map +0 -1
  98. package/lib/util.aiChat/types.yaml +0 -148
  99. /package/lib/{util.agent → processor.objectDetect}/_gen/types.js +0 -0
  100. /package/lib/{util.agent → processor.objectDetect}/_gen/zod.d.ts +0 -0
  101. /package/lib/{util.agent → util.claudeAgent/_gen}/types.js +0 -0
  102. /package/lib/{util.aiChat → util.claudeAgent}/_gen/zod.d.ts +0 -0
  103. /package/lib/{util.aiChat → util.geminiAgent}/_gen/types.js +0 -0
@@ -0,0 +1,621 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
7
+ const config_1 = __importDefault(require("@norskvideo/norsk-studio/lib/server/config"));
8
+ const api_1 = require("@norskvideo/norsk-studio/lib/server/api");
9
+ const logging_1 = require("@norskvideo/norsk-studio/lib/server/logging");
10
+ const geminiApiKey = config_1.default.llm.gemini.apiKey();
11
+ if (geminiApiKey) {
12
+ if (!process.env.GOOGLE_GENAI_API_KEY) {
13
+ process.env.GOOGLE_GENAI_API_KEY = geminiApiKey;
14
+ }
15
+ if (!process.env.GEMINI_API_KEY) {
16
+ process.env.GEMINI_API_KEY = geminiApiKey;
17
+ }
18
+ }
19
+ const api_validation_1 = require("@norskvideo/norsk-studio/lib/server/api-validation");
20
+ const agent_1 = require("@norskvideo/norsk-studio-built-ins/lib/shared/agent");
21
+ const adk_1 = require("@google/adk");
22
+ const genai_1 = require("@google/genai");
23
+ const zod_1 = require("zod");
24
+ const schema_1 = require("./_gen/schema");
25
+ const path_1 = __importDefault(require("path"));
26
+ class GeminiAgentDefinition {
27
+ async schemas() {
28
+ return (0, runtime_types_1.schemaFromTypes)(path_1.default.join(__dirname, 'types.yaml'), {
29
+ config: 'GeminiAgentConfig',
30
+ state: 'State',
31
+ commands: 'Commands',
32
+ events: 'Events'
33
+ });
34
+ }
35
+ async create(norsk, cfg, cb, runtime) {
36
+ const node = await GeminiAgentNode.create(norsk, cfg, runtime);
37
+ cb(node);
38
+ }
39
+ handleCommand(node, command) {
40
+ node.handleCommand(command);
41
+ }
42
+ async instanceRoutes() {
43
+ return (0, api_1.defineJsonApi)(path_1.default.join(__dirname, 'types.yaml'), {
44
+ '/invocations': {
45
+ get: ({ node }) => ({
46
+ swt: api_validation_1.NoBody,
47
+ handler: async () => {
48
+ const invocations = node.invocationTracker.getHistory();
49
+ return { statusCode: 200, body: invocations };
50
+ }
51
+ })
52
+ },
53
+ '/timers': {
54
+ get: ({ node }) => ({
55
+ swt: api_validation_1.NoBody,
56
+ handler: async () => {
57
+ const timers = node.timerManager.getActiveTimers();
58
+ return { statusCode: 200, body: timers };
59
+ }
60
+ })
61
+ },
62
+ '/subscriptions': {
63
+ get: ({ node }) => ({
64
+ swt: api_validation_1.NoBody,
65
+ handler: async () => {
66
+ const subscriptions = node.eventManager.getActiveSubscriptions();
67
+ return { statusCode: 200, body: subscriptions };
68
+ }
69
+ })
70
+ },
71
+ '/memory': {
72
+ get: ({ node }) => ({
73
+ swt: api_validation_1.NoBody,
74
+ handler: async () => {
75
+ const memory = node.memoryManager.getAll();
76
+ return { statusCode: 200, body: memory };
77
+ }
78
+ }),
79
+ delete: ({ node }) => ({
80
+ swt: api_validation_1.NoBody,
81
+ handler: async () => {
82
+ node.memoryManager.clear();
83
+ return { statusCode: 204 };
84
+ }
85
+ })
86
+ },
87
+ '/prompt': {
88
+ post: ({ node }) => ({
89
+ swt: schema_1.SendPromptBody,
90
+ handler: async (req) => {
91
+ const invocationId = await node.invokeAgent(req.body.prompt, {
92
+ type: 'user_command',
93
+ source: 'api'
94
+ });
95
+ return { statusCode: 200, body: { invocationId } };
96
+ }
97
+ })
98
+ }
99
+ });
100
+ }
101
+ }
102
+ exports.default = GeminiAgentDefinition;
103
+ class GeminiAgentNode {
104
+ id;
105
+ relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
106
+ norsk;
107
+ cfg;
108
+ runtime;
109
+ invocationTracker;
110
+ timerManager;
111
+ memoryManager;
112
+ eventManager;
113
+ sessionService;
114
+ runner;
115
+ sessionId;
116
+ agent;
117
+ currentTriggerType = 'user_command';
118
+ currentTriggerSource;
119
+ runtimeToolsAdded = false;
120
+ constructor(norsk, cfg, runtime) {
121
+ this.id = cfg.id;
122
+ this.norsk = norsk;
123
+ this.cfg = cfg;
124
+ this.runtime = runtime;
125
+ this.invocationTracker = new agent_1.InvocationTracker({ maxHistory: 100 });
126
+ this.memoryManager = new agent_1.MemoryManager();
127
+ this.timerManager = new agent_1.TimerManager({
128
+ onTimerFired: async (timerId, reason) => {
129
+ this.runtime.updates.raiseEvent({
130
+ type: 'timer_fired',
131
+ timerId,
132
+ reason
133
+ });
134
+ await this.invokeAgent(`Timer fired. Reason: ${reason}`, {
135
+ type: 'timer',
136
+ source: timerId,
137
+ details: { reason }
138
+ });
139
+ }
140
+ });
141
+ this.eventManager = new agent_1.EventSubscriptionManager({
142
+ onEvent: async (componentId, event) => {
143
+ await this.invokeAgent(`Event from component '${componentId}': ${JSON.stringify(event)}`, {
144
+ type: 'component_event',
145
+ source: componentId,
146
+ details: { event }
147
+ });
148
+ },
149
+ subscribe: (componentId, handler) => {
150
+ runtime.shared.subscribeToComponentEvents(componentId, handler);
151
+ },
152
+ unsubscribe: (componentId, handler) => {
153
+ runtime.shared.unsubscribeToComponentEvents(componentId, handler);
154
+ }
155
+ });
156
+ }
157
+ static async create(norsk, cfg, runtime) {
158
+ const node = new GeminiAgentNode(norsk, cfg, runtime);
159
+ await node.initialise();
160
+ return node;
161
+ }
162
+ async initialise() {
163
+ this.runtime.updates.update({
164
+ status: 'idle',
165
+ activeTimerCount: 0,
166
+ activeSubscriptionCount: 0,
167
+ invocationCount: 0,
168
+ });
169
+ await this.initializeAdk();
170
+ void this.waitForToolsAndStart();
171
+ }
172
+ async waitForToolsAndStart() {
173
+ (0, logging_1.debuglog)("Waiting for runtime tools to be available", { agentId: this.cfg.id });
174
+ await this.runtime.llm.waitForTools();
175
+ const runtimeTools = this.wrapRuntimeTools();
176
+ if (runtimeTools.length > 0 && this.agent) {
177
+ (0, logging_1.debuglog)("Adding runtime tools to agent after wait", { agentId: this.cfg.id, toolCount: runtimeTools.length });
178
+ this.agent.tools.push(...runtimeTools);
179
+ this.runtimeToolsAdded = true;
180
+ }
181
+ if (this.cfg.initialPrompt) {
182
+ (0, logging_1.debuglog)("Running initial prompt", { agentId: this.cfg.id });
183
+ await this.invokeAgent(this.cfg.initialPrompt, {
184
+ type: 'user_command',
185
+ source: 'initial'
186
+ });
187
+ }
188
+ }
189
+ async initializeAdk() {
190
+ const tools = this.createAgentTools();
191
+ const apiKey = config_1.default.llm.gemini.apiKey();
192
+ const geminiModel = new adk_1.Gemini({
193
+ model: this.cfg.model || 'gemini-2.0-flash',
194
+ apiKey: apiKey || undefined
195
+ });
196
+ this.agent = new adk_1.LlmAgent({
197
+ name: `agent_${this.cfg.id}`,
198
+ model: geminiModel,
199
+ instruction: `${this.cfg.systemPrompt}
200
+
201
+ Your mission: {mission}
202
+
203
+ Current context:
204
+ - Working memory: {working_memory}
205
+ - Active timers: {active_timers}
206
+ - Subscriptions: {subscriptions}
207
+
208
+ When you receive events or timer notifications, evaluate them against your mission
209
+ and take appropriate action. Use tools to interact with the workflow.`,
210
+ tools
211
+ });
212
+ this.sessionService = new adk_1.InMemorySessionService();
213
+ this.runner = new adk_1.Runner({
214
+ appName: 'norsk_agent',
215
+ agent: this.agent,
216
+ sessionService: this.sessionService,
217
+ });
218
+ this.sessionId = `session_${this.cfg.id}_${Date.now()}`;
219
+ await this.sessionService.createSession({
220
+ appName: 'norsk_agent',
221
+ userId: this.cfg.id,
222
+ sessionId: this.sessionId,
223
+ state: {
224
+ mission: this.cfg.mission,
225
+ working_memory: {},
226
+ active_timers: {},
227
+ subscriptions: [],
228
+ },
229
+ });
230
+ }
231
+ createAgentTools() {
232
+ const timerManager = this.timerManager;
233
+ const eventManager = this.eventManager;
234
+ const memoryManager = this.memoryManager;
235
+ const runtime = this.runtime;
236
+ const setTimerTool = new adk_1.FunctionTool({
237
+ name: 'set_timer',
238
+ description: 'Schedule a future invocation. You will be notified when the timer fires. Use intervalMs to create a recurring timer that auto-reschedules.',
239
+ parameters: zod_1.z.object({
240
+ delayMs: zod_1.z.number().describe('Delay in milliseconds before first fire'),
241
+ reason: zod_1.z.string().describe('Why this timer is being set - included when it fires'),
242
+ intervalMs: zod_1.z.number().optional().describe('If set, timer will automatically reschedule at this interval after each fire. Use this for recurring tasks like periodic monitoring.')
243
+ }),
244
+ execute: async ({ delayMs, reason, intervalMs }) => {
245
+ (0, logging_1.debuglog)("set_timer called", { agentId: this.cfg.id, delayMs, reason, intervalMs });
246
+ const timerId = timerManager.setTimer(delayMs, reason, intervalMs);
247
+ if (!timerId) {
248
+ (0, logging_1.debuglog)("set_timer failed - max timers reached", { agentId: this.cfg.id });
249
+ return { status: 'error', error: 'Max timers reached' };
250
+ }
251
+ (0, logging_1.debuglog)("Timer created, updating state", { agentId: this.cfg.id, timerId, newCount: timerManager.getCount() });
252
+ runtime.updates.raiseEvent({
253
+ type: 'timer_set',
254
+ timerId,
255
+ delayMs,
256
+ reason,
257
+ intervalMs
258
+ });
259
+ runtime.updates.update({
260
+ activeTimerCount: timerManager.getCount()
261
+ });
262
+ const response = { status: 'scheduled', timerId, firesIn: `${delayMs}ms` };
263
+ if (intervalMs) {
264
+ response.recurring = true;
265
+ response.interval = `${intervalMs}ms`;
266
+ }
267
+ return response;
268
+ }
269
+ });
270
+ const cancelTimerTool = new adk_1.FunctionTool({
271
+ name: 'cancel_timer',
272
+ description: 'Cancel a previously set timer.',
273
+ parameters: zod_1.z.object({
274
+ timerId: zod_1.z.string().describe('ID of the timer to cancel')
275
+ }),
276
+ execute: async ({ timerId }) => {
277
+ const cancelled = timerManager.cancelTimer(timerId);
278
+ if (cancelled) {
279
+ runtime.updates.raiseEvent({
280
+ type: 'timer_cancelled',
281
+ timerId
282
+ });
283
+ runtime.updates.update({
284
+ activeTimerCount: timerManager.getCount()
285
+ });
286
+ }
287
+ return { status: cancelled ? 'cancelled' : 'not_found', timerId };
288
+ }
289
+ });
290
+ const subscribeToEventsTool = new adk_1.FunctionTool({
291
+ name: 'subscribe_to_events',
292
+ description: 'Subscribe to events from a component. You will be notified when events occur. IMPORTANT: (1) Use workflow_listComponents or list_components tool first to discover valid component IDs. (2) Use listComponentEvents to discover available event types, then specify eventTypes to filter - this is recommended as some events like metrics_updated fire frequently and can be noisy.',
293
+ parameters: zod_1.z.object({
294
+ componentId: zod_1.z.string().describe('ID of the component to subscribe to - must be an exact ID from the workflow'),
295
+ eventTypes: zod_1.z.array(zod_1.z.string()).optional().describe('Whitelist of event types to receive (recommended). If omitted, ALL events are forwarded including high-frequency ones like metrics_updated. Use listComponentEvents tool to discover available event types.')
296
+ }),
297
+ execute: async ({ componentId, eventTypes }) => {
298
+ (0, logging_1.debuglog)("subscribe_to_events called", { agentId: this.cfg.id, componentId, eventTypes });
299
+ const component = runtime.shared.findComponent(componentId);
300
+ if (!component) {
301
+ (0, logging_1.debuglog)("subscribe_to_events failed - component not found", { agentId: this.cfg.id, componentId });
302
+ return {
303
+ status: 'error',
304
+ error: `Component '${componentId}' not found in workflow. Use workflow_listComponents or list_components tool to discover valid component IDs. Component IDs are typically lowercase with hyphens (e.g., 'srt-input' not 'SRT_input').`
305
+ };
306
+ }
307
+ const subscriptionId = eventManager.addSubscription(componentId, eventTypes);
308
+ (0, logging_1.debuglog)("addSubscription result", { agentId: this.cfg.id, componentId, subscriptionId, eventTypes, currentCount: eventManager.getCount() });
309
+ if (!subscriptionId) {
310
+ (0, logging_1.debuglog)("subscribe_to_events failed - no subscriptionId", { agentId: this.cfg.id, componentId });
311
+ return { status: 'error', error: 'Max subscriptions reached or already subscribed' };
312
+ }
313
+ (0, logging_1.debuglog)("Raising subscription_added event", { agentId: this.cfg.id, subscriptionId, componentId });
314
+ runtime.updates.raiseEvent({
315
+ type: 'subscription_added',
316
+ subscriptionId,
317
+ componentId
318
+ });
319
+ const newCount = eventManager.getCount();
320
+ (0, logging_1.debuglog)("Updating state with subscription count", { agentId: this.cfg.id, newCount });
321
+ runtime.updates.update({
322
+ activeSubscriptionCount: newCount
323
+ });
324
+ (0, logging_1.debuglog)("subscribe_to_events completed successfully", { agentId: this.cfg.id, subscriptionId, componentId, eventTypes, finalCount: eventManager.getCount() });
325
+ return { status: 'subscribed', subscriptionId, componentId, eventTypes: eventTypes ?? 'all' };
326
+ }
327
+ });
328
+ const unsubscribeTool = new adk_1.FunctionTool({
329
+ name: 'unsubscribe',
330
+ description: 'Unsubscribe from a component\'s events.',
331
+ parameters: zod_1.z.object({
332
+ subscriptionId: zod_1.z.string().describe('ID of the subscription to remove')
333
+ }),
334
+ execute: async ({ subscriptionId }) => {
335
+ const removed = eventManager.removeSubscription(subscriptionId);
336
+ if (removed) {
337
+ runtime.updates.raiseEvent({
338
+ type: 'subscription_removed',
339
+ subscriptionId
340
+ });
341
+ runtime.updates.update({
342
+ activeSubscriptionCount: eventManager.getCount()
343
+ });
344
+ }
345
+ return { status: removed ? 'unsubscribed' : 'not_found', subscriptionId };
346
+ }
347
+ });
348
+ const storeMemoryTool = new adk_1.FunctionTool({
349
+ name: 'store_memory',
350
+ description: 'Store information in working memory for future reference.',
351
+ parameters: zod_1.z.object({
352
+ key: zod_1.z.string().describe('Key to store the value under'),
353
+ value: zod_1.z.string().describe('Value to store')
354
+ }),
355
+ execute: async ({ key, value }) => {
356
+ const stored = memoryManager.set(key, value);
357
+ return { status: stored ? 'stored' : 'failed', key };
358
+ }
359
+ });
360
+ const recallMemoryTool = new adk_1.FunctionTool({
361
+ name: 'recall_memory',
362
+ description: 'Retrieve information from working memory.',
363
+ parameters: zod_1.z.object({
364
+ key: zod_1.z.string().describe('Key to retrieve')
365
+ }),
366
+ execute: async ({ key }) => {
367
+ const value = memoryManager.get(key);
368
+ return { status: value !== undefined ? 'found' : 'not_found', key, value };
369
+ }
370
+ });
371
+ return [
372
+ setTimerTool,
373
+ cancelTimerTool,
374
+ subscribeToEventsTool,
375
+ unsubscribeTool,
376
+ storeMemoryTool,
377
+ recallMemoryTool
378
+ ];
379
+ }
380
+ wrapRuntimeTools() {
381
+ const llmService = this.runtime.llm;
382
+ const availableTools = llmService.getAvailableTools();
383
+ (0, logging_1.debuglog)("Available runtime tools for agent", {
384
+ agentId: this.cfg.id,
385
+ toolCount: availableTools.length,
386
+ toolNames: availableTools.map(t => t.name)
387
+ });
388
+ for (const tool of availableTools) {
389
+ const convertedSchema = this.convertJsonSchemaToGenaiSchema(tool.inputSchema);
390
+ (0, logging_1.debuglog)(`Tool schema: ${tool.name}`, {
391
+ original: JSON.stringify(tool.inputSchema),
392
+ converted: JSON.stringify(convertedSchema)
393
+ });
394
+ }
395
+ return availableTools.map(tool => new adk_1.FunctionTool({
396
+ name: tool.name,
397
+ description: tool.description,
398
+ parameters: this.convertJsonSchemaToGenaiSchema(tool.inputSchema),
399
+ execute: async (args) => {
400
+ (0, logging_1.debuglog)("Executing runtime tool", { agentId: this.cfg.id, toolName: tool.name, args });
401
+ const result = await llmService.executeTool(tool.name, args);
402
+ const MAX_RESULT_LENGTH = 32000;
403
+ let truncatedResult = result;
404
+ if (typeof result === 'string' && result.length > MAX_RESULT_LENGTH) {
405
+ truncatedResult = result.substring(0, MAX_RESULT_LENGTH) + '\n\n[TRUNCATED - result was ' + result.length + ' characters]';
406
+ (0, logging_1.debuglog)("Truncated large tool result", { agentId: this.cfg.id, toolName: tool.name, originalLength: result.length });
407
+ }
408
+ (0, logging_1.debuglog)("Runtime tool result", { agentId: this.cfg.id, toolName: tool.name, resultLength: typeof result === 'string' ? result.length : 'N/A' });
409
+ return truncatedResult;
410
+ }
411
+ }));
412
+ }
413
+ convertJsonSchemaToGenaiSchema(jsonSchema) {
414
+ return this.convertSchemaNode(jsonSchema);
415
+ }
416
+ convertSchemaNode(node) {
417
+ const result = {};
418
+ if (typeof node.type === 'string') {
419
+ result.type = this.convertType(node.type);
420
+ }
421
+ if (typeof node.description === 'string') {
422
+ result.description = node.description;
423
+ }
424
+ if (node.properties && typeof node.properties === 'object') {
425
+ result.properties = {};
426
+ for (const [key, value] of Object.entries(node.properties)) {
427
+ if (value && typeof value === 'object') {
428
+ result.properties[key] = this.convertSchemaNode(value);
429
+ }
430
+ }
431
+ }
432
+ if (Array.isArray(node.required)) {
433
+ result.required = node.required.filter((r) => typeof r === 'string');
434
+ }
435
+ if (node.items && typeof node.items === 'object') {
436
+ result.items = this.convertSchemaNode(node.items);
437
+ }
438
+ if (Array.isArray(node.enum)) {
439
+ result.enum = node.enum.filter((e) => typeof e === 'string');
440
+ }
441
+ if (typeof node.format === 'string') {
442
+ result.format = node.format;
443
+ }
444
+ if (typeof node.minimum === 'number')
445
+ result.minimum = node.minimum;
446
+ if (typeof node.maximum === 'number')
447
+ result.maximum = node.maximum;
448
+ if (typeof node.minLength === 'number')
449
+ result.minLength = String(node.minLength);
450
+ if (typeof node.maxLength === 'number')
451
+ result.maxLength = String(node.maxLength);
452
+ if (typeof node.pattern === 'string')
453
+ result.pattern = node.pattern;
454
+ if (typeof node.minItems === 'number')
455
+ result.minItems = String(node.minItems);
456
+ if (typeof node.maxItems === 'number')
457
+ result.maxItems = String(node.maxItems);
458
+ if (node.additionalProperties === true && result.type === genai_1.Type.OBJECT && !result.properties) {
459
+ }
460
+ return result;
461
+ }
462
+ convertType(jsonSchemaType) {
463
+ switch (jsonSchemaType.toLowerCase()) {
464
+ case 'string': return genai_1.Type.STRING;
465
+ case 'number': return genai_1.Type.NUMBER;
466
+ case 'integer': return genai_1.Type.INTEGER;
467
+ case 'boolean': return genai_1.Type.BOOLEAN;
468
+ case 'array': return genai_1.Type.ARRAY;
469
+ case 'object': return genai_1.Type.OBJECT;
470
+ default: return genai_1.Type.STRING;
471
+ }
472
+ }
473
+ async invokeAgent(message, trigger) {
474
+ if (!this.runner || !this.sessionId || !this.agent) {
475
+ throw new Error('ADK not initialized');
476
+ }
477
+ if (!this.runtimeToolsAdded) {
478
+ const runtimeTools = this.wrapRuntimeTools();
479
+ if (runtimeTools.length > 0) {
480
+ (0, logging_1.debuglog)("Adding runtime tools to agent", { agentId: this.cfg.id, toolCount: runtimeTools.length });
481
+ this.agent.tools.push(...runtimeTools);
482
+ this.runtimeToolsAdded = true;
483
+ }
484
+ else {
485
+ (0, logging_1.debuglog)("No runtime tools available yet", { agentId: this.cfg.id });
486
+ }
487
+ }
488
+ (0, logging_1.debuglog)("invokeAgent starting", { agentId: this.cfg.id, triggerType: trigger.type, triggerSource: trigger.source, message: message.substring(0, 100) });
489
+ const invocationId = this.invocationTracker.startInvocation(trigger, message);
490
+ this.currentTriggerType = trigger.type;
491
+ this.currentTriggerSource = trigger.source;
492
+ this.runtime.updates.raiseEvent({
493
+ type: 'agent_invoked',
494
+ trigger: trigger.type,
495
+ prompt: message
496
+ });
497
+ this.runtime.updates.update({
498
+ status: 'thinking',
499
+ currentTask: message
500
+ });
501
+ try {
502
+ const stateDelta = {
503
+ working_memory: this.memoryManager.getAll(),
504
+ active_timers: this.getTimersForState(),
505
+ subscriptions: this.eventManager.getActiveSubscriptions(),
506
+ };
507
+ let finalResult = '';
508
+ let currentMessage = message;
509
+ let retryCount = 0;
510
+ const MAX_RETRIES = 2;
511
+ while (retryCount <= MAX_RETRIES) {
512
+ let hitMalformedError = false;
513
+ for await (const event of this.runner.runAsync({
514
+ userId: this.cfg.id,
515
+ sessionId: this.sessionId,
516
+ newMessage: { role: 'user', parts: [{ text: currentMessage }] },
517
+ stateDelta,
518
+ })) {
519
+ const eventAny = event;
520
+ if (eventAny.errorCode === 'MALFORMED_FUNCTION_CALL' || eventAny.finishReason === 'MALFORMED_FUNCTION_CALL') {
521
+ (0, logging_1.errorlog)("ADK MALFORMED_FUNCTION_CALL error", {
522
+ agentId: this.cfg.id,
523
+ retryCount,
524
+ errorCode: eventAny.errorCode,
525
+ finishReason: eventAny.finishReason
526
+ });
527
+ if (retryCount < MAX_RETRIES) {
528
+ hitMalformedError = true;
529
+ break;
530
+ }
531
+ else {
532
+ this.runtime.updates.raiseEvent({
533
+ type: 'error_occurred',
534
+ error: `Gemini MALFORMED_FUNCTION_CALL after ${MAX_RETRIES} retries. The model is having trouble generating valid function calls.`
535
+ });
536
+ }
537
+ }
538
+ const functionCalls = (0, adk_1.getFunctionCalls)(event);
539
+ for (const fc of functionCalls) {
540
+ this.invocationTracker.recordToolCall(fc.name ?? 'unknown', fc.args, undefined, true);
541
+ }
542
+ if ((0, adk_1.isFinalResponse)(event)) {
543
+ finalResult = (0, adk_1.stringifyContent)(event);
544
+ }
545
+ }
546
+ if (hitMalformedError) {
547
+ retryCount++;
548
+ currentMessage = "Your previous function call was malformed and rejected. Please try again with a simpler approach - avoid including large text blocks in function arguments. If you need to write content to a file, try extracting just the essential information first.";
549
+ (0, logging_1.debuglog)("Retrying after MALFORMED_FUNCTION_CALL", { agentId: this.cfg.id, retryCount });
550
+ }
551
+ else {
552
+ break;
553
+ }
554
+ }
555
+ this.invocationTracker.completeInvocation(finalResult);
556
+ this.runtime.updates.update({
557
+ status: 'idle',
558
+ currentTask: undefined,
559
+ invocationCount: (this.runtime.updates.latest().invocationCount ?? 0) + 1,
560
+ lastActivity: new Date().toISOString()
561
+ });
562
+ this.runtime.updates.raiseEvent({
563
+ type: 'agent_completed',
564
+ invocationId,
565
+ result: finalResult,
566
+ toolsUsed: this.invocationTracker.getInvocation(invocationId)?.toolCalls.map(t => t.toolName)
567
+ });
568
+ return invocationId;
569
+ }
570
+ catch (error) {
571
+ const errorMessage = error instanceof Error ? error.message : String(error);
572
+ this.invocationTracker.completeInvocation(`Error: ${errorMessage}`);
573
+ this.runtime.updates.update({
574
+ status: 'error',
575
+ currentTask: undefined,
576
+ errorMessage
577
+ });
578
+ this.runtime.updates.raiseEvent({
579
+ type: 'error_occurred',
580
+ error: errorMessage
581
+ });
582
+ return invocationId;
583
+ }
584
+ }
585
+ getTimersForState() {
586
+ const timers = {};
587
+ for (const timer of this.timerManager.getActiveTimers()) {
588
+ timers[timer.id] = {
589
+ reason: timer.reason,
590
+ firesAt: timer.firesAt
591
+ };
592
+ }
593
+ return timers;
594
+ }
595
+ handleCommand(command) {
596
+ switch (command.type) {
597
+ case 'send_prompt':
598
+ void this.invokeAgent(command.prompt, { type: 'user_command', source: 'command' });
599
+ break;
600
+ case 'cancel_current':
601
+ this.invocationTracker.cancelInvocation();
602
+ break;
603
+ case 'clear_memory':
604
+ this.memoryManager.clear();
605
+ break;
606
+ case 'clear_timers':
607
+ this.timerManager.cancelAll();
608
+ this.runtime.updates.update({
609
+ activeTimerCount: 0
610
+ });
611
+ break;
612
+ case 'clear_subscriptions':
613
+ this.eventManager.removeAll();
614
+ this.runtime.updates.update({
615
+ activeSubscriptionCount: 0
616
+ });
617
+ break;
618
+ }
619
+ }
620
+ }
621
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/util.geminiAgent/runtime.ts"],"names":[],"mappings":"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"}