@genesislcap/ai-assistant 14.437.0 → 14.437.1
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 +242 -19
- package/dist/ai-assistant.d.ts +104 -20
- package/dist/dts/components/chat-driver/chat-driver.d.ts +31 -3
- package/dist/dts/components/chat-driver/chat-driver.d.ts.map +1 -1
- package/dist/dts/config/config.d.ts +30 -2
- package/dist/dts/config/config.d.ts.map +1 -1
- package/dist/dts/config/define-stateful-agent.d.ts +38 -14
- package/dist/dts/config/define-stateful-agent.d.ts.map +1 -1
- package/dist/dts/main/main.d.ts +4 -2
- package/dist/dts/main/main.d.ts.map +1 -1
- package/dist/esm/components/chat-driver/chat-driver.js +45 -3
- package/dist/esm/config/define-stateful-agent.js +32 -45
- package/dist/esm/main/main.js +14 -4
- package/dist/esm/main/main.template.js +8 -5
- package/package.json +16 -16
- package/src/components/chat-driver/chat-driver.ts +79 -4
- package/src/config/config.ts +33 -2
- package/src/config/define-stateful-agent.ts +72 -57
- package/src/main/main.template.ts +1 -1
- package/src/main/main.ts +15 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-driver.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,WAAW,
|
|
1
|
+
{"version":3,"file":"chat-driver.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,17 @@ export type SystemPromptInput = string | ((ctx: SystemPromptContext) => string |
|
|
|
48
48
|
* @beta
|
|
49
49
|
*/
|
|
50
50
|
export type ToolDefinitionsInput = ChatToolDefinition[] | ((ctx: SystemPromptContext) => ChatToolDefinition[] | Promise<ChatToolDefinition[]>);
|
|
51
|
+
/**
|
|
52
|
+
* Tool handlers for an agent. Either a static map (the conventional shape) or a
|
|
53
|
+
* function resolved each tool-loop iteration. The function form lets the agent
|
|
54
|
+
* narrow the dispatchable handler set per turn — pair it with the function form
|
|
55
|
+
* of `toolDefinitions` so the LLM-visible tools and the dispatchable handlers
|
|
56
|
+
* stay in lockstep, and handlers don't have to defend themselves against being
|
|
57
|
+
* dispatched in states where their tool isn't advertised.
|
|
58
|
+
*
|
|
59
|
+
* @beta
|
|
60
|
+
*/
|
|
61
|
+
export type ToolHandlersInput = ChatToolHandlers | ((ctx: SystemPromptContext) => ChatToolHandlers | Promise<ChatToolHandlers>);
|
|
51
62
|
/**
|
|
52
63
|
* Opts an agent in to manual selection from the assistant's agent picker.
|
|
53
64
|
*
|
|
@@ -69,9 +80,21 @@ export interface ManualSelectionConfig {
|
|
|
69
80
|
}
|
|
70
81
|
interface BaseAgentConfig {
|
|
71
82
|
/**
|
|
72
|
-
*
|
|
83
|
+
* Stable identity for this agent. Used for classifier routing, manual
|
|
84
|
+
* pinning, and history filtering — must not vary per turn. For a per-turn
|
|
85
|
+
* display label (e.g. "Guided Booking (Counterparties)"), supply
|
|
86
|
+
* {@link BaseAgentConfig.displayName}.
|
|
73
87
|
*/
|
|
74
88
|
name: string;
|
|
89
|
+
/**
|
|
90
|
+
* Optional per-turn display label. Resolved each tool-loop iteration and
|
|
91
|
+
* stamped onto outgoing messages (`agentLabel`) and the debug-log timeline.
|
|
92
|
+
* Renderers fall back to `name` when this is unset. Use the function form
|
|
93
|
+
* to vary the label by current state (e.g. a state machine's step).
|
|
94
|
+
*
|
|
95
|
+
* Identity stays on `name` — this is for UX only.
|
|
96
|
+
*/
|
|
97
|
+
displayName?: SystemPromptInput;
|
|
75
98
|
/**
|
|
76
99
|
* System prompt injected into every conversation turn for this agent.
|
|
77
100
|
*
|
|
@@ -91,8 +114,13 @@ interface BaseAgentConfig {
|
|
|
91
114
|
toolDefinitions?: ToolDefinitionsInput;
|
|
92
115
|
/**
|
|
93
116
|
* Tool handler implementations for this agent.
|
|
117
|
+
*
|
|
118
|
+
* Either a static map or a function resolved each tool-loop iteration —
|
|
119
|
+
* pick the function form to narrow the dispatchable handler set per turn,
|
|
120
|
+
* matching the function form of `toolDefinitions`.
|
|
121
|
+
* See {@link ToolHandlersInput}.
|
|
94
122
|
*/
|
|
95
|
-
toolHandlers?:
|
|
123
|
+
toolHandlers?: ToolHandlersInput;
|
|
96
124
|
/**
|
|
97
125
|
* Optional primer history prepended to every call (not visible to the user).
|
|
98
126
|
* 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,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAAE,4BAA4B,EAAE,CAAC;AAE7C;;;;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;;;;;;;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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAAE,4BAA4B,EAAE,CAAC;AAE7C;;;;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;;;;;;;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;;;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,5 +1,18 @@
|
|
|
1
1
|
import type { ChatMessage, ChatToolDefinition, ChatToolHandlers } from '@genesislcap/foundation-ai';
|
|
2
2
|
import type { AgentConfig, AgentLifecycleContext, ChatInputDuringExecutionMode, ManualSelectionConfig, SystemPromptContext } from './config';
|
|
3
|
+
/**
|
|
4
|
+
* Context passed to per-turn resolvers on a stateful agent — the standard
|
|
5
|
+
* {@link SystemPromptContext} plus the live `state` value. Used by
|
|
6
|
+
* `systemPrompt`, `displayName`, and the function form of `toolDefinitions`.
|
|
7
|
+
*
|
|
8
|
+
* Exported so consumers can lift resolvers into separate files without
|
|
9
|
+
* re-deriving the shape.
|
|
10
|
+
*
|
|
11
|
+
* @beta
|
|
12
|
+
*/
|
|
13
|
+
export type StatefulAgentContext<S> = SystemPromptContext & {
|
|
14
|
+
state: S;
|
|
15
|
+
};
|
|
3
16
|
/**
|
|
4
17
|
* Init options for {@link defineStatefulAgent}. Generic over the state shape `S`
|
|
5
18
|
* the agent owns (a state machine, an observable controller, anything).
|
|
@@ -47,9 +60,14 @@ export interface StatefulAgentInit<S> {
|
|
|
47
60
|
* iteration. Use this to feed the LLM whatever the current state implies
|
|
48
61
|
* (e.g. a state machine's `meta.systemPrompt` plus captured context).
|
|
49
62
|
*/
|
|
50
|
-
systemPrompt?: (ctx:
|
|
51
|
-
|
|
52
|
-
|
|
63
|
+
systemPrompt?: (ctx: StatefulAgentContext<S>) => string | Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Per-turn display label, e.g. "Guided Booking (Counterparties)". Resolved
|
|
66
|
+
* each tool-loop iteration and stamped onto outgoing messages and the
|
|
67
|
+
* debug-log timeline — display only. The agent's `name` stays as the
|
|
68
|
+
* canonical identity used for routing/history filtering.
|
|
69
|
+
*/
|
|
70
|
+
displayName?: (ctx: StatefulAgentContext<S>) => string | Promise<string>;
|
|
53
71
|
/**
|
|
54
72
|
* Tool definitions the LLM sees. Either a static array (resolved once) or a
|
|
55
73
|
* function resolved each tool-loop iteration. The function form is how a
|
|
@@ -61,20 +79,26 @@ export interface StatefulAgentInit<S> {
|
|
|
61
79
|
* has to be in charge. Helper throws at init time if a fold-tagged handler
|
|
62
80
|
* is detected.
|
|
63
81
|
*/
|
|
64
|
-
toolDefinitions?: ChatToolDefinition[] | ((ctx:
|
|
65
|
-
state: S;
|
|
66
|
-
}) => ChatToolDefinition[] | Promise<ChatToolDefinition[]>);
|
|
82
|
+
toolDefinitions?: ChatToolDefinition[] | ((ctx: StatefulAgentContext<S>) => ChatToolDefinition[] | Promise<ChatToolDefinition[]>);
|
|
67
83
|
/**
|
|
68
|
-
* Factory returning the
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
84
|
+
* Factory returning the handler map for the **current state**. Called each
|
|
85
|
+
* tool-loop iteration with the live `state` value, so the handler set the
|
|
86
|
+
* driver dispatches against matches what `toolDefinitions` exposes to the
|
|
87
|
+
* LLM that turn. Return only the handlers valid right now — no need to
|
|
88
|
+
* advertise every handler the agent might ever expose, and no defensive
|
|
89
|
+
* `if (!machine.matches(...))` guards inside each handler.
|
|
90
|
+
*
|
|
91
|
+
* Pair with the function form of `toolDefinitions` so the visible tools and
|
|
92
|
+
* the dispatchable handlers stay in lockstep.
|
|
72
93
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
94
|
+
* **Constraint:** resolved handlers must not include fold facades. Folds and
|
|
95
|
+
* state-machine-driven tool filtering both try to control the LLM's tool
|
|
96
|
+
* view — pick one. Helper samples once on activation (init state) and
|
|
97
|
+
* throws if a fold-tagged handler is detected; subsequent resolves also
|
|
98
|
+
* validate, so misuse on a non-init state surfaces when that state is
|
|
99
|
+
* reached.
|
|
76
100
|
*/
|
|
77
|
-
toolHandlers?: (state: S) => ChatToolHandlers
|
|
101
|
+
toolHandlers?: (state: S) => ChatToolHandlers | Promise<ChatToolHandlers>;
|
|
78
102
|
/**
|
|
79
103
|
* Optional getter for the debug-log snapshot. Defaults to auto-snapshotting
|
|
80
104
|
* 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,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEpG,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"define-stateful-agent.d.ts","sourceRoot":"","sources":["../../../src/config/define-stateful-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEpG,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EAIpB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,mBAAmB,GAAG;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEzE;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,2GAA2G;IAC3G,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B,gFAAgF;IAChF,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,oDAAoD;IACpD,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IAExD;;;OAGG;IACH,IAAI,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAErD;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,GAAG;QAAE,KAAK,EAAE,CAAC,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1E;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzE;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EACZ,kBAAkB,EAAE,GACpB,CAAC,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAE7F;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE1E;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CAC1C;AAsCD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAoH9E"}
|
package/dist/dts/main/main.d.ts
CHANGED
|
@@ -282,7 +282,7 @@ export declare class FoundationAiAssistant extends GenesisElement {
|
|
|
282
282
|
timestamp: string;
|
|
283
283
|
host: string;
|
|
284
284
|
agentSummary: ({
|
|
285
|
-
toolDefinitions: string | import("
|
|
285
|
+
toolDefinitions: string | import("@genesislcap/foundation-ai").ChatToolDefinition[];
|
|
286
286
|
toolHandlers: any;
|
|
287
287
|
onActivate: any;
|
|
288
288
|
onDeactivate: any;
|
|
@@ -291,13 +291,14 @@ export declare class FoundationAiAssistant extends GenesisElement {
|
|
|
291
291
|
fallback?: never;
|
|
292
292
|
excludeFromClassifier?: boolean;
|
|
293
293
|
name: string;
|
|
294
|
+
displayName?: import("../config/config").SystemPromptInput;
|
|
294
295
|
systemPrompt?: import("../config/config").SystemPromptInput;
|
|
295
296
|
primerHistory?: ChatMessage[];
|
|
296
297
|
subAgents?: AgentConfig[];
|
|
297
298
|
chatInputDuringExecution?: ChatInputDuringExecutionMode;
|
|
298
299
|
manualSelection?: import("../config/config").ManualSelectionConfig;
|
|
299
300
|
} | {
|
|
300
|
-
toolDefinitions: string | import("
|
|
301
|
+
toolDefinitions: string | import("@genesislcap/foundation-ai").ChatToolDefinition[];
|
|
301
302
|
toolHandlers: any;
|
|
302
303
|
onActivate: any;
|
|
303
304
|
onDeactivate: any;
|
|
@@ -305,6 +306,7 @@ export declare class FoundationAiAssistant extends GenesisElement {
|
|
|
305
306
|
fallback: true;
|
|
306
307
|
description?: never;
|
|
307
308
|
name: string;
|
|
309
|
+
displayName?: import("../config/config").SystemPromptInput;
|
|
308
310
|
systemPrompt?: import("../config/config").SystemPromptInput;
|
|
309
311
|
primerHistory?: ChatMessage[];
|
|
310
312
|
subAgents?: AgentConfig[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,4BAA4B,EAC5B,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGL,cAAc,EAIf,MAAM,uBAAuB,CAAC;AAW/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgBpD,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAqEtB;;;;;;;;;;;;;GAaG;AACH,qBAOa,qBAAsB,SAAQ,cAAc;IAC3C,UAAU,EAAG,UAAU,CAAC;IAExB,kBAAkB,EAAE,MAAM,CAAW;IACZ,WAAW,EAAE,MAAM,CAAuB;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5C,WAAW,EAAE,MAAM,CAA0B;IACrD;;;;;OAKG;IACiC,UAAU,CAAC,EAAE,UAAU,CAAC;IAC5D;;;OAGG;IACS,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,UAAU,CAAM;IAExC;;;OAGG;IACH,IAAI,WAAW,IAAI,eAAe,CAEjC;IACW,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9C,0EAA0E;IACrB,UAAU,UAAS;IAIxE,OAAO,CAAC,WAAW,CAAC,CAAqB;IAEzC,IAAI,QAAQ,IAAI,WAAW,EAAE,CAE5B;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,EAGhC;IAED,IAAI,KAAK,IAAI,gBAAgB,CAE5B;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAUhC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAQ/B,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,SAAS,CAE/D;IACD,IAAI,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,EAM7C;IAED,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IACD,IAAI,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAE3C;IAED,iEAAiE;IACjE,IAAI,aAAa,IAAI,OAAO,CAE3B;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAE/B;IAED,qEAAqE;IACrE,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IACD,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAEnC;IAED,8EAA8E;IAC9E,IAAI,wBAAwB,IAAI,OAAO,CAEtC;IACD,IAAI,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAE1C;IAED,oCAAoC;IACpC,IAAI,iBAAiB,IAAI,oBAAoB,EAAE,CAE9C;IACD,IAAI,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAElD;IAED;;;OAGG;IACH,IAAI,eAAe,IAAI,OAAO,CAE7B;IACD,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAEjC;IAED;;;;OAIG;IACH,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAEnC;IACD,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAYvC;IAED,IAAI,iBAAiB,IAAI,WAAW,EAAE,CAErC;IACD,IAAI,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,EAEzC;IAED,IAAI,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEpC;IACD,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAExC;IAED;;;OAGG;IACH,IAAI,cAAc,0DAEjB;IAED;;;;;OAKG;IACH,IACI,iCAAiC,IAAI,4BAA4B,CAKpE;IAED,yEAAyE;IACzE,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAE1C;IAED,0DAA0D;IAC1D,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAErC;IACD,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEzC;IAID,OAAO,CAAC,sBAAsB,CAAK;IAEnC,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IACW,WAAW,EAAE,cAAc,EAAE,CAAM;IACnC,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAC5C,+FAA+F;IACnF,oBAAoB,UAAS;IACzC,0CAA0C;IAC9B,YAAY,UAAS;IACjC,6IAA6I;IACjI,aAAa,UAAS;IAElC,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,kBAAkB,CAAS;IACnC,yHAAyH;IACzH,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,mHAAmH;IACnH,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,oEAAoE;IACpE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;OAKG;IACS,SAAS,EAAE,OAAO,CAAQ;IACtC,OAAO,CAAC,wBAAwB,CAI9B;IACF,mGAAmG;IACnG,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAM;IACxD;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB,CAAC,CAAa;IAEnC,QAAQ,EAAE,IAAI,GAAG,eAAe,GAAG,OAAO,CAAQ;IAE9D,OAAO,CAAC,YAAY;IAapB,0FAA0F;IAC1F,IAAI,2BAA2B,IAAI,OAAO,CAIzC;IAED,eAAe;IAWf,OAAO,CAAC,kBAAkB;IAU1B;;;;;;;;;;OAUG;IACH,IACI,eAAe,IAAI,WAAW,EAAE,CA0BnC;IAED,aAAa,IAAI,IAAI;IAgCrB,mGAAmG;IACnG,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,14 @@ export class ChatDriver extends EventTarget {
|
|
|
58
58
|
this.turnSnapshots = [];
|
|
59
59
|
/** Monotonic counter that survives agent swaps — useful for cross-referencing with history. */
|
|
60
60
|
this.globalTurnIndex = 0;
|
|
61
|
-
|
|
61
|
+
if (typeof toolHandlers === 'function') {
|
|
62
|
+
this.toolHandlersFactory = toolHandlers;
|
|
63
|
+
this.toolHandlers = {};
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.toolHandlersFactory = undefined;
|
|
67
|
+
this.toolHandlers = toolHandlers;
|
|
68
|
+
}
|
|
62
69
|
if (typeof toolDefinitions === 'function') {
|
|
63
70
|
this.toolDefinitionsFactory = toolDefinitions;
|
|
64
71
|
this.toolDefinitions = [];
|
|
@@ -89,9 +96,24 @@ export class ChatDriver extends EventTarget {
|
|
|
89
96
|
this.toolDefinitionsFactory = undefined;
|
|
90
97
|
this.toolDefinitions = (_a = config.toolDefinitions) !== null && _a !== void 0 ? _a : [];
|
|
91
98
|
}
|
|
92
|
-
|
|
99
|
+
if (typeof config.toolHandlers === 'function') {
|
|
100
|
+
this.toolHandlersFactory = config.toolHandlers;
|
|
101
|
+
// Cleared each turn by the factory in runToolLoop; empty is safe in the
|
|
102
|
+
// meantime (no LLM call happens before resolution).
|
|
103
|
+
this.toolHandlers = {};
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this.toolHandlersFactory = undefined;
|
|
107
|
+
this.toolHandlers = (_b = config.toolHandlers) !== null && _b !== void 0 ? _b : {};
|
|
108
|
+
}
|
|
93
109
|
this.primerHistory = config.primerHistory;
|
|
94
110
|
this.activeAgentName = config.name;
|
|
111
|
+
this.displayName = config.displayName;
|
|
112
|
+
// Static string form resolves to a stable label up-front; the function
|
|
113
|
+
// form gets re-resolved each tool-loop iteration. Falls back to the
|
|
114
|
+
// canonical name when displayName is unset.
|
|
115
|
+
this.activeAgentLabel =
|
|
116
|
+
typeof config.displayName === 'string' ? config.displayName : config.name;
|
|
95
117
|
this.debugSnapshotter = config.getDebugSnapshot;
|
|
96
118
|
this.subAgentsMap = new Map(((_c = config.subAgents) !== null && _c !== void 0 ? _c : []).map((s) => [s.name, s]));
|
|
97
119
|
// Reset fold state when agent changes — each specialist starts fresh
|
|
@@ -146,6 +168,7 @@ export class ChatDriver extends EventTarget {
|
|
|
146
168
|
turnIndex,
|
|
147
169
|
timestamp: new Date().toISOString(),
|
|
148
170
|
agentName: this.activeAgentName,
|
|
171
|
+
agentLabel: this.activeAgentLabel,
|
|
149
172
|
systemPrompt: resolvedSystemPrompt,
|
|
150
173
|
toolNames: this.toolDefinitions.map((t) => t.name),
|
|
151
174
|
agentSnapshot,
|
|
@@ -624,6 +647,7 @@ export class ChatDriver extends EventTarget {
|
|
|
624
647
|
// ---------------------------------------------------------------------------
|
|
625
648
|
// Tool loop
|
|
626
649
|
// ---------------------------------------------------------------------------
|
|
650
|
+
// eslint-disable-next-line complexity
|
|
627
651
|
runToolLoop(userInput, attachments, transientPrimer) {
|
|
628
652
|
return __awaiter(this, void 0, void 0, function* () {
|
|
629
653
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
@@ -658,10 +682,26 @@ export class ChatDriver extends EventTarget {
|
|
|
658
682
|
// eslint-disable-next-line no-await-in-loop
|
|
659
683
|
this.toolDefinitions = yield this.toolDefinitionsFactory(promptCtx);
|
|
660
684
|
}
|
|
685
|
+
// Same story for the handler-map factory: re-resolve so dispatch sees
|
|
686
|
+
// only the handlers valid for the current state, in lockstep with the
|
|
687
|
+
// tool definitions exposed above. Folds are forbidden when this is set,
|
|
688
|
+
// so the fold-mutation paths on `this.toolHandlers` are unreachable.
|
|
689
|
+
if (this.toolHandlersFactory) {
|
|
690
|
+
// eslint-disable-next-line no-await-in-loop
|
|
691
|
+
this.toolHandlers = yield this.toolHandlersFactory(promptCtx);
|
|
692
|
+
}
|
|
661
693
|
const resolvedSystemPrompt = typeof this.systemPrompt === 'function'
|
|
662
694
|
? // eslint-disable-next-line no-await-in-loop
|
|
663
695
|
yield this.systemPrompt(promptCtx)
|
|
664
696
|
: this.systemPrompt;
|
|
697
|
+
// Re-resolve the per-turn display label. Falls back to the canonical
|
|
698
|
+
// agent name when displayName is unset. Stamped onto outgoing messages
|
|
699
|
+
// and turn snapshots for UX only; routing/history-transform continues
|
|
700
|
+
// to read `activeAgentName`.
|
|
701
|
+
if (typeof this.displayName === 'function') {
|
|
702
|
+
// eslint-disable-next-line no-await-in-loop
|
|
703
|
+
this.activeAgentLabel = yield this.displayName(promptCtx);
|
|
704
|
+
}
|
|
665
705
|
const foldSuffix = this.buildFoldSystemPromptSuffix();
|
|
666
706
|
const baseSystemPrompt = resolvedSystemPrompt
|
|
667
707
|
? `${resolvedSystemPrompt}${foldSuffix}`
|
|
@@ -926,7 +966,9 @@ export class ChatDriver extends EventTarget {
|
|
|
926
966
|
}
|
|
927
967
|
appendToHistory(message) {
|
|
928
968
|
const tagged = this.activeAgentName
|
|
929
|
-
? Object.assign(Object.assign({}, message), { agentName: this.activeAgentName
|
|
969
|
+
? Object.assign(Object.assign({}, message), { agentName: this.activeAgentName,
|
|
970
|
+
// Display-only — falls back to agentName in renderers when unset.
|
|
971
|
+
agentLabel: this.activeAgentLabel }) : message;
|
|
930
972
|
this.history = [...this.history, tagged];
|
|
931
973
|
this.dispatchEvent(new CustomEvent('history-updated', {
|
|
932
974
|
detail: this.history,
|
|
@@ -59,7 +59,6 @@ function defaultStatefulDebugSnapshot(state) {
|
|
|
59
59
|
*/
|
|
60
60
|
export function defineStatefulAgent(opts) {
|
|
61
61
|
let state;
|
|
62
|
-
let cachedHandlers;
|
|
63
62
|
const assertNoFolds = (handlers) => {
|
|
64
63
|
for (const [name, handler] of Object.entries(handlers)) {
|
|
65
64
|
if (handler[TOOL_FOLD_SYMBOL]) {
|
|
@@ -85,59 +84,48 @@ export function defineStatefulAgent(opts) {
|
|
|
85
84
|
}
|
|
86
85
|
return td;
|
|
87
86
|
})();
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// Dynamic-tools case: we discover names from a sample of `toolHandlers(state)`
|
|
111
|
-
// taken inside onActivate. Until then, the handler dict is empty — fine
|
|
112
|
-
// because no tool call can happen before activation completes.
|
|
113
|
-
const staticHandlerProxy = Array.isArray(opts.toolDefinitions) && opts.toolHandlers
|
|
114
|
-
? buildHandlerProxy(opts.toolDefinitions.map((d) => d.name))
|
|
87
|
+
// Wrap the handler factory into the ctx-shaped form the driver expects, and
|
|
88
|
+
// validate folds on each resolve. The driver re-resolves this per tool-loop
|
|
89
|
+
// iteration, so the handler set the driver dispatches against always
|
|
90
|
+
// matches the LLM-visible tools for the current state — handlers don't need
|
|
91
|
+
// defensive `if (!machine.matches(...))` guards.
|
|
92
|
+
const wrappedHandlers = opts.toolHandlers
|
|
93
|
+
? () => __awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
if (!state) {
|
|
95
|
+
throw new Error(`Stateful agent "${opts.name}" handlers called before init`);
|
|
96
|
+
}
|
|
97
|
+
const handlers = yield opts.toolHandlers(state);
|
|
98
|
+
assertNoFolds(handlers);
|
|
99
|
+
return handlers;
|
|
100
|
+
})
|
|
101
|
+
: undefined;
|
|
102
|
+
const wrappedDisplayName = opts.displayName
|
|
103
|
+
? (ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
if (!state) {
|
|
105
|
+
throw new Error(`Stateful agent "${opts.name}" displayName called before init`);
|
|
106
|
+
}
|
|
107
|
+
return opts.displayName(Object.assign(Object.assign({}, ctx), { state }));
|
|
108
|
+
})
|
|
115
109
|
: undefined;
|
|
116
|
-
// For the dynamic case we patch this object in place on activation. The
|
|
117
|
-
// driver reads `toolHandlers` by reference, so mutating in place is enough.
|
|
118
|
-
const resolvedHandlers = staticHandlerProxy !== null && staticHandlerProxy !== void 0 ? staticHandlerProxy : {};
|
|
119
110
|
const base = {
|
|
120
111
|
name: opts.name,
|
|
112
|
+
displayName: wrappedDisplayName,
|
|
121
113
|
primerHistory: opts.primerHistory,
|
|
122
114
|
subAgents: opts.subAgents,
|
|
123
115
|
manualSelection: opts.manualSelection,
|
|
124
116
|
chatInputDuringExecution: opts.chatInputDuringExecution,
|
|
125
117
|
toolDefinitions: wrappedTools,
|
|
126
|
-
toolHandlers:
|
|
118
|
+
toolHandlers: wrappedHandlers,
|
|
127
119
|
onActivate: (ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
var _a, _b;
|
|
129
120
|
state = yield opts.init(ctx);
|
|
130
|
-
// Sample
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
for (const key of Object.keys(resolvedHandlers))
|
|
139
|
-
delete resolvedHandlers[key];
|
|
140
|
-
Object.assign(resolvedHandlers, dynamicProxy);
|
|
121
|
+
// Sample once with the init state to fail loud on fold misuse at the
|
|
122
|
+
// agent-switch boundary instead of waiting for the first tool call.
|
|
123
|
+
// The driver re-resolves the factory each iteration, so misuse on
|
|
124
|
+
// handlers gated behind a non-init state surfaces when that state is
|
|
125
|
+
// reached — same loud failure mode, narrower coverage.
|
|
126
|
+
if (opts.toolHandlers) {
|
|
127
|
+
const sampled = yield opts.toolHandlers(state);
|
|
128
|
+
assertNoFolds(sampled);
|
|
141
129
|
}
|
|
142
130
|
}),
|
|
143
131
|
onDeactivate: (ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -148,7 +136,6 @@ export function defineStatefulAgent(opts) {
|
|
|
148
136
|
// cannot interleave the read-then-write of `state`.
|
|
149
137
|
// eslint-disable-next-line require-atomic-updates
|
|
150
138
|
state = undefined;
|
|
151
|
-
cachedHandlers = undefined;
|
|
152
139
|
}),
|
|
153
140
|
systemPrompt: opts.systemPrompt
|
|
154
141
|
? (ctx) => __awaiter(this, void 0, void 0, function* () {
|
package/dist/esm/main/main.js
CHANGED
|
@@ -472,9 +472,15 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
472
472
|
return agents
|
|
473
473
|
.map((a) => {
|
|
474
474
|
var _a;
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
475
|
+
// Function-form handlers are resolved per turn — their full key set
|
|
476
|
+
// isn't knowable at fingerprint time. A constant marker still
|
|
477
|
+
// distinguishes static-vs-dynamic shape changes; finer-grained
|
|
478
|
+
// detection isn't load-bearing here.
|
|
479
|
+
const toolNames = typeof a.toolHandlers === 'function'
|
|
480
|
+
? '<fn>'
|
|
481
|
+
: Object.keys((_a = a.toolHandlers) !== null && _a !== void 0 ? _a : {})
|
|
482
|
+
.sort()
|
|
483
|
+
.join('+');
|
|
478
484
|
return `${a.name}[${toolNames}]`;
|
|
479
485
|
})
|
|
480
486
|
.join(',');
|
|
@@ -1048,7 +1054,11 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
1048
1054
|
agentSummary: (_f = this.agents) === null || _f === void 0 ? void 0 : _f.map((a) => {
|
|
1049
1055
|
var _a;
|
|
1050
1056
|
return (Object.assign(Object.assign({}, a), { toolDefinitions: Array.isArray(a.toolDefinitions)
|
|
1051
|
-
?
|
|
1057
|
+
? typeof a.toolHandlers === 'function'
|
|
1058
|
+
? // Static defs + dynamic handlers — can't walk fold tree
|
|
1059
|
+
// because the handler map isn't materialized at log time.
|
|
1060
|
+
a.toolDefinitions
|
|
1061
|
+
: expandToolTree(a.toolDefinitions, (_a = a.toolHandlers) !== null && _a !== void 0 ? _a : {})
|
|
1052
1062
|
: typeof a.toolDefinitions === 'function'
|
|
1053
1063
|
? '<dynamic — resolved per turn>'
|
|
1054
1064
|
: [], toolHandlers: undefined, onActivate: undefined, onDeactivate: undefined, getDebugSnapshot: undefined }));
|
|
@@ -163,11 +163,14 @@ ${(tc) => { var _a; return (((_a = tc.foldPath) === null || _a === void 0 ? void
|
|
|
163
163
|
`)}
|
|
164
164
|
<div class="message ${(m) => messageType(m)}">
|
|
165
165
|
<div class="sender">
|
|
166
|
-
${(m, c) =>
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
166
|
+
${(m, c) => {
|
|
167
|
+
var _a;
|
|
168
|
+
return messageType(m) === 'ai-function' &&
|
|
169
|
+
m.agentName &&
|
|
170
|
+
c.parent.showAgentSwitchIndicator
|
|
171
|
+
? `Tool Call · ${(_a = m.agentLabel) !== null && _a !== void 0 ? _a : m.agentName}`
|
|
172
|
+
: senderLabel[messageType(m)];
|
|
173
|
+
}}
|
|
171
174
|
</div>
|
|
172
175
|
<div class="content">
|
|
173
176
|
${when((m) => m.content, html `
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/ai-assistant",
|
|
3
3
|
"description": "Genesis AI Assistant micro-frontend",
|
|
4
|
-
"version": "14.437.
|
|
4
|
+
"version": "14.437.1",
|
|
5
5
|
"license": "SEE LICENSE IN license.txt",
|
|
6
6
|
"main": "dist/esm/index.js",
|
|
7
7
|
"types": "dist/ai-assistant.d.ts",
|
|
@@ -64,24 +64,24 @@
|
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@genesislcap/foundation-testing": "14.437.
|
|
68
|
-
"@genesislcap/genx": "14.437.
|
|
69
|
-
"@genesislcap/rollup-builder": "14.437.
|
|
70
|
-
"@genesislcap/ts-builder": "14.437.
|
|
71
|
-
"@genesislcap/uvu-playwright-builder": "14.437.
|
|
72
|
-
"@genesislcap/vite-builder": "14.437.
|
|
73
|
-
"@genesislcap/webpack-builder": "14.437.
|
|
67
|
+
"@genesislcap/foundation-testing": "14.437.1",
|
|
68
|
+
"@genesislcap/genx": "14.437.1",
|
|
69
|
+
"@genesislcap/rollup-builder": "14.437.1",
|
|
70
|
+
"@genesislcap/ts-builder": "14.437.1",
|
|
71
|
+
"@genesislcap/uvu-playwright-builder": "14.437.1",
|
|
72
|
+
"@genesislcap/vite-builder": "14.437.1",
|
|
73
|
+
"@genesislcap/webpack-builder": "14.437.1",
|
|
74
74
|
"@types/dompurify": "^3.0.5",
|
|
75
75
|
"@types/marked": "^5.0.2"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@genesislcap/foundation-ai": "14.437.
|
|
79
|
-
"@genesislcap/foundation-logger": "14.437.
|
|
80
|
-
"@genesislcap/foundation-redux": "14.437.
|
|
81
|
-
"@genesislcap/foundation-ui": "14.437.
|
|
82
|
-
"@genesislcap/foundation-utils": "14.437.
|
|
83
|
-
"@genesislcap/rapid-design-system": "14.437.
|
|
84
|
-
"@genesislcap/web-core": "14.437.
|
|
78
|
+
"@genesislcap/foundation-ai": "14.437.1",
|
|
79
|
+
"@genesislcap/foundation-logger": "14.437.1",
|
|
80
|
+
"@genesislcap/foundation-redux": "14.437.1",
|
|
81
|
+
"@genesislcap/foundation-ui": "14.437.1",
|
|
82
|
+
"@genesislcap/foundation-utils": "14.437.1",
|
|
83
|
+
"@genesislcap/rapid-design-system": "14.437.1",
|
|
84
|
+
"@genesislcap/web-core": "14.437.1",
|
|
85
85
|
"dompurify": "^3.3.1",
|
|
86
86
|
"marked": "^17.0.3"
|
|
87
87
|
},
|
|
@@ -93,5 +93,5 @@
|
|
|
93
93
|
"publishConfig": {
|
|
94
94
|
"access": "public"
|
|
95
95
|
},
|
|
96
|
-
"gitHead": "
|
|
96
|
+
"gitHead": "121e8dd85e298464b0781220db72ad5190c3fb5f"
|
|
97
97
|
}
|