@ifc-lite/cli 0.38.2 → 0.40.0

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 (87) hide show
  1. package/README.md +25 -0
  2. package/dist/commands/delivery-checks.d.ts +4 -1
  3. package/dist/commands/delivery-checks.d.ts.map +1 -1
  4. package/dist/commands/delivery-checks.js +18 -5
  5. package/dist/commands/delivery-checks.js.map +1 -1
  6. package/dist/commands/flow-ai.d.ts +20 -0
  7. package/dist/commands/flow-ai.d.ts.map +1 -0
  8. package/dist/commands/flow-ai.js +35 -0
  9. package/dist/commands/flow-ai.js.map +1 -0
  10. package/dist/commands/flow-bcf.d.ts +3 -0
  11. package/dist/commands/flow-bcf.d.ts.map +1 -0
  12. package/dist/commands/flow-bcf.js +87 -0
  13. package/dist/commands/flow-bcf.js.map +1 -0
  14. package/dist/commands/flow-host.d.ts +5 -1
  15. package/dist/commands/flow-host.d.ts.map +1 -1
  16. package/dist/commands/flow-host.js +9 -1
  17. package/dist/commands/flow-host.js.map +1 -1
  18. package/dist/commands/flow-review.d.ts +28 -0
  19. package/dist/commands/flow-review.d.ts.map +1 -0
  20. package/dist/commands/flow-review.js +154 -0
  21. package/dist/commands/flow-review.js.map +1 -0
  22. package/dist/commands/flow-tracking.d.ts +4 -0
  23. package/dist/commands/flow-tracking.d.ts.map +1 -1
  24. package/dist/commands/flow-tracking.js +25 -4
  25. package/dist/commands/flow-tracking.js.map +1 -1
  26. package/dist/commands/flow.d.ts.map +1 -1
  27. package/dist/commands/flow.js +129 -27
  28. package/dist/commands/flow.js.map +1 -1
  29. package/dist/commands/ids-audit-lint.d.ts +3 -0
  30. package/dist/commands/ids-audit-lint.d.ts.map +1 -0
  31. package/dist/commands/ids-audit-lint.js +129 -0
  32. package/dist/commands/ids-audit-lint.js.map +1 -0
  33. package/dist/commands/ids-diff.d.ts +2 -0
  34. package/dist/commands/ids-diff.d.ts.map +1 -0
  35. package/dist/commands/ids-diff.js +61 -0
  36. package/dist/commands/ids-diff.js.map +1 -0
  37. package/dist/commands/ids-explain.d.ts +2 -0
  38. package/dist/commands/ids-explain.d.ts.map +1 -0
  39. package/dist/commands/ids-explain.js +53 -0
  40. package/dist/commands/ids-explain.js.map +1 -0
  41. package/dist/commands/ids-fmt.d.ts +2 -0
  42. package/dist/commands/ids-fmt.d.ts.map +1 -0
  43. package/dist/commands/ids-fmt.js +54 -0
  44. package/dist/commands/ids-fmt.js.map +1 -0
  45. package/dist/commands/ids-subcommand.d.ts +31 -0
  46. package/dist/commands/ids-subcommand.d.ts.map +1 -0
  47. package/dist/commands/ids-subcommand.js +101 -0
  48. package/dist/commands/ids-subcommand.js.map +1 -0
  49. package/dist/commands/ids.d.ts.map +1 -1
  50. package/dist/commands/ids.js +25 -2
  51. package/dist/commands/ids.js.map +1 -1
  52. package/dist/commands/info.js +11 -11
  53. package/dist/commands/info.js.map +1 -1
  54. package/dist/commands/semantic-file.d.ts +2 -0
  55. package/dist/commands/semantic-file.d.ts.map +1 -0
  56. package/dist/commands/semantic-file.js +24 -0
  57. package/dist/commands/semantic-file.js.map +1 -0
  58. package/dist/commands/semantic-serve.d.ts +2 -0
  59. package/dist/commands/semantic-serve.d.ts.map +1 -0
  60. package/dist/commands/semantic-serve.js +48 -0
  61. package/dist/commands/semantic-serve.js.map +1 -0
  62. package/dist/commands/semantic.d.ts +3 -0
  63. package/dist/commands/semantic.d.ts.map +1 -0
  64. package/dist/commands/semantic.js +130 -0
  65. package/dist/commands/semantic.js.map +1 -0
  66. package/dist/geometry-report.d.ts.map +1 -1
  67. package/dist/geometry-report.js +2 -1
  68. package/dist/geometry-report.js.map +1 -1
  69. package/dist/headless-backend-store-authoring.d.ts +4 -4
  70. package/dist/headless-backend-store-authoring.d.ts.map +1 -1
  71. package/dist/headless-backend-store-authoring.js +7 -5
  72. package/dist/headless-backend-store-authoring.js.map +1 -1
  73. package/dist/headless-backend.d.ts.map +1 -1
  74. package/dist/headless-backend.js +1 -57
  75. package/dist/headless-backend.js.map +1 -1
  76. package/dist/help.d.ts.map +1 -1
  77. package/dist/help.js +14 -2
  78. package/dist/help.js.map +1 -1
  79. package/dist/index.js +4 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/out-flag-commands.js +1 -1
  82. package/dist/out-flag-commands.js.map +1 -1
  83. package/dist/output.d.ts +11 -0
  84. package/dist/output.d.ts.map +1 -1
  85. package/dist/output.js +13 -0
  86. package/dist/output.js.map +1 -1
  87. package/package.json +26 -22
@@ -1 +1 @@
1
- {"version":3,"file":"flow-tracking.d.ts","sourceRoot":"","sources":["../../src/commands/flow-tracking.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA6C,KAAK,UAAU,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEtI,qBAAa,iBAAkB,YAAW,aAAa;IAMzC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAL5D,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,KAAK,CAAS;IACtB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAET,IAAI,EAAE,MAAM,EAAW,QAAQ,EAAE,MAAM;WAE/C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwB7E,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAK3B,IAAI,IAAI,SAAS,MAAM,EAAE;IAIzB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMjC,4EAA4E;IACtE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;CAOhC;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D"}
1
+ {"version":3,"file":"flow-tracking.d.ts","sourceRoot":"","sources":["../../src/commands/flow-tracking.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAqD,KAAK,UAAU,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE9I,qBAAa,iBAAkB,YAAW,aAAa;IAQzC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAP5D,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAET,IAAI,EAAE,MAAM,EAAW,QAAQ,EAAE,MAAM;WAE/C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6B7E,oGAAoG;IACpG,WAAW,IAAI,MAAM;IAMrB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAK3B,IAAI,IAAI,SAAS,MAAM,EAAE;IAIzB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMjC,4EAA4E;IACtE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;CAShC;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D"}
@@ -12,30 +12,43 @@
12
12
  * and a tracked element that is gone is re-created with a warning. The
13
13
  * viewer, which keeps one model loaded, applies the strict pin check.
14
14
  */
15
- import { readFile, writeFile } from 'node:fs/promises';
16
- import { TRACKING_SIDECAR_VERSION, trackedSetsFrom } from '@ifc-lite/flow';
15
+ import { readFile, writeFile, realpath } from 'node:fs/promises';
16
+ import { basename, dirname, join, resolve } from 'node:path';
17
+ import { digest, TRACKING_SIDECAR_VERSION, trackedSetsFrom } from '@ifc-lite/flow';
17
18
  export class FileTrackingStore {
18
19
  path;
19
20
  pinnedTo;
20
21
  sets = {};
21
22
  dirty = false;
23
+ exists = false;
24
+ writePath;
22
25
  /** Pin recorded in the file that was loaded, when any. */
23
26
  loadedPin;
24
27
  constructor(path, pinnedTo) {
25
28
  this.path = path;
26
29
  this.pinnedTo = pinnedTo;
30
+ this.writePath = resolve(path);
27
31
  }
28
32
  static async open(path, pinnedTo) {
29
33
  const store = new FileTrackingStore(path, pinnedTo);
34
+ try {
35
+ store.writePath = await realpath(store.writePath);
36
+ }
37
+ catch (error) {
38
+ if (error.code !== 'ENOENT')
39
+ throw error;
40
+ store.writePath = join(await realpath(dirname(store.writePath)), basename(store.writePath));
41
+ }
30
42
  let text;
31
43
  try {
32
- text = await readFile(path, 'utf-8');
44
+ text = await readFile(store.writePath, 'utf-8');
33
45
  }
34
46
  catch (err) {
35
47
  if (err.code !== 'ENOENT')
36
48
  throw err;
37
49
  }
38
50
  if (text !== undefined) {
51
+ store.exists = true;
39
52
  const parsed = JSON.parse(text);
40
53
  if (parsed.version !== TRACKING_SIDECAR_VERSION)
41
54
  throw new Error(`${path}: unsupported tracking sidecar version ${String(parsed.version)}`);
@@ -53,6 +66,12 @@ export class FileTrackingStore {
53
66
  }
54
67
  return store;
55
68
  }
69
+ /** Bind review to the effective sidecar and its canonical destination, including planned writes. */
70
+ fingerprint() {
71
+ const sidecar = !this.exists && !this.dirty ? null : { version: TRACKING_SIDECAR_VERSION,
72
+ pinnedTo: this.dirty ? this.pinnedTo : this.loadedPin ?? this.pinnedTo, sets: this.sets };
73
+ return digest({ path: this.writePath, sidecar });
74
+ }
56
75
  load(trackingKey) {
57
76
  return this.sets[trackingKey];
58
77
  }
@@ -74,8 +93,10 @@ export class FileTrackingStore {
74
93
  if (!this.dirty)
75
94
  return false;
76
95
  const sidecar = { version: TRACKING_SIDECAR_VERSION, pinnedTo: this.pinnedTo, sets: this.sets };
77
- await writeFile(this.path, `${JSON.stringify(sidecar, null, 2)}\n`, 'utf-8');
96
+ await writeFile(this.writePath, `${JSON.stringify(sidecar, null, 2)}\n`, 'utf-8');
78
97
  this.dirty = false;
98
+ this.exists = true;
99
+ this.loadedPin = this.pinnedTo;
79
100
  return true;
80
101
  }
81
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"flow-tracking.js","sourceRoot":"","sources":["../../src/commands/flow-tracking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow-tracking.js","sourceRoot":"","sources":["../../src/commands/flow-tracking.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/commands/flow.ts"],"names":[],"mappings":"AAqJA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsI/D"}
1
+ {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/commands/flow.ts"],"names":[],"mappings":"AA8KA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuL/D"}
@@ -8,10 +8,17 @@
8
8
  * flow run <graph.flow.json> <model.ifc> [--input k=v]... [--out F] [--tracking F|--no-tracking] [--json]
9
9
  * flow describe <graph.flow.json> [--json] inputs/outputs schema (the Hops `/io`)
10
10
  * flow validate <graph.flow.json> [--json] document + node availability report
11
+ * flow review <checkpoint.json> [--approve D | --reject] review a paused run (see `flow-review.ts`)
12
+ * flow resume <graph.flow.json> <model.ifc> --checkpoint F resume a reviewed run
13
+ *
14
+ * AI nodes (`@ifc-lite/flow-nodes/ai`) run only when the environment names a
15
+ * provider (`flow-ai.ts`), spend one root budget per run (`--ai-max-requests`,
16
+ * `--ai-max-output-tokens`), and pause the run for review: `run` then needs
17
+ * `--checkpoint F` and exits 3.
11
18
  *
12
19
  * The CLI is a trusted caller running a local file, so no capability grants
13
20
  * are applied to model/viewer/export capabilities; the graph's declared
14
- * `capabilities` are still reported. `network.fetch:<host>` and
21
+ * `capabilities` are still reported. `network.ai`, `network.fetch:<host>` and
15
22
  * `secret.read:<NAME>` are the exception: they are ALWAYS checked against
16
23
  * the graph's own declared capabilities regardless of trust level (see
17
24
  * `FlowHost.networkGrants`'s doc comment in `@ifc-lite/flow-nodes`) — a
@@ -34,14 +41,37 @@
34
41
  */
35
42
  import { createHash } from 'node:crypto';
36
43
  import { readFile, stat, writeFile } from 'node:fs/promises';
37
- import { checkAvailability, declaredInputKeys, describeFlowIO, parseFlowDocument, resolveDeclaredParam, runFlow, validateFlowWiring, } from '@ifc-lite/flow';
44
+ import { checkAvailability, declaredInputKeys, describeFlowIO, parseFlowDocument, resolveDeclaredParam, runFlow, validateFlowWiring } from '@ifc-lite/flow';
45
+ import { resumeOutputs } from '@ifc-lite/flow/checkpoint';
38
46
  import { parseCapabilities } from '@ifc-lite/extensions';
39
47
  import { buildRedactionMap, createStandardRegistry, headlessFeatures, interpolateSecrets, redactDeep, resolveSecretValues, usableSecretNames, validateSecretReferences, } from '@ifc-lite/flow-nodes';
48
+ import { aiNodes, AI_FEATURE, FLOW_AI_BUDGET } from '@ifc-lite/flow-nodes/ai';
49
+ import { createRootBudget, restoreRootBudget } from '@ifc-lite/ai';
40
50
  import { createHeadlessContext } from '../loader.js';
51
+ import { createCliAiService } from './flow-ai.js';
52
+ import { flowAiConfig } from '@ifc-lite/ai/chat-completions';
53
+ import { sourceDigestOf } from '@ifc-lite/flow/checkpoint-file';
54
+ import { checkDistinctDestinations, checkPauseDestination, checkpointNodes, claimForResume, failResume, finishResume, PAUSED_FOR_REVIEW, preparePause, reportPause, reviewCommand, savePause } from './flow-review.js';
41
55
  import { createCliFlowSession } from './flow-host.js';
56
+ import { flowBcfCommand } from './flow-bcf.js';
42
57
  import { fatal, getAllFlags, hasFlag, printJson } from '../output.js';
43
58
  import { defaultTrackingPath, FileTrackingStore } from './flow-tracking.js';
44
- const USAGE = 'Usage: ifc-lite flow <run|describe|validate> <graph.flow.json> [<model.ifc>] [--input k=v]... [--out F] [--tracking F | --no-tracking] [--json]';
59
+ const USAGE = 'Usage: ifc-lite flow <run|resume|describe|validate|review> <graph.flow.json> [<model.ifc>] [--input k=v]... [--out F] [--tracking F | --no-tracking] [--checkpoint F] [--json]; or ifc-lite flow bcf <list|check|reconcile|confirm-absent>';
60
+ /** The standard nodes plus the AI nodes, so an AI graph reports what it lacks instead of an unknown type. */
61
+ function cliRegistry() {
62
+ return createStandardRegistry().registerAll(aiNodes);
63
+ }
64
+ function cliFeatures() {
65
+ const features = headlessFeatures(usableSecretNames(process.env));
66
+ return flowAiConfig(process.env) ? { ...features, backend: new Set([...features.backend, AI_FEATURE]) } : features;
67
+ }
68
+ function budgetLimit(args, flag, fallback) {
69
+ const raw = requireFlagValue(args, flag);
70
+ const value = raw === undefined ? fallback : Number(raw);
71
+ if (!Number.isSafeInteger(value) || value < 1)
72
+ fatal(`${flag} must be a positive whole number`);
73
+ return value;
74
+ }
45
75
  async function loadDocument(path) {
46
76
  if (!path)
47
77
  fatal(USAGE);
@@ -59,7 +89,7 @@ async function loadDocument(path) {
59
89
  fatal(err.message);
60
90
  }
61
91
  }
62
- const VALUE_FLAGS = new Set(['--input', '--out', '--tracking']);
92
+ const VALUE_FLAGS = new Set(['--input', '--out', '--tracking', '--checkpoint', '--next-checkpoint', '--approve', '--ai-max-requests', '--ai-max-output-tokens']);
63
93
  /** Arguments that are neither flags nor the value of a value-taking flag. */
64
94
  function positionalArgs(args) {
65
95
  const out = [];
@@ -130,9 +160,13 @@ function summarize(result) {
130
160
  }
131
161
  export async function flowCommand(args) {
132
162
  const sub = args[0];
163
+ if (sub === 'bcf')
164
+ return flowBcfCommand(args.slice(1));
133
165
  const positional = positionalArgs(args.slice(1));
134
166
  const json = hasFlag(args, '--json');
135
- const registry = createStandardRegistry();
167
+ const registry = cliRegistry();
168
+ if (sub === 'review')
169
+ return reviewCommand(args, positional[0], json, requireFlagValue(args, '--approve'));
136
170
  if (sub === 'describe') {
137
171
  const doc = await loadDocument(positional[0]);
138
172
  const info = describeFlowIO(doc, registry);
@@ -155,7 +189,7 @@ export async function flowCommand(args) {
155
189
  // output naming a port no node has would otherwise validate clean and
156
190
  // then produce nothing at run time.
157
191
  const wiring = validateFlowWiring(doc, registry);
158
- const availability = checkAvailability(doc, registry, headlessFeatures(usableSecretNames(process.env)));
192
+ const availability = checkAvailability(doc, registry, cliFeatures());
159
193
  const problems = availability.filter((a) => a.status === 'unavailable' || a.status === 'unknown');
160
194
  // The report goes out in either format FIRST, then the exit code — a
161
195
  // `--json` run that printed `ok: false` and returned 0 let CI read an
@@ -177,12 +211,20 @@ export async function flowCommand(args) {
177
211
  }
178
212
  return;
179
213
  }
180
- if (sub !== 'run')
214
+ if (sub !== 'run' && sub !== 'resume')
181
215
  fatal(USAGE);
182
216
  const [graphPath, modelPath] = positional;
183
217
  if (!modelPath)
184
218
  fatal(USAGE);
185
219
  const doc = await loadDocument(graphPath);
220
+ const checkpointPath = requireFlagValue(args, '--checkpoint');
221
+ // Refuse malformed arguments before consuming a reviewed checkpoint.
222
+ const out = requireFlagValue(args, '--out');
223
+ const trackingPath = requireFlagValue(args, '--tracking') ?? defaultTrackingPath(graphPath);
224
+ const requestedBudget = { maxRequests: budgetLimit(args, '--ai-max-requests', FLOW_AI_BUDGET.maxRequests),
225
+ maxOutputTokens: budgetLimit(args, '--ai-max-output-tokens', FLOW_AI_BUDGET.maxOutputTokens) };
226
+ if (sub === 'resume' && !checkpointPath)
227
+ fatal('flow resume needs --checkpoint <file>');
186
228
  // Capabilities first: `declaredSecrets` reads the all-or-nothing parse, so
187
229
  // with one malformed capability every secret would be reported undeclared
188
230
  // instead of the malformed capability itself (#5446 review).
@@ -198,50 +240,106 @@ export async function flowCommand(args) {
198
240
  process.stderr.write(` error secrets: ${e.message}\n`);
199
241
  fatal(`${secretErrors.length} secret reference problem(s); see above`);
200
242
  }
201
- const unavailable = checkAvailability(doc, registry, headlessFeatures(usableSecretNames(process.env)))
202
- .filter((node) => node.status === 'unknown' || node.status === 'unavailable');
243
+ const inputs = parseInputs(getAllFlags(args, '--input'), doc, registry);
244
+ // A resume's restored nodes are not executed again, so they need no host
245
+ // service: replaying a reviewed AI proposal needs no provider.
246
+ const restored = new Set(sub === 'resume' ? await checkpointNodes(checkpointPath) : []);
247
+ const unavailable = checkAvailability(doc, registry, cliFeatures())
248
+ .filter((node) => !restored.has(node.nodeId) && (node.status === 'unknown' || node.status === 'unavailable'));
203
249
  if (unavailable.length)
204
250
  fatal(`Flow cannot run on this host: ${unavailable.map((node) => `${node.nodeId}: ${node.reasons.join('; ')}`).join(' | ')}`);
251
+ const reviewsAhead = doc.nodes.some((n) => registry.get(n.type)?.review && !restored.has(n.id));
252
+ const nextCheckpoint = sub === 'resume' ? requireFlagValue(args, '--next-checkpoint') : checkpointPath;
253
+ if (reviewsAhead && !nextCheckpoint) {
254
+ fatal(sub === 'resume' ? 'this graph pauses for review again after the checkpoint; pass --next-checkpoint <file>' : 'this graph pauses for review; pass --checkpoint <file> to save the proposal');
255
+ }
256
+ if (reviewsAhead && nextCheckpoint) {
257
+ try {
258
+ await checkPauseDestination(nextCheckpoint);
259
+ }
260
+ catch (error) {
261
+ fatal(error.message);
262
+ }
263
+ }
264
+ const destinations = [checkpointPath, sub === 'resume' ? nextCheckpoint : undefined, out, hasFlag(args, '--no-tracking') ? undefined : trackingPath].filter((path) => path !== undefined);
265
+ try {
266
+ await checkDistinctDestinations(destinations);
267
+ }
268
+ catch (error) {
269
+ fatal(error.message);
270
+ }
205
271
  const secretValues = resolveSecretValues(doc, process.env);
206
272
  const redaction = buildRedactionMap(secretValues);
207
273
  const runDoc = interpolateSecrets(doc, secretValues);
208
- // The host follows the model the graph works on: `model.openFromSource`
209
- // can replace the command-line model mid-run (see `flow-host.ts`).
210
- const session = createCliFlowSession(await createHeadlessContext(modelPath), capsResult.value);
211
- const host = session.host;
274
+ const modelBytes = await readFile(modelPath);
212
275
  let tracking;
213
- const trackingPath = requireFlagValue(args, '--tracking') ?? defaultTrackingPath(graphPath);
214
276
  // An existing sidecar is opened even when no node is tracked any more:
215
277
  // that is how a set whose node was deleted gets removed from the model.
216
278
  const wantsTracking = doc.nodes.some((n) => registry.get(n.type)?.tracked) || (await stat(trackingPath).then(() => true, () => false));
217
279
  if (!hasFlag(args, '--no-tracking') && wantsTracking) {
218
- const pin = `file:${createHash('sha256').update(await readFile(modelPath)).digest('hex')}`;
280
+ const pin = `file:${createHash('sha256').update(modelBytes).digest('hex')}`;
219
281
  tracking = await FileTrackingStore.open(trackingPath, pin);
220
282
  if (tracking.loadedPin !== undefined && tracking.loadedPin !== pin) {
221
283
  process.stderr.write(` warn tracking sidecar ${tracking.path} was written against another model state; tracked elements that are missing will be re-created\n`);
222
284
  }
223
285
  }
286
+ // Bind approval to the exact execution graph, including resolved secret parameters.
287
+ const aiAhead = doc.nodes.some(n => !restored.has(n.id) && registry.get(n.type)?.requires?.backend?.includes(AI_FEATURE));
288
+ const resume = sub === 'resume' ? await claimForResume(checkpointPath, runDoc, inputs, sourceDigestOf(modelBytes, tracking?.fingerprint()), registry, aiAhead) : undefined;
289
+ // The host follows the model the graph works on: `model.openFromSource`
290
+ // can replace the command-line model mid-run (see `flow-host.ts`).
291
+ const aiConfig = flowAiConfig(process.env);
292
+ const budget = restoreRootBudget(resume?.checkpoint.budget) ?? createRootBudget(requestedBudget);
293
+ const initialModel = await createHeadlessContext(modelPath);
294
+ const session = createCliFlowSession(initialModel, capsResult.value, aiConfig ? createCliAiService(aiConfig, budget) : undefined, {
295
+ secrets: [...secretValues.values(), ...(aiConfig ? [aiConfig.apiKey] : [])],
296
+ });
297
+ const host = session.host;
224
298
  const result = await runFlow(runDoc, {
225
299
  host,
226
300
  registry,
227
301
  // `--input` overrides are NOT scanned for `{{secret:NAME}}` — a secret
228
302
  // must be authored into the graph's own node params, not passed at the
229
303
  // command line, where it would land in shell history / process args.
230
- inputs: parseInputs(getAllFlags(args, '--input'), doc, registry),
231
- features: headlessFeatures(usableSecretNames(process.env)),
304
+ inputs,
305
+ features: cliFeatures(),
306
+ ...(resume ? { resume: resumeOutputs(resume.checkpoint) } : {}),
232
307
  modelRevisions: { [host.defaultModelId ?? 'model']: 0 },
233
308
  tracking,
234
309
  });
235
- const trackingWritten = tracking ? await tracking.flush() : false;
236
- // A failed run can still have written through earlier nodes. Exporting
237
- // that half-applied state would hand the next step a model no graph run
238
- // ever produced, under a green-looking file on disk.
239
- const out = requireFlagValue(args, '--out');
310
+ const paused = result.ok && result.review.length > 0;
311
+ const activeModelChanged = session.active() !== initialModel;
240
312
  const wrote = out !== undefined && result.ok;
241
- if (wrote) {
242
- const { bim, store } = session.active();
243
- const content = bim.export.ifc(null, { schema: store.schemaVersion ?? 'IFC4', includeMutations: true });
244
- await writeFile(out, typeof content === 'string' ? content : Buffer.from(content));
313
+ let trackingWritten = false;
314
+ let pause;
315
+ try {
316
+ if (paused && activeModelChanged && out === undefined)
317
+ throw new Error('the run opened a different model before pausing for review; pass --out so the resume starts from that model');
318
+ if (paused && result.writes > 0 && out === undefined)
319
+ throw new Error('the run wrote to the model before pausing for review; pass --out so the resume can start from that model');
320
+ if (paused && !nextCheckpoint)
321
+ throw new Error(`the run paused for review at ${result.review.join(', ')} with no checkpoint file to save it to`);
322
+ let written;
323
+ if (wrote) {
324
+ const { bim, store } = session.active();
325
+ const content = bim.export.ifc(null, { schema: store.schemaVersion ?? 'IFC4', includeMutations: true });
326
+ written = typeof content === 'string' ? content : Buffer.from(content);
327
+ }
328
+ // Refuse secrets in every restored output before either durable side effect.
329
+ const proposal = paused ? preparePause({ registry, doc: runDoc, result, inputs, sourceDigest: sourceDigestOf(written ?? modelBytes, tracking?.fingerprint()), budget: { ...budget } }, redaction) : undefined;
330
+ if (written !== undefined)
331
+ await writeFile(out, written);
332
+ trackingWritten = tracking ? await tracking.flush() : false;
333
+ if (proposal)
334
+ pause = await savePause(nextCheckpoint, proposal);
335
+ if (resume)
336
+ await finishResume(resume, result);
337
+ }
338
+ catch (error) {
339
+ const message = redactDeep(error.message, redaction);
340
+ if (resume)
341
+ await failResume(resume, message);
342
+ fatal(message);
245
343
  }
246
344
  // Redaction runs at the OUTER boundary, right before anything leaves this
247
345
  // process — on the whole summary object (`--json` output included), not
@@ -250,8 +348,10 @@ export async function flowCommand(args) {
250
348
  // caught here too, not only at the point it was substituted in.
251
349
  const summary = redactDeep(summarize(result), redaction);
252
350
  if (json)
253
- printJson({ ...summary, out: wrote ? out : null, tracking: trackingWritten ? tracking.path : null });
351
+ printJson({ ...summary, out: wrote ? out : null, tracking: trackingWritten ? tracking.path : null, ...(pause ? { checkpoint: { path: nextCheckpoint, id: pause.id, proposalDigest: pause.proposalDigest } } : {}) });
254
352
  else {
353
+ if (pause)
354
+ reportPause(pause, nextCheckpoint);
255
355
  process.stdout.write(`${result.ok ? 'ok' : 'FAILED'}: ${Object.entries(summary.nodes).map(([k, v]) => `${v} ${k}`).join(', ')}\n`);
256
356
  // `summary` was already redacted (deep) above; `redactDeep` walks Maps
257
357
  // too, so `o.data` here never carries a raw secret value.
@@ -273,5 +373,7 @@ export async function flowCommand(args) {
273
373
  }
274
374
  if (!result.ok)
275
375
  process.exit(1);
376
+ if (pause)
377
+ process.exit(PAUSED_FOR_REVIEW);
276
378
  }
277
379
  //# sourceMappingURL=flow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/commands/flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/commands/flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function idsAuditCommand(args: string[]): Promise<void>;
2
+ export declare function idsLintCommand(args: string[]): Promise<void>;
3
+ //# sourceMappingURL=ids-audit-lint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids-audit-lint.d.ts","sourceRoot":"","sources":["../../src/commands/ids-audit-lint.ts"],"names":[],"mappings":"AA+CA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBnE;AA4DD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqClE"}
@@ -0,0 +1,129 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * ifc-lite ids audit <rules.ids> [--json]
6
+ * ifc-lite ids lint <rules.ids> [--json] [--rules C,…] [--severity C=level,…] [--fail-on error|warning|info|never]
7
+ *
8
+ * `audit` answers "is this a valid IDS 1.0 file?" (`@ifc-lite/ids`
9
+ * `auditIDSDocument`). `lint` answers "does it mean what the author
10
+ * intends?" (`@ifc-lite/ids-authoring`'s rule catalogue, the same engine
11
+ * the Studio runs). Exit codes: see `ids-subcommand.ts`.
12
+ */
13
+ import { auditIDSDocument } from '@ifc-lite/ids';
14
+ import { createLintContext, lintDocument, LINT_RULES, nodePath, studioDocumentFromIds, } from '@ifc-lite/ids-authoring';
15
+ import { printJson } from '../output.js';
16
+ import { countLine, EXIT_CLEAN, EXIT_FINDINGS, IdsUsageError, positionals, readIds, readText, rejectUnknownFlags, runIdsSubcommand, tally, } from './ids-subcommand.js';
17
+ const AUDIT_FLAGS = new Set(['--json']);
18
+ function auditLine(issue) {
19
+ const path = issue.path || '(document)';
20
+ const where = issue.line !== undefined ? `${path} (line ${issue.line})` : path;
21
+ return ` ${issue.severity.padEnd(8)}${issue.code.padEnd(36)}${where}\n ${issue.message}\n`;
22
+ }
23
+ export async function idsAuditCommand(args) {
24
+ await runIdsSubcommand(async () => {
25
+ rejectUnknownFlags(args, AUDIT_FLAGS, new Set());
26
+ const [file, extra] = positionals(args, new Set());
27
+ if (!file || extra)
28
+ throw new IdsUsageError('usage: ifc-lite ids audit <rules.ids> [--json]');
29
+ const report = await auditIDSDocument(await readText(file));
30
+ const counts = tally(report.issues);
31
+ const exit = counts.error > 0 ? EXIT_FINDINGS : EXIT_CLEAN;
32
+ if (args.includes('--json')) {
33
+ printJson({ file, status: report.status, counts, issues: report.issues });
34
+ return exit;
35
+ }
36
+ process.stdout.write(`\n IDS audit: ${file}\n\n`);
37
+ for (const issue of report.issues)
38
+ process.stdout.write(auditLine(issue));
39
+ if (report.issues.length > 0)
40
+ process.stdout.write('\n');
41
+ process.stdout.write(` ${countLine(counts)}\n Result: ${exit === EXIT_CLEAN ? 'PASS' : 'FAIL'}\n\n`);
42
+ return exit;
43
+ });
44
+ }
45
+ const LINT_FLAGS = new Set(['--json']);
46
+ const LINT_VALUE_FLAGS = new Set(['--rules', '--severity', '--fail-on', '--model']);
47
+ const SEVERITIES = ['error', 'warning', 'info'];
48
+ const RANK = { error: 0, warning: 1, info: 2 };
49
+ function knownCode(code) {
50
+ if (!LINT_RULES.some((r) => r.code === code))
51
+ throw new IdsUsageError(`unknown lint rule ${code}`);
52
+ return code;
53
+ }
54
+ /** `--severity IDSL-ENT-002=error,IDSL-SPEC-008=off` */
55
+ function parseSeverity(raw) {
56
+ if (raw === undefined)
57
+ return undefined;
58
+ const out = {};
59
+ for (const part of raw.split(',')) {
60
+ const [code, level] = part.split('=');
61
+ if (!level || !(level === 'off' || SEVERITIES.includes(level))) {
62
+ throw new IdsUsageError(`--severity expects CODE=error|warning|info|off, got "${part}"`);
63
+ }
64
+ out[knownCode(code)] = level;
65
+ }
66
+ return out;
67
+ }
68
+ function parseFailOn(raw) {
69
+ if (raw === undefined)
70
+ return 'error';
71
+ if (raw === 'never' || SEVERITIES.includes(raw))
72
+ return raw;
73
+ throw new IdsUsageError(`--fail-on expects error|warning|info|never, got "${raw}"`);
74
+ }
75
+ function flagValue(args, flag) {
76
+ const i = args.indexOf(flag);
77
+ return i === -1 ? undefined : args[i + 1];
78
+ }
79
+ function toRow(doc, d) {
80
+ const specIndex = d.specId ? doc.nodes.specs.findIndex((s) => s.id === d.specId) : -1;
81
+ return {
82
+ code: d.code,
83
+ severity: d.severity,
84
+ path: nodePath(doc, d.nodeId) ?? d.nodeId,
85
+ ...(specIndex >= 0 ? { spec: doc.ids.specifications[specIndex].name } : {}),
86
+ message: d.message,
87
+ fixable: (d.fixes?.length ?? 0) > 0,
88
+ docsUrl: d.docsUrl,
89
+ };
90
+ }
91
+ export async function idsLintCommand(args) {
92
+ await runIdsSubcommand(async () => {
93
+ rejectUnknownFlags(args, LINT_FLAGS, LINT_VALUE_FLAGS);
94
+ if (args.includes('--model')) {
95
+ throw new IdsUsageError('model-aware lint (--model) is not available in this build; it ships with the IDS model loop');
96
+ }
97
+ const [file, extra] = positionals(args, LINT_VALUE_FLAGS);
98
+ if (!file || extra)
99
+ throw new IdsUsageError('usage: ifc-lite ids lint <rules.ids> [--json] [--rules C,…] [--severity C=level,…] [--fail-on level]');
100
+ const rulesFlag = flagValue(args, '--rules');
101
+ const rules = rulesFlag?.split(',').map(knownCode);
102
+ const severity = parseSeverity(flagValue(args, '--severity'));
103
+ const failOn = parseFailOn(flagValue(args, '--fail-on'));
104
+ const doc = studioDocumentFromIds(await readIds(file));
105
+ const result = lintDocument(doc, await createLintContext(), { rules, severity });
106
+ const rows = result.diagnostics
107
+ .map((d) => toRow(doc, d))
108
+ .sort((a, b) => RANK[a.severity] - RANK[b.severity] || a.path.localeCompare(b.path) || a.code.localeCompare(b.code));
109
+ const counts = tally(rows);
110
+ const failing = failOn === 'never' ? false : rows.some((r) => RANK[r.severity] <= RANK[failOn]);
111
+ const exit = failing ? EXIT_FINDINGS : EXIT_CLEAN;
112
+ if (args.includes('--json')) {
113
+ printJson({ file, counts, suppressed: result.suppressed.length, diagnostics: rows });
114
+ return exit;
115
+ }
116
+ process.stdout.write(`\n IDS lint: ${file}\n\n`);
117
+ for (const r of rows) {
118
+ const spec = r.spec !== undefined ? ` "${r.spec}"` : '';
119
+ process.stdout.write(` ${r.severity.padEnd(8)}${r.code.padEnd(15)}${r.path}${spec}\n ${r.message}${r.fixable ? ' [fix available]' : ''}\n`);
120
+ }
121
+ if (rows.length > 0)
122
+ process.stdout.write('\n');
123
+ const fixable = rows.filter((r) => r.fixable).length;
124
+ const suppressed = result.suppressed.length > 0 ? `, ${result.suppressed.length} suppressed` : '';
125
+ process.stdout.write(` ${countLine(counts)} (${fixable} fixable${suppressed})\n Result: ${exit === EXIT_CLEAN ? 'PASS' : 'FAIL'}\n\n`);
126
+ return exit;
127
+ });
128
+ }
129
+ //# sourceMappingURL=ids-audit-lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids-audit-lint.js","sourceRoot":"","sources":["../../src/commands/ids-audit-lint.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAsB,MAAM,eAAe,CAAC;AACrE,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,qBAAqB,GAItB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,GACN,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAExC,SAAS,SAAS,CAAC,KAAoB;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,OAAO,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,iBAAiB,KAAK,CAAC,OAAO,IAAI,CAAC;AACzG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc;IAClD,MAAM,gBAAgB,CAAC,KAAK,IAAI,EAAE;QAChC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,IAAI,KAAK;YAAE,MAAM,IAAI,aAAa,CAAC,gDAAgD,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;QAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,eAAe,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC;QACvG,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AACpF,MAAM,UAAU,GAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACzE,MAAM,IAAI,GAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAE7E,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,MAAM,IAAI,aAAa,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IACnG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wDAAwD;AACxD,SAAS,aAAa,CAAC,GAAuB;IAC5C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,GAAG,GAAyC,EAAE,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,IAAK,UAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACtF,MAAM,IAAI,aAAa,CAAC,wDAAwD,IAAI,GAAG,CAAC,CAAC;QAC3F,CAAC;QACD,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,KAA6B,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,GAAuB;IAC1C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,GAAG,KAAK,OAAO,IAAK,UAAgC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAA6B,CAAC;IAC7G,MAAM,IAAI,aAAa,CAAC,oDAAoD,GAAG,GAAG,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,SAAS,CAAC,IAAuB,EAAE,IAAY;IACtD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC;AAYD,SAAS,KAAK,CAAC,GAAmB,EAAE,CAAa;IAC/C,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;QACzC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QACnC,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,MAAM,gBAAgB,CAAC,KAAK,IAAI,EAAE;QAChC,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,aAAa,CAAC,6FAA6F,CAAC,CAAC;QACzH,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,IAAI,KAAK;YAAE,MAAM,IAAI,aAAa,CAAC,sGAAsG,CAAC,CAAC;QACpJ,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAG,qBAAqB,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,iBAAiB,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvH,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAChG,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;QAElD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,MAAM,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1J,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACrD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK,OAAO,WAAW,UAAU,gBAAgB,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC;QACzI,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function idsDiffCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=ids-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids-diff.d.ts","sourceRoot":"","sources":["../../src/commands/ids-diff.ts"],"names":[],"mappings":"AAkCA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBlE"}