@loxtep/sdk 0.8.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/README.md +2 -1
- package/dist/cli/commands/approvals-cmd.d.ts +21 -0
- package/dist/cli/commands/approvals-cmd.d.ts.map +1 -0
- package/dist/cli/commands/approvals-cmd.js +95 -0
- package/dist/cli/commands/approvals-cmd.js.map +1 -0
- package/dist/cli/commands/clone-cmd.d.ts +39 -0
- package/dist/cli/commands/clone-cmd.d.ts.map +1 -0
- package/dist/cli/commands/clone-cmd.js +291 -0
- package/dist/cli/commands/clone-cmd.js.map +1 -0
- package/dist/cli/commands/deploy-cmd.d.ts.map +1 -1
- package/dist/cli/commands/deploy-cmd.js +52 -19
- package/dist/cli/commands/deploy-cmd.js.map +1 -1
- package/dist/cli/commands/deployments-cmd.d.ts +22 -0
- package/dist/cli/commands/deployments-cmd.d.ts.map +1 -0
- package/dist/cli/commands/deployments-cmd.js +62 -0
- package/dist/cli/commands/deployments-cmd.js.map +1 -0
- package/dist/cli/commands/init-cmd.d.ts.map +1 -1
- package/dist/cli/commands/init-cmd.js +12 -1
- package/dist/cli/commands/init-cmd.js.map +1 -1
- package/dist/cli/commands/link-cmd.d.ts +33 -0
- package/dist/cli/commands/link-cmd.d.ts.map +1 -0
- package/dist/cli/commands/link-cmd.js +145 -0
- package/dist/cli/commands/link-cmd.js.map +1 -0
- package/dist/cli/commands/projects-cmd.d.ts +39 -1
- package/dist/cli/commands/projects-cmd.d.ts.map +1 -1
- package/dist/cli/commands/projects-cmd.js +231 -4
- package/dist/cli/commands/projects-cmd.js.map +1 -1
- package/dist/cli/commands/projects-github-cmd.d.ts +24 -0
- package/dist/cli/commands/projects-github-cmd.d.ts.map +1 -0
- package/dist/cli/commands/projects-github-cmd.js +108 -0
- package/dist/cli/commands/projects-github-cmd.js.map +1 -0
- package/dist/cli/commands/push-cmd.d.ts +3 -7
- package/dist/cli/commands/push-cmd.d.ts.map +1 -1
- package/dist/cli/commands/push-cmd.js +10 -39
- package/dist/cli/commands/push-cmd.js.map +1 -1
- package/dist/cli/commands/status-cmd.d.ts +21 -0
- package/dist/cli/commands/status-cmd.d.ts.map +1 -0
- package/dist/cli/commands/status-cmd.js +127 -0
- package/dist/cli/commands/status-cmd.js.map +1 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +21 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js +158 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/known-locals-registry.d.ts +51 -0
- package/dist/cli/known-locals-registry.d.ts.map +1 -0
- package/dist/cli/known-locals-registry.js +94 -0
- package/dist/cli/known-locals-registry.js.map +1 -0
- package/dist/cli/project-context.d.ts +9 -0
- package/dist/cli/project-context.d.ts.map +1 -1
- package/dist/cli/project-context.js +21 -0
- package/dist/cli/project-context.js.map +1 -1
- package/dist/client/deployments-types.d.ts +51 -0
- package/dist/client/deployments-types.d.ts.map +1 -0
- package/dist/client/deployments-types.js +6 -0
- package/dist/client/deployments-types.js.map +1 -0
- package/dist/client/deployments.d.ts +20 -0
- package/dist/client/deployments.d.ts.map +1 -0
- package/dist/client/deployments.js +71 -0
- package/dist/client/deployments.js.map +1 -0
- package/dist/client/index.d.ts +11 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/loxtep-client.d.ts.map +1 -1
- package/dist/client/loxtep-client.js +12 -2
- package/dist/client/loxtep-client.js.map +1 -1
- package/dist/client/observe-facade.d.ts +5 -1
- package/dist/client/observe-facade.d.ts.map +1 -1
- package/dist/client/observe-facade.js +3 -1
- package/dist/client/observe-facade.js.map +1 -1
- package/dist/client/project-workspace-inventory.d.ts +61 -0
- package/dist/client/project-workspace-inventory.d.ts.map +1 -0
- package/dist/client/project-workspace-inventory.js +300 -0
- package/dist/client/project-workspace-inventory.js.map +1 -0
- package/dist/client/project-workspace-status-types.d.ts +644 -0
- package/dist/client/project-workspace-status-types.d.ts.map +1 -0
- package/dist/client/project-workspace-status-types.js +265 -0
- package/dist/client/project-workspace-status-types.js.map +1 -0
- package/dist/client/project-workspace-status.d.ts +76 -0
- package/dist/client/project-workspace-status.d.ts.map +1 -0
- package/dist/client/project-workspace-status.js +368 -0
- package/dist/client/project-workspace-status.js.map +1 -0
- package/dist/client/projects.d.ts +53 -0
- package/dist/client/projects.d.ts.map +1 -1
- package/dist/client/projects.js +18 -0
- package/dist/client/projects.js.map +1 -1
- package/dist/client/versions-types.d.ts +3 -4
- package/dist/client/versions-types.d.ts.map +1 -1
- package/dist/client/versions-types.js +3 -4
- package/dist/client/versions-types.js.map +1 -1
- package/dist/client/workflows-types.d.ts +16 -3
- package/dist/client/workflows-types.d.ts.map +1 -1
- package/dist/client/workflows-types.js +47 -1
- package/dist/client/workflows-types.js.map +1 -1
- package/dist/client/workflows.d.ts.map +1 -1
- package/dist/client/workflows.js +2 -1
- package/dist/client/workflows.js.map +1 -1
- package/dist/client/workspace-package.d.ts +26 -0
- package/dist/client/workspace-package.d.ts.map +1 -0
- package/dist/client/workspace-package.js +85 -0
- package/dist/client/workspace-package.js.map +1 -0
- package/dist/client/workspace.d.ts +5 -1
- package/dist/client/workspace.d.ts.map +1 -1
- package/dist/client/workspace.js +3 -1
- package/dist/client/workspace.js.map +1 -1
- package/dist/config/platform-request-url.d.ts +2 -2
- package/dist/config/platform-request-url.js +4 -4
- package/docs/code-first-cli.md +28 -2
- package/docs/project-workspace-status.md +161 -0
- package/docs/sdk-mcp-mapping.md +2 -2
- package/package.json +1 -1
- package/schemas/entity-json-schemas/SCHEMA_SYNC.md +4 -3
- package/schemas/entity-json-schemas/data-product.json +1 -1
- package/schemas/entity-json-schemas/odps-product.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows-types.js","sourceRoot":"","sources":["../../src/client/workflows-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
1
|
+
{"version":3,"file":"workflows-types.js","sourceRoot":"","sources":["../../src/client/workflows-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4DH;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,IAAI,GAAG,GAAY,GAAG,CAAC;IACvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,MAAM;QAC3C,MAAM,GAAG,GAAG,GAA8B,CAAC;QAC3C,MAAM,gBAAgB,GACpB,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;YAC9B,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ;YACrC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;YAC9B,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC;QAClC,IAAI,gBAAgB,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3G,MAAM;QACR,CAAC;QACD,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM;IACR,CAAC;IAED,MAAM,GAAG,GACP,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAE,GAA+B,CAAC,CAAC,CAAE,EAA8B,CAAC;IACtG,MAAM,MAAM,GACV,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC5B,CAAC,CAAC,GAAG,CAAC,MAAM;QACZ,CAAC,CAAC,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ;YACrC,CAAC,CAAC,GAAG,CAAC,aAAa;YACnB,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,aAAa,GACjB,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ;QACnC,CAAC,CAAC,GAAG,CAAC,aAAa;QACnB,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;YAC9B,CAAC,CAAC,GAAG,CAAC,MAAM;YACZ,CAAC,CAAC,SAAS,CAAC;IAElB,OAAO;QACL,MAAM;QACN,aAAa;QACb,UAAU,EAAE,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC3E,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC/D,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAClE,UAAU,EAAE,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/client/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EAEzB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/client/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EAEzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,UAAU,EACV,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAWzB,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CACnD;AAkCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAwEtD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/C;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,SAAS,EAAE,CACT,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,oBAAoB,EAAE,CACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,uBAAuB,KAC3B,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC;;;;;OAKG;IACH,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACtF,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,gBAAgB,EACtB,IAAI,CAAC,EAAE,gBAAgB,GACtB,YAAY,CAsKd"}
|
package/dist/client/workflows.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* `get_writer` is a low-level stream-writer escape hatch — see `@internal` note.
|
|
10
10
|
* Live event writes use the Loxtep stream data plane, not HTTP POST.
|
|
11
11
|
*/
|
|
12
|
+
import { normalizeDeployResponse } from './workflows-types.js';
|
|
12
13
|
import { DefinitionValidationError } from '../errors/validation.js';
|
|
13
14
|
import { StreamingError } from '../errors/streaming.js';
|
|
14
15
|
import { createQueueWriter } from '../rstreams/event-bridge.js';
|
|
@@ -162,7 +163,7 @@ export function createWorkflowsApi(http, deps) {
|
|
|
162
163
|
async deploy(input) {
|
|
163
164
|
const { project_id, instance_id, version_id, force_redeploy } = input;
|
|
164
165
|
const res = await http.post(`${PROJECTS_BASE}/${encodeURIComponent(project_id)}/deploy`, { instance_id, version_id, force_redeploy: force_redeploy ?? false });
|
|
165
|
-
return res
|
|
166
|
+
return normalizeDeployResponse(res);
|
|
166
167
|
},
|
|
167
168
|
async save_workflow_bundle(project_id, input) {
|
|
168
169
|
const res = await http.post(`${PROJECTS_BASE}/${encodeURIComponent(project_id)}/workflow-bundle`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/client/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/client/workflows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared local workspace package discovery (SDK-first entity-JSON layout).
|
|
3
|
+
*
|
|
4
|
+
* Same layout `loxtep push` / entity-package deploy use — do not invent a
|
|
5
|
+
* second package model for unpublished inventory.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Find local workflow packages under `workflows/<id>/` (SDK-first entity-JSON
|
|
9
|
+
* layout, as written by `ingest`/`transform`/`delivery create`) — as opposed to
|
|
10
|
+
* the code-first-cli flow's flat `.ts`/`.js` module files.
|
|
11
|
+
*/
|
|
12
|
+
export declare function listLocalWorkflowIds(projectDir: string): string[];
|
|
13
|
+
/**
|
|
14
|
+
* Collect the flat `save_workflow_bundle` files map for one workflow package.
|
|
15
|
+
*/
|
|
16
|
+
export declare function collectFlatBundle(projectDir: string, workflowId: string): Record<string, Record<string, unknown>>;
|
|
17
|
+
/**
|
|
18
|
+
* Code-first CLI modules: flat `.ts`/`.js` files directly under `workflows/`.
|
|
19
|
+
* Deploy discovers these separately from entity-JSON packages.
|
|
20
|
+
*/
|
|
21
|
+
export declare function listLocalWorkflowModuleFiles(projectDir: string): string[];
|
|
22
|
+
/**
|
|
23
|
+
* Project-level schema JSON files under `schemas/` (when present).
|
|
24
|
+
*/
|
|
25
|
+
export declare function listLocalSchemaPackageFiles(projectDir: string): string[];
|
|
26
|
+
//# sourceMappingURL=workspace-package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-package.d.ts","sourceRoot":"","sources":["../../src/client/workspace-package.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAOjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA4BzC;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAOzE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared local workspace package discovery (SDK-first entity-JSON layout).
|
|
3
|
+
*
|
|
4
|
+
* Same layout `loxtep push` / entity-package deploy use — do not invent a
|
|
5
|
+
* second package model for unpublished inventory.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
/**
|
|
10
|
+
* Find local workflow packages under `workflows/<id>/` (SDK-first entity-JSON
|
|
11
|
+
* layout, as written by `ingest`/`transform`/`delivery create`) — as opposed to
|
|
12
|
+
* the code-first-cli flow's flat `.ts`/`.js` module files.
|
|
13
|
+
*/
|
|
14
|
+
export function listLocalWorkflowIds(projectDir) {
|
|
15
|
+
const workflowsRoot = join(projectDir, 'workflows');
|
|
16
|
+
if (!existsSync(workflowsRoot))
|
|
17
|
+
return [];
|
|
18
|
+
return readdirSync(workflowsRoot, { withFileTypes: true })
|
|
19
|
+
.filter(d => d.isDirectory())
|
|
20
|
+
.map(d => d.name)
|
|
21
|
+
.filter(id => existsSync(join(workflowsRoot, id, 'workflow.json')));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Collect the flat `save_workflow_bundle` files map for one workflow package.
|
|
25
|
+
*/
|
|
26
|
+
export function collectFlatBundle(projectDir, workflowId) {
|
|
27
|
+
const root = join(projectDir, 'workflows', workflowId);
|
|
28
|
+
const files = {};
|
|
29
|
+
const workflowJson = JSON.parse(readFileSync(join(root, 'workflow.json'), 'utf8'));
|
|
30
|
+
files['workflow.json'] = workflowJson;
|
|
31
|
+
for (const entityDir of [
|
|
32
|
+
'connections',
|
|
33
|
+
'data-products',
|
|
34
|
+
'transformations',
|
|
35
|
+
'validations',
|
|
36
|
+
]) {
|
|
37
|
+
const dir = join(root, entityDir);
|
|
38
|
+
if (!existsSync(dir))
|
|
39
|
+
continue;
|
|
40
|
+
for (const name of readdirSync(dir)) {
|
|
41
|
+
if (!name.endsWith('.json'))
|
|
42
|
+
continue;
|
|
43
|
+
const entity = JSON.parse(readFileSync(join(dir, name), 'utf8'));
|
|
44
|
+
files[`${entityDir}/${name}`] = entity;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return files;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Code-first CLI modules: flat `.ts`/`.js` files directly under `workflows/`.
|
|
51
|
+
* Deploy discovers these separately from entity-JSON packages.
|
|
52
|
+
*/
|
|
53
|
+
export function listLocalWorkflowModuleFiles(projectDir) {
|
|
54
|
+
const workflowsRoot = join(projectDir, 'workflows');
|
|
55
|
+
if (!existsSync(workflowsRoot))
|
|
56
|
+
return [];
|
|
57
|
+
return readdirSync(workflowsRoot, { withFileTypes: true })
|
|
58
|
+
.filter(d => d.isFile() && (d.name.endsWith('.ts') || d.name.endsWith('.js')))
|
|
59
|
+
.map(d => d.name)
|
|
60
|
+
.sort();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Project-level schema JSON files under `schemas/` (when present).
|
|
64
|
+
*/
|
|
65
|
+
export function listLocalSchemaPackageFiles(projectDir) {
|
|
66
|
+
const schemasRoot = join(projectDir, 'schemas');
|
|
67
|
+
if (!existsSync(schemasRoot))
|
|
68
|
+
return [];
|
|
69
|
+
return walkJsonFilesRelative(schemasRoot, 'schemas');
|
|
70
|
+
}
|
|
71
|
+
function walkJsonFilesRelative(absDir, relPrefix) {
|
|
72
|
+
const out = [];
|
|
73
|
+
for (const entry of readdirSync(absDir, { withFileTypes: true })) {
|
|
74
|
+
const abs = join(absDir, entry.name);
|
|
75
|
+
const rel = `${relPrefix}/${entry.name}`;
|
|
76
|
+
if (entry.isDirectory()) {
|
|
77
|
+
out.push(...walkJsonFilesRelative(abs, rel));
|
|
78
|
+
}
|
|
79
|
+
else if (entry.isFile() && entry.name.endsWith('.json')) {
|
|
80
|
+
out.push(rel);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return out.sort();
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=workspace-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-package.js","sourceRoot":"","sources":["../../src/client/workspace-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workspace facade (MCP: loxtep_workspace).
|
|
3
|
-
* Delegates to projects and
|
|
3
|
+
* Delegates to projects, instances, and deployments APIs.
|
|
4
|
+
* Version/snapshot REST is not yet available.
|
|
4
5
|
*/
|
|
5
6
|
import type { createProjectsApi } from './projects.js';
|
|
6
7
|
import type { createInstancesApi } from './instances.js';
|
|
8
|
+
import type { createDeploymentsApi } from './deployments.js';
|
|
7
9
|
export interface WorkspaceFacadeDeps {
|
|
8
10
|
projects: ReturnType<typeof createProjectsApi>;
|
|
9
11
|
instances: ReturnType<typeof createInstancesApi>;
|
|
12
|
+
deployments: ReturnType<typeof createDeploymentsApi>;
|
|
10
13
|
}
|
|
11
14
|
/** Placeholder until version/snapshot REST endpoints ship (MCP-only today). */
|
|
12
15
|
export interface VersionsFacade {
|
|
@@ -16,6 +19,7 @@ export interface VersionsFacade {
|
|
|
16
19
|
export declare function createWorkspaceFacade(deps: WorkspaceFacadeDeps): {
|
|
17
20
|
projects: WorkspaceFacadeDeps['projects'];
|
|
18
21
|
instances: WorkspaceFacadeDeps['instances'];
|
|
22
|
+
deployments: WorkspaceFacadeDeps['deployments'];
|
|
19
23
|
versions: VersionsFacade;
|
|
20
24
|
};
|
|
21
25
|
export type WorkspaceFacade = ReturnType<typeof createWorkspaceFacade>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/client/workspace.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/client/workspace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC/C,SAAS,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACjD,WAAW,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;CACtD;AAED,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;CAC5B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG;IAChE,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC1C,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAChD,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAOA;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/client/workspace.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workspace facade (MCP: loxtep_workspace).
|
|
3
|
-
* Delegates to projects and
|
|
3
|
+
* Delegates to projects, instances, and deployments APIs.
|
|
4
|
+
* Version/snapshot REST is not yet available.
|
|
4
5
|
*/
|
|
5
6
|
export function createWorkspaceFacade(deps) {
|
|
6
7
|
return {
|
|
7
8
|
projects: deps.projects,
|
|
8
9
|
instances: deps.instances,
|
|
10
|
+
deployments: deps.deployments,
|
|
9
11
|
versions: { unavailable: true },
|
|
10
12
|
};
|
|
11
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/client/workspace.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/client/workspace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,MAAM,UAAU,qBAAqB,CAAC,IAAyB;IAM7D,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* and when `path` already begins with a microservice (e.g. `/ai/…`, `/graph/…`) we do **not** add another
|
|
7
7
|
* segment (see `PATH_ALREADY_HAS_SERVICE_PREFIX`).
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Public routes follow each microservice’s registered API Gateway URI
|
|
10
|
+
* (`/{microservice}{resourcePath}`).
|
|
11
11
|
*/
|
|
12
12
|
export declare function getGatewayMicroserviceId(path: string): string;
|
|
13
13
|
/**
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* and when `path` already begins with a microservice (e.g. `/ai/…`, `/graph/…`) we do **not** add another
|
|
7
7
|
* segment (see `PATH_ALREADY_HAS_SERVICE_PREFIX`).
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Public routes follow each microservice’s registered API Gateway URI
|
|
10
|
+
* (`/{microservice}{resourcePath}`).
|
|
11
11
|
*/
|
|
12
12
|
/** Paths that are already correct from the host root (include the gateway’s first segment in `path`). */
|
|
13
13
|
const PATH_ALREADY_HAS_SERVICE_PREFIX = /^\/(ai|graph)(\/|$)/;
|
|
@@ -19,8 +19,8 @@ const MICROSERVICE_OVERRIDES = {
|
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
21
|
* Sibling resources that live directly under the `dataproducts` microservice root
|
|
22
|
-
* (
|
|
23
|
-
*
|
|
22
|
+
* (e.g. `/dataproducts/warehouse/...`), as opposed to being nested one level deeper
|
|
23
|
+
* under the `dataproducts` *resource* itself (e.g. `/dataproducts/dataproducts/...`,
|
|
24
24
|
* which is what the `/dataproducts/dataproducts/...` doubling in `buildPlatformRequestUrl` is for).
|
|
25
25
|
* A path like `/dataproducts/datacontracts` must NOT be doubled — the real route is
|
|
26
26
|
* `/dataproducts/datacontracts`, not `/dataproducts/dataproducts/datacontracts`.
|
package/docs/code-first-cli.md
CHANGED
|
@@ -16,14 +16,33 @@ Use [SDK-first ingest](./sdk-first-ingest.md) instead of this guide.
|
|
|
16
16
|
|
|
17
17
|
| Goal | Commands |
|
|
18
18
|
| --- | --- |
|
|
19
|
-
| First-time workspace setup | `login` → `init` → `attach` → `generate` |
|
|
19
|
+
| First-time workspace setup (new project) | `login` → `init` → `attach` → `generate` |
|
|
20
|
+
| **Clone** an existing cloud project locally | `login` → `projects clone <id\|name> [dir]` → `attach` → edit → `push` / `projects push` |
|
|
21
|
+
| Bind an **existing** cloud project to a directory (no download) | `login` → `projects link` → `attach` → edit → `push` → `deploy` |
|
|
20
22
|
| Author, test, and deploy workflows | … → `test` → `deploy` |
|
|
21
23
|
| App code with auto-config | After attach: `LoxtepClient.fromWorkspace()` |
|
|
22
24
|
| Stream I/O to a data product | After **deploy**: `client.get_writer(name)` |
|
|
23
25
|
|
|
24
26
|
`loxtep init` creates **`.loxtep/project.json`** and the on-disk project layout.
|
|
27
|
+
`loxtep projects clone` materializes Cloud → Local: **git clone** when the project
|
|
28
|
+
is GitHub-bound; authenticated **workspace export** (`POST /workflows/projects/{id}/export`)
|
|
29
|
+
when unbound. Both paths write `.loxtep/project.json` and upsert
|
|
30
|
+
`~/.loxtep/workspaces.json` so `loxtep status` works immediately.
|
|
31
|
+
`loxtep projects link` (alias `loxtep link`) binds metadata only when you already
|
|
32
|
+
have a local tree. Prefer `clone` for "get it from the cloud"; use `link` when
|
|
33
|
+
the files are already on disk.
|
|
34
|
+
|
|
35
|
+
**GitHub sync vs package push:** top-level `loxtep push` uploads unbound local
|
|
36
|
+
packages (Local → Cloud S3). When GitHub-bound, use `loxtep projects pull` /
|
|
37
|
+
`loxtep projects push` to wrap `/projects/{id}/github/pull|push`. Never pretend
|
|
38
|
+
Git exists for unbound projects.
|
|
39
|
+
|
|
40
|
+
**`link` ≠ `attach`:** `link`/`clone` bind the **project**; `attach` binds a runtime
|
|
41
|
+
**Instance** (`instance_id` + `api_url`).
|
|
42
|
+
|
|
25
43
|
Many CLI commands (`generate`, `test`, `deploy`, `attach`) require that file and
|
|
26
|
-
will exit with *"Run \`loxtep init\` first"* if it is missing
|
|
44
|
+
will exit with *"Run \`loxtep init\` first"* if it is missing (or run `clone` /
|
|
45
|
+
`link` / `init --project-id` to create it for an existing project).
|
|
27
46
|
|
|
28
47
|
`loxtep login` stores JWT credentials under **`./.loxtep/credentials.json`**
|
|
29
48
|
(by default). That is separate from `project.json` — you can log in before or
|
|
@@ -36,11 +55,18 @@ after `init`.
|
|
|
36
55
|
```text
|
|
37
56
|
pnpm add @loxtep/sdk
|
|
38
57
|
pnpm exec loxtep login
|
|
58
|
+
# New project:
|
|
39
59
|
pnpm exec loxtep init [--template <slug>]
|
|
60
|
+
# Or clone from cloud (GitHub-bound or unbound export):
|
|
61
|
+
pnpm exec loxtep projects clone <project_id|name> [dir]
|
|
62
|
+
# Or bind without downloading:
|
|
63
|
+
pnpm exec loxtep projects link <project_id|name>
|
|
40
64
|
pnpm exec loxtep attach --instance <name-or-id>
|
|
41
65
|
pnpm exec loxtep generate
|
|
42
66
|
# author workflows under workflows/
|
|
43
67
|
pnpm exec loxtep test <module> --event ./events/sample.json
|
|
68
|
+
pnpm exec loxtep push # unbound Local→Cloud packages
|
|
69
|
+
# pnpm exec loxtep projects push # GitHub-bound S3→GitHub sync
|
|
44
70
|
pnpm exec loxtep deploy
|
|
45
71
|
```
|
|
46
72
|
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Project workspace status (three layers)
|
|
2
|
+
|
|
3
|
+
Stable snake_case payload for **local / cloud / deployed** visibility.
|
|
4
|
+
|
|
5
|
+
Canonical TypeScript + Zod: `src/client/project-workspace-status-types.ts`
|
|
6
|
+
(exported from `@loxtep/sdk`).
|
|
7
|
+
|
|
8
|
+
## Layers
|
|
9
|
+
|
|
10
|
+
| Layer | Meaning | Source of truth |
|
|
11
|
+
| --- | --- | --- |
|
|
12
|
+
| `local` | CWD / known-locals + `.loxtep/project.json` | Disk |
|
|
13
|
+
| `cloud` | Org project + Studio/S3 workspace | `project_id` + workspace APIs |
|
|
14
|
+
| `deployed` | Instance bindings after `deploy` | Deployments |
|
|
15
|
+
|
|
16
|
+
**Unpublished** = deltas between layers (not a draft flag):
|
|
17
|
+
|
|
18
|
+
- `unpublished.local_to_cloud` — Local → Cloud (not pushed / workspace out of date)
|
|
19
|
+
- `unpublished.cloud_to_deployed` — Cloud → Deployed (pushed but not deployed, or stale)
|
|
20
|
+
|
|
21
|
+
`dirty: null` means **not computed** at this `population_depth`. Do not treat null as clean.
|
|
22
|
+
|
|
23
|
+
## Consumers
|
|
24
|
+
|
|
25
|
+
| Surface | Uses |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| CLI `loxtep status` | Full `ProjectWorkspaceStatus` (`population_depth: "status"`) |
|
|
28
|
+
| CLI `loxtep status --unpublished` / `projects changes` | Same payload at `population_depth: "unpublished"` with file/entity lists |
|
|
29
|
+
| CLI `loxtep projects list\|get` | `ProjectListStatusEnrichment` fields |
|
|
30
|
+
| CLI `loxtep projects link` / `loxtep link` | Local bind + `~/.loxtep/workspaces.json` |
|
|
31
|
+
| MCP `get_project_workspace_status` | Full `ProjectWorkspaceStatus` (planned) |
|
|
32
|
+
| MCP `list_projects` / `get_project` | Enrich with summary fields when cheap (planned) |
|
|
33
|
+
|
|
34
|
+
Producer helpers live in `src/client/project-workspace-status.ts`
|
|
35
|
+
(`buildProjectWorkspaceStatus`, `formatProjectWorkspaceStatusLines`,
|
|
36
|
+
`enrichProjectListSummary`) and `src/client/project-workspace-inventory.ts`
|
|
37
|
+
(push discovery + `.loxtep/push-manifest.json` compare).
|
|
38
|
+
|
|
39
|
+
Do **not** invent a second list command; enrich the existing `projects` plural group.
|
|
40
|
+
|
|
41
|
+
Distinct from CLI/MCP **`observe status`** (runtime bots/queues).
|
|
42
|
+
|
|
43
|
+
## Link vs attach (Phase C)
|
|
44
|
+
|
|
45
|
+
| Command | Binds | Writes |
|
|
46
|
+
| --- | --- | --- |
|
|
47
|
+
| `loxtep projects link` / `loxtep link` | Cloud **project** ↔ local directory | `.loxtep/project.json` (`project_id`) + `~/.loxtep/workspaces.json` |
|
|
48
|
+
| `loxtep attach` | Local project ↔ runtime **Instance** | `instance_id` + `api_url` (+ streams) in `.loxtep/project.json` |
|
|
49
|
+
| `loxtep init --project-id` | Same project bind as `link`, plus scaffold dirs | project.json + known-locals upsert |
|
|
50
|
+
|
|
51
|
+
Canonical flow for an existing unbound cloud project:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
loxtep projects link <project_id|name> [--path .]
|
|
55
|
+
loxtep attach --instance <instance-id>
|
|
56
|
+
# edit local package
|
|
57
|
+
loxtep push
|
|
58
|
+
loxtep deploy
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
GitHub is optional for `link` (`cloud.github.state` may remain `unbound`).
|
|
62
|
+
|
|
63
|
+
## Population cost (keep list snappy)
|
|
64
|
+
|
|
65
|
+
Field costs live in `PROJECT_WORKSPACE_STATUS_FIELD_COST`. Depth ceilings:
|
|
66
|
+
|
|
67
|
+
| `population_depth` | Cost ceiling | Typical use |
|
|
68
|
+
| --- | --- | --- |
|
|
69
|
+
| `summary` | `cheap` | Every list row: local path presence, github linked\|unbound, attach |
|
|
70
|
+
| `status` | `moderate` | `loxtep status` / MCP get: last deploy id/status/age, dirty **booleans** |
|
|
71
|
+
| `unpublished` | `expensive` | `--unpublished` / `list_project_changes`: entity/file inventories + counts |
|
|
72
|
+
|
|
73
|
+
**Cheap (list-safe):** cwd / known-locals FS checks; columns already on the cloud
|
|
74
|
+
project list row (`project_id`, `name`, `github_repo_*`).
|
|
75
|
+
|
|
76
|
+
**Moderate (status/get):** one deploy lookup (or cached join) per project;
|
|
77
|
+
Local→Cloud dirty boolean via package vs `.loxtep/push-manifest.json`
|
|
78
|
+
(same discovery as `loxtep push`) without attaching per-file lists.
|
|
79
|
+
|
|
80
|
+
**Expensive (opt-in):** `loxtep status --unpublished` / `loxtep projects changes` —
|
|
81
|
+
walk local package vs push manifest (+ optional cloud workflow id escalate),
|
|
82
|
+
attach `unpublished.*.changes` entity/file inventory and counts.
|
|
83
|
+
|
|
84
|
+
Producers SHOULD omit or set `null` rather than stall list enrichment on moderate/expensive work.
|
|
85
|
+
|
|
86
|
+
## GitHub linked vs unbound
|
|
87
|
+
|
|
88
|
+
`cloud.github.state`:
|
|
89
|
+
|
|
90
|
+
- `linked` — project has GitHub binding (`github_repo_url` / name)
|
|
91
|
+
- `unbound` — no GitHub; Studio/S3 + `loxtep push` path
|
|
92
|
+
|
|
93
|
+
Attach (`local.attach_state`) is **instance** binding (`loxtep attach`), not GitHub.
|
|
94
|
+
|
|
95
|
+
## Deploy age / status
|
|
96
|
+
|
|
97
|
+
`deployed.state`: `never_deployed` | `deployed` | `stale` | `unknown`.
|
|
98
|
+
|
|
99
|
+
When known: `deployment_id`, `deployment_status`, `last_deployed_at`,
|
|
100
|
+
`age_seconds` (derived). Prefer `unknown` over inventing success when the deploy
|
|
101
|
+
API is unavailable.
|
|
102
|
+
|
|
103
|
+
## Example (status depth)
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"schema_version": 1,
|
|
108
|
+
"population_depth": "status",
|
|
109
|
+
"project_id": "11111111-1111-1111-1111-111111111111",
|
|
110
|
+
"display_name": "shopify-ingest",
|
|
111
|
+
"local": {
|
|
112
|
+
"presence": "present",
|
|
113
|
+
"path": "/home/you/proj",
|
|
114
|
+
"project_file": "/home/you/proj/.loxtep/project.json",
|
|
115
|
+
"known_local": true,
|
|
116
|
+
"attach_state": "attached",
|
|
117
|
+
"instance_id": "22222222-2222-2222-2222-222222222222",
|
|
118
|
+
"api_url": "https://apidev.loxtep.io",
|
|
119
|
+
"project_id": "11111111-1111-1111-1111-111111111111"
|
|
120
|
+
},
|
|
121
|
+
"cloud": {
|
|
122
|
+
"presence": "present",
|
|
123
|
+
"project_id": "11111111-1111-1111-1111-111111111111",
|
|
124
|
+
"organization_id": "33333333-3333-3333-3333-333333333333",
|
|
125
|
+
"name": "shopify-ingest",
|
|
126
|
+
"status": "active",
|
|
127
|
+
"github": {
|
|
128
|
+
"state": "unbound",
|
|
129
|
+
"url": null,
|
|
130
|
+
"name": null,
|
|
131
|
+
"branch": null,
|
|
132
|
+
"last_sync_at": null
|
|
133
|
+
},
|
|
134
|
+
"workspace_revision": null,
|
|
135
|
+
"workspace_updated_at": null
|
|
136
|
+
},
|
|
137
|
+
"deployed": {
|
|
138
|
+
"presence": "absent",
|
|
139
|
+
"state": "never_deployed",
|
|
140
|
+
"instance_id": "22222222-2222-2222-2222-222222222222",
|
|
141
|
+
"deployment_id": null,
|
|
142
|
+
"deployment_status": null,
|
|
143
|
+
"last_deployed_at": null,
|
|
144
|
+
"age_seconds": null
|
|
145
|
+
},
|
|
146
|
+
"unpublished": {
|
|
147
|
+
"local_to_cloud": {
|
|
148
|
+
"dirty": true,
|
|
149
|
+
"summary": "Local package has changes not pushed",
|
|
150
|
+
"changed_count": null
|
|
151
|
+
},
|
|
152
|
+
"cloud_to_deployed": {
|
|
153
|
+
"dirty": false,
|
|
154
|
+
"summary": "Never deployed",
|
|
155
|
+
"changed_count": null
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"next_action": "push",
|
|
159
|
+
"notes": []
|
|
160
|
+
}
|
|
161
|
+
```
|
package/docs/sdk-mcp-mapping.md
CHANGED
|
@@ -12,13 +12,13 @@ deprecation aliases.
|
|
|
12
12
|
| --- | --- | --- |
|
|
13
13
|
| `loxtep_session` | `client.session` | `get_current_user`, `get_current_organization`, `logout` |
|
|
14
14
|
| `loxtep_connect` | `client.connect` | `.connectors.*`, `.templates.*` |
|
|
15
|
-
| `loxtep_workspace` | `client.workspace` | `.projects.*`, `.instances.*`, `.versions` (REST pending) |
|
|
15
|
+
| `loxtep_workspace` | `client.workspace` | `.projects.*`, `.instances.*`, `.versions` (REST pending); planned MCP `get_project_workspace_status` → `ProjectWorkspaceStatus` ([docs](./project-workspace-status.md)) |
|
|
16
16
|
| `loxtep_build` | `client.build` | `.workflows.*`, `.triggers.*`, `.data_products.*`, `.targets.*`, deploy writes, `.get_writer({ bot_id, queue })` escape hatch |
|
|
17
17
|
| `loxtep_define` | `client.define` | `.schemas.*`, `.quality.*`, `.standards.*`, `.data_contracts.*`, `.domains.*` |
|
|
18
18
|
| `loxtep_meaning` | `client.meaning` | `.thesaurus.*` (ontology/semantic REST split pending) |
|
|
19
19
|
| `loxtep_review` | `client.review` | `.approvals.*`, `.improvements.*`, CDLC and context-mining REST (pending) |
|
|
20
20
|
| `loxtep_query` | `client.query` | `.catalog.*`, `.discovery.*`, `.query()`, `.list_tables()`, `.search()` |
|
|
21
|
-
| `loxtep_observe` | `client.observe` | `.status()`, `.stream_config()`, queue `.open_reader` / `.open_writer`,
|
|
21
|
+
| `loxtep_observe` | `client.observe` | `.status()`, `.stream_config()`, queue `.open_reader` / `.open_writer`, `.list_deployments()`, `.get_deployment()`, trust signals |
|
|
22
22
|
| `loxtep_context` | `client.context` | `.process_intelligence.*`, `.procedures.*`, `.activity.*` |
|
|
23
23
|
|
|
24
24
|
## Top-level stream I/O
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loxtep/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
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",
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
These JSON Schema draft-07 files are a copy of the Loxtep platform schemas used
|
|
4
4
|
for customer workspace entity validation.
|
|
5
5
|
|
|
6
|
-
**Source (canonical):**
|
|
7
|
-
|
|
6
|
+
**Source (canonical):** Loxtep platform customer-workspace entity JSON schemas
|
|
7
|
+
(private platform monorepo). Sync from a local checkout when those schemas
|
|
8
|
+
change.
|
|
8
9
|
|
|
9
10
|
**Sync command** (from `nodejs/`):
|
|
10
11
|
|
|
@@ -15,4 +16,4 @@ node scripts/sync-entity-schemas.mjs /path/to/loxtep
|
|
|
15
16
|
When platform schemas change, re-run the sync script and note the date/source
|
|
16
17
|
commit in the SDK CHANGELOG.
|
|
17
18
|
|
|
18
|
-
**Last synced:** 2026-07-24 (from local
|
|
19
|
+
**Last synced:** 2026-07-24 (from local Loxtep platform checkout)
|
|
@@ -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`
|
|
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.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": [
|
|
8
8
|
"data_product_id",
|
|
@@ -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 .
|
|
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).",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"required": ["product"],
|
|
9
9
|
"additionalProperties": false,
|