@loxtep/sdk 0.9.31 → 0.9.32

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 (31) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +1 -0
  3. package/dist/client/instances-types.d.ts +0 -1
  4. package/dist/client/instances-types.d.ts.map +1 -1
  5. package/dist/lib/entity-json-schemas/types.d.ts +9 -0
  6. package/dist/lib/entity-json-schemas/types.d.ts.map +1 -1
  7. package/dist/lib/entity-json-schemas/types.js +14 -0
  8. package/dist/lib/entity-json-schemas/types.js.map +1 -1
  9. package/dist/lib/workspace-lint.d.ts +7 -0
  10. package/dist/lib/workspace-lint.d.ts.map +1 -1
  11. package/dist/lib/workspace-lint.js +68 -25
  12. package/dist/lib/workspace-lint.js.map +1 -1
  13. package/package.json +2 -1
  14. package/schemas/entity-json-schemas/SCHEMA_SYNC.md +10 -11
  15. package/schemas/entity-json-schemas/SOURCE.json +24 -0
  16. package/schemas/entity-json-schemas/agent.json +97 -0
  17. package/schemas/entity-json-schemas/approval.json +92 -0
  18. package/schemas/entity-json-schemas/connection.json +92 -4
  19. package/schemas/entity-json-schemas/connector.json +2 -0
  20. package/schemas/entity-json-schemas/container.json +1 -1
  21. package/schemas/entity-json-schemas/contract.json +10 -0
  22. package/schemas/entity-json-schemas/data-product.json +18 -1
  23. package/schemas/entity-json-schemas/domain.json +15 -0
  24. package/schemas/entity-json-schemas/export.json +26 -0
  25. package/schemas/entity-json-schemas/odps-product.json +1 -1
  26. package/schemas/entity-json-schemas/projection.json +94 -0
  27. package/schemas/entity-json-schemas/quality-rule.json +10 -0
  28. package/schemas/entity-json-schemas/schema.json +10 -0
  29. package/schemas/entity-json-schemas/transformation.json +11 -3
  30. package/schemas/entity-json-schemas/validation.json +8 -2
  31. package/schemas/entity-json-schemas/workflow.json +58 -3
package/CHANGELOG.md CHANGED
@@ -8,6 +8,23 @@ and this project adheres to
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.9.32] - 2026-10-19
12
+
13
+ ### Fixed
14
+
15
+ - Vendored entity JSON Schemas re-synced from the platform's single source (`platform-backend/_core/src/workspace/entity-json-schemas/`, LoxtepInc/loxtep#3002). The old copy dated from 2026-07-24 and was read from an unused platform directory, so `loxtep lint` rejected valid entities: connection `connector_type` / `transfer_mechanism` / `ingestion_config.primary_key`, transform types `zip_arrays` / `route`, workflow `status: archived` / `archived_at` / `trigger.query_trigger`, data-product `kind` / `schema`, and more. Adds `projection.json`, `approval.json` and `agent.json`. The source commit (LoxtepInc/loxtep `3dbf25ff`, the #3007 squash merge) is pinned in `schemas/entity-json-schemas/SOURCE.json`.
16
+ - `loxtep lint` validates every entity type the SDK ships a schema for: `exports`, `quality-rules`, `containers`, `projections`, `approvals`, `agents`, and `workflows/<id>/_graph.json` (against `workflow-graph.json`). A JSON file at a path lint doesn't recognise is now reported as an error (`Unrecognised file …`) instead of being skipped silently, and it counts in `files_checked`.
17
+ - `InstanceCreateInput.connection_details.observe_api` no longer has `namespace`. POST /instances refuses it (LoxtepInc/loxtep#2956); the platform assigns the namespace.
18
+
19
+ ### Added
20
+
21
+ - `EntityType.CONTAINER`, `PROJECTION`, `APPROVAL`, `AGENT` and `WORKFLOW_GRAPH`, plus `classifyPackagePath()` / `RECOGNISED_PACKAGE_PATHS` from the lint module.
22
+ - `pnpm run check:entity-schemas`, run in CI and before publish. It fails when any vendored schema differs from the pinned loxtep commit's git blob, or a file is missing or extra. `--source /path/to/loxtep` also verifies the pin against that checkout. `sync:entity-schemas` now copies from the checkout's HEAD commit, refuses uncommitted source changes, and removes schemas the source no longer has.
23
+
24
+ ### Docs
25
+
26
+ - README: an SDK `Trigger` is the platform connection entity, not the workflow `trigger` property.
27
+
11
28
  ## [0.9.29] - 2026-10-15
12
29
 
13
30
  ### Fixed
package/README.md CHANGED
@@ -227,6 +227,7 @@ Every method is `snake_case`. APIs live on **namespaced areas** of
227
227
  - **`.workflows`** — `list`, `get`, `create`, `get_graph`, `deploy`; low-level
228
228
  `.get_writer(workflow_id, { bot_id, … })` escape hatch
229
229
  - **`.triggers`** — `get`, `list`, `create`, `update`, `delete`, `test`
230
+ - **Naming note:** an SDK `Trigger` (`dist/client/trigger-types.d.ts`) is the platform **connection** entity (`connection_id`, `workflows/<id>/connections/*.json`), validated by `schemas/entity-json-schemas/connection.json`. It is not the workflow's `trigger` property (event / schedule / connector / `query_trigger`), which is part of `workflow.json`. There is no separate trigger entity schema.
230
231
  - **`.data_products`** — CRUD, `stream`, `replay`, `get_queue_info`,
231
232
  `invalidate_cache`, … (for writes/reads by name, prefer top-level
232
233
  `client.get_writer` / `get_reader`)
@@ -68,7 +68,6 @@ export interface InstanceCreateInput {
68
68
  rstreams_secret_arn?: string;
69
69
  rstreams_auth_arn?: string;
70
70
  external_id?: string;
71
- namespace?: string;
72
71
  };
73
72
  connector_vpc?: ConnectorVpc;
74
73
  };
@@ -1 +1 @@
1
- {"version":3,"file":"instances-types.d.ts","sourceRoot":"","sources":["../../src/client/instances-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instances-types.d.ts","sourceRoot":"","sources":["../../src/client/instances-types.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,15 @@ export declare const EntityType: {
14
14
  readonly CONTRACT: "contracts";
15
15
  readonly QUALITY_RULE: "quality-rules";
16
16
  readonly EXPORT: "exports";
17
+ readonly CONTAINER: "containers";
18
+ readonly PROJECTION: "projections";
19
+ readonly APPROVAL: "approvals";
20
+ readonly AGENT: "agents";
21
+ /**
22
+ * Materialized `workflows/<id>/_graph.json`. A derived artifact, not a platform
23
+ * EntityType; lint validates it against workflow-graph.json.
24
+ */
25
+ readonly WORKFLOW_GRAPH: "workflow-graph";
17
26
  };
18
27
  export type EntityType = (typeof EntityType)[keyof typeof EntityType];
19
28
  /** Map entity type → schema filename (without path). */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/entity-json-schemas/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;CAYb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAY1D,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/entity-json-schemas/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;IAgBrB;;;OAGG;;CAEK,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAiB1D,CAAC"}
@@ -14,6 +14,15 @@ export const EntityType = {
14
14
  CONTRACT: 'contracts',
15
15
  QUALITY_RULE: 'quality-rules',
16
16
  EXPORT: 'exports',
17
+ CONTAINER: 'containers',
18
+ PROJECTION: 'projections',
19
+ APPROVAL: 'approvals',
20
+ AGENT: 'agents',
21
+ /**
22
+ * Materialized `workflows/<id>/_graph.json`. A derived artifact, not a platform
23
+ * EntityType; lint validates it against workflow-graph.json.
24
+ */
25
+ WORKFLOW_GRAPH: 'workflow-graph',
17
26
  };
18
27
  /** Map entity type → schema filename (without path). */
19
28
  export const ENTITY_SCHEMA_FILES = {
@@ -28,5 +37,10 @@ export const ENTITY_SCHEMA_FILES = {
28
37
  [EntityType.CONTRACT]: 'contract.json',
29
38
  [EntityType.QUALITY_RULE]: 'quality-rule.json',
30
39
  [EntityType.EXPORT]: 'export.json',
40
+ [EntityType.CONTAINER]: 'container.json',
41
+ [EntityType.PROJECTION]: 'projection.json',
42
+ [EntityType.APPROVAL]: 'approval.json',
43
+ [EntityType.AGENT]: 'agent.json',
44
+ [EntityType.WORKFLOW_GRAPH]: 'workflow-graph.json',
31
45
  };
32
46
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/entity-json-schemas/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,WAAW;IACrB,cAAc,EAAE,iBAAiB;IACjC,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,WAAW;IACrB,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,SAAS;CACT,CAAC;AAIX,wDAAwD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAA+B;IAC7D,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa;IAClC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,gBAAgB;IACxC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,iBAAiB;IAC1C,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,eAAe;IACtC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,qBAAqB;IAClD,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,iBAAiB;IAC1C,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,mBAAmB;IAC9C,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa;IAClC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,eAAe;IACtC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,mBAAmB;IAC9C,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa;CACnC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/entity-json-schemas/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,WAAW;IACrB,cAAc,EAAE,iBAAiB;IACjC,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,WAAW;IACrB,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,QAAQ;IACf;;;OAGG;IACH,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAIX,wDAAwD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAA+B;IAC7D,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa;IAClC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,gBAAgB;IACxC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,iBAAiB;IAC1C,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,eAAe;IACtC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,qBAAqB;IAClD,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,iBAAiB;IAC1C,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,mBAAmB;IAC9C,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa;IAClC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,eAAe;IACtC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,mBAAmB;IAC9C,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa;IAClC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,gBAAgB;IACxC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,iBAAiB;IAC1C,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,eAAe;IACtC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,YAAY;IAChC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,qBAAqB;CACnD,CAAC"}
@@ -31,6 +31,13 @@ export interface LintOptions {
31
31
  export declare const DATA_PRODUCT_TRIGGER_TYPE: "data-product-trigger";
32
32
  /** Rejected legacy spelling — lint fails with a rename message. */
33
33
  export declare const DATA_PRODUCT_TRIGGER_TYPE_LEGACY: "data_product_trigger";
34
+ /** Human-readable list of the paths lint understands (used in the unrecognised-file issue). */
35
+ export declare const RECOGNISED_PACKAGE_PATHS: readonly string[];
36
+ /**
37
+ * Map a package-relative path to the entity type whose shipped schema validates it.
38
+ * Returns null for a path lint does not recognise; callers must report it, not skip it.
39
+ */
40
+ export declare function classifyPackagePath(relPath: string): (typeof EntityType)[keyof typeof EntityType] | null;
34
41
  /**
35
42
  * Resolve the entity's own primary ID for its type.
36
43
  * Never prefers parent/reference IDs (workflow_id, connector_id on connections, etc.).
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-lint.d.ts","sourceRoot":"","sources":["../../src/lib/workspace-lint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAkB,MAAM,gCAAgC,CAAC;AAE5E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAQD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAG,sBAA+B,CAAC;AAEzE,mEAAmE;AACnE,eAAO,MAAM,gCAAgC,EAAG,sBAA+B,CAAC;AAmJhF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,UAAU,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,GAAG,MAAM,GAAG,SAAS,CAKrB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAGrF;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAKzF;AAgKD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CA4FjE;AAiDD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAcjE"}
1
+ {"version":3,"file":"workspace-lint.d.ts","sourceRoot":"","sources":["../../src/lib/workspace-lint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAkB,MAAM,gCAAgC,CAAC;AAE5E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAQD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAG,sBAA+B,CAAC;AAEzE,mEAAmE;AACnE,eAAO,MAAM,gCAAgC,EAAG,sBAA+B,CAAC;AAiFhF,+FAA+F;AAC/F,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAQrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,GACd,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,GAAG,IAAI,CA0BrD;AA8DD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,UAAU,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,GAAG,MAAM,GAAG,SAAS,CAKrB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAGrF;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAKzF;AAgKD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAyGjE;AAiDD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAcjE"}
@@ -25,6 +25,10 @@ const ENTITY_PRIMARY_ID_KEYS = {
25
25
  [EntityType.CONTRACT]: 'contract_id',
26
26
  [EntityType.QUALITY_RULE]: 'quality_rule_id',
27
27
  [EntityType.EXPORT]: 'export_id',
28
+ [EntityType.CONTAINER]: 'container_id',
29
+ [EntityType.PROJECTION]: 'projection_id',
30
+ [EntityType.APPROVAL]: 'approval_node_id',
31
+ [EntityType.AGENT]: 'agent_node_id',
28
32
  };
29
33
  /** Entity types that may appear as upstream_entity_id targets within a package. */
30
34
  const UPSTREAM_REFERENCE_ENTITY_TYPES = new Set([
@@ -67,38 +71,64 @@ function listJsonFiles(dir) {
67
71
  }
68
72
  return out;
69
73
  }
70
- function classifyEntity(projectDir, filePath) {
71
- const rel = relative(projectDir, filePath).replace(/\\/g, '/');
74
+ /** Workflow-scoped entity folders (`workflows/<id>/<segment>/<file>.json`). */
75
+ const WORKFLOW_SCOPED_SEGMENTS = [
76
+ ['connections', EntityType.CONNECTION],
77
+ ['data-products', EntityType.DATA_PRODUCT],
78
+ ['transformations', EntityType.TRANSFORMATION],
79
+ ['validations', EntityType.VALIDATION],
80
+ ['schemas', EntityType.SCHEMA],
81
+ ['contracts', EntityType.CONTRACT],
82
+ ['quality-rules', EntityType.QUALITY_RULE],
83
+ ['exports', EntityType.EXPORT],
84
+ ['containers', EntityType.CONTAINER],
85
+ ['projections', EntityType.PROJECTION],
86
+ ['approvals', EntityType.APPROVAL],
87
+ ['agents', EntityType.AGENT],
88
+ ];
89
+ /** Human-readable list of the paths lint understands (used in the unrecognised-file issue). */
90
+ export const RECOGNISED_PACKAGE_PATHS = [
91
+ 'connectors/<file>.json',
92
+ 'domains/<file>.json',
93
+ 'schemas/<file>.json',
94
+ 'contracts/<file>.json',
95
+ 'workflows/<id>/workflow.json',
96
+ 'workflows/<id>/_graph.json',
97
+ ...WORKFLOW_SCOPED_SEGMENTS.map(([segment]) => `workflows/<id>/${segment}/<file>.json`),
98
+ ];
99
+ /**
100
+ * Map a package-relative path to the entity type whose shipped schema validates it.
101
+ * Returns null for a path lint does not recognise; callers must report it, not skip it.
102
+ */
103
+ export function classifyPackagePath(relPath) {
104
+ const rel = relPath.replace(/\\/g, '/');
72
105
  if (rel.startsWith('connectors/') && rel.endsWith('.json')) {
73
106
  return EntityType.CONNECTOR;
74
107
  }
75
- if (rel.match(/^workflows\/[^/]+\/workflow\.json$/)) {
76
- return EntityType.WORKFLOW;
77
- }
78
- if (rel.match(/^workflows\/[^/]+\/connections\/[^/]+\.json$/)) {
79
- return EntityType.CONNECTION;
80
- }
81
- if (rel.match(/^workflows\/[^/]+\/data-products\/[^/]+\.json$/)) {
82
- return EntityType.DATA_PRODUCT;
83
- }
84
- if (rel.match(/^workflows\/[^/]+\/transformations\/[^/]+\.json$/)) {
85
- return EntityType.TRANSFORMATION;
86
- }
87
- if (rel.match(/^workflows\/[^/]+\/validations\/[^/]+\.json$/)) {
88
- return EntityType.VALIDATION;
89
- }
90
108
  if (rel.startsWith('domains/') && rel.endsWith('.json')) {
91
109
  return EntityType.DOMAIN;
92
110
  }
93
- if (rel.match(/^(?:schemas|workflows\/[^/]+\/schemas)\/[^/]+\.json$/)) {
111
+ if (/^schemas\/[^/]+\.json$/.test(rel)) {
94
112
  return EntityType.SCHEMA;
95
113
  }
96
- if (rel.match(/^(?:contracts|workflows\/[^/]+\/contracts)\/[^/]+\.json$/)) {
114
+ if (/^contracts\/[^/]+\.json$/.test(rel)) {
97
115
  return EntityType.CONTRACT;
98
116
  }
117
+ if (/^workflows\/[^/]+\/workflow\.json$/.test(rel)) {
118
+ return EntityType.WORKFLOW;
119
+ }
120
+ if (/^workflows\/[^/]+\/_graph\.json$/.test(rel)) {
121
+ return EntityType.WORKFLOW_GRAPH;
122
+ }
123
+ const scoped = rel.match(/^workflows\/[^/]+\/([^/]+)\/[^/]+\.json$/);
124
+ if (scoped) {
125
+ const hit = WORKFLOW_SCOPED_SEGMENTS.find(([segment]) => segment === scoped[1]);
126
+ if (hit)
127
+ return hit[1];
128
+ }
99
129
  return null;
100
130
  }
101
- function discoverEntities(projectDir, workflowId) {
131
+ function discoverEntities(projectDir, workflowId, unrecognised = []) {
102
132
  const entities = [];
103
133
  const roots = [
104
134
  join(projectDir, 'connectors'),
@@ -114,11 +144,13 @@ function discoverEntities(projectDir, workflowId) {
114
144
  }
115
145
  for (const root of roots) {
116
146
  for (const filePath of listJsonFiles(root)) {
117
- const entityType = classifyEntity(projectDir, filePath);
118
- if (!entityType)
147
+ const rel = relative(projectDir, filePath).replace(/\\/g, '/');
148
+ const entityType = classifyPackagePath(rel);
149
+ if (!entityType) {
150
+ unrecognised.push(rel);
119
151
  continue;
152
+ }
120
153
  const data = readJsonObject(filePath);
121
- const rel = relative(projectDir, filePath).replace(/\\/g, '/');
122
154
  if (!data) {
123
155
  entities.push({
124
156
  path: rel,
@@ -323,8 +355,19 @@ export function lintLocalPackage(options) {
323
355
  issues: [{ path: projectDir, severity: 'error', message: 'Project directory not found' }],
324
356
  };
325
357
  }
326
- const entities = discoverEntities(projectDir, workflow_id);
358
+ const unrecognised = [];
359
+ const entities = discoverEntities(projectDir, workflow_id, unrecognised);
327
360
  const byType = buildEntityIndex(entities);
361
+ // A file lint cannot classify is never silently skipped: it is reported so the
362
+ // author either moves it to a recognised path or removes it.
363
+ for (const rel of unrecognised.sort()) {
364
+ issues.push({
365
+ path: rel,
366
+ severity: 'error',
367
+ message: 'Unrecognised file: not a Loxtep entity path, so lint cannot validate it. ' +
368
+ `Expected one of: ${RECOGNISED_PACKAGE_PATHS.join(', ')}`,
369
+ });
370
+ }
328
371
  for (const entity of entities) {
329
372
  if (Object.keys(entity.data).length === 0) {
330
373
  issues.push({
@@ -393,7 +436,7 @@ export function lintLocalPackage(options) {
393
436
  return {
394
437
  ok: issues.length === 0,
395
438
  issues,
396
- files_checked: entities.length,
439
+ files_checked: entities.length + unrecognised.length,
397
440
  };
398
441
  }
399
442
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-lint.js","sourceRoot":"","sources":["../../src/lib/workspace-lint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-lint.js","sourceRoot":"","sources":["../../src/lib/workspace-lint.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxtep/sdk",
3
- "version": "0.9.31",
3
+ "version": "0.9.32",
4
4
  "description": "Loxtep SDK for Node.js — the Enterprise Context Layer: data products, workflows, projects, queues, and machine-usable context for AI",
5
5
  "author": "Loxtep <engineering@loxtep.io>",
6
6
  "homepage": "https://loxtep.io",
@@ -43,6 +43,7 @@
43
43
  "test": "jest --config jest.config.cjs",
44
44
  "lint": "eslint src --ext .ts",
45
45
  "sync:entity-schemas": "node scripts/sync-entity-schemas.mjs",
46
+ "check:entity-schemas": "node scripts/check-entity-schemas.mjs",
46
47
  "generate:api-types": "tsx scripts/generate-api-types.ts",
47
48
  "docs": "typedoc",
48
49
  "test:e2e:cli": "bash scripts/cli-e2e.sh",
@@ -1,19 +1,18 @@
1
1
  # Entity JSON schemas (vendored)
2
2
 
3
- These JSON Schema draft-07 files are a copy of the Loxtep platform schemas used
4
- for customer workspace entity validation.
3
+ These JSON Schema draft-07 files are byte-identical copies of the Loxtep platform's
4
+ single entity-schema source, used by `loxtep lint` and `validateEntity()`.
5
5
 
6
- **Source (canonical):** Loxtep platform customer-workspace entity JSON schemas
7
- (private platform monorepo). Sync from a local checkout when those schemas
8
- change.
6
+ **Source:** `LoxtepInc/loxtep` `platform-backend/_core/src/workspace/entity-json-schemas/`
7
+ **Pinned commit:** `3dbf25ff227874d1a475c7a82939893fcc4c222b` (git blob ids per file in `SOURCE.json`)
9
8
 
10
- **Sync command** (from `nodejs/`):
9
+ **Sync** (from `nodejs/`, with a loxtep checkout at the commit to pin):
11
10
 
12
11
  ```bash
13
- node scripts/sync-entity-schemas.mjs /path/to/loxtep
12
+ pnpm run sync:entity-schemas /path/to/loxtep
13
+ pnpm run check:entity-schemas
14
14
  ```
15
15
 
16
- When platform schemas change, re-run the sync script and note the date/source
17
- commit in the SDK CHANGELOG.
18
-
19
- **Last synced:** 2026-07-24 (from local Loxtep platform checkout)
16
+ `check:entity-schemas` runs in CI and before publish. It fails if any vendored file
17
+ differs from the pinned commit's blob, or if a file is missing or extra. Do not edit
18
+ these files by hand; re-sync instead and note the commit in CHANGELOG.md.
@@ -0,0 +1,24 @@
1
+ {
2
+ "repository": "LoxtepInc/loxtep",
3
+ "path": "platform-backend/_core/src/workspace/entity-json-schemas",
4
+ "commit": "3dbf25ff227874d1a475c7a82939893fcc4c222b",
5
+ "files": {
6
+ "agent.json": "925caaa71058fea41f4820a92232169af9e391b3",
7
+ "approval.json": "b341fe232f1f2a7ceb3d100f9475abc3ca790c22",
8
+ "connection.json": "7252312151bdaebd2ee579208636b0b1c73aacb2",
9
+ "connector.json": "712b7f7abb0c06aecd29a76b667950a0eda070d7",
10
+ "container.json": "3b5b3a51d4f27645e3db2e8e2992aeee984de5ee",
11
+ "contract.json": "04fec0f7f4c26890e8163d88770a5613316b245d",
12
+ "data-product.json": "ceb1b6211740b85be37dd4ce64753db240c42851",
13
+ "domain.json": "42e83648bdebec54fabdb1ba9f7d7a1369f3ba05",
14
+ "export.json": "44ef4bb5c21860a66cd57d86e06a66ff7813c225",
15
+ "odps-product.json": "53b8eb5eb070d0d1e60a91fe908e038ee3e5d599",
16
+ "projection.json": "5457e3f233f936d3fba38bc8513fb99a54961607",
17
+ "quality-rule.json": "917a26d325d47c39d68630df5bd9e0c0c411a246",
18
+ "schema.json": "38940cc4e8b59a70cf44699459af0b8a09f0fc52",
19
+ "transformation.json": "7f5c8a5f771964d0637ec2f38def6d7c8dbd3fd1",
20
+ "validation.json": "bba581abb2f12a360ba910f7ed912bafdefa81dd",
21
+ "workflow-graph.json": "9715eea18965bea97fc5546edb4b37629c77315b",
22
+ "workflow.json": "afe25e55833ac957bdcd62d32e6c9df83779c54b"
23
+ }
24
+ }
@@ -0,0 +1,97 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://loxtep.io/schemas/entity/agent.json",
4
+ "title": "Agent Node Entity",
5
+ "description": "JSON Schema for Agent node entity (workflows/{workflow_id}/agents/{id}.json). AI model invocation node in the streaming pipeline. Bounds match graph-patch-apply validateAgentNodePayload. additionalProperties stays open because AgentNodeEntity ([key: string]: unknown) and graph patch node_config carry runtime-specific keys; known fields are typed and required fields are enforced.",
6
+ "type": "object",
7
+ "required": [
8
+ "agent_node_id",
9
+ "workflow_id",
10
+ "name",
11
+ "model_id",
12
+ "prompt_template"
13
+ ],
14
+ "properties": {
15
+ "agent_node_id": {
16
+ "type": "string",
17
+ "minLength": 1,
18
+ "description": "Unique identifier for the agent node"
19
+ },
20
+ "workflow_id": {
21
+ "type": "string",
22
+ "format": "uuid",
23
+ "description": "Workflow this agent node belongs to"
24
+ },
25
+ "name": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "maxLength": 128,
29
+ "description": "Display name (1-128 characters)"
30
+ },
31
+ "model_id": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "maxLength": 256,
35
+ "description": "Model identifier to invoke (1-256 characters)"
36
+ },
37
+ "prompt_template": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "maxLength": 10000,
41
+ "description": "Prompt template rendered with the event payload (1-10000 characters)"
42
+ },
43
+ "timeout_seconds": {
44
+ "type": "number",
45
+ "minimum": 1,
46
+ "maximum": 300,
47
+ "description": "Invocation timeout in seconds (1-300)"
48
+ },
49
+ "output_schema": {
50
+ "type": ["object", "null"],
51
+ "description": "Optional JSON Schema for the model output (at most 50KB serialized)"
52
+ },
53
+ "error_queue_name": {
54
+ "type": "string",
55
+ "minLength": 1,
56
+ "description": "Queue that receives failed invocations"
57
+ },
58
+ "upstream_entity_id": {
59
+ "type": ["string", "null"],
60
+ "description": "Upstream node in the workflow graph"
61
+ },
62
+ "upstream_entity_type": {
63
+ "type": ["string", "null"],
64
+ "description": "Entity type of the upstream node"
65
+ },
66
+ "upstream_label": {
67
+ "type": "string",
68
+ "enum": ["approved", "rejected", "error"],
69
+ "description": "Labelled edge from the upstream node (approval branches)"
70
+ },
71
+ "description": {
72
+ "type": ["string", "null"],
73
+ "description": "Free-text description"
74
+ },
75
+ "organization_id": {
76
+ "type": "string",
77
+ "format": "uuid",
78
+ "description": "Organization that owns this node"
79
+ },
80
+ "project_id": {
81
+ "type": "string",
82
+ "format": "uuid",
83
+ "description": "Project that owns this node"
84
+ },
85
+ "created_at": {
86
+ "type": "string",
87
+ "format": "date-time",
88
+ "description": "ISO 8601 timestamp when the node was created"
89
+ },
90
+ "updated_at": {
91
+ "type": "string",
92
+ "format": "date-time",
93
+ "description": "ISO 8601 timestamp when the node was last updated"
94
+ }
95
+ },
96
+ "additionalProperties": true
97
+ }
@@ -0,0 +1,92 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://loxtep.io/schemas/entity/approval.json",
4
+ "title": "Approval Node Entity",
5
+ "description": "JSON Schema for Approval node entity (workflows/{workflow_id}/approvals/{id}.json). Human-in-the-loop gate that pauses event flow pending a decision. Bounds match graph-patch-apply validateApprovalNodePayload. additionalProperties stays open because ApprovalNodeEntity ([key: string]: unknown) and graph patch node_config carry runtime-specific keys; known fields are typed and required fields are enforced.",
6
+ "type": "object",
7
+ "required": [
8
+ "approval_node_id",
9
+ "workflow_id",
10
+ "name",
11
+ "approval_channel",
12
+ "timeout_hours"
13
+ ],
14
+ "properties": {
15
+ "approval_node_id": {
16
+ "type": "string",
17
+ "minLength": 1,
18
+ "description": "Unique identifier for the approval node"
19
+ },
20
+ "workflow_id": {
21
+ "type": "string",
22
+ "format": "uuid",
23
+ "description": "Workflow this approval node belongs to"
24
+ },
25
+ "name": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "maxLength": 128,
29
+ "description": "Display name (1-128 characters)"
30
+ },
31
+ "approval_channel": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "maxLength": 256,
35
+ "description": "Channel where approval requests are sent (1-256 characters)"
36
+ },
37
+ "timeout_hours": {
38
+ "type": "number",
39
+ "minimum": 1,
40
+ "maximum": 168,
41
+ "description": "Hours before the approval request times out (1-168)"
42
+ },
43
+ "approved_queue_name": {
44
+ "type": "string",
45
+ "minLength": 1,
46
+ "description": "Queue that receives approved events"
47
+ },
48
+ "rejected_queue_name": {
49
+ "type": "string",
50
+ "minLength": 1,
51
+ "description": "Queue that receives rejected events"
52
+ },
53
+ "upstream_entity_id": {
54
+ "type": ["string", "null"],
55
+ "description": "Upstream node in the workflow graph"
56
+ },
57
+ "upstream_entity_type": {
58
+ "type": ["string", "null"],
59
+ "description": "Entity type of the upstream node"
60
+ },
61
+ "upstream_label": {
62
+ "type": "string",
63
+ "enum": ["approved", "rejected", "error"],
64
+ "description": "Labelled edge from the upstream node (approval branches)"
65
+ },
66
+ "description": {
67
+ "type": ["string", "null"],
68
+ "description": "Free-text description"
69
+ },
70
+ "organization_id": {
71
+ "type": "string",
72
+ "format": "uuid",
73
+ "description": "Organization that owns this node"
74
+ },
75
+ "project_id": {
76
+ "type": "string",
77
+ "format": "uuid",
78
+ "description": "Project that owns this node"
79
+ },
80
+ "created_at": {
81
+ "type": "string",
82
+ "format": "date-time",
83
+ "description": "ISO 8601 timestamp when the node was created"
84
+ },
85
+ "updated_at": {
86
+ "type": "string",
87
+ "format": "date-time",
88
+ "description": "ISO 8601 timestamp when the node was last updated"
89
+ }
90
+ },
91
+ "additionalProperties": true
92
+ }
@@ -67,6 +67,11 @@
67
67
  "minLength": 1,
68
68
  "description": "Connection type: database, api, webhook, file, or connector type (e.g. spotify, shopify)"
69
69
  },
70
+ "connector_type": {
71
+ "type": "string",
72
+ "minLength": 1,
73
+ "description": "Connector package type emitted on connection-created (for example data-product-trigger). Distinct from type when a template sets both."
74
+ },
70
75
  "status": {
71
76
  "type": "string",
72
77
  "enum": ["active", "inactive", "error"],
@@ -186,6 +191,15 @@
186
191
  "type": ["string", "null"],
187
192
  "description": "Cron expression (LeoCron `time`) or platform-supported schedule string for this connection's registered bot. Distinct from `polling_interval_ms`, which is a millisecond gap for application-level throttling between requests—not the Leo schedule field."
188
193
  },
194
+ "primary_key": {
195
+ "type": "array",
196
+ "minItems": 1,
197
+ "description": "Business-identity field names. A top-level primary_key is still read, and the next connection save moves it here.",
198
+ "items": {
199
+ "type": "string",
200
+ "minLength": 1
201
+ }
202
+ },
189
203
  "runtime_memory_mb": {
190
204
  "description": "Shared runtimes tier for trigger registration (256–2048). Defaults to 256 when unset. LeoCron `lambdaName`: `w-{org4}-{inst4}-bot-connectors-{mb}-rtime`; bot id: `w-{org4}-{inst4}-{workflow4}-bot-connectors-{mb}-{container_id}`. Instance `connection_details.runtimes_stack_identifier` may override the org/instance middle segment (CDK `microserviceIdentifier` = `w-{that middle}`).",
191
205
  "oneOf": [
@@ -212,6 +226,80 @@
212
226
  "timeout_ms": {
213
227
  "type": ["integer", "null"],
214
228
  "description": "Request/timeout in milliseconds"
229
+ },
230
+ "type": {
231
+ "type": ["string", "null"],
232
+ "description": "Ingestion mode. Use api_poll for REST pollers."
233
+ },
234
+ "url": {
235
+ "type": ["string", "null"],
236
+ "description": "Request URL or URL template. For entity_loop include {key} (e.g. https://api.example.com/V2/products?styleID={styleID}). The rest-api runtime refuses to fire if the required key would be missing (unfiltered child collection URLs)."
237
+ },
238
+ "pagination": {
239
+ "type": ["object", "null"],
240
+ "description": "Page-to-exhaustion settings for rest-api pollers. S&S uses type=page, page_param=page, page_size_param=perPage, page_size=100, start_page=1.",
241
+ "properties": {
242
+ "type": {
243
+ "type": "string",
244
+ "enum": ["page", "offset", "cursor", "none"]
245
+ },
246
+ "page_param": {
247
+ "type": "string",
248
+ "description": "Query param for page index. Default page."
249
+ },
250
+ "page_size_param": {
251
+ "type": "string",
252
+ "description": "Query param for page size (pageSize or perPage)."
253
+ },
254
+ "page_size": { "type": "integer" },
255
+ "start_page": {
256
+ "type": "integer",
257
+ "description": "First page index. Default 1."
258
+ },
259
+ "cursor_field": { "type": "string" },
260
+ "next_url_field": { "type": "string" },
261
+ "offset_param": { "type": "string" },
262
+ "limit_param": { "type": "string" }
263
+ },
264
+ "additionalProperties": true
265
+ },
266
+ "entity_loop": {
267
+ "type": ["object", "null"],
268
+ "description": "Generic rest-api fan-out: resolve entity keys from a parent data product or parent_poll, substitute {key} into the child URL, page each entity to exhaustion, skip per-entity 4xx, and checkpoint across scheduled runs. Not vendor-specific.",
269
+ "properties": {
270
+ "key": {
271
+ "type": "string",
272
+ "description": "Entity field / URL placeholder (e.g. styleID)."
273
+ },
274
+ "source": {
275
+ "type": "string",
276
+ "enum": ["data_product", "parent_poll"],
277
+ "description": "data_product uses data_product_id (optional parent_poll to enumerate keys). parent_poll pages parent_poll.url."
278
+ },
279
+ "data_product_id": {
280
+ "type": "string",
281
+ "format": "uuid",
282
+ "description": "Parent data product that holds the entity keys (graph bind / lineage)."
283
+ },
284
+ "source_queue": {
285
+ "type": "string",
286
+ "description": "Optional parent rstreams queue name."
287
+ },
288
+ "parent_poll": {
289
+ "type": "object",
290
+ "description": "HTTP parent catalog used to resolve keys (page to exhaustion).",
291
+ "properties": {
292
+ "url": { "type": "string" },
293
+ "base_url": { "type": "string" },
294
+ "pagination": { "type": "object" },
295
+ "data_path": { "type": "string" },
296
+ "query_params": { "type": "object" }
297
+ },
298
+ "additionalProperties": true
299
+ }
300
+ },
301
+ "required": ["key", "source"],
302
+ "additionalProperties": true
215
303
  }
216
304
  },
217
305
  "additionalProperties": true
@@ -233,7 +321,7 @@
233
321
  ],
234
322
  "description": "Authentication type for the connection (optional, backwards compat)."
235
323
  },
236
- "ingestion_type": {
324
+ "transfer_mechanism": {
237
325
  "type": ["string", "null"],
238
326
  "enum": [
239
327
  "polling",
@@ -246,7 +334,7 @@
246
334
  "other",
247
335
  null
248
336
  ],
249
- "description": "How data is ingested (optional)."
337
+ "description": "How data moves for this connection (optional). Formerly ingestion_type; renamed because connector_mode now carries direction and this field only ever described mechanism."
250
338
  },
251
339
  "export_type": {
252
340
  "type": ["string", "null"],
@@ -287,12 +375,12 @@
287
375
  "connector_mode": {
288
376
  "type": ["string", "null"],
289
377
  "enum": ["inbound", "outbound", "bidirectional", null],
290
- "description": "For enrichment workflows: mid-flow connection must be 'bidirectional'. For ingestion head use 'inbound'; for consumption tail use 'outbound'. Must match connector supported_directions."
378
+ "description": "For enrichment workflows: mid-flow connection must be 'bidirectional'. For ingestion head use 'inbound'; for delivery tail use 'outbound'. Must match connector supported_directions."
291
379
  },
292
380
  "upstream_entity_id": {
293
381
  "type": ["string", "null"],
294
382
  "format": "uuid",
295
- "description": "Upstream entity in the flow graph (e.g. data-product in consumption flows). Null for source connections."
383
+ "description": "Upstream entity in the flow graph (e.g. data-product in delivery flows). Null for source connections."
296
384
  },
297
385
  "upstream_entity_type": {
298
386
  "type": ["string", "null"],
@@ -48,6 +48,7 @@
48
48
  "category": {
49
49
  "type": "string",
50
50
  "enum": [
51
+ "basic",
51
52
  "e_commerce",
52
53
  "crm",
53
54
  "marketing",
@@ -57,6 +58,7 @@
57
58
  "analytics",
58
59
  "communication",
59
60
  "productivity",
61
+ "fulfillment",
60
62
  "custom"
61
63
  ],
62
64
  "description": "Connector category"
@@ -33,7 +33,7 @@
33
33
  "workflow_id": {
34
34
  "type": "string",
35
35
  "format": "uuid",
36
- "description": "Workflow this container belongs to"
36
+ "description": "Workflow (flow) this container belongs to"
37
37
  },
38
38
  "wrapped_entity_type": {
39
39
  "type": "string",
@@ -25,6 +25,16 @@
25
25
  "format": "uuid",
26
26
  "description": "Organization that owns this contract"
27
27
  },
28
+ "project_id": {
29
+ "type": "string",
30
+ "format": "uuid",
31
+ "description": "Project that contains this contract"
32
+ },
33
+ "workflow_id": {
34
+ "type": ["string", "null"],
35
+ "format": "uuid",
36
+ "description": "Workflow this contract belongs to when saved in a workflow bundle"
37
+ },
28
38
  "data_product_id": {
29
39
  "type": "string",
30
40
  "format": "uuid",
@@ -2,7 +2,7 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://loxtep.io/schemas/entity/data-product.json",
4
4
  "title": "Data Product Entity",
5
- "description": "JSON Schema for Data Product entity in customer workspace (Studio / S3 graph). Flow-graph fields (workflow_id, upstream_entity_id, etc.) describe placement in the workflow canvas. The canonical interoperable catalog and API representation is ODPS v4.1 (Open Data Products Standard): include `odps_document` aligned with https://opendataproducts.org/v4.1/schema/odps.json — see `odps-product.json` in this package for the ODPS document shape.",
5
+ "description": "JSON Schema for Data Product entity in customer workspace (Studio / S3 graph). Flow-graph fields (workflow_id, upstream_entity_id, etc.) describe placement in the workflow canvas. The canonical interoperable catalog and API representation is ODPS v4.1 (Open Data Products Standard): include `odps_document` aligned with https://opendataproducts.org/v4.1/schema/odps.json — see `odps-product.json` and .kiro/specs/odps-data-product-standard in the Loxtep repo.",
6
6
  "type": "object",
7
7
  "required": [
8
8
  "data_product_id",
@@ -24,6 +24,16 @@
24
24
  "format": "uuid",
25
25
  "description": "Organization that owns this data product"
26
26
  },
27
+ "project_id": {
28
+ "type": "string",
29
+ "format": "uuid",
30
+ "description": "Project that contains this data product"
31
+ },
32
+ "kind": {
33
+ "type": "string",
34
+ "enum": ["source", "consumer"],
35
+ "description": "Data product role in the flow (source or consumer)"
36
+ },
27
37
  "workflow_id": {
28
38
  "type": "string",
29
39
  "format": "uuid",
@@ -152,6 +162,13 @@
152
162
  "format": "date-time",
153
163
  "description": "ISO 8601 timestamp when data product was deleted (soft delete)"
154
164
  },
165
+ "schema": {
166
+ "description": "Product schema stored on the data product (object or JSON string). Read by medallion, metrics, and semantic bootstrap as dp.schema.",
167
+ "oneOf": [
168
+ { "type": "object", "additionalProperties": true },
169
+ { "type": "string", "minLength": 1 }
170
+ ]
171
+ },
155
172
  "odps_document": {
156
173
  "description": "Canonical ODPS v4.1 document (`{ product: ... }`). Preferred for platform catalog, governance, and ecosystem interoperability. Validated in the dataproducts API; Loxtep-specific fields under product.custom.loxtep.",
157
174
  "allOf": [
@@ -22,6 +22,11 @@
22
22
  "format": "uuid",
23
23
  "description": "Organization that owns this domain"
24
24
  },
25
+ "project_id": {
26
+ "type": "string",
27
+ "format": "uuid",
28
+ "description": "Project that contains this domain (set when a bundle save writes the file)"
29
+ },
25
30
  "name": {
26
31
  "type": "string",
27
32
  "minLength": 1,
@@ -64,6 +69,16 @@
64
69
  "format": "date-time",
65
70
  "description": "ISO 8601 timestamp when domain was last updated"
66
71
  },
72
+ "created_by": {
73
+ "type": ["string", "null"],
74
+ "format": "uuid",
75
+ "description": "User ID who created the domain"
76
+ },
77
+ "updated_by": {
78
+ "type": ["string", "null"],
79
+ "format": "uuid",
80
+ "description": "User ID who last updated the domain"
81
+ },
67
82
  "deleted_at": {
68
83
  "type": ["string", "null"],
69
84
  "format": "date-time",
@@ -26,11 +26,37 @@
26
26
  "format": "uuid",
27
27
  "description": "Organization that owns this export"
28
28
  },
29
+ "project_id": {
30
+ "type": "string",
31
+ "format": "uuid",
32
+ "description": "Project that contains this export"
33
+ },
34
+ "workflow_id": {
35
+ "type": ["string", "null"],
36
+ "format": "uuid",
37
+ "description": "Workflow this export belongs to when saved in a workflow bundle"
38
+ },
29
39
  "data_product_id": {
30
40
  "type": "string",
31
41
  "format": "uuid",
32
42
  "description": "Reference to the data product this export applies to"
33
43
  },
44
+ "upstream_entity_id": {
45
+ "type": ["string", "null"],
46
+ "format": "uuid",
47
+ "description": "Upstream canvas node this export is wired from"
48
+ },
49
+ "upstream_entity_type": {
50
+ "type": ["string", "null"],
51
+ "enum": [
52
+ "connections",
53
+ "transformations",
54
+ "validations",
55
+ "data-products",
56
+ null
57
+ ],
58
+ "description": "Entity type of upstream_entity_id"
59
+ },
34
60
  "name": {
35
61
  "type": "string",
36
62
  "minLength": 1,
@@ -3,7 +3,7 @@
3
3
  "$id": "https://loxtep.io/schemas/entity/odps-product.json",
4
4
  "title": "ODPS v4.1 Data Product Document",
5
5
  "x-canonical-json-schema": "https://opendataproducts.org/v4.1/schema/odps.json",
6
- "description": "Open Data Products Standard (ODPS) v4.1 root document (`product.*`). Authoritative JSON Schema: https://opendataproducts.org/v4.1/schema/odps.json . Platform-specific fields live under `product.custom.loxtep` (medallion, storage, ingestion, organization_id, domain_id, project_id, workflow_id, etc.). For strict full-schema validation in toolchains that resolve remote $ref, compose with allOf + $ref to x-canonical-json-schema (requires network or bundled copy).",
6
+ "description": "Open Data Products Standard (ODPS) v4.1 root document (`product.*`). Authoritative JSON Schema: https://opendataproducts.org/v4.1/schema/odps.json . Loxtep platform types and mapping: platform-backend/_core/src/types/odps/ and .kiro/specs/odps-data-product-standard. Platform-specific fields live under `product.custom.loxtep` (medallion, storage, ingestion, organization_id, domain_id, project_id, workflow_id, etc.). For strict full-schema validation in toolchains that resolve remote $ref, compose with allOf + $ref to x-canonical-json-schema (requires network or bundled copy).",
7
7
  "type": "object",
8
8
  "required": ["product"],
9
9
  "additionalProperties": false,
@@ -0,0 +1,94 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://loxtep.io/schemas/entity/projection.json",
4
+ "title": "Projection Entity",
5
+ "description": "JSON Schema for Projection entity in customer workspace. Projections are thin workflow nodes that delegate field mapping to TransformationEngine.transformBatch, connecting source Data_Product output ports to Entity_Store input ports.",
6
+ "type": "object",
7
+ "required": [
8
+ "projection_id",
9
+ "organization_id",
10
+ "workflow_id",
11
+ "entity_definition_id",
12
+ "projection_spec_id",
13
+ "status",
14
+ "created_at",
15
+ "updated_at"
16
+ ],
17
+ "properties": {
18
+ "projection_id": {
19
+ "type": "string",
20
+ "format": "uuid",
21
+ "description": "Unique identifier for the projection workflow node"
22
+ },
23
+ "organization_id": {
24
+ "type": "string",
25
+ "format": "uuid",
26
+ "description": "Organization that owns this projection"
27
+ },
28
+ "workflow_id": {
29
+ "type": "string",
30
+ "format": "uuid",
31
+ "description": "Workflow this projection node belongs to"
32
+ },
33
+ "entity_definition_id": {
34
+ "type": "string",
35
+ "format": "uuid",
36
+ "description": "Target Entity_Definition this projection materializes"
37
+ },
38
+ "projection_spec_id": {
39
+ "type": "string",
40
+ "format": "uuid",
41
+ "description": "Projection_Spec that defines the field mappings"
42
+ },
43
+ "name": {
44
+ "type": "string",
45
+ "minLength": 1,
46
+ "description": "Display name of the projection node (written by ProjectionWorkflowNode.activate)"
47
+ },
48
+ "source_data_product_ids": {
49
+ "type": "array",
50
+ "items": {
51
+ "type": "string",
52
+ "format": "uuid"
53
+ },
54
+ "minItems": 1,
55
+ "description": "Source Data_Product IDs whose output ports feed this projection"
56
+ },
57
+ "status": {
58
+ "type": "string",
59
+ "enum": ["active", "inactive", "draft"],
60
+ "description": "Current status of the projection node"
61
+ },
62
+ "upstream_entity_id": {
63
+ "type": ["string", "null"],
64
+ "format": "uuid",
65
+ "description": "Upstream node in the workflow graph (typically a Data_Product output port)"
66
+ },
67
+ "upstream_entity_type": {
68
+ "type": ["string", "null"],
69
+ "description": "Entity type of the upstream node"
70
+ },
71
+ "metadata": {
72
+ "type": "object",
73
+ "additionalProperties": true,
74
+ "default": {},
75
+ "description": "Additional metadata for the projection node"
76
+ },
77
+ "created_at": {
78
+ "type": "string",
79
+ "format": "date-time",
80
+ "description": "ISO 8601 timestamp when projection node was created"
81
+ },
82
+ "updated_at": {
83
+ "type": "string",
84
+ "format": "date-time",
85
+ "description": "ISO 8601 timestamp when projection node was last updated"
86
+ },
87
+ "deleted_at": {
88
+ "type": ["string", "null"],
89
+ "format": "date-time",
90
+ "description": "ISO 8601 timestamp when projection node was deleted (soft delete)"
91
+ }
92
+ },
93
+ "additionalProperties": false
94
+ }
@@ -26,6 +26,16 @@
26
26
  "format": "uuid",
27
27
  "description": "Organization that owns this quality rule"
28
28
  },
29
+ "project_id": {
30
+ "type": "string",
31
+ "format": "uuid",
32
+ "description": "Project that contains this quality rule"
33
+ },
34
+ "workflow_id": {
35
+ "type": ["string", "null"],
36
+ "format": "uuid",
37
+ "description": "Workflow this quality rule belongs to when saved in a workflow bundle"
38
+ },
29
39
  "data_product_id": {
30
40
  "type": ["string", "null"],
31
41
  "format": "uuid",
@@ -27,6 +27,16 @@
27
27
  "format": "uuid",
28
28
  "description": "Organization that owns this schema"
29
29
  },
30
+ "project_id": {
31
+ "type": "string",
32
+ "format": "uuid",
33
+ "description": "Project that contains this schema"
34
+ },
35
+ "workflow_id": {
36
+ "type": ["string", "null"],
37
+ "format": "uuid",
38
+ "description": "Workflow this schema belongs to when saved in a workflow bundle"
39
+ },
30
40
  "data_product_id": {
31
41
  "type": "string",
32
42
  "format": "uuid",
@@ -39,12 +39,12 @@
39
39
  "upstream_entity_id": {
40
40
  "type": ["string", "null"],
41
41
  "format": "uuid",
42
- "description": "Reference to the upstream entity in the flow graph (connection or previous transformation). Null only when this is the first transformation directly after the trigger connection."
42
+ "description": "Reference to the upstream entity in the flow graph (connection, previous transformation, or the Records data product Studio inserts after a REST trigger). Null only when this is the first transformation directly after the trigger connection."
43
43
  },
44
44
  "upstream_entity_type": {
45
45
  "type": ["string", "null"],
46
- "enum": ["connections", "transformations", null],
47
- "description": "Entity type of the upstream entity (connections or transformations)"
46
+ "enum": ["connections", "transformations", "data-products", null],
47
+ "description": "Entity type of the upstream entity (connections, transformations, or data-products)"
48
48
  },
49
49
  "name": {
50
50
  "type": "string",
@@ -67,6 +67,7 @@
67
67
  "drop_duplicates",
68
68
  "flatten",
69
69
  "explode_array",
70
+ "zip_arrays",
70
71
  "array_to_column",
71
72
  "capitalize",
72
73
  "format_timestamp",
@@ -85,6 +86,7 @@
85
86
  "batch",
86
87
  "delay",
87
88
  "split",
89
+ "route",
88
90
  "execute_code_function",
89
91
  "crypto",
90
92
  "formatter",
@@ -112,6 +114,12 @@
112
114
  {
113
115
  "field": "name",
114
116
  "case": "upper"
117
+ },
118
+ {
119
+ "source_path": "daily",
120
+ "index_field": "time",
121
+ "index_as": "obs_date",
122
+ "carry_fields": ["latitude", "longitude", "elevation", "timezone"]
115
123
  }
116
124
  ]
117
125
  },
@@ -40,11 +40,17 @@
40
40
  "upstream_entity_id": {
41
41
  "type": ["string", "null"],
42
42
  "format": "uuid",
43
- "description": "Reference to the upstream entity this validation applies to (connection, transformation, or data product)"
43
+ "description": "Reference to the upstream entity this validation applies to (connection, transformation, validation, or data product)"
44
44
  },
45
45
  "upstream_entity_type": {
46
46
  "type": ["string", "null"],
47
- "enum": ["connections", "transformations", "data-products", null],
47
+ "enum": [
48
+ "connections",
49
+ "transformations",
50
+ "validations",
51
+ "data-products",
52
+ null
53
+ ],
48
54
  "description": "Entity type of the upstream entity"
49
55
  },
50
56
  "name": {
@@ -69,14 +69,19 @@
69
69
  "type": "string",
70
70
  "description": "Unique identifier for the segment"
71
71
  },
72
- "name": { "type": "string", "description": "Display name" },
72
+ "name": {
73
+ "type": "string",
74
+ "description": "Display name"
75
+ },
73
76
  "description": {
74
77
  "type": ["string", "null"],
75
78
  "description": "Optional description"
76
79
  },
77
80
  "node_ids": {
78
81
  "type": "array",
79
- "items": { "type": "string" },
82
+ "items": {
83
+ "type": "string"
84
+ },
80
85
  "description": "Entity IDs of nodes in this segment"
81
86
  },
82
87
  "color": {
@@ -103,6 +108,37 @@
103
108
  "type": ["string", "null"],
104
109
  "format": "uuid",
105
110
  "description": "Connector ID for connector-driven triggers"
111
+ },
112
+ "query_trigger": {
113
+ "type": ["object", "null"],
114
+ "description": "D14 (docs/system-spec/11-delivery-layer-design.md): a saved query against a data product, run on a schedule or on demand, targeting a data-products node (materialize) or an outbound connections node (deliver) chosen separately at build time. Not a subsystem \u2014 a trigger type, like event/schedule/connector above.",
115
+ "properties": {
116
+ "data_product_id": {
117
+ "type": "string",
118
+ "format": "uuid",
119
+ "description": "An existing data product \u2014 never a raw table."
120
+ },
121
+ "query": {
122
+ "type": "string",
123
+ "minLength": 1,
124
+ "description": "The saved SQL query run against data_product_id."
125
+ },
126
+ "schedule": {
127
+ "type": ["string", "null"],
128
+ "description": "Cron or interval; omit for on-demand (run_trigger / MCP-invoked)."
129
+ },
130
+ "primary_key": {
131
+ "type": "array",
132
+ "description": "Source columns concatenated into lx__id before queue write (business identity).",
133
+ "items": {
134
+ "type": "string",
135
+ "minLength": 1
136
+ },
137
+ "minItems": 1
138
+ }
139
+ },
140
+ "required": ["data_product_id", "query", "primary_key"],
141
+ "additionalProperties": false
106
142
  }
107
143
  },
108
144
  "additionalProperties": false
@@ -119,6 +155,20 @@
119
155
  "type": ["integer", "null"],
120
156
  "minimum": 1,
121
157
  "description": "Number of events to process per batch"
158
+ },
159
+ "activation": {
160
+ "type": ["string", "null"],
161
+ "enum": ["schedule", "event", "request", null],
162
+ "description": "Explicit activation designation for a delivery flow's head (D7, docs/system-spec/11-delivery-layer-design.md). 'request' marks a consumer-initiated delivery flow: no schedule, no event subscription \u2014 the flow is activated by an inbound request against a protocol-adapter registration (route/listener + policy binding) rather than a queue-consumer bot. Distinguishes a deliberately request-activated flow from one whose trigger was simply never configured."
163
+ },
164
+ "data_product_id": {
165
+ "type": "string",
166
+ "format": "uuid",
167
+ "description": "Data product this delivery flow serves. Required in practice when activation is 'request' (protocol-adapter registration) or when a schedule is set (scheduled consumption). Optional at schema level so existing schedule-free event/queue flows remain valid."
168
+ },
169
+ "connector_type": {
170
+ "type": "string",
171
+ "description": "Protocol/connector type for a request-activated delivery flow (e.g. sql-query). Codegen falls back to 'unknown' when omitted."
122
172
  }
123
173
  },
124
174
  "additionalProperties": false
@@ -148,7 +198,7 @@
148
198
  },
149
199
  "status": {
150
200
  "type": "string",
151
- "enum": ["active", "paused", "error", "pending", "inactive"],
201
+ "enum": ["active", "paused", "error", "pending", "inactive", "archived"],
152
202
  "description": "Workflow status"
153
203
  },
154
204
  "metrics": {
@@ -187,6 +237,11 @@
187
237
  "type": ["string", "null"],
188
238
  "format": "date-time",
189
239
  "description": "ISO 8601 timestamp when workflow was deleted (soft delete)"
240
+ },
241
+ "archived_at": {
242
+ "type": ["string", "null"],
243
+ "format": "date-time",
244
+ "description": "ISO 8601 timestamp when workflow was archived (catalog preserved, runtime bots retired)"
190
245
  }
191
246
  },
192
247
  "additionalProperties": false