@loxtep/sdk 0.9.15 → 0.9.17
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 +45 -0
- package/README.md +4 -4
- package/dist/authoring/types.d.ts +8 -0
- package/dist/authoring/types.d.ts.map +1 -1
- package/dist/cli/commands/deploy-cmd.d.ts.map +1 -1
- package/dist/cli/commands/deploy-cmd.js +30 -15
- package/dist/cli/commands/deploy-cmd.js.map +1 -1
- package/dist/cli/commands/init-cmd.d.ts.map +1 -1
- package/dist/cli/commands/init-cmd.js +54 -24
- package/dist/cli/commands/init-cmd.js.map +1 -1
- package/dist/cli/commands/setup-cmd.d.ts +31 -0
- package/dist/cli/commands/setup-cmd.d.ts.map +1 -0
- package/dist/cli/commands/setup-cmd.js +126 -0
- package/dist/cli/commands/setup-cmd.js.map +1 -0
- package/dist/cli/commands/test-cmd.d.ts +3 -0
- package/dist/cli/commands/test-cmd.d.ts.map +1 -1
- package/dist/cli/commands/test-cmd.js +60 -50
- package/dist/cli/commands/test-cmd.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +7 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/load-workflow-module.d.ts +30 -0
- package/dist/cli/load-workflow-module.d.ts.map +1 -0
- package/dist/cli/load-workflow-module.js +94 -0
- package/dist/cli/load-workflow-module.js.map +1 -0
- package/dist/cli/resolve-package-root.cjs +49 -0
- package/dist/cli/templates-materialize.d.ts +23 -0
- package/dist/cli/templates-materialize.d.ts.map +1 -0
- package/dist/cli/templates-materialize.js +127 -0
- package/dist/cli/templates-materialize.js.map +1 -0
- package/dist/client/bundles-types.d.ts +44 -0
- package/dist/client/bundles-types.d.ts.map +1 -0
- package/dist/client/bundles-types.js +6 -0
- package/dist/client/bundles-types.js.map +1 -0
- package/dist/client/bundles.d.ts +17 -0
- package/dist/client/bundles.d.ts.map +1 -0
- package/dist/client/bundles.js +94 -0
- package/dist/client/bundles.js.map +1 -0
- package/dist/client/data-products.d.ts.map +1 -1
- package/dist/client/data-products.js +24 -2
- package/dist/client/data-products.js.map +1 -1
- package/dist/client/define.d.ts +5 -1
- package/dist/client/define.d.ts.map +1 -1
- package/dist/client/define.js +3 -1
- package/dist/client/define.js.map +1 -1
- package/dist/client/index.d.ts +8 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/loxtep-client.d.ts +5 -2
- package/dist/client/loxtep-client.d.ts.map +1 -1
- package/dist/client/loxtep-client.js +33 -6
- package/dist/client/loxtep-client.js.map +1 -1
- package/dist/client/meaning.d.ts +8 -1
- package/dist/client/meaning.d.ts.map +1 -1
- package/dist/client/meaning.js +4 -1
- package/dist/client/meaning.js.map +1 -1
- package/dist/client/proposals-types.d.ts +68 -0
- package/dist/client/proposals-types.d.ts.map +1 -0
- package/dist/client/proposals-types.js +6 -0
- package/dist/client/proposals-types.js.map +1 -0
- package/dist/client/proposals.d.ts +24 -0
- package/dist/client/proposals.d.ts.map +1 -0
- package/dist/client/proposals.js +140 -0
- package/dist/client/proposals.js.map +1 -0
- package/dist/client/shapes-types.d.ts +102 -0
- package/dist/client/shapes-types.d.ts.map +1 -0
- package/dist/client/shapes-types.js +14 -0
- package/dist/client/shapes-types.js.map +1 -0
- package/dist/client/shapes.d.ts +19 -0
- package/dist/client/shapes.d.ts.map +1 -0
- package/dist/client/shapes.js +110 -0
- package/dist/client/shapes.js.map +1 -0
- package/dist/client/thesaurus-types.d.ts +112 -5
- package/dist/client/thesaurus-types.d.ts.map +1 -1
- package/dist/client/thesaurus-types.js +2 -1
- package/dist/client/thesaurus-types.js.map +1 -1
- package/dist/client/thesaurus.d.ts +17 -3
- package/dist/client/thesaurus.d.ts.map +1 -1
- package/dist/client/thesaurus.js +120 -14
- package/dist/client/thesaurus.js.map +1 -1
- package/dist/config/platform-request-url.d.ts.map +1 -1
- package/dist/config/platform-request-url.js +5 -1
- package/dist/config/platform-request-url.js.map +1 -1
- package/dist/rstreams/leo-runtime.d.ts +6 -1
- package/dist/rstreams/leo-runtime.d.ts.map +1 -1
- package/dist/rstreams/leo-runtime.js +15 -2
- package/dist/rstreams/leo-runtime.js.map +1 -1
- package/docs/code-first-cli.md +28 -12
- package/docs/sdk-mcp-mapping.md +70 -3
- package/package.json +6 -4
- package/templates/shopify-orders/AGENTS.md +35 -0
- package/templates/shopify-orders/README.md +50 -0
- package/templates/shopify-orders/events/order-created.json +17 -0
- package/templates/shopify-orders/package.json +11 -0
- package/templates/shopify-orders/skills/shopify-orders.yaml +29 -0
- package/templates/shopify-orders/tsconfig.json +14 -0
- package/templates/shopify-orders/workflows/orders-enricher.ts +31 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meaning.d.ts","sourceRoot":"","sources":["../../src/client/meaning.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"meaning.d.ts","sourceRoot":"","sources":["../../src/client/meaning.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACjD,QAAQ,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC/C,KAAK,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IACzC,QAAQ,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACpD,SAAS,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACjD,OAAO,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;CAC9C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG;IAC5D,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC1C,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC1C,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;CACvC,CASA;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
package/dist/client/meaning.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Meaning facade (MCP: loxtep_meaning).
|
|
3
|
-
* Thesaurus + ontology + vocabulary packs + semantic search/completeness
|
|
3
|
+
* Thesaurus + ontology + vocabulary packs + semantic search/completeness +
|
|
4
|
+
* proposals + bundles.
|
|
4
5
|
*/
|
|
5
6
|
export function createMeaningFacade(deps) {
|
|
6
7
|
return {
|
|
@@ -8,6 +9,8 @@ export function createMeaningFacade(deps) {
|
|
|
8
9
|
ontology: deps.ontology,
|
|
9
10
|
packs: deps.packs,
|
|
10
11
|
semantic: deps.semantic,
|
|
12
|
+
proposals: deps.proposals,
|
|
13
|
+
bundles: deps.bundles,
|
|
11
14
|
};
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=meaning.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meaning.js","sourceRoot":"","sources":["../../src/client/meaning.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"meaning.js","sourceRoot":"","sources":["../../src/client/meaning.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IAQzD,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic proposals types (Phase 2).
|
|
3
|
+
* REST: GET/PUT /semantic-layer/semantic-proposals
|
|
4
|
+
*/
|
|
5
|
+
export type SemanticProposalDisposition = 'pending' | 'accepted' | 'edited' | 'rejected';
|
|
6
|
+
export interface SemanticProposal {
|
|
7
|
+
semantic_proposal_id: string;
|
|
8
|
+
organization_id: string;
|
|
9
|
+
data_product_id?: string | null;
|
|
10
|
+
proposal_type: string;
|
|
11
|
+
target_artifact_type?: string | null;
|
|
12
|
+
target_path?: string | null;
|
|
13
|
+
proposal_payload: Record<string, unknown>;
|
|
14
|
+
confidence?: number | null;
|
|
15
|
+
disposition: SemanticProposalDisposition | string;
|
|
16
|
+
proposed_by_model?: string | null;
|
|
17
|
+
reviewed_by?: string | null;
|
|
18
|
+
reviewed_at?: string | null;
|
|
19
|
+
created_by?: string | null;
|
|
20
|
+
created_at: string;
|
|
21
|
+
updated_at: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ListSemanticProposalsFilters {
|
|
24
|
+
page?: number;
|
|
25
|
+
page_size?: number;
|
|
26
|
+
proposal_type?: string;
|
|
27
|
+
disposition?: SemanticProposalDisposition;
|
|
28
|
+
data_product_id?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface SemanticProposalsPagination {
|
|
31
|
+
page: number;
|
|
32
|
+
page_size: number;
|
|
33
|
+
total: number;
|
|
34
|
+
total_pages: number;
|
|
35
|
+
has_next: boolean;
|
|
36
|
+
has_prev: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface ListSemanticProposalsResult {
|
|
39
|
+
items: SemanticProposal[];
|
|
40
|
+
pagination: SemanticProposalsPagination;
|
|
41
|
+
}
|
|
42
|
+
export interface ResolveSemanticProposalInput {
|
|
43
|
+
disposition: 'accepted' | 'edited' | 'rejected';
|
|
44
|
+
resolution_note?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ResolveSemanticProposalResult {
|
|
47
|
+
semantic_proposal_id: string;
|
|
48
|
+
disposition: string;
|
|
49
|
+
}
|
|
50
|
+
export interface BatchResolveSemanticProposalsInput {
|
|
51
|
+
semantic_proposal_ids: string[];
|
|
52
|
+
disposition: 'accepted' | 'edited' | 'rejected';
|
|
53
|
+
resolution_note?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface BatchResolveSemanticProposalsResult {
|
|
56
|
+
results: Array<{
|
|
57
|
+
semantic_proposal_id: string;
|
|
58
|
+
disposition: string;
|
|
59
|
+
ok: true;
|
|
60
|
+
} | {
|
|
61
|
+
semantic_proposal_id: string;
|
|
62
|
+
ok: false;
|
|
63
|
+
error: string;
|
|
64
|
+
}>;
|
|
65
|
+
succeeded: number;
|
|
66
|
+
failed: number;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=proposals-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposals-types.d.ts","sourceRoot":"","sources":["../../src/client/proposals-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,2BAA2B,GAAG,MAAM,CAAC;IAClD,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,2BAA2B,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,UAAU,EAAE,2BAA2B,CAAC;CACzC;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kCAAkC;IACjD,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,WAAW,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mCAAmC;IAClD,OAAO,EAAE,KAAK,CACV;QAAE,oBAAoB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,GAC/D;QAAE,oBAAoB,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAC7D,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposals-types.js","sourceRoot":"","sources":["../../src/client/proposals-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic proposals API (Phase 2).
|
|
3
|
+
* Agent review queue parity with Meaning UI.
|
|
4
|
+
*
|
|
5
|
+
* GET /semantic-layer/semantic-proposals
|
|
6
|
+
* PUT /semantic-layer/semantic-proposals/{semantic_proposal_id}
|
|
7
|
+
*
|
|
8
|
+
* Batch accept/reject fan out to the single-id PUT (no dedicated batch REST yet).
|
|
9
|
+
*/
|
|
10
|
+
import type { LoxtepHttpClient } from '../http/client.js';
|
|
11
|
+
import type { BatchResolveSemanticProposalsInput, BatchResolveSemanticProposalsResult, ListSemanticProposalsFilters, ListSemanticProposalsResult, ResolveSemanticProposalResult } from './proposals-types.js';
|
|
12
|
+
export declare function createProposalsApi(http: LoxtepHttpClient): {
|
|
13
|
+
list: (filters?: ListSemanticProposalsFilters) => Promise<ListSemanticProposalsResult>;
|
|
14
|
+
accept: (semantic_proposal_id: string, options?: {
|
|
15
|
+
resolution_note?: string;
|
|
16
|
+
}) => Promise<ResolveSemanticProposalResult>;
|
|
17
|
+
reject: (semantic_proposal_id: string, options?: {
|
|
18
|
+
resolution_note?: string;
|
|
19
|
+
}) => Promise<ResolveSemanticProposalResult>;
|
|
20
|
+
accept_batch: (input: Omit<BatchResolveSemanticProposalsInput, 'disposition'>) => Promise<BatchResolveSemanticProposalsResult>;
|
|
21
|
+
reject_batch: (input: Omit<BatchResolveSemanticProposalsInput, 'disposition'>) => Promise<BatchResolveSemanticProposalsResult>;
|
|
22
|
+
};
|
|
23
|
+
export type ProposalsApi = ReturnType<typeof createProposalsApi>;
|
|
24
|
+
//# sourceMappingURL=proposals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposals.d.ts","sourceRoot":"","sources":["../../src/client/proposals.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,kCAAkC,EAClC,mCAAmC,EACnC,4BAA4B,EAC5B,2BAA2B,EAE3B,6BAA6B,EAG9B,MAAM,sBAAsB,CAAC;AAgH9B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG;IAC1D,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,4BAA4B,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACvF,MAAM,EAAE,CACN,oBAAoB,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,KACnC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5C,MAAM,EAAE,CACN,oBAAoB,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,KACnC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5C,YAAY,EAAE,CACZ,KAAK,EAAE,IAAI,CAAC,kCAAkC,EAAE,aAAa,CAAC,KAC3D,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAClD,YAAY,EAAE,CACZ,KAAK,EAAE,IAAI,CAAC,kCAAkC,EAAE,aAAa,CAAC,KAC3D,OAAO,CAAC,mCAAmC,CAAC,CAAC;CACnD,CA8CA;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic proposals API (Phase 2).
|
|
3
|
+
* Agent review queue parity with Meaning UI.
|
|
4
|
+
*
|
|
5
|
+
* GET /semantic-layer/semantic-proposals
|
|
6
|
+
* PUT /semantic-layer/semantic-proposals/{semantic_proposal_id}
|
|
7
|
+
*
|
|
8
|
+
* Batch accept/reject fan out to the single-id PUT (no dedicated batch REST yet).
|
|
9
|
+
*/
|
|
10
|
+
function unwrapData(res) {
|
|
11
|
+
return (res.data ?? res);
|
|
12
|
+
}
|
|
13
|
+
function asRecord(value) {
|
|
14
|
+
return value != null && typeof value === 'object' && !Array.isArray(value)
|
|
15
|
+
? value
|
|
16
|
+
: null;
|
|
17
|
+
}
|
|
18
|
+
const PROPOSALS_BASE = '/semantic-layer/semantic-proposals';
|
|
19
|
+
function defaultPagination(total) {
|
|
20
|
+
return {
|
|
21
|
+
page: 1,
|
|
22
|
+
page_size: total,
|
|
23
|
+
total,
|
|
24
|
+
total_pages: 1,
|
|
25
|
+
has_next: false,
|
|
26
|
+
has_prev: false,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function normalizeList(res) {
|
|
30
|
+
const data = unwrapData(res);
|
|
31
|
+
if (Array.isArray(data)) {
|
|
32
|
+
return { items: data, pagination: defaultPagination(data.length) };
|
|
33
|
+
}
|
|
34
|
+
const rec = asRecord(data);
|
|
35
|
+
if (!rec) {
|
|
36
|
+
return { items: [], pagination: defaultPagination(0) };
|
|
37
|
+
}
|
|
38
|
+
const items = Array.isArray(rec.items)
|
|
39
|
+
? rec.items
|
|
40
|
+
: Array.isArray(rec.proposals)
|
|
41
|
+
? rec.proposals
|
|
42
|
+
: [];
|
|
43
|
+
const paginationRaw = asRecord(rec.pagination) ?? {};
|
|
44
|
+
const page = typeof paginationRaw.page === 'number' ? paginationRaw.page : 1;
|
|
45
|
+
const page_size = typeof paginationRaw.page_size === 'number' ? paginationRaw.page_size : items.length;
|
|
46
|
+
const total = typeof paginationRaw.total === 'number' ? paginationRaw.total : items.length;
|
|
47
|
+
const total_pages = typeof paginationRaw.total_pages === 'number'
|
|
48
|
+
? paginationRaw.total_pages
|
|
49
|
+
: Math.max(1, Math.ceil(total / Math.max(page_size, 1)));
|
|
50
|
+
return {
|
|
51
|
+
items,
|
|
52
|
+
pagination: {
|
|
53
|
+
page,
|
|
54
|
+
page_size,
|
|
55
|
+
total,
|
|
56
|
+
total_pages,
|
|
57
|
+
has_next: typeof paginationRaw.has_next === 'boolean'
|
|
58
|
+
? paginationRaw.has_next
|
|
59
|
+
: page < total_pages,
|
|
60
|
+
has_prev: typeof paginationRaw.has_prev === 'boolean' ? paginationRaw.has_prev : page > 1,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async function resolveOne(http, semantic_proposal_id, input) {
|
|
65
|
+
if (!semantic_proposal_id)
|
|
66
|
+
throw new Error('semantic_proposal_id is required');
|
|
67
|
+
const body = { disposition: input.disposition };
|
|
68
|
+
if (input.resolution_note !== undefined)
|
|
69
|
+
body.resolution_note = input.resolution_note;
|
|
70
|
+
const res = await http.put(`${PROPOSALS_BASE}/${encodeURIComponent(semantic_proposal_id)}`, body);
|
|
71
|
+
return unwrapData(res);
|
|
72
|
+
}
|
|
73
|
+
async function resolveBatch(http, input) {
|
|
74
|
+
const ids = input.semantic_proposal_ids ?? [];
|
|
75
|
+
const results = [];
|
|
76
|
+
let succeeded = 0;
|
|
77
|
+
let failed = 0;
|
|
78
|
+
for (const semantic_proposal_id of ids) {
|
|
79
|
+
try {
|
|
80
|
+
const one = await resolveOne(http, semantic_proposal_id, {
|
|
81
|
+
disposition: input.disposition,
|
|
82
|
+
resolution_note: input.resolution_note,
|
|
83
|
+
});
|
|
84
|
+
results.push({
|
|
85
|
+
semantic_proposal_id: one.semantic_proposal_id,
|
|
86
|
+
disposition: one.disposition,
|
|
87
|
+
ok: true,
|
|
88
|
+
});
|
|
89
|
+
succeeded += 1;
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
failed += 1;
|
|
93
|
+
results.push({
|
|
94
|
+
semantic_proposal_id,
|
|
95
|
+
ok: false,
|
|
96
|
+
error: err instanceof Error ? err.message : String(err),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return { results, succeeded, failed };
|
|
101
|
+
}
|
|
102
|
+
export function createProposalsApi(http) {
|
|
103
|
+
return {
|
|
104
|
+
async list(filters = {}) {
|
|
105
|
+
const search = new URLSearchParams();
|
|
106
|
+
if (filters.page != null)
|
|
107
|
+
search.set('page', String(filters.page));
|
|
108
|
+
if (filters.page_size != null)
|
|
109
|
+
search.set('page_size', String(filters.page_size));
|
|
110
|
+
if (filters.proposal_type)
|
|
111
|
+
search.set('proposal_type', filters.proposal_type);
|
|
112
|
+
if (filters.disposition)
|
|
113
|
+
search.set('disposition', filters.disposition);
|
|
114
|
+
if (filters.data_product_id)
|
|
115
|
+
search.set('data_product_id', filters.data_product_id);
|
|
116
|
+
const qs = search.toString();
|
|
117
|
+
const res = await http.get(`${PROPOSALS_BASE}${qs ? `?${qs}` : ''}`);
|
|
118
|
+
return normalizeList(res);
|
|
119
|
+
},
|
|
120
|
+
async accept(semantic_proposal_id, options) {
|
|
121
|
+
return resolveOne(http, semantic_proposal_id, {
|
|
122
|
+
disposition: 'accepted',
|
|
123
|
+
resolution_note: options?.resolution_note,
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
async reject(semantic_proposal_id, options) {
|
|
127
|
+
return resolveOne(http, semantic_proposal_id, {
|
|
128
|
+
disposition: 'rejected',
|
|
129
|
+
resolution_note: options?.resolution_note,
|
|
130
|
+
});
|
|
131
|
+
},
|
|
132
|
+
async accept_batch(input) {
|
|
133
|
+
return resolveBatch(http, { ...input, disposition: 'accepted' });
|
|
134
|
+
},
|
|
135
|
+
async reject_batch(input) {
|
|
136
|
+
return resolveBatch(http, { ...input, disposition: 'rejected' });
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=proposals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposals.js","sourceRoot":"","sources":["../../src/client/proposals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain shapes (org canonical schemas) — distinct from data-product schemas.
|
|
3
|
+
* MCP: loxtep_define create_schema / list_schemas / get_schema / apply_schema /
|
|
4
|
+
* patch_schema (align via aligned_to_concept_uri).
|
|
5
|
+
*
|
|
6
|
+
* REST (semantic-layer MS):
|
|
7
|
+
* POST /semantic-layer/schemas
|
|
8
|
+
* GET /semantic-layer/schemas
|
|
9
|
+
* GET /semantic-layer/schemas/{schema_id}
|
|
10
|
+
* PUT /semantic-layer/schemas/{schema_id}
|
|
11
|
+
* POST /semantic-layer/schemas/{schema_id}/applications
|
|
12
|
+
*/
|
|
13
|
+
export type DomainShapeFormat = 'json-schema' | 'avro' | 'protobuf';
|
|
14
|
+
export interface DomainShapeField {
|
|
15
|
+
name: string;
|
|
16
|
+
type: string;
|
|
17
|
+
required?: boolean;
|
|
18
|
+
description?: string;
|
|
19
|
+
pii_tagged?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface DomainShapeSummary {
|
|
22
|
+
schema_id: string;
|
|
23
|
+
organization_id: string;
|
|
24
|
+
domain_id?: string | null;
|
|
25
|
+
name: string;
|
|
26
|
+
canonical_key?: string | null;
|
|
27
|
+
description?: string | null;
|
|
28
|
+
latest_version?: string | null;
|
|
29
|
+
version_count?: number;
|
|
30
|
+
lifecycle_state?: string | null;
|
|
31
|
+
change_propagation_policy?: string | null;
|
|
32
|
+
owner?: string | null;
|
|
33
|
+
aligned_to_concept_uri?: string | null;
|
|
34
|
+
aligned_at?: string | null;
|
|
35
|
+
aligned_by?: string | null;
|
|
36
|
+
created_at?: string;
|
|
37
|
+
updated_at?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface DomainShapeVersion {
|
|
40
|
+
schema_id: string;
|
|
41
|
+
schema_version_id: string;
|
|
42
|
+
organization_id?: string;
|
|
43
|
+
domain_id?: string;
|
|
44
|
+
name?: string;
|
|
45
|
+
version: string;
|
|
46
|
+
format: DomainShapeFormat;
|
|
47
|
+
definition?: Record<string, unknown>;
|
|
48
|
+
fields?: DomainShapeField[];
|
|
49
|
+
status?: string;
|
|
50
|
+
aligned_to_concept_uri?: string | null;
|
|
51
|
+
created_at?: string;
|
|
52
|
+
updated_at?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface DomainShapeDetail {
|
|
55
|
+
schema: DomainShapeSummary;
|
|
56
|
+
versions: DomainShapeVersion[];
|
|
57
|
+
}
|
|
58
|
+
export interface CreateDomainShapeInput {
|
|
59
|
+
name: string;
|
|
60
|
+
version?: string;
|
|
61
|
+
format: DomainShapeFormat;
|
|
62
|
+
definition?: Record<string, unknown>;
|
|
63
|
+
fields?: DomainShapeField[];
|
|
64
|
+
domain_id?: string;
|
|
65
|
+
canonical_key?: string;
|
|
66
|
+
description?: string;
|
|
67
|
+
metadata?: Record<string, unknown>;
|
|
68
|
+
lifecycle_state?: string;
|
|
69
|
+
change_propagation_policy?: string;
|
|
70
|
+
aligned_to_concept_uri?: string | null;
|
|
71
|
+
}
|
|
72
|
+
export interface ListDomainShapesFilters {
|
|
73
|
+
domain_id?: string;
|
|
74
|
+
/** Alias for domain_id (REST query param `domain`). */
|
|
75
|
+
domain?: string;
|
|
76
|
+
format?: DomainShapeFormat;
|
|
77
|
+
search?: string;
|
|
78
|
+
}
|
|
79
|
+
export interface ListDomainShapesResult {
|
|
80
|
+
shapes: DomainShapeSummary[];
|
|
81
|
+
total: number;
|
|
82
|
+
}
|
|
83
|
+
export interface ApplyDomainShapeInput {
|
|
84
|
+
schema_id: string;
|
|
85
|
+
data_product_id: string;
|
|
86
|
+
schema_version_id?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface DomainShapeApplication {
|
|
89
|
+
application_id?: string;
|
|
90
|
+
organization_id?: string;
|
|
91
|
+
data_product_id: string;
|
|
92
|
+
schema_id: string;
|
|
93
|
+
schema_version_id?: string | null;
|
|
94
|
+
applied_at?: string;
|
|
95
|
+
applied_by?: string | null;
|
|
96
|
+
}
|
|
97
|
+
export interface AlignDomainShapeInput {
|
|
98
|
+
schema_id: string;
|
|
99
|
+
/** Concept URI to align this shape to, or null to clear. */
|
|
100
|
+
aligned_to_concept_uri: string | null;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=shapes-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes-types.d.ts","sourceRoot":"","sources":["../../src/client/shapes-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain shapes (org canonical schemas) — distinct from data-product schemas.
|
|
3
|
+
* MCP: loxtep_define create_schema / list_schemas / get_schema / apply_schema /
|
|
4
|
+
* patch_schema (align via aligned_to_concept_uri).
|
|
5
|
+
*
|
|
6
|
+
* REST (semantic-layer MS):
|
|
7
|
+
* POST /semantic-layer/schemas
|
|
8
|
+
* GET /semantic-layer/schemas
|
|
9
|
+
* GET /semantic-layer/schemas/{schema_id}
|
|
10
|
+
* PUT /semantic-layer/schemas/{schema_id}
|
|
11
|
+
* POST /semantic-layer/schemas/{schema_id}/applications
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=shapes-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes-types.js","sourceRoot":"","sources":["../../src/client/shapes-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain shapes API (Phase 2) — org canonical schemas under semantic-layer.
|
|
3
|
+
* Distinct from `client.define.schemas` (data-product schema versions).
|
|
4
|
+
*
|
|
5
|
+
* MCP: create_schema / list_schemas / get_schema / apply_schema / patch_schema
|
|
6
|
+
* (align = patch with aligned_to_concept_uri).
|
|
7
|
+
*/
|
|
8
|
+
import type { LoxtepHttpClient } from '../http/client.js';
|
|
9
|
+
import type { AlignDomainShapeInput, ApplyDomainShapeInput, CreateDomainShapeInput, DomainShapeApplication, DomainShapeDetail, DomainShapeSummary, DomainShapeVersion, ListDomainShapesFilters, ListDomainShapesResult } from './shapes-types.js';
|
|
10
|
+
export declare function createShapesApi(http: LoxtepHttpClient): {
|
|
11
|
+
create: (input: CreateDomainShapeInput) => Promise<DomainShapeVersion | DomainShapeSummary>;
|
|
12
|
+
list: (filters?: ListDomainShapesFilters) => Promise<ListDomainShapesResult>;
|
|
13
|
+
get: (schema_id: string) => Promise<DomainShapeDetail>;
|
|
14
|
+
apply: (input: ApplyDomainShapeInput) => Promise<DomainShapeApplication>;
|
|
15
|
+
/** patch_schema with aligned_to_concept_uri (MCP align path). */
|
|
16
|
+
align: (input: AlignDomainShapeInput) => Promise<DomainShapeSummary>;
|
|
17
|
+
};
|
|
18
|
+
export type ShapesApi = ReturnType<typeof createShapesApi>;
|
|
19
|
+
//# sourceMappingURL=shapes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../../src/client/shapes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAkB3B,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG;IACvD,MAAM,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,OAAO,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;IAC5F,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,uBAAuB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC7E,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvD,KAAK,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzE,iEAAiE;IACjE,KAAK,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACtE,CA8FA;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain shapes API (Phase 2) — org canonical schemas under semantic-layer.
|
|
3
|
+
* Distinct from `client.define.schemas` (data-product schema versions).
|
|
4
|
+
*
|
|
5
|
+
* MCP: create_schema / list_schemas / get_schema / apply_schema / patch_schema
|
|
6
|
+
* (align = patch with aligned_to_concept_uri).
|
|
7
|
+
*/
|
|
8
|
+
function unwrapData(res) {
|
|
9
|
+
return (res.data ?? res);
|
|
10
|
+
}
|
|
11
|
+
function asRecord(value) {
|
|
12
|
+
return value != null && typeof value === 'object' && !Array.isArray(value)
|
|
13
|
+
? value
|
|
14
|
+
: null;
|
|
15
|
+
}
|
|
16
|
+
const SHAPES_BASE = '/semantic-layer/schemas';
|
|
17
|
+
function shapesBase() {
|
|
18
|
+
return SHAPES_BASE;
|
|
19
|
+
}
|
|
20
|
+
export function createShapesApi(http) {
|
|
21
|
+
return {
|
|
22
|
+
async create(input) {
|
|
23
|
+
if (!input.name)
|
|
24
|
+
throw new Error('name is required');
|
|
25
|
+
if (!input.format)
|
|
26
|
+
throw new Error('format is required');
|
|
27
|
+
const body = {
|
|
28
|
+
name: input.name,
|
|
29
|
+
version: input.version ?? '1.0.0',
|
|
30
|
+
format: input.format,
|
|
31
|
+
definition: input.definition ?? {},
|
|
32
|
+
fields: input.fields ?? [],
|
|
33
|
+
domain_id: input.domain_id,
|
|
34
|
+
canonical_key: input.canonical_key,
|
|
35
|
+
description: input.description,
|
|
36
|
+
metadata: input.metadata,
|
|
37
|
+
lifecycle_state: input.lifecycle_state,
|
|
38
|
+
change_propagation_policy: input.change_propagation_policy,
|
|
39
|
+
aligned_to_concept_uri: input.aligned_to_concept_uri,
|
|
40
|
+
};
|
|
41
|
+
const res = await http.post(shapesBase(), body);
|
|
42
|
+
return unwrapData(res);
|
|
43
|
+
},
|
|
44
|
+
async list(filters = {}) {
|
|
45
|
+
const search = new URLSearchParams();
|
|
46
|
+
const domain = filters.domain_id ?? filters.domain;
|
|
47
|
+
if (domain)
|
|
48
|
+
search.set('domain', domain);
|
|
49
|
+
if (filters.format)
|
|
50
|
+
search.set('format', filters.format);
|
|
51
|
+
if (filters.search)
|
|
52
|
+
search.set('search', filters.search);
|
|
53
|
+
const qs = search.toString();
|
|
54
|
+
const res = await http.get(`${shapesBase()}${qs ? `?${qs}` : ''}`);
|
|
55
|
+
const data = unwrapData(res);
|
|
56
|
+
const rec = asRecord(data);
|
|
57
|
+
// Paginated envelope: { items, pagination } or bare array / { schemas }
|
|
58
|
+
if (Array.isArray(data)) {
|
|
59
|
+
return { shapes: data, total: data.length };
|
|
60
|
+
}
|
|
61
|
+
if (rec) {
|
|
62
|
+
const items = Array.isArray(rec.items)
|
|
63
|
+
? rec.items
|
|
64
|
+
: Array.isArray(rec.schemas)
|
|
65
|
+
? rec.schemas
|
|
66
|
+
: Array.isArray(rec.shapes)
|
|
67
|
+
? rec.shapes
|
|
68
|
+
: [];
|
|
69
|
+
const pagination = asRecord(rec.pagination);
|
|
70
|
+
const total = typeof pagination?.total === 'number'
|
|
71
|
+
? pagination.total
|
|
72
|
+
: typeof rec.total === 'number'
|
|
73
|
+
? rec.total
|
|
74
|
+
: items.length;
|
|
75
|
+
return { shapes: items, total };
|
|
76
|
+
}
|
|
77
|
+
return { shapes: [], total: 0 };
|
|
78
|
+
},
|
|
79
|
+
async get(schema_id) {
|
|
80
|
+
if (!schema_id)
|
|
81
|
+
throw new Error('schema_id is required');
|
|
82
|
+
const res = await http.get(`${shapesBase()}/${encodeURIComponent(schema_id)}`);
|
|
83
|
+
const data = unwrapData(res);
|
|
84
|
+
return {
|
|
85
|
+
schema: data.schema ?? data,
|
|
86
|
+
versions: data.versions ?? [],
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
async apply(input) {
|
|
90
|
+
if (!input.schema_id)
|
|
91
|
+
throw new Error('schema_id is required');
|
|
92
|
+
if (!input.data_product_id)
|
|
93
|
+
throw new Error('data_product_id is required');
|
|
94
|
+
const body = {
|
|
95
|
+
data_product_id: input.data_product_id,
|
|
96
|
+
};
|
|
97
|
+
if (input.schema_version_id)
|
|
98
|
+
body.schema_version_id = input.schema_version_id;
|
|
99
|
+
const res = await http.post(`${shapesBase()}/${encodeURIComponent(input.schema_id)}/applications`, body);
|
|
100
|
+
return unwrapData(res);
|
|
101
|
+
},
|
|
102
|
+
async align(input) {
|
|
103
|
+
if (!input.schema_id)
|
|
104
|
+
throw new Error('schema_id is required');
|
|
105
|
+
const res = await http.put(`${shapesBase()}/${encodeURIComponent(input.schema_id)}`, { aligned_to_concept_uri: input.aligned_to_concept_uri });
|
|
106
|
+
return unwrapData(res);
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=shapes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../src/client/shapes.ts"],"names":[],"mappings":"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"}
|