@xemahq/kernel-contracts 0.4.0 → 0.5.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.
- package/dist/agent-composition/lib/composition.d.ts +3 -2
- package/dist/agent-composition/lib/composition.d.ts.map +1 -1
- package/dist/agent-composition/lib/composition.js.map +1 -1
- package/dist/agent-workspace/awp-spec.json +1 -1
- package/dist/agent-workspace/index.d.ts +1 -1
- package/dist/agent-workspace/index.d.ts.map +1 -1
- package/dist/agent-workspace/index.js +1 -1
- package/dist/agent-workspace/index.js.map +1 -1
- package/dist/agent-workspace/lib/awp.d.ts +15 -0
- package/dist/agent-workspace/lib/awp.d.ts.map +1 -0
- package/dist/agent-workspace/lib/awp.js +197 -0
- package/dist/agent-workspace/lib/awp.js.map +1 -0
- package/dist/biome-availability/index.d.ts +2 -0
- package/dist/biome-availability/index.d.ts.map +1 -0
- package/dist/biome-availability/index.js +18 -0
- package/dist/biome-availability/index.js.map +1 -0
- package/dist/biome-availability/lib/biome-availability.d.ts +9 -0
- package/dist/biome-availability/lib/biome-availability.d.ts.map +1 -0
- package/dist/biome-availability/lib/biome-availability.js +21 -0
- package/dist/biome-availability/lib/biome-availability.js.map +1 -0
- package/dist/workflow/lib/compiled-run.d.ts +2 -1
- package/dist/workflow/lib/compiled-run.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/agent-composition/lib/composition.ts +7 -2
- package/src/agent-workspace/index.ts +1 -1
- package/src/biome-availability/index.ts +9 -0
- package/src/biome-availability/lib/biome-availability.ts +114 -0
- package/src/workflow/lib/compiled-run.ts +2 -1
- /package/src/agent-workspace/lib/{awp-v1.ts → awp.ts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ToolSelectionEntry } from '../../mcp-tool';
|
|
2
2
|
import type { NodeOverlayFragment } from '../../workflow';
|
|
3
3
|
import type { SkillRef } from '../../skill';
|
|
4
|
+
import type { BiomeAvailabilityScoped } from '../../biome-availability';
|
|
4
5
|
import type { CapabilityLayer } from './capability-layer';
|
|
5
6
|
import type { CompositionWorkspace } from './composition-workspace';
|
|
6
7
|
export interface AgentRef {
|
|
@@ -25,7 +26,7 @@ export interface CompositionLimits {
|
|
|
25
26
|
readonly maxSpawns: number;
|
|
26
27
|
readonly tokenBudget?: number | undefined;
|
|
27
28
|
}
|
|
28
|
-
export interface CompositionNode extends NodeOverlayFragment {
|
|
29
|
+
export interface CompositionNode extends NodeOverlayFragment, BiomeAvailabilityScoped {
|
|
29
30
|
readonly agent: AgentRef;
|
|
30
31
|
readonly alias?: string;
|
|
31
32
|
readonly skills: readonly SkillRef[];
|
|
@@ -44,7 +45,7 @@ export interface Composition {
|
|
|
44
45
|
readonly capability?: CapabilityLayer;
|
|
45
46
|
readonly workspace?: CompositionWorkspace;
|
|
46
47
|
}
|
|
47
|
-
export interface ResolvedCompositionNode extends NodeOverlayFragment {
|
|
48
|
+
export interface ResolvedCompositionNode extends NodeOverlayFragment, BiomeAvailabilityScoped {
|
|
48
49
|
readonly agent: Required<AgentRef>;
|
|
49
50
|
readonly alias?: string;
|
|
50
51
|
readonly skills: readonly SkillRef[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../../src/agent-composition/lib/composition.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAKpE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAOD,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAQD,oBAAY,oBAAoB;IAC9B,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,QAAQ,aAAa;CACtB;AAwBD,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAQ3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AASD,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../../src/agent-composition/lib/composition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.js","sourceRoot":"","sources":["../../../src/agent-composition/lib/composition.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"composition.js","sourceRoot":"","sources":["../../../src/agent-composition/lib/composition.ts"],"names":[],"mappings":";;;AAoCA,IAAY,gBAMX;AAND,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,mCAAe,CAAA;IACf,+BAAW,CAAA;IACX,uCAAmB,CAAA;IACnB,iCAAa,CAAA;AACf,CAAC,EANW,gBAAgB,gCAAhB,gBAAgB,QAM3B;AAQD,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,uCAAe,CAAA;IACf,+CAAuB,CAAA;IACvB,6CAAqB,CAAA;AACvB,CAAC,EAJW,oBAAoB,oCAApB,oBAAoB,QAI/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-workspace/index.ts"],"names":[],"mappings":"AAgBA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-workspace/index.ts"],"names":[],"mappings":"AAgBA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC"}
|
|
@@ -16,7 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./lib/workspace-layout"), exports);
|
|
18
18
|
__exportStar(require("./lib/workspace-spec"), exports);
|
|
19
|
-
__exportStar(require("./lib/awp
|
|
19
|
+
__exportStar(require("./lib/awp"), exports);
|
|
20
20
|
__exportStar(require("./lib/context-json"), exports);
|
|
21
21
|
__exportStar(require("./lib/manifest"), exports);
|
|
22
22
|
__exportStar(require("./lib/deliverable-spec-ref"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-workspace/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBA,yDAAuC;AACvC,uDAAqC;AACrC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-workspace/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBA,yDAAuC;AACvC,uDAAqC;AACrC,4CAA0B;AAC1B,qDAAmC;AACnC,iDAA+B;AAC/B,6DAA2C;AAC3C,4DAA0C;AAC1C,0DAAwC;AACxC,oDAAkC;AAClC,4DAA0C;AAC1C,qDAAmC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GitPushBranchSuffix, GitPushConcurrencyMode, type WorkspaceSpec } from './workspace-spec';
|
|
2
|
+
export declare const AWP_V1_SPEC: WorkspaceSpec;
|
|
3
|
+
export declare function findSlot(spec: WorkspaceSpec, key: string): import("./workspace-spec").SlotDefinition | undefined;
|
|
4
|
+
export declare function isKnownSlotKey(spec: WorkspaceSpec, key: string): boolean;
|
|
5
|
+
export declare function listAlwaysOnSlotKeys(spec: WorkspaceSpec): readonly string[];
|
|
6
|
+
export declare function listTarballPersistedRelPaths(spec: WorkspaceSpec): readonly string[];
|
|
7
|
+
export interface ResolvedGitPushSlot {
|
|
8
|
+
readonly key: string;
|
|
9
|
+
readonly path: string;
|
|
10
|
+
readonly branchPrefix: string;
|
|
11
|
+
readonly branchSuffix: GitPushBranchSuffix;
|
|
12
|
+
readonly concurrencyMode: GitPushConcurrencyMode;
|
|
13
|
+
}
|
|
14
|
+
export declare function listGitPushPersistedSlots(spec: WorkspaceSpec): readonly ResolvedGitPushSlot[];
|
|
15
|
+
//# sourceMappingURL=awp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awp.d.ts","sourceRoot":"","sources":["../../../src/agent-workspace/lib/awp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EAEtB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAgB1B,eAAO,MAAM,WAAW,EAAE,aAwMzB,CAAC;AAMF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,yDAExD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAExE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAE3E;AAQD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAInF;AAQD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,sBAAsB,CAAC;CAClD;AAOD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,aAAa,GAClB,SAAS,mBAAmB,EAAE,CAgBhC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AWP_V1_SPEC = void 0;
|
|
4
|
+
exports.findSlot = findSlot;
|
|
5
|
+
exports.isKnownSlotKey = isKnownSlotKey;
|
|
6
|
+
exports.listAlwaysOnSlotKeys = listAlwaysOnSlotKeys;
|
|
7
|
+
exports.listTarballPersistedRelPaths = listTarballPersistedRelPaths;
|
|
8
|
+
exports.listGitPushPersistedSlots = listGitPushPersistedSlots;
|
|
9
|
+
const workspace_spec_1 = require("./workspace-spec");
|
|
10
|
+
exports.AWP_V1_SPEC = {
|
|
11
|
+
id: 'awp/v1',
|
|
12
|
+
version: '1.2.0',
|
|
13
|
+
slots: [
|
|
14
|
+
{
|
|
15
|
+
key: 'inputs',
|
|
16
|
+
path: '/workspace/inputs',
|
|
17
|
+
presence: 'always',
|
|
18
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
19
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
20
|
+
ownership: 'user',
|
|
21
|
+
humanDescription: "Read-only inputs supplied at session/run start (the workflow's `with:` block or the session's customConfig). The DSL input bag lands at `inputs.json`.",
|
|
22
|
+
persistencePolicy: { kind: 'none' },
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
key: 'tmp',
|
|
26
|
+
path: '/workspace/tmp',
|
|
27
|
+
presence: 'always',
|
|
28
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadWrite],
|
|
29
|
+
defaultMode: workspace_spec_1.SlotMode.ReadWrite,
|
|
30
|
+
ownership: 'user',
|
|
31
|
+
humanDescription: 'Your scratch space — drafts, intermediate computation, working notes. Snapshot-persisted so retries see prior state. Never harvested.',
|
|
32
|
+
persistencePolicy: { kind: 'tarball' },
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
key: 'uploads',
|
|
36
|
+
path: '/workspace/uploads',
|
|
37
|
+
presence: 'optional',
|
|
38
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
39
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
40
|
+
ownership: 'user',
|
|
41
|
+
humanDescription: 'User-uploaded files (briefs, screenshots, sketches). Read-only — never write here.',
|
|
42
|
+
persistencePolicy: { kind: 'tarball' },
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
key: 'references',
|
|
46
|
+
path: '/workspace/references',
|
|
47
|
+
presence: 'optional',
|
|
48
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
49
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
50
|
+
ownership: 'user',
|
|
51
|
+
humanDescription: 'Curated evidence library (knowledge-base spaces, prior artifacts, external project mounts). Read-only.',
|
|
52
|
+
persistencePolicy: { kind: 'none' },
|
|
53
|
+
subSlots: [
|
|
54
|
+
{
|
|
55
|
+
key: 'kb',
|
|
56
|
+
path: '/workspace/references/kb',
|
|
57
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
58
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
59
|
+
ownership: 'user',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
key: 'external-projects',
|
|
63
|
+
path: '/workspace/references/external-projects',
|
|
64
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
65
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
66
|
+
ownership: 'user',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: 'deliverable-specs',
|
|
72
|
+
path: '/workspace/deliverable-specs',
|
|
73
|
+
presence: 'optional',
|
|
74
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
75
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
76
|
+
ownership: 'user',
|
|
77
|
+
humanDescription: 'Schemas + metadata for the deliverable spec(s) this run targets. Read-only — consult before writing under deliverables/.',
|
|
78
|
+
persistencePolicy: { kind: 'none' },
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
key: 'deliverables',
|
|
82
|
+
path: '/workspace/deliverables',
|
|
83
|
+
presence: 'optional',
|
|
84
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly, workspace_spec_1.SlotMode.ReadWrite],
|
|
85
|
+
defaultMode: workspace_spec_1.SlotMode.ReadWrite,
|
|
86
|
+
ownership: 'user',
|
|
87
|
+
humanDescription: "Your writable output area. Files written here are harvested by the runtime per the deliverable spec's contract.",
|
|
88
|
+
persistencePolicy: { kind: 'tarball' },
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
key: 'repos',
|
|
92
|
+
path: '/workspace/repos',
|
|
93
|
+
presence: 'optional',
|
|
94
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly, workspace_spec_1.SlotMode.ReadWrite],
|
|
95
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
96
|
+
ownership: 'user',
|
|
97
|
+
humanDescription: 'Project repositories. Read-only unless the workflow explicitly granted write authority (engineer roles only).',
|
|
98
|
+
persistencePolicy: { kind: 'git-push', branchPrefix: 'xema/session/' },
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
key: 'agents-md',
|
|
102
|
+
path: '/workspace/AGENTS.md',
|
|
103
|
+
presence: 'always',
|
|
104
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
105
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
106
|
+
singleFile: true,
|
|
107
|
+
ownership: 'platform',
|
|
108
|
+
persistencePolicy: { kind: 'none' },
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
key: 'context-json',
|
|
112
|
+
path: '/workspace/context.json',
|
|
113
|
+
presence: 'always',
|
|
114
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
115
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
116
|
+
singleFile: true,
|
|
117
|
+
ownership: 'platform',
|
|
118
|
+
persistencePolicy: { kind: 'none' },
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
key: 'system-overlay',
|
|
122
|
+
path: '/workspace/.xema/system-overlay.md',
|
|
123
|
+
presence: 'always',
|
|
124
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
125
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
126
|
+
singleFile: true,
|
|
127
|
+
ownership: 'platform',
|
|
128
|
+
persistencePolicy: { kind: 'none' },
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
key: 'agent-bundles',
|
|
132
|
+
path: '/workspace/.opencode/agents',
|
|
133
|
+
presence: 'always',
|
|
134
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
135
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
136
|
+
ownership: 'platform',
|
|
137
|
+
persistencePolicy: { kind: 'none' },
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
key: 'skill-bundles',
|
|
141
|
+
path: '/workspace/.opencode/skills',
|
|
142
|
+
presence: 'optional',
|
|
143
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
144
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
145
|
+
ownership: 'platform',
|
|
146
|
+
persistencePolicy: { kind: 'none' },
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
key: 'commands',
|
|
150
|
+
path: '/workspace/.opencode/command',
|
|
151
|
+
presence: 'optional',
|
|
152
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
153
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
154
|
+
ownership: 'platform',
|
|
155
|
+
persistencePolicy: { kind: 'none' },
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
key: 'instructions',
|
|
159
|
+
path: '/workspace/.xema/instructions',
|
|
160
|
+
presence: 'optional',
|
|
161
|
+
allowedModes: [workspace_spec_1.SlotMode.ReadOnly],
|
|
162
|
+
defaultMode: workspace_spec_1.SlotMode.ReadOnly,
|
|
163
|
+
ownership: 'platform',
|
|
164
|
+
persistencePolicy: { kind: 'none' },
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
};
|
|
168
|
+
function findSlot(spec, key) {
|
|
169
|
+
return spec.slots.find((s) => s.key === key);
|
|
170
|
+
}
|
|
171
|
+
function isKnownSlotKey(spec, key) {
|
|
172
|
+
return spec.slots.some((s) => s.key === key);
|
|
173
|
+
}
|
|
174
|
+
function listAlwaysOnSlotKeys(spec) {
|
|
175
|
+
return spec.slots.filter((s) => s.presence === 'always').map((s) => s.key);
|
|
176
|
+
}
|
|
177
|
+
function listTarballPersistedRelPaths(spec) {
|
|
178
|
+
return spec.slots
|
|
179
|
+
.filter((s) => s.persistencePolicy?.kind === 'tarball')
|
|
180
|
+
.map((s) => s.path.replace(/^\/workspace\//, ''));
|
|
181
|
+
}
|
|
182
|
+
function listGitPushPersistedSlots(spec) {
|
|
183
|
+
const out = [];
|
|
184
|
+
for (const slot of spec.slots) {
|
|
185
|
+
if (slot.persistencePolicy?.kind === 'git-push') {
|
|
186
|
+
out.push({
|
|
187
|
+
key: slot.key,
|
|
188
|
+
path: slot.path,
|
|
189
|
+
branchPrefix: slot.persistencePolicy.branchPrefix,
|
|
190
|
+
branchSuffix: slot.persistencePolicy.branchSuffix ?? workspace_spec_1.GitPushBranchSuffix.SessionId,
|
|
191
|
+
concurrencyMode: slot.persistencePolicy.concurrencyMode ?? workspace_spec_1.GitPushConcurrencyMode.Force,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return out;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=awp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awp.js","sourceRoot":"","sources":["../../../src/agent-workspace/lib/awp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/biome-availability/index.ts"],"names":[],"mappings":"AAQA,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./lib/biome-availability"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/biome-availability/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAQA,2DAAyC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface BiomeAvailabilityFilter {
|
|
2
|
+
readonly include?: readonly string[];
|
|
3
|
+
readonly exclude?: readonly string[];
|
|
4
|
+
}
|
|
5
|
+
export interface BiomeAvailabilityScoped {
|
|
6
|
+
readonly biomeAvailability?: BiomeAvailabilityFilter;
|
|
7
|
+
}
|
|
8
|
+
export declare function isBiomeContributionAllowed(biomeId: string | null | undefined, filter: BiomeAvailabilityFilter | undefined): boolean;
|
|
9
|
+
//# sourceMappingURL=biome-availability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"biome-availability.d.ts","sourceRoot":"","sources":["../../../src/biome-availability/lib/biome-availability.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,uBAAuB;IAOtC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAMrC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAQD,MAAM,WAAW,uBAAuB;IAKtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CACtD;AAuBD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,MAAM,EAAE,uBAAuB,GAAG,SAAS,GAC1C,OAAO,CAqBT"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isBiomeContributionAllowed = isBiomeContributionAllowed;
|
|
4
|
+
function isBiomeContributionAllowed(biomeId, filter) {
|
|
5
|
+
if (biomeId === null || biomeId === undefined || biomeId.length === 0) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
if (filter === undefined) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
const exclude = filter.exclude ?? [];
|
|
12
|
+
const include = filter.include ?? [];
|
|
13
|
+
if (exclude.includes(biomeId)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if (include.length > 0 && !include.includes(biomeId)) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=biome-availability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"biome-availability.js","sourceRoot":"","sources":["../../../src/biome-availability/lib/biome-availability.ts"],"names":[],"mappings":";;AAyFA,gEAwBC;AAxBD,SAAgB,0BAA0B,CACxC,OAAkC,EAClC,MAA2C;IAG3C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAErC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CompiledWorkspaceManifest } from './compiled-workspace-manifest';
|
|
2
|
+
import type { BiomeAvailabilityScoped } from '../../biome-availability';
|
|
2
3
|
import type { ActionRef } from './action-ref';
|
|
3
4
|
import type { Briefcase } from './briefcase';
|
|
4
5
|
import type { ConcurrencyGroup } from './concurrency-group';
|
|
@@ -72,7 +73,7 @@ export interface CompiledRetryPolicy {
|
|
|
72
73
|
readonly maximumIntervalMs: number;
|
|
73
74
|
readonly nonRetryableErrorTypes: readonly string[];
|
|
74
75
|
}
|
|
75
|
-
export interface CompiledJob {
|
|
76
|
+
export interface CompiledJob extends BiomeAvailabilityScoped {
|
|
76
77
|
readonly jobKey: string;
|
|
77
78
|
readonly title: string | null;
|
|
78
79
|
readonly needs: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiled-run.d.ts","sourceRoot":"","sources":["../../../src/workflow/lib/compiled-run.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"compiled-run.d.ts","sourceRoot":"","sources":["../../../src/workflow/lib/compiled-run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/kernel-contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Consolidated Xema OS kernel wire contracts — pure types + zod schemas for the 32 kernel protocol surfaces. One package, one npm scope, wildcard per-surface subpath exports. No framework/runtime deps.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/",
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import type { ToolSelectionEntry } from '../../mcp-tool';
|
|
17
17
|
import type { NodeOverlayFragment } from '../../workflow';
|
|
18
18
|
import type { SkillRef } from '../../skill';
|
|
19
|
+
import type { BiomeAvailabilityScoped } from '../../biome-availability';
|
|
19
20
|
import type { CapabilityLayer } from './capability-layer';
|
|
20
21
|
import type { CompositionWorkspace } from './composition-workspace';
|
|
21
22
|
|
|
@@ -99,7 +100,9 @@ export interface CompositionLimits {
|
|
|
99
100
|
* `skills` / `tools` / `modelOverride` attach AT this node — they extend or
|
|
100
101
|
* override what the referenced agent definition declares intrinsically.
|
|
101
102
|
*/
|
|
102
|
-
export interface CompositionNode
|
|
103
|
+
export interface CompositionNode
|
|
104
|
+
extends NodeOverlayFragment,
|
|
105
|
+
BiomeAvailabilityScoped {
|
|
103
106
|
/** The agent definition this node runs. */
|
|
104
107
|
readonly agent: AgentRef;
|
|
105
108
|
/** Optional alias when the same agent appears more than once in the tree. */
|
|
@@ -159,7 +162,9 @@ export interface Composition {
|
|
|
159
162
|
* Distinct from `CompositionNode` (the AUTHORED form): a resolved node
|
|
160
163
|
* has its agent reference fully version-pinned, never `latest`.
|
|
161
164
|
*/
|
|
162
|
-
export interface ResolvedCompositionNode
|
|
165
|
+
export interface ResolvedCompositionNode
|
|
166
|
+
extends NodeOverlayFragment,
|
|
167
|
+
BiomeAvailabilityScoped {
|
|
163
168
|
/** Fully version-pinned agent reference. */
|
|
164
169
|
readonly agent: Required<AgentRef>;
|
|
165
170
|
readonly alias?: string;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
export * from './lib/workspace-layout';
|
|
18
18
|
export * from './lib/workspace-spec';
|
|
19
|
-
export * from './lib/awp
|
|
19
|
+
export * from './lib/awp';
|
|
20
20
|
export * from './lib/context-json';
|
|
21
21
|
export * from './lib/manifest';
|
|
22
22
|
export * from './lib/deliverable-spec-ref';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
2
|
+
// ── Biome Availability Contracts — Barrel Export ──
|
|
3
|
+
//
|
|
4
|
+
// Kernel (Layer-0) leaf: the per-definition biome opt-in/opt-out POST-scope
|
|
5
|
+
// filter (DBM.2). Zero cross-subpath deps so agent-composition / skill /
|
|
6
|
+
// capability / workflow / action resolvers can all import it without a cycle.
|
|
7
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
8
|
+
|
|
9
|
+
export * from './lib/biome-availability';
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
2
|
+
// ── Biome Availability Filter — per-definition opt-in/opt-out (DBM.2) ──
|
|
3
|
+
//
|
|
4
|
+
// A definition (an Agent Composition node, an Agent definition, a workflow
|
|
5
|
+
// job, a Session) MAY declare which biomes' contributions it wants in or out.
|
|
6
|
+
// This is a POST-SCOPE FILTER applied AFTER implicit-by-scope resolution
|
|
7
|
+
// (the 5-tier `SkillScope`/`CompositionScope` precedence): it NARROWS the
|
|
8
|
+
// already-visible set; it never widens it and it is NOT a parallel
|
|
9
|
+
// availability/binding table (see `.claude/rules/skills-and-composition.md`).
|
|
10
|
+
//
|
|
11
|
+
// Why a filter and not a binding table: the ownership model is implicit-by-
|
|
12
|
+
// scope — a contribution is available because its owning biome is installed
|
|
13
|
+
// and enabled for the org. This filter lets ONE definition say "even though
|
|
14
|
+
// biome X is installed, I don't want its contributions" (exclude) or "only
|
|
15
|
+
// honor biomes Y and Z, ignore everything else" (allow-list include). It is
|
|
16
|
+
// authored on the definition, additive + optional, and absent ⇒ no filtering
|
|
17
|
+
// (every implicitly-visible contribution passes).
|
|
18
|
+
//
|
|
19
|
+
// Fail-fast is unchanged: this filter decides VISIBILITY, not lifecycle. A
|
|
20
|
+
// reference that survives the filter and is still unavailable degrades only
|
|
21
|
+
// when its `MissingReferencePolicy` is `Optional` (see `reference-resolution`).
|
|
22
|
+
//
|
|
23
|
+
// Pure Layer-0 leaf: zero cross-subpath imports so every resolver
|
|
24
|
+
// (agent-composition / skill / capability / workflow / action) can import it
|
|
25
|
+
// without creating a cycle.
|
|
26
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Per-definition opt-in / opt-out over biome-contributed references.
|
|
30
|
+
* Additive + optional everywhere it is attached. Both fields are
|
|
31
|
+
* independent and may be combined; an empty/absent filter never narrows.
|
|
32
|
+
*
|
|
33
|
+
* Precedence when both are set is encoded by {@link isBiomeContributionAllowed}:
|
|
34
|
+
* an explicit {@link exclude} ALWAYS wins (a biome in both lists is excluded),
|
|
35
|
+
* and a non-empty {@link include} turns the filter into an allow-list (any
|
|
36
|
+
* biome not listed is dropped). Non-biome contributions (no owning biome) are
|
|
37
|
+
* never affected.
|
|
38
|
+
*/
|
|
39
|
+
export interface BiomeAvailabilityFilter {
|
|
40
|
+
/**
|
|
41
|
+
* Allow-list. When non-empty, ONLY contributions whose owning biome id is
|
|
42
|
+
* in this list survive the filter (plus non-biome contributions, which are
|
|
43
|
+
* never filtered). When omitted/empty, every biome is allowed unless
|
|
44
|
+
* {@link exclude}d.
|
|
45
|
+
*/
|
|
46
|
+
readonly include?: readonly string[];
|
|
47
|
+
/**
|
|
48
|
+
* Deny-list. A contribution whose owning biome id is in this list is
|
|
49
|
+
* always dropped, even if it also appears in {@link include}. Omitted/empty
|
|
50
|
+
* ⇒ nothing is force-excluded.
|
|
51
|
+
*/
|
|
52
|
+
readonly exclude?: readonly string[];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The shape a definition mixes in to gain the optional biome opt-in/opt-out
|
|
57
|
+
* knob. Mixed into `CompositionNode`, the Agent definition contract, the
|
|
58
|
+
* workflow job/stage contract, and the Session shape so the field has ONE
|
|
59
|
+
* declaration site (no per-shape restating).
|
|
60
|
+
*/
|
|
61
|
+
export interface BiomeAvailabilityScoped {
|
|
62
|
+
/**
|
|
63
|
+
* Optional per-definition biome opt-in/opt-out. POST-scope filter applied
|
|
64
|
+
* after implicit-by-scope resolution. Absent ⇒ no filtering.
|
|
65
|
+
*/
|
|
66
|
+
readonly biomeAvailability?: BiomeAvailabilityFilter;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The single predicate every resolver calls to decide whether a
|
|
71
|
+
* biome-contributed reference survives a definition's
|
|
72
|
+
* {@link BiomeAvailabilityFilter}. Implemented in exactly one place so the
|
|
73
|
+
* include/exclude precedence is never re-derived (and never silently
|
|
74
|
+
* diverges) per resolver.
|
|
75
|
+
*
|
|
76
|
+
* Rules, in order:
|
|
77
|
+
* 1. A contribution with no owning biome (`biomeId` null/undefined) is
|
|
78
|
+
* NEVER filtered — it is not biome-attributed, so opt-in/opt-out does
|
|
79
|
+
* not apply. Returns `true`.
|
|
80
|
+
* 2. No filter, or an empty filter ⇒ everything is allowed. Returns `true`.
|
|
81
|
+
* 3. `exclude` wins: a biome present in `exclude` is dropped. Returns `false`.
|
|
82
|
+
* 4. A non-empty `include` makes the filter an allow-list: a biome NOT in
|
|
83
|
+
* `include` is dropped. Returns `false`.
|
|
84
|
+
* 5. Otherwise allowed. Returns `true`.
|
|
85
|
+
*
|
|
86
|
+
* @param biomeId the owning biome of the contribution, or null/undefined for
|
|
87
|
+
* a non-biome (system/org/user/project-authored) contribution.
|
|
88
|
+
* @param filter the definition's optional filter; absent ⇒ allow all.
|
|
89
|
+
*/
|
|
90
|
+
export function isBiomeContributionAllowed(
|
|
91
|
+
biomeId: string | null | undefined,
|
|
92
|
+
filter: BiomeAvailabilityFilter | undefined,
|
|
93
|
+
): boolean {
|
|
94
|
+
// (1) Non-biome contributions are out of scope for this filter.
|
|
95
|
+
if (biomeId === null || biomeId === undefined || biomeId.length === 0) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
// (2) No filter ⇒ allow all.
|
|
99
|
+
if (filter === undefined) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
const exclude = filter.exclude ?? [];
|
|
103
|
+
const include = filter.include ?? [];
|
|
104
|
+
// (3) exclude always wins.
|
|
105
|
+
if (exclude.includes(biomeId)) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
// (4) non-empty include ⇒ allow-list semantics.
|
|
109
|
+
if (include.length > 0 && !include.includes(biomeId)) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
// (5) allowed.
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { CompiledWorkspaceManifest } from './compiled-workspace-manifest';
|
|
2
2
|
|
|
3
|
+
import type { BiomeAvailabilityScoped } from '../../biome-availability';
|
|
3
4
|
import type { ActionRef } from './action-ref';
|
|
4
5
|
import type { Briefcase } from './briefcase';
|
|
5
6
|
import type { ConcurrencyGroup } from './concurrency-group';
|
|
@@ -210,7 +211,7 @@ export interface CompiledRetryPolicy {
|
|
|
210
211
|
readonly nonRetryableErrorTypes: readonly string[];
|
|
211
212
|
}
|
|
212
213
|
|
|
213
|
-
export interface CompiledJob {
|
|
214
|
+
export interface CompiledJob extends BiomeAvailabilityScoped {
|
|
214
215
|
/** Stable logical key (as authored in YAML). Unique per CompiledRun. */
|
|
215
216
|
readonly jobKey: string;
|
|
216
217
|
/** Optional human-readable title; falls back to jobKey in UIs. */
|
|
File without changes
|