@exellix/exellix-jobs 4.1.8 → 4.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,7 +15,7 @@ This worker **does not** call `executeGraph` itself. It passes your host `execut
15
15
  | Materialize | `ExecutionMatrixRuntimeRecord.input` — flat field names (`subnetId`, `question`, …), not `input.raw` |
16
16
  | Execute | `runtime.input` on the graph-engine request (same blob as row `input`) |
17
17
 
18
- **Host responsibilities:** supply **`sourceResolver`** / **`inputRows`** so materialized row `input` uses **flat keys** matching `metadata.graphEntry.inputs` (requires **`@exellix/graph-engine` ≥ 5.16**). Wrap production executors with **`createMatrixExecuteGraphAdapter`** from runtime when adding `modelConfig` defaults (see [`examples/host-bootstrap.mjs`](./examples/host-bootstrap.mjs)).
18
+ **Host responsibilities:** supply **`sourceResolver`** / **`inputRows`** so materialized row `input` uses **flat keys** matching `metadata.graphEntry.inputs` (requires **`@exellix/graph-engine` ≥ 5.16**). Wrap production executors with **`createMatrixExecuteGraphAdapter`** from runtime for stable defaults (run knobs only — model profiles belong on graph JSON, not runtime overrides). See [`examples/host-bootstrap.mjs`](./examples/host-bootstrap.mjs).
19
19
 
20
20
  ## Constraints
21
21
 
@@ -1 +1 @@
1
- {"version":3,"file":"wrap-execute-graph.d.ts","sourceRoot":"","sources":["../../src/worker/wrap-execute-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjD,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;CAC5D,CAAC;AAkBF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,8BAA8B,GAAG,mBAAmB,CA2CjG"}
1
+ {"version":3,"file":"wrap-execute-graph.d.ts","sourceRoot":"","sources":["../../src/worker/wrap-execute-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjD,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;CAC5D,CAAC;AAuBF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,8BAA8B,GAAG,mBAAmB,CA2CjG"}
@@ -5,7 +5,12 @@ function resolveGraphId(input) {
5
5
  if (typeof fromJob === 'string' && fromJob.length > 0) {
6
6
  return fromJob;
7
7
  }
8
- const id = input.model?.id;
8
+ const fromPlan = input.plan?.source?.graphId;
9
+ if (typeof fromPlan === 'string' && fromPlan.length > 0) {
10
+ return fromPlan;
11
+ }
12
+ const legacyModel = input.model;
13
+ const id = legacyModel?.id;
9
14
  return typeof id === 'string' && id.length > 0 ? id : 'unknown';
10
15
  }
11
16
  function resolveMatrixCatalogId(input) {
@@ -1 +1 @@
1
- {"version":3,"file":"wrap-execute-graph.js","sourceRoot":"","sources":["../../src/worker/wrap-execute-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrap-execute-graph.js","sourceRoot":"","sources":["../../src/worker/wrap-execute-graph.ts"],"names":[],"mappings":"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"}
package/docs/specs.md CHANGED
@@ -1,11 +1,13 @@
1
- # `@exellix/exellix-jobs` — detailed specification (draft)
1
+ # `@exellix/exellix-jobs` — detailed specification
2
2
 
3
- **Status:** specification only — package **does not exist** yet.
4
- **Audience:** implementers of the new worker package and maintainers of **`@exellix/exellix-runtime`**, **`@exellix/graph-engine`**, **`@x12i/catalox`**.
5
- **Supersedes as normative worker doc:** the narrative in [`docs/execution-matrix-worker-service.md`](../execution-matrix-worker-service.md) once this package ships (that file should become a short pointer).
3
+ **Status:** implementedsee package README and [`docs/openapi.yaml`](./openapi.yaml).
4
+ **Audience:** implementers of the worker package and maintainers of **`@exellix/exellix-runtime`**, **`@exellix/graph-engine`**, **`@x12i/catalox`**.
5
+ **Supersedes as normative worker doc:** the narrative in [`docs/execution-matrix-worker-service.md`](../execution-matrix-worker-service.md) (historical pointer).
6
6
 
7
7
  **Hard rule:** **`@exellix/exellix-jobs`** must **not** import **`mongodb`** or **`@x12i/xronox-store`**. All matrix **data** access goes through **`createExellixMatrixDataTier`** on **`@exellix/exellix-runtime` ≥ 3.1**. **Metadata** (catalog listing, optional graph JSON from Catalox) uses **`@x12i/catalox`** where applicable.
8
8
 
9
+ **Graph model contract (7.x+):** AI profiles are graph-document only — `{ preActionModel, skillModel, postActionModel }` on `model.modelConfig` and optional partial `taskConfiguration.modelConfig`. No `runtime.modelConfig`, `runtime.aliasConfig`, or `runtime.nodes[id].modelConfig`. AI task nodes require explicit `executionStrategies: []` for plain MAIN. OpenRouter keys are env-only (`OPENROUTER_API_KEY`).
10
+
9
11
  ---
10
12
 
11
13
  ## 1. Package identity
@@ -72,7 +74,7 @@
72
74
  | Package | Semver policy | Usage |
73
75
  |---------|----------------|--------|
74
76
  | **`@exellix/exellix-runtime`** | **`^3.1.0`** | `createExellixMatrixDataTier`, `ExecutionMatrixRuntime`, `createExecutionMatrixRuntime`, `ExellixConfigStore`, `createExellixConfigStore`, `runMatrixCycle`, `runMatrixContinuously`, `processMatrixGraphBatch`, `processNextMatrixClaim`, `createExecutionMatrixClaimPauseController`, `buildExellixRuntimeRealLivenessPayload`, `runExellixRuntimeConnectivityProbe`, types from `contracts` |
75
- | **`@exellix/graph-engine`** | **≥ 5.16** (via runtime) | **`executeGraph`** — host supplies executor; record on **`runtime.input`** only (see §6.1) |
77
+ | **`@exellix/graph-engine`** | **≥ 7.7** (via runtime) | **`executeGraph`** — host supplies executor; record on **`runtime.input`** only; graph JSON model profiles (see §6.1) |
76
78
  | **`@x12i/catalox`** | Optional | Only if **`resolveGraphModel`** loads graph JSON from Firestore catalogs |
77
79
  | **`@x12i/env`** | Optional | `initConfig` for `.env` in dev |
78
80
 
@@ -109,8 +111,8 @@ Worker-specific rules:
109
111
  1. **`@exellix/exellix-jobs` never constructs `ExecuteGraphInput`** — it imports `runMatrixCycle` / `processMatrixGraphBatch` from **`@exellix/exellix-runtime`** and wraps the host `executeGraph` only for concurrency and metrics ([`wrap-execute-graph.ts`](../src/worker/wrap-execute-graph.ts)).
110
112
  2. **Materialize** — runtime persists the work-unit on **`ExecutionMatrixRuntimeRecord.input`**. The host must ensure **`sourceResolver`** / **`inputRows`** produce **flat** field names aligned with graph `graphEntry.inputs` (e.g. `subnetId`, `question` on the row object — not nested `raw` wrappers).
111
113
  3. **Execute** — orchestrator **`executeMatrixGraphForClaim`** sets **`runtime.input = record.input`**, seeds **`executionMemory`** via `buildExecutionSeedFromGraphEntry`, then calls **`executeGraph({ model, runtime })`**.
112
- 4. **Host `executeGraph`** — must accept `{ model, runtime }` only; use **`createMatrixExecuteGraphAdapter`** when layering defaults without overriding orchestrator-owned `jobId` / `job` / `input` / `executionMemory`.
113
- 5. **Dependencies** — **`@exellix/graph-engine` ≥ 5.16** (no implicit `job.raw` → `execution.input.raw` promotion). Align versions with **`@exellix/exellix-runtime`**.
114
+ 4. **Host `executeGraph`** — must accept `{ model, runtime }` only; use **`createMatrixExecuteGraphAdapter`** when layering run defaults without overriding orchestrator-owned `jobId` / `job` / `input` / `executionMemory`. Do not inject model profiles via runtime — set `model.modelConfig` / `taskConfiguration.modelConfig` on graph JSON.
115
+ 5. **Dependencies** — **`@exellix/graph-engine` ≥ 7.7** (no runtime model routing; no implicit `job.raw` → `execution.input.raw` promotion). Align versions with **`@exellix/exellix-runtime`**.
114
116
 
115
117
  ---
116
118
 
@@ -57,8 +57,10 @@ export default async function bootstrap() {
57
57
  };
58
58
  const graph = await loadGraphEngineBootstrap();
59
59
  // Production: wrap graph.executeGraph with createMatrixExecuteGraphAdapter from
60
- // @exellix/exellix-runtime (see docs/execution-matrix-runtime.md) so modelConfig defaults
60
+ // @exellix/exellix-runtime (see docs/execution-matrix-runtime.md) so run-level defaults
61
61
  // merge under orchestrator-owned jobId / job / input / executionMemory.
62
+ // Model profiles (preActionModel, skillModel, postActionModel) belong on graph JSON only —
63
+ // not runtime.modelConfig, runtime.aliasConfig, or executeOverrides model fields (7.7+).
62
64
  return {
63
65
  workerOptions: {
64
66
  persistence,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exellix/exellix-jobs",
3
- "version": "4.1.8",
3
+ "version": "4.1.10",
4
4
  "description": "Execution-matrix worker: claims, run-loop, operator HTTP, and Prometheus metrics (XMemory-backed persistence).",
5
5
  "type": "module",
6
6
  "engines": {
@@ -38,6 +38,10 @@
38
38
  "test": "vitest run",
39
39
  "test:watch": "vitest"
40
40
  },
41
+ "overrides": {
42
+ "@x12i/activix": "^8.6.2",
43
+ "@x12i/funcx": "^4.7.1"
44
+ },
41
45
  "peerDependenciesMeta": {
42
46
  "@x12i/catalox": {
43
47
  "optional": true
@@ -47,8 +51,9 @@
47
51
  }
48
52
  },
49
53
  "dependencies": {
50
- "@exellix/ai-tasks": "^8.6.8",
51
- "@exellix/exellix-runtime": "^4.4.0",
54
+ "@exellix/ai-tasks": "^9.0.3",
55
+ "@exellix/exellix-runtime": "^5.1.3",
56
+ "@x12i/activix": "^8.6.2",
52
57
  "@x12i/logxer": "^4.6.0",
53
58
  "fastify": "^5.8.5",
54
59
  "p-limit": "^7.3.0",