@ifc-lite/mcp 0.22.1 → 0.24.1
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 +82 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +5 -0
- package/dist/context.js.map +1 -1
- package/dist/errors.d.ts +2 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -1
- package/dist/headless-backend-align.d.ts +6 -0
- package/dist/headless-backend-align.d.ts.map +1 -0
- package/dist/headless-backend-align.js +35 -0
- package/dist/headless-backend-align.js.map +1 -0
- package/dist/headless-backend-modelling.d.ts +50 -0
- package/dist/headless-backend-modelling.d.ts.map +1 -0
- package/dist/headless-backend-modelling.js +128 -0
- package/dist/headless-backend-modelling.js.map +1 -0
- package/dist/headless-backend-room.d.ts +8 -0
- package/dist/headless-backend-room.d.ts.map +1 -0
- package/dist/headless-backend-room.js +24 -0
- package/dist/headless-backend-room.js.map +1 -0
- package/dist/headless-backend-store-stubs.d.ts +5 -4
- package/dist/headless-backend-store-stubs.d.ts.map +1 -1
- package/dist/headless-backend-store-stubs.js +1 -17
- package/dist/headless-backend-store-stubs.js.map +1 -1
- package/dist/headless-backend-store.d.ts +8 -0
- package/dist/headless-backend-store.d.ts.map +1 -0
- package/dist/headless-backend-store.js +38 -0
- package/dist/headless-backend-store.js.map +1 -0
- package/dist/headless-backend.d.ts +4 -1
- package/dist/headless-backend.d.ts.map +1 -1
- package/dist/headless-backend.js +8 -33
- package/dist/headless-backend.js.map +1 -1
- package/dist/headless-native-geometry.d.ts +6 -0
- package/dist/headless-native-geometry.d.ts.map +1 -0
- package/dist/headless-native-geometry.js +31 -0
- package/dist/headless-native-geometry.js.map +1 -0
- package/dist/headless-room-geometry.d.ts +9 -0
- package/dist/headless-room-geometry.d.ts.map +1 -0
- package/dist/headless-room-geometry.js +66 -0
- package/dist/headless-room-geometry.js.map +1 -0
- package/dist/protocol/types.d.ts +1 -0
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/resources/providers.d.ts.map +1 -1
- package/dist/resources/providers.js +10 -1
- package/dist/resources/providers.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5 -17
- package/dist/server.js.map +1 -1
- package/dist/session-cleanup.d.ts +5 -0
- package/dist/session-cleanup.d.ts.map +1 -0
- package/dist/session-cleanup.js +36 -0
- package/dist/session-cleanup.js.map +1 -0
- package/dist/test/live-tool-session.d.ts +9 -0
- package/dist/test/live-tool-session.d.ts.map +1 -0
- package/dist/test/live-tool-session.js +30 -0
- package/dist/test/live-tool-session.js.map +1 -0
- package/dist/tools/bcf.js +2 -2
- package/dist/tools/bcf.js.map +1 -1
- package/dist/tools/copy-elements.d.ts +4 -0
- package/dist/tools/copy-elements.d.ts.map +1 -0
- package/dist/tools/copy-elements.js +76 -0
- package/dist/tools/copy-elements.js.map +1 -0
- package/dist/tools/design-place.d.ts +3 -0
- package/dist/tools/design-place.d.ts.map +1 -0
- package/dist/tools/design-place.js +79 -0
- package/dist/tools/design-place.js.map +1 -0
- package/dist/tools/discovery.js +3 -3
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/export.js +7 -7
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/flow-ai.d.ts +6 -0
- package/dist/tools/flow-ai.d.ts.map +1 -0
- package/dist/tools/flow-ai.js +23 -0
- package/dist/tools/flow-ai.js.map +1 -0
- package/dist/tools/flow-host.d.ts +1 -1
- package/dist/tools/flow-host.d.ts.map +1 -1
- package/dist/tools/flow-host.js +5 -1
- package/dist/tools/flow-host.js.map +1 -1
- package/dist/tools/flow-review-host.d.ts +28 -0
- package/dist/tools/flow-review-host.d.ts.map +1 -0
- package/dist/tools/flow-review-host.js +142 -0
- package/dist/tools/flow-review-host.js.map +1 -0
- package/dist/tools/flow.d.ts.map +1 -1
- package/dist/tools/flow.js +147 -93
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/hosted-edit.d.ts +4 -0
- package/dist/tools/hosted-edit.d.ts.map +1 -0
- package/dist/tools/hosted-edit.js +37 -0
- package/dist/tools/hosted-edit.js.map +1 -0
- package/dist/tools/hosted-place.d.ts +3 -0
- package/dist/tools/hosted-place.d.ts.map +1 -0
- package/dist/tools/hosted-place.js +63 -0
- package/dist/tools/hosted-place.js.map +1 -0
- package/dist/tools/ids-accessor.d.ts +2 -1
- package/dist/tools/ids-accessor.d.ts.map +1 -1
- package/dist/tools/ids-accessor.js.map +1 -1
- package/dist/tools/ids-authoring-model.d.ts +3 -0
- package/dist/tools/ids-authoring-model.d.ts.map +1 -0
- package/dist/tools/ids-authoring-model.js +112 -0
- package/dist/tools/ids-authoring-model.js.map +1 -0
- package/dist/tools/ids-authoring.d.ts +3 -0
- package/dist/tools/ids-authoring.d.ts.map +1 -0
- package/dist/tools/ids-authoring.js +202 -0
- package/dist/tools/ids-authoring.js.map +1 -0
- package/dist/tools/ids-schema.d.ts +3 -0
- package/dist/tools/ids-schema.d.ts.map +1 -0
- package/dist/tools/ids-schema.js +91 -0
- package/dist/tools/ids-schema.js.map +1 -0
- package/dist/tools/index.d.ts +5 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +8 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/layer-store.d.ts +2 -0
- package/dist/tools/layer-store.d.ts.map +1 -1
- package/dist/tools/layer-store.js +4 -0
- package/dist/tools/layer-store.js.map +1 -1
- package/dist/tools/mutate.d.ts.map +1 -1
- package/dist/tools/mutate.js +20 -64
- package/dist/tools/mutate.js.map +1 -1
- package/dist/tools/mutation-undo.d.ts +6 -0
- package/dist/tools/mutation-undo.d.ts.map +1 -0
- package/dist/tools/mutation-undo.js +63 -0
- package/dist/tools/mutation-undo.js.map +1 -0
- package/dist/tools/physical-edit.d.ts +4 -0
- package/dist/tools/physical-edit.d.ts.map +1 -0
- package/dist/tools/physical-edit.js +77 -0
- package/dist/tools/physical-edit.js.map +1 -0
- package/dist/tools/query-tools.d.ts +3 -0
- package/dist/tools/query-tools.d.ts.map +1 -0
- package/dist/tools/query-tools.js +8 -0
- package/dist/tools/query-tools.js.map +1 -0
- package/dist/tools/query.d.ts +1 -1
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +4 -4
- package/dist/tools/query.js.map +1 -1
- package/dist/tools/room-command.d.ts +6 -0
- package/dist/tools/room-command.d.ts.map +1 -0
- package/dist/tools/room-command.js +75 -0
- package/dist/tools/room-command.js.map +1 -0
- package/dist/tools/util.d.ts +10 -0
- package/dist/tools/util.d.ts.map +1 -1
- package/dist/tools/util.js +13 -1
- package/dist/tools/util.js.map +1 -1
- package/dist/tools/validation.d.ts +9 -0
- package/dist/tools/validation.d.ts.map +1 -1
- package/dist/tools/validation.js +3 -3
- package/dist/tools/validation.js.map +1 -1
- package/dist/tools/wall-join.d.ts +3 -0
- package/dist/tools/wall-join.d.ts.map +1 -0
- package/dist/tools/wall-join.js +39 -0
- package/dist/tools/wall-join.js.map +1 -0
- package/dist/transport/http-helpers.d.ts +85 -0
- package/dist/transport/http-helpers.d.ts.map +1 -0
- package/dist/transport/http-helpers.js +149 -0
- package/dist/transport/http-helpers.js.map +1 -0
- package/dist/transport/http.d.ts +14 -1
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +80 -90
- package/dist/transport/http.js.map +1 -1
- package/dist/validate.d.ts +1 -1
- package/dist/validate.js +3 -0
- package/dist/validate.js.map +1 -1
- package/package.json +24 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-host.d.ts","sourceRoot":"","sources":["../../src/tools/flow-host.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-host.d.ts","sourceRoot":"","sources":["../../src/tools/flow-host.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAWhE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,UAAU,EAAE,EAAE,QAAQ,GAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAM,GAAG,QAAQ,CAgC/K"}
|
package/dist/tools/flow-host.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { deriveModelId, loadIfcModelFromBytes } from '../loader.js';
|
|
5
|
+
import { buildIdsAccessor } from './ids-accessor.js';
|
|
5
6
|
/** `base`, or `base_2`, `base_3`, … — the first id the registry does not hold yet. */
|
|
6
7
|
function freeModelId(registry, base) {
|
|
7
8
|
let id = base;
|
|
@@ -9,9 +10,10 @@ function freeModelId(registry, base) {
|
|
|
9
10
|
id = `${base}_${n}`;
|
|
10
11
|
return id;
|
|
11
12
|
}
|
|
12
|
-
export function createMcpFlowHost(initial, registry, networkGrants) {
|
|
13
|
+
export function createMcpFlowHost(initial, registry, networkGrants, services = {}) {
|
|
13
14
|
let active = initial;
|
|
14
15
|
return {
|
|
16
|
+
...services,
|
|
15
17
|
get bim() { return active.bim; },
|
|
16
18
|
networkGrants,
|
|
17
19
|
get defaultModelId() { return active.id; },
|
|
@@ -32,6 +34,8 @@ export function createMcpFlowHost(initial, registry, networkGrants) {
|
|
|
32
34
|
strings: model.store.strings ?? null,
|
|
33
35
|
};
|
|
34
36
|
},
|
|
37
|
+
// `ids.validate` reads the session's effective model, like `ids_validate`.
|
|
38
|
+
idsAccessor: () => buildIdsAccessor(active.store, active.backend.getOrCreateMutationView()),
|
|
35
39
|
async openModel(bytes, name) {
|
|
36
40
|
const loaded = await loadIfcModelFromBytes(bytes, name, freeModelId(registry, deriveModelId(name)));
|
|
37
41
|
registry.add(loaded);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-host.js","sourceRoot":"","sources":["../../src/tools/flow-host.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAc/D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"flow-host.js","sourceRoot":"","sources":["../../src/tools/flow-host.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAc/D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,sFAAsF;AACtF,SAAS,WAAW,CAAC,QAAuB,EAAE,IAAY;IACxD,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;QAAE,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;IACvE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAoB,EAAE,QAAuB,EAAE,aAAoC,EAAE,WAA4C,EAAE;IACnK,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,OAAO;QACL,GAAG,QAAQ;QACX,IAAI,GAAG,KAAK,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,aAAa;QACb,IAAI,cAAc,KAAK,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,0EAA0E;QAC1E,2EAA2E;QAC3E,uEAAuE;QACvE,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,iEAAiE;QACjE,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;YAClB,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9F,IAAI,CAAC,KAAK;gBAAE,OAAO,SAAS,CAAC;YAC7B,OAAO;gBACL,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;gBAC9B,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE;gBACrD,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;aACrC,CAAC;QACJ,CAAC;QACD,2EAA2E;QAC3E,WAAW,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAC3F,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI;YACzB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,GAAG,MAAM,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type RootBudget } from '@ifc-lite/ai';
|
|
2
|
+
import type { FlowDocument, RunResult } from '@ifc-lite/flow';
|
|
3
|
+
import { type createStandardRegistry } from '@ifc-lite/flow-nodes';
|
|
4
|
+
import type { ToolContext, LoadedModel } from '../context.js';
|
|
5
|
+
type Registry = ReturnType<typeof createStandardRegistry>;
|
|
6
|
+
/** Availability must be reported before attempting model resolution, including on resume. */
|
|
7
|
+
export declare function restoredMcpNodes(input: Record<string, unknown>, ctx: ToolContext, resuming: boolean): Promise<Set<string>>;
|
|
8
|
+
export declare function prepareMcpFlowReview(input: Record<string, unknown>, ctx: ToolContext, model: LoadedModel, doc: FlowDocument, registry: Registry, player: Record<string, unknown>, resuming: boolean, readOnly?: boolean): Promise<{
|
|
9
|
+
restored: Set<string>;
|
|
10
|
+
budget: RootBudget;
|
|
11
|
+
receipts: unknown[];
|
|
12
|
+
ai: import("@ifc-lite/flow-nodes/ai").FlowAiService | undefined;
|
|
13
|
+
claim(): Promise<Map<string, Map<string, import("@ifc-lite/flow").FlowData>> | undefined>;
|
|
14
|
+
settle(result: RunResult, redaction: ReadonlyMap<string, string>, activeModelId?: string): Promise<{
|
|
15
|
+
model_id: string;
|
|
16
|
+
checkpoint_path: string | undefined;
|
|
17
|
+
id: string;
|
|
18
|
+
state: import("@ifc-lite/flow/checkpoint").CheckpointState;
|
|
19
|
+
proposal_digest: string;
|
|
20
|
+
artifacts: {
|
|
21
|
+
[k: string]: Readonly<Record<string, import("@ifc-lite/flow/checkpoint").PortableFlowData>>;
|
|
22
|
+
};
|
|
23
|
+
budget: unknown;
|
|
24
|
+
} | undefined>;
|
|
25
|
+
fail(): Promise<void>;
|
|
26
|
+
}>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=flow-review-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-review-host.d.ts","sourceRoot":"","sources":["../../src/tools/flow-review-host.ts"],"names":[],"mappings":"AAQA,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK9D,OAAO,EAAiC,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAElG,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM9D,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AA2B1D,6FAA6F;AAC7F,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAKhI;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAC7G,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,UAAQ;;;;;;mBA8CpF,SAAS,aAAa,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;GAyBzE"}
|
|
@@ -0,0 +1,142 @@
|
|
|
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
|
+
/** #7070: a durable native checkpoint is the only authority for one MCP continuation. */
|
|
5
|
+
import { randomUUID, createHash } from 'node:crypto';
|
|
6
|
+
import { stat, access } from 'node:fs/promises';
|
|
7
|
+
import { dirname } from 'node:path';
|
|
8
|
+
import { createRootBudget, restoreRootBudget } from '@ifc-lite/ai';
|
|
9
|
+
import { flowAiConfig } from '@ifc-lite/ai/chat-completions';
|
|
10
|
+
import { approveCheckpoint, claimCheckpoint, createCheckpoint, finishCheckpoint, graphDigest, resumeOutputs, updateCheckpoint, recoverCheckpoint } from '@ifc-lite/flow/checkpoint';
|
|
11
|
+
import { FileCheckpointStore } from '@ifc-lite/flow/checkpoint-file';
|
|
12
|
+
import { FLOW_AI_BUDGET } from '@ifc-lite/flow-nodes/ai';
|
|
13
|
+
import { redactDeep, buildRedactionMap } from '@ifc-lite/flow-nodes';
|
|
14
|
+
import { StepExporter } from '@ifc-lite/export';
|
|
15
|
+
import { scopeAllows, modelAllowed } from '../auth/scope.js';
|
|
16
|
+
import { resolveSafePath } from '../safe-path.js';
|
|
17
|
+
import { ToolErrorCode, ToolExecutionError } from '../errors.js';
|
|
18
|
+
import { mcpFlowAi } from './flow-ai.js';
|
|
19
|
+
const refusal = (message) => new ToolExecutionError({ code: ToolErrorCode.INVALID_INPUT, message });
|
|
20
|
+
/** Hash the native effective export with a fixed timestamp, including all overlay-created attributes. */
|
|
21
|
+
function modelDigest(model) {
|
|
22
|
+
const exporter = new StepExporter(model.store, model.backend.getMutationView() ?? undefined);
|
|
23
|
+
const bytes = exporter.export({ schema: model.store.schemaVersion ?? 'IFC4', timeStamp: '1970-01-01T00:00:00' }).content;
|
|
24
|
+
return createHash('sha256').update(bytes).digest('hex');
|
|
25
|
+
}
|
|
26
|
+
function sourceDigest(ctx, model) {
|
|
27
|
+
const models = ctx.registry.list().filter(item => modelAllowed(ctx.scope, item.id)).sort((a, b) => a.id.localeCompare(b.id));
|
|
28
|
+
return `sha256:${createHash('sha256').update(JSON.stringify({ active: model.id, models: models.map(item => [item.id, modelDigest(item)]) })).digest('hex')}`;
|
|
29
|
+
}
|
|
30
|
+
async function unusedDestination(value, ctx) {
|
|
31
|
+
if (typeof value !== 'string' || !value.trim())
|
|
32
|
+
throw refusal('A new checkpoint_path is required before a review-capable run');
|
|
33
|
+
const path = await resolveSafePath(value, ctx, 'write');
|
|
34
|
+
await access(dirname(path));
|
|
35
|
+
const existing = await stat(path).catch((error) => {
|
|
36
|
+
if (error.code === 'ENOENT')
|
|
37
|
+
return null;
|
|
38
|
+
throw error;
|
|
39
|
+
});
|
|
40
|
+
if (existing)
|
|
41
|
+
throw refusal('A checkpoint destination must not overwrite an existing file');
|
|
42
|
+
return path;
|
|
43
|
+
}
|
|
44
|
+
/** Availability must be reported before attempting model resolution, including on resume. */
|
|
45
|
+
export async function restoredMcpNodes(input, ctx, resuming) {
|
|
46
|
+
if (!resuming)
|
|
47
|
+
return new Set();
|
|
48
|
+
if (typeof input.checkpoint_path !== 'string')
|
|
49
|
+
throw refusal('Supply the pending checkpoint_path');
|
|
50
|
+
const file = await resolveSafePath(input.checkpoint_path, ctx, 'read');
|
|
51
|
+
return new Set(Object.keys((await new FileCheckpointStore(file).load()).checkpoint.outputs));
|
|
52
|
+
}
|
|
53
|
+
export async function prepareMcpFlowReview(input, ctx, model, doc, registry, player, resuming, readOnly = false) {
|
|
54
|
+
const requiredScope = readOnly ? 'read' : 'mutate';
|
|
55
|
+
if (!scopeAllows(ctx.scope, requiredScope))
|
|
56
|
+
throw new ToolExecutionError({ code: ToolErrorCode.PERMISSION_DENIED, message: `Flow execution requires the current ${requiredScope} scope` });
|
|
57
|
+
let budget = createRootBudget(FLOW_AI_BUDGET);
|
|
58
|
+
let receipts = [];
|
|
59
|
+
let store;
|
|
60
|
+
let checkpoint;
|
|
61
|
+
const owner = `mcp:${process.pid}:${randomUUID()}`;
|
|
62
|
+
if (resuming) {
|
|
63
|
+
if (typeof input.checkpoint_path !== 'string')
|
|
64
|
+
throw refusal('Supply the pending checkpoint_path');
|
|
65
|
+
store = new FileCheckpointStore(await resolveSafePath(input.checkpoint_path, ctx, 'write'));
|
|
66
|
+
checkpoint = (await store.load()).checkpoint;
|
|
67
|
+
if (typeof input.approved_digest !== 'string' || input.approved_digest !== checkpoint.proposalDigest)
|
|
68
|
+
throw refusal('Supply the exact reviewed proposal digest');
|
|
69
|
+
const original = restoreRootBudget(checkpoint.budget);
|
|
70
|
+
if (!original)
|
|
71
|
+
throw refusal('Continuation requires the original root budget receipt; no new allowance can be granted');
|
|
72
|
+
if (original.maxRequests > FLOW_AI_BUDGET.maxRequests || original.maxOutputTokens > FLOW_AI_BUDGET.maxOutputTokens)
|
|
73
|
+
throw refusal('The stored budget exceeds this host policy');
|
|
74
|
+
budget = original;
|
|
75
|
+
const savedReceipts = checkpoint.budget.usageReceipts;
|
|
76
|
+
if (savedReceipts !== undefined && (!Array.isArray(savedReceipts) || savedReceipts.length > original.requests))
|
|
77
|
+
throw refusal('The stored usage receipts are invalid');
|
|
78
|
+
receipts = Array.isArray(savedReceipts) ? [...savedReceipts] : [];
|
|
79
|
+
}
|
|
80
|
+
const restored = new Set(Object.keys(checkpoint?.outputs ?? {}));
|
|
81
|
+
const reviewAhead = doc.nodes.some(node => !restored.has(node.id) && registry.get(node.type)?.review === 'required');
|
|
82
|
+
const destination = reviewAhead ? await unusedDestination(resuming ? input.next_checkpoint_path : input.checkpoint_path, ctx) : undefined;
|
|
83
|
+
// Claiming is deferred until the caller has checked wiring, capabilities, secrets and availability.
|
|
84
|
+
let claimed;
|
|
85
|
+
return {
|
|
86
|
+
restored, budget, receipts, ai: mcpFlowAi(budget, receipts, () => ctx.progress.report(budget.requests, `Flow AI request ${budget.requests} of ${budget.maxRequests}`, budget.maxRequests)),
|
|
87
|
+
async claim() {
|
|
88
|
+
if (!store || !checkpoint)
|
|
89
|
+
return undefined;
|
|
90
|
+
const pending = store, id = checkpoint.id;
|
|
91
|
+
if (recoverCheckpoint(checkpoint))
|
|
92
|
+
await updateCheckpoint(pending, id, current => recoverCheckpoint(current) ?? current);
|
|
93
|
+
const claimInput = () => ({ owner, graphDigest: graphDigest(doc, player, registry), sourceDigest: sourceDigest(ctx, model), leaseMs: 10 * 60_000 });
|
|
94
|
+
// Approval and claim are separate CAS transitions: ownership binds the actual reviewed stored record.
|
|
95
|
+
if (checkpoint.state === 'prepared')
|
|
96
|
+
await updateCheckpoint(pending, id, current => {
|
|
97
|
+
const approved = current.state === 'prepared' ? approveCheckpoint(current, input.approved_digest) : current;
|
|
98
|
+
claimCheckpoint(approved, claimInput()); // Verify sources/graph before persisting approval.
|
|
99
|
+
return approved;
|
|
100
|
+
});
|
|
101
|
+
claimed = await updateCheckpoint(pending, id, current => claimCheckpoint(current, claimInput()));
|
|
102
|
+
if (sourceDigest(ctx, model) !== claimed.sourceDigest) {
|
|
103
|
+
await updateCheckpoint(pending, id, current => finishCheckpoint(current, owner, { ok: false, message: 'Sources changed while claiming' }));
|
|
104
|
+
throw refusal('Sources changed while claiming; no continuation ran');
|
|
105
|
+
}
|
|
106
|
+
return resumeOutputs(claimed);
|
|
107
|
+
},
|
|
108
|
+
async settle(result, redaction, activeModelId = model.id) {
|
|
109
|
+
let next;
|
|
110
|
+
try {
|
|
111
|
+
if (result.ok && result.review.length) {
|
|
112
|
+
if (!destination)
|
|
113
|
+
throw refusal('No prepared destination exists for the pending artifact');
|
|
114
|
+
const active = ctx.registry.get(activeModelId);
|
|
115
|
+
if (!active || !modelAllowed(ctx.scope, active.id))
|
|
116
|
+
throw refusal('The active checkpoint model is no longer accessible');
|
|
117
|
+
next = createCheckpoint({ doc, registry, result, inputs: player, sourceDigest: sourceDigest(ctx, active), budget: { ...budget, usageReceipts: receipts } });
|
|
118
|
+
const config = flowAiConfig(process.env);
|
|
119
|
+
const credentials = buildRedactionMap(new Map(config ? [['AI_API_KEY', config.apiKey]] : []));
|
|
120
|
+
if (JSON.stringify(next) !== JSON.stringify(redactDeep(redactDeep(next, redaction), credentials)))
|
|
121
|
+
throw refusal('The paused record contains a secret; no checkpoint can be persisted');
|
|
122
|
+
if (!await new FileCheckpointStore(destination).write(next, null))
|
|
123
|
+
throw refusal('The pending checkpoint destination was claimed by another process');
|
|
124
|
+
}
|
|
125
|
+
if (store && claimed)
|
|
126
|
+
await updateCheckpoint(store, claimed.id, current => finishCheckpoint(current, owner, { ok: result.ok }));
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (store && claimed)
|
|
130
|
+
await updateCheckpoint(store, claimed.id, current => finishCheckpoint(current, owner, { ok: false, message: 'Continuation persistence failed' }));
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
return next ? { model_id: activeModelId, checkpoint_path: destination, id: next.id, state: next.state, proposal_digest: next.proposalDigest,
|
|
134
|
+
artifacts: Object.fromEntries(next.reviewNodes.map(id => [id, next.outputs[id]])), budget: next.budget } : undefined;
|
|
135
|
+
},
|
|
136
|
+
async fail() {
|
|
137
|
+
if (store && claimed)
|
|
138
|
+
await updateCheckpoint(store, claimed.id, current => finishCheckpoint(current, owner, { ok: false, message: 'Continuation failed or was cancelled' }));
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=flow-review-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-review-host.js","sourceRoot":"","sources":["../../src/tools/flow-review-host.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/flow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/tools/flow.ts"],"names":[],"mappings":"AAgFA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/tools/flow.ts"],"names":[],"mappings":"AAgFA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AA2RvC,eAAO,MAAM,SAAS,EAAE,IAAI,EAAiE,CAAC"}
|
package/dist/tools/flow.js
CHANGED
|
@@ -26,14 +26,10 @@
|
|
|
26
26
|
* tracked set yet — out of scope here; a future MCP-side sidecar (keyed per
|
|
27
27
|
* session or per model) would close that gap.
|
|
28
28
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* pre-existing MCP limitation, not something this change introduces — a
|
|
34
|
-
* property-writing graph (like the shipped fire-rating-audit example) runs
|
|
35
|
-
* fine; a column-authoring graph will report a failed node until that
|
|
36
|
-
* backend gap is closed separately.
|
|
29
|
+
* Wall/column/slab/beam/stair/railing creation nodes use the shared SDK
|
|
30
|
+
* backend and create-package builders. Each creation is recorded as one
|
|
31
|
+
* compound mutation for public mutation_undo, retaining earlier overlay work.
|
|
32
|
+
* Stair/railing specs use their canonical builders; tracking remains per call.
|
|
37
33
|
*
|
|
38
34
|
* `run_flow` is the OTHER caller (besides `ifc-lite flow run`) allowed to
|
|
39
35
|
* read `process.env` for a flow graph (#5167 phase 3.5), following the same
|
|
@@ -49,9 +45,14 @@
|
|
|
49
45
|
* see `FlowHost.networkGrants`'s doc comment.
|
|
50
46
|
*/
|
|
51
47
|
import { readFile } from 'node:fs/promises';
|
|
52
|
-
import { declaredInputKeys, describeFlowIO, migrateFlowDocument, MemoryTrackingStore, runFlow, unknownInputKeys, validateFlowDocument, validateFlowWiring, } from '@ifc-lite/flow';
|
|
48
|
+
import { checkAvailability, declaredInputKeys, describeFlowIO, migrateFlowDocument, MemoryTrackingStore, runFlow, unknownInputKeys, validateFlowDocument, validateFlowWiring, } from '@ifc-lite/flow';
|
|
53
49
|
import { parseCapabilities } from '@ifc-lite/extensions';
|
|
54
|
-
import { buildRedactionMap, createStandardRegistry,
|
|
50
|
+
import { buildRedactionMap, createStandardRegistry, interpolateSecrets, redactDeep, resolveSecretValues, validateSecretReferences, } from '@ifc-lite/flow-nodes';
|
|
51
|
+
// AI availability follows explicit host configuration; unconfigured hosts refuse before effects.
|
|
52
|
+
import { mcpFlowFeatures } from './flow-ai.js';
|
|
53
|
+
import { prepareMcpFlowReview, restoredMcpNodes } from './flow-review-host.js';
|
|
54
|
+
import { flowAiConfig } from '@ifc-lite/ai/chat-completions';
|
|
55
|
+
import { aiNodes } from '@ifc-lite/flow-nodes/ai';
|
|
55
56
|
import { createMcpFlowHost } from './flow-host.js';
|
|
56
57
|
import { okResult, paginate, resolveModel } from './util.js';
|
|
57
58
|
import { ToolErrorCode, ToolExecutionError } from '../errors.js';
|
|
@@ -108,7 +109,7 @@ const describeFlow = {
|
|
|
108
109
|
diagnostics: parsed.problems,
|
|
109
110
|
});
|
|
110
111
|
}
|
|
111
|
-
const registry = createStandardRegistry();
|
|
112
|
+
const registry = createStandardRegistry().registerAll(aiNodes);
|
|
112
113
|
const doc = parsed.doc;
|
|
113
114
|
// Registry-aware: `validateFlowDocument` alone cannot see a declared
|
|
114
115
|
// output naming a port no node has (#5167) — it never looks at a
|
|
@@ -116,10 +117,12 @@ const describeFlow = {
|
|
|
116
117
|
// validating clean and producing nothing at run time.
|
|
117
118
|
const diagnostics = validateFlowWiring(doc, registry);
|
|
118
119
|
const io = describeFlowIO(doc, registry);
|
|
119
|
-
const
|
|
120
|
+
const availability = checkAvailability(doc, registry, mcpFlowFeatures());
|
|
121
|
+
const unavailable = availability.filter((node) => node.status === 'unknown' || node.status === 'unavailable');
|
|
122
|
+
const ok = diagnostics.length === 0 && unavailable.length === 0;
|
|
120
123
|
return okResult(ok
|
|
121
124
|
? `Flow '${io.name}' (${io.id}): ${io.inputs.length} input(s), ${io.outputs.length} output(s).`
|
|
122
|
-
: `Flow '${io.name}' (${io.id}) has ${diagnostics.length} wiring problem(s).`, { ok, ...io, diagnostics });
|
|
125
|
+
: `Flow '${io.name}' (${io.id}) has ${diagnostics.length} wiring problem(s) and ${unavailable.length} unavailable node(s).`, { ok, ...io, diagnostics, availability });
|
|
123
126
|
},
|
|
124
127
|
};
|
|
125
128
|
const DEFAULT_ROW_CAP = 1000;
|
|
@@ -169,6 +172,7 @@ const runFlowTool = {
|
|
|
169
172
|
type: 'object',
|
|
170
173
|
properties: {
|
|
171
174
|
...flowInputSchema,
|
|
175
|
+
checkpoint_path: { type: 'string', description: 'New durable review checkpoint destination, required before a review-capable run; subject to allowedPaths.' },
|
|
172
176
|
model_id: { type: 'string', description: 'Loaded model id; required when multiple models are loaded.' },
|
|
173
177
|
inputs: {
|
|
174
178
|
type: 'object',
|
|
@@ -178,92 +182,142 @@ const runFlowTool = {
|
|
|
178
182
|
},
|
|
179
183
|
additionalProperties: false,
|
|
180
184
|
},
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
})
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
})
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
185
|
+
handler: (input, ctx) => executeFlow(input, ctx),
|
|
186
|
+
};
|
|
187
|
+
async function executeFlow(input, ctx, resuming = false, readOnly = false) {
|
|
188
|
+
const value = await loadFlowValue(input, ctx);
|
|
189
|
+
const parsed = parseGraphValue(value);
|
|
190
|
+
if (!parsed.ok) {
|
|
191
|
+
throw new ToolExecutionError({
|
|
192
|
+
code: ToolErrorCode.INVALID_INPUT,
|
|
193
|
+
message: `Flow document is structurally invalid: ${parsed.problems.length} problem(s).`,
|
|
194
|
+
details: { diagnostics: parsed.problems },
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
const registry = createStandardRegistry().registerAll(aiNodes);
|
|
198
|
+
const doc = parsed.doc;
|
|
199
|
+
const wiring = validateFlowWiring(doc, registry);
|
|
200
|
+
if (wiring.length > 0) {
|
|
201
|
+
throw new ToolExecutionError({
|
|
202
|
+
code: ToolErrorCode.INVALID_INPUT,
|
|
203
|
+
message: `Flow document has ${wiring.length} wiring problem(s); call describe_flow first.`,
|
|
204
|
+
details: { diagnostics: wiring },
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
if (readOnly) {
|
|
208
|
+
const allowed = new Set(['model.read', 'network.ai']);
|
|
209
|
+
if (doc.capabilities.some(capability => !allowed.has(capability)) || doc.nodes.some(node => {
|
|
210
|
+
const definition = registry.get(node.type);
|
|
211
|
+
return definition?.writes || definition?.capabilities?.some(capability => !allowed.has(capability));
|
|
212
|
+
}))
|
|
213
|
+
throw new ToolExecutionError({ code: ToolErrorCode.PERMISSION_DENIED, message: 'propose_flow accepts only native read/AI nodes with model.read and network.ai; use authorized run_flow for effects' });
|
|
214
|
+
}
|
|
215
|
+
const rawInputs = input.inputs ?? {};
|
|
216
|
+
// The CLI bug this guards against: an `--input` key naming no declared
|
|
217
|
+
// parameter (e.g. missing the node id) used to be dropped silently, so
|
|
218
|
+
// the graph ran on its defaults and reported success anyway (#5167).
|
|
219
|
+
const unknown = unknownInputKeys(rawInputs, doc, registry);
|
|
220
|
+
if (unknown.length > 0) {
|
|
221
|
+
const known = declaredInputKeys(doc);
|
|
222
|
+
throw new ToolExecutionError({
|
|
223
|
+
code: ToolErrorCode.INVALID_INPUT,
|
|
224
|
+
message: `inputs key(s) ${unknown.map((k) => `"${k}"`).join(', ')} name no declared parameter${known.length > 0 ? `; this graph declares ${known.join(', ')}` : ''}.`,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
// Capabilities first, so a malformed one is reported as itself rather
|
|
228
|
+
// than as every secret being undeclared (#5446 review).
|
|
229
|
+
const capsResult = parseCapabilities(doc.capabilities);
|
|
230
|
+
if (!capsResult.ok) {
|
|
231
|
+
throw new ToolExecutionError({
|
|
232
|
+
code: ToolErrorCode.INVALID_INPUT,
|
|
233
|
+
message: `the graph declares malformed capabilities: ${capsResult.errors.map((e) => e.message).join('; ')}`,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
// Secrets: validated against the real environment BEFORE anything else
|
|
237
|
+
// touches the graph (see module doc above).
|
|
238
|
+
const secretErrors = validateSecretReferences(doc, process.env);
|
|
239
|
+
if (secretErrors.length > 0) {
|
|
240
|
+
throw new ToolExecutionError({
|
|
241
|
+
code: ToolErrorCode.INVALID_INPUT,
|
|
242
|
+
message: `${secretErrors.length} secret reference problem(s): ${secretErrors.map((e) => e.message).join('; ')}`,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
const restored = await restoredMcpNodes(input, ctx, resuming);
|
|
246
|
+
const unavailable = checkAvailability(doc, registry, mcpFlowFeatures())
|
|
247
|
+
.filter((node) => !restored.has(node.nodeId) && (node.status === 'unknown' || node.status === 'unavailable'));
|
|
248
|
+
if (unavailable.length)
|
|
249
|
+
throw new ToolExecutionError({
|
|
250
|
+
code: ToolErrorCode.UNSUPPORTED_OPERATION,
|
|
251
|
+
message: `Flow cannot run on this host: ${unavailable.map((node) => `${node.nodeId}: ${node.reasons.join('; ')}`).join(' | ')}`,
|
|
252
|
+
details: { availability: unavailable },
|
|
253
|
+
});
|
|
254
|
+
const model = resolveModel(ctx, input.model_id);
|
|
255
|
+
const secretValues = new Map(resolveSecretValues(doc, process.env));
|
|
256
|
+
const aiConfig = flowAiConfig(process.env);
|
|
257
|
+
if (aiConfig)
|
|
258
|
+
secretValues.set('IFC_LITE_AI_API_KEY', aiConfig.apiKey);
|
|
259
|
+
const redaction = buildRedactionMap(secretValues);
|
|
260
|
+
const runDoc = interpolateSecrets(doc, secretValues);
|
|
261
|
+
const review = await prepareMcpFlowReview(input, ctx, model, runDoc, registry, rawInputs, resuming, readOnly);
|
|
262
|
+
// `networkGrants` is the graph's own declared capabilities (module doc);
|
|
263
|
+
// `model.openFromSource` can switch the host to a model it opened.
|
|
264
|
+
const host = createMcpFlowHost(model, ctx.registry, capsResult.value, { ai: review.ai, grants: capsResult.value });
|
|
265
|
+
const resume = await review.claim();
|
|
266
|
+
let result;
|
|
267
|
+
try {
|
|
268
|
+
result = await runFlow(runDoc, {
|
|
239
269
|
host,
|
|
270
|
+
resume,
|
|
240
271
|
registry,
|
|
241
272
|
inputs: rawInputs,
|
|
242
|
-
features:
|
|
273
|
+
features: mcpFlowFeatures(),
|
|
243
274
|
modelRevisions: { [model.id]: 0 },
|
|
244
275
|
tracking: new MemoryTrackingStore(),
|
|
245
276
|
signal: ctx.signal,
|
|
246
277
|
});
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
await review.fail();
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
const pending = await review.settle(result, redaction, host.defaultModelId);
|
|
284
|
+
const outputs = result.graphOutputs.map((o) => ({ label: o.label, key: `${o.nodeId}.${o.port}`, data: serializeFlowData(o.data) }));
|
|
285
|
+
const statuses = {};
|
|
286
|
+
for (const r of result.reports)
|
|
287
|
+
statuses[r.status] = (statuses[r.status] ?? 0) + 1;
|
|
288
|
+
// Redacted at the OUTER boundary — the whole tool result, right before
|
|
289
|
+
// it crosses back to the MCP client — so a secret that came back inside
|
|
290
|
+
// a fetched response body (an output or an error message) is caught
|
|
291
|
+
// too, not just the literal param it was interpolated into.
|
|
292
|
+
return okResult(result.ok
|
|
293
|
+
? pending ? `Flow '${doc.name}' paused for review; no downstream effects ran.` : `Flow '${doc.name}' ran: ${outputs.length} output(s).`
|
|
294
|
+
: `Flow '${doc.name}' FAILED.`, redactDeep({
|
|
295
|
+
ok: result.ok,
|
|
296
|
+
usage_receipts: review.receipts,
|
|
297
|
+
...(pending ? { pending } : {}),
|
|
298
|
+
nodes: statuses,
|
|
299
|
+
writes: result.writes,
|
|
300
|
+
tracking: trackingSummary(result),
|
|
301
|
+
outputs,
|
|
302
|
+
errors: result.log.filter((l) => l.level === 'error'),
|
|
303
|
+
warnings: result.log.filter((l) => l.level === 'warn'),
|
|
304
|
+
}, redaction));
|
|
305
|
+
}
|
|
306
|
+
const resumeFlowTool = {
|
|
307
|
+
...runFlowTool,
|
|
308
|
+
name: 'resume_flow',
|
|
309
|
+
description: 'Consume one separately reviewed pending Flow artifact by exact proposal digest. Rechecks current sources, graph, permissions and original budget before restoring completed nodes and running downstream effects. Completed or lost-owner claims cannot run twice.',
|
|
310
|
+
inputSchema: { ...runFlowTool.inputSchema, required: ['checkpoint_path', 'approved_digest'], properties: {
|
|
311
|
+
...runFlowTool.inputSchema.properties,
|
|
312
|
+
approved_digest: { type: 'string', description: 'The exact proposal_digest reviewed from the pending artifact.' },
|
|
313
|
+
next_checkpoint_path: { type: 'string', description: 'A distinct new destination when downstream nodes pause for review again.' },
|
|
314
|
+
} },
|
|
315
|
+
handler: (input, ctx) => executeFlow(input, ctx, true),
|
|
316
|
+
};
|
|
317
|
+
const proposeFlowTool = {
|
|
318
|
+
...runFlowTool, name: 'propose_flow', scope: 'read',
|
|
319
|
+
description: 'Run a native read/AI-only graph to a durable pending artifact. Model and external effect nodes are refused before requesting; applying requires a separate authorized resume_flow call.',
|
|
320
|
+
handler: (input, ctx) => executeFlow(input, ctx, false, true),
|
|
267
321
|
};
|
|
268
|
-
export const flowTools = [describeFlow, runFlowTool];
|
|
322
|
+
export const flowTools = [describeFlow, runFlowTool, proposeFlowTool, resumeFlowTool];
|
|
269
323
|
//# sourceMappingURL=flow.js.map
|
package/dist/tools/flow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/tools/flow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/tools/flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-edit.d.ts","sourceRoot":"","sources":["../../src/tools/hosted-edit.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,sFAAsF;AACtF,eAAO,MAAM,cAAc,EAAE,IA4B5B,CAAC"}
|