@loxtep/sdk 0.7.22 → 0.7.26

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 (143) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +6 -1
  3. package/dist/authoring/toolbox.d.ts.map +1 -1
  4. package/dist/authoring/toolbox.js +15 -3
  5. package/dist/authoring/toolbox.js.map +1 -1
  6. package/dist/cli/commands/connectors-cmd.d.ts +23 -0
  7. package/dist/cli/commands/connectors-cmd.d.ts.map +1 -0
  8. package/dist/cli/commands/connectors-cmd.js +32 -0
  9. package/dist/cli/commands/connectors-cmd.js.map +1 -0
  10. package/dist/cli/commands/delivery-cmd.d.ts +23 -0
  11. package/dist/cli/commands/delivery-cmd.d.ts.map +1 -0
  12. package/dist/cli/commands/delivery-cmd.js +151 -0
  13. package/dist/cli/commands/delivery-cmd.js.map +1 -0
  14. package/dist/cli/commands/deploy-cmd.d.ts +5 -1
  15. package/dist/cli/commands/deploy-cmd.d.ts.map +1 -1
  16. package/dist/cli/commands/deploy-cmd.js +39 -4
  17. package/dist/cli/commands/deploy-cmd.js.map +1 -1
  18. package/dist/cli/commands/ingest-cmd.d.ts +13 -3
  19. package/dist/cli/commands/ingest-cmd.d.ts.map +1 -1
  20. package/dist/cli/commands/ingest-cmd.js +136 -31
  21. package/dist/cli/commands/ingest-cmd.js.map +1 -1
  22. package/dist/cli/commands/lint-cmd.d.ts +17 -0
  23. package/dist/cli/commands/lint-cmd.d.ts.map +1 -0
  24. package/dist/cli/commands/lint-cmd.js +61 -0
  25. package/dist/cli/commands/lint-cmd.js.map +1 -0
  26. package/dist/cli/commands/login.d.ts.map +1 -1
  27. package/dist/cli/commands/login.js +1 -0
  28. package/dist/cli/commands/login.js.map +1 -1
  29. package/dist/cli/commands/push-cmd.d.ts +21 -0
  30. package/dist/cli/commands/push-cmd.d.ts.map +1 -0
  31. package/dist/cli/commands/push-cmd.js +108 -0
  32. package/dist/cli/commands/push-cmd.js.map +1 -0
  33. package/dist/cli/commands/transform-cmd.d.ts +22 -0
  34. package/dist/cli/commands/transform-cmd.d.ts.map +1 -0
  35. package/dist/cli/commands/transform-cmd.js +148 -0
  36. package/dist/cli/commands/transform-cmd.js.map +1 -0
  37. package/dist/cli/commands/triggers-cmd.d.ts +4 -0
  38. package/dist/cli/commands/triggers-cmd.d.ts.map +1 -1
  39. package/dist/cli/commands/triggers-cmd.js +41 -9
  40. package/dist/cli/commands/triggers-cmd.js.map +1 -1
  41. package/dist/cli/commands/workflows-cmd.d.ts +2 -0
  42. package/dist/cli/commands/workflows-cmd.d.ts.map +1 -1
  43. package/dist/cli/commands/workflows-cmd.js +13 -0
  44. package/dist/cli/commands/workflows-cmd.js.map +1 -1
  45. package/dist/cli/credentials.d.ts.map +1 -1
  46. package/dist/cli/credentials.js +7 -2
  47. package/dist/cli/credentials.js.map +1 -1
  48. package/dist/cli/help.d.ts.map +1 -1
  49. package/dist/cli/help.js +26 -6
  50. package/dist/cli/help.js.map +1 -1
  51. package/dist/cli/index.js +131 -19
  52. package/dist/cli/index.js.map +1 -1
  53. package/dist/cli/update-notifier.d.ts +45 -0
  54. package/dist/cli/update-notifier.d.ts.map +1 -0
  55. package/dist/cli/update-notifier.js +154 -0
  56. package/dist/cli/update-notifier.js.map +1 -0
  57. package/dist/client/connectors.d.ts.map +1 -1
  58. package/dist/client/connectors.js +7 -1
  59. package/dist/client/connectors.js.map +1 -1
  60. package/dist/client/data-products-types.d.ts +2 -2
  61. package/dist/client/data-products-types.d.ts.map +1 -1
  62. package/dist/client/data-products.d.ts.map +1 -1
  63. package/dist/client/data-products.js +30 -11
  64. package/dist/client/data-products.js.map +1 -1
  65. package/dist/client/flow-types.d.ts +4 -0
  66. package/dist/client/flow-types.d.ts.map +1 -1
  67. package/dist/client/projects.d.ts +2 -0
  68. package/dist/client/projects.d.ts.map +1 -1
  69. package/dist/client/projects.js +4 -0
  70. package/dist/client/projects.js.map +1 -1
  71. package/dist/client/queues.d.ts.map +1 -1
  72. package/dist/client/queues.js +26 -3
  73. package/dist/client/queues.js.map +1 -1
  74. package/dist/client/target-types.d.ts +82 -79
  75. package/dist/client/target-types.d.ts.map +1 -1
  76. package/dist/client/target-types.js +2 -6
  77. package/dist/client/target-types.js.map +1 -1
  78. package/dist/client/targets.d.ts +27 -12
  79. package/dist/client/targets.d.ts.map +1 -1
  80. package/dist/client/targets.js +130 -84
  81. package/dist/client/targets.js.map +1 -1
  82. package/dist/client/trigger-types.d.ts +12 -1
  83. package/dist/client/trigger-types.d.ts.map +1 -1
  84. package/dist/client/trigger-types.js +1 -1
  85. package/dist/client/triggers.d.ts +20 -6
  86. package/dist/client/triggers.d.ts.map +1 -1
  87. package/dist/client/triggers.js +128 -45
  88. package/dist/client/triggers.js.map +1 -1
  89. package/dist/config/platform-request-url.d.ts +1 -5
  90. package/dist/config/platform-request-url.d.ts.map +1 -1
  91. package/dist/config/platform-request-url.js +22 -13
  92. package/dist/config/platform-request-url.js.map +1 -1
  93. package/dist/config/resolve-sdk-urls.d.ts.map +1 -1
  94. package/dist/config/resolve-sdk-urls.js +6 -4
  95. package/dist/config/resolve-sdk-urls.js.map +1 -1
  96. package/dist/errors/parse-http.d.ts.map +1 -1
  97. package/dist/errors/parse-http.js +50 -12
  98. package/dist/errors/parse-http.js.map +1 -1
  99. package/dist/index.d.ts +5 -2
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +3 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/lib/entity-json-schemas/ajv-loader.cjs +17 -0
  104. package/dist/lib/entity-json-schemas/index.d.ts +5 -0
  105. package/dist/lib/entity-json-schemas/index.d.ts.map +1 -0
  106. package/dist/lib/entity-json-schemas/index.js +3 -0
  107. package/dist/lib/entity-json-schemas/index.js.map +1 -0
  108. package/dist/lib/entity-json-schemas/types.d.ts +21 -0
  109. package/dist/lib/entity-json-schemas/types.d.ts.map +1 -0
  110. package/dist/lib/entity-json-schemas/types.js +32 -0
  111. package/dist/lib/entity-json-schemas/types.js.map +1 -0
  112. package/dist/lib/entity-json-schemas/validate-entity.d.ts +39 -0
  113. package/dist/lib/entity-json-schemas/validate-entity.d.ts.map +1 -0
  114. package/dist/lib/entity-json-schemas/validate-entity.js +143 -0
  115. package/dist/lib/entity-json-schemas/validate-entity.js.map +1 -0
  116. package/dist/lib/sdk-ingest-bundle.d.ts +62 -4
  117. package/dist/lib/sdk-ingest-bundle.d.ts.map +1 -1
  118. package/dist/lib/sdk-ingest-bundle.js +147 -51
  119. package/dist/lib/sdk-ingest-bundle.js.map +1 -1
  120. package/dist/lib/workspace-lint.d.ts +28 -0
  121. package/dist/lib/workspace-lint.d.ts.map +1 -0
  122. package/dist/lib/workspace-lint.js +199 -0
  123. package/dist/lib/workspace-lint.js.map +1 -0
  124. package/dist/skills/loader.d.ts +10 -10
  125. package/docs/getting-started.md +2 -0
  126. package/docs/quick-reference.md +1 -0
  127. package/docs/sdk-first-ingest.md +19 -3
  128. package/package.json +6 -2
  129. package/schemas/entity-json-schemas/SCHEMA_SYNC.md +18 -0
  130. package/schemas/entity-json-schemas/connection.json +310 -0
  131. package/schemas/entity-json-schemas/connector.json +188 -0
  132. package/schemas/entity-json-schemas/container.json +71 -0
  133. package/schemas/entity-json-schemas/contract.json +228 -0
  134. package/schemas/entity-json-schemas/data-product.json +163 -0
  135. package/schemas/entity-json-schemas/domain.json +74 -0
  136. package/schemas/entity-json-schemas/export.json +126 -0
  137. package/schemas/entity-json-schemas/odps-product.json +150 -0
  138. package/schemas/entity-json-schemas/quality-rule.json +115 -0
  139. package/schemas/entity-json-schemas/schema.json +206 -0
  140. package/schemas/entity-json-schemas/transformation.json +166 -0
  141. package/schemas/entity-json-schemas/validation.json +152 -0
  142. package/schemas/entity-json-schemas/workflow-graph.json +116 -0
  143. package/schemas/entity-json-schemas/workflow.json +193 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-entity.js","sourceRoot":"","sources":["../../../src/lib/entity-json-schemas/validate-entity.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  /**
2
- * Build SDK ingest workflow bundle files (connector + connection + source data product).
2
+ * Build local-first SDK ingest workflow package files
3
+ * (connector + workflow + connection + source data product).
3
4
  */
4
- export interface SdkIngestBundleParams {
5
+ import type { Connector } from '../client/connectors-types.js';
6
+ /** Placeholder starter template id for SDK-provisioned ingestion flows. */
7
+ export declare const SDK_INGEST_TEMPLATE_ID = "00000000-0000-4000-8000-0000000000a1";
8
+ export interface SdkIngestPackageParams {
5
9
  organization_id: string;
6
10
  project_id: string;
7
11
  domain_id: string;
@@ -12,13 +16,67 @@ export interface SdkIngestBundleParams {
12
16
  workflow_id?: string;
13
17
  connection_id?: string;
14
18
  data_product_id?: string;
19
+ /** When set, include a schema-valid local connector file. */
20
+ connector?: Connector | LocalConnectorStub;
21
+ include_connector_file?: boolean;
22
+ /** When true, set storage.iceberg_enabled on the source data product. */
23
+ iceberg_enabled?: boolean;
15
24
  }
16
- export interface SdkIngestBundleResult {
25
+ export interface LocalConnectorStub {
26
+ connector_id: string;
27
+ organization_id: string;
28
+ connector_type: string;
29
+ metadata?: Record<string, unknown>;
30
+ created_at?: string;
31
+ updated_at?: string;
32
+ }
33
+ export interface SdkIngestPackageResult {
17
34
  workflow_id: string;
18
35
  connection_id: string;
19
36
  data_product_id: string;
20
37
  data_product_name: string;
38
+ connector_id: string;
39
+ /** Project-relative path → entity JSON */
21
40
  files: Record<string, Record<string, unknown>>;
22
41
  }
23
- export declare function buildSdkIngestBundle(params: SdkIngestBundleParams): SdkIngestBundleResult;
42
+ /**
43
+ * Map an API connector (or stub) into a schema-valid local connector entity.
44
+ * Entity schema uses catalog-style fields (name, category, auth_type) that differ
45
+ * from the connectors API shape.
46
+ */
47
+ export declare function toLocalConnectorEntity(connector: Connector | LocalConnectorStub, now?: string): Record<string, unknown>;
48
+ /**
49
+ * Build project-local JSON files for an SDK ingest topology.
50
+ * Paths match the customer workspace layout (not the flat save_workflow_bundle map).
51
+ */
52
+ export declare function buildSdkIngestLocalPackage(params: SdkIngestPackageParams): SdkIngestPackageResult;
53
+ /**
54
+ * Flat bundle map for `save_workflow_bundle` / `bundle save` (workflow-relative keys).
55
+ */
56
+ export declare function buildSdkIngestBundle(params: {
57
+ organization_id: string;
58
+ project_id: string;
59
+ domain_id: string;
60
+ connector_id: string;
61
+ data_product_name: string;
62
+ workflow_name?: string;
63
+ user_id?: string;
64
+ workflow_id?: string;
65
+ connection_id?: string;
66
+ data_product_id?: string;
67
+ }): {
68
+ workflow_id: string;
69
+ connection_id: string;
70
+ data_product_id: string;
71
+ data_product_name: string;
72
+ files: Record<string, Record<string, unknown>>;
73
+ };
74
+ export type SdkIngestBundleParams = Parameters<typeof buildSdkIngestBundle>[0];
75
+ export type SdkIngestBundleResult = ReturnType<typeof buildSdkIngestBundle>;
76
+ /** Validate every entity in a local package map; returns field-level errors. */
77
+ export declare function validateSdkIngestPackageFiles(files: Record<string, Record<string, unknown>>): Array<{
78
+ path: string;
79
+ entity_type: string;
80
+ message: string;
81
+ }>;
24
82
  //# sourceMappingURL=sdk-ingest-bundle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-ingest-bundle.d.ts","sourceRoot":"","sources":["../../src/lib/sdk-ingest-bundle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB,CAqEzF"}
1
+ {"version":3,"file":"sdk-ingest-bundle.d.ts","sourceRoot":"","sources":["../../src/lib/sdk-ingest-bundle.ts"],"names":[],"mappings":"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"}
@@ -1,73 +1,169 @@
1
1
  /**
2
- * Build SDK ingest workflow bundle files (connector + connection + source data product).
2
+ * Build local-first SDK ingest workflow package files
3
+ * (connector + workflow + connection + source data product).
3
4
  */
4
5
  import { randomUUID } from 'node:crypto';
5
- export function buildSdkIngestBundle(params) {
6
+ import { EntityType, validateEntity } from './entity-json-schemas/index.js';
7
+ /** Placeholder starter template id for SDK-provisioned ingestion flows. */
8
+ export const SDK_INGEST_TEMPLATE_ID = '00000000-0000-4000-8000-0000000000a1';
9
+ /**
10
+ * Map an API connector (or stub) into a schema-valid local connector entity.
11
+ * Entity schema uses catalog-style fields (name, category, auth_type) that differ
12
+ * from the connectors API shape.
13
+ */
14
+ export function toLocalConnectorEntity(connector, now = new Date().toISOString()) {
15
+ const meta = connector.metadata ?? {};
16
+ const name = (typeof meta.name === 'string' && meta.name.trim()) ||
17
+ `${connector.connector_type} connector`;
18
+ const description = (typeof meta.description === 'string' && meta.description.trim()) ||
19
+ `Local stub for ${connector.connector_type} connector`;
20
+ return {
21
+ connector_id: connector.connector_id,
22
+ organization_id: connector.organization_id,
23
+ connector_type: connector.connector_type,
24
+ name,
25
+ description,
26
+ category: 'custom',
27
+ // Entity schema enum has no "jwt"; use custom and keep API auth in metadata.
28
+ auth_type: 'custom',
29
+ version: '1.0.0',
30
+ metadata: { ...meta, sdk_auth_type: 'jwt' },
31
+ created_at: connector.created_at ?? now,
32
+ updated_at: connector.updated_at ?? now,
33
+ };
34
+ }
35
+ /**
36
+ * Build project-local JSON files for an SDK ingest topology.
37
+ * Paths match the customer workspace layout (not the flat save_workflow_bundle map).
38
+ */
39
+ export function buildSdkIngestLocalPackage(params) {
6
40
  const workflowId = params.workflow_id ?? randomUUID();
7
41
  const connectionId = params.connection_id ?? randomUUID();
8
42
  const dataProductId = params.data_product_id ?? randomUUID();
9
43
  const now = new Date().toISOString();
10
44
  const workflowName = params.workflow_name ?? 'SDK App Events Ingest';
11
- const files = {
12
- 'workflow.json': {
13
- workflow_id: workflowId,
14
- organization_id: params.organization_id,
15
- project_id: params.project_id,
16
- name: workflowName,
17
- workflow_type: 'ingestion',
18
- domain_id: params.domain_id,
19
- status: 'active',
20
- configuration: {},
21
- metadata: { ingestion_method: 'sdk' },
22
- created_at: now,
23
- updated_at: now,
45
+ const files = {};
46
+ if (params.include_connector_file !== false && params.connector) {
47
+ files[`connectors/${params.connector_id}.json`] = toLocalConnectorEntity(params.connector, now);
48
+ }
49
+ files[`workflows/${workflowId}/workflow.json`] = {
50
+ workflow_id: workflowId,
51
+ organization_id: params.organization_id,
52
+ project_id: params.project_id,
53
+ name: workflowName,
54
+ template_id: SDK_INGEST_TEMPLATE_ID,
55
+ workflow_type: 'ingestion',
56
+ domain_id: params.domain_id,
57
+ status: 'active',
58
+ configuration: {},
59
+ metadata: { ingestion_method: 'sdk' },
60
+ created_at: now,
61
+ updated_at: now,
62
+ };
63
+ files[`workflows/${workflowId}/connections/${connectionId}.json`] = {
64
+ connection_id: connectionId,
65
+ organization_id: params.organization_id,
66
+ project_id: params.project_id,
67
+ workflow_id: workflowId,
68
+ connector_id: params.connector_id,
69
+ key: 'sdk-input',
70
+ name: 'SDK Input',
71
+ type: 'sdk',
72
+ status: 'active',
73
+ configuration: {
74
+ sdk_type: 'nodejs',
75
+ event_type: params.data_product_name,
24
76
  },
25
- [`connections/${connectionId}.json`]: {
26
- connection_id: connectionId,
27
- organization_id: params.organization_id,
28
- project_id: params.project_id,
29
- workflow_id: workflowId,
30
- connector_id: params.connector_id,
31
- key: 'sdk-input',
32
- name: 'SDK Input',
33
- type: 'sdk',
34
- status: 'active',
35
- configuration: {
36
- sdk_type: 'nodejs',
37
- event_type: params.data_product_name,
38
- },
39
- created_at: now,
40
- updated_at: now,
77
+ created_at: now,
78
+ updated_at: now,
79
+ };
80
+ const dataProduct = {
81
+ data_product_id: dataProductId,
82
+ organization_id: params.organization_id,
83
+ workflow_id: workflowId,
84
+ upstream_entity_id: connectionId,
85
+ upstream_entity_type: 'connections',
86
+ domain_id: params.domain_id,
87
+ name: params.data_product_name,
88
+ status: 'draft',
89
+ governance: {
90
+ classification: 'internal',
91
+ pii_fields: [],
92
+ compliance_requirements: [],
93
+ tags: [],
41
94
  },
42
- [`data-products/${dataProductId}.json`]: {
43
- data_product_id: dataProductId,
44
- organization_id: params.organization_id,
45
- project_id: params.project_id,
46
- workflow_id: workflowId,
47
- upstream_entity_id: connectionId,
48
- upstream_entity_type: 'connections',
49
- domain_id: params.domain_id,
50
- name: params.data_product_name,
95
+ metadata: {
51
96
  kind: 'source',
52
- status: 'draft',
53
- owner: params.user_id ? { user_id: params.user_id } : {},
54
- governance: {
55
- classification: 'internal',
56
- pii_fields: [],
57
- compliance_requirements: [],
58
- tags: [],
59
- },
60
- metadata: {},
61
- created_at: now,
62
- updated_at: now,
97
+ project_id: params.project_id,
63
98
  },
99
+ created_at: now,
100
+ updated_at: now,
64
101
  };
102
+ if (params.iceberg_enabled) {
103
+ dataProduct.storage = { iceberg_enabled: true };
104
+ }
105
+ if (params.user_id) {
106
+ dataProduct.owner = { user_id: params.user_id };
107
+ }
108
+ files[`workflows/${workflowId}/data-products/${dataProductId}.json`] = dataProduct;
65
109
  return {
66
110
  workflow_id: workflowId,
67
111
  connection_id: connectionId,
68
112
  data_product_id: dataProductId,
69
113
  data_product_name: params.data_product_name,
114
+ connector_id: params.connector_id,
70
115
  files,
71
116
  };
72
117
  }
118
+ /**
119
+ * Flat bundle map for `save_workflow_bundle` / `bundle save` (workflow-relative keys).
120
+ */
121
+ export function buildSdkIngestBundle(params) {
122
+ const local = buildSdkIngestLocalPackage({ ...params, include_connector_file: false });
123
+ const wf = local.workflow_id;
124
+ const files = {
125
+ 'workflow.json': local.files[`workflows/${wf}/workflow.json`],
126
+ [`connections/${local.connection_id}.json`]: local.files[`workflows/${wf}/connections/${local.connection_id}.json`],
127
+ [`data-products/${local.data_product_id}.json`]: local.files[`workflows/${wf}/data-products/${local.data_product_id}.json`],
128
+ };
129
+ return {
130
+ workflow_id: local.workflow_id,
131
+ connection_id: local.connection_id,
132
+ data_product_id: local.data_product_id,
133
+ data_product_name: local.data_product_name,
134
+ files,
135
+ };
136
+ }
137
+ /** Validate every entity in a local package map; returns field-level errors. */
138
+ export function validateSdkIngestPackageFiles(files) {
139
+ const errors = [];
140
+ for (const [path, entity] of Object.entries(files)) {
141
+ let entityType = null;
142
+ if (path.startsWith('connectors/') && path.endsWith('.json')) {
143
+ entityType = EntityType.CONNECTOR;
144
+ }
145
+ else if (path.endsWith('/workflow.json') || path === 'workflow.json') {
146
+ entityType = EntityType.WORKFLOW;
147
+ }
148
+ else if (path.includes('/connections/') || path.startsWith('connections/')) {
149
+ entityType = EntityType.CONNECTION;
150
+ }
151
+ else if (path.includes('/data-products/') || path.startsWith('data-products/')) {
152
+ entityType = EntityType.DATA_PRODUCT;
153
+ }
154
+ if (!entityType)
155
+ continue;
156
+ const result = validateEntity(entityType, entity);
157
+ if (!result.valid && result.errors) {
158
+ for (const err of result.errors) {
159
+ errors.push({
160
+ path: `${path}${err.path}`,
161
+ entity_type: entityType,
162
+ message: err.message,
163
+ });
164
+ }
165
+ }
166
+ }
167
+ return errors;
168
+ }
73
169
  //# sourceMappingURL=sdk-ingest-bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-ingest-bundle.js","sourceRoot":"","sources":["../../src/lib/sdk-ingest-bundle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAuBzC,MAAM,UAAU,oBAAoB,CAAC,MAA6B;IAChE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,UAAU,EAAE,CAAC;IACtD,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,IAAI,UAAU,EAAE,CAAC;IAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,IAAI,UAAU,EAAE,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,IAAI,uBAAuB,CAAC;IAErE,MAAM,KAAK,GAA4C;QACrD,eAAe,EAAE;YACf,WAAW,EAAE,UAAU;YACvB,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,YAAY;YAClB,aAAa,EAAE,WAAW;YAC1B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,EAAE;YACjB,QAAQ,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE;YACrC,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;SAChB;QACD,CAAC,eAAe,YAAY,OAAO,CAAC,EAAE;YACpC,aAAa,EAAE,YAAY;YAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE;gBACb,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,MAAM,CAAC,iBAAiB;aACrC;YACD,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;SAChB;QACD,CAAC,iBAAiB,aAAa,OAAO,CAAC,EAAE;YACvC,eAAe,EAAE,aAAa;YAC9B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,UAAU;YACvB,kBAAkB,EAAE,YAAY;YAChC,oBAAoB,EAAE,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,MAAM,CAAC,iBAAiB;YAC9B,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;YACxD,UAAU,EAAE;gBACV,cAAc,EAAE,UAAU;gBAC1B,UAAU,EAAE,EAAE;gBACd,uBAAuB,EAAE,EAAE;gBAC3B,IAAI,EAAE,EAAE;aACT;YACD,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;SAChB;KACF,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,YAAY;QAC3B,eAAe,EAAE,aAAa;QAC9B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sdk-ingest-bundle.js","sourceRoot":"","sources":["../../src/lib/sdk-ingest-bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Offline lint of a local Loxtep project package (entity schemas + relationships).
3
+ */
4
+ export interface LintIssue {
5
+ path: string;
6
+ severity: 'error';
7
+ message: string;
8
+ }
9
+ export interface LintResult {
10
+ ok: boolean;
11
+ issues: LintIssue[];
12
+ files_checked: number;
13
+ }
14
+ export interface LintOptions {
15
+ /** Project root (contains workflows/, connectors/). */
16
+ projectDir: string;
17
+ /** When set, only lint this workflow directory under workflows/<id>/. */
18
+ workflow_id?: string;
19
+ }
20
+ /**
21
+ * Lint local entity JSON against shipped schemas and basic relationship checks.
22
+ */
23
+ export declare function lintLocalPackage(options: LintOptions): LintResult;
24
+ /**
25
+ * True when the project has at least one entity JSON package file to lint.
26
+ */
27
+ export declare function hasLocalEntityPackage(projectDir: string): boolean;
28
+ //# sourceMappingURL=workspace-lint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-lint.d.ts","sourceRoot":"","sources":["../../src/lib/workspace-lint.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,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;CACtB;AAqGD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAkGjE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAQjE"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Offline lint of a local Loxtep project package (entity schemas + relationships).
3
+ */
4
+ import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
5
+ import { join, relative } from 'node:path';
6
+ import { EntityType, validateEntity } from './entity-json-schemas/index.js';
7
+ function readJsonObject(filePath) {
8
+ try {
9
+ const raw = JSON.parse(readFileSync(filePath, 'utf8'));
10
+ if (raw && typeof raw === 'object' && !Array.isArray(raw)) {
11
+ return raw;
12
+ }
13
+ return null;
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ function listJsonFiles(dir) {
20
+ if (!existsSync(dir))
21
+ return [];
22
+ const out = [];
23
+ for (const name of readdirSync(dir)) {
24
+ const full = join(dir, name);
25
+ let st;
26
+ try {
27
+ st = statSync(full);
28
+ }
29
+ catch {
30
+ continue;
31
+ }
32
+ if (st.isDirectory()) {
33
+ out.push(...listJsonFiles(full));
34
+ }
35
+ else if (name.endsWith('.json')) {
36
+ out.push(full);
37
+ }
38
+ }
39
+ return out;
40
+ }
41
+ function classifyEntity(projectDir, filePath) {
42
+ const rel = relative(projectDir, filePath).replace(/\\/g, '/');
43
+ if (rel.startsWith('connectors/') && rel.endsWith('.json')) {
44
+ return EntityType.CONNECTOR;
45
+ }
46
+ if (rel.match(/^workflows\/[^/]+\/workflow\.json$/)) {
47
+ return EntityType.WORKFLOW;
48
+ }
49
+ if (rel.match(/^workflows\/[^/]+\/connections\/[^/]+\.json$/)) {
50
+ return EntityType.CONNECTION;
51
+ }
52
+ if (rel.match(/^workflows\/[^/]+\/data-products\/[^/]+\.json$/)) {
53
+ return EntityType.DATA_PRODUCT;
54
+ }
55
+ if (rel.match(/^workflows\/[^/]+\/transformations\/[^/]+\.json$/)) {
56
+ return EntityType.TRANSFORMATION;
57
+ }
58
+ if (rel.match(/^workflows\/[^/]+\/validations\/[^/]+\.json$/)) {
59
+ return EntityType.VALIDATION;
60
+ }
61
+ if (rel.startsWith('domains/') && rel.endsWith('.json')) {
62
+ return EntityType.DOMAIN;
63
+ }
64
+ return null;
65
+ }
66
+ function discoverEntities(projectDir, workflowId) {
67
+ const entities = [];
68
+ const roots = [join(projectDir, 'connectors'), join(projectDir, 'domains')];
69
+ if (workflowId) {
70
+ roots.push(join(projectDir, 'workflows', workflowId));
71
+ }
72
+ else {
73
+ roots.push(join(projectDir, 'workflows'));
74
+ }
75
+ for (const root of roots) {
76
+ for (const filePath of listJsonFiles(root)) {
77
+ const entityType = classifyEntity(projectDir, filePath);
78
+ if (!entityType)
79
+ continue;
80
+ const data = readJsonObject(filePath);
81
+ const rel = relative(projectDir, filePath).replace(/\\/g, '/');
82
+ if (!data) {
83
+ entities.push({
84
+ path: rel,
85
+ entityType,
86
+ data: {},
87
+ });
88
+ // mark unreadable via empty + special handling below
89
+ continue;
90
+ }
91
+ entities.push({ path: rel, entityType, data });
92
+ }
93
+ }
94
+ return entities;
95
+ }
96
+ /**
97
+ * Lint local entity JSON against shipped schemas and basic relationship checks.
98
+ */
99
+ export function lintLocalPackage(options) {
100
+ const { projectDir, workflow_id } = options;
101
+ const issues = [];
102
+ if (!existsSync(projectDir)) {
103
+ return {
104
+ ok: false,
105
+ files_checked: 0,
106
+ issues: [{ path: projectDir, severity: 'error', message: 'Project directory not found' }],
107
+ };
108
+ }
109
+ const entities = discoverEntities(projectDir, workflow_id);
110
+ const byId = new Map();
111
+ for (const entity of entities) {
112
+ if (Object.keys(entity.data).length === 0) {
113
+ issues.push({
114
+ path: entity.path,
115
+ severity: 'error',
116
+ message: 'Invalid or unreadable JSON object',
117
+ });
118
+ continue;
119
+ }
120
+ const result = validateEntity(entity.entityType, entity.data);
121
+ if (!result.valid && result.errors) {
122
+ for (const err of result.errors) {
123
+ issues.push({
124
+ path: `${entity.path}${err.path}`,
125
+ severity: 'error',
126
+ message: err.message,
127
+ });
128
+ }
129
+ }
130
+ const idKey = entity.data.connector_id ||
131
+ entity.data.connection_id ||
132
+ entity.data.workflow_id ||
133
+ entity.data.data_product_id ||
134
+ entity.data.domain_id;
135
+ if (idKey) {
136
+ byId.set(idKey, entity);
137
+ }
138
+ }
139
+ // Relationship checks
140
+ for (const entity of entities) {
141
+ if (entity.entityType === EntityType.CONNECTION) {
142
+ const connectorId = entity.data.connector_id;
143
+ if (typeof connectorId === 'string' && connectorId.length > 0) {
144
+ // connector may exist only remotely; warn only if local connectors/ is present
145
+ // and does not contain this id — keep as error when local connector file expected.
146
+ const localConnectors = entities.filter(e => e.entityType === EntityType.CONNECTOR);
147
+ if (localConnectors.length > 0 &&
148
+ !localConnectors.some(c => c.data.connector_id === connectorId)) {
149
+ issues.push({
150
+ path: entity.path,
151
+ severity: 'error',
152
+ message: `connector_id "${connectorId}" not found under connectors/`,
153
+ });
154
+ }
155
+ }
156
+ else {
157
+ issues.push({
158
+ path: entity.path,
159
+ severity: 'error',
160
+ message: 'connection is missing connector_id',
161
+ });
162
+ }
163
+ }
164
+ if (entity.entityType === EntityType.DATA_PRODUCT) {
165
+ const upstream = entity.data.upstream_entity_id;
166
+ if (typeof upstream === 'string' && upstream.length > 0 && !byId.has(upstream)) {
167
+ // Upstream may be a connection in the same workflow — check connection ids
168
+ const conn = entities.find(e => e.entityType === EntityType.CONNECTION && e.data.connection_id === upstream);
169
+ if (!conn) {
170
+ issues.push({
171
+ path: entity.path,
172
+ severity: 'error',
173
+ message: `upstream_entity_id "${upstream}" not found in local package`,
174
+ });
175
+ }
176
+ }
177
+ }
178
+ }
179
+ return {
180
+ ok: issues.length === 0,
181
+ issues,
182
+ files_checked: entities.length,
183
+ };
184
+ }
185
+ /**
186
+ * True when the project has at least one entity JSON package file to lint.
187
+ */
188
+ export function hasLocalEntityPackage(projectDir) {
189
+ const workflowsDir = join(projectDir, 'workflows');
190
+ if (!existsSync(workflowsDir))
191
+ return false;
192
+ for (const name of readdirSync(workflowsDir)) {
193
+ const wfJson = join(workflowsDir, name, 'workflow.json');
194
+ if (existsSync(wfJson))
195
+ return true;
196
+ }
197
+ return existsSync(join(projectDir, 'connectors')) && listJsonFiles(join(projectDir, 'connectors')).length > 0;
198
+ }
199
+ //# sourceMappingURL=workspace-lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-lint.js","sourceRoot":"","sources":["../../src/lib/workspace-lint.ts"],"names":[],"mappings":"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"}
@@ -19,34 +19,34 @@ declare const SkillDefinitionSchema: z.ZodObject<{
19
19
  }, z.core.$strip>;
20
20
  permissions: z.ZodObject<{
21
21
  data_products: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodEnum<{
22
- write: "write";
23
- read: "read";
24
22
  create: "create";
25
23
  delete: "delete";
26
- }>>>>;
27
- connectors: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodEnum<{
28
24
  write: "write";
29
25
  read: "read";
26
+ }>>>>;
27
+ connectors: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodEnum<{
30
28
  create: "create";
31
29
  delete: "delete";
32
- }>>>>;
33
- workflows: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodEnum<{
34
30
  write: "write";
35
31
  read: "read";
32
+ }>>>>;
33
+ workflows: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodEnum<{
36
34
  create: "create";
37
35
  delete: "delete";
38
- }>>>>;
39
- domains: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodEnum<{
40
36
  write: "write";
41
37
  read: "read";
38
+ }>>>>;
39
+ domains: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodEnum<{
42
40
  create: "create";
43
41
  delete: "delete";
44
- }>>>>;
45
- queues: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodEnum<{
46
42
  write: "write";
47
43
  read: "read";
44
+ }>>>>;
45
+ queues: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodEnum<{
48
46
  create: "create";
49
47
  delete: "delete";
48
+ write: "write";
49
+ read: "read";
50
50
  }>>>>;
51
51
  }, z.core.$strip>;
52
52
  }, z.core.$strip>;
@@ -170,6 +170,8 @@ from your application:
170
170
 
171
171
  ```bash
172
172
  pnpm exec loxtep ingest provision --name app-events
173
+ pnpm exec loxtep lint
174
+ pnpm exec loxtep deploy
173
175
  pnpm exec loxtep data-products list
174
176
  ```
175
177
 
@@ -193,6 +193,7 @@ pnpm exec loxtep generate
193
193
 
194
194
  ```bash
195
195
  pnpm exec loxtep ingest provision --name app-events
196
+ pnpm exec loxtep lint && pnpm exec loxtep deploy
196
197
  ```
197
198
 
198
199
  See [Write to a data product](./sdk-first-ingest.md).