ingestron 0.13.0 → 0.13.2

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.13.2
4
+
5
+ - Keep official plugin names short in ordinary install/list output; exact references remain in verbose and JSON output.
6
+ - Link help to complete walkthroughs and explain the separate provider-configuration step.
7
+ - Summarise configured resources and show Python preparation/reuse details from the local provider.
8
+
9
+ ## 0.13.1 — Node.js runtime compatibility
10
+
11
+ - Require Node 22.12 or newer instead of excluding newer major versions. CI tests
12
+ Node 22.12.0, 22.23.2 and 24.12.0, including installed CLI and MCP workflows.
13
+ - Pin core 0.12.1 so the transitive core package no longer warns on Node 24.
14
+
3
15
  ## 0.13.0 — simpler plugin installation
4
16
 
5
17
  - CLI and MCP resolve official `github` and `local` names through shared adapter logic.
package/README.md CHANGED
@@ -10,7 +10,7 @@ the CLI does not install a platform provider or connect to a cloud account.
10
10
 
11
11
  ## Get started
12
12
 
13
- Use Node 22, Git and pnpm 10.15.0. Build the public source:
13
+ Use Node 22.12 or newer, Git and pnpm 10.15.0. Build the public source:
14
14
 
15
15
  ```sh
16
16
  git clone https://github.com/ingestron/cli.git
@@ -29,13 +29,13 @@ To install this checkout's CLI in your terminal:
29
29
 
30
30
  ```sh
31
31
  pnpm pack --pack-destination build/release
32
- npm install --global ./build/release/ingestron-0.13.0.tgz
32
+ npm install --global ./build/release/ingestron-0.13.1.tgz
33
33
  ingestron --version
34
34
  ```
35
35
 
36
36
  This source release prepares the npm package named `ingestron`; it does not claim
37
37
  that the same CLI version is already published on npm. Its core dependency is the
38
- public, exact version `@ingestron/core@0.12.0`.
38
+ public, exact version `@ingestron/core@0.12.1`.
39
39
 
40
40
  Follow the [five-minute quickstart](docs/quickstart.md) for a project you can keep.
41
41
 
@@ -75,7 +75,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
75
75
  SOFTWARE.
76
76
  ```
77
77
 
78
- ### @ingestron/core@0.12.0
78
+ ### @ingestron/core@0.12.1
79
79
 
80
80
  Declared licence: Apache-2.0
81
81
 
@@ -3,6 +3,7 @@
3
3
  * serialise arbitrary plugin data or resolved bindings in the default summary. */
4
4
  import { friendlyReference } from "@ingestron/core/adapter";
5
5
  import { stringify } from "yaml";
6
+ import { officialPlugins } from "./plugin-resolution.js";
6
7
  export function exitCode(result) {
7
8
  if (result.ok)
8
9
  return 0;
@@ -26,6 +27,21 @@ export function exitCode(result) {
26
27
  return 2;
27
28
  }
28
29
  const clean = (value) => String(value).replace(/[\u0000-\u001f\u007f-\u009f]/g, " ");
30
+ function pluginLabel(reference) {
31
+ for (const [name, entry] of Object.entries(officialPlugins)) {
32
+ const prefixes = [
33
+ `${entry.repository}/${entry.path}@`,
34
+ ...(name === "local" ? [`${entry.repository}@`] : []),
35
+ ];
36
+ for (const prefix of prefixes)
37
+ if (reference.startsWith(prefix)) {
38
+ const version = reference.slice(prefix.length);
39
+ if (/^\d+\.\d+\.\d+$/.test(version))
40
+ return `${name}@${version}`;
41
+ }
42
+ }
43
+ return friendlyReference(reference);
44
+ }
29
45
  function lines(title, items, empty) {
30
46
  if (!items.length)
31
47
  return empty;
@@ -61,9 +77,9 @@ export function terminal(result, verbose = false, args = {}) {
61
77
  value.evidence +
62
78
  "\nInstall: ingestron plugin install <owner/repository>@<version>");
63
79
  case "packages_install":
64
- return `${value.cached ? "Using cached" : "Installed"} plugin ${clean(friendlyReference(args.reference ?? value.reference ?? "package"))}.${value.informationFile ? `\nPlugin information and licence evidence: ${clean(value.informationFile)}` : ""}`;
80
+ return `${value.cached ? "Using cached" : "Installed"} plugin ${clean(pluginLabel(args.reference ?? value.reference ?? "package"))}.\nUse --verbose for the exact reference and licence information.`;
65
81
  case "packages_list":
66
- return lines("Installed plugins", Object.keys(value.packages).map(friendlyReference), "No plugins installed.\nNext: ingestron plugin install local");
82
+ return lines("Installed plugins", Object.keys(value.packages).map(pluginLabel), "No plugins installed.\nNext: ingestron plugin install local");
67
83
  case "source_list":
68
84
  return lines("Sources", value.map((s) => `${s.id} ${s.type}${s.format ? "/" + s.format : ""} ${s.execution}`), "No sources configured.\nNext: ingestron source add <name> --type <type>");
69
85
  case "source_show":
@@ -93,6 +109,11 @@ export function terminal(result, verbose = false, args = {}) {
93
109
  case "doctor":
94
110
  return `Project ${clean(value.project)} (${clean(value.environment)})\n${value.pending.length} unresolved inputs.\n${clean(value.platformAccess)}\nNext: ${clean(value.next)}`;
95
111
  case "runtime_prepare":
112
+ return (`Runtime ${clean(value.status)} for ${value.flows.map(clean).join(", ")}.` +
113
+ (value.result?.flows ?? [])
114
+ .map((f) => `\n ${clean(f.flow)}: Python ${clean(f.pythonVersion ?? "3.12")} (${f.reused ? "reused" : "prepared"})`)
115
+ .join("") +
116
+ `\nUse ingestron run status ${clean(value.id)} --verbose for environment paths and details.`);
96
117
  case "run":
97
118
  case "run_status":
98
119
  return `Run ${clean(value.id)}: ${clean(value.status)} (${clean(value.action)}).\nTarget: ${clean(value.configuration)}; flows: ${value.flows.map(clean).join(", ")}.\nUse ingestron run status ${clean(value.id)} to inspect the receipt.`;
@@ -120,7 +141,15 @@ export function terminal(result, verbose = false, args = {}) {
120
141
  case "config_explain":
121
142
  return `Configuration: ${clean(value.path)} (${clean(value.environment)})\nUse --verbose to inspect declared and resolved values.`;
122
143
  case "resolve":
123
- return `Resolved project ${clean(value.project.id)} (${value.flows.length} flows).\n${value.pending.length} unresolved inputs. Use --verbose to inspect configuration.`;
144
+ return (`Project ${clean(value.project.id)} — resolved build configuration\n` +
145
+ `Providers: ${Object.keys(value.project.providers?.configurations ?? {})
146
+ .map(clean)
147
+ .join(", ") || "none"}\n` +
148
+ `Connections: ${Object.keys(value.project.connections ?? {})
149
+ .map(clean)
150
+ .join(", ") || "none"}\n` +
151
+ `Flows: ${value.flows.length}; unresolved inputs: ${value.pending.length}.\n` +
152
+ "Authored files: ingestron source list; ingestron contract list.\nUse --verbose for resolved configuration and input-file digests.");
124
153
  case "read":
125
154
  return value.content;
126
155
  case "schema":
@@ -372,5 +372,5 @@ export function workflowCommands(app, host) {
372
372
  visibleCommands: (command) => command.commands.filter((c) => (command !== app || !hidden.has(c.name())) &&
373
373
  (command !== contract || c.name() !== "validate")),
374
374
  });
375
- app.addHelpText("after", "\nStart: init → plugin install → source import → contract draft → flow add → check → build\nUse --json for automation; --verbose for detailed terminal output.");
375
+ app.addHelpText("after", "\nStart with a complete walkthrough: https://docs.ingestron.io/docs/start/first-contract\nRun a public GitHub example: https://docs.ingestron.io/docs/tutorials/github-to-parquet\nPlugin installation caches packages; use plugin configure to add a provider to your project.\nUse --json for automation; --verbose for detailed terminal output.");
376
376
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ingestron",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "type": "module",
5
5
  "description": "Build repeatable data pipelines from reviewed contracts and versioned standards.",
6
6
  "license": "Apache-2.0",
@@ -20,11 +20,11 @@
20
20
  "THIRD_PARTY_NOTICES.md"
21
21
  ],
22
22
  "engines": {
23
- "node": ">=22 <23"
23
+ "node": ">=22.12.0"
24
24
  },
25
25
  "dependencies": {
26
26
  "@clack/prompts": "1.7.0",
27
- "@ingestron/core": "0.12.0",
27
+ "@ingestron/core": "0.12.1",
28
28
  "@modelcontextprotocol/sdk": "1.30.0",
29
29
  "commander": "15.0.0",
30
30
  "yaml": "2.9.0"