dataiku-sdk 0.12.4 → 0.12.5

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 (84) hide show
  1. package/README.md +118 -7
  2. package/dist/packages/types/src/index.d.ts +5 -0
  3. package/dist/packages/types/src/index.js +5 -0
  4. package/dist/src/cli/coerce.d.ts +1 -3
  5. package/dist/src/cli/coerce.js +1 -17
  6. package/dist/src/cli/commands/app.js +709 -14
  7. package/dist/src/cli/commands/code-env.js +2 -2
  8. package/dist/src/cli/commands/dashboard.js +1 -1
  9. package/dist/src/cli/commands/dataset.js +2 -2
  10. package/dist/src/cli/commands/folder.js +1 -1
  11. package/dist/src/cli/commands/insight.js +2 -2
  12. package/dist/src/cli/commands/notebook.js +2 -2
  13. package/dist/src/cli/commands/recipe.js +3 -3
  14. package/dist/src/cli/commands/scenario.js +1 -1
  15. package/dist/src/cli/commands/sql.js +1 -1
  16. package/dist/src/cli/commands/variable.js +1 -1
  17. package/dist/src/cli/commands/wiki.js +1 -1
  18. package/dist/src/cli/contract.d.ts +12 -3
  19. package/dist/src/cli/contract.js +805 -49
  20. package/dist/src/cli/flags.js +8 -0
  21. package/dist/src/cli/helpers/app-permissions.d.ts +63 -0
  22. package/dist/src/cli/helpers/app-permissions.js +239 -0
  23. package/dist/src/cli/helpers/app-successor.d.ts +106 -0
  24. package/dist/src/cli/helpers/app-successor.js +625 -0
  25. package/dist/src/cli/helpers/cleanup.js +46 -12
  26. package/dist/src/cli/output.d.ts +12 -1
  27. package/dist/src/cli/output.js +53 -6
  28. package/dist/src/cli/usage.d.ts +1 -1
  29. package/dist/src/cli/usage.js +5 -2
  30. package/dist/src/cli.js +329 -32
  31. package/dist/src/client.d.ts +6 -0
  32. package/dist/src/client.js +28 -1
  33. package/dist/src/errors.d.ts +1 -1
  34. package/dist/src/resources/applications.d.ts +191 -1
  35. package/dist/src/resources/applications.js +549 -10
  36. package/dist/src/resources/datasets.js +8 -0
  37. package/dist/src/resources/futures.js +7 -2
  38. package/dist/src/skill.js +76 -18
  39. package/dist/src/utils/cleanup-ledger.d.ts +34 -1
  40. package/dist/src/utils/cleanup-ledger.js +118 -7
  41. package/dist/src/utils/dss-url.d.ts +6 -0
  42. package/dist/src/utils/dss-url.js +17 -0
  43. package/dist/src/utils/project-incarnation.d.ts +6 -0
  44. package/dist/src/utils/project-incarnation.js +27 -0
  45. package/dist/src/utils/stable-hash.d.ts +11 -0
  46. package/dist/src/utils/stable-hash.js +27 -0
  47. package/node_modules/@sinclair/typebox/build/cjs/compiler/compiler.js +26 -46
  48. package/node_modules/@sinclair/typebox/build/cjs/parser/runtime/guard.d.ts +1 -1
  49. package/node_modules/@sinclair/typebox/build/cjs/parser/runtime/token.d.ts +2 -2
  50. package/node_modules/@sinclair/typebox/build/cjs/syntax/mapping.d.ts +1 -1
  51. package/node_modules/@sinclair/typebox/build/cjs/system/evaluate.d.ts +5 -0
  52. package/node_modules/@sinclair/typebox/build/cjs/system/evaluate.js +11 -0
  53. package/node_modules/@sinclair/typebox/build/cjs/system/index.d.ts +1 -0
  54. package/node_modules/@sinclair/typebox/build/cjs/system/index.js +1 -0
  55. package/node_modules/@sinclair/typebox/build/cjs/type/object/object.d.ts +2 -2
  56. package/node_modules/@sinclair/typebox/build/cjs/type/object/object.js +18 -2
  57. package/node_modules/@sinclair/typebox/build/cjs/value/parse/parse.d.ts +1 -1
  58. package/node_modules/@sinclair/typebox/build/esm/compiler/compiler.mjs +27 -47
  59. package/node_modules/@sinclair/typebox/build/esm/parser/runtime/guard.d.mts +1 -1
  60. package/node_modules/@sinclair/typebox/build/esm/parser/runtime/token.d.mts +2 -2
  61. package/node_modules/@sinclair/typebox/build/esm/syntax/mapping.d.mts +1 -1
  62. package/node_modules/@sinclair/typebox/build/esm/system/evaluate.d.mts +5 -0
  63. package/node_modules/@sinclair/typebox/build/esm/system/evaluate.mjs +7 -0
  64. package/node_modules/@sinclair/typebox/build/esm/system/index.d.mts +1 -0
  65. package/node_modules/@sinclair/typebox/build/esm/system/index.mjs +1 -0
  66. package/node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs +2 -2
  67. package/node_modules/@sinclair/typebox/build/esm/type/const/const.mjs +3 -3
  68. package/node_modules/@sinclair/typebox/build/esm/type/instantiate/instantiate.mjs +2 -2
  69. package/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs +3 -3
  70. package/node_modules/@sinclair/typebox/build/esm/type/module/compute.mjs +2 -2
  71. package/node_modules/@sinclair/typebox/build/esm/type/object/object.d.mts +2 -2
  72. package/node_modules/@sinclair/typebox/build/esm/type/object/object.mjs +18 -2
  73. package/node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs +3 -3
  74. package/node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs +3 -3
  75. package/node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs +3 -3
  76. package/node_modules/@sinclair/typebox/build/esm/type/record/record.mjs +3 -3
  77. package/node_modules/@sinclair/typebox/build/esm/type/required/required.mjs +3 -3
  78. package/node_modules/@sinclair/typebox/build/esm/type/type/json.mjs +2 -2
  79. package/node_modules/@sinclair/typebox/build/esm/value/delta/delta.mjs +4 -4
  80. package/node_modules/@sinclair/typebox/build/esm/value/parse/parse.d.mts +1 -1
  81. package/node_modules/@sinclair/typebox/package.json +1 -1
  82. package/package.json +7 -5
  83. package/packages/types/dist/index.d.ts +5 -0
  84. package/packages/types/dist/index.js +5 -0
@@ -124,7 +124,7 @@ export const codeEnvCommands = {
124
124
  }
125
125
  return c.codeEnvs.setDefinition(a[0], a[1], definition);
126
126
  },
127
- usage: "dss code-env set-definition <lang> <name> [--data JSON|--data-file PATH|--stdin] [--dry-run]",
127
+ usage: "dss code-env set-definition <lang> <name> (--data JSON|--data-file PATH|--stdin) [--dry-run]",
128
128
  description: "Replace a code environment definition previously fetched from DSS.",
129
129
  examples: ["dss code-env set-definition PYTHON my_env --data-file code-env.json --dry-run",],
130
130
  },
@@ -146,7 +146,7 @@ export const codeEnvCommands = {
146
146
  }
147
147
  return c.codeEnvs.setPackages(a[0], a[1], packages, { installCorePackages, });
148
148
  },
149
- usage: "dss code-env set-packages <lang> <name> [--packages PKGS|--package PKG|--file PATH] [--install-core-packages true|false] [--dry-run]",
149
+ usage: "dss code-env set-packages <lang> <name> (--packages PKGS|--package PKG|--file PATH) [--install-core-packages true|false] [--dry-run]",
150
150
  description: "Update requested package specs without rebuilding packages.",
151
151
  examples: [
152
152
  "dss code-env set-packages PYTHON my_env --packages 'tabulate\\nnameparser' --dry-run",
@@ -73,7 +73,7 @@ export const dashboardCommands = {
73
73
  projectKey: f["project-key"],
74
74
  });
75
75
  },
76
- usage: "dss dashboard update <id> [--name NAME|--data JSON|--data-file PATH|--stdin] [--dry-run] [--project-key KEY]",
76
+ usage: "dss dashboard update <id> (--name NAME|--data JSON|--data-file PATH|--stdin) [--dry-run] [--project-key KEY]",
77
77
  description: "Update dashboard settings via merge.",
78
78
  examples: ["dss dashboard update DASHBOARD_ID --name 'New name' --dry-run",],
79
79
  },
@@ -89,7 +89,7 @@ export const datasetCommands = {
89
89
  await c.datasets.updateSchema(a[0], columns, pk);
90
90
  return { updated: a[0], resource: "dataset", schema: { columns, }, };
91
91
  },
92
- usage: "dss dataset refresh-schema <name> [--data JSON | --data-file PATH | --stdin] [--dry-run] [--project-key KEY]",
92
+ usage: "dss dataset refresh-schema <name> (--data JSON | --data-file PATH | --stdin) [--dry-run] [--project-key KEY]",
93
93
  description: "Replace a dataset schema through the DSS schema endpoint.",
94
94
  examples: [
95
95
  `dss dataset refresh-schema orders --data '{"columns":[{"name":"id","type":"bigint"}]}' --dry-run`,
@@ -278,7 +278,7 @@ export const datasetCommands = {
278
278
  await c.datasets.update(a[0], data, pk);
279
279
  return { updated: a[0], resource: "dataset", };
280
280
  },
281
- usage: "dss dataset update <name> [--data '{...}' | --data-file PATH | --stdin] [--dry-run] [--project-key KEY]",
281
+ usage: "dss dataset update <name> (--data '{...}' | --data-file PATH | --stdin) [--dry-run] [--project-key KEY]",
282
282
  description: "Update dataset settings via JSON merge.",
283
283
  examples: [
284
284
  'dss dataset update orders --data \'{"tags":["production"]}\' --dry-run',
@@ -89,7 +89,7 @@ export const folderCommands = {
89
89
  await c.folders.update(folderId, data, pk);
90
90
  return { updated: folderId, resource: "folder", };
91
91
  },
92
- usage: "dss folder update <name-or-id> [--data JSON | --data-file PATH | --stdin] [--dry-run] [--project-key KEY]",
92
+ usage: "dss folder update <name-or-id> (--data JSON | --data-file PATH | --stdin) [--dry-run] [--project-key KEY]",
93
93
  description: "Update managed folder settings by deep-merging a JSON patch.",
94
94
  examples: [
95
95
  'dss folder update exports --data \'{"tags":["agent"]}\' --dry-run',
@@ -84,7 +84,7 @@ export const insightCommands = {
84
84
  },
85
85
  update: {
86
86
  handler: async (c, a, f) => {
87
- requireArgs(a, 1, "dss insight update <id> [--name NAME|--params JSON|--data JSON]");
87
+ requireArgs(a, 1, "dss insight update <id> (--name NAME|--listed true|false|--params JSON|--content TEXT|--file PATH|--content-type MIME|--data JSON|--data-file PATH|--stdin)");
88
88
  const data = jsonInput(f);
89
89
  const name = f["name"];
90
90
  const params = json(f["params"]);
@@ -130,7 +130,7 @@ export const insightCommands = {
130
130
  projectKey: f["project-key"],
131
131
  });
132
132
  },
133
- usage: "dss insight update <id> [--name NAME] [--listed true|false] [--params JSON] [--content TEXT|--file PATH --content-type MIME] [--data JSON|--data-file PATH|--stdin] [--dry-run] [--project-key KEY]",
133
+ usage: "dss insight update <id> (--name NAME|--listed true|false|--params JSON|--content TEXT|--file PATH|--content-type MIME|--data JSON|--data-file PATH|--stdin) [--dry-run] [--project-key KEY]",
134
134
  description: "Update an insight using GET-before-POST merge semantics.",
135
135
  examples: ["dss insight update INSIGHT_ID --name 'Updated' --dry-run",],
136
136
  },
@@ -172,7 +172,7 @@ export const notebookCommands = {
172
172
  }
173
173
  return { saved: a[0], resource: "jupyter-notebook", };
174
174
  },
175
- usage: "dss notebook save-jupyter <name> [--data '{...}' | --data-file PATH | --stdin] [--dry-run] [--project-key KEY]",
175
+ usage: "dss notebook save-jupyter <name> (--data '{...}' | --data-file PATH | --stdin) [--dry-run] [--project-key KEY]",
176
176
  description: "Save content to a Jupyter notebook, creating it if missing.",
177
177
  examples: [
178
178
  "dss notebook save-jupyter my_notebook --data-file notebook.json --dry-run",
@@ -207,7 +207,7 @@ export const notebookCommands = {
207
207
  }
208
208
  return { saved: a[0], resource: "sql-notebook", };
209
209
  },
210
- usage: "dss notebook save-sql <id> [--data '{...}' | --data-file PATH | --stdin] [--dry-run] [--project-key KEY]",
210
+ usage: "dss notebook save-sql <id> (--data '{...}' | --data-file PATH | --stdin) [--dry-run] [--project-key KEY]",
211
211
  description: "Save content to a SQL notebook, creating it if missing.",
212
212
  examples: ["dss notebook save-sql my_sql_notebook --data-file content.json --dry-run",],
213
213
  },
@@ -265,7 +265,7 @@ export const recipeCommands = {
265
265
  },
266
266
  clone: {
267
267
  handler: async (c, a, f) => {
268
- const usage = "dss recipe clone [source|--from SOURCE] (--name NAME|--to NAME) [--replace-input FROM=TO] [--replace-output FROM=TO] [--replace-payload-text FROM=TO] [--output DATASET] [--copy-output-settings] [--path PATH] [--metastore-table TABLE] [--zone ZONE|--zone-id ID] [--dry-run] [--project-key KEY]";
268
+ const usage = "dss recipe clone (source|--from SOURCE) (--name NAME|--to NAME) [--replace-input FROM=TO] [--replace-output FROM=TO] [--replace-payload-text FROM=TO] [--output DATASET] [--copy-output-settings] [--path PATH] [--metastore-table TABLE] [--zone ZONE|--zone-id ID] [--dry-run] [--project-key KEY]";
269
269
  const fromFlag = typeof f["from"] === "string" ? f["from"].trim() : "";
270
270
  const sourceName = a[0] ?? fromFlag;
271
271
  if (!sourceName) {
@@ -333,7 +333,7 @@ export const recipeCommands = {
333
333
  const moved = await moveCreatedItemsToZone(c, f, [{ objectId: name, objectType: "RECIPE", },], pk);
334
334
  return { ...cloned, resource: "recipe", ...moved, };
335
335
  },
336
- usage: "dss recipe clone [source|--from SOURCE] (--name NAME|--to NAME) [--replace-input FROM=TO] [--replace-output FROM=TO] [--replace-payload-text FROM=TO] [--output DATASET] [--copy-output-settings] [--path PATH] [--metastore-table TABLE] [--zone ZONE|--zone-id ID] [--dry-run] [--project-key KEY]",
336
+ usage: "dss recipe clone (source|--from SOURCE) (--name NAME|--to NAME) [--replace-input FROM=TO] [--replace-output FROM=TO] [--replace-payload-text FROM=TO] [--output DATASET] [--copy-output-settings] [--path PATH] [--metastore-table TABLE] [--zone ZONE|--zone-id ID] [--dry-run] [--project-key KEY]",
337
337
  description: "Clone a recipe graph/settings/payload into a separate experiment recipe.",
338
338
  examples: [
339
339
  "dss recipe clone compute_orders --name compute_orders_opt --output orders_opt --copy-output-settings --dry-run",
@@ -384,7 +384,7 @@ export const recipeCommands = {
384
384
  await c.recipes.update(a[0], data, pk);
385
385
  return { updated: a[0], resource: "recipe", };
386
386
  },
387
- usage: "dss recipe update <name> [--data '{...}' | --data-file PATH | --stdin] [--dry-run] [--project-key KEY]",
387
+ usage: "dss recipe update <name> (--data '{...}' | --data-file PATH | --stdin) [--dry-run] [--project-key KEY]",
388
388
  description: "Update recipe settings via JSON merge. Recipe definition fields must be nested under a top-level recipe key.",
389
389
  examples: [
390
390
  "dss recipe update compute_orders --data-file settings.json --dry-run",
@@ -180,7 +180,7 @@ export const scenarioCommands = {
180
180
  unchangedPaths: result.unchangedPaths,
181
181
  };
182
182
  },
183
- usage: "dss scenario update <id> [--data '{...}' | --data-file PATH | --stdin] [--dry-run] [--project-key KEY]",
183
+ usage: "dss scenario update <id> (--data '{...}' | --data-file PATH | --stdin) [--dry-run] [--project-key KEY]",
184
184
  description: "Update scenario settings via JSON merge; edit step-based scenario steps at params.steps, not rawParams.params.steps.",
185
185
  examples: [
186
186
  'dss scenario update my_scenario --data \'{"params":{"steps":[]}}\' --dry-run',
@@ -3,7 +3,7 @@ import { mkdir, writeFile, } from "node:fs/promises";
3
3
  import { dirname, resolve, } from "node:path";
4
4
  import { readStdinText, stripUtf8Bom, } from "../coerce.js";
5
5
  import { UsageError, } from "../usage.js";
6
- const SQL_QUERY_USAGE = "dss sql query [SQL | --sql QUERY | --sql-file PATH | --sql - | --stdin] (--connection CONN | --dataset FULL_NAME) [--database DB] [--output PATH|--output-file PATH] [--preview N] [--request-timeout MS] [--project-key KEY]";
6
+ const SQL_QUERY_USAGE = "dss sql query (SQL | --sql QUERY | --sql-file PATH | --sql - | --stdin) (--connection CONN | --dataset FULL_NAME) [--database DB] [--output PATH|--output-file PATH] [--preview N] [--request-timeout MS] [--project-key KEY]";
7
7
  const DEFAULT_SQL_PREVIEW_ROWS = 5;
8
8
  /**
9
9
  * Parse `--preview N` into a non-negative row count. Rejects non-integers,
@@ -39,7 +39,7 @@ export const variableCommands = {
39
39
  projectKey: pk,
40
40
  });
41
41
  },
42
- usage: `dss variable set --standard '{"k":"v"}' --local '{"k":"v"}' [--replace] [--dry-run] [--project-key KEY]`,
42
+ usage: `dss variable set (--standard '{"k":"v"}'|--local '{"k":"v"}') [--replace] [--dry-run] [--project-key KEY]`,
43
43
  description: "Set project variables via JSON merge (or full replace with --replace).",
44
44
  examples: [
45
45
  'dss variable set --standard \'{"env":"staging"}\' --dry-run',
@@ -97,7 +97,7 @@ export const wikiCommands = {
97
97
  projectKey: f["project-key"],
98
98
  });
99
99
  },
100
- usage: "dss wiki update <id-or-name> [--name NAME] [--content TEXT|--file PATH|--data JSON|--data-file PATH|--stdin] [--dry-run] [--project-key KEY]",
100
+ usage: "dss wiki update <id-or-name> (--name NAME | --content TEXT|--file PATH|--data JSON|--data-file PATH|--stdin) [--dry-run] [--project-key KEY]",
101
101
  description: "Update wiki article metadata/body via merge.",
102
102
  examples: ["dss wiki update ARTICLE_ID --content '# Updated' --dry-run",],
103
103
  },
@@ -22,6 +22,7 @@ export interface CommandExitCodes {
22
22
  error: 2;
23
23
  transient: 3;
24
24
  longRunningFailure?: 4;
25
+ assertionFailure?: 4;
25
26
  }
26
27
  export type CommandFlagMetadata = {
27
28
  name: string;
@@ -29,6 +30,7 @@ export type CommandFlagMetadata = {
29
30
  valueType?: string;
30
31
  enumValues?: string[];
31
32
  aliases?: string[];
33
+ allowEmptyValue?: boolean;
32
34
  };
33
35
  export interface CommandStructuredExample {
34
36
  shell: string;
@@ -78,11 +80,12 @@ export interface CommandRegistryEntry {
78
80
  cleanupHint?: string;
79
81
  agentContractVersion: number;
80
82
  }
81
- export declare const COMMANDS_USAGE = "dss commands run [--json]";
82
- export declare const AGENT_CONTRACT_USAGE = "dss agent contract";
83
+ export declare const COMMANDS_USAGE = "dss commands run [--fields PATHS] [--json]";
84
+ export declare const AGENT_CONTRACT_COMMAND = "dss agent contract";
85
+ export declare const AGENT_CONTRACT_USAGE = "dss agent contract [--fields PATHS] [--json]";
83
86
  export declare const CLEANUP_USAGE = "dss cleanup --file PATH [--dry-run|--apply] [--continue-on-error]";
84
87
  export declare function isAllowedCleanupAction(resource: string, action: string): boolean;
85
- export declare function buildCommandSchemas(resource: string, action: string, flags: CommandFlagMetadata[], positionals: string[], requiredFlags: string[], requiredOneOf: CommandFlagChoice[], payloadSchema: CommandPayloadSchema | undefined, outputShape: CommandOutputShape): CommandAgentSchemas;
88
+ export declare function buildCommandSchemas(resource: string, action: string, flags: CommandFlagMetadata[], requiredFlags: string[], requiredOneOf: CommandFlagChoice[], payloadSchema: CommandPayloadSchema | undefined, outputShape: CommandOutputShape, usage: string): CommandAgentSchemas;
86
89
  export declare function inferRequiresProject(resource: string, _action: string, usage: string): boolean;
87
90
  export declare function inferInputContract(usage: string): CommandInputContract;
88
91
  export declare function supportsCleanupLedger(resource: string, action: string): boolean;
@@ -99,6 +102,12 @@ export declare function commandPlanShape(resource: string, action: string, args:
99
102
  wait?: unknown;
100
103
  };
101
104
  export declare function buildMutationPlan(resource: string, action: string, meta: CommandMeta, args: string[], flags: Record<string, string | boolean>): Record<string, unknown>;
105
+ /**
106
+ * Batch plans may surface exit 4: any dispatched step can be a long-running
107
+ * lifecycle command whose remote work fails, or a synchronous assertion
108
+ * mismatch (`recipe assert-unchanged`). Batch itself stays async "none".
109
+ */
110
+ export declare const BATCH_PLAN_EXIT_CODES: Record<string, number>;
102
111
  export declare const BATCH_USAGE = "dss batch (--data JSON|--data-file PATH|--stdin) [--continue-on-error] [--dry-run]";
103
112
  export declare const BATCH_HINT = "Pass a JSON array of argv arrays, e.g. [[\"dataset\",\"list\"],[\"recipe\",\"update\",\"r\",\"--data-file\",\"p.json\"]].";
104
113
  export declare const BATCH_EXAMPLE_PAYLOAD: string[][];