ingestron 0.17.1 → 0.17.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,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.17.2
4
+
5
+ - Pin core 0.12.8. `ingestron check` lists data products with status and owner
6
+ from ODCS contracts, and notes quality rules recorded but not yet enforced.
7
+ An active contract must name an owner.
8
+
3
9
  ## 0.17.1
4
10
 
5
11
  - Add `adf` and `databricks` official provider names, resolving to the public
@@ -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.7
78
+ ### @ingestron/core@0.12.8
79
79
 
80
80
  Declared licence: Apache-2.0
81
81
 
@@ -27,6 +27,22 @@ export function exitCode(result) {
27
27
  return 2;
28
28
  }
29
29
  const clean = (value) => String(value).replace(/[\u0000-\u001f\u007f-\u009f]/g, " ");
30
+ // Data product ownership from ODCS contracts; absent with older core versions.
31
+ function dataProductLines(products) {
32
+ if (!Array.isArray(products) || !products.length)
33
+ return "";
34
+ const shown = products.slice(0, 20).map((p) => {
35
+ const owners = Array.isArray(p.owners) ? p.owners.map(clean) : [];
36
+ return `\n ${clean(p.contract)} ${clean(p.status ?? "no status")} ${owners.length ? `owner ${owners.join(", ")}` : "no owner"}`;
37
+ });
38
+ const recorded = products.reduce((n, p) => n + Math.max(0, (p.qualityRules ?? 0) - (p.enforcedQualityRules ?? 0)), 0);
39
+ return ("\nData products:" +
40
+ shown.join("") +
41
+ (products.length > 20 ? `\n … ${products.length - 20} more` : "") +
42
+ (recorded
43
+ ? `\n${recorded} quality rule(s) are recorded in contracts but not yet enforced.`
44
+ : ""));
45
+ }
30
46
  function pluginLabel(reference) {
31
47
  for (const [name, entry] of Object.entries(officialPlugins)) {
32
48
  const prefixes = [
@@ -105,7 +121,8 @@ export function terminal(result, verbose = false, args = {}) {
105
121
  case "validate":
106
122
  return value.mode === "draft"
107
123
  ? `Draft configuration checked (${value.flows} flows).\n${value.pending.length} unresolved inputs. Strict build readiness has not been checked.`
108
- : `Project checks passed${value.nodes === undefined ? "" : ` (${value.nodes} planned nodes)`}.\nValidation is local; no platform connection was tested.`;
124
+ : `Project checks passed${value.nodes === undefined ? "" : ` (${value.nodes} planned nodes)`}.\nValidation is local; no platform connection was tested.` +
125
+ dataProductLines(value.dataProducts);
109
126
  case "doctor":
110
127
  return `Project ${clean(value.project)} (${clean(value.environment)})\n${value.pending.length} unresolved inputs.\n${clean(value.platformAccess)}\nNext: ${clean(value.next)}`;
111
128
  case "runtime_prepare":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ingestron",
3
- "version": "0.17.1",
3
+ "version": "0.17.2",
4
4
  "type": "module",
5
5
  "description": "Build repeatable data pipelines from reviewed contracts and versioned standards.",
6
6
  "license": "Apache-2.0",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@clack/prompts": "1.7.0",
27
- "@ingestron/core": "0.12.7",
27
+ "@ingestron/core": "0.12.8",
28
28
  "@modelcontextprotocol/sdk": "1.30.0",
29
29
  "commander": "15.0.0",
30
30
  "yaml": "2.9.0"