@genesislcap/ai-assistant 14.451.5-alpha-ec85af7.0 → 14.452.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.
@@ -2986,6 +2986,46 @@
2986
2986
  "isAbstract": false,
2987
2987
  "name": "getSubAgentCompletion"
2988
2988
  },
2989
+ {
2990
+ "kind": "Method",
2991
+ "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#getSubAgentFailure:member(1)",
2992
+ "docComment": "/**\n * Returns the typed failure recorded when a sub-agent run ended without `completeSubAgent`, if any. Called by a parent `ChatDriver` after running this instance as a sub-agent.\n */\n",
2993
+ "excerptTokens": [
2994
+ {
2995
+ "kind": "Content",
2996
+ "text": "getSubAgentFailure(): "
2997
+ },
2998
+ {
2999
+ "kind": "Content",
3000
+ "text": "{\n reason: "
3001
+ },
3002
+ {
3003
+ "kind": "Reference",
3004
+ "text": "SubAgentFailureReason",
3005
+ "canonicalReference": "@genesislcap/foundation-ai!SubAgentFailureReason:type"
3006
+ },
3007
+ {
3008
+ "kind": "Content",
3009
+ "text": ";\n } | undefined"
3010
+ },
3011
+ {
3012
+ "kind": "Content",
3013
+ "text": ";"
3014
+ }
3015
+ ],
3016
+ "isStatic": false,
3017
+ "returnTypeTokenRange": {
3018
+ "startIndex": 1,
3019
+ "endIndex": 4
3020
+ },
3021
+ "releaseTag": "Beta",
3022
+ "isProtected": false,
3023
+ "overloadIndex": 1,
3024
+ "parameters": [],
3025
+ "isOptional": false,
3026
+ "isAbstract": false,
3027
+ "name": "getSubAgentFailure"
3028
+ },
2989
3029
  {
2990
3030
  "kind": "Method",
2991
3031
  "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#getSuggestions:member(1)",
@@ -3226,6 +3266,37 @@
3226
3266
  "isAbstract": false,
3227
3267
  "name": "loadHistory"
3228
3268
  },
3269
+ {
3270
+ "kind": "Method",
3271
+ "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#markAsSubAgent:member(1)",
3272
+ "docComment": "/**\n * Mark this driver as running as a sub-agent. Called by a parent driver's `invokeSubAgent` immediately after construction, before the first turn. Enables forced tool use and typed failure reporting (see `isSubAgent`).\n */\n",
3273
+ "excerptTokens": [
3274
+ {
3275
+ "kind": "Content",
3276
+ "text": "markAsSubAgent(): "
3277
+ },
3278
+ {
3279
+ "kind": "Content",
3280
+ "text": "void"
3281
+ },
3282
+ {
3283
+ "kind": "Content",
3284
+ "text": ";"
3285
+ }
3286
+ ],
3287
+ "isStatic": false,
3288
+ "returnTypeTokenRange": {
3289
+ "startIndex": 1,
3290
+ "endIndex": 2
3291
+ },
3292
+ "releaseTag": "Beta",
3293
+ "isProtected": false,
3294
+ "overloadIndex": 1,
3295
+ "parameters": [],
3296
+ "isOptional": false,
3297
+ "isAbstract": false,
3298
+ "name": "markAsSubAgent"
3299
+ },
3229
3300
  {
3230
3301
  "kind": "Method",
3231
3302
  "canonicalReference": "@genesislcap/ai-assistant!ChatDriver#requestInteraction:member(1)",
@@ -4955,7 +5026,7 @@
4955
5026
  },
4956
5027
  {
4957
5028
  "kind": "Content",
4958
- "text": "{\n readme: readonly string[];\n timeline: ({\n systemPrompt: string;\n turnIndex: number;\n timestamp: string;\n agentName?: string;\n toolNames: string[];\n agentLabel?: string;\n agentSnapshot?: unknown;\n kind: \"turn\";\n } | {\n role: import(\"@genesislcap/foundation-ai\")."
5029
+ "text": "{\n readme: readonly string[];\n timeline: ({\n systemPrompt: string;\n turnIndex: string;\n timestamp: string;\n agentName?: string;\n toolNames: string[];\n agentLabel?: string;\n agentSnapshot?: unknown;\n kind: \"turn\";\n } | {\n role: import(\"@genesislcap/foundation-ai\")."
4959
5030
  },
4960
5031
  {
4961
5032
  "kind": "Reference",
@@ -9800,7 +9871,7 @@
9800
9871
  {
9801
9872
  "kind": "PropertySignature",
9802
9873
  "canonicalReference": "@genesislcap/ai-assistant!TurnSnapshot#turnIndex:member",
9803
- "docComment": "/**\n * Monotonic counter across the driver's lifetime (does not reset on agent swap).\n */\n",
9874
+ "docComment": "/**\n * Turn identifier, always a string. A driver's own turns are the bare counter (`\"0\"`, `\"1\"`, … — monotonic, does not reset on agent swap). Turns forwarded up from a sub-agent are re-labelled under the parent turn that activated them — a sub-agent invoked on parent turn 5 contributes `\"5-1\"`, `\"5-2\"`, …, and a nested sub-agent on `\"5-2\"` contributes `\"5-2-1\"`, …. See `forwardSubAgentSnapshots`.\n */\n",
9804
9875
  "excerptTokens": [
9805
9876
  {
9806
9877
  "kind": "Content",
@@ -9808,7 +9879,7 @@
9808
9879
  },
9809
9880
  {
9810
9881
  "kind": "Content",
9811
- "text": "number"
9882
+ "text": "string"
9812
9883
  },
9813
9884
  {
9814
9885
  "kind": "Content",
@@ -15,6 +15,7 @@ import { ChatToolResult } from '@genesislcap/foundation-ai';
15
15
  import { GenesisElement } from '@genesislcap/web-core';
16
16
  import type { InteractionRequestOptions } from '@genesislcap/foundation-ai';
17
17
  import type { InteractionResult } from '@genesislcap/foundation-ai';
18
+ import type { SubAgentFailureReason } from '@genesislcap/foundation-ai';
18
19
  import { ViewTemplate } from '@genesislcap/web-core';
19
20
 
20
21
  /** Sentinel value used by the segmented control / select to represent "Auto". */
@@ -656,6 +657,20 @@ export declare class ChatDriver extends EventTarget implements AiDriver {
656
657
  * `undefined` means the loop has not been stopped early.
657
658
  */
658
659
  private subAgentCompletion;
660
+ /**
661
+ * True when this driver runs as a child sub-agent (created by a parent
662
+ * driver's `invokeSubAgent`). Sub-agents force tool use every turn so a turn
663
+ * can only end via their completion tool, and on any non-completion exit they
664
+ * record a typed `SubAgentFailureReason` instead of appending a
665
+ * user-facing message — the parent decides how to surface the failure.
666
+ */
667
+ private isSubAgent;
668
+ /**
669
+ * Set when a sub-agent's tool loop ends without `completeSubAgent` being
670
+ * called. Read by the parent's `invokeSubAgent` to build the `{ ok: false }`
671
+ * branch of `requestSubAgent`. Only ever set when `isSubAgent` is true.
672
+ */
673
+ private subAgentFailure;
659
674
  /**
660
675
  * Set by `releaseAgent` inside a top-level tool handler — typically a stateful
661
676
  * agent's terminal-state handler signalling that its flow is complete and the
@@ -726,6 +741,29 @@ export declare class ChatDriver extends EventTarget implements AiDriver {
726
741
  getSubAgentCompletion(): {
727
742
  result: unknown;
728
743
  } | undefined;
744
+ /**
745
+ * Mark this driver as running as a sub-agent. Called by a parent driver's
746
+ * `invokeSubAgent` immediately after construction, before the first turn.
747
+ * Enables forced tool use and typed failure reporting (see `isSubAgent`).
748
+ */
749
+ markAsSubAgent(): void;
750
+ /**
751
+ * Returns the typed failure recorded when a sub-agent run ended without
752
+ * `completeSubAgent`, if any. Called by a parent `ChatDriver` after running
753
+ * this instance as a sub-agent.
754
+ */
755
+ getSubAgentFailure(): {
756
+ reason: SubAgentFailureReason;
757
+ } | undefined;
758
+ /**
759
+ * Record a sub-agent failure reason (first one wins). No-op for top-level
760
+ * agents, so loop-exit sites can call it unconditionally. The parent reads
761
+ * this via `getSubAgentFailure()` and emits the `subagent.failed` meta event
762
+ * under its *own* session — see `invokeSubAgent`. (A child sub-agent runs
763
+ * under a separate session key, so recording here would orphan the event off
764
+ * the user-visible debug-log timeline.)
765
+ */
766
+ private failSubAgent;
729
767
  /**
730
768
  * Returns true if `releaseAgent` was called during the most recent turn.
731
769
  * Consumed by the orchestrator to trigger the auto-pin release path.
@@ -739,6 +777,19 @@ export declare class ChatDriver extends EventTarget implements AiDriver {
739
777
  * Ring-buffered at `MAX_TURN_SNAPSHOTS`; older entries are dropped.
740
778
  */
741
779
  getTurnSnapshots(): ReadonlyArray<TurnSnapshot>;
780
+ /**
781
+ * Merge a sub-agent's turn snapshots into this driver's buffer so they surface
782
+ * as `kind:'turn'` entries in the exported debug log. The child runs as a
783
+ * separate, discarded driver, so its snapshots would otherwise be lost. Each is
784
+ * re-labelled under the parent turn that activated the sub-agent: the child's
785
+ * own (numeric) turns become `"<parentTurn>-1"`, `"-2"`, … (1-based, in order);
786
+ * any already-forwarded grand-child labels (strings) have their leading segment
787
+ * remapped the same way, so nesting composes (`"5-2"` → `"5-2-1"`).
788
+ *
789
+ * Note: two sub-agents invoked in the *same* parent turn share the prefix, so
790
+ * their labels can repeat — `agentName` on each snapshot disambiguates them.
791
+ */
792
+ private forwardSubAgentSnapshots;
742
793
  /**
743
794
  * Push one snapshot to the ring buffer. Called inside `runToolLoop` just
744
795
  * before each LLM call — that's the latest point where the prompt, tool
@@ -1346,7 +1397,7 @@ export declare class FoundationAiAssistant extends GenesisElement {
1346
1397
  readme: readonly string[];
1347
1398
  timeline: ({
1348
1399
  systemPrompt: string;
1349
- turnIndex: number;
1400
+ turnIndex: string;
1350
1401
  timestamp: string;
1351
1402
  agentName?: string;
1352
1403
  toolNames: string[];
@@ -1605,7 +1656,7 @@ declare type MetaEventImportance = 'high' | 'normal' | 'low';
1605
1656
  * Catalogue of meta event names. This is the documented surface — extend it as
1606
1657
  * new events are wired in (Tier 2/3 lifecycle, interaction, provider events).
1607
1658
  */
1608
- declare type MetaEventType = 'assistant.connected' | 'assistant.disconnected' | 'assistant.popout' | 'assistant.popin' | 'driver.created' | 'driver.wired' | 'driver.unwired' | 'state.changed' | 'turn.start' | 'turn.end' | 'turn.retry' | 'turn.error' | 'tool.failed' | 'tool.unresolved' | 'agent.handoff' | 'agent.pinned' | 'agent.unpinned' | 'provider.selected' | 'interaction.requested' | 'interaction.resolved' | 'context.updated' | 'context.threshold-crossed' | 'panel.toggled' | 'attachment.added' | 'file.read-failed' | 'suggestions.failed';
1659
+ declare type MetaEventType = 'assistant.connected' | 'assistant.disconnected' | 'assistant.popout' | 'assistant.popin' | 'driver.created' | 'driver.wired' | 'driver.unwired' | 'state.changed' | 'turn.start' | 'turn.end' | 'turn.retry' | 'turn.error' | 'tool.failed' | 'tool.unresolved' | 'subagent.failed' | 'agent.handoff' | 'agent.pinned' | 'agent.unpinned' | 'provider.selected' | 'interaction.requested' | 'interaction.resolved' | 'context.updated' | 'context.threshold-crossed' | 'panel.toggled' | 'attachment.added' | 'file.read-failed' | 'suggestions.failed';
1609
1660
 
1610
1661
  /**
1611
1662
  * Orchestrates multiple specialist agents. Sits between `FoundationAiAssistant`
@@ -2051,8 +2102,15 @@ export declare interface ToolTreeNode extends ChatToolDefinition {
2051
2102
  * @beta
2052
2103
  */
2053
2104
  export declare interface TurnSnapshot {
2054
- /** Monotonic counter across the driver's lifetime (does not reset on agent swap). */
2055
- turnIndex: number;
2105
+ /**
2106
+ * Turn identifier, always a string. A driver's own turns are the bare counter
2107
+ * (`"0"`, `"1"`, … — monotonic, does not reset on agent swap). Turns forwarded
2108
+ * up from a sub-agent are re-labelled under the parent turn that activated them
2109
+ * — a sub-agent invoked on parent turn 5 contributes `"5-1"`, `"5-2"`, …, and a
2110
+ * nested sub-agent on `"5-2"` contributes `"5-2-1"`, …. See
2111
+ * `forwardSubAgentSnapshots`.
2112
+ */
2113
+ turnIndex: string;
2056
2114
  /** ISO timestamp captured just before the LLM call. */
2057
2115
  timestamp: string;
2058
2116
  /** Name of the agent active when this LLM call ran. */
@@ -1,4 +1,4 @@
1
- import type { AIProviderRegistry, ChatAttachment, ChatDriverResult, ChatMessage, InteractionRequestOptions } from '@genesislcap/foundation-ai';
1
+ import type { AIProviderRegistry, ChatAttachment, ChatDriverResult, ChatMessage, InteractionRequestOptions, SubAgentFailureReason } from '@genesislcap/foundation-ai';
2
2
  import type { AgentConfig, SystemPromptInput, ToolDefinitionsInput, ToolHandlersInput } from '../../config/config';
3
3
  import type { AiDriver, AllAgentSummary } from '../ai-driver/ai-driver';
4
4
  /** Name reserved for the cross-agent handoff tool — injected by OrchestratingDriver. */
@@ -20,8 +20,15 @@ export type ChatHistoryUpdatedEvent = CustomEvent<ReadonlyArray<ChatMessage>>;
20
20
  * @beta
21
21
  */
22
22
  export interface TurnSnapshot {
23
- /** Monotonic counter across the driver's lifetime (does not reset on agent swap). */
24
- turnIndex: number;
23
+ /**
24
+ * Turn identifier, always a string. A driver's own turns are the bare counter
25
+ * (`"0"`, `"1"`, … — monotonic, does not reset on agent swap). Turns forwarded
26
+ * up from a sub-agent are re-labelled under the parent turn that activated them
27
+ * — a sub-agent invoked on parent turn 5 contributes `"5-1"`, `"5-2"`, …, and a
28
+ * nested sub-agent on `"5-2"` contributes `"5-2-1"`, …. See
29
+ * `forwardSubAgentSnapshots`.
30
+ */
31
+ turnIndex: string;
25
32
  /** ISO timestamp captured just before the LLM call. */
26
33
  timestamp: string;
27
34
  /** Name of the agent active when this LLM call ran. */
@@ -147,6 +154,20 @@ export declare class ChatDriver extends EventTarget implements AiDriver {
147
154
  * `undefined` means the loop has not been stopped early.
148
155
  */
149
156
  private subAgentCompletion;
157
+ /**
158
+ * True when this driver runs as a child sub-agent (created by a parent
159
+ * driver's `invokeSubAgent`). Sub-agents force tool use every turn so a turn
160
+ * can only end via their completion tool, and on any non-completion exit they
161
+ * record a typed `SubAgentFailureReason` instead of appending a
162
+ * user-facing message — the parent decides how to surface the failure.
163
+ */
164
+ private isSubAgent;
165
+ /**
166
+ * Set when a sub-agent's tool loop ends without `completeSubAgent` being
167
+ * called. Read by the parent's `invokeSubAgent` to build the `{ ok: false }`
168
+ * branch of `requestSubAgent`. Only ever set when `isSubAgent` is true.
169
+ */
170
+ private subAgentFailure;
150
171
  /**
151
172
  * Set by `releaseAgent` inside a top-level tool handler — typically a stateful
152
173
  * agent's terminal-state handler signalling that its flow is complete and the
@@ -217,6 +238,29 @@ export declare class ChatDriver extends EventTarget implements AiDriver {
217
238
  getSubAgentCompletion(): {
218
239
  result: unknown;
219
240
  } | undefined;
241
+ /**
242
+ * Mark this driver as running as a sub-agent. Called by a parent driver's
243
+ * `invokeSubAgent` immediately after construction, before the first turn.
244
+ * Enables forced tool use and typed failure reporting (see `isSubAgent`).
245
+ */
246
+ markAsSubAgent(): void;
247
+ /**
248
+ * Returns the typed failure recorded when a sub-agent run ended without
249
+ * `completeSubAgent`, if any. Called by a parent `ChatDriver` after running
250
+ * this instance as a sub-agent.
251
+ */
252
+ getSubAgentFailure(): {
253
+ reason: SubAgentFailureReason;
254
+ } | undefined;
255
+ /**
256
+ * Record a sub-agent failure reason (first one wins). No-op for top-level
257
+ * agents, so loop-exit sites can call it unconditionally. The parent reads
258
+ * this via `getSubAgentFailure()` and emits the `subagent.failed` meta event
259
+ * under its *own* session — see `invokeSubAgent`. (A child sub-agent runs
260
+ * under a separate session key, so recording here would orphan the event off
261
+ * the user-visible debug-log timeline.)
262
+ */
263
+ private failSubAgent;
220
264
  /**
221
265
  * Returns true if `releaseAgent` was called during the most recent turn.
222
266
  * Consumed by the orchestrator to trigger the auto-pin release path.
@@ -230,6 +274,19 @@ export declare class ChatDriver extends EventTarget implements AiDriver {
230
274
  * Ring-buffered at `MAX_TURN_SNAPSHOTS`; older entries are dropped.
231
275
  */
232
276
  getTurnSnapshots(): ReadonlyArray<TurnSnapshot>;
277
+ /**
278
+ * Merge a sub-agent's turn snapshots into this driver's buffer so they surface
279
+ * as `kind:'turn'` entries in the exported debug log. The child runs as a
280
+ * separate, discarded driver, so its snapshots would otherwise be lost. Each is
281
+ * re-labelled under the parent turn that activated the sub-agent: the child's
282
+ * own (numeric) turns become `"<parentTurn>-1"`, `"-2"`, … (1-based, in order);
283
+ * any already-forwarded grand-child labels (strings) have their leading segment
284
+ * remapped the same way, so nesting composes (`"5-2"` → `"5-2-1"`).
285
+ *
286
+ * Note: two sub-agents invoked in the *same* parent turn share the prefix, so
287
+ * their labels can repeat — `agentName` on each snapshot disambiguates them.
288
+ */
289
+ private forwardSubAgentSnapshots;
233
290
  /**
234
291
  * Push one snapshot to the ring buffer. Called inside `runToolLoop` just
235
292
  * before each LLM call — that's the latest point where the prompt, tool
@@ -1 +1 @@
1
- {"version":3,"file":"chat-driver.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-driver.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.ts"],"names":[],"mappings":"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"}
@@ -359,7 +359,7 @@ export declare class FoundationAiAssistant extends GenesisElement {
359
359
  readme: readonly string[];
360
360
  timeline: ({
361
361
  systemPrompt: string;
362
- turnIndex: number;
362
+ turnIndex: string;
363
363
  timestamp: string;
364
364
  agentName?: string;
365
365
  toolNames: string[];
@@ -27,7 +27,7 @@
27
27
  * Catalogue of meta event names. This is the documented surface — extend it as
28
28
  * new events are wired in (Tier 2/3 lifecycle, interaction, provider events).
29
29
  */
30
- export type MetaEventType = 'assistant.connected' | 'assistant.disconnected' | 'assistant.popout' | 'assistant.popin' | 'driver.created' | 'driver.wired' | 'driver.unwired' | 'state.changed' | 'turn.start' | 'turn.end' | 'turn.retry' | 'turn.error' | 'tool.failed' | 'tool.unresolved' | 'agent.handoff' | 'agent.pinned' | 'agent.unpinned' | 'provider.selected' | 'interaction.requested' | 'interaction.resolved' | 'context.updated' | 'context.threshold-crossed' | 'panel.toggled' | 'attachment.added' | 'file.read-failed' | 'suggestions.failed';
30
+ export type MetaEventType = 'assistant.connected' | 'assistant.disconnected' | 'assistant.popout' | 'assistant.popin' | 'driver.created' | 'driver.wired' | 'driver.unwired' | 'state.changed' | 'turn.start' | 'turn.end' | 'turn.retry' | 'turn.error' | 'tool.failed' | 'tool.unresolved' | 'subagent.failed' | 'agent.handoff' | 'agent.pinned' | 'agent.unpinned' | 'provider.selected' | 'interaction.requested' | 'interaction.resolved' | 'context.updated' | 'context.threshold-crossed' | 'panel.toggled' | 'attachment.added' | 'file.read-failed' | 'suggestions.failed';
31
31
  /**
32
32
  * How much a reader should care about an event — lets a consumer (or an AI
33
33
  * agent) filter the timeline: skip `low` UI/bookkeeping noise, skim `normal`
@@ -1 +1 @@
1
- {"version":3,"file":"debug-event-log.d.ts","sourceRoot":"","sources":["../../../src/state/debug-event-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAErB,qBAAqB,GACrB,wBAAwB,GACxB,kBAAkB,GAClB,iBAAiB,GAEjB,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAEhB,eAAe,GACf,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,iBAAiB,GAEjB,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GAEnB,uBAAuB,GACvB,sBAAsB,GAEtB,iBAAiB,GACjB,2BAA2B,GAE3B,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE5D;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,aAAa,EAAE,mBAAmB,CA6B5E,CAAC;AAEF,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACxB,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,6EAA6E;IAC7E,UAAU,EAAE,mBAAmB,CAAC;IAChC,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAmBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,aAAa,EACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAyBN;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,yBAAyB,GACzB,gBAAgB,GAChB,oBAAoB,GACpB,gBAAgB,CAAC;AAErB;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,EACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,EACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAEN;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAEnE;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAW7C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
1
+ {"version":3,"file":"debug-event-log.d.ts","sourceRoot":"","sources":["../../../src/state/debug-event-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAErB,qBAAqB,GACrB,wBAAwB,GACxB,kBAAkB,GAClB,iBAAiB,GAEjB,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAEhB,eAAe,GACf,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,iBAAiB,GAEjB,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GAEnB,uBAAuB,GACvB,sBAAsB,GAEtB,iBAAiB,GACjB,2BAA2B,GAE3B,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE5D;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,aAAa,EAAE,mBAAmB,CA8B5E,CAAC;AAEF,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACxB,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,6EAA6E;IAC7E,UAAU,EAAE,mBAAmB,CAAC;IAChC,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAmBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,aAAa,EACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAyBN;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,yBAAyB,GACzB,gBAAgB,GAChB,oBAAoB,GACpB,gBAAgB,CAAC;AAErB;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,EACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,EACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAEN;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAEnE;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAW7C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}