@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.
- package/README.md +5 -0
- package/dist/core/session/session-manager.d.ts +18 -1
- package/dist/core/session/session-manager.d.ts.map +1 -1
- package/dist/core/session/session-manager.js +90 -1
- package/dist/core/session/session-manager.js.map +1 -1
- package/dist/core/session/session-storage.d.ts +2 -0
- package/dist/core/session/session-storage.d.ts.map +1 -1
- package/dist/core/session/session-storage.js +22 -1
- package/dist/core/session/session-storage.js.map +1 -1
- package/dist/core/session/types.d.ts +16 -1
- package/dist/core/session/types.d.ts.map +1 -1
- package/dist/core/session/types.js.map +1 -1
- package/dist/core/session.d.ts +27 -2
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +59 -0
- package/dist/core/session.js.map +1 -1
- package/dist/entry.js +1 -1
- package/dist/entry.js.map +1 -1
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.map +1 -1
- package/dist/interactive-host-entry.d.ts.map +1 -1
- package/dist/interactive-host-entry.js +107 -12
- package/dist/interactive-host-entry.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +3 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive-components.d.ts +8 -0
- package/dist/modes/interactive-components.d.ts.map +1 -1
- package/dist/modes/interactive-components.js +7 -2
- package/dist/modes/interactive-components.js.map +1 -1
- package/dist/modes/interactive.d.ts +4 -0
- package/dist/modes/interactive.d.ts.map +1 -1
- package/dist/modes/interactive.js +69 -0
- package/dist/modes/interactive.js.map +1 -1
- package/dist/modes/tree-selector.d.ts.map +1 -1
- package/dist/modes/tree-selector.js +4 -0
- package/dist/modes/tree-selector.js.map +1 -1
- package/dist/rpc/client.d.ts +2 -0
- package/dist/rpc/client.d.ts.map +1 -1
- package/dist/rpc/client.js +3 -0
- package/dist/rpc/client.js.map +1 -1
- package/dist/rpc/dispatcher.d.ts +14 -0
- package/dist/rpc/dispatcher.d.ts.map +1 -1
- package/dist/rpc/dispatcher.js +222 -7
- package/dist/rpc/dispatcher.js.map +1 -1
- package/dist/rpc/protocol.d.ts +12 -5
- package/dist/rpc/protocol.d.ts.map +1 -1
- package/dist/rpc/protocol.js +34 -0
- package/dist/rpc/protocol.js.map +1 -1
- package/dist/rpc/server.d.ts +5 -0
- package/dist/rpc/server.d.ts.map +1 -1
- package/dist/rpc/server.js +4 -0
- package/dist/rpc/server.js.map +1 -1
- package/dist/rpc-server-entry.d.ts.map +1 -1
- package/dist/rpc-server-entry.js +15 -1
- package/dist/rpc-server-entry.js.map +1 -1
- package/dist/runtime/product-host.d.ts +7 -0
- package/dist/runtime/product-host.d.ts.map +1 -1
- package/dist/runtime/product-host.js +29 -9
- package/dist/runtime/product-host.js.map +1 -1
- package/dist/runtime/session-factory.d.ts +18 -2
- package/dist/runtime/session-factory.d.ts.map +1 -1
- package/dist/runtime/session-factory.js +286 -24
- package/dist/runtime/session-factory.js.map +1 -1
- package/dist/runtime/session-host.d.ts +46 -1
- package/dist/runtime/session-host.d.ts.map +1 -1
- package/dist/runtime/session-host.js +38 -6
- package/dist/runtime/session-host.js.map +1 -1
- package/dist/ui-host.d.ts.map +1 -1
- package/dist/ui-host.js +3 -0
- package/dist/ui-host.js.map +1 -1
- package/dist/web/assets/index-C2SOU925.css +1 -0
- package/dist/web/assets/index-knXkInvO.js +41 -0
- package/dist/web/assets/index-knXkInvO.js.map +1 -0
- package/dist/web/index.html +2 -2
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +8 -1
- package/dist/web-command.js.map +1 -1
- package/dist/webui-entry.js +9 -1
- package/dist/webui-entry.js.map +1 -1
- package/dist/webui.d.ts +10 -0
- package/dist/webui.d.ts.map +1 -1
- package/dist/webui.js +21 -0
- package/dist/webui.js.map +1 -1
- package/package.json +11 -9
- package/dist/web/assets/index-C-NyCPxd.css +0 -1
- package/dist/web/assets/index-DgyxuNNG.js +0 -41
- package/dist/web/assets/index-DgyxuNNG.js.map +0 -1
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACN,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,gCAAgC,EAIhC,eAAe,EACf,aAAa,EACb,eAAe,EACf,sBAAsB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAA2B,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAgB,gBAAgB,EAAiB,MAAM,yBAAyB,CAAC;AACxF,OAAO,EACN,0BAA0B,EAC1B,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,EAI/B,wBAAwB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAmD,MAAM,oBAAoB,CAAC;AAwBnG,MAAM,sBAAsB,GAAG,gBAAgB,CAAsB,sBAAsB,CAAC,CAAC;AAE7F,SAAS,2BAA2B,CAAC,KAAc;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IACtH,OAAO,KAAkC,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAoE;IAChG,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,IACC,KAAK,CAAC,IAAI,KAAK,OAAO;YACtB,KAAK,CAAC,SAAS,KAAK,2BAA2B;YAC/C,KAAK,CAAC,SAAS,KAAK,sBAAsB;YAC1C,KAAK,CAAC,aAAa,KAAK,gCAAgC;YAExD,SAAS;QACV,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAChF,MAAM,IAAI,GAAI,OAAuC,CAAC,IAAI,CAAC;YAC3D,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW;gBAAE,OAAO,IAAI,CAAC;QAC5D,CAAC;IACF,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAW,CAAC;IAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC/D,MAAM,qBAAqB,GAAG,2BAA2B,EAAE,CAAC;IAC5D,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;IACxF,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACnG,MAAM,YAAY,GAAG,kBAAkB,CACtC,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,KAAK,EAAE;gBACN,GAAG,KAAK;gBACR,MAAM,EACL,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC3G,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;aAC1C;YACD,WAAW,EAAE,EAAE;SACf,CAAC,CAAC,CACH,CAAC;QACF,MAAM,UAAU,GAAG,OAAO;aACxB,OAAO,CAAC,qBAAqB,CAAC;aAC9B,QAAQ,EAAE;aACV,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,UAAU;YACjC,CAAC,CAAC,KAAK,EAAE,QAAkD,EAAE,MAAoB,EAAE,EAAE;gBACnF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC9D,IACC,OAAO,MAAM,KAAK,QAAQ;oBAC1B,MAAM,KAAK,IAAI;oBACf,CAAC,KAAK,CAAC,OAAO,CAAE,MAA0C,CAAC,QAAQ,CAAC;oBAEpE,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;gBACrF,OAAQ,MAA0E,CAAC,QAAQ,CAAC;YAC7F,CAAC;YACF,CAAC,CAAC,SAAS,CAAC;QACb,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,0BAA0B,EAAE,CAAC;QACnD,MAAM,kBAAkB,GAAG,+BAA+B,EAAE,CAAC;QAC7D,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,cAAc,CAAC,EAAE,CAAC;QAC/E,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,eAAe,CAAC,CAAC;QAC1E,OAAO,CAAC,cAAc,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,KAAK,EAAE,KAA2B,EAAE,MAAoB,EAAiB,EAAE;YAC9F,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACR,CAAC;YACD,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,MAAM,CAAC,MAAM,IAAI,IAAI,YAAY,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;YACxG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC;QACF,IAAI,YAAY,GAAyB,EAAE,CAAC;QAC5C,MAAM,WAAW,GAA0D,EAAE,CAAC;QAC9E,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAmE,CAAC;QACxG,MAAM,cAAc,GAAG,2BAA2B,EAAE,CAAC;QACrD,MAAM,MAAM,GACX,OAAO,CAAC,UAAU;YAClB,uBAAuB,CAAC;gBACvB,SAAS,EAAE,eAAe;gBAC1B,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ;gBAC5F,UAAU,EAAE,OAAO,CAAC,uBAAuB;gBAC3C,WAAW,EAAE,OAAO,CAAC,wBAAwB;gBAC7C,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;oBACnC,IAAI,CAAC,OAAO,CAAC,cAAc;wBAAE,OAAO;oBACpC,MAAM,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC;wBACxC,SAAS,EAAE,2BAA2B;wBACtC,SAAS,EAAE,sBAAsB;wBACjC,aAAa,EAAE,gCAAgC;wBAC/C,OAAO,EAAE,EAAE,IAAI,EAAE;wBACjB,MAAM;qBACN,CAAC,CAAC;gBACJ,CAAC;aACD,CAAC,CAAC;QACJ,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC1E,IAAI,OAAiC,CAAC;QACtC,IAAI,QAAwC,CAAC;QAC7C,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;YACvC,MAAM,MAAM,GAAG,GAAG,EAAE,CACnB,OAAO;gBACN,EAAE,SAAS,EAAE;iBACZ,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;iBACzC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,OAAO,EAAE,KAAK,CAAC,OAAO;aACtB,CAAC,CAAC,IAAI,YAAY,CAAC;YACtB,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC;gBAClE,SAAS,EAAE,eAAe;gBAC1B,MAAM;gBACN,WAAW;gBACX,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,IAAI,KAAK;gBAC3C,cAAc;gBACd,WAAW,EAAE,OAAO,CAAC,WAAW;aAChC,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,eAAe,GAAyB,QAAQ;YACrD,CAAC,CAAC;gBACA,GAAG,MAAM;gBACT,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;oBACjD,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC9B,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;gBACtD,CAAC;aACD;YACF,CAAC,CAAC,MAAM,CAAC;QACV,MAAM,aAAa,GAAG,KAAK,IAAmB,EAAE;YAC/C,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACnC,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACvE,MAAM,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;YAC/B,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC,CAAC;QACF,IAAI,KAAkC,CAAC;QACvC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC9C,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;gBACrB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC;oBAC5C,SAAS;oBACT,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;oBAC9C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;oBAC9C,MAAM,EAAE,eAAe;oBACvB,QAAQ;oBACR,MAAM;oBACN,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;oBAC1D,MAAM,EAAE,YAAY;iBACpB,CAAC;gBACF,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC/C,GAAG,IAAI;oBACP,OAAO,EAAE,KAAK,EAAE,UAAkB,EAAE,UAAiB,EAAE,MAAoB,EAAE,EAAE;wBAC9E,MAAM,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;wBAC/D,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;wBACtD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC3E,CAAC;iBACD,CAAC,CAAC;gBACH,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,aAAa,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC;QACb,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC;YACJ,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE;gBAClF,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,aAAa,GAAG;gBACrB,GAAG,qBAAqB,CAAC,QAAQ,EAAE;gBACnC,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBACtE,IAAI,EAAE,YAAY,KAAK,EAAE;oBACzB,OAAO;oBACP,MAAM;iBACN,CAAC,CAAC;aACH,CAAC;YACF,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CACzC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE;gBACvC,WAAW;aACX,CAAC,CACF,CACD,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpG,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoE,CAAC;gBAClG,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAyE,CAAC;gBAC5G,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAC/C,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gBACnE,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE;oBACpD,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC7E,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE;oBACvE,IAAI,MAAM;wBAAE,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;yBACzE,CAAC;wBACL,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;wBAClC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAClC,CAAC;gBACF,CAAC,CAAC,CAAC;gBACH,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE;oBACjF,IAAI,MAAM;wBAAE,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;yBACnF,CAAC;wBACL,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;wBACvC,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBACvC,CAAC;gBACF,CAAC,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;gBACpD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;gBACjD,MAAM,cAAc,GAAG,GAAS,EAAE;oBACjC,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE;wBAAE,MAAM,EAAE,CAAC;oBACtD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE;wBAAE,MAAM,EAAE,CAAC;oBACnD,aAAa,CAAC,KAAK,EAAE,CAAC;oBACtB,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM;wBAC1C,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrE,KAAK,MAAM,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;wBAC7C,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC9E,CAAC,CAAC;gBACF,cAAc,EAAE,CAAC;gBACjB,MAAM,qBAAqB,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;gBACjF,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,GAAG,EAAE;oBACpF,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE;wBAAE,MAAM,EAAE,CAAC;oBACtD,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,MAAM,EAAE;wBAAE,MAAM,EAAE,CAAC;oBAC3D,aAAa,CAAC,KAAK,EAAE,CAAC;oBACtB,kBAAkB,CAAC,KAAK,EAAE,CAAC;oBAC3B,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE;wBAAE,MAAM,EAAE,CAAC;oBACtD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE;wBAAE,MAAM,EAAE,CAAC;oBACnD,aAAa,CAAC,KAAK,EAAE,CAAC;oBACtB,UAAU,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC;gBACH,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gBAChC,MAAM,aAAa,GAAG,IAAI,GAAG,EAA8D,CAAC;gBAC5F,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;oBAC/D,IAAI,CAAC,OAAO;wBAAE,OAAO;oBACrB,MAAM,SAAS,GAAG,IAAiE,CAAC;oBACpF,IAAI,MAAM;wBAAE,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;yBAChE,CAAC;wBACL,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;wBACjC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACjC,CAAC;gBACF,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;oBACpC,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE;wBAAE,OAAO,EAAE,CAAC;oBACxD,aAAa,CAAC,KAAK,EAAE,CAAC;gBACvB,CAAC,CAAC,CAAC;gBACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;oBACpB,KAAK,MAAM,MAAM,IAAI,QAAQ;wBAAE,MAAM,EAAE,CAAC;oBACxC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;wBAC/B,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;wBACnC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACnC,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;YACD,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,aAAa,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC;QACb,CAAC;QACD,MAAM,QAAQ,GAA+D,QAAQ;YACpF,CAAC,CAAC;gBACA,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,MAAM;gBACf,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;oBAClC,MAAM,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC5C,OAAO,SAAS,CAAC;gBAClB,CAAC;aACD;YACF,CAAC,CAAC,SAAS,CAAC;QACb,IAAI,CAAC;YACJ,OAAO,GAAG,IAAI,YAAY,CAAC;gBAC1B,GAAG,OAAO;gBACV,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9F,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,KAAK;gBAC3D,cAAc;gBACd,UAAU,EAAE,MAAM;gBAClB,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;oBACzB,GAAI,OAAO,CAAC,iBAAiB,EAAE,EAAyB;oBACxD,SAAS,EAAE,eAAe;oBAC1B,YAAY,EAAE,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC;oBAC1D,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM;iBACtC,CAAC;gBACF,SAAS,EAAE,KAAK,IAAI,EAAE;oBACrB,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;wBAAE,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBACxE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACvF,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,OAAO;yBACpB,MAAM,CAAC,CAAC,MAAM,EAAmC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC;yBACjF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBACvB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;wBAAE,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;gBACjG,CAAC;gBACD,QAAQ;gBACR,kBAAkB,EAAE,kBAAkB;gBACtC,eAAe,EAAE,iBAAiB;gBAClC,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAClE,CAAC,CAAC;YACH,KAAK,MAAM,IAAI,IAAI,WAAW;gBAC7B,oBAAoB,CAAC,GAAG,CACvB,IAAI,EACJ,OAAO,CAAC,OAAO,CAAC,IAAiE,CAAC,CAClF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,aAAa,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC;QACb,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,IAAI,EAAE;QACjB,UAAU,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjH,MAAM,kBAAkB,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,aAAa,CAAC;YAAE,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1G,aAAa,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,cAAc,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,OAAO,EAAE;YAAE,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;QAC5F,eAAe,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC,CAAC;AACH,CAAC","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":"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,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-host.d.ts","sourceRoot":"","sources":["../../src/runtime/session-host.ts"],"names":[],"mappings":"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"}
|