@xemahq/agent-session-runtime 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +61 -0
  3. package/dist/index.d.ts +10 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +26 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/composer.d.ts +14 -0
  8. package/dist/lib/composer.d.ts.map +1 -0
  9. package/dist/lib/composer.js +595 -0
  10. package/dist/lib/composer.js.map +1 -0
  11. package/dist/lib/composition-workspace-manifest.d.ts +44 -0
  12. package/dist/lib/composition-workspace-manifest.d.ts.map +1 -0
  13. package/dist/lib/composition-workspace-manifest.js +143 -0
  14. package/dist/lib/composition-workspace-manifest.js.map +1 -0
  15. package/dist/lib/dispatch-contract.d.ts +48 -0
  16. package/dist/lib/dispatch-contract.d.ts.map +1 -0
  17. package/dist/lib/dispatch-contract.js +8 -0
  18. package/dist/lib/dispatch-contract.js.map +1 -0
  19. package/dist/lib/drift-detector.d.ts +40 -0
  20. package/dist/lib/drift-detector.d.ts.map +1 -0
  21. package/dist/lib/drift-detector.js +386 -0
  22. package/dist/lib/drift-detector.js.map +1 -0
  23. package/dist/lib/environment-resolver.d.ts +84 -0
  24. package/dist/lib/environment-resolver.d.ts.map +1 -0
  25. package/dist/lib/environment-resolver.js +181 -0
  26. package/dist/lib/environment-resolver.js.map +1 -0
  27. package/dist/lib/errors.d.ts +12 -0
  28. package/dist/lib/errors.d.ts.map +1 -0
  29. package/dist/lib/errors.js +27 -0
  30. package/dist/lib/errors.js.map +1 -0
  31. package/dist/lib/lifecycle-state.d.ts +23 -0
  32. package/dist/lib/lifecycle-state.d.ts.map +1 -0
  33. package/dist/lib/lifecycle-state.js +70 -0
  34. package/dist/lib/lifecycle-state.js.map +1 -0
  35. package/dist/lib/skill-bundle-template-resolver.d.ts +23 -0
  36. package/dist/lib/skill-bundle-template-resolver.d.ts.map +1 -0
  37. package/dist/lib/skill-bundle-template-resolver.js +54 -0
  38. package/dist/lib/skill-bundle-template-resolver.js.map +1 -0
  39. package/dist/lib/types.d.ts +141 -0
  40. package/dist/lib/types.d.ts.map +1 -0
  41. package/dist/lib/types.js +3 -0
  42. package/dist/lib/types.js.map +1 -0
  43. package/package.json +45 -0
  44. package/src/index.ts +34 -0
  45. package/src/lib/composer.ts +1041 -0
  46. package/src/lib/composition-workspace-manifest.ts +432 -0
  47. package/src/lib/dispatch-contract.ts +156 -0
  48. package/src/lib/drift-detector.ts +497 -0
  49. package/src/lib/environment-resolver.ts +480 -0
  50. package/src/lib/errors.ts +43 -0
  51. package/src/lib/lifecycle-state.ts +139 -0
  52. package/src/lib/skill-bundle-template-resolver.ts +147 -0
  53. package/src/lib/types.ts +443 -0
@@ -0,0 +1,386 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DriftKind = void 0;
4
+ exports.diffResolvedEnvironment = diffResolvedEnvironment;
5
+ var DriftKind;
6
+ (function (DriftKind) {
7
+ DriftKind["AGENT_CHANGED"] = "agent-changed";
8
+ DriftKind["ROLE_CHANGED"] = "role-changed";
9
+ DriftKind["MANIFEST_VERSION_CHANGED"] = "manifest-version-changed";
10
+ DriftKind["MODEL_CHANGED"] = "model-changed";
11
+ DriftKind["SUBAGENT_ADDED"] = "subagent-added";
12
+ DriftKind["SUBAGENT_REMOVED"] = "subagent-removed";
13
+ DriftKind["SUBAGENT_MODEL_CHANGED"] = "subagent-model-changed";
14
+ DriftKind["SKILL_ADDED"] = "skill-added";
15
+ DriftKind["SKILL_REMOVED"] = "skill-removed";
16
+ DriftKind["SKILL_VERSION_CHANGED"] = "skill-version-changed";
17
+ DriftKind["TOOL_SELECTION_ADDED"] = "tool-selection-added";
18
+ DriftKind["TOOL_SELECTION_REMOVED"] = "tool-selection-removed";
19
+ DriftKind["CREDENTIAL_ADDED"] = "credential-added";
20
+ DriftKind["CREDENTIAL_REMOVED"] = "credential-removed";
21
+ DriftKind["CREDENTIAL_KIND_CHANGED"] = "credential-kind-changed";
22
+ DriftKind["PERMISSION_TIGHTENED"] = "permission-tightened";
23
+ DriftKind["PERMISSION_RELAXED"] = "permission-relaxed";
24
+ DriftKind["PERSISTENCE_PATH_ADDED"] = "persistence-path-added";
25
+ DriftKind["PERSISTENCE_PATH_REMOVED"] = "persistence-path-removed";
26
+ DriftKind["OUTPUT_SURFACE_CHANGED"] = "output-surface-changed";
27
+ DriftKind["ENV_VAR_ADDED"] = "env-var-added";
28
+ DriftKind["ENV_VAR_REMOVED"] = "env-var-removed";
29
+ DriftKind["ENV_VAR_VALUE_CHANGED"] = "env-var-value-changed";
30
+ DriftKind["MOUNT_ADDED"] = "mount-added";
31
+ DriftKind["MOUNT_REMOVED"] = "mount-removed";
32
+ DriftKind["MOUNT_MODE_CHANGED"] = "mount-mode-changed";
33
+ })(DriftKind || (exports.DriftKind = DriftKind = {}));
34
+ function diffResolvedEnvironment(prev, next) {
35
+ if (prev.hash === next.hash) {
36
+ return [];
37
+ }
38
+ const drifts = [];
39
+ diffAgent(prev, next, drifts);
40
+ diffSubAgents(prev.subAgents, next.subAgents, drifts);
41
+ diffSkills(prev.skills, next.skills, drifts);
42
+ diffToolSelection(prev.toolSelection, next.toolSelection, drifts);
43
+ diffCredentials(prev.credentials, next.credentials, drifts);
44
+ diffPermissions(prev, next, drifts);
45
+ diffPersistence(prev, next, drifts);
46
+ diffOutputSurface(prev, next, drifts);
47
+ diffEnv(prev, next, drifts);
48
+ diffMounts(prev, next, drifts);
49
+ return drifts;
50
+ }
51
+ function diffAgent(prev, next, out) {
52
+ if (prev.manifest.version !== next.manifest.version) {
53
+ out.push({
54
+ kind: DriftKind.MANIFEST_VERSION_CHANGED,
55
+ severity: 'info',
56
+ path: '$.manifest.version',
57
+ before: prev.manifest.version,
58
+ after: next.manifest.version,
59
+ message: `Manifest version moved ${prev.manifest.version} → ${next.manifest.version}.`,
60
+ });
61
+ }
62
+ if (prev.agent.slug !== next.agent.slug) {
63
+ out.push({
64
+ kind: DriftKind.AGENT_CHANGED,
65
+ severity: 'warning',
66
+ path: '$.agent.slug',
67
+ before: prev.agent.slug,
68
+ after: next.agent.slug,
69
+ message: `Primary agent slug changed ${prev.agent.slug} → ${next.agent.slug}; the session resumes with the new agent.`,
70
+ });
71
+ }
72
+ if (prev.agent.role !== next.agent.role) {
73
+ out.push({
74
+ kind: DriftKind.ROLE_CHANGED,
75
+ severity: 'info',
76
+ path: '$.agent.role',
77
+ before: prev.agent.role,
78
+ after: next.agent.role,
79
+ message: `Agent role changed ${prev.agent.role} → ${next.agent.role}; AGENTS.md will be re-rendered.`,
80
+ });
81
+ }
82
+ const prevModel = JSON.stringify(prev.agent.model ?? null);
83
+ const nextModel = JSON.stringify(next.agent.model ?? null);
84
+ if (prevModel !== nextModel) {
85
+ out.push({
86
+ kind: DriftKind.MODEL_CHANGED,
87
+ severity: 'info',
88
+ path: '$.agent.model',
89
+ before: prev.agent.model,
90
+ after: next.agent.model,
91
+ message: 'Primary agent default model changed.',
92
+ });
93
+ }
94
+ }
95
+ function diffSubAgents(prev, next, out) {
96
+ const prevBySlug = new Map(prev.map((s) => [s.slug, s]));
97
+ const nextBySlug = new Map(next.map((s) => [s.slug, s]));
98
+ for (const [slug, n] of nextBySlug) {
99
+ const p = prevBySlug.get(slug);
100
+ if (!p) {
101
+ out.push({
102
+ kind: DriftKind.SUBAGENT_ADDED,
103
+ severity: 'info',
104
+ path: `$.subAgents[${slug}]`,
105
+ after: n,
106
+ message: `Sub-agent '${slug}' added.`,
107
+ });
108
+ continue;
109
+ }
110
+ if (JSON.stringify(p.modelOverride ?? null) !== JSON.stringify(n.modelOverride ?? null)) {
111
+ out.push({
112
+ kind: DriftKind.SUBAGENT_MODEL_CHANGED,
113
+ severity: 'info',
114
+ path: `$.subAgents[${slug}].modelOverride`,
115
+ before: p.modelOverride,
116
+ after: n.modelOverride,
117
+ message: `Sub-agent '${slug}' model override changed.`,
118
+ });
119
+ }
120
+ }
121
+ for (const [slug, p] of prevBySlug) {
122
+ if (!nextBySlug.has(slug)) {
123
+ out.push({
124
+ kind: DriftKind.SUBAGENT_REMOVED,
125
+ severity: 'warning',
126
+ path: `$.subAgents[${slug}]`,
127
+ before: p,
128
+ message: `Sub-agent '${slug}' removed; existing delegations may fail until the session is restarted.`,
129
+ });
130
+ }
131
+ }
132
+ }
133
+ function diffSkills(prev, next, out) {
134
+ const prevBySlug = new Map(prev.map((s) => [s.slug, s]));
135
+ const nextBySlug = new Map(next.map((s) => [s.slug, s]));
136
+ for (const [slug, n] of nextBySlug) {
137
+ const p = prevBySlug.get(slug);
138
+ if (!p) {
139
+ out.push({
140
+ kind: DriftKind.SKILL_ADDED,
141
+ severity: 'info',
142
+ path: `$.skills[${slug}]`,
143
+ after: n,
144
+ message: `Skill '${slug}' added.`,
145
+ });
146
+ continue;
147
+ }
148
+ if (p.version !== n.version) {
149
+ out.push({
150
+ kind: DriftKind.SKILL_VERSION_CHANGED,
151
+ severity: 'info',
152
+ path: `$.skills[${slug}].version`,
153
+ before: p.version,
154
+ after: n.version,
155
+ message: `Skill '${slug}' version moved ${p.version ?? '*'} → ${n.version ?? '*'}.`,
156
+ });
157
+ }
158
+ }
159
+ for (const [slug, p] of prevBySlug) {
160
+ if (!nextBySlug.has(slug)) {
161
+ out.push({
162
+ kind: DriftKind.SKILL_REMOVED,
163
+ severity: 'warning',
164
+ path: `$.skills[${slug}]`,
165
+ before: p,
166
+ message: `Skill '${slug}' removed.`,
167
+ });
168
+ }
169
+ }
170
+ }
171
+ function toolSelectionKey(entry) {
172
+ return entry.kind === 'tool'
173
+ ? `tool:${entry.providerKind}:${entry.resourceId}:${entry.toolName}`
174
+ : `provider:${entry.providerKind}:${entry.resourceId}`;
175
+ }
176
+ function diffToolSelection(prev, next, out) {
177
+ const prevByKey = new Map(prev.map((e) => [toolSelectionKey(e), e]));
178
+ const nextByKey = new Map(next.map((e) => [toolSelectionKey(e), e]));
179
+ for (const [key, n] of nextByKey) {
180
+ if (!prevByKey.has(key)) {
181
+ out.push({
182
+ kind: DriftKind.TOOL_SELECTION_ADDED,
183
+ severity: 'info',
184
+ path: `$.toolSelection[${key}]`,
185
+ after: n,
186
+ message: `Tool selection entry '${key}' added.`,
187
+ });
188
+ }
189
+ }
190
+ for (const [key, p] of prevByKey) {
191
+ if (!nextByKey.has(key)) {
192
+ out.push({
193
+ kind: DriftKind.TOOL_SELECTION_REMOVED,
194
+ severity: 'warning',
195
+ path: `$.toolSelection[${key}]`,
196
+ before: p,
197
+ message: `Tool selection entry '${key}' removed.`,
198
+ });
199
+ }
200
+ }
201
+ }
202
+ function diffCredentials(prev, next, out) {
203
+ const prevByName = new Map(prev.map((c) => [c.name, c]));
204
+ const nextByName = new Map(next.map((c) => [c.name, c]));
205
+ for (const [name, n] of nextByName) {
206
+ const p = prevByName.get(name);
207
+ if (!p) {
208
+ out.push({
209
+ kind: DriftKind.CREDENTIAL_ADDED,
210
+ severity: 'info',
211
+ path: `$.credentials[${name}]`,
212
+ after: n,
213
+ message: `Credential '${name}' added.`,
214
+ });
215
+ continue;
216
+ }
217
+ if (p.kind !== n.kind) {
218
+ out.push({
219
+ kind: DriftKind.CREDENTIAL_KIND_CHANGED,
220
+ severity: 'warning',
221
+ path: `$.credentials[${name}].kind`,
222
+ before: p.kind,
223
+ after: n.kind,
224
+ message: `Credential '${name}' kind changed ${p.kind} → ${n.kind}; the resolver will re-route it on resume.`,
225
+ });
226
+ }
227
+ }
228
+ for (const [name, p] of prevByName) {
229
+ if (!nextByName.has(name)) {
230
+ out.push({
231
+ kind: DriftKind.CREDENTIAL_REMOVED,
232
+ severity: 'warning',
233
+ path: `$.credentials[${name}]`,
234
+ before: p,
235
+ message: `Credential '${name}' removed${p.required ? ' (was required; the session resumes with the remaining credentials)' : ''}.`,
236
+ });
237
+ }
238
+ }
239
+ }
240
+ function diffPermissions(prev, next, out) {
241
+ const prevAllow = new Set(prev.permissions.tools.allow);
242
+ const nextAllow = new Set(next.permissions.tools.allow);
243
+ const prevDeny = new Set(prev.permissions.tools.deny);
244
+ const nextDeny = new Set(next.permissions.tools.deny);
245
+ for (const tool of prevAllow) {
246
+ if (!nextAllow.has(tool) || nextDeny.has(tool)) {
247
+ out.push({
248
+ kind: DriftKind.PERMISSION_TIGHTENED,
249
+ severity: 'warning',
250
+ path: `$.permissions.tools.${tool}`,
251
+ before: 'allow',
252
+ after: nextDeny.has(tool) ? 'deny' : 'unset',
253
+ message: `Tool '${tool}' is no longer allowed.`,
254
+ });
255
+ }
256
+ }
257
+ for (const tool of nextAllow) {
258
+ if (!prevAllow.has(tool) || prevDeny.has(tool)) {
259
+ out.push({
260
+ kind: DriftKind.PERMISSION_RELAXED,
261
+ severity: 'info',
262
+ path: `$.permissions.tools.${tool}`,
263
+ before: prevDeny.has(tool) ? 'deny' : 'unset',
264
+ after: 'allow',
265
+ message: `Tool '${tool}' is now allowed.`,
266
+ });
267
+ }
268
+ }
269
+ }
270
+ function diffPersistence(prev, next, out) {
271
+ const prevPaths = new Set(prev.persistence.paths);
272
+ const nextPaths = new Set(next.persistence.paths);
273
+ for (const path of nextPaths) {
274
+ if (!prevPaths.has(path)) {
275
+ out.push({
276
+ kind: DriftKind.PERSISTENCE_PATH_ADDED,
277
+ severity: 'info',
278
+ path: `$.persistence.paths`,
279
+ after: path,
280
+ message: `Persistence path '${path}' added; future pauses will snapshot it.`,
281
+ });
282
+ }
283
+ }
284
+ for (const path of prevPaths) {
285
+ if (!nextPaths.has(path)) {
286
+ out.push({
287
+ kind: DriftKind.PERSISTENCE_PATH_REMOVED,
288
+ severity: 'info',
289
+ path: `$.persistence.paths`,
290
+ before: path,
291
+ message: `Persistence path '${path}' removed; future pauses will not snapshot it.`,
292
+ });
293
+ }
294
+ }
295
+ }
296
+ function diffOutputSurface(prev, next, out) {
297
+ if (prev.outputSurface.kind !== next.outputSurface.kind ||
298
+ prev.outputSurface.port !== next.outputSurface.port ||
299
+ prev.outputSurface.healthPath !== next.outputSurface.healthPath ||
300
+ prev.outputSurface.mode !== next.outputSurface.mode) {
301
+ out.push({
302
+ kind: DriftKind.OUTPUT_SURFACE_CHANGED,
303
+ severity: 'info',
304
+ path: '$.outputSurface',
305
+ before: prev.outputSurface,
306
+ after: next.outputSurface,
307
+ message: 'Output surface configuration changed.',
308
+ });
309
+ }
310
+ }
311
+ function diffEnv(prev, next, out) {
312
+ const prevByName = new Map(prev.env.map((e) => [e.name, e.value]));
313
+ const nextByName = new Map(next.env.map((e) => [e.name, e.value]));
314
+ for (const [name, value] of nextByName) {
315
+ const prevValue = prevByName.get(name);
316
+ if (prevValue === undefined) {
317
+ out.push({
318
+ kind: DriftKind.ENV_VAR_ADDED,
319
+ severity: 'info',
320
+ path: `$.env[${name}]`,
321
+ after: value,
322
+ message: `Env var '${name}' added.`,
323
+ });
324
+ }
325
+ else if (prevValue !== value) {
326
+ out.push({
327
+ kind: DriftKind.ENV_VAR_VALUE_CHANGED,
328
+ severity: 'info',
329
+ path: `$.env[${name}]`,
330
+ before: prevValue,
331
+ after: value,
332
+ message: `Env var '${name}' value changed.`,
333
+ });
334
+ }
335
+ }
336
+ for (const name of prevByName.keys()) {
337
+ if (!nextByName.has(name)) {
338
+ out.push({
339
+ kind: DriftKind.ENV_VAR_REMOVED,
340
+ severity: 'warning',
341
+ path: `$.env[${name}]`,
342
+ before: prevByName.get(name),
343
+ message: `Env var '${name}' removed.`,
344
+ });
345
+ }
346
+ }
347
+ }
348
+ function diffMounts(prev, next, out) {
349
+ const prevSlots = new Map(prev.mountPlan.entries.map((e) => [e.slot, e]));
350
+ const nextSlots = new Map(next.mountPlan.entries.map((e) => [e.slot, e]));
351
+ for (const [slot, entry] of nextSlots) {
352
+ const prevEntry = prevSlots.get(slot);
353
+ if (!prevEntry) {
354
+ out.push({
355
+ kind: DriftKind.MOUNT_ADDED,
356
+ severity: 'info',
357
+ path: `$.mounts[${slot}]`,
358
+ after: { mountKey: entry.mountKey },
359
+ message: `Mount slot '${slot}' added.`,
360
+ });
361
+ continue;
362
+ }
363
+ if (prevEntry.mode !== entry.mode) {
364
+ out.push({
365
+ kind: DriftKind.MOUNT_MODE_CHANGED,
366
+ severity: 'warning',
367
+ path: `$.mounts[${slot}].mode`,
368
+ before: prevEntry.mode,
369
+ after: entry.mode,
370
+ message: `Mount slot '${slot}' mode changed ${prevEntry.mode} → ${entry.mode}.`,
371
+ });
372
+ }
373
+ }
374
+ for (const slot of prevSlots.keys()) {
375
+ if (!nextSlots.has(slot)) {
376
+ out.push({
377
+ kind: DriftKind.MOUNT_REMOVED,
378
+ severity: 'warning',
379
+ path: `$.mounts[${slot}]`,
380
+ before: { slot },
381
+ message: `Mount slot '${slot}' removed.`,
382
+ });
383
+ }
384
+ }
385
+ }
386
+ //# sourceMappingURL=drift-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift-detector.js","sourceRoot":"","sources":["../../src/lib/drift-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { IntrinsicFloorTool } from '@xemahq/kernel-contracts/agent-composition';
2
+ import type { WorkspaceMountPlan } from '@xemahq/kernel-contracts/agent-workspace';
3
+ import { type ToolSelectionEntry } from '@xemahq/kernel-contracts/mcp-tool';
4
+ import type { CompiledWorkspaceManifest } from '@xemahq/dsl/workspace-manifest';
5
+ import { ManifestSurface, type AgentRunRole, type Briefcase, type CompiledManifestCredential, type CompiledManifestDisplay, type CompiledManifestPermissions, type CompiledManifestPersistence, type CompiledManifestOutputSurface, type CompiledManifestSkillRef, type ModelRef, type SubAgentBinding } from '@xemahq/kernel-contracts/workflow';
6
+ import type { TemplateResolver, WorkspaceImageComposer } from './types';
7
+ export type SurfaceContext = {
8
+ readonly kind: typeof ManifestSurface.WORKFLOW;
9
+ readonly orgId: string;
10
+ readonly projectId: string;
11
+ readonly runId: string;
12
+ readonly jobRunId: string;
13
+ } | {
14
+ readonly kind: typeof ManifestSurface.AGENT_SESSION;
15
+ readonly orgId: string;
16
+ readonly projectId: string;
17
+ readonly sessionId: string;
18
+ readonly turnGen?: number;
19
+ };
20
+ export interface ExplicitEnvironmentOverrides {
21
+ readonly model?: ModelRef;
22
+ readonly subAgents?: readonly SubAgentBinding[];
23
+ readonly role?: AgentRunRole;
24
+ readonly deliverableSpecRef?: string;
25
+ }
26
+ export interface EnvironmentResolverRequest {
27
+ readonly manifest: CompiledWorkspaceManifest;
28
+ readonly surface: SurfaceContext;
29
+ readonly overrides?: ExplicitEnvironmentOverrides;
30
+ readonly agentContext: Readonly<Record<string, unknown>>;
31
+ readonly templateResolver?: TemplateResolver;
32
+ readonly systemSkillSlugs?: readonly string[];
33
+ readonly mcpResolver?: McpStanzaResolver;
34
+ readonly briefcase?: Briefcase;
35
+ }
36
+ export interface McpStanzaResolver {
37
+ resolve(selection: readonly ToolSelectionEntry[], context: McpStanzaResolverContext): Promise<Record<string, unknown>>;
38
+ }
39
+ export interface McpStanzaResolverContext {
40
+ readonly orgId: string;
41
+ readonly projectId: string;
42
+ readonly sessionId?: string;
43
+ readonly actorSubject?: string;
44
+ }
45
+ export interface ResolvedEnvironment {
46
+ readonly surface: ManifestSurface;
47
+ readonly manifest: {
48
+ readonly slug: string;
49
+ readonly version: string;
50
+ };
51
+ readonly display: CompiledManifestDisplay;
52
+ readonly agent: {
53
+ readonly slug: string;
54
+ readonly role: AgentRunRole;
55
+ readonly deliverableSpecRef?: string;
56
+ readonly model?: ModelRef;
57
+ };
58
+ readonly subAgents: readonly SubAgentBinding[];
59
+ readonly skills: readonly CompiledManifestSkillRef[];
60
+ readonly toolSelection: readonly ToolSelectionEntry[];
61
+ readonly intrinsicFloorTools: readonly IntrinsicFloorTool[];
62
+ readonly credentials: readonly CompiledManifestCredential[];
63
+ readonly permissions: CompiledManifestPermissions;
64
+ readonly persistence: CompiledManifestPersistence;
65
+ readonly outputSurface: CompiledManifestOutputSurface;
66
+ readonly mountPlan: WorkspaceMountPlan;
67
+ readonly env: readonly {
68
+ readonly name: string;
69
+ readonly value: string;
70
+ }[];
71
+ readonly mcpServers: Readonly<Record<string, unknown>>;
72
+ readonly hash: string;
73
+ }
74
+ export interface EnvironmentResolver {
75
+ resolve(req: EnvironmentResolverRequest): Promise<ResolvedEnvironment>;
76
+ }
77
+ export declare class DefaultEnvironmentResolver implements EnvironmentResolver {
78
+ private readonly composer;
79
+ constructor(composer: WorkspaceImageComposer);
80
+ resolve(req: EnvironmentResolverRequest): Promise<ResolvedEnvironment>;
81
+ private assertSurfaceCompat;
82
+ }
83
+ export declare function mergeSubAgents(base: readonly SubAgentBinding[], overrides: readonly SubAgentBinding[] | undefined): readonly SubAgentBinding[];
84
+ //# sourceMappingURL=environment-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/environment-resolver.ts"],"names":[],"mappings":"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"}