@genesislcap/ai-assistant 14.466.0 → 14.467.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-assistant.api.json +229 -86
- package/dist/ai-assistant.d.ts +87 -27
- package/dist/dts/components/chat-driver/chat-driver.d.ts +16 -0
- package/dist/dts/components/chat-driver/chat-driver.d.ts.map +1 -1
- package/dist/dts/config/config.d.ts +48 -0
- package/dist/dts/config/config.d.ts.map +1 -1
- package/dist/dts/config/define-stateful-agent.d.ts +14 -1
- package/dist/dts/config/define-stateful-agent.d.ts.map +1 -1
- package/dist/dts/config/define-stateful-agent.test.d.ts +2 -0
- package/dist/dts/config/define-stateful-agent.test.d.ts.map +1 -0
- package/dist/dts/main/main.d.ts +8 -27
- package/dist/dts/main/main.d.ts.map +1 -1
- package/dist/esm/components/chat-driver/chat-driver.js +37 -2
- package/dist/esm/components/chat-driver/chat-driver.test.js +84 -0
- package/dist/esm/config/define-stateful-agent.js +13 -0
- package/dist/esm/config/define-stateful-agent.test.js +53 -0
- package/dist/esm/main/main.js +44 -26
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -16
- package/src/components/chat-driver/chat-driver.test.ts +128 -0
- package/src/components/chat-driver/chat-driver.ts +54 -2
- package/src/config/config.ts +52 -0
- package/src/config/define-stateful-agent.test.ts +64 -0
- package/src/config/define-stateful-agent.ts +31 -0
- package/src/main/main.ts +30 -40
|
@@ -94,6 +94,42 @@ export type TemperatureInput = number | ((ctx: SystemPromptContext) => number |
|
|
|
94
94
|
* @beta
|
|
95
95
|
*/
|
|
96
96
|
export type ToolChoiceInput = ChatToolChoice | ((ctx: SystemPromptContext) => ChatToolChoice | Promise<ChatToolChoice>);
|
|
97
|
+
/**
|
|
98
|
+
* Context passed to an agent's `onUnresolvedTool` hook when the model calls a
|
|
99
|
+
* tool the driver cannot dispatch.
|
|
100
|
+
*
|
|
101
|
+
* @beta
|
|
102
|
+
*/
|
|
103
|
+
export interface UnresolvedToolContext {
|
|
104
|
+
/** The tool name the model attempted to call. */
|
|
105
|
+
toolName: string;
|
|
106
|
+
/**
|
|
107
|
+
* Why the call could not be dispatched:
|
|
108
|
+
* - `'stale'` — the tool was advertised earlier this activation but is not
|
|
109
|
+
* part of the current step (e.g. a stateful agent has moved on).
|
|
110
|
+
* - `'unknown'` — the tool was never advertised this activation (a
|
|
111
|
+
* hallucinated name).
|
|
112
|
+
*/
|
|
113
|
+
kind: 'stale' | 'unknown';
|
|
114
|
+
/**
|
|
115
|
+
* The tool names dispatchable right now, so the hook can steer the model
|
|
116
|
+
* back to a valid call.
|
|
117
|
+
*/
|
|
118
|
+
availableTools: string[];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Optional per-agent hook consulted only on the already-failing unresolved-tool
|
|
122
|
+
* path — when the model calls a tool the driver cannot dispatch. Lets the agent
|
|
123
|
+
* replace the framework's default message with a context-aware redirect.
|
|
124
|
+
*
|
|
125
|
+
* Return a non-empty string to override the default tool-result message; return
|
|
126
|
+
* `undefined` (or an empty/whitespace string, or throw) to fall back to the
|
|
127
|
+
* framework default. The happy path is never affected. See
|
|
128
|
+
* {@link UnresolvedToolContext}.
|
|
129
|
+
*
|
|
130
|
+
* @beta
|
|
131
|
+
*/
|
|
132
|
+
export type UnresolvedToolInput = (ctx: UnresolvedToolContext) => string | undefined | Promise<string | undefined>;
|
|
97
133
|
/**
|
|
98
134
|
* Opts an agent in to manual selection from the assistant's agent picker.
|
|
99
135
|
*
|
|
@@ -195,6 +231,18 @@ interface BaseAgentConfig {
|
|
|
195
231
|
* @beta
|
|
196
232
|
*/
|
|
197
233
|
toolChoice?: ToolChoiceInput;
|
|
234
|
+
/**
|
|
235
|
+
* Optional hook consulted when the model calls a tool the driver cannot
|
|
236
|
+
* dispatch — either a *stale* tool (advertised earlier this activation but
|
|
237
|
+
* not part of the current step) or an *unknown* one (never advertised this
|
|
238
|
+
* activation). Return a context-aware redirect string to replace the
|
|
239
|
+
* framework's default message, or `undefined` to keep it. Consulted only on
|
|
240
|
+
* the already-failing unresolved-tool path; the happy path is unaffected.
|
|
241
|
+
* See {@link UnresolvedToolInput}.
|
|
242
|
+
*
|
|
243
|
+
* @beta
|
|
244
|
+
*/
|
|
245
|
+
onUnresolvedTool?: UnresolvedToolInput;
|
|
198
246
|
/**
|
|
199
247
|
* Optional primer history prepended to every call (not visible to the user).
|
|
200
248
|
* Used to establish agent identity and behavioural rules.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAAE,4BAA4B,EAAE,cAAc,EAAE,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACpC,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAElG;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAC5B,kBAAkB,EAAE,GACpB,CAAC,CAAC,GAAG,EAAE,mBAAmB,KAAK,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AAEzF;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,CAAC,CAAC,GAAG,EAAE,mBAAmB,KAAK,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAEjF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9F;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAEjG;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,CAAC,CAAC,GAAG,EAAE,mBAAmB,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,eAAe;IACvB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B;;OAEG;IACH,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD;;;;OAIG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D;;OAEG;IACH,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,qBAAqB,GAAG,mBAAmB,CAAC;AAEtE;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAErE"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChatMessage, ChatToolChoice, ChatToolDefinition, ChatToolHandlers } from '@genesislcap/foundation-ai';
|
|
2
|
-
import type { AgentConfig, AgentLifecycleContext, ChatInputDuringExecutionMode, ManualSelectionConfig, SystemPromptContext } from './config';
|
|
2
|
+
import type { AgentConfig, AgentLifecycleContext, ChatInputDuringExecutionMode, ManualSelectionConfig, SystemPromptContext, UnresolvedToolContext } from './config';
|
|
3
3
|
/**
|
|
4
4
|
* Context passed to per-turn resolvers on a stateful agent — the standard
|
|
5
5
|
* {@link SystemPromptContext} plus the live `state` value. Used by
|
|
@@ -123,6 +123,19 @@ export interface StatefulAgentInit<S> {
|
|
|
123
123
|
* for the default.
|
|
124
124
|
*/
|
|
125
125
|
toolChoice?: ChatToolChoice | ((ctx: StatefulAgentContext<S>) => ChatToolChoice | Promise<ChatToolChoice>);
|
|
126
|
+
/**
|
|
127
|
+
* Hook consulted when the model calls a tool that isn't dispatchable in the
|
|
128
|
+
* current state — a *stale* tool (valid in an earlier state of this agent) or
|
|
129
|
+
* an *unknown* one. Receives the current `state` alongside the attempted tool
|
|
130
|
+
* name and the currently dispatchable tools, so a machine-driven agent can
|
|
131
|
+
* return a step-aware redirect (e.g. "that belongs to a later step — finish
|
|
132
|
+
* this one first"). Return `undefined` to keep the framework default; a
|
|
133
|
+
* pre-init call also degrades to the default rather than throwing.
|
|
134
|
+
* See {@link UnresolvedToolContext}.
|
|
135
|
+
*/
|
|
136
|
+
onUnresolvedTool?: (ctx: UnresolvedToolContext & {
|
|
137
|
+
state: S;
|
|
138
|
+
}) => string | undefined | Promise<string | undefined>;
|
|
126
139
|
/**
|
|
127
140
|
* Optional getter for the debug-log snapshot. Defaults to auto-snapshotting
|
|
128
141
|
* any property on `state` that looks like a foundation-state-machine
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-stateful-agent.d.ts","sourceRoot":"","sources":["../../../src/config/define-stateful-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EAErB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"define-stateful-agent.d.ts","sourceRoot":"","sources":["../../../src/config/define-stateful-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-stateful-agent.test.d.ts","sourceRoot":"","sources":["../../../src/config/define-stateful-agent.test.ts"],"names":[],"mappings":""}
|
package/dist/dts/main/main.d.ts
CHANGED
|
@@ -453,44 +453,25 @@ export declare class FoundationAiAssistant extends GenesisElement {
|
|
|
453
453
|
meta: {
|
|
454
454
|
timestamp: string;
|
|
455
455
|
host: string;
|
|
456
|
-
agentSummary:
|
|
456
|
+
agentSummary: {
|
|
457
457
|
toolDefinitions: string | import("@genesislcap/foundation-ai").ChatToolDefinition[];
|
|
458
|
-
toolHandlers: any;
|
|
459
|
-
onActivate: any;
|
|
460
|
-
onDeactivate: any;
|
|
461
|
-
getDebugSnapshot: any;
|
|
462
|
-
description: string;
|
|
463
|
-
fallback?: never;
|
|
464
|
-
excludeFromClassifier?: boolean;
|
|
465
458
|
name: string;
|
|
466
|
-
displayName?: import("../config/config").SystemPromptInput;
|
|
467
|
-
systemPrompt?: import("../config/config").SystemPromptInput;
|
|
468
459
|
provider?: import("../config/config").ProviderInput;
|
|
469
|
-
temperature?: import("../config/config").TemperatureInput;
|
|
470
|
-
toolChoice?: import("../config/config").ToolChoiceInput;
|
|
471
|
-
primerHistory?: ChatMessage[];
|
|
472
|
-
subAgents?: AgentConfig[];
|
|
473
460
|
chatInputDuringExecution?: ChatInputDuringExecutionMode;
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
toolDefinitions: string | import("@genesislcap/foundation-ai").ChatToolDefinition[];
|
|
477
|
-
toolHandlers: any;
|
|
478
|
-
onActivate: any;
|
|
479
|
-
onDeactivate: any;
|
|
480
|
-
getDebugSnapshot: any;
|
|
481
|
-
fallback: true;
|
|
482
|
-
description?: never;
|
|
483
|
-
name: string;
|
|
461
|
+
description?: string;
|
|
462
|
+
fallback?: true;
|
|
484
463
|
displayName?: import("../config/config").SystemPromptInput;
|
|
485
464
|
systemPrompt?: import("../config/config").SystemPromptInput;
|
|
486
|
-
provider?: import("../config/config").ProviderInput;
|
|
487
465
|
temperature?: import("../config/config").TemperatureInput;
|
|
488
466
|
toolChoice?: import("../config/config").ToolChoiceInput;
|
|
467
|
+
onUnresolvedTool?: import("../config/config").UnresolvedToolInput;
|
|
489
468
|
primerHistory?: ChatMessage[];
|
|
490
469
|
subAgents?: AgentConfig[];
|
|
491
|
-
chatInputDuringExecution?: ChatInputDuringExecutionMode;
|
|
492
470
|
manualSelection?: import("../config/config").ManualSelectionConfig;
|
|
493
|
-
|
|
471
|
+
onActivate?: (ctx: import("../config/config").AgentLifecycleContext) => void | Promise<void>;
|
|
472
|
+
onDeactivate?: (ctx: import("../config/config").AgentLifecycleContext) => void | Promise<void>;
|
|
473
|
+
getDebugSnapshot?: () => unknown;
|
|
474
|
+
}[];
|
|
494
475
|
activeSystemPrompt: string;
|
|
495
476
|
activePrimerHistory: ChatMessage[];
|
|
496
477
|
activeFoldStack: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,6BAA6B,EAC7B,cAAc,EACd,UAAU,EACV,4BAA4B,EAC5B,WAAW,EACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAkC,MAAM,4BAA4B,CAAC;AAEhG,OAAO,EAGL,cAAc,EAIf,MAAM,uBAAuB,CAAC;AAe/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAkBlC,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAiBtB,8FAA8F;AAC9F,eAAO,MAAM,cAAc,ugBAAqf,CAAC;AAEjhB,+CAA+C;AAC/C,eAAO,MAAM,WAAW,0OAAgO,CAAC;AAEzP,sFAAsF;AACtF,eAAO,MAAM,cAAc,yrBAA+qB,CAAC;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -298,6 +298,7 @@ export class ChatDriver extends EventTarget {
|
|
|
298
298
|
this.activeProviderInput = config.provider;
|
|
299
299
|
this.activeTemperatureInput = config.temperature;
|
|
300
300
|
this.activeToolChoiceInput = config.toolChoice;
|
|
301
|
+
this.activeOnUnresolvedTool = config.onUnresolvedTool;
|
|
301
302
|
this.resolvedProviderCache.clear();
|
|
302
303
|
this.lastResolvedProviderName = undefined;
|
|
303
304
|
// Static validation: resolve the name now so unknown-provider and missing-
|
|
@@ -314,6 +315,33 @@ export class ChatDriver extends EventTarget {
|
|
|
314
315
|
// states while a swap to a different specialist starts clean.
|
|
315
316
|
this.everSeenToolNames.clear();
|
|
316
317
|
}
|
|
318
|
+
/**
|
|
319
|
+
* Resolve the tool-result content for an unresolved tool call. Consults the
|
|
320
|
+
* active agent's `onUnresolvedTool` hook (if any) with the attempted tool
|
|
321
|
+
* name, the failure `kind`, and the currently dispatchable tools, and returns
|
|
322
|
+
* the hook's non-empty string. Falls back to `fallback` when no hook is set,
|
|
323
|
+
* the hook returns nothing/empty, or the hook throws — so a misbehaving hook
|
|
324
|
+
* can never break tool dispatch.
|
|
325
|
+
*/
|
|
326
|
+
resolveUnresolvedToolContent(toolName, kind, fallback) {
|
|
327
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
328
|
+
if (typeof this.activeOnUnresolvedTool !== 'function') {
|
|
329
|
+
return fallback;
|
|
330
|
+
}
|
|
331
|
+
try {
|
|
332
|
+
const custom = yield this.activeOnUnresolvedTool({
|
|
333
|
+
toolName,
|
|
334
|
+
kind,
|
|
335
|
+
availableTools: Object.keys(this.toolHandlers),
|
|
336
|
+
});
|
|
337
|
+
return typeof custom === 'string' && custom.trim().length > 0 ? custom : fallback;
|
|
338
|
+
}
|
|
339
|
+
catch (e) {
|
|
340
|
+
logger.warn(`ChatDriver: onUnresolvedTool threw for "${toolName}" — using default message`, e);
|
|
341
|
+
return fallback;
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
}
|
|
317
345
|
/**
|
|
318
346
|
* Returns the most recently resolved provider name. Falls back to the
|
|
319
347
|
* registry's default when no per-turn resolution has happened yet.
|
|
@@ -1633,7 +1661,13 @@ export class ChatDriver extends EventTarget {
|
|
|
1633
1661
|
consecutive: this.consecutiveUnknownToolCalls,
|
|
1634
1662
|
max: MAX_STALE_TOOL_CALLS,
|
|
1635
1663
|
});
|
|
1636
|
-
|
|
1664
|
+
// Fold-hidden tools keep their fold-specific guidance; a plain
|
|
1665
|
+
// stale tool is a step-ordering miss, so offer the agent's
|
|
1666
|
+
// redirect when it supplies one.
|
|
1667
|
+
const staleContent = hidingFold
|
|
1668
|
+
? content
|
|
1669
|
+
: yield this.resolveUnresolvedToolContent(tc.name, 'stale', content);
|
|
1670
|
+
executedById.set(tc.id, { toolCallId: tc.id, content: staleContent });
|
|
1637
1671
|
unknownToolIds.add(tc.id);
|
|
1638
1672
|
staleToolIds.add(tc.id);
|
|
1639
1673
|
this.recentUnknownToolNames.add(tc.name);
|
|
@@ -1654,7 +1688,8 @@ export class ChatDriver extends EventTarget {
|
|
|
1654
1688
|
max: DEFAULT_MAX_UNKNOWN_TOOL_CALLS,
|
|
1655
1689
|
availableTools: Object.keys(this.toolHandlers),
|
|
1656
1690
|
});
|
|
1657
|
-
|
|
1691
|
+
const unknownContent = yield this.resolveUnresolvedToolContent(tc.name, 'unknown', `Unknown tool: ${tc.name}`);
|
|
1692
|
+
executedById.set(tc.id, { toolCallId: tc.id, content: unknownContent });
|
|
1658
1693
|
unknownToolIds.add(tc.id);
|
|
1659
1694
|
this.recentUnknownToolNames.add(tc.name);
|
|
1660
1695
|
if (this.consecutiveUnknownToolCalls >= DEFAULT_MAX_UNKNOWN_TOOL_CALLS) {
|
|
@@ -201,6 +201,90 @@ stale('splits stale vs hallucinated tools on the unknown-tool-limit error', () =
|
|
|
201
201
|
}));
|
|
202
202
|
stale.run();
|
|
203
203
|
// ---------------------------------------------------------------------------
|
|
204
|
+
// onUnresolvedTool hook — an agent can redirect an unresolved tool call
|
|
205
|
+
// ---------------------------------------------------------------------------
|
|
206
|
+
const hook = createLogicSuite('ChatDriver onUnresolvedTool hook');
|
|
207
|
+
hook.after(() => {
|
|
208
|
+
agenticActivityBus.close();
|
|
209
|
+
});
|
|
210
|
+
hook('replaces the default for a hallucinated tool when the hook returns a string', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
211
|
+
const config = agent({
|
|
212
|
+
name: 'Hooked',
|
|
213
|
+
toolDefinitions: [def('real_tool')],
|
|
214
|
+
toolHandlers: { real_tool: () => __awaiter(void 0, void 0, void 0, function* () { return 'ok'; }) },
|
|
215
|
+
onUnresolvedTool: ({ toolName, kind, availableTools }) => `redirect: ${toolName} is ${kind}; use ${availableTools.join(', ')}`,
|
|
216
|
+
});
|
|
217
|
+
const provider = scriptedProvider([callsTool('made_up', 'm1')]);
|
|
218
|
+
const driver = makeDriver(config, provider);
|
|
219
|
+
yield driver.sendMessage('go');
|
|
220
|
+
assert.ok(toolResultContents(driver).includes('redirect: made_up is unknown; use real_tool'), 'the hook string should replace the default Unknown tool message');
|
|
221
|
+
assert.not.ok(toolResultContents(driver).some((c) => c.startsWith('Unknown tool:')), 'the default unknown-tool message must not appear');
|
|
222
|
+
}));
|
|
223
|
+
hook('replaces the default for a stale tool when the hook returns a string', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
224
|
+
let state = 'A';
|
|
225
|
+
const config = agent({
|
|
226
|
+
name: 'HookedStateful',
|
|
227
|
+
toolDefinitions: () => (state === 'A' ? [def('tool_a')] : [def('tool_b')]),
|
|
228
|
+
toolHandlers: () => state === 'A'
|
|
229
|
+
? {
|
|
230
|
+
tool_a: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
231
|
+
state = 'B';
|
|
232
|
+
return 'advanced to B';
|
|
233
|
+
}),
|
|
234
|
+
}
|
|
235
|
+
: { tool_b: () => __awaiter(void 0, void 0, void 0, function* () { return 'b done'; }) },
|
|
236
|
+
onUnresolvedTool: ({ toolName, kind }) => `redirect: ${toolName}/${kind}`,
|
|
237
|
+
});
|
|
238
|
+
const provider = scriptedProvider([
|
|
239
|
+
callsTool('tool_a', 't1'), // real — advances A -> B
|
|
240
|
+
callsTool('tool_a', 't2'), // stale — tool_a no longer in state B
|
|
241
|
+
callsTool('tool_b', 't3'), // real — valid in state B
|
|
242
|
+
]);
|
|
243
|
+
const driver = makeDriver(config, provider);
|
|
244
|
+
yield driver.sendMessage('go');
|
|
245
|
+
assert.ok(toolResultContents(driver).includes('redirect: tool_a/stale'), 'the hook string should replace the default stale message');
|
|
246
|
+
assert.not.ok(toolResultContents(driver).some((c) => c.includes('was available earlier but is not part of the current step')), 'the default stale message must not appear');
|
|
247
|
+
}));
|
|
248
|
+
hook('falls back to the default when the hook returns undefined', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
249
|
+
const config = agent({
|
|
250
|
+
name: 'HookUndefined',
|
|
251
|
+
toolDefinitions: [def('real_tool')],
|
|
252
|
+
toolHandlers: { real_tool: () => __awaiter(void 0, void 0, void 0, function* () { return 'ok'; }) },
|
|
253
|
+
onUnresolvedTool: () => undefined,
|
|
254
|
+
});
|
|
255
|
+
const provider = scriptedProvider([callsTool('made_up', 'm1')]);
|
|
256
|
+
const driver = makeDriver(config, provider);
|
|
257
|
+
yield driver.sendMessage('go');
|
|
258
|
+
assert.ok(toolResultContents(driver).includes('Unknown tool: made_up'), 'an undefined hook result should fall back to the default message');
|
|
259
|
+
}));
|
|
260
|
+
hook('falls back to the default when the hook returns a whitespace-only string', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
261
|
+
const config = agent({
|
|
262
|
+
name: 'HookEmpty',
|
|
263
|
+
toolDefinitions: [def('real_tool')],
|
|
264
|
+
toolHandlers: { real_tool: () => __awaiter(void 0, void 0, void 0, function* () { return 'ok'; }) },
|
|
265
|
+
onUnresolvedTool: () => ' ',
|
|
266
|
+
});
|
|
267
|
+
const provider = scriptedProvider([callsTool('made_up', 'm1')]);
|
|
268
|
+
const driver = makeDriver(config, provider);
|
|
269
|
+
yield driver.sendMessage('go');
|
|
270
|
+
assert.ok(toolResultContents(driver).includes('Unknown tool: made_up'), 'a whitespace-only hook result should fall back to the default message');
|
|
271
|
+
}));
|
|
272
|
+
hook('falls back to the default when the hook throws', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
273
|
+
const config = agent({
|
|
274
|
+
name: 'HookThrows',
|
|
275
|
+
toolDefinitions: [def('real_tool')],
|
|
276
|
+
toolHandlers: { real_tool: () => __awaiter(void 0, void 0, void 0, function* () { return 'ok'; }) },
|
|
277
|
+
onUnresolvedTool: () => {
|
|
278
|
+
throw new Error('boom');
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
const provider = scriptedProvider([callsTool('made_up', 'm1')]);
|
|
282
|
+
const driver = makeDriver(config, provider);
|
|
283
|
+
yield driver.sendMessage('go');
|
|
284
|
+
assert.ok(toolResultContents(driver).includes('Unknown tool: made_up'), 'a throwing hook should fall back to the default message');
|
|
285
|
+
}));
|
|
286
|
+
hook.run();
|
|
287
|
+
// ---------------------------------------------------------------------------
|
|
204
288
|
// timeout handling — a transport `TimeoutError` surfaces a distinct message
|
|
205
289
|
// ---------------------------------------------------------------------------
|
|
206
290
|
const timeout = createLogicSuite('ChatDriver timeout handling');
|
|
@@ -136,6 +136,18 @@ export function defineStatefulAgent(opts) {
|
|
|
136
136
|
return opts.toolChoice(Object.assign(Object.assign({}, ctx), { state }));
|
|
137
137
|
})
|
|
138
138
|
: opts.toolChoice;
|
|
139
|
+
// `onUnresolvedTool` threads `state` in like the resolvers above, but unlike
|
|
140
|
+
// them returns `undefined` before init rather than throwing: it fires on the
|
|
141
|
+
// tool-dispatch path, so a pre-init call must degrade to the framework
|
|
142
|
+
// default instead of breaking dispatch.
|
|
143
|
+
const wrappedOnUnresolvedTool = typeof opts.onUnresolvedTool === 'function'
|
|
144
|
+
? (ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
if (!state) {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
return opts.onUnresolvedTool(Object.assign(Object.assign({}, ctx), { state }));
|
|
149
|
+
})
|
|
150
|
+
: opts.onUnresolvedTool;
|
|
139
151
|
const base = {
|
|
140
152
|
name: opts.name,
|
|
141
153
|
displayName: wrappedDisplayName,
|
|
@@ -148,6 +160,7 @@ export function defineStatefulAgent(opts) {
|
|
|
148
160
|
provider: wrappedProvider,
|
|
149
161
|
temperature: wrappedTemperature,
|
|
150
162
|
toolChoice: wrappedToolChoice,
|
|
163
|
+
onUnresolvedTool: wrappedOnUnresolvedTool,
|
|
151
164
|
onActivate: (ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
152
165
|
state = yield opts.init(ctx);
|
|
153
166
|
// Sample once with the init state to fail loud on fold misuse at the
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { assert, createLogicSuite } from '@genesislcap/foundation-testing';
|
|
3
|
+
import { defineStatefulAgent } from './define-stateful-agent';
|
|
4
|
+
// A minimal lifecycle context — `onActivate`/`onDeactivate` only read what the
|
|
5
|
+
// helper passes through, so the agent name, session key, and a live signal are
|
|
6
|
+
// enough to drive init/dispose in a Node-runnable test.
|
|
7
|
+
const lifecycleCtx = () => ({
|
|
8
|
+
agentName: 'wizard',
|
|
9
|
+
sessionKey: 'test-session',
|
|
10
|
+
signal: new AbortController().signal,
|
|
11
|
+
});
|
|
12
|
+
const onUnresolvedTool = createLogicSuite('defineStatefulAgent onUnresolvedTool');
|
|
13
|
+
onUnresolvedTool('threads the live state into the hook after init', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
const config = defineStatefulAgent({
|
|
15
|
+
name: 'wizard',
|
|
16
|
+
description: 'guided wizard',
|
|
17
|
+
init: () => ({ step: 'intake' }),
|
|
18
|
+
onUnresolvedTool: ({ state, toolName, kind, availableTools }) => `step=${state.step} tool=${toolName} kind=${kind} avail=${availableTools.join(',')}`,
|
|
19
|
+
});
|
|
20
|
+
yield config.onActivate(lifecycleCtx());
|
|
21
|
+
const result = yield config.onUnresolvedTool({
|
|
22
|
+
toolName: 'generate_view',
|
|
23
|
+
kind: 'stale',
|
|
24
|
+
availableTools: ['ask_user', 'validate'],
|
|
25
|
+
});
|
|
26
|
+
assert.is(result, 'step=intake tool=generate_view kind=stale avail=ask_user,validate');
|
|
27
|
+
}));
|
|
28
|
+
onUnresolvedTool('returns undefined before init rather than throwing', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const config = defineStatefulAgent({
|
|
30
|
+
name: 'wizard',
|
|
31
|
+
description: 'guided wizard',
|
|
32
|
+
init: () => ({ step: 'intake' }),
|
|
33
|
+
// Would throw if it were ever reached without state — proves the wrapper
|
|
34
|
+
// short-circuits before delegating.
|
|
35
|
+
onUnresolvedTool: ({ state }) => `step=${state.step}`,
|
|
36
|
+
});
|
|
37
|
+
// No `onActivate` call — state has not been built yet.
|
|
38
|
+
const result = yield config.onUnresolvedTool({
|
|
39
|
+
toolName: 'generate_view',
|
|
40
|
+
kind: 'unknown',
|
|
41
|
+
availableTools: [],
|
|
42
|
+
});
|
|
43
|
+
assert.is(result, undefined, 'a pre-init call must degrade to the framework default');
|
|
44
|
+
}));
|
|
45
|
+
onUnresolvedTool('omits the hook from the config when not supplied', () => {
|
|
46
|
+
const config = defineStatefulAgent({
|
|
47
|
+
name: 'wizard',
|
|
48
|
+
description: 'guided wizard',
|
|
49
|
+
init: () => ({ step: 'intake' }),
|
|
50
|
+
});
|
|
51
|
+
assert.is(config.onUnresolvedTool, undefined);
|
|
52
|
+
});
|
|
53
|
+
onUnresolvedTool.run();
|
package/dist/esm/main/main.js
CHANGED
|
@@ -96,21 +96,35 @@ const COMPOSER_MIN_MESSAGES_PX = 80;
|
|
|
96
96
|
// Register supporting components when the main component module is imported.
|
|
97
97
|
avoidTreeShaking(AiChatMarkdown, AiChatInteractionWrapper, AiHaloOverlay, AiWavesIndicator, AiFlowingWavesIndicator, AiPlasmaOrbIndicator, AiChatBubble, AiActivityHalo, ChatSuggestions, AgentPicker);
|
|
98
98
|
/**
|
|
99
|
-
* Recursively strips non-serializable fields from an agent before storing in
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
99
|
+
* Recursively strips non-serializable fields from an agent before storing in
|
|
100
|
+
* Redux. Drops **every function-valued property** — `toolHandlers`, the
|
|
101
|
+
* lifecycle/dispatch hooks (`onActivate`, `onDeactivate`, `getDebugSnapshot`,
|
|
102
|
+
* `onUnresolvedTool`), and the function form of the per-turn resolvers
|
|
103
|
+
* (`systemPrompt`, `toolDefinitions`, `displayName`, `provider`, `temperature`,
|
|
104
|
+
* `toolChoice`). Static forms (string / number / array / plain object) pass
|
|
105
|
+
* through unchanged; `subAgents` are stripped recursively.
|
|
106
|
+
*
|
|
107
|
+
* Filtering by *value* (any function) rather than by an explicit field list
|
|
108
|
+
* means a new function-valued field added to `AgentConfig` is handled
|
|
109
|
+
* automatically and can never leak a live function into serialized store
|
|
110
|
+
* state — no denylist to keep in sync. The live config on the driver stays the
|
|
111
|
+
* source of truth; the slice only holds this serializable projection, and
|
|
112
|
+
* functions are never read back from it.
|
|
108
113
|
*/
|
|
109
114
|
function stripHandlers(agent) {
|
|
110
|
-
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
115
|
+
var _a;
|
|
116
|
+
const serializable = {};
|
|
117
|
+
for (const [key, value] of Object.entries(agent)) {
|
|
118
|
+
// `subAgents` is handled separately (recursively, below); drop everything
|
|
119
|
+
// function-valued.
|
|
120
|
+
if (key === 'subAgents' || typeof value === 'function')
|
|
121
|
+
continue;
|
|
122
|
+
serializable[key] = value;
|
|
123
|
+
}
|
|
124
|
+
if ((_a = agent.subAgents) === null || _a === void 0 ? void 0 : _a.length) {
|
|
125
|
+
serializable.subAgents = agent.subAgents.map(stripHandlers);
|
|
126
|
+
}
|
|
127
|
+
return serializable;
|
|
114
128
|
}
|
|
115
129
|
/**
|
|
116
130
|
* Foundation AI Assistant component.
|
|
@@ -900,7 +914,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
900
914
|
this.driverCleanup = undefined;
|
|
901
915
|
}
|
|
902
916
|
connectedCallback() {
|
|
903
|
-
var _a, _b, _c, _d, _e, _f,
|
|
917
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
904
918
|
// Initialise the store reference BEFORE super.connectedCallback() so that
|
|
905
919
|
// the first FAST render has access to the store. The store Proxy calls
|
|
906
920
|
// Observable.track(observableStore, sliceName) whenever a slice is read,
|
|
@@ -953,7 +967,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
953
967
|
// Subscribe once so that when the originating send() completes (possibly on a
|
|
954
968
|
// different element instance that has since disconnected), this element cleans up
|
|
955
969
|
// its own timer, syncs the halo, and triggers the post-response suggestion fetch.
|
|
956
|
-
this._executionCompletionUnsub = (
|
|
970
|
+
this._executionCompletionUnsub = (_g = this._sessionRef) === null || _g === void 0 ? void 0 : _g.subscribeKey((s) => s.aiAssistant.state, () => {
|
|
957
971
|
var _a, _b;
|
|
958
972
|
if (((_a = this._sessionRef) === null || _a === void 0 ? void 0 : _a.store.aiAssistant.state) === 'idle') {
|
|
959
973
|
this.stopLoadingTimer();
|
|
@@ -976,7 +990,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
976
990
|
// `provider-changed`. Feature-detected: a no-op for immutable registries.
|
|
977
991
|
// Re-subscribed per connect (docking/popout remounts); balanced in
|
|
978
992
|
// disconnectedCallback.
|
|
979
|
-
(
|
|
993
|
+
(_h = this.unsubProviderRegistry) === null || _h === void 0 ? void 0 : _h.call(this);
|
|
980
994
|
this.unsubProviderRegistry = undefined;
|
|
981
995
|
if (isObservableAIProviderRegistry(this.providerRegistry)) {
|
|
982
996
|
this.unsubProviderRegistry = this.providerRegistry.subscribe(() => {
|
|
@@ -1007,7 +1021,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
1007
1021
|
restoredMessages: this.messages.length,
|
|
1008
1022
|
driver: driverExisted ? 'reused' : 'created',
|
|
1009
1023
|
driverKind: this.driver instanceof OrchestratingDriver ? 'orchestrating' : 'chat',
|
|
1010
|
-
driverBusy: (
|
|
1024
|
+
driverBusy: (_k = (_j = this.driver) === null || _j === void 0 ? void 0 : _j.isBusy()) !== null && _k !== void 0 ? _k : false,
|
|
1011
1025
|
});
|
|
1012
1026
|
}
|
|
1013
1027
|
disconnectedCallback() {
|
|
@@ -1365,7 +1379,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
1365
1379
|
this.enabledAnimations = resolveExclusiveLoadingStyle(animations, this.enabledAnimations);
|
|
1366
1380
|
}
|
|
1367
1381
|
getDebugLog() {
|
|
1368
|
-
var _a, _b, _c, _d, _e, _f, _j, _k, _l, _m, _o
|
|
1382
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
1369
1383
|
const timestamp = new Date().toISOString().replace(/:/g, '-');
|
|
1370
1384
|
// Live agent reference — `this.activeAgent` is the redux-stripped projection,
|
|
1371
1385
|
// so getDebugSnapshot is not on it. Look up the live config from the agents
|
|
@@ -1417,7 +1431,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
1417
1431
|
turn: 1,
|
|
1418
1432
|
message: 2,
|
|
1419
1433
|
};
|
|
1420
|
-
const messages = (
|
|
1434
|
+
const messages = (_h = (_g = (_f = this.driver) === null || _f === void 0 ? void 0 : _f.getRawHistory) === null || _g === void 0 ? void 0 : _g.call(_f)) !== null && _h !== void 0 ? _h : this.messages;
|
|
1421
1435
|
const timeline = [
|
|
1422
1436
|
...messages.map((m) => (Object.assign({ kind: 'message' }, m))),
|
|
1423
1437
|
...turns,
|
|
@@ -1442,9 +1456,13 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
1442
1456
|
meta: {
|
|
1443
1457
|
timestamp,
|
|
1444
1458
|
host: window.location.host,
|
|
1445
|
-
|
|
1459
|
+
// stripHandlers drops every function-valued field (handlers, lifecycle
|
|
1460
|
+
// hooks, onUnresolvedTool, function-form resolvers) and recurses
|
|
1461
|
+
// subAgents — no manual exclusion list to keep in sync. We only override
|
|
1462
|
+
// toolDefinitions afterwards to expand the fold tree for the log.
|
|
1463
|
+
agentSummary: (_j = this.agents) === null || _j === void 0 ? void 0 : _j.map((a) => {
|
|
1446
1464
|
var _a;
|
|
1447
|
-
return (Object.assign(Object.assign({}, a), { toolDefinitions: Array.isArray(a.toolDefinitions)
|
|
1465
|
+
return (Object.assign(Object.assign({}, stripHandlers(a)), { toolDefinitions: Array.isArray(a.toolDefinitions)
|
|
1448
1466
|
? typeof a.toolHandlers === 'function'
|
|
1449
1467
|
? // Static defs + dynamic handlers — can't walk fold tree
|
|
1450
1468
|
// because the handler map isn't materialized at log time.
|
|
@@ -1452,12 +1470,12 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
1452
1470
|
: expandToolTree(a.toolDefinitions, (_a = a.toolHandlers) !== null && _a !== void 0 ? _a : {})
|
|
1453
1471
|
: typeof a.toolDefinitions === 'function'
|
|
1454
1472
|
? '<dynamic — resolved per turn>'
|
|
1455
|
-
: []
|
|
1473
|
+
: [] }));
|
|
1456
1474
|
}),
|
|
1457
|
-
activeSystemPrompt: typeof ((
|
|
1475
|
+
activeSystemPrompt: typeof ((_k = this.activeAgent) === null || _k === void 0 ? void 0 : _k.systemPrompt) === 'function'
|
|
1458
1476
|
? '<dynamic — resolved per turn>'
|
|
1459
|
-
: (
|
|
1460
|
-
activePrimerHistory: (
|
|
1477
|
+
: (_l = this.activeAgent) === null || _l === void 0 ? void 0 : _l.systemPrompt,
|
|
1478
|
+
activePrimerHistory: (_m = this.activeAgent) === null || _m === void 0 ? void 0 : _m.primerHistory,
|
|
1461
1479
|
activeFoldStack: this.driver instanceof ChatDriver ? this.driver.getActiveFoldNames() : undefined,
|
|
1462
1480
|
// Context window + cost snapshot. `sessionCostUsd` is the chat-scoped
|
|
1463
1481
|
// total (per-message `cost` summed); the transport's lifetime cost is
|
|
@@ -1474,7 +1492,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
1474
1492
|
// Snapshot captured fresh at log-export time — reflects state NOW, which
|
|
1475
1493
|
// may have transitioned since the last LLM call.
|
|
1476
1494
|
activeDebugSnapshot,
|
|
1477
|
-
debug: (
|
|
1495
|
+
debug: (_o = this.debugStateFactory) === null || _o === void 0 ? void 0 : _o.call(this),
|
|
1478
1496
|
},
|
|
1479
1497
|
};
|
|
1480
1498
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/index.ts","../src/channel/ai-activity-bus.ts","../src/channel/ai-activity-channel.ts","../src/components/flowing-waves-indicator.ts","../src/components/halo-overlay.ts","../src/components/plasma-orb-indicator.ts","../src/components/waves-indicator.ts","../src/components/activity-halo/activity-halo.ts","../src/components/agent-picker/agent-picker.constants.ts","../src/components/agent-picker/agent-picker.styles.ts","../src/components/agent-picker/agent-picker.template.ts","../src/components/agent-picker/agent-picker.ts","../src/components/agent-picker/index.ts","../src/components/ai-driver/ai-driver.ts","../src/components/ai-driver/index.ts","../src/components/chat-bubble/chat-bubble.styles.ts","../src/components/chat-bubble/chat-bubble.template.ts","../src/components/chat-bubble/chat-bubble.ts","../src/components/chat-bubble/index.ts","../src/components/chat-driver/align-event-globals.ts","../src/components/chat-driver/chat-driver.test.ts","../src/components/chat-driver/chat-driver.ts","../src/components/chat-driver/index.ts","../src/components/chat-interaction-wrapper/chat-interaction-wrapper.styles.ts","../src/components/chat-interaction-wrapper/chat-interaction-wrapper.template.ts","../src/components/chat-interaction-wrapper/chat-interaction-wrapper.test.ts","../src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts","../src/components/chat-interaction-wrapper/index.ts","../src/components/chat-markdown/chat-markdown.ts","../src/components/chat-markdown/index.ts","../src/components/orchestrating-driver/index.ts","../src/components/orchestrating-driver/orchestrating-driver.ts","../src/components/popout-manager/index.ts","../src/components/popout-manager/popout-manager.ts","../src/config/config.ts","../src/config/define-stateful-agent.ts","../src/config/fallback-agents.ts","../src/config/index.ts","../src/config/validate-providers.test.ts","../src/config/validate-providers.ts","../src/main/index.ts","../src/main/main.styles.ts","../src/main/main.template.ts","../src/main/main.ts","../src/main/main.types.ts","../src/state/ai-assistant-slice.ts","../src/state/debug-event-log.ts","../src/state/driver-registry.ts","../src/state/session-store.ts","../src/styles/ai-colours.ts","../src/styles/index.ts","../src/styles/styles.ts","../src/suggestions/chat-suggestions.ts","../src/tags/index.ts","../src/types/ai-chat-widget.ts","../src/utils/animated-panel-toggle.ts","../src/utils/animation-exclusivity.test.ts","../src/utils/animation-exclusivity.ts","../src/utils/history-transform.ts","../src/utils/index.ts","../src/utils/logger.ts","../src/utils/message-partition.test.ts","../src/utils/message-partition.ts","../src/utils/sum-costs.test.ts","../src/utils/sum-costs.ts","../src/utils/tool-fold.ts"],"version":"5.9.2"}
|
|
1
|
+
{"root":["../src/index.ts","../src/channel/ai-activity-bus.ts","../src/channel/ai-activity-channel.ts","../src/components/flowing-waves-indicator.ts","../src/components/halo-overlay.ts","../src/components/plasma-orb-indicator.ts","../src/components/waves-indicator.ts","../src/components/activity-halo/activity-halo.ts","../src/components/agent-picker/agent-picker.constants.ts","../src/components/agent-picker/agent-picker.styles.ts","../src/components/agent-picker/agent-picker.template.ts","../src/components/agent-picker/agent-picker.ts","../src/components/agent-picker/index.ts","../src/components/ai-driver/ai-driver.ts","../src/components/ai-driver/index.ts","../src/components/chat-bubble/chat-bubble.styles.ts","../src/components/chat-bubble/chat-bubble.template.ts","../src/components/chat-bubble/chat-bubble.ts","../src/components/chat-bubble/index.ts","../src/components/chat-driver/align-event-globals.ts","../src/components/chat-driver/chat-driver.test.ts","../src/components/chat-driver/chat-driver.ts","../src/components/chat-driver/index.ts","../src/components/chat-interaction-wrapper/chat-interaction-wrapper.styles.ts","../src/components/chat-interaction-wrapper/chat-interaction-wrapper.template.ts","../src/components/chat-interaction-wrapper/chat-interaction-wrapper.test.ts","../src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts","../src/components/chat-interaction-wrapper/index.ts","../src/components/chat-markdown/chat-markdown.ts","../src/components/chat-markdown/index.ts","../src/components/orchestrating-driver/index.ts","../src/components/orchestrating-driver/orchestrating-driver.ts","../src/components/popout-manager/index.ts","../src/components/popout-manager/popout-manager.ts","../src/config/config.ts","../src/config/define-stateful-agent.test.ts","../src/config/define-stateful-agent.ts","../src/config/fallback-agents.ts","../src/config/index.ts","../src/config/validate-providers.test.ts","../src/config/validate-providers.ts","../src/main/index.ts","../src/main/main.styles.ts","../src/main/main.template.ts","../src/main/main.ts","../src/main/main.types.ts","../src/state/ai-assistant-slice.ts","../src/state/debug-event-log.ts","../src/state/driver-registry.ts","../src/state/session-store.ts","../src/styles/ai-colours.ts","../src/styles/index.ts","../src/styles/styles.ts","../src/suggestions/chat-suggestions.ts","../src/tags/index.ts","../src/types/ai-chat-widget.ts","../src/utils/animated-panel-toggle.ts","../src/utils/animation-exclusivity.test.ts","../src/utils/animation-exclusivity.ts","../src/utils/history-transform.ts","../src/utils/index.ts","../src/utils/logger.ts","../src/utils/message-partition.test.ts","../src/utils/message-partition.ts","../src/utils/sum-costs.test.ts","../src/utils/sum-costs.ts","../src/utils/tool-fold.ts"],"version":"5.9.2"}
|