@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.
- package/README.md +25 -0
- package/dist/commands/delivery-checks.d.ts +4 -1
- package/dist/commands/delivery-checks.d.ts.map +1 -1
- package/dist/commands/delivery-checks.js +18 -5
- package/dist/commands/delivery-checks.js.map +1 -1
- package/dist/commands/flow-ai.d.ts +20 -0
- package/dist/commands/flow-ai.d.ts.map +1 -0
- package/dist/commands/flow-ai.js +35 -0
- package/dist/commands/flow-ai.js.map +1 -0
- package/dist/commands/flow-bcf.d.ts +3 -0
- package/dist/commands/flow-bcf.d.ts.map +1 -0
- package/dist/commands/flow-bcf.js +87 -0
- package/dist/commands/flow-bcf.js.map +1 -0
- package/dist/commands/flow-host.d.ts +5 -1
- package/dist/commands/flow-host.d.ts.map +1 -1
- package/dist/commands/flow-host.js +9 -1
- package/dist/commands/flow-host.js.map +1 -1
- package/dist/commands/flow-review.d.ts +28 -0
- package/dist/commands/flow-review.d.ts.map +1 -0
- package/dist/commands/flow-review.js +154 -0
- package/dist/commands/flow-review.js.map +1 -0
- package/dist/commands/flow-tracking.d.ts +4 -0
- package/dist/commands/flow-tracking.d.ts.map +1 -1
- package/dist/commands/flow-tracking.js +25 -4
- package/dist/commands/flow-tracking.js.map +1 -1
- package/dist/commands/flow.d.ts.map +1 -1
- package/dist/commands/flow.js +129 -27
- package/dist/commands/flow.js.map +1 -1
- package/dist/commands/ids-audit-lint.d.ts +3 -0
- package/dist/commands/ids-audit-lint.d.ts.map +1 -0
- package/dist/commands/ids-audit-lint.js +129 -0
- package/dist/commands/ids-audit-lint.js.map +1 -0
- package/dist/commands/ids-diff.d.ts +2 -0
- package/dist/commands/ids-diff.d.ts.map +1 -0
- package/dist/commands/ids-diff.js +61 -0
- package/dist/commands/ids-diff.js.map +1 -0
- package/dist/commands/ids-explain.d.ts +2 -0
- package/dist/commands/ids-explain.d.ts.map +1 -0
- package/dist/commands/ids-explain.js +53 -0
- package/dist/commands/ids-explain.js.map +1 -0
- package/dist/commands/ids-fmt.d.ts +2 -0
- package/dist/commands/ids-fmt.d.ts.map +1 -0
- package/dist/commands/ids-fmt.js +54 -0
- package/dist/commands/ids-fmt.js.map +1 -0
- package/dist/commands/ids-subcommand.d.ts +31 -0
- package/dist/commands/ids-subcommand.d.ts.map +1 -0
- package/dist/commands/ids-subcommand.js +101 -0
- package/dist/commands/ids-subcommand.js.map +1 -0
- package/dist/commands/ids.d.ts.map +1 -1
- package/dist/commands/ids.js +25 -2
- package/dist/commands/ids.js.map +1 -1
- package/dist/commands/info.js +11 -11
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/semantic-file.d.ts +2 -0
- package/dist/commands/semantic-file.d.ts.map +1 -0
- package/dist/commands/semantic-file.js +24 -0
- package/dist/commands/semantic-file.js.map +1 -0
- package/dist/commands/semantic-serve.d.ts +2 -0
- package/dist/commands/semantic-serve.d.ts.map +1 -0
- package/dist/commands/semantic-serve.js +48 -0
- package/dist/commands/semantic-serve.js.map +1 -0
- package/dist/commands/semantic.d.ts +3 -0
- package/dist/commands/semantic.d.ts.map +1 -0
- package/dist/commands/semantic.js +130 -0
- package/dist/commands/semantic.js.map +1 -0
- package/dist/geometry-report.d.ts.map +1 -1
- package/dist/geometry-report.js +2 -1
- package/dist/geometry-report.js.map +1 -1
- package/dist/headless-backend-store-authoring.d.ts +4 -4
- package/dist/headless-backend-store-authoring.d.ts.map +1 -1
- package/dist/headless-backend-store-authoring.js +7 -5
- package/dist/headless-backend-store-authoring.js.map +1 -1
- package/dist/headless-backend.d.ts.map +1 -1
- package/dist/headless-backend.js +1 -57
- package/dist/headless-backend.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +14 -2
- package/dist/help.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/out-flag-commands.js +1 -1
- package/dist/out-flag-commands.js.map +1 -1
- package/dist/output.d.ts +11 -0
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +13 -0
- package/dist/output.js.map +1 -1
- package/package.json +26 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-tracking.d.ts","sourceRoot":"","sources":["../../src/commands/flow-tracking.ts"],"names":[],"mappings":"
|
|
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 {
|
|
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(
|
|
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.
|
|
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":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
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":"
|
|
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"}
|
package/dist/commands/flow.js
CHANGED
|
@@ -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
|
|
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 =
|
|
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,
|
|
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
|
|
202
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
|
231
|
-
features:
|
|
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
|
|
236
|
-
|
|
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
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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 @@
|
|
|
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":"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"}
|
|
@@ -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"}
|