ingestron 0.15.0 → 0.16.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 +20 -0
- package/README.md +11 -5
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/build/cli/cli/index.js +46 -0
- package/build/cli/cli/workflow-commands.js +11 -0
- package/package.json +17 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.16.1
|
|
4
|
+
|
|
5
|
+
- Add `contract scaffold` for a minimal draft from a known field.
|
|
6
|
+
- Let `connections flow-add --execution <file>` pass reviewed provider-specific
|
|
7
|
+
execution settings to the core operation.
|
|
8
|
+
- Pin the public core 0.12.5 package for the shared operation contract.
|
|
9
|
+
|
|
10
|
+
## 0.16.0 (private candidate)
|
|
11
|
+
|
|
12
|
+
- Add reviewable `connections add` and `connections flow-add` commands for
|
|
13
|
+
connector-backed project authoring.
|
|
14
|
+
- Add `contract map` for versioned source-field selection and target names using
|
|
15
|
+
saved discovery evidence. Review, approval and execution remain separate.
|
|
16
|
+
- Consume the matching unpublished core 0.12.5 operation contract.
|
|
17
|
+
|
|
18
|
+
## 0.15.1
|
|
19
|
+
|
|
20
|
+
- Pin core 0.12.4 so CLI and MCP accept reusable connections with per-table source selectors; new projects start with short top-level package names.
|
|
21
|
+
- Existing stream-based projects and exact package locks remain supported.
|
|
22
|
+
|
|
3
23
|
## 0.15.0
|
|
4
24
|
|
|
5
25
|
- Add `provider install` and `connector install` with matching list/update commands. They use the existing immutable package cache and reject a package of the wrong type before changing the lock.
|
package/README.md
CHANGED
|
@@ -8,9 +8,16 @@ The CLI is a thin application over [`@ingestron/core`](https://github.com/ingest
|
|
|
8
8
|
Providers supply platform-specific generators, connectors and standards. Installing
|
|
9
9
|
the CLI does not install a platform provider or connect to a cloud account.
|
|
10
10
|
|
|
11
|
+
Version 0.16.1 uses core 0.12.5. It adds
|
|
12
|
+
`connections add`, `connections flow-add`, `contract scaffold` and `contract map`
|
|
13
|
+
for reviewable connector/workflow authoring, an editable first contract and
|
|
14
|
+
source-to-target ODCS mapping. `connections flow-add --execution <file>` passes
|
|
15
|
+
reviewed provider execution settings to core. Use a qualified local provider and
|
|
16
|
+
connector release for execution.
|
|
17
|
+
|
|
11
18
|
## Get started
|
|
12
19
|
|
|
13
|
-
Use Node 22.12 or newer, Git and pnpm 10.15.0
|
|
20
|
+
Use Node 22.12 or newer, Git and pnpm 10.15.0:
|
|
14
21
|
|
|
15
22
|
```sh
|
|
16
23
|
git clone https://github.com/ingestron/cli.git
|
|
@@ -29,13 +36,12 @@ To install this checkout's CLI in your terminal:
|
|
|
29
36
|
|
|
30
37
|
```sh
|
|
31
38
|
pnpm pack --pack-destination build/release
|
|
32
|
-
npm install --global ./build/release/ingestron-0.
|
|
39
|
+
npm install --global ./build/release/ingestron-0.16.1.tgz
|
|
33
40
|
ingestron --version
|
|
34
41
|
```
|
|
35
42
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
public, exact version `@ingestron/core@0.12.2`.
|
|
43
|
+
The package name is `ingestron`; its core dependency is the public, exact version
|
|
44
|
+
`@ingestron/core@0.12.5`.
|
|
39
45
|
|
|
40
46
|
Follow the [five-minute quickstart](docs/quickstart.md) for a project you can keep.
|
|
41
47
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
package/build/cli/cli/index.js
CHANGED
|
@@ -290,6 +290,48 @@ for (const kind of ["activities", "standards", "providers"]) {
|
|
|
290
290
|
const connections = app
|
|
291
291
|
.command("connections")
|
|
292
292
|
.description("Validate and prepare project-defined connector flows without source access");
|
|
293
|
+
connections
|
|
294
|
+
.command("add <id>")
|
|
295
|
+
.description("Register an installed connector as a project connection")
|
|
296
|
+
.requiredOption("--package <alias>", "Configured connector package alias")
|
|
297
|
+
.requiredOption("--source-id <id>", "Non-secret source identity")
|
|
298
|
+
.requiredOption("--tenant-id <id>", "Non-secret tenant identity")
|
|
299
|
+
.option("--binding <id>", "Environment binding for runtime secrets")
|
|
300
|
+
.option("--settings <file>", "Project-relative YAML/JSON settings file")
|
|
301
|
+
.action((id, options) => author("connection_add", {
|
|
302
|
+
id,
|
|
303
|
+
package: options.package,
|
|
304
|
+
sourceId: options.sourceId,
|
|
305
|
+
tenantId: options.tenantId,
|
|
306
|
+
...(options.binding ? { binding: options.binding } : {}),
|
|
307
|
+
settings: options.settings ? readData(options.settings) : {},
|
|
308
|
+
}));
|
|
309
|
+
connections
|
|
310
|
+
.command("flow-add <id>")
|
|
311
|
+
.description("Create a connection-backed ingestion flow")
|
|
312
|
+
.requiredOption("--provider <configuration>", "Configured provider")
|
|
313
|
+
.requiredOption("--connection <id>", "Configured connection")
|
|
314
|
+
.requiredOption("--table <id>", "Output table")
|
|
315
|
+
.requiredOption("--contract <file>", "Project-relative ODCS contract")
|
|
316
|
+
.option("--source <file>", "Project-relative YAML/JSON table source settings")
|
|
317
|
+
.option("--source-path <path>", "Files connector source path")
|
|
318
|
+
.option("--format <format>", "Files connector format")
|
|
319
|
+
.option("--execution <file>", "Project-relative provider execution settings")
|
|
320
|
+
.action((id, options) => {
|
|
321
|
+
check(!!options.source !== !!options.sourcePath, "OPTION", "Choose a source settings file or a source path");
|
|
322
|
+
check(!options.sourcePath || options.format, "OPTION", "A file source needs its format");
|
|
323
|
+
author("connection_flow_add", {
|
|
324
|
+
id,
|
|
325
|
+
provider: options.provider,
|
|
326
|
+
connection: options.connection,
|
|
327
|
+
table: options.table,
|
|
328
|
+
contract: options.contract,
|
|
329
|
+
source: options.source
|
|
330
|
+
? readData(options.source)
|
|
331
|
+
: { path: options.sourcePath, format: options.format },
|
|
332
|
+
...(options.execution ? { execution: readData(options.execution) } : {}),
|
|
333
|
+
});
|
|
334
|
+
});
|
|
293
335
|
connections
|
|
294
336
|
.command("validate <flow>")
|
|
295
337
|
.action((flow) => run("connection_prepare", { flow, validateOnly: true }));
|
|
@@ -495,6 +537,8 @@ app.hook("preAction", (_root, command) => {
|
|
|
495
537
|
"source prepare",
|
|
496
538
|
"source import",
|
|
497
539
|
"plugin configure",
|
|
540
|
+
"connections add",
|
|
541
|
+
"connections flow-add",
|
|
498
542
|
"plugin migrate",
|
|
499
543
|
"config environment add",
|
|
500
544
|
"flow table add",
|
|
@@ -514,6 +558,8 @@ app.hook("preAction", (_root, command) => {
|
|
|
514
558
|
"providers migrate",
|
|
515
559
|
"providers export",
|
|
516
560
|
"contract draft",
|
|
561
|
+
"contract scaffold",
|
|
562
|
+
"contract map",
|
|
517
563
|
"plugin scaffold",
|
|
518
564
|
"plugin pack-add",
|
|
519
565
|
]).has(parts.join(" ")), "OPTION", "--dry-run is supported only by project authoring commands; this command has not run");
|
|
@@ -61,6 +61,13 @@ export function workflowCommands(app, host) {
|
|
|
61
61
|
check(!id || !options.id || id === options.id, "INPUT", "Provide one contract identifier");
|
|
62
62
|
author("contract_create", { ...options, id: id ?? options.id });
|
|
63
63
|
});
|
|
64
|
+
contract
|
|
65
|
+
.command("scaffold <id>")
|
|
66
|
+
.description("Create an editable draft contract from one known field")
|
|
67
|
+
.requiredOption("--table <name>", "Dataset/table name")
|
|
68
|
+
.requiredOption("--field <name>", "First known source field")
|
|
69
|
+
.requiredOption("--type <type>", "Field type: string, integer, number or boolean")
|
|
70
|
+
.action((id, options) => author("contract_scaffold", { id, ...options }));
|
|
64
71
|
contract
|
|
65
72
|
.command("list")
|
|
66
73
|
.description("List authored contracts")
|
|
@@ -74,6 +81,10 @@ export function workflowCommands(app, host) {
|
|
|
74
81
|
.description("Validate full ODCS, including nested schemas")
|
|
75
82
|
.option("--native", "Also check eligibility for flat native table authoring")
|
|
76
83
|
.action((id, options) => run("contract_check", { id, ...options }));
|
|
84
|
+
contract
|
|
85
|
+
.command("map <file>")
|
|
86
|
+
.description("Preview or apply a versioned source-to-contract field mapping draft")
|
|
87
|
+
.action((file) => author("contract_map_fields", readData(file)));
|
|
77
88
|
const flow = app.commands.find((c) => c.name() === "flow");
|
|
78
89
|
flow
|
|
79
90
|
.command("connect <id>")
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ingestron",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Build repeatable data pipelines from reviewed contracts and versioned standards.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,25 +22,9 @@
|
|
|
22
22
|
"engines": {
|
|
23
23
|
"node": ">=22.12.0"
|
|
24
24
|
},
|
|
25
|
-
"packageManager": "pnpm@10.15.0",
|
|
26
|
-
"scripts": {
|
|
27
|
-
"build": "node scripts/clean-build.mjs && tsc",
|
|
28
|
-
"test": "tsx --test --test-concurrency=1 test/unit/*.test.ts test/providers/*.test.ts test/integration/*.test.ts",
|
|
29
|
-
"format": "prettier --write .",
|
|
30
|
-
"format:check": "prettier --check .",
|
|
31
|
-
"secrets:check": "node scripts/secrets.mjs",
|
|
32
|
-
"validate": "pnpm format:check && pnpm build && pnpm test && pnpm examples:check && pnpm secrets:check && pnpm docs:check && pnpm release:check && pnpm package:check",
|
|
33
|
-
"prepack": "pnpm build",
|
|
34
|
-
"package:check": "tsx scripts/package-check.ts",
|
|
35
|
-
"release:check": "node scripts/release-check.mjs",
|
|
36
|
-
"prepublishOnly": "node scripts/release-check.mjs --publish",
|
|
37
|
-
"docs:check": "node scripts/docs-check.mjs",
|
|
38
|
-
"examples:check": "node examples/quickstart.mjs",
|
|
39
|
-
"licences:inventory": "node scripts/licence-inventory.mjs"
|
|
40
|
-
},
|
|
41
25
|
"dependencies": {
|
|
42
26
|
"@clack/prompts": "1.7.0",
|
|
43
|
-
"@ingestron/core": "0.12.
|
|
27
|
+
"@ingestron/core": "0.12.5",
|
|
44
28
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
45
29
|
"commander": "15.0.0",
|
|
46
30
|
"yaml": "2.9.0"
|
|
@@ -72,5 +56,18 @@
|
|
|
72
56
|
"cli",
|
|
73
57
|
"mcp",
|
|
74
58
|
"code-generation"
|
|
75
|
-
]
|
|
76
|
-
|
|
59
|
+
],
|
|
60
|
+
"scripts": {
|
|
61
|
+
"build": "node scripts/clean-build.mjs && tsc",
|
|
62
|
+
"test": "tsx --test --test-concurrency=1 test/unit/*.test.ts test/providers/*.test.ts test/integration/*.test.ts",
|
|
63
|
+
"format": "prettier --write .",
|
|
64
|
+
"format:check": "prettier --check .",
|
|
65
|
+
"secrets:check": "node scripts/secrets.mjs",
|
|
66
|
+
"validate": "pnpm format:check && pnpm build && pnpm test && pnpm examples:check && pnpm secrets:check && pnpm docs:check && pnpm release:check && pnpm package:check",
|
|
67
|
+
"package:check": "tsx scripts/package-check.ts",
|
|
68
|
+
"release:check": "node scripts/release-check.mjs",
|
|
69
|
+
"docs:check": "node scripts/docs-check.mjs",
|
|
70
|
+
"examples:check": "node examples/quickstart.mjs",
|
|
71
|
+
"licences:inventory": "node scripts/licence-inventory.mjs"
|
|
72
|
+
}
|
|
73
|
+
}
|