@xemahq/kernel-contracts 0.3.2 → 0.3.3

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 (27) hide show
  1. package/dist/agent-composition/lib/composition.d.ts +2 -0
  2. package/dist/agent-composition/lib/composition.d.ts.map +1 -1
  3. package/dist/agent-workspace/awp-spec.json +1 -1
  4. package/dist/service-registry/lib/service-names.generated.d.ts.map +1 -1
  5. package/dist/service-registry/lib/service-names.generated.js.map +1 -1
  6. package/dist/worker-runtime/index.d.ts +1 -0
  7. package/dist/worker-runtime/index.d.ts.map +1 -1
  8. package/dist/worker-runtime/index.js +1 -0
  9. package/dist/worker-runtime/index.js.map +1 -1
  10. package/dist/worker-runtime/lib/enums.d.ts +4 -1
  11. package/dist/worker-runtime/lib/enums.d.ts.map +1 -1
  12. package/dist/worker-runtime/lib/enums.js +3 -0
  13. package/dist/worker-runtime/lib/enums.js.map +1 -1
  14. package/dist/worker-runtime/lib/runtime-layout-profile.d.ts +11 -0
  15. package/dist/worker-runtime/lib/runtime-layout-profile.d.ts.map +1 -0
  16. package/dist/worker-runtime/lib/runtime-layout-profile.js +44 -0
  17. package/dist/worker-runtime/lib/runtime-layout-profile.js.map +1 -0
  18. package/dist/worker-runtime/lib/runtime.d.ts +1 -1
  19. package/dist/worker-runtime/lib/runtime.d.ts.map +1 -1
  20. package/package.json +1 -1
  21. package/src/agent-composition/lib/composition.ts +20 -0
  22. package/src/service-registry/lib/service-names.generated.ts +3 -0
  23. package/src/worker-runtime/index.ts +1 -0
  24. package/src/worker-runtime/lib/enums.ts +12 -7
  25. package/src/worker-runtime/lib/runtime-layout-profile.ts +110 -0
  26. package/src/worker-runtime/lib/runtime.ts +11 -7
  27. package/src/workflow/lib/platform-task-queue.ts +2 -2
@@ -31,6 +31,7 @@ export interface CompositionNode {
31
31
  readonly skills: readonly SkillRef[];
32
32
  readonly tools: readonly ToolSelectionEntry[];
33
33
  readonly modelOverride?: ModelRef;
34
+ readonly instructions?: string;
34
35
  readonly children: readonly CompositionNode[];
35
36
  readonly limits?: CompositionLimits;
36
37
  }
@@ -51,6 +52,7 @@ export interface ResolvedCompositionNode {
51
52
  readonly skills: readonly SkillRef[];
52
53
  readonly tools: readonly ToolSelectionEntry[];
53
54
  readonly modelOverride?: ModelRef;
55
+ readonly instructions?: string;
54
56
  readonly children: readonly ResolvedCompositionNode[];
55
57
  readonly limits?: CompositionLimits;
56
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../../src/agent-composition/lib/composition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../../src/agent-composition/lib/composition.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://xema.dev/schemas/awp-spec.v1.json",
3
- "emittedAt": "2026-06-09T18:27:18.685Z",
3
+ "emittedAt": "2026-06-11T22:10:48.702Z",
4
4
  "spec": {
5
5
  "id": "awp/v1",
6
6
  "version": "1.2.0",
@@ -1 +1 @@
1
- {"version":3,"file":"service-names.generated.d.ts","sourceRoot":"","sources":["../../../src/service-registry/lib/service-names.generated.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"service-names.generated.d.ts","sourceRoot":"","sources":["../../../src/service-registry/lib/service-names.generated.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"service-names.generated.js","sourceRoot":"","sources":["../../../src/service-registry/lib/service-names.generated.ts"],"names":[],"mappings":";;;AAWa,QAAA,WAAW,GAAG;IACzB,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,WAAW,EAAE,aAAa;IAC1B,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,uBAAuB,EAAE,yBAAyB;IAClD,WAAW,EAAE,aAAa;IAC1B,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,qBAAqB,EAAE,uBAAuB;IAC9C,yBAAyB,EAAE,2BAA2B;IACtD,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;IACxB,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,kBAAkB,EAAE,oBAAoB;IACxC,UAAU,EAAE,YAAY;IACxB,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,0BAA0B,EAAE,4BAA4B;IACxD,eAAe,EAAE,iBAAiB;IAClC,0BAA0B,EAAE,4BAA4B;IACxD,iBAAiB,EAAE,mBAAmB;IACtC,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;CACxB,CAAC"}
1
+ {"version":3,"file":"service-names.generated.js","sourceRoot":"","sources":["../../../src/service-registry/lib/service-names.generated.ts"],"names":[],"mappings":";;;AAca,QAAA,WAAW,GAAG;IACzB,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,WAAW,EAAE,aAAa;IAC1B,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,uBAAuB,EAAE,yBAAyB;IAClD,WAAW,EAAE,aAAa;IAC1B,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,qBAAqB,EAAE,uBAAuB;IAC9C,yBAAyB,EAAE,2BAA2B;IACtD,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;IACxB,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,kBAAkB,EAAE,oBAAoB;IACxC,UAAU,EAAE,YAAY;IACxB,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,0BAA0B,EAAE,4BAA4B;IACxD,eAAe,EAAE,iBAAiB;IAClC,0BAA0B,EAAE,4BAA4B;IACxD,iBAAiB,EAAE,mBAAmB;IACtC,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;CACxB,CAAC"}
@@ -2,5 +2,6 @@ export * from './lib/enums';
2
2
  export * from './lib/capabilities';
3
3
  export * from './lib/messages';
4
4
  export * from './lib/runtime';
5
+ export * from './lib/runtime-layout-profile';
5
6
  export * from './lib/schemas';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/worker-runtime/index.ts"],"names":[],"mappings":"AASA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/worker-runtime/index.ts"],"names":[],"mappings":"AASA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC"}
@@ -18,5 +18,6 @@ __exportStar(require("./lib/enums"), exports);
18
18
  __exportStar(require("./lib/capabilities"), exports);
19
19
  __exportStar(require("./lib/messages"), exports);
20
20
  __exportStar(require("./lib/runtime"), exports);
21
+ __exportStar(require("./lib/runtime-layout-profile"), exports);
21
22
  __exportStar(require("./lib/schemas"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/worker-runtime/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,8CAA4B;AAC5B,qDAAmC;AACnC,iDAA+B;AAC/B,gDAA8B;AAC9B,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/worker-runtime/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,8CAA4B;AAC5B,qDAAmC;AACnC,iDAA+B;AAC/B,gDAA8B;AAC9B,+DAA6C;AAC7C,gDAA8B"}
@@ -1,5 +1,8 @@
1
1
  export declare enum WorkerRuntimeKind {
2
- Opencode = "opencode"
2
+ Opencode = "opencode",
3
+ Qwen = "qwen",
4
+ ClaudeCode = "claude-code",
5
+ Hermes = "hermes"
3
6
  }
4
7
  export declare enum HookKind {
5
8
  ToolExecuteBefore = "tool.execute.before",
@@ -1 +1 @@
1
- {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/worker-runtime/lib/enums.ts"],"names":[],"mappings":"AAmBA,oBAAY,iBAAiB;IAC3B,QAAQ,aAAa;CACtB;AAMD,oBAAY,QAAQ;IAClB,iBAAiB,wBAAwB;IACzC,gBAAgB,uBAAuB;IACvC,WAAW,iBAAiB;IAC5B,YAAY,kBAAkB;CAC/B"}
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/worker-runtime/lib/enums.ts"],"names":[],"mappings":"AAqBA,oBAAY,iBAAiB;IAC3B,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,UAAU,gBAAgB;IAC1B,MAAM,WAAW;CAClB;AAMD,oBAAY,QAAQ;IAClB,iBAAiB,wBAAwB;IACzC,gBAAgB,uBAAuB;IACvC,WAAW,iBAAiB;IAC5B,YAAY,kBAAkB;CAC/B"}
@@ -4,6 +4,9 @@ exports.HookKind = exports.WorkerRuntimeKind = void 0;
4
4
  var WorkerRuntimeKind;
5
5
  (function (WorkerRuntimeKind) {
6
6
  WorkerRuntimeKind["Opencode"] = "opencode";
7
+ WorkerRuntimeKind["Qwen"] = "qwen";
8
+ WorkerRuntimeKind["ClaudeCode"] = "claude-code";
9
+ WorkerRuntimeKind["Hermes"] = "hermes";
7
10
  })(WorkerRuntimeKind || (exports.WorkerRuntimeKind = WorkerRuntimeKind = {}));
8
11
  var HookKind;
9
12
  (function (HookKind) {
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/worker-runtime/lib/enums.ts"],"names":[],"mappings":";;;AAmBA,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IAC3B,0CAAqB,CAAA;AACvB,CAAC,EAFW,iBAAiB,iCAAjB,iBAAiB,QAE5B;AAMD,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,qDAAyC,CAAA;IACzC,mDAAuC,CAAA;IACvC,wCAA4B,CAAA;IAC5B,0CAA8B,CAAA;AAChC,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/worker-runtime/lib/enums.ts"],"names":[],"mappings":";;;AAqBA,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,0CAAqB,CAAA;IACrB,kCAAa,CAAA;IACb,+CAA0B,CAAA;IAC1B,sCAAiB,CAAA;AACnB,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B;AAMD,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,qDAAyC,CAAA;IACzC,mDAAuC,CAAA;IACvC,wCAA4B,CAAA;IAC5B,0CAA8B,CAAA;AAChC,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
@@ -0,0 +1,11 @@
1
+ import { WorkerRuntimeKind } from './enums';
2
+ export interface RuntimeLayoutProfile {
3
+ readonly kind: WorkerRuntimeKind;
4
+ readonly skillBundlesDir: string;
5
+ readonly contextFile: string;
6
+ readonly agentBundlesDir: string | null;
7
+ readonly commandsDir: string | null;
8
+ }
9
+ export declare const RUNTIME_LAYOUT_PROFILES: Readonly<Record<WorkerRuntimeKind, RuntimeLayoutProfile>>;
10
+ export declare function resolveRuntimeLayoutProfile(kind: WorkerRuntimeKind): RuntimeLayoutProfile;
11
+ //# sourceMappingURL=runtime-layout-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-layout-profile.d.ts","sourceRoot":"","sources":["../../../src/worker-runtime/lib/runtime-layout-profile.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAQ5C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAEjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAKjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAM7B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAKxC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAMD,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAC5C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAmChD,CAAC;AAMF,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,iBAAiB,GACtB,oBAAoB,CAStB"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RUNTIME_LAYOUT_PROFILES = void 0;
4
+ exports.resolveRuntimeLayoutProfile = resolveRuntimeLayoutProfile;
5
+ const enums_1 = require("./enums");
6
+ exports.RUNTIME_LAYOUT_PROFILES = {
7
+ [enums_1.WorkerRuntimeKind.Opencode]: {
8
+ kind: enums_1.WorkerRuntimeKind.Opencode,
9
+ skillBundlesDir: '/workspace/.opencode/skills',
10
+ contextFile: '/workspace/AGENTS.md',
11
+ agentBundlesDir: '/workspace/.opencode/agents',
12
+ commandsDir: '/workspace/.opencode/command',
13
+ },
14
+ [enums_1.WorkerRuntimeKind.Qwen]: {
15
+ kind: enums_1.WorkerRuntimeKind.Qwen,
16
+ skillBundlesDir: '/workspace/.qwen/skills',
17
+ contextFile: '/workspace/AGENTS.md',
18
+ agentBundlesDir: '/workspace/.qwen/agents',
19
+ commandsDir: '/workspace/.qwen/commands',
20
+ },
21
+ [enums_1.WorkerRuntimeKind.ClaudeCode]: {
22
+ kind: enums_1.WorkerRuntimeKind.ClaudeCode,
23
+ skillBundlesDir: '/workspace/.claude/skills',
24
+ contextFile: '/workspace/CLAUDE.md',
25
+ agentBundlesDir: '/workspace/.claude/agents',
26
+ commandsDir: '/workspace/.claude/commands',
27
+ },
28
+ [enums_1.WorkerRuntimeKind.Hermes]: {
29
+ kind: enums_1.WorkerRuntimeKind.Hermes,
30
+ skillBundlesDir: '/workspace/.hermes/skills',
31
+ contextFile: '/workspace/AGENTS.md',
32
+ agentBundlesDir: null,
33
+ commandsDir: null,
34
+ },
35
+ };
36
+ function resolveRuntimeLayoutProfile(kind) {
37
+ const profile = exports.RUNTIME_LAYOUT_PROFILES[kind];
38
+ if (!profile) {
39
+ throw new Error(`RUNTIME_LAYOUT_PROFILE_MISSING:${kind}. Every WorkerRuntimeKind must ` +
40
+ `declare a RuntimeLayoutProfile.`);
41
+ }
42
+ return profile;
43
+ }
44
+ //# sourceMappingURL=runtime-layout-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-layout-profile.js","sourceRoot":"","sources":["../../../src/worker-runtime/lib/runtime-layout-profile.ts"],"names":[],"mappings":";;;AAkGA,kEAWC;AAvFD,mCAA4C;AAkC/B,QAAA,uBAAuB,GAEhC;IACF,CAAC,yBAAiB,CAAC,QAAQ,CAAC,EAAE;QAC5B,IAAI,EAAE,yBAAiB,CAAC,QAAQ;QAChC,eAAe,EAAE,6BAA6B;QAC9C,WAAW,EAAE,sBAAsB;QACnC,eAAe,EAAE,6BAA6B;QAC9C,WAAW,EAAE,8BAA8B;KAC5C;IACD,CAAC,yBAAiB,CAAC,IAAI,CAAC,EAAE;QACxB,IAAI,EAAE,yBAAiB,CAAC,IAAI;QAC5B,eAAe,EAAE,yBAAyB;QAC1C,WAAW,EAAE,sBAAsB;QACnC,eAAe,EAAE,yBAAyB;QAC1C,WAAW,EAAE,2BAA2B;KACzC;IACD,CAAC,yBAAiB,CAAC,UAAU,CAAC,EAAE;QAC9B,IAAI,EAAE,yBAAiB,CAAC,UAAU;QAClC,eAAe,EAAE,2BAA2B;QAC5C,WAAW,EAAE,sBAAsB;QACnC,eAAe,EAAE,2BAA2B;QAC5C,WAAW,EAAE,6BAA6B;KAC3C;IACD,CAAC,yBAAiB,CAAC,MAAM,CAAC,EAAE;QAC1B,IAAI,EAAE,yBAAiB,CAAC,MAAM;QAI9B,eAAe,EAAE,2BAA2B;QAC5C,WAAW,EAAE,sBAAsB;QAGnC,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;KAClB;CACF,CAAC;AAMF,SAAgB,2BAA2B,CACzC,IAAuB;IAEvB,MAAM,OAAO,GAAG,+BAAuB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,iCAAiC;YACrE,iCAAiC,CACpC,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -14,7 +14,7 @@ export interface BuildBundleInput {
14
14
  readonly subAgents: readonly string[];
15
15
  readonly modelOverride?: string;
16
16
  readonly mcpConfig?: string;
17
- readonly opencodeConfigBase64?: string;
17
+ readonly runtimeConfigBase64?: string;
18
18
  }
19
19
  export interface SessionBundle {
20
20
  readonly fingerprint: string;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/worker-runtime/lib/runtime.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ5D,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/C,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAE1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,YAAY,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC9D;AAUD,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC;AAQD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAOD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC;IAMnD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAGvC,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGzD,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAGpE,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGzD,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAGnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAMxB,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;CAC3C"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/worker-runtime/lib/runtime.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ5D,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/C,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAE1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,YAAY,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC9D;AAcD,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAQD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAOD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC;IAMnD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAGvC,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGzD,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAGpE,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGzD,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAGnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAMxB,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;CAC3C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/kernel-contracts",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
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/",
@@ -113,6 +113,19 @@ export interface CompositionNode {
113
113
  * Model Resolution Matrix decides at the invocation boundary.
114
114
  */
115
115
  readonly modelOverride?: ModelRef;
116
+ /**
117
+ * Node-level instructions — a prompt fragment layered ONTO the referenced
118
+ * agent definition's intrinsic system prompt. This is the "instructions"
119
+ * lever that lets a handful of base agents (generic/coder/explorer/planner)
120
+ * be specialized per node without authoring a new agent definition.
121
+ *
122
+ * Composite ordering (resolver-enforced): `agentDefinition.systemPrompt`
123
+ * THEN these `instructions`. The platform `system-overlay.md` (AWP base +
124
+ * deliverable contract + authority) is injected LATER by the runtime — it
125
+ * is NOT part of this field. Absent/blank = the base prompt passes through
126
+ * unchanged (never an empty append).
127
+ */
128
+ readonly instructions?: string;
116
129
  /** Sub-agents — themselves fully-armed composition nodes (recursive). */
117
130
  readonly children: readonly CompositionNode[];
118
131
  /**
@@ -170,6 +183,13 @@ export interface ResolvedCompositionNode {
170
183
  readonly tools: readonly ToolSelectionEntry[];
171
184
  /** Concrete model override, when the node pinned one. */
172
185
  readonly modelOverride?: ModelRef;
186
+ /**
187
+ * Resolved node-level instructions, copied verbatim from the source
188
+ * `CompositionNode.instructions`. The composer/runtime layers this onto
189
+ * the referenced agent definition's `systemPrompt` (base prompt first,
190
+ * then instructions). Absent = no node-level override.
191
+ */
192
+ readonly instructions?: string;
173
193
  /** Resolved sub-agent nodes (recursive). */
174
194
  readonly children: readonly ResolvedCompositionNode[];
175
195
  /**
@@ -1,3 +1,6 @@
1
+ // boundary-check:exempt — this generated file enumerates first-party service
2
+ // names verbatim (e.g. 'opencode-worker'); those names ARE the data, not a
3
+ // tech-stack leak, so the stack-confidentiality scan is opted out here.
1
4
  // AUTO-GENERATED by tooling/codegen/generate-service-names.mjs — DO NOT EDIT.
2
5
  // Source of truth: each biome's xema-biome.json ships.apis[].name + every
3
6
  // ServiceRegistryModule descriptor name. Regenerate: `node tooling/codegen/generate-service-names.mjs`.
@@ -11,4 +11,5 @@ export * from './lib/enums';
11
11
  export * from './lib/capabilities';
12
12
  export * from './lib/messages';
13
13
  export * from './lib/runtime';
14
+ export * from './lib/runtime-layout-profile';
14
15
  export * from './lib/schemas';
@@ -7,18 +7,23 @@
7
7
  // ═══════════════════════════════════════════════════════════════════════════
8
8
 
9
9
  /**
10
- * Identifier of a concrete worker-runtime implementation. v1 ships
11
- * Opencode only additional kinds are reserved for forward compatibility:
10
+ * Identifier of a concrete worker-runtime implementation. Multi-orchestrator
11
+ * support runs every runtime behind the same `WorkerRuntime` contract; the
12
+ * differences (launch command, native config/skill layout, event shape) live
13
+ * in the per-runtime driver + `RuntimeLayoutProfile`, never in this enum.
12
14
  *
13
- * ClaudeCode = 'claude-code'
14
- * CopilotCli = 'copilot-cli'
15
- * OpenHands = 'open-hands'
15
+ * A single fat worker image carries all runtime binaries, so the kind is a
16
+ * software selection at allocation time — not a per-image decision. The enum
17
+ * is the single source of truth; consumers must `switch` exhaustively on it.
16
18
  *
17
- * They are intentionally NOT exported yet. The enum is the single source
18
- * of truth and consumers must `switch` exhaustively on it.
19
+ * Reserved-but-not-yet-driven: `CopilotCli`, `OpenHands` add here when a
20
+ * driver lands.
19
21
  */
20
22
  export enum WorkerRuntimeKind {
21
23
  Opencode = 'opencode',
24
+ Qwen = 'qwen',
25
+ ClaudeCode = 'claude-code',
26
+ Hermes = 'hermes',
22
27
  }
23
28
 
24
29
  /**
@@ -0,0 +1,110 @@
1
+ // ═══════════════════════════════════════════════════════════════════════════
2
+ // ── Runtime layout profiles ──
3
+ //
4
+ // AWP is orchestrator-neutral: the platform composes ONE workspace (skills,
5
+ // sub-agents, slash-commands, the context file) and the supervisor materializes
6
+ // it. WHERE those bytes land on disk is the only thing that differs per
7
+ // orchestrator — OpenCode reads `.opencode/`, Qwen reads `.qwen/`, Claude Code
8
+ // reads `.claude/`, Hermes reads `~/.hermes/`. A `RuntimeLayoutProfile` is that
9
+ // per-runtime slot→path map. It carries NO format knowledge: sub-agent/command
10
+ // frontmatter differences are handled by the per-runtime renderer in the driver,
11
+ // not here.
12
+ //
13
+ // Skill BUNDLES are byte-identical across runtimes (a `SKILL.md` folder loads
14
+ // unmodified everywhere) — only the mount path changes. Sub-agents and
15
+ // slash-commands are NOT format-portable, so a runtime that has no `.md`
16
+ // sub-agent/command surface (Hermes: Python agents) declares `null` for that
17
+ // slot; the composer/driver must then refuse to mount those (fail-fast, never
18
+ // silently drop). The context file is the orchestrator's auto-loaded project
19
+ // prose (`AGENTS.md` for OpenCode/Qwen/Hermes, `CLAUDE.md` for Claude Code) and
20
+ // is where the platform renders the system overlay per WS7.
21
+ // ═══════════════════════════════════════════════════════════════════════════
22
+
23
+ import { WorkerRuntimeKind } from './enums';
24
+
25
+ /**
26
+ * The workspace slots whose on-disk location differs per orchestrator. The
27
+ * Xema-private slots (`.xema/system-overlay.md`, `.xema/instructions`,
28
+ * `context.json`) stay constant across runtimes and are intentionally NOT part
29
+ * of this profile.
30
+ */
31
+ export interface RuntimeLayoutProfile {
32
+ readonly kind: WorkerRuntimeKind;
33
+ /** Absolute dir for skill folder bundles (always supported). */
34
+ readonly skillBundlesDir: string;
35
+ /**
36
+ * Absolute file the orchestrator auto-loads as project context. The platform
37
+ * renders the AWP `agents-md`/`system-overlay` here (always supported).
38
+ */
39
+ readonly contextFile: string;
40
+ /**
41
+ * Absolute dir for sub-agent definition files, or `null` if the runtime has
42
+ * no file-based sub-agent surface (e.g. Hermes uses Python modules). When
43
+ * `null`, the driver MUST fail-fast rather than silently drop sub-agents.
44
+ */
45
+ readonly agentBundlesDir: string | null;
46
+ /**
47
+ * Absolute dir for slash-command files, or `null` if unsupported. Same
48
+ * fail-fast contract as `agentBundlesDir`.
49
+ */
50
+ readonly commandsDir: string | null;
51
+ }
52
+
53
+ /**
54
+ * Closed map of runtime → layout. Exhaustive over `WorkerRuntimeKind`; adding a
55
+ * runtime kind without a profile is a compile error here.
56
+ */
57
+ export const RUNTIME_LAYOUT_PROFILES: Readonly<
58
+ Record<WorkerRuntimeKind, RuntimeLayoutProfile>
59
+ > = {
60
+ [WorkerRuntimeKind.Opencode]: {
61
+ kind: WorkerRuntimeKind.Opencode,
62
+ skillBundlesDir: '/workspace/.opencode/skills',
63
+ contextFile: '/workspace/AGENTS.md',
64
+ agentBundlesDir: '/workspace/.opencode/agents',
65
+ commandsDir: '/workspace/.opencode/command',
66
+ },
67
+ [WorkerRuntimeKind.Qwen]: {
68
+ kind: WorkerRuntimeKind.Qwen,
69
+ skillBundlesDir: '/workspace/.qwen/skills',
70
+ contextFile: '/workspace/AGENTS.md',
71
+ agentBundlesDir: '/workspace/.qwen/agents',
72
+ commandsDir: '/workspace/.qwen/commands',
73
+ },
74
+ [WorkerRuntimeKind.ClaudeCode]: {
75
+ kind: WorkerRuntimeKind.ClaudeCode,
76
+ skillBundlesDir: '/workspace/.claude/skills',
77
+ contextFile: '/workspace/CLAUDE.md',
78
+ agentBundlesDir: '/workspace/.claude/agents',
79
+ commandsDir: '/workspace/.claude/commands',
80
+ },
81
+ [WorkerRuntimeKind.Hermes]: {
82
+ kind: WorkerRuntimeKind.Hermes,
83
+ // Hermes discovers skills from its home dir; the home dir is placed on the
84
+ // persistent subPath at boot (see buildWorkerEnv / WS2) so it survives
85
+ // pause/resume.
86
+ skillBundlesDir: '/workspace/.hermes/skills',
87
+ contextFile: '/workspace/AGENTS.md',
88
+ // Hermes sub-agents are Python modules and its commands are YAML — neither
89
+ // is a portable `.md` surface, so the composer must not mount them as files.
90
+ agentBundlesDir: null,
91
+ commandsDir: null,
92
+ },
93
+ };
94
+
95
+ /**
96
+ * Resolve the layout profile for a runtime kind. Fail-fast on an unregistered
97
+ * kind — never fall back to OpenCode's layout (silent fallbacks hide bugs).
98
+ */
99
+ export function resolveRuntimeLayoutProfile(
100
+ kind: WorkerRuntimeKind,
101
+ ): RuntimeLayoutProfile {
102
+ const profile = RUNTIME_LAYOUT_PROFILES[kind];
103
+ if (!profile) {
104
+ throw new Error(
105
+ `RUNTIME_LAYOUT_PROFILE_MISSING:${kind}. Every WorkerRuntimeKind must ` +
106
+ `declare a RuntimeLayoutProfile.`,
107
+ );
108
+ }
109
+ return profile;
110
+ }
@@ -38,11 +38,15 @@ export interface BuildPodSpecInput {
38
38
 
39
39
  /**
40
40
  * Input describing the agent + skills + model configuration to bundle for
41
- * a worker. `mcpConfig` and `opencodeConfigBase64` are intentionally typed
42
- * as opaque strings at the kernel level — runtime implementations
43
- * interpret them. Other runtimes may carry a runtime-specific blob in the
44
- * same `opencodeConfigBase64` slot under a different conceptual name once
45
- * the kernel generalizes that field.
41
+ * a worker. `mcpConfig` and `runtimeConfigBase64` are intentionally typed
42
+ * as opaque strings at the kernel level — runtime implementations interpret
43
+ * them. Each runtime carries its own config blob here: OpenCode an
44
+ * `opencode.jsonc`, Qwen a `.qwen/settings.json`, Claude a
45
+ * `.claude/settings.json` — all base64-encoded into the same opaque slot.
46
+ *
47
+ * Generalized from `opencodeConfigBase64` once the second/third runtime
48
+ * drivers (Qwen, Claude) landed (WS2). This is a breaking published-contract
49
+ * change — it rides with the coordinated kernel publish + consumer dep-bump.
46
50
  */
47
51
  export interface BuildBundleInput {
48
52
  /** Slug of the primary agent that owns the turn. */
@@ -53,8 +57,8 @@ export interface BuildBundleInput {
53
57
  readonly modelOverride?: string;
54
58
  /** Opaque MCP config blob; runtime-specific. */
55
59
  readonly mcpConfig?: string;
56
- /** Opaque base64-encoded OpenCode config; runtime-specific. */
57
- readonly opencodeConfigBase64?: string;
60
+ /** Opaque base64-encoded runtime config blob; runtime-specific. */
61
+ readonly runtimeConfigBase64?: string;
58
62
  }
59
63
 
60
64
  /**
@@ -54,7 +54,7 @@ export enum PlatformWorkflowDomain {
54
54
  KNOWLEDGE_BASE = 'knowledge-base',
55
55
  /**
56
56
  * Workspace provisioning, template sync, and orchestration sweeps
57
- * (SyncSystemTemplatesWorkflow Temporal lift).
57
+ * (SyncSystemTemplatesWorkflow workflow-runtime lift).
58
58
  */
59
59
  WORKSPACE_ORCHESTRATOR = 'workspace-orchestrator',
60
60
  }
@@ -63,7 +63,7 @@ export enum PlatformWorkflowDomain {
63
63
  export const PLATFORM_TASK_QUEUE_PREFIX = 'xema-platform.';
64
64
 
65
65
  /**
66
- * The Temporal task queue for an internal-workflow domain —
66
+ * The workflow-runtime task queue for an internal-workflow domain —
67
67
  * `xema-platform.<domain>`. Single source of truth: callers derive the queue
68
68
  * from the domain enum, never hard-code the string.
69
69
  */