@di-code/coding-agent 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +5 -0
  2. package/dist/core/session/session-manager.d.ts +18 -1
  3. package/dist/core/session/session-manager.d.ts.map +1 -1
  4. package/dist/core/session/session-manager.js +90 -1
  5. package/dist/core/session/session-manager.js.map +1 -1
  6. package/dist/core/session/session-storage.d.ts +2 -0
  7. package/dist/core/session/session-storage.d.ts.map +1 -1
  8. package/dist/core/session/session-storage.js +22 -1
  9. package/dist/core/session/session-storage.js.map +1 -1
  10. package/dist/core/session/types.d.ts +16 -1
  11. package/dist/core/session/types.d.ts.map +1 -1
  12. package/dist/core/session/types.js.map +1 -1
  13. package/dist/core/session.d.ts +27 -2
  14. package/dist/core/session.d.ts.map +1 -1
  15. package/dist/core/session.js +59 -0
  16. package/dist/core/session.js.map +1 -1
  17. package/dist/entry.js +1 -1
  18. package/dist/entry.js.map +1 -1
  19. package/dist/i18n.js +4 -4
  20. package/dist/i18n.js.map +1 -1
  21. package/dist/interactive-host-entry.d.ts.map +1 -1
  22. package/dist/interactive-host-entry.js +107 -12
  23. package/dist/interactive-host-entry.js.map +1 -1
  24. package/dist/main.d.ts.map +1 -1
  25. package/dist/main.js +3 -0
  26. package/dist/main.js.map +1 -1
  27. package/dist/modes/interactive-components.d.ts +8 -0
  28. package/dist/modes/interactive-components.d.ts.map +1 -1
  29. package/dist/modes/interactive-components.js +7 -2
  30. package/dist/modes/interactive-components.js.map +1 -1
  31. package/dist/modes/interactive.d.ts +4 -0
  32. package/dist/modes/interactive.d.ts.map +1 -1
  33. package/dist/modes/interactive.js +69 -0
  34. package/dist/modes/interactive.js.map +1 -1
  35. package/dist/modes/tree-selector.d.ts.map +1 -1
  36. package/dist/modes/tree-selector.js +4 -0
  37. package/dist/modes/tree-selector.js.map +1 -1
  38. package/dist/rpc/client.d.ts +2 -0
  39. package/dist/rpc/client.d.ts.map +1 -1
  40. package/dist/rpc/client.js +3 -0
  41. package/dist/rpc/client.js.map +1 -1
  42. package/dist/rpc/dispatcher.d.ts +14 -0
  43. package/dist/rpc/dispatcher.d.ts.map +1 -1
  44. package/dist/rpc/dispatcher.js +222 -7
  45. package/dist/rpc/dispatcher.js.map +1 -1
  46. package/dist/rpc/protocol.d.ts +12 -5
  47. package/dist/rpc/protocol.d.ts.map +1 -1
  48. package/dist/rpc/protocol.js +34 -0
  49. package/dist/rpc/protocol.js.map +1 -1
  50. package/dist/rpc/server.d.ts +5 -0
  51. package/dist/rpc/server.d.ts.map +1 -1
  52. package/dist/rpc/server.js +4 -0
  53. package/dist/rpc/server.js.map +1 -1
  54. package/dist/rpc-server-entry.d.ts.map +1 -1
  55. package/dist/rpc-server-entry.js +15 -1
  56. package/dist/rpc-server-entry.js.map +1 -1
  57. package/dist/runtime/product-host.d.ts +7 -0
  58. package/dist/runtime/product-host.d.ts.map +1 -1
  59. package/dist/runtime/product-host.js +29 -9
  60. package/dist/runtime/product-host.js.map +1 -1
  61. package/dist/runtime/session-factory.d.ts +18 -2
  62. package/dist/runtime/session-factory.d.ts.map +1 -1
  63. package/dist/runtime/session-factory.js +286 -24
  64. package/dist/runtime/session-factory.js.map +1 -1
  65. package/dist/runtime/session-host.d.ts +46 -1
  66. package/dist/runtime/session-host.d.ts.map +1 -1
  67. package/dist/runtime/session-host.js +38 -6
  68. package/dist/runtime/session-host.js.map +1 -1
  69. package/dist/ui-host.d.ts.map +1 -1
  70. package/dist/ui-host.js +3 -0
  71. package/dist/ui-host.js.map +1 -1
  72. package/dist/web/assets/index-C2SOU925.css +1 -0
  73. package/dist/web/assets/index-knXkInvO.js +41 -0
  74. package/dist/web/assets/index-knXkInvO.js.map +1 -0
  75. package/dist/web/index.html +2 -2
  76. package/dist/web-command.d.ts.map +1 -1
  77. package/dist/web-command.js +8 -1
  78. package/dist/web-command.js.map +1 -1
  79. package/dist/webui-entry.js +9 -1
  80. package/dist/webui-entry.js.map +1 -1
  81. package/dist/webui.d.ts +10 -0
  82. package/dist/webui.d.ts.map +1 -1
  83. package/dist/webui.js +21 -0
  84. package/dist/webui.js.map +1 -1
  85. package/package.json +11 -9
  86. package/dist/web/assets/index-C-NyCPxd.css +0 -1
  87. package/dist/web/assets/index-DgyxuNNG.js +0 -41
  88. package/dist/web/assets/index-DgyxuNNG.js.map +0 -1
@@ -1,5 +1,8 @@
1
- import { agentSessionKey, compactionRegistryKey, imageGenerationCapabilityKey, networkCapabilityKey, processCapabilityKey, toolApprovalKey, toolOutputKey, toolPolicyKey, toolRegistryKey, workspaceCapabilityKey, } from "@di-code/builtins";
1
+ import { createPromptSectionRegistry } from "@di-code/agent";
2
+ import { agentSessionKey, compactionRegistryKey, createSessionToolPolicy, imageGenerationCapabilityKey, networkCapabilityKey, processCapabilityKey, promptRegistryKey, TOOL_POLICY_EVENT_NAME, TOOL_POLICY_EVENT_NAMESPACE, TOOL_POLICY_EVENT_SCHEMA_VERSION, toolApprovalKey, toolOutputKey, toolRegistryKey, workspaceCapabilityKey, } from "@di-code/builtins";
3
+ import { createPlanModePlugin } from "@di-code/plan-mode";
2
4
  import { createServiceKey } from "@di-code/plugin-runtime";
5
+ import { createSessionEventRegistry, createSessionExtensionRegistry, createSessionPluginRegistry, createSessionProjectionRegistry, sessionPluginRegistryKey, } from "@di-code/plugin-sdk";
3
6
  import { createSkillCatalog } from "@di-code/skills";
4
7
  import { AgentSession } from "../core/session.js";
5
8
  const sessionDependenciesKey = createServiceKey("session-dependencies");
@@ -8,6 +11,22 @@ function asCompositionSessionOptions(value) {
8
11
  throw new TypeError("AgentSessionFactory options must be an object");
9
12
  return value;
10
13
  }
14
+ function persistedPolicyMode(manager) {
15
+ for (const entry of [...manager.getBranch()].reverse()) {
16
+ if (entry.type !== "event" ||
17
+ entry.namespace !== TOOL_POLICY_EVENT_NAMESPACE ||
18
+ entry.eventName !== TOOL_POLICY_EVENT_NAME ||
19
+ entry.schemaVersion !== TOOL_POLICY_EVENT_SCHEMA_VERSION)
20
+ continue;
21
+ const payload = entry.payload;
22
+ if (typeof payload === "object" && payload !== null && !Array.isArray(payload)) {
23
+ const mode = payload.mode;
24
+ if (mode === "normal" || mode === "read_only")
25
+ return mode;
26
+ }
27
+ }
28
+ return "normal";
29
+ }
11
30
  /**
12
31
  * Installs the product AgentSession implementation behind the composition factory.
13
32
  * Each session receives an isolated Context and immutable tool snapshot; the factory disposer releases all scopes.
@@ -15,8 +34,11 @@ function asCompositionSessionOptions(value) {
15
34
  export function installAgentSessionFactory(context) {
16
35
  const factory = context.require(agentSessionKey);
17
36
  const sessionContexts = new Set();
37
+ const sessionScopes = new Set();
38
+ const sessionPluginRegistry = createSessionPluginRegistry();
39
+ const unregisterRegistry = context.set(sessionPluginRegistryKey, sessionPluginRegistry);
18
40
  let nextSessionId = 0;
19
- const unregister = factory.register((input) => {
41
+ const unregister = factory.register(async (input) => {
20
42
  const options = asCompositionSessionOptions(input);
21
43
  const workspace = { ...context.require(workspaceCapabilityKey), allowedRoot: options.allowedRoot };
22
44
  const skillCatalog = createSkillCatalog((options.skills ?? []).map((skill) => ({
@@ -27,19 +49,6 @@ export function installAgentSessionFactory(context) {
27
49
  },
28
50
  diagnostics: [],
29
51
  })));
30
- const tools = Object.freeze([
31
- ...context.require(toolRegistryKey).snapshot({
32
- workspace,
33
- process: context.require(processCapabilityKey),
34
- network: context.require(networkCapabilityKey),
35
- policy: context.require(toolPolicyKey),
36
- approval: options.toolApproval ?? context.require(toolApprovalKey),
37
- output: context.require(toolOutputKey),
38
- imageGeneration: context.get(imageGenerationCapabilityKey),
39
- skills: skillCatalog,
40
- }),
41
- ...(options.externalTools ?? []),
42
- ]);
43
52
  const compaction = context
44
53
  .require(compactionRegistryKey)
45
54
  .snapshot()
@@ -56,18 +65,271 @@ export function installAgentSessionFactory(context) {
56
65
  : undefined;
57
66
  const sessionContext = context.child({ id: `session-${++nextSessionId}`, isolate: true });
58
67
  sessionContexts.add(sessionContext);
59
- sessionContext.set(sessionDependenciesKey, {
60
- tools,
61
- });
62
- return new AgentSession({
63
- ...options,
64
- ...(prepareMessages ? { compaction: { ...(options.compaction ?? {}), prepareMessages } } : {}),
65
- tools: sessionContext.require(sessionDependenciesKey).tools,
66
- onDispose: () => sessionContext.dispose(),
67
- });
68
+ const sessionEvents = createSessionEventRegistry();
69
+ const sessionProjections = createSessionProjectionRegistry();
70
+ const pluginSessionId = options.sessionManager?.header.id ?? sessionContext.id;
71
+ const sessionExtensions = createSessionExtensionRegistry(pluginSessionId);
72
+ options.sessionManager?.bindEventRegistry(sessionEvents);
73
+ const memoryEvents = [];
74
+ const appendEvent = async (event, signal) => {
75
+ if (options.sessionManager) {
76
+ await options.sessionManager.appendEvent({ ...event, signal });
77
+ return;
78
+ }
79
+ if (signal?.aborted)
80
+ throw signal.reason ?? new DOMException("The operation was aborted", "AbortError");
81
+ memoryEvents.push(structuredClone(event));
82
+ };
83
+ let pluginScopes = [];
84
+ const pluginHooks = [];
85
+ const initialHookDisposers = new Map();
86
+ const promptSections = createPromptSectionRegistry();
87
+ const policy = options.toolPolicy ??
88
+ createSessionToolPolicy({
89
+ sessionId: pluginSessionId,
90
+ initialMode: options.sessionManager ? persistedPolicyMode(options.sessionManager) : "normal",
91
+ projection: options.getToolPolicyProjection,
92
+ pluginState: options.getToolPolicyPluginState,
93
+ persistMode: async (mode, signal) => {
94
+ if (!options.sessionManager)
95
+ return;
96
+ await options.sessionManager.appendEvent({
97
+ namespace: TOOL_POLICY_EVENT_NAMESPACE,
98
+ eventName: TOOL_POLICY_EVENT_NAME,
99
+ schemaVersion: TOOL_POLICY_EVENT_SCHEMA_VERSION,
100
+ payload: { mode },
101
+ signal,
102
+ });
103
+ },
104
+ });
105
+ const approval = options.toolApproval ?? context.require(toolApprovalKey);
106
+ let session;
107
+ let planMode;
108
+ if (options.planMode) {
109
+ const manager = options.sessionManager;
110
+ const events = () => manager
111
+ ?.getBranch()
112
+ .filter((entry) => entry.type === "event")
113
+ .map((entry) => ({
114
+ namespace: entry.namespace,
115
+ eventName: entry.eventName,
116
+ schemaVersion: entry.schemaVersion,
117
+ payload: entry.payload,
118
+ })) ?? memoryEvents;
119
+ planMode = createPlanModePlugin(options.planMode).createController({
120
+ sessionId: pluginSessionId,
121
+ events,
122
+ appendEvent,
123
+ isBusy: () => session?.isStreaming ?? false,
124
+ promptSections,
125
+ interaction: options.interaction,
126
+ });
127
+ }
128
+ const effectivePolicy = planMode
129
+ ? {
130
+ ...policy,
131
+ authorize: async (toolName, parameters, signal) => {
132
+ planMode?.authorize(toolName);
133
+ await policy.authorize(toolName, parameters, signal);
134
+ },
135
+ }
136
+ : policy;
137
+ const cleanupFailed = async () => {
138
+ sessionScopes.delete(pluginScopes);
139
+ await Promise.allSettled(pluginScopes.map((scope) => scope.dispose()));
140
+ await planMode?.dispose();
141
+ policy.dispose?.();
142
+ await sessionContext.dispose();
143
+ sessionContexts.delete(sessionContext);
144
+ };
145
+ let tools;
146
+ try {
147
+ const output = context.require(toolOutputKey);
148
+ tools = Object.freeze([
149
+ ...context.require(toolRegistryKey).snapshot({
150
+ workspace,
151
+ process: context.require(processCapabilityKey),
152
+ network: context.require(networkCapabilityKey),
153
+ policy: effectivePolicy,
154
+ approval,
155
+ output,
156
+ imageGeneration: context.get(imageGenerationCapabilityKey),
157
+ skills: skillCatalog,
158
+ }),
159
+ ...(options.externalTools ?? []).map((tool) => ({
160
+ ...tool,
161
+ execute: async (toolCallId, parameters, signal) => {
162
+ await effectivePolicy.authorize(tool.name, parameters, signal);
163
+ await approval.request(tool.name, parameters, signal);
164
+ return output.present(await tool.execute(toolCallId, parameters, signal));
165
+ },
166
+ })),
167
+ ...(planMode ? [planMode.createExitTool()] : []),
168
+ ]);
169
+ }
170
+ catch (error) {
171
+ await cleanupFailed();
172
+ throw error;
173
+ }
174
+ sessionContext.set(sessionDependenciesKey, { tools });
175
+ try {
176
+ for (const section of context.require(promptRegistryKey).snapshotSections?.() ?? [])
177
+ promptSections.register(section);
178
+ const registrations = [
179
+ ...sessionPluginRegistry.snapshot(),
180
+ ...(options.sessionPlugins ?? []).map(({ factory, config }, index) => ({
181
+ name: `internal.${index}`,
182
+ factory,
183
+ config,
184
+ })),
185
+ ];
186
+ pluginScopes = await Promise.all(registrations.map(({ factory, config }) => factory.create(pluginSessionId, config, {
187
+ appendEvent,
188
+ })));
189
+ for (const scope of pluginScopes) {
190
+ const scopeHooks = scope.hooks.snapshot();
191
+ const removers = scope.promptSections.snapshot().map((section) => promptSections.register(section));
192
+ const eventRemovers = new Map();
193
+ const projectionRemovers = new Map();
194
+ for (const definition of scope.events.snapshot())
195
+ eventRemovers.set(definition, sessionEvents.register(definition));
196
+ for (const definition of scope.projections.snapshot())
197
+ projectionRemovers.set(definition, sessionProjections.register(definition));
198
+ const unsubscribeEvents = scope.events.subscribe((definition, active) => {
199
+ if (active)
200
+ eventRemovers.set(definition, sessionEvents.register(definition));
201
+ else {
202
+ eventRemovers.get(definition)?.();
203
+ eventRemovers.delete(definition);
204
+ }
205
+ });
206
+ const unsubscribeProjections = scope.projections.subscribe((definition, active) => {
207
+ if (active)
208
+ projectionRemovers.set(definition, sessionProjections.register(definition));
209
+ else {
210
+ projectionRemovers.get(definition)?.();
211
+ projectionRemovers.delete(definition);
212
+ }
213
+ });
214
+ const badgeRemovers = new Map();
215
+ const uiRemovers = new Map();
216
+ const syncExtensions = () => {
217
+ for (const remove of badgeRemovers.values())
218
+ remove();
219
+ for (const remove of uiRemovers.values())
220
+ remove();
221
+ badgeRemovers.clear();
222
+ uiRemovers.clear();
223
+ for (const badge of scope.extensions.badges)
224
+ badgeRemovers.set(badge.id, sessionExtensions.registerBadge(badge));
225
+ for (const contribution of scope.extensions.ui)
226
+ uiRemovers.set(contribution.id, sessionExtensions.registerUi(contribution));
227
+ };
228
+ syncExtensions();
229
+ const unsubscribeExtensions = scope.extensions.subscribe(() => syncExtensions());
230
+ removers.push(unsubscribeEvents, unsubscribeProjections, unsubscribeExtensions, () => {
231
+ for (const remove of eventRemovers.values())
232
+ remove();
233
+ for (const remove of projectionRemovers.values())
234
+ remove();
235
+ eventRemovers.clear();
236
+ projectionRemovers.clear();
237
+ for (const remove of badgeRemovers.values())
238
+ remove();
239
+ for (const remove of uiRemovers.values())
240
+ remove();
241
+ badgeRemovers.clear();
242
+ uiRemovers.clear();
243
+ });
244
+ pluginHooks.push(...scopeHooks);
245
+ const hookDisposers = new Map();
246
+ const unsubscribeHooks = scope.hooks.subscribe((hook, active) => {
247
+ if (!session)
248
+ return;
249
+ const agentHook = hook;
250
+ if (active)
251
+ hookDisposers.set(agentHook, session.addHook(agentHook));
252
+ else {
253
+ hookDisposers.get(agentHook)?.();
254
+ hookDisposers.delete(agentHook);
255
+ }
256
+ });
257
+ removers.push(unsubscribeHooks, () => {
258
+ for (const dispose of hookDisposers.values())
259
+ dispose();
260
+ hookDisposers.clear();
261
+ });
262
+ scope.onDispose(() => {
263
+ for (const remove of removers)
264
+ remove();
265
+ for (const hook of scopeHooks) {
266
+ initialHookDisposers.get(hook)?.();
267
+ initialHookDisposers.delete(hook);
268
+ }
269
+ });
270
+ }
271
+ sessionScopes.add(pluginScopes);
272
+ }
273
+ catch (error) {
274
+ await cleanupFailed();
275
+ throw error;
276
+ }
277
+ const planHook = planMode
278
+ ? {
279
+ kind: "modifier",
280
+ phase: "pre_step",
281
+ onError: "fail",
282
+ run: async (_event, hookContext) => {
283
+ await planMode?.preStep(hookContext.signal);
284
+ return undefined;
285
+ },
286
+ }
287
+ : undefined;
288
+ try {
289
+ session = new AgentSession({
290
+ ...options,
291
+ ...(prepareMessages ? { compaction: { ...(options.compaction ?? {}), prepareMessages } } : {}),
292
+ tools: sessionContext.require(sessionDependenciesKey).tools,
293
+ promptSections,
294
+ toolPolicy: policy,
295
+ getPromptSnapshot: () => ({
296
+ ...options.getPromptSnapshot?.(),
297
+ sessionId: pluginSessionId,
298
+ messageCount: options.sessionManager?.messages.length ?? 0,
299
+ leafId: options.sessionManager?.leafId,
300
+ }),
301
+ onDispose: async () => {
302
+ if (sessionScopes.has(pluginScopes))
303
+ sessionScopes.delete(pluginScopes);
304
+ const results = await Promise.allSettled(pluginScopes.map((scope) => scope.dispose()));
305
+ await sessionContext.dispose();
306
+ const errors = results
307
+ .filter((result) => result.status === "rejected")
308
+ .map((r) => r.reason);
309
+ if (errors.length > 0)
310
+ throw new AggregateError(errors, "Session plugin scope disposal failed");
311
+ },
312
+ planMode,
313
+ projectionRegistry: sessionProjections,
314
+ extensionFacade: sessionExtensions,
315
+ hooks: [...(options.hooks ?? []), ...(planHook ? [planHook] : [])],
316
+ });
317
+ for (const hook of pluginHooks)
318
+ initialHookDisposers.set(hook, session.addHook(hook));
319
+ }
320
+ catch (error) {
321
+ await cleanupFailed();
322
+ throw error;
323
+ }
324
+ return session;
68
325
  });
69
326
  return async () => {
70
327
  unregister();
328
+ await Promise.allSettled(sessionPluginRegistry.snapshot().map((registration) => registration.factory.dispose()));
329
+ await unregisterRegistry();
330
+ for (const scopes of [...sessionScopes])
331
+ await Promise.allSettled(scopes.map((scope) => scope.dispose()));
332
+ sessionScopes.clear();
71
333
  for (const sessionContext of [...sessionContexts].reverse())
72
334
  await sessionContext.dispose();
73
335
  sessionContexts.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"session-factory.js","sourceRoot":"","sources":["../../src/runtime/session-factory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tagentSessionKey,\n\tcompactionRegistryKey,\n\timageGenerationCapabilityKey,\n\tnetworkCapabilityKey,\n\tprocessCapabilityKey,\n\ttype ToolApprovalCapability,\n\ttoolApprovalKey,\n\ttoolOutputKey,\n\ttoolPolicyKey,\n\ttoolRegistryKey,\n\tworkspaceCapabilityKey,\n} from \"@di-code/builtins\";\nimport { type Context, createServiceKey, type Disposer } from \"@di-code/plugin-runtime\";\nimport { createSkillCatalog } from \"@di-code/skills\";\nimport type { SkillResource } from \"../core/resources/types.ts\";\nimport { AgentSession, type AgentSessionOptions, type AgentSessionTool } from \"../core/session.ts\";\n\nexport interface CompositionSessionOptions extends Omit<AgentSessionOptions, \"tools\" | \"skills\"> {\n\treadonly skills?: readonly SkillResource[];\n\t/** MCP tools already adapted by the product integration layer. */\n\treadonly externalTools?: readonly AgentSessionTool[];\n\t/** Per-session approval boundary; defaults to the composition capability. */\n\treadonly toolApproval?: ToolApprovalCapability;\n}\n\ninterface SessionDependencies {\n\treadonly tools: readonly AgentSessionTool[];\n}\n\nconst sessionDependenciesKey = createServiceKey<SessionDependencies>(\"session-dependencies\");\n\nfunction asCompositionSessionOptions(value: unknown): CompositionSessionOptions {\n\tif (typeof value !== \"object\" || value === null) throw new TypeError(\"AgentSessionFactory options must be an object\");\n\treturn value as CompositionSessionOptions;\n}\n\n/**\n * Installs the product AgentSession implementation behind the composition factory.\n * Each session receives an isolated Context and immutable tool snapshot; the factory disposer releases all scopes.\n */\nexport function installAgentSessionFactory(context: Context): Disposer {\n\tconst factory = context.require(agentSessionKey);\n\tconst sessionContexts = new Set<Context>();\n\tlet nextSessionId = 0;\n\n\tconst unregister = factory.register((input) => {\n\t\tconst options = asCompositionSessionOptions(input);\n\t\tconst workspace = { ...context.require(workspaceCapabilityKey), allowedRoot: options.allowedRoot };\n\t\tconst skillCatalog = createSkillCatalog(\n\t\t\t(options.skills ?? []).map((skill) => ({\n\t\t\t\tskill: {\n\t\t\t\t\t...skill,\n\t\t\t\t\tsource:\n\t\t\t\t\t\tskill.source ?? (skill.scope === \"explicit\" ? \"explicit\" : skill.scope === \"project\" ? \"project\" : \"user\"),\n\t\t\t\t\tuserInvocable: skill.userInvocable ?? true,\n\t\t\t\t},\n\t\t\t\tdiagnostics: [],\n\t\t\t})),\n\t\t);\n\t\tconst tools = Object.freeze([\n\t\t\t...context.require(toolRegistryKey).snapshot({\n\t\t\t\tworkspace,\n\t\t\t\tprocess: context.require(processCapabilityKey),\n\t\t\t\tnetwork: context.require(networkCapabilityKey),\n\t\t\t\tpolicy: context.require(toolPolicyKey),\n\t\t\t\tapproval: options.toolApproval ?? context.require(toolApprovalKey),\n\t\t\t\toutput: context.require(toolOutputKey),\n\t\t\t\timageGeneration: context.get(imageGenerationCapabilityKey),\n\t\t\t\tskills: skillCatalog,\n\t\t\t}),\n\t\t\t...(options.externalTools ?? []),\n\t\t]);\n\t\tconst compaction = context\n\t\t\t.require(compactionRegistryKey)\n\t\t\t.snapshot()\n\t\t\t.find((entry) => entry.name === \"tool-result\");\n\t\tconst prepareMessages = compaction\n\t\t\t? async (messages: readonly import(\"@di-code/ai\").Message[], signal?: AbortSignal) => {\n\t\t\t\t\tconst result = await compaction.compact({ messages }, signal);\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof result !== \"object\" ||\n\t\t\t\t\t\tresult === null ||\n\t\t\t\t\t\t!Array.isArray((result as { readonly messages?: unknown }).messages)\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow new TypeError(\"tool-result compaction contribution must return { messages }\");\n\t\t\t\t\treturn (result as { readonly messages: readonly import(\"@di-code/ai\").Message[] }).messages;\n\t\t\t\t}\n\t\t\t: undefined;\n\t\tconst sessionContext = context.child({ id: `session-${++nextSessionId}`, isolate: true });\n\t\tsessionContexts.add(sessionContext);\n\t\tsessionContext.set(sessionDependenciesKey, {\n\t\t\ttools,\n\t\t});\n\t\treturn new AgentSession({\n\t\t\t...options,\n\t\t\t...(prepareMessages ? { compaction: { ...(options.compaction ?? {}), prepareMessages } } : {}),\n\t\t\ttools: sessionContext.require(sessionDependenciesKey).tools,\n\t\t\tonDispose: () => sessionContext.dispose(),\n\t\t});\n\t});\n\treturn async () => {\n\t\tunregister();\n\t\tfor (const sessionContext of [...sessionContexts].reverse()) await sessionContext.dispose();\n\t\tsessionContexts.clear();\n\t};\n}\n"]}
1
+ {"version":3,"file":"session-factory.js","sourceRoot":"","sources":["../../src/runtime/session-factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { createPromptSectionRegistry } from \"@di-code/agent\";\nimport {\n\tagentSessionKey,\n\tcompactionRegistryKey,\n\tcreateSessionToolPolicy,\n\timageGenerationCapabilityKey,\n\tnetworkCapabilityKey,\n\tprocessCapabilityKey,\n\tpromptRegistryKey,\n\tTOOL_POLICY_EVENT_NAME,\n\tTOOL_POLICY_EVENT_NAMESPACE,\n\tTOOL_POLICY_EVENT_SCHEMA_VERSION,\n\ttype ToolApprovalCapability,\n\ttype ToolPolicyCapability,\n\ttype ToolPolicyMode,\n\ttoolApprovalKey,\n\ttoolOutputKey,\n\ttoolRegistryKey,\n\tworkspaceCapabilityKey,\n} from \"@di-code/builtins\";\nimport { createPlanModePlugin, type PlanModeController } from \"@di-code/plan-mode\";\nimport { type Context, createServiceKey, type Disposer } from \"@di-code/plugin-runtime\";\nimport {\n\tcreateSessionEventRegistry,\n\tcreateSessionExtensionRegistry,\n\tcreateSessionPluginRegistry,\n\tcreateSessionProjectionRegistry,\n\ttype SessionEventEnvelope,\n\ttype SessionPluginFactory,\n\ttype SessionPluginScope,\n\tsessionPluginRegistryKey,\n\ttype UserInteraction,\n} from \"@di-code/plugin-sdk\";\nimport { createSkillCatalog } from \"@di-code/skills\";\nimport type { SkillResource } from \"../core/resources/types.ts\";\nimport { AgentSession, type AgentSessionOptions, type AgentSessionTool } from \"../core/session.ts\";\n\nexport interface CompositionSessionOptions extends Omit<AgentSessionOptions, \"tools\" | \"skills\" | \"planMode\"> {\n\treadonly skills?: readonly SkillResource[];\n\t/** MCP tools already adapted by the product integration layer. */\n\treadonly externalTools?: readonly AgentSessionTool[];\n\t/** Per-session approval boundary; defaults to the composition capability. */\n\treadonly toolApproval?: ToolApprovalCapability;\n\t/** Optional policy override; otherwise a durable Session policy is created. */\n\treadonly toolPolicy?: ToolPolicyCapability;\n\t/** Read-only state supplied to the Session policy at each authorization boundary. */\n\treadonly getToolPolicyProjection?: () => unknown;\n\treadonly getToolPolicyPluginState?: () => unknown;\n\t/** Optional structured interaction surface used by session-scoped tools. */\n\treadonly interaction?: UserInteraction;\n\t/** Session-scoped plugin factories. Each binding receives an isolated public scope. */\n\treadonly sessionPlugins?: readonly { readonly factory: SessionPluginFactory<unknown>; readonly config: unknown }[];\n\treadonly planMode?: { readonly section: string };\n}\n\ninterface SessionDependencies {\n\treadonly tools: readonly AgentSessionTool[];\n}\n\nconst sessionDependenciesKey = createServiceKey<SessionDependencies>(\"session-dependencies\");\n\nfunction asCompositionSessionOptions(value: unknown): CompositionSessionOptions {\n\tif (typeof value !== \"object\" || value === null) throw new TypeError(\"AgentSessionFactory options must be an object\");\n\treturn value as CompositionSessionOptions;\n}\n\nfunction persistedPolicyMode(manager: import(\"../core/session/session-manager.ts\").SessionManager): ToolPolicyMode {\n\tfor (const entry of [...manager.getBranch()].reverse()) {\n\t\tif (\n\t\t\tentry.type !== \"event\" ||\n\t\t\tentry.namespace !== TOOL_POLICY_EVENT_NAMESPACE ||\n\t\t\tentry.eventName !== TOOL_POLICY_EVENT_NAME ||\n\t\t\tentry.schemaVersion !== TOOL_POLICY_EVENT_SCHEMA_VERSION\n\t\t)\n\t\t\tcontinue;\n\t\tconst payload = entry.payload;\n\t\tif (typeof payload === \"object\" && payload !== null && !Array.isArray(payload)) {\n\t\t\tconst mode = (payload as { readonly mode?: unknown }).mode;\n\t\t\tif (mode === \"normal\" || mode === \"read_only\") return mode;\n\t\t}\n\t}\n\treturn \"normal\";\n}\n\n/**\n * Installs the product AgentSession implementation behind the composition factory.\n * Each session receives an isolated Context and immutable tool snapshot; the factory disposer releases all scopes.\n */\nexport function installAgentSessionFactory(context: Context): Disposer {\n\tconst factory = context.require(agentSessionKey);\n\tconst sessionContexts = new Set<Context>();\n\tconst sessionScopes = new Set<readonly SessionPluginScope[]>();\n\tconst sessionPluginRegistry = createSessionPluginRegistry();\n\tconst unregisterRegistry = context.set(sessionPluginRegistryKey, sessionPluginRegistry);\n\tlet nextSessionId = 0;\n\n\tconst unregister = factory.register(async (input) => {\n\t\tconst options = asCompositionSessionOptions(input);\n\t\tconst workspace = { ...context.require(workspaceCapabilityKey), allowedRoot: options.allowedRoot };\n\t\tconst skillCatalog = createSkillCatalog(\n\t\t\t(options.skills ?? []).map((skill) => ({\n\t\t\t\tskill: {\n\t\t\t\t\t...skill,\n\t\t\t\t\tsource:\n\t\t\t\t\t\tskill.source ?? (skill.scope === \"explicit\" ? \"explicit\" : skill.scope === \"project\" ? \"project\" : \"user\"),\n\t\t\t\t\tuserInvocable: skill.userInvocable ?? true,\n\t\t\t\t},\n\t\t\t\tdiagnostics: [],\n\t\t\t})),\n\t\t);\n\t\tconst compaction = context\n\t\t\t.require(compactionRegistryKey)\n\t\t\t.snapshot()\n\t\t\t.find((entry) => entry.name === \"tool-result\");\n\t\tconst prepareMessages = compaction\n\t\t\t? async (messages: readonly import(\"@di-code/ai\").Message[], signal?: AbortSignal) => {\n\t\t\t\t\tconst result = await compaction.compact({ messages }, signal);\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof result !== \"object\" ||\n\t\t\t\t\t\tresult === null ||\n\t\t\t\t\t\t!Array.isArray((result as { readonly messages?: unknown }).messages)\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow new TypeError(\"tool-result compaction contribution must return { messages }\");\n\t\t\t\t\treturn (result as { readonly messages: readonly import(\"@di-code/ai\").Message[] }).messages;\n\t\t\t\t}\n\t\t\t: undefined;\n\t\tconst sessionContext = context.child({ id: `session-${++nextSessionId}`, isolate: true });\n\t\tsessionContexts.add(sessionContext);\n\t\tconst sessionEvents = createSessionEventRegistry();\n\t\tconst sessionProjections = createSessionProjectionRegistry();\n\t\tconst pluginSessionId = options.sessionManager?.header.id ?? sessionContext.id;\n\t\tconst sessionExtensions = createSessionExtensionRegistry(pluginSessionId);\n\t\toptions.sessionManager?.bindEventRegistry(sessionEvents);\n\t\tconst memoryEvents: SessionEventEnvelope[] = [];\n\t\tconst appendEvent = async (event: SessionEventEnvelope, signal?: AbortSignal): Promise<void> => {\n\t\t\tif (options.sessionManager) {\n\t\t\t\tawait options.sessionManager.appendEvent({ ...event, signal });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (signal?.aborted) throw signal.reason ?? new DOMException(\"The operation was aborted\", \"AbortError\");\n\t\t\tmemoryEvents.push(structuredClone(event));\n\t\t};\n\t\tlet pluginScopes: SessionPluginScope[] = [];\n\t\tconst pluginHooks: import(\"@di-code/plugin-sdk\").AgentHookRegistration[] = [];\n\t\tconst initialHookDisposers = new Map<import(\"@di-code/plugin-sdk\").AgentHookRegistration, () => void>();\n\t\tconst promptSections = createPromptSectionRegistry();\n\t\tconst policy =\n\t\t\toptions.toolPolicy ??\n\t\t\tcreateSessionToolPolicy({\n\t\t\t\tsessionId: pluginSessionId,\n\t\t\t\tinitialMode: options.sessionManager ? persistedPolicyMode(options.sessionManager) : \"normal\",\n\t\t\t\tprojection: options.getToolPolicyProjection,\n\t\t\t\tpluginState: options.getToolPolicyPluginState,\n\t\t\t\tpersistMode: async (mode, signal) => {\n\t\t\t\t\tif (!options.sessionManager) return;\n\t\t\t\t\tawait options.sessionManager.appendEvent({\n\t\t\t\t\t\tnamespace: TOOL_POLICY_EVENT_NAMESPACE,\n\t\t\t\t\t\teventName: TOOL_POLICY_EVENT_NAME,\n\t\t\t\t\t\tschemaVersion: TOOL_POLICY_EVENT_SCHEMA_VERSION,\n\t\t\t\t\t\tpayload: { mode },\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\tconst approval = options.toolApproval ?? context.require(toolApprovalKey);\n\t\tlet session: AgentSession | undefined;\n\t\tlet planMode: PlanModeController | undefined;\n\t\tif (options.planMode) {\n\t\t\tconst manager = options.sessionManager;\n\t\t\tconst events = () =>\n\t\t\t\tmanager\n\t\t\t\t\t?.getBranch()\n\t\t\t\t\t.filter((entry) => entry.type === \"event\")\n\t\t\t\t\t.map((entry) => ({\n\t\t\t\t\t\tnamespace: entry.namespace,\n\t\t\t\t\t\teventName: entry.eventName,\n\t\t\t\t\t\tschemaVersion: entry.schemaVersion,\n\t\t\t\t\t\tpayload: entry.payload,\n\t\t\t\t\t})) ?? memoryEvents;\n\t\t\tplanMode = createPlanModePlugin(options.planMode).createController({\n\t\t\t\tsessionId: pluginSessionId,\n\t\t\t\tevents,\n\t\t\t\tappendEvent,\n\t\t\t\tisBusy: () => session?.isStreaming ?? false,\n\t\t\t\tpromptSections,\n\t\t\t\tinteraction: options.interaction,\n\t\t\t});\n\t\t}\n\t\tconst effectivePolicy: ToolPolicyCapability = planMode\n\t\t\t? {\n\t\t\t\t\t...policy,\n\t\t\t\t\tauthorize: async (toolName, parameters, signal) => {\n\t\t\t\t\t\tplanMode?.authorize(toolName);\n\t\t\t\t\t\tawait policy.authorize(toolName, parameters, signal);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: policy;\n\t\tconst cleanupFailed = async (): Promise<void> => {\n\t\t\tsessionScopes.delete(pluginScopes);\n\t\t\tawait Promise.allSettled(pluginScopes.map((scope) => scope.dispose()));\n\t\t\tawait planMode?.dispose();\n\t\t\tpolicy.dispose?.();\n\t\t\tawait sessionContext.dispose();\n\t\t\tsessionContexts.delete(sessionContext);\n\t\t};\n\t\tlet tools: readonly AgentSessionTool[];\n\t\ttry {\n\t\t\tconst output = context.require(toolOutputKey);\n\t\t\ttools = Object.freeze([\n\t\t\t\t...context.require(toolRegistryKey).snapshot({\n\t\t\t\t\tworkspace,\n\t\t\t\t\tprocess: context.require(processCapabilityKey),\n\t\t\t\t\tnetwork: context.require(networkCapabilityKey),\n\t\t\t\t\tpolicy: effectivePolicy,\n\t\t\t\t\tapproval,\n\t\t\t\t\toutput,\n\t\t\t\t\timageGeneration: context.get(imageGenerationCapabilityKey),\n\t\t\t\t\tskills: skillCatalog,\n\t\t\t\t}),\n\t\t\t\t...(options.externalTools ?? []).map((tool) => ({\n\t\t\t\t\t...tool,\n\t\t\t\t\texecute: async (toolCallId: string, parameters: never, signal?: AbortSignal) => {\n\t\t\t\t\t\tawait effectivePolicy.authorize(tool.name, parameters, signal);\n\t\t\t\t\t\tawait approval.request(tool.name, parameters, signal);\n\t\t\t\t\t\treturn output.present(await tool.execute(toolCallId, parameters, signal));\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t\t...(planMode ? [planMode.createExitTool()] : []),\n\t\t\t]);\n\t\t} catch (error) {\n\t\t\tawait cleanupFailed();\n\t\t\tthrow error;\n\t\t}\n\t\tsessionContext.set(sessionDependenciesKey, { tools });\n\t\ttry {\n\t\t\tfor (const section of context.require(promptRegistryKey).snapshotSections?.() ?? [])\n\t\t\t\tpromptSections.register(section);\n\t\t\tconst registrations = [\n\t\t\t\t...sessionPluginRegistry.snapshot(),\n\t\t\t\t...(options.sessionPlugins ?? []).map(({ factory, config }, index) => ({\n\t\t\t\t\tname: `internal.${index}`,\n\t\t\t\t\tfactory,\n\t\t\t\t\tconfig,\n\t\t\t\t})),\n\t\t\t];\n\t\t\tpluginScopes = await Promise.all(\n\t\t\t\tregistrations.map(({ factory, config }) =>\n\t\t\t\t\tfactory.create(pluginSessionId, config, {\n\t\t\t\t\t\tappendEvent,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\t\t\tfor (const scope of pluginScopes) {\n\t\t\t\tconst scopeHooks = scope.hooks.snapshot();\n\t\t\t\tconst removers = scope.promptSections.snapshot().map((section) => promptSections.register(section));\n\t\t\t\tconst eventRemovers = new Map<import(\"@di-code/plugin-sdk\").SessionEventDefinition, () => void>();\n\t\t\t\tconst projectionRemovers = new Map<import(\"@di-code/plugin-sdk\").SessionProjectionDefinition, () => void>();\n\t\t\t\tfor (const definition of scope.events.snapshot())\n\t\t\t\t\teventRemovers.set(definition, sessionEvents.register(definition));\n\t\t\t\tfor (const definition of scope.projections.snapshot())\n\t\t\t\t\tprojectionRemovers.set(definition, sessionProjections.register(definition));\n\t\t\t\tconst unsubscribeEvents = scope.events.subscribe((definition, active) => {\n\t\t\t\t\tif (active) eventRemovers.set(definition, sessionEvents.register(definition));\n\t\t\t\t\telse {\n\t\t\t\t\t\teventRemovers.get(definition)?.();\n\t\t\t\t\t\teventRemovers.delete(definition);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst unsubscribeProjections = scope.projections.subscribe((definition, active) => {\n\t\t\t\t\tif (active) projectionRemovers.set(definition, sessionProjections.register(definition));\n\t\t\t\t\telse {\n\t\t\t\t\t\tprojectionRemovers.get(definition)?.();\n\t\t\t\t\t\tprojectionRemovers.delete(definition);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst badgeRemovers = new Map<string, () => void>();\n\t\t\t\tconst uiRemovers = new Map<string, () => void>();\n\t\t\t\tconst syncExtensions = (): void => {\n\t\t\t\t\tfor (const remove of badgeRemovers.values()) remove();\n\t\t\t\t\tfor (const remove of uiRemovers.values()) remove();\n\t\t\t\t\tbadgeRemovers.clear();\n\t\t\t\t\tuiRemovers.clear();\n\t\t\t\t\tfor (const badge of scope.extensions.badges)\n\t\t\t\t\t\tbadgeRemovers.set(badge.id, sessionExtensions.registerBadge(badge));\n\t\t\t\t\tfor (const contribution of scope.extensions.ui)\n\t\t\t\t\t\tuiRemovers.set(contribution.id, sessionExtensions.registerUi(contribution));\n\t\t\t\t};\n\t\t\t\tsyncExtensions();\n\t\t\t\tconst unsubscribeExtensions = scope.extensions.subscribe(() => syncExtensions());\n\t\t\t\tremovers.push(unsubscribeEvents, unsubscribeProjections, unsubscribeExtensions, () => {\n\t\t\t\t\tfor (const remove of eventRemovers.values()) remove();\n\t\t\t\t\tfor (const remove of projectionRemovers.values()) remove();\n\t\t\t\t\teventRemovers.clear();\n\t\t\t\t\tprojectionRemovers.clear();\n\t\t\t\t\tfor (const remove of badgeRemovers.values()) remove();\n\t\t\t\t\tfor (const remove of uiRemovers.values()) remove();\n\t\t\t\t\tbadgeRemovers.clear();\n\t\t\t\t\tuiRemovers.clear();\n\t\t\t\t});\n\t\t\t\tpluginHooks.push(...scopeHooks);\n\t\t\t\tconst hookDisposers = new Map<import(\"@di-code/agent\").AgentHookRegistration, () => void>();\n\t\t\t\tconst unsubscribeHooks = scope.hooks.subscribe((hook, active) => {\n\t\t\t\t\tif (!session) return;\n\t\t\t\t\tconst agentHook = hook as unknown as import(\"@di-code/agent\").AgentHookRegistration;\n\t\t\t\t\tif (active) hookDisposers.set(agentHook, session.addHook(agentHook));\n\t\t\t\t\telse {\n\t\t\t\t\t\thookDisposers.get(agentHook)?.();\n\t\t\t\t\t\thookDisposers.delete(agentHook);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tremovers.push(unsubscribeHooks, () => {\n\t\t\t\t\tfor (const dispose of hookDisposers.values()) dispose();\n\t\t\t\t\thookDisposers.clear();\n\t\t\t\t});\n\t\t\t\tscope.onDispose(() => {\n\t\t\t\t\tfor (const remove of removers) remove();\n\t\t\t\t\tfor (const hook of scopeHooks) {\n\t\t\t\t\t\tinitialHookDisposers.get(hook)?.();\n\t\t\t\t\t\tinitialHookDisposers.delete(hook);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tsessionScopes.add(pluginScopes);\n\t\t} catch (error) {\n\t\t\tawait cleanupFailed();\n\t\t\tthrow error;\n\t\t}\n\t\tconst planHook: import(\"@di-code/agent\").AgentHookRegistration | undefined = planMode\n\t\t\t? {\n\t\t\t\t\tkind: \"modifier\",\n\t\t\t\t\tphase: \"pre_step\",\n\t\t\t\t\tonError: \"fail\",\n\t\t\t\t\trun: async (_event, hookContext) => {\n\t\t\t\t\t\tawait planMode?.preStep(hookContext.signal);\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: undefined;\n\t\ttry {\n\t\t\tsession = new AgentSession({\n\t\t\t\t...options,\n\t\t\t\t...(prepareMessages ? { compaction: { ...(options.compaction ?? {}), prepareMessages } } : {}),\n\t\t\t\ttools: sessionContext.require(sessionDependenciesKey).tools,\n\t\t\t\tpromptSections,\n\t\t\t\ttoolPolicy: policy,\n\t\t\t\tgetPromptSnapshot: () => ({\n\t\t\t\t\t...(options.getPromptSnapshot?.() as object | undefined),\n\t\t\t\t\tsessionId: pluginSessionId,\n\t\t\t\t\tmessageCount: options.sessionManager?.messages.length ?? 0,\n\t\t\t\t\tleafId: options.sessionManager?.leafId,\n\t\t\t\t}),\n\t\t\t\tonDispose: async () => {\n\t\t\t\t\tif (sessionScopes.has(pluginScopes)) sessionScopes.delete(pluginScopes);\n\t\t\t\t\tconst results = await Promise.allSettled(pluginScopes.map((scope) => scope.dispose()));\n\t\t\t\t\tawait sessionContext.dispose();\n\t\t\t\t\tconst errors = results\n\t\t\t\t\t\t.filter((result): result is PromiseRejectedResult => result.status === \"rejected\")\n\t\t\t\t\t\t.map((r) => r.reason);\n\t\t\t\t\tif (errors.length > 0) throw new AggregateError(errors, \"Session plugin scope disposal failed\");\n\t\t\t\t},\n\t\t\t\tplanMode,\n\t\t\t\tprojectionRegistry: sessionProjections,\n\t\t\t\textensionFacade: sessionExtensions,\n\t\t\t\thooks: [...(options.hooks ?? []), ...(planHook ? [planHook] : [])],\n\t\t\t});\n\t\t\tfor (const hook of pluginHooks)\n\t\t\t\tinitialHookDisposers.set(\n\t\t\t\t\thook,\n\t\t\t\t\tsession.addHook(hook as unknown as import(\"@di-code/agent\").AgentHookRegistration),\n\t\t\t\t);\n\t\t} catch (error) {\n\t\t\tawait cleanupFailed();\n\t\t\tthrow error;\n\t\t}\n\t\treturn session;\n\t});\n\treturn async () => {\n\t\tunregister();\n\t\tawait Promise.allSettled(sessionPluginRegistry.snapshot().map((registration) => registration.factory.dispose()));\n\t\tawait unregisterRegistry();\n\t\tfor (const scopes of [...sessionScopes]) await Promise.allSettled(scopes.map((scope) => scope.dispose()));\n\t\tsessionScopes.clear();\n\t\tfor (const sessionContext of [...sessionContexts].reverse()) await sessionContext.dispose();\n\t\tsessionContexts.clear();\n\t};\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import type { AssistantMessage, ImageContent, Message, Model, Provider, ThinkingLevel } from "@di-code/ai";
2
- import { type ToolApprovalCapability } from "@di-code/builtins";
2
+ import { type ToolApprovalCapability, type ToolPolicyMode, type ToolPolicySnapshot } from "@di-code/builtins";
3
3
  import type { Context } from "@di-code/plugin-runtime";
4
+ import type { UserInteraction } from "@di-code/plugin-sdk";
4
5
  import type { SessionTreeNode } from "../core/session/types.ts";
5
6
  import { type AgentSessionCompactionOptions, type AgentSessionEvent, type SessionUsage, type TreeNavigationResult } from "../core/session.ts";
6
7
  export type SessionId = string & {
@@ -28,6 +29,7 @@ export interface SessionSnapshot {
28
29
  readonly tree: readonly SessionTreeNode[];
29
30
  readonly stats: SessionStats;
30
31
  readonly readOnly: true;
32
+ readonly events?: readonly import("../core/session/types.ts").SessionEventEntry[];
31
33
  }
32
34
  export interface SessionHostState {
33
35
  readonly disposed: boolean;
@@ -39,6 +41,31 @@ export interface SessionHostState {
39
41
  readonly kind: SessionOperationKind;
40
42
  }[];
41
43
  }
44
+ /** Read-only diagnostics captured while the SessionHost loads Skills and MCP resources. */
45
+ export interface SessionStartupStatus {
46
+ readonly skills: readonly {
47
+ readonly name: string;
48
+ readonly scope: string;
49
+ }[];
50
+ readonly resourceDiagnostics: readonly {
51
+ readonly path: string;
52
+ readonly kind: string;
53
+ readonly stage: string;
54
+ readonly severity: string;
55
+ readonly message: string;
56
+ }[];
57
+ readonly mcpServers: readonly {
58
+ readonly id: string;
59
+ readonly tools: number;
60
+ readonly resources: number;
61
+ readonly prompts: number;
62
+ }[];
63
+ readonly mcpDiagnostics: readonly {
64
+ readonly serverId: string;
65
+ readonly stage: string;
66
+ readonly message: string;
67
+ }[];
68
+ }
42
69
  export type SessionOperationKind = "prompt" | "steer" | "retry" | "compact" | "tree" | "session";
43
70
  export type SessionHostEvent = AgentSessionEvent | {
44
71
  readonly type: "session_changed";
@@ -65,11 +92,19 @@ export interface SessionHostBootstrapOptions {
65
92
  readonly compaction?: AgentSessionCompactionOptions;
66
93
  /** Per-host approval boundary captured by each created AgentSession. */
67
94
  readonly toolApproval?: ToolApprovalCapability;
95
+ readonly toolPolicy?: import("@di-code/builtins").ToolPolicyCapability;
96
+ /** Structured user interaction boundary for session-scoped tools. */
97
+ readonly interaction?: UserInteraction;
98
+ readonly planMode?: {
99
+ readonly section: string;
100
+ };
68
101
  /** Optional managed JSONL file to open before the host is returned. */
69
102
  readonly initialSessionPath?: string;
70
103
  }
71
104
  export interface SessionHost {
72
105
  readonly state: () => SessionHostState;
106
+ /** Returns the resource snapshot captured during host bootstrap. */
107
+ readonly startupStatus: () => SessionStartupStatus;
73
108
  readonly listSessions: () => Promise<readonly SessionInfo[]>;
74
109
  readonly createSession: () => Promise<SessionInfo>;
75
110
  readonly openSession: (sessionId: string) => Promise<SessionInfo>;
@@ -98,6 +133,12 @@ export interface SessionHost {
98
133
  /** Reloads Skills, context and MCP tools after an explicit product-configuration change. */
99
134
  readonly refreshResources: (projectTrusted?: boolean, signal?: AbortSignal) => Promise<void>;
100
135
  readonly usage: () => SessionUsage;
136
+ readonly toolPolicy: () => ToolPolicySnapshot | undefined;
137
+ readonly setToolPolicyMode: (mode: ToolPolicyMode, signal?: AbortSignal) => Promise<ToolPolicySnapshot>;
138
+ readonly planMode: () => import("@di-code/plan-mode").PlanModeProjection | undefined;
139
+ readonly projections: () => readonly import("@di-code/plugin-sdk").SessionProjectionSnapshot[];
140
+ readonly extensions: () => import("@di-code/plugin-sdk").SessionExtensionFacade | undefined;
141
+ readonly planCommand: (args: string) => Promise<string>;
101
142
  readonly ui: () => SessionHostUi;
102
143
  readonly subscribe: (listener: SessionHostListener) => () => void;
103
144
  readonly dispose: () => Promise<void>;
@@ -126,6 +167,10 @@ export interface SessionHostUi {
126
167
  readonly setCompactionEnabled: SessionHost["setCompactionEnabled"];
127
168
  readonly navigateTree: SessionHost["navigateTree"];
128
169
  readonly compact: SessionHost["compact"];
170
+ readonly planMode: SessionHost["planMode"];
171
+ readonly projections: SessionHost["projections"];
172
+ readonly extensions: SessionHost["extensions"];
173
+ readonly planCommand: SessionHost["planCommand"];
129
174
  }
130
175
  export declare class SessionHostError extends Error {
131
176
  readonly code: "INVALID_WORKSPACE" | "NOT_FOUND" | "BUSY" | "SESSION_IN_USE" | "DISPOSED" | "INVALID_INPUT" | "INTERNAL";
@@ -1 +1 @@
1
- {"version":3,"file":"session-host.d.ts","sourceRoot":"","sources":["../../src/runtime/session-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-host.d.ts","sourceRoot":"","sources":["../../src/runtime/session-host.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAKN,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAEN,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EAEtB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,MAAM,oBAAoB,CAAC;AAK5B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,eAAe,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,OAAO,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;CAClF;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,SAAS;QAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;KAAE,EAAE,CAAC;CACvG;AAED,2FAA2F;AAC3F,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9E,QAAQ,CAAC,mBAAmB,EAAE,SAAS;QACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KACzB,EAAE,CAAC;IACJ,QAAQ,CAAC,UAAU,EAAE,SAAS;QAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KACzB,EAAE,CAAC;IACJ,QAAQ,CAAC,cAAc,EAAE,SAAS;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpH;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AACjG,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AACxH,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,6BAA6B,CAAC;IACpD,wEAAwE;IACxE,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,mBAAmB,EAAE,oBAAoB,CAAC;IACvE,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,uEAAuE;IACvE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,gBAAgB,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,MAAM,oBAAoB,CAAC;IACnD,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAC7D,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,QAAQ,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACzE,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACnF,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACvF,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClG,QAAQ,CAAC,gBAAgB,EAAE,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,MAAM,CAAC,EAAE,WAAW,KAChB,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjH,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACtG,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,SAAS,OAAO,aAAa,EAAE,OAAO,EAAE,CAAC;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,SAAS,eAAe,EAAE,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1E,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC;IACpE,gFAAgF;IAChF,QAAQ,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC;IACtE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,aAAa,CAAC;IACnE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IAC7D,4FAA4F;IAC5F,QAAQ,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7F,QAAQ,CAAC,KAAK,EAAE,MAAM,YAAY,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,kBAAkB,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACxG,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,oBAAoB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACrF,QAAQ,CAAC,WAAW,EAAE,MAAM,SAAS,OAAO,qBAAqB,EAAE,yBAAyB,EAAE,CAAC;IAC/F,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,qBAAqB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC5F,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,EAAE,MAAM,aAAa,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,MAAM,IAAI,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAUD,6GAA6G;AAC7G,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,SAAS,KAAK,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,SAAS,OAAO,4BAA4B,EAAE,aAAa,EAAE,CAAC;IACxF,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC;IACxG,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC;IACjE,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC/D,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACnE,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CACjD;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EACV,mBAAmB,GACnB,WAAW,GACX,MAAM,GACN,gBAAgB,GAChB,UAAU,GACV,eAAe,GACf,UAAU,CAAC;gBACF,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKnG;AAoND,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,WAAW,CAAC,CA8oBpH;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AACD,MAAM,WAAW,kBAAmB,SAAQ,2BAA2B;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBACtB,OAAO,EAAE,OAAO;IAGtB,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAWvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM9B"}