@xemahq/agent-session-runtime 0.8.0 → 0.9.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 (29) hide show
  1. package/dist/lib/composer.d.ts +25 -2
  2. package/dist/lib/composer.d.ts.map +1 -1
  3. package/dist/lib/composer.js +237 -81
  4. package/dist/lib/composer.js.map +1 -1
  5. package/dist/lib/launch-identity/index.d.ts +2 -0
  6. package/dist/lib/launch-identity/index.d.ts.map +1 -1
  7. package/dist/lib/launch-identity/index.js +2 -0
  8. package/dist/lib/launch-identity/index.js.map +1 -1
  9. package/dist/lib/launch-identity/preparation-generation.d.ts +26 -0
  10. package/dist/lib/launch-identity/preparation-generation.d.ts.map +1 -0
  11. package/dist/lib/launch-identity/preparation-generation.js +88 -0
  12. package/dist/lib/launch-identity/preparation-generation.js.map +1 -0
  13. package/dist/lib/launch-identity/prepared-launch-variant.d.ts +46 -0
  14. package/dist/lib/launch-identity/prepared-launch-variant.d.ts.map +1 -0
  15. package/dist/lib/launch-identity/prepared-launch-variant.js +118 -0
  16. package/dist/lib/launch-identity/prepared-launch-variant.js.map +1 -0
  17. package/package.json +6 -6
  18. package/src/lib/composer.ts +396 -135
  19. package/src/lib/launch-identity/index.ts +2 -0
  20. package/src/lib/launch-identity/preparation-generation.ts +171 -0
  21. package/src/lib/launch-identity/prepared-launch-variant.ts +263 -0
  22. package/dist/lib/composition-resolution.d.ts +0 -43
  23. package/dist/lib/composition-resolution.d.ts.map +0 -1
  24. package/dist/lib/composition-resolution.js +0 -236
  25. package/dist/lib/composition-resolution.js.map +0 -1
  26. package/dist/lib/composition-workspace-manifest.d.ts +0 -51
  27. package/dist/lib/composition-workspace-manifest.d.ts.map +0 -1
  28. package/dist/lib/composition-workspace-manifest.js +0 -178
  29. package/dist/lib/composition-workspace-manifest.js.map +0 -1
@@ -1,6 +1,8 @@
1
1
  export * from './canonical-contract';
2
2
  export * from './compiled-session-launch-plan';
3
3
  export * from './compiled-session-launch-plan-store';
4
+ export * from './preparation-generation';
5
+ export * from './prepared-launch-variant';
4
6
  export * from './runtime-template-key';
5
7
  export * from './session-binding';
6
8
  export * from './thread-reuse-key';
@@ -0,0 +1,171 @@
1
+ import {
2
+ canonicalContractJson,
3
+ hashCanonicalContract,
4
+ requireEnumValue,
5
+ requireExactObject,
6
+ requireNonEmptyString,
7
+ requireNonNegativeSafeInteger,
8
+ requireSha256,
9
+ } from './canonical-contract';
10
+
11
+ export enum PreparationGenerationStatus {
12
+ Validating = 'validating',
13
+ Materializing = 'materializing',
14
+ Ready = 'ready',
15
+ Failed = 'failed',
16
+ Superseded = 'superseded',
17
+ }
18
+
19
+ export interface PreparationFailure {
20
+ readonly code: string;
21
+ readonly message: string;
22
+ }
23
+
24
+ export interface PreparationGeneration {
25
+ readonly id: string;
26
+ readonly agentRevisionId: string;
27
+ readonly sourceGenerationHash: string;
28
+ readonly requiredVariantKeyHashes: readonly string[];
29
+ readonly status: PreparationGenerationStatus;
30
+ readonly failure?: PreparationFailure;
31
+ readonly rowVersion: number;
32
+ }
33
+
34
+ const GENERATION_KEYS = [
35
+ 'id',
36
+ 'agentRevisionId',
37
+ 'sourceGenerationHash',
38
+ 'requiredVariantKeyHashes',
39
+ 'status',
40
+ 'rowVersion',
41
+ ] as const;
42
+ const GENERATION_OPTIONAL_KEYS = ['failure'] as const;
43
+ const FAILURE_KEYS = ['code', 'message'] as const;
44
+ const GENERATION_STATUSES = Object.values(PreparationGenerationStatus);
45
+
46
+ export function createPreparationFailure(input: unknown): PreparationFailure {
47
+ const object = requireExactObject(input, 'PreparationFailure', FAILURE_KEYS);
48
+ return Object.freeze({
49
+ code: requireNonEmptyString(object.code, 'PreparationFailure.code'),
50
+ message: requireNonEmptyString(
51
+ object.message,
52
+ 'PreparationFailure.message',
53
+ ),
54
+ });
55
+ }
56
+
57
+ export function createPreparationGeneration(
58
+ input: unknown,
59
+ ): PreparationGeneration {
60
+ const object = requireExactObject(
61
+ input,
62
+ 'PreparationGeneration',
63
+ GENERATION_KEYS,
64
+ GENERATION_OPTIONAL_KEYS,
65
+ );
66
+ const status = requireEnumValue(
67
+ object.status,
68
+ 'PreparationGeneration.status',
69
+ GENERATION_STATUSES,
70
+ );
71
+ const failure = requireFailureForStatus(
72
+ object.failure,
73
+ Object.hasOwn(object, 'failure'),
74
+ status,
75
+ 'PreparationGeneration',
76
+ );
77
+
78
+ return Object.freeze({
79
+ id: requireNonEmptyString(object.id, 'PreparationGeneration.id'),
80
+ agentRevisionId: requireNonEmptyString(
81
+ object.agentRevisionId,
82
+ 'PreparationGeneration.agentRevisionId',
83
+ ),
84
+ sourceGenerationHash: requireSha256(
85
+ object.sourceGenerationHash,
86
+ 'PreparationGeneration.sourceGenerationHash',
87
+ ),
88
+ requiredVariantKeyHashes: requireSortedUniqueHashes(
89
+ object.requiredVariantKeyHashes,
90
+ 'PreparationGeneration.requiredVariantKeyHashes',
91
+ ),
92
+ status,
93
+ ...(failure === undefined ? {} : { failure }),
94
+ rowVersion: requireNonNegativeSafeInteger(
95
+ object.rowVersion,
96
+ 'PreparationGeneration.rowVersion',
97
+ ),
98
+ });
99
+ }
100
+
101
+ export function serializePreparationGeneration(
102
+ input: PreparationGeneration,
103
+ ): string {
104
+ return canonicalContractJson(createPreparationGeneration(input));
105
+ }
106
+
107
+ export function hashPreparationGeneration(
108
+ input: PreparationGeneration,
109
+ ): string {
110
+ return hashCanonicalContract(createPreparationGeneration(input));
111
+ }
112
+
113
+ export function requirePreparationFailureForStatus(
114
+ value: unknown,
115
+ hasFailure: boolean,
116
+ failed: boolean,
117
+ path: string,
118
+ ): PreparationFailure | undefined {
119
+ if (failed) {
120
+ if (!hasFailure) {
121
+ throw new TypeError(`${path}.failure is required when status is failed.`);
122
+ }
123
+ return createPreparationFailure(value);
124
+ }
125
+ if (hasFailure) {
126
+ throw new TypeError(
127
+ `${path}.failure is only supported when status is failed.`,
128
+ );
129
+ }
130
+ return undefined;
131
+ }
132
+
133
+ function requireFailureForStatus(
134
+ value: unknown,
135
+ hasFailure: boolean,
136
+ status: PreparationGenerationStatus,
137
+ path: string,
138
+ ): PreparationFailure | undefined {
139
+ return requirePreparationFailureForStatus(
140
+ value,
141
+ hasFailure,
142
+ status === PreparationGenerationStatus.Failed,
143
+ path,
144
+ );
145
+ }
146
+
147
+ function requireSortedUniqueHashes(
148
+ value: unknown,
149
+ path: string,
150
+ ): readonly string[] {
151
+ if (!Array.isArray(value)) {
152
+ throw new TypeError(`${path} must be an array.`);
153
+ }
154
+
155
+ const hashes = value.map((entry, index) =>
156
+ requireSha256(entry, `${path}[${index}]`),
157
+ );
158
+ for (let index = 1; index < hashes.length; index += 1) {
159
+ const previous = hashes[index - 1];
160
+ const current = hashes[index];
161
+ if (previous === undefined || current === undefined) {
162
+ throw new TypeError(`${path} contains an invalid sparse entry.`);
163
+ }
164
+ if (previous >= current) {
165
+ throw new TypeError(
166
+ `${path} must contain unique hashes in ascending lexical order.`,
167
+ );
168
+ }
169
+ }
170
+ return Object.freeze(hashes);
171
+ }
@@ -0,0 +1,263 @@
1
+ import { WorkerRuntimeKind } from '@xemahq/kernel-contracts/worker-runtime';
2
+
3
+ import {
4
+ canonicalContractJson,
5
+ hashCanonicalContract,
6
+ requireEnumValue,
7
+ requireExactObject,
8
+ requireImageDigest,
9
+ requireNonEmptyString,
10
+ requireNonNegativeSafeInteger,
11
+ requireSha256,
12
+ } from './canonical-contract';
13
+ import {
14
+ requirePreparationFailureForStatus,
15
+ type PreparationFailure,
16
+ } from './preparation-generation';
17
+ import {
18
+ RuntimeTemplateTenantDependency,
19
+ RuntimeTemplateTrustPolicy,
20
+ } from './runtime-template-key';
21
+
22
+ export enum PreparedLaunchVariantStatus {
23
+ Materializing = 'materializing',
24
+ Ready = 'ready',
25
+ Failed = 'failed',
26
+ Retired = 'retired',
27
+ }
28
+
29
+ export type PreparedLaunchTenantDependency =
30
+ | {
31
+ readonly kind: RuntimeTemplateTenantDependency.OrganizationNeutral;
32
+ }
33
+ | {
34
+ readonly kind: RuntimeTemplateTenantDependency.OrganizationBound;
35
+ readonly organizationScopeHash: string;
36
+ };
37
+
38
+ export interface PreparedLaunchVariantKey {
39
+ readonly schemaVersion: 1;
40
+ readonly runtimeKind: WorkerRuntimeKind;
41
+ readonly runtimeRevision: string;
42
+ readonly imageDigest: `sha256:${string}`;
43
+ readonly layoutProfileRef: string;
44
+ readonly staticDependencyClosureHash: string;
45
+ readonly tenantDependency: PreparedLaunchTenantDependency;
46
+ readonly trustPolicy: RuntimeTemplateTrustPolicy;
47
+ readonly policyGenerationHash: string;
48
+ readonly region: string;
49
+ }
50
+
51
+ export interface PreparedLaunchVariant {
52
+ readonly id: string;
53
+ readonly preparationGenerationId: string;
54
+ readonly key: PreparedLaunchVariantKey;
55
+ readonly keyHash: string;
56
+ readonly compiledLaunchPlanHash: string;
57
+ readonly preparedRuntimeTemplateHash: string;
58
+ readonly preparedRuntimeTemplateRef: string;
59
+ readonly status: PreparedLaunchVariantStatus;
60
+ readonly failure?: PreparationFailure;
61
+ readonly rowVersion: number;
62
+ }
63
+
64
+ const KEY_KEYS = [
65
+ 'schemaVersion',
66
+ 'runtimeKind',
67
+ 'runtimeRevision',
68
+ 'imageDigest',
69
+ 'layoutProfileRef',
70
+ 'staticDependencyClosureHash',
71
+ 'tenantDependency',
72
+ 'trustPolicy',
73
+ 'policyGenerationHash',
74
+ 'region',
75
+ ] as const;
76
+ const VARIANT_KEYS = [
77
+ 'id',
78
+ 'preparationGenerationId',
79
+ 'key',
80
+ 'keyHash',
81
+ 'compiledLaunchPlanHash',
82
+ 'preparedRuntimeTemplateHash',
83
+ 'preparedRuntimeTemplateRef',
84
+ 'status',
85
+ 'rowVersion',
86
+ ] as const;
87
+ const VARIANT_OPTIONAL_KEYS = ['failure'] as const;
88
+ const RUNTIME_KINDS = Object.values(WorkerRuntimeKind);
89
+ const TENANT_DEPENDENCY_KINDS = Object.values(RuntimeTemplateTenantDependency);
90
+ const TRUST_POLICIES = Object.values(RuntimeTemplateTrustPolicy);
91
+ const VARIANT_STATUSES = Object.values(PreparedLaunchVariantStatus);
92
+
93
+ export function createPreparedLaunchVariantKey(
94
+ input: unknown,
95
+ ): PreparedLaunchVariantKey {
96
+ const object = requireExactObject(
97
+ input,
98
+ 'PreparedLaunchVariantKey',
99
+ KEY_KEYS,
100
+ );
101
+ if (object.schemaVersion !== 1) {
102
+ throw new TypeError('PreparedLaunchVariantKey.schemaVersion must be 1.');
103
+ }
104
+
105
+ return Object.freeze({
106
+ schemaVersion: 1,
107
+ runtimeKind: requireEnumValue(
108
+ object.runtimeKind,
109
+ 'PreparedLaunchVariantKey.runtimeKind',
110
+ RUNTIME_KINDS,
111
+ ),
112
+ runtimeRevision: requireNonEmptyString(
113
+ object.runtimeRevision,
114
+ 'PreparedLaunchVariantKey.runtimeRevision',
115
+ ),
116
+ imageDigest: requireImageDigest(
117
+ object.imageDigest,
118
+ 'PreparedLaunchVariantKey.imageDigest',
119
+ ) as `sha256:${string}`,
120
+ layoutProfileRef: requireNonEmptyString(
121
+ object.layoutProfileRef,
122
+ 'PreparedLaunchVariantKey.layoutProfileRef',
123
+ ),
124
+ staticDependencyClosureHash: requireSha256(
125
+ object.staticDependencyClosureHash,
126
+ 'PreparedLaunchVariantKey.staticDependencyClosureHash',
127
+ ),
128
+ tenantDependency: requireTenantDependency(object.tenantDependency),
129
+ trustPolicy: requireEnumValue(
130
+ object.trustPolicy,
131
+ 'PreparedLaunchVariantKey.trustPolicy',
132
+ TRUST_POLICIES,
133
+ ),
134
+ policyGenerationHash: requireSha256(
135
+ object.policyGenerationHash,
136
+ 'PreparedLaunchVariantKey.policyGenerationHash',
137
+ ),
138
+ region: requireNonEmptyString(
139
+ object.region,
140
+ 'PreparedLaunchVariantKey.region',
141
+ ),
142
+ });
143
+ }
144
+
145
+ export function serializePreparedLaunchVariantKey(
146
+ input: PreparedLaunchVariantKey,
147
+ ): string {
148
+ return canonicalContractJson(createPreparedLaunchVariantKey(input));
149
+ }
150
+
151
+ export function hashPreparedLaunchVariantKey(
152
+ input: PreparedLaunchVariantKey,
153
+ ): string {
154
+ return hashCanonicalContract(createPreparedLaunchVariantKey(input));
155
+ }
156
+
157
+ export function createPreparedLaunchVariant(
158
+ input: unknown,
159
+ ): PreparedLaunchVariant {
160
+ const object = requireExactObject(
161
+ input,
162
+ 'PreparedLaunchVariant',
163
+ VARIANT_KEYS,
164
+ VARIANT_OPTIONAL_KEYS,
165
+ );
166
+ const key = createPreparedLaunchVariantKey(object.key);
167
+ const keyHash = requireSha256(
168
+ object.keyHash,
169
+ 'PreparedLaunchVariant.keyHash',
170
+ );
171
+ if (keyHash !== hashPreparedLaunchVariantKey(key)) {
172
+ throw new TypeError(
173
+ 'PreparedLaunchVariant.keyHash must equal the canonical key hash.',
174
+ );
175
+ }
176
+ const status = requireEnumValue(
177
+ object.status,
178
+ 'PreparedLaunchVariant.status',
179
+ VARIANT_STATUSES,
180
+ );
181
+ const failure = requirePreparationFailureForStatus(
182
+ object.failure,
183
+ Object.hasOwn(object, 'failure'),
184
+ status === PreparedLaunchVariantStatus.Failed,
185
+ 'PreparedLaunchVariant',
186
+ );
187
+
188
+ return Object.freeze({
189
+ id: requireNonEmptyString(object.id, 'PreparedLaunchVariant.id'),
190
+ preparationGenerationId: requireNonEmptyString(
191
+ object.preparationGenerationId,
192
+ 'PreparedLaunchVariant.preparationGenerationId',
193
+ ),
194
+ key,
195
+ keyHash,
196
+ compiledLaunchPlanHash: requireSha256(
197
+ object.compiledLaunchPlanHash,
198
+ 'PreparedLaunchVariant.compiledLaunchPlanHash',
199
+ ),
200
+ preparedRuntimeTemplateHash: requireSha256(
201
+ object.preparedRuntimeTemplateHash,
202
+ 'PreparedLaunchVariant.preparedRuntimeTemplateHash',
203
+ ),
204
+ preparedRuntimeTemplateRef: requireNonEmptyString(
205
+ object.preparedRuntimeTemplateRef,
206
+ 'PreparedLaunchVariant.preparedRuntimeTemplateRef',
207
+ ),
208
+ status,
209
+ ...(failure === undefined ? {} : { failure }),
210
+ rowVersion: requireNonNegativeSafeInteger(
211
+ object.rowVersion,
212
+ 'PreparedLaunchVariant.rowVersion',
213
+ ),
214
+ });
215
+ }
216
+
217
+ export function serializePreparedLaunchVariant(
218
+ input: PreparedLaunchVariant,
219
+ ): string {
220
+ return canonicalContractJson(createPreparedLaunchVariant(input));
221
+ }
222
+
223
+ export function hashPreparedLaunchVariant(
224
+ input: PreparedLaunchVariant,
225
+ ): string {
226
+ return hashCanonicalContract(createPreparedLaunchVariant(input));
227
+ }
228
+
229
+ function requireTenantDependency(
230
+ input: unknown,
231
+ ): PreparedLaunchTenantDependency {
232
+ const base = requireExactObject(
233
+ input,
234
+ 'PreparedLaunchVariantKey.tenantDependency',
235
+ ['kind'],
236
+ ['organizationScopeHash'],
237
+ );
238
+ const kind = requireEnumValue(
239
+ base.kind,
240
+ 'PreparedLaunchVariantKey.tenantDependency.kind',
241
+ TENANT_DEPENDENCY_KINDS,
242
+ );
243
+ if (kind === RuntimeTemplateTenantDependency.OrganizationNeutral) {
244
+ if (Object.hasOwn(base, 'organizationScopeHash')) {
245
+ throw new TypeError(
246
+ 'PreparedLaunchVariantKey.tenantDependency.organizationScopeHash is forbidden for organization-neutral variants.',
247
+ );
248
+ }
249
+ return Object.freeze({ kind });
250
+ }
251
+ if (!Object.hasOwn(base, 'organizationScopeHash')) {
252
+ throw new TypeError(
253
+ 'PreparedLaunchVariantKey.tenantDependency.organizationScopeHash is required for organization-bound variants.',
254
+ );
255
+ }
256
+ return Object.freeze({
257
+ kind,
258
+ organizationScopeHash: requireSha256(
259
+ base.organizationScopeHash,
260
+ 'PreparedLaunchVariantKey.tenantDependency.organizationScopeHash',
261
+ ),
262
+ });
263
+ }
@@ -1,43 +0,0 @@
1
- import { type ModelRef, type NodeOverlayFragment, type SubAgentBinding } from '@xemahq/kernel-contracts/workflow';
2
- import type { ResolvedAgent, ResolvedAgentNode } from '@xemahq/kernel-contracts/agent-composition';
3
- import type { PermissionMap } from '@xemahq/kernel-contracts/agent-permission';
4
- import { type ToolSelectionEntry } from '@xemahq/kernel-contracts/mcp-tool';
5
- export declare class AgentResolutionError extends Error {
6
- constructor(context: string, detail: string);
7
- }
8
- export interface FlattenedAgentNode {
9
- readonly slug: string;
10
- readonly alias?: string;
11
- readonly modelOverride?: ModelRef;
12
- readonly instructions?: string;
13
- readonly permission?: PermissionMap;
14
- }
15
- export interface CollectScopeOptions {
16
- readonly scope?: 'tree' | 'root';
17
- }
18
- export interface RuntimeAgentConfig {
19
- readonly agentRef: string;
20
- readonly primaryAgentSlug: string;
21
- readonly primaryInstructions: string | null;
22
- readonly primaryPermission: PermissionMap | null;
23
- readonly primaryModelOverride: ModelRef | null;
24
- readonly subAgentBindings: readonly SubAgentBinding[];
25
- readonly subAgentInstructionsBySlug: Readonly<Record<string, string>>;
26
- readonly subAgentPermissionBySlug: Readonly<Record<string, PermissionMap>>;
27
- readonly subAgentModelOverridesBySlug: Readonly<Record<string, ModelRef>>;
28
- readonly defaultSkillSlugs: readonly string[];
29
- readonly allSkillSlugs: readonly string[];
30
- readonly defaultToolSelection: readonly ToolSelectionEntry[];
31
- }
32
- export declare function flattenAgentTree(root: ResolvedAgentNode): readonly FlattenedAgentNode[];
33
- export declare function collectSkills(root: ResolvedAgentNode, opts?: CollectScopeOptions): readonly string[];
34
- export declare function collectTools(root: ResolvedAgentNode, opts?: CollectScopeOptions): readonly ToolSelectionEntry[];
35
- export declare function collectInstructionsBySlug(root: ResolvedAgentNode): Readonly<Record<string, string>>;
36
- export declare function collectPermissionsBySlug(root: ResolvedAgentNode): Readonly<Record<string, PermissionMap>>;
37
- export declare function collectModelOverridesBySlug(root: ResolvedAgentNode): Readonly<Record<string, ModelRef>>;
38
- export declare function appendInstructions(baseSystemPrompt: string, nodeInstructions: string | null): string;
39
- export declare function normalizeInstructions(raw: string | undefined): string | null;
40
- export declare function normalizePermission(raw: PermissionMap | undefined): PermissionMap | null;
41
- export declare function projectModelOverride(raw: ModelRef | undefined, context: string): ModelRef | null;
42
- export declare function projectAgentToRuntimeConfig(resolved: ResolvedAgent, overlay?: NodeOverlayFragment): RuntimeAgentConfig;
43
- //# sourceMappingURL=composition-resolution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"composition-resolution.d.ts","sourceRoot":"","sources":["../../src/lib/composition-resolution.ts"],"names":[],"mappings":"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"}