@ifc-lite/mcp 0.23.0 → 0.25.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 (168) hide show
  1. package/README.md +72 -0
  2. package/dist/cli.js +2 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/context.d.ts +2 -0
  5. package/dist/context.d.ts.map +1 -1
  6. package/dist/context.js +5 -0
  7. package/dist/context.js.map +1 -1
  8. package/dist/errors.d.ts +2 -0
  9. package/dist/errors.d.ts.map +1 -1
  10. package/dist/errors.js +2 -0
  11. package/dist/errors.js.map +1 -1
  12. package/dist/headless-backend-align.d.ts +6 -0
  13. package/dist/headless-backend-align.d.ts.map +1 -0
  14. package/dist/headless-backend-align.js +35 -0
  15. package/dist/headless-backend-align.js.map +1 -0
  16. package/dist/headless-backend-modelling.d.ts +41 -1
  17. package/dist/headless-backend-modelling.d.ts.map +1 -1
  18. package/dist/headless-backend-modelling.js +112 -6
  19. package/dist/headless-backend-modelling.js.map +1 -1
  20. package/dist/headless-backend-room.d.ts +8 -0
  21. package/dist/headless-backend-room.d.ts.map +1 -0
  22. package/dist/headless-backend-room.js +24 -0
  23. package/dist/headless-backend-room.js.map +1 -0
  24. package/dist/headless-backend-store-stubs.d.ts +4 -6
  25. package/dist/headless-backend-store-stubs.d.ts.map +1 -1
  26. package/dist/headless-backend-store-stubs.js +1 -12
  27. package/dist/headless-backend-store-stubs.js.map +1 -1
  28. package/dist/headless-backend-store.d.ts +3 -1
  29. package/dist/headless-backend-store.d.ts.map +1 -1
  30. package/dist/headless-backend-store.js +14 -22
  31. package/dist/headless-backend-store.js.map +1 -1
  32. package/dist/headless-backend.d.ts +4 -0
  33. package/dist/headless-backend.d.ts.map +1 -1
  34. package/dist/headless-backend.js +7 -1
  35. package/dist/headless-backend.js.map +1 -1
  36. package/dist/headless-native-geometry.d.ts +6 -0
  37. package/dist/headless-native-geometry.d.ts.map +1 -0
  38. package/dist/headless-native-geometry.js +31 -0
  39. package/dist/headless-native-geometry.js.map +1 -0
  40. package/dist/headless-room-geometry.d.ts +9 -0
  41. package/dist/headless-room-geometry.d.ts.map +1 -0
  42. package/dist/headless-room-geometry.js +66 -0
  43. package/dist/headless-room-geometry.js.map +1 -0
  44. package/dist/protocol/types.d.ts +1 -0
  45. package/dist/protocol/types.d.ts.map +1 -1
  46. package/dist/resources/providers.d.ts.map +1 -1
  47. package/dist/resources/providers.js +10 -1
  48. package/dist/resources/providers.js.map +1 -1
  49. package/dist/server.d.ts.map +1 -1
  50. package/dist/server.js +7 -17
  51. package/dist/server.js.map +1 -1
  52. package/dist/session-cleanup.d.ts +5 -0
  53. package/dist/session-cleanup.d.ts.map +1 -0
  54. package/dist/session-cleanup.js +36 -0
  55. package/dist/session-cleanup.js.map +1 -0
  56. package/dist/test/live-tool-session.d.ts +9 -0
  57. package/dist/test/live-tool-session.d.ts.map +1 -0
  58. package/dist/test/live-tool-session.js +30 -0
  59. package/dist/test/live-tool-session.js.map +1 -0
  60. package/dist/tools/bcf.js +2 -2
  61. package/dist/tools/bcf.js.map +1 -1
  62. package/dist/tools/check-rules.d.ts.map +1 -1
  63. package/dist/tools/check-rules.js +18 -5
  64. package/dist/tools/check-rules.js.map +1 -1
  65. package/dist/tools/copy-elements.d.ts +4 -0
  66. package/dist/tools/copy-elements.d.ts.map +1 -0
  67. package/dist/tools/copy-elements.js +76 -0
  68. package/dist/tools/copy-elements.js.map +1 -0
  69. package/dist/tools/design-place.d.ts +3 -0
  70. package/dist/tools/design-place.d.ts.map +1 -0
  71. package/dist/tools/design-place.js +79 -0
  72. package/dist/tools/design-place.js.map +1 -0
  73. package/dist/tools/discovery.js +3 -3
  74. package/dist/tools/discovery.js.map +1 -1
  75. package/dist/tools/export.js +7 -7
  76. package/dist/tools/export.js.map +1 -1
  77. package/dist/tools/flow-ai.d.ts +10 -0
  78. package/dist/tools/flow-ai.d.ts.map +1 -0
  79. package/dist/tools/flow-ai.js +24 -0
  80. package/dist/tools/flow-ai.js.map +1 -0
  81. package/dist/tools/flow-host.d.ts +2 -2
  82. package/dist/tools/flow-host.d.ts.map +1 -1
  83. package/dist/tools/flow-host.js +15 -1
  84. package/dist/tools/flow-host.js.map +1 -1
  85. package/dist/tools/flow-review-host.d.ts +28 -0
  86. package/dist/tools/flow-review-host.d.ts.map +1 -0
  87. package/dist/tools/flow-review-host.js +142 -0
  88. package/dist/tools/flow-review-host.js.map +1 -0
  89. package/dist/tools/flow.d.ts.map +1 -1
  90. package/dist/tools/flow.js +145 -99
  91. package/dist/tools/flow.js.map +1 -1
  92. package/dist/tools/hosted-edit.d.ts +4 -0
  93. package/dist/tools/hosted-edit.d.ts.map +1 -0
  94. package/dist/tools/hosted-edit.js +37 -0
  95. package/dist/tools/hosted-edit.js.map +1 -0
  96. package/dist/tools/ids-accessor.d.ts +2 -1
  97. package/dist/tools/ids-accessor.d.ts.map +1 -1
  98. package/dist/tools/ids-accessor.js.map +1 -1
  99. package/dist/tools/ids-authoring-model.d.ts +3 -0
  100. package/dist/tools/ids-authoring-model.d.ts.map +1 -0
  101. package/dist/tools/ids-authoring-model.js +112 -0
  102. package/dist/tools/ids-authoring-model.js.map +1 -0
  103. package/dist/tools/ids-authoring.d.ts +3 -0
  104. package/dist/tools/ids-authoring.d.ts.map +1 -0
  105. package/dist/tools/ids-authoring.js +202 -0
  106. package/dist/tools/ids-authoring.js.map +1 -0
  107. package/dist/tools/ids-schema.d.ts +3 -0
  108. package/dist/tools/ids-schema.d.ts.map +1 -0
  109. package/dist/tools/ids-schema.js +91 -0
  110. package/dist/tools/ids-schema.js.map +1 -0
  111. package/dist/tools/index.d.ts +5 -2
  112. package/dist/tools/index.d.ts.map +1 -1
  113. package/dist/tools/index.js +10 -2
  114. package/dist/tools/index.js.map +1 -1
  115. package/dist/tools/layer-store.d.ts +2 -0
  116. package/dist/tools/layer-store.d.ts.map +1 -1
  117. package/dist/tools/layer-store.js +4 -0
  118. package/dist/tools/layer-store.js.map +1 -1
  119. package/dist/tools/mutate.d.ts.map +1 -1
  120. package/dist/tools/mutate.js +12 -2
  121. package/dist/tools/mutate.js.map +1 -1
  122. package/dist/tools/mutation-undo.d.ts.map +1 -1
  123. package/dist/tools/mutation-undo.js +3 -0
  124. package/dist/tools/mutation-undo.js.map +1 -1
  125. package/dist/tools/physical-edit.d.ts +4 -0
  126. package/dist/tools/physical-edit.d.ts.map +1 -0
  127. package/dist/tools/physical-edit.js +77 -0
  128. package/dist/tools/physical-edit.js.map +1 -0
  129. package/dist/tools/query-tools.d.ts +3 -0
  130. package/dist/tools/query-tools.d.ts.map +1 -0
  131. package/dist/tools/query-tools.js +8 -0
  132. package/dist/tools/query-tools.js.map +1 -0
  133. package/dist/tools/query.d.ts +1 -1
  134. package/dist/tools/query.d.ts.map +1 -1
  135. package/dist/tools/query.js +4 -4
  136. package/dist/tools/query.js.map +1 -1
  137. package/dist/tools/review-captures.d.ts +10 -0
  138. package/dist/tools/review-captures.d.ts.map +1 -0
  139. package/dist/tools/review-captures.js +40 -0
  140. package/dist/tools/review-captures.js.map +1 -0
  141. package/dist/tools/review-findings.d.ts +4 -0
  142. package/dist/tools/review-findings.d.ts.map +1 -0
  143. package/dist/tools/review-findings.js +51 -0
  144. package/dist/tools/review-findings.js.map +1 -0
  145. package/dist/tools/room-command.d.ts +6 -0
  146. package/dist/tools/room-command.d.ts.map +1 -0
  147. package/dist/tools/room-command.js +75 -0
  148. package/dist/tools/room-command.js.map +1 -0
  149. package/dist/tools/util.d.ts +10 -0
  150. package/dist/tools/util.d.ts.map +1 -1
  151. package/dist/tools/util.js +13 -1
  152. package/dist/tools/util.js.map +1 -1
  153. package/dist/tools/validation.d.ts +9 -0
  154. package/dist/tools/validation.d.ts.map +1 -1
  155. package/dist/tools/validation.js +25 -11
  156. package/dist/tools/validation.js.map +1 -1
  157. package/dist/transport/http-helpers.d.ts +85 -0
  158. package/dist/transport/http-helpers.d.ts.map +1 -0
  159. package/dist/transport/http-helpers.js +149 -0
  160. package/dist/transport/http-helpers.js.map +1 -0
  161. package/dist/transport/http.d.ts +14 -1
  162. package/dist/transport/http.d.ts.map +1 -1
  163. package/dist/transport/http.js +80 -90
  164. package/dist/transport/http.js.map +1 -1
  165. package/dist/validate.d.ts +1 -1
  166. package/dist/validate.js +3 -0
  167. package/dist/validate.js.map +1 -1
  168. package/package.json +22 -19
@@ -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
- * Element-creation node types (`element.column`, `model.addElement`, …)
30
- * currently fail when run through MCP: `HeadlessLikeBackend`'s
31
- * `store.addColumn`/`addWall`/`addSlab`/`addBeam`/… all throw "not supported
32
- * in MCP v0.1; use entity_create" (`headless-backend.ts`). That is a
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
@@ -51,7 +47,13 @@
51
47
  import { readFile } from 'node:fs/promises';
52
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, headlessFeatures, interpolateSecrets, redactDeep, resolveSecretValues, usableSecretNames, validateSecretReferences, } from '@ifc-lite/flow-nodes';
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';
56
+ import { reviewCaptures } from './review-captures.js';
55
57
  import { createMcpFlowHost } from './flow-host.js';
56
58
  import { okResult, paginate, resolveModel } from './util.js';
57
59
  import { ToolErrorCode, ToolExecutionError } from '../errors.js';
@@ -108,7 +110,7 @@ const describeFlow = {
108
110
  diagnostics: parsed.problems,
109
111
  });
110
112
  }
111
- const registry = createStandardRegistry();
113
+ const registry = createStandardRegistry().registerAll(aiNodes);
112
114
  const doc = parsed.doc;
113
115
  // Registry-aware: `validateFlowDocument` alone cannot see a declared
114
116
  // output naming a port no node has (#5167) — it never looks at a
@@ -116,7 +118,7 @@ const describeFlow = {
116
118
  // validating clean and producing nothing at run time.
117
119
  const diagnostics = validateFlowWiring(doc, registry);
118
120
  const io = describeFlowIO(doc, registry);
119
- const availability = checkAvailability(doc, registry, headlessFeatures(usableSecretNames(process.env)));
121
+ const availability = checkAvailability(doc, registry, mcpFlowFeatures());
120
122
  const unavailable = availability.filter((node) => node.status === 'unknown' || node.status === 'unavailable');
121
123
  const ok = diagnostics.length === 0 && unavailable.length === 0;
122
124
  return okResult(ok
@@ -171,6 +173,7 @@ const runFlowTool = {
171
173
  type: 'object',
172
174
  properties: {
173
175
  ...flowInputSchema,
176
+ checkpoint_path: { type: 'string', description: 'New durable review checkpoint destination, required before a review-capable run; subject to allowedPaths.' },
174
177
  model_id: { type: 'string', description: 'Loaded model id; required when multiple models are loaded.' },
175
178
  inputs: {
176
179
  type: 'object',
@@ -180,100 +183,143 @@ const runFlowTool = {
180
183
  },
181
184
  additionalProperties: false,
182
185
  },
183
- async handler(input, ctx) {
184
- const value = await loadFlowValue(input, ctx);
185
- const parsed = parseGraphValue(value);
186
- if (!parsed.ok) {
187
- throw new ToolExecutionError({
188
- code: ToolErrorCode.INVALID_INPUT,
189
- message: `Flow document is structurally invalid: ${parsed.problems.length} problem(s).`,
190
- details: { diagnostics: parsed.problems },
191
- });
192
- }
193
- const registry = createStandardRegistry();
194
- const doc = parsed.doc;
195
- const wiring = validateFlowWiring(doc, registry);
196
- if (wiring.length > 0) {
197
- throw new ToolExecutionError({
198
- code: ToolErrorCode.INVALID_INPUT,
199
- message: `Flow document has ${wiring.length} wiring problem(s); call describe_flow first.`,
200
- details: { diagnostics: wiring },
201
- });
202
- }
203
- const rawInputs = input.inputs ?? {};
204
- // The CLI bug this guards against: an `--input` key naming no declared
205
- // parameter (e.g. missing the node id) used to be dropped silently, so
206
- // the graph ran on its defaults and reported success anyway (#5167).
207
- const unknown = unknownInputKeys(rawInputs, doc, registry);
208
- if (unknown.length > 0) {
209
- const known = declaredInputKeys(doc);
210
- throw new ToolExecutionError({
211
- code: ToolErrorCode.INVALID_INPUT,
212
- message: `inputs key(s) ${unknown.map((k) => `"${k}"`).join(', ')} name no declared parameter${known.length > 0 ? `; this graph declares ${known.join(', ')}` : ''}.`,
213
- });
214
- }
215
- // Capabilities first, so a malformed one is reported as itself rather
216
- // than as every secret being undeclared (#5446 review).
217
- const capsResult = parseCapabilities(doc.capabilities);
218
- if (!capsResult.ok) {
219
- throw new ToolExecutionError({
220
- code: ToolErrorCode.INVALID_INPUT,
221
- message: `the graph declares malformed capabilities: ${capsResult.errors.map((e) => e.message).join('; ')}`,
222
- });
223
- }
224
- // Secrets: validated against the real environment BEFORE anything else
225
- // touches the graph (see module doc above).
226
- const secretErrors = validateSecretReferences(doc, process.env);
227
- if (secretErrors.length > 0) {
228
- throw new ToolExecutionError({
229
- code: ToolErrorCode.INVALID_INPUT,
230
- message: `${secretErrors.length} secret reference problem(s): ${secretErrors.map((e) => e.message).join('; ')}`,
231
- });
232
- }
233
- const unavailable = checkAvailability(doc, registry, headlessFeatures(usableSecretNames(process.env)))
234
- .filter((node) => node.status === 'unknown' || node.status === 'unavailable');
235
- if (unavailable.length)
236
- throw new ToolExecutionError({
237
- code: ToolErrorCode.UNSUPPORTED_OPERATION,
238
- message: `Flow cannot run on this host: ${unavailable.map((node) => `${node.nodeId}: ${node.reasons.join('; ')}`).join(' | ')}`,
239
- details: { availability: unavailable },
240
- });
241
- const secretValues = resolveSecretValues(doc, process.env);
242
- const redaction = buildRedactionMap(secretValues);
243
- const runDoc = interpolateSecrets(doc, secretValues);
244
- const model = resolveModel(ctx, input.model_id);
245
- // `networkGrants` is the graph's own declared capabilities (module doc);
246
- // `model.openFromSource` can switch the host to a model it opened.
247
- const host = createMcpFlowHost(model, ctx.registry, capsResult.value);
248
- const result = await runFlow(runDoc, {
186
+ handler: (input, ctx) => executeFlow(input, ctx),
187
+ };
188
+ async function executeFlow(input, ctx, resuming = false, readOnly = false) {
189
+ const value = await loadFlowValue(input, ctx);
190
+ const parsed = parseGraphValue(value);
191
+ if (!parsed.ok) {
192
+ throw new ToolExecutionError({
193
+ code: ToolErrorCode.INVALID_INPUT,
194
+ message: `Flow document is structurally invalid: ${parsed.problems.length} problem(s).`,
195
+ details: { diagnostics: parsed.problems },
196
+ });
197
+ }
198
+ const registry = createStandardRegistry().registerAll(aiNodes);
199
+ const doc = parsed.doc;
200
+ const wiring = validateFlowWiring(doc, registry);
201
+ if (wiring.length > 0) {
202
+ throw new ToolExecutionError({
203
+ code: ToolErrorCode.INVALID_INPUT,
204
+ message: `Flow document has ${wiring.length} wiring problem(s); call describe_flow first.`,
205
+ details: { diagnostics: wiring },
206
+ });
207
+ }
208
+ if (readOnly) {
209
+ const allowed = new Set(['model.read', 'network.ai']);
210
+ if (doc.capabilities.some(capability => !allowed.has(capability)) || doc.nodes.some(node => {
211
+ const definition = registry.get(node.type);
212
+ return definition?.writes || definition?.capabilities?.some(capability => !allowed.has(capability));
213
+ }))
214
+ 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' });
215
+ }
216
+ const rawInputs = input.inputs ?? {};
217
+ // The CLI bug this guards against: an `--input` key naming no declared
218
+ // parameter (e.g. missing the node id) used to be dropped silently, so
219
+ // the graph ran on its defaults and reported success anyway (#5167).
220
+ const unknown = unknownInputKeys(rawInputs, doc, registry);
221
+ if (unknown.length > 0) {
222
+ const known = declaredInputKeys(doc);
223
+ throw new ToolExecutionError({
224
+ code: ToolErrorCode.INVALID_INPUT,
225
+ message: `inputs key(s) ${unknown.map((k) => `"${k}"`).join(', ')} name no declared parameter${known.length > 0 ? `; this graph declares ${known.join(', ')}` : ''}.`,
226
+ });
227
+ }
228
+ // Capabilities first, so a malformed one is reported as itself rather
229
+ // than as every secret being undeclared (#5446 review).
230
+ const capsResult = parseCapabilities(doc.capabilities);
231
+ if (!capsResult.ok) {
232
+ throw new ToolExecutionError({
233
+ code: ToolErrorCode.INVALID_INPUT,
234
+ message: `the graph declares malformed capabilities: ${capsResult.errors.map((e) => e.message).join('; ')}`,
235
+ });
236
+ }
237
+ // Secrets: validated against the real environment BEFORE anything else
238
+ // touches the graph (see module doc above).
239
+ const secretErrors = validateSecretReferences(doc, process.env);
240
+ if (secretErrors.length > 0) {
241
+ throw new ToolExecutionError({
242
+ code: ToolErrorCode.INVALID_INPUT,
243
+ message: `${secretErrors.length} secret reference problem(s): ${secretErrors.map((e) => e.message).join('; ')}`,
244
+ });
245
+ }
246
+ const restored = await restoredMcpNodes(input, ctx, resuming);
247
+ const unavailable = checkAvailability(doc, registry, mcpFlowFeatures())
248
+ .filter((node) => !restored.has(node.nodeId) && (node.status === 'unknown' || node.status === 'unavailable'));
249
+ if (unavailable.length)
250
+ throw new ToolExecutionError({
251
+ code: ToolErrorCode.UNSUPPORTED_OPERATION,
252
+ message: `Flow cannot run on this host: ${unavailable.map((node) => `${node.nodeId}: ${node.reasons.join('; ')}`).join(' | ')}`,
253
+ details: { availability: unavailable },
254
+ });
255
+ const model = resolveModel(ctx, input.model_id);
256
+ const secretValues = new Map(resolveSecretValues(doc, process.env));
257
+ const aiConfig = flowAiConfig(process.env);
258
+ if (aiConfig)
259
+ secretValues.set('IFC_LITE_AI_API_KEY', aiConfig.apiKey);
260
+ reviewCaptures(ctx).enrollCredentials([...secretValues.values()]);
261
+ const redaction = buildRedactionMap(secretValues);
262
+ const runDoc = interpolateSecrets(doc, secretValues);
263
+ const review = await prepareMcpFlowReview(input, ctx, model, runDoc, registry, rawInputs, resuming, readOnly);
264
+ // `networkGrants` is the graph's own declared capabilities (module doc);
265
+ // `model.openFromSource` can switch the host to a model it opened.
266
+ const host = createMcpFlowHost(model, ctx.registry, capsResult.value, { ai: review.ai, grants: capsResult.value }, ctx);
267
+ const resume = await review.claim();
268
+ let result;
269
+ try {
270
+ result = await runFlow(runDoc, {
249
271
  host,
272
+ resume,
250
273
  registry,
251
274
  inputs: rawInputs,
252
- features: headlessFeatures(usableSecretNames(process.env)),
275
+ features: mcpFlowFeatures(),
253
276
  modelRevisions: { [model.id]: 0 },
254
277
  tracking: new MemoryTrackingStore(),
255
278
  signal: ctx.signal,
256
279
  });
257
- const outputs = result.graphOutputs.map((o) => ({ label: o.label, key: `${o.nodeId}.${o.port}`, data: serializeFlowData(o.data) }));
258
- const statuses = {};
259
- for (const r of result.reports)
260
- statuses[r.status] = (statuses[r.status] ?? 0) + 1;
261
- // Redacted at the OUTER boundary — the whole tool result, right before
262
- // it crosses back to the MCP client — so a secret that came back inside
263
- // a fetched response body (an output or an error message) is caught
264
- // too, not just the literal param it was interpolated into.
265
- return okResult(result.ok
266
- ? `Flow '${doc.name}' ran: ${outputs.length} output(s).`
267
- : `Flow '${doc.name}' FAILED.`, redactDeep({
268
- ok: result.ok,
269
- nodes: statuses,
270
- writes: result.writes,
271
- tracking: trackingSummary(result),
272
- outputs,
273
- errors: result.log.filter((l) => l.level === 'error'),
274
- warnings: result.log.filter((l) => l.level === 'warn'),
275
- }, redaction));
276
- },
280
+ }
281
+ catch (error) {
282
+ await review.fail();
283
+ throw error;
284
+ }
285
+ const pending = await review.settle(result, redaction, host.defaultModelId);
286
+ const outputs = result.graphOutputs.map((o) => ({ label: o.label, key: `${o.nodeId}.${o.port}`, data: serializeFlowData(o.data) }));
287
+ const statuses = {};
288
+ for (const r of result.reports)
289
+ statuses[r.status] = (statuses[r.status] ?? 0) + 1;
290
+ // Redacted at the OUTER boundary — the whole tool result, right before
291
+ // it crosses back to the MCP client — so a secret that came back inside
292
+ // a fetched response body (an output or an error message) is caught
293
+ // too, not just the literal param it was interpolated into.
294
+ return okResult(result.ok
295
+ ? pending ? `Flow '${doc.name}' paused for review; no downstream effects ran.` : `Flow '${doc.name}' ran: ${outputs.length} output(s).`
296
+ : `Flow '${doc.name}' FAILED.`, redactDeep({
297
+ ok: result.ok,
298
+ usage_receipts: review.receipts,
299
+ ...(pending ? { pending } : {}),
300
+ nodes: statuses,
301
+ writes: result.writes,
302
+ tracking: trackingSummary(result),
303
+ outputs,
304
+ errors: result.log.filter((l) => l.level === 'error'),
305
+ warnings: result.log.filter((l) => l.level === 'warn'),
306
+ }, redaction));
307
+ }
308
+ const resumeFlowTool = {
309
+ ...runFlowTool,
310
+ name: 'resume_flow',
311
+ 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.',
312
+ inputSchema: { ...runFlowTool.inputSchema, required: ['checkpoint_path', 'approved_digest'], properties: {
313
+ ...runFlowTool.inputSchema.properties,
314
+ approved_digest: { type: 'string', description: 'The exact proposal_digest reviewed from the pending artifact.' },
315
+ next_checkpoint_path: { type: 'string', description: 'A distinct new destination when downstream nodes pause for review again.' },
316
+ } },
317
+ handler: (input, ctx) => executeFlow(input, ctx, true),
318
+ };
319
+ const proposeFlowTool = {
320
+ ...runFlowTool, name: 'propose_flow', scope: 'read',
321
+ 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.',
322
+ handler: (input, ctx) => executeFlow(input, ctx, false, true),
277
323
  };
278
- export const flowTools = [describeFlow, runFlowTool];
324
+ export const flowTools = [describeFlow, runFlowTool, proposeFlowTool, resumeFlowTool];
279
325
  //# sourceMappingURL=flow.js.map
@@ -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":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,EACP,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,GAMnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,iGAAiG;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,eAAe,GAAG;IACtB,IAAI,EAAE,EAAE,WAAW,EAAE,kFAAkF,EAAE;IACzG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;CAC1F,CAAC;AAEX,yGAAyG;AACzG,KAAK,UAAU,aAAa,CAAC,KAA8B,EAAE,GAAgB;IAC3E,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QACtD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,2BAA4B,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnI,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,SAAS,uBAAwB,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjJ,CAAC;IACH,CAAC;IACD,MAAM,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC,CAAC;AACnI,CAAC;AAED,+NAA+N;AAC/N,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACxD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAwB,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,YAAY,GAAS;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,oGAAoG;QACpG,mGAAmG;QACnG,6DAA6D;IAC/D,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAE,KAAK,EAAE;IACzF,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,QAAQ,CAAC,0CAA0C,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc,EAAE;gBAC9F,EAAE,EAAE,KAAK;gBACT,WAAW,EAAE,MAAM,CAAC,QAAQ;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACvB,qEAAqE;QACrE,iEAAiE;QACjE,mEAAmE;QACnE,sDAAsD;QACtD,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;QAC9G,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;QAChE,OAAO,QAAQ,CACb,EAAE;YACA,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,cAAc,EAAE,CAAC,OAAO,CAAC,MAAM,aAAa;YAC/F,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,SAAS,WAAW,CAAC,MAAM,0BAA0B,WAAW,CAAC,MAAM,uBAAuB,EAC7H,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,CACzC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,SAAS,YAAY,CAAC,CAAU;IAC9B,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAE,CAAW,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,CAAW,CAAC,IAAI,CAAC,IAAI,OAAQ,CAAW,CAAC,GAAG,KAAK,QAAQ,CAAC;AACzJ,CAAC;AAED,yLAAyL;AACzL,SAAS,aAAa,CAAC,CAAU;IAC/B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAiB,EAAE,eAAe,CAAC,CAAC;IAC5D,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC/G,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA0B;IACnD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/G,CAAC;AACH,CAAC;AAED,gHAAgH;AAChH,SAAS,eAAe,CAAC,MAAiB;IACxC,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,CAAC,QAAQ;YAAE,SAAS;QAC1B,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC9B,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,WAAW,GAAS;IACxB,IAAI,EAAE,UAAU;IAChB,WAAW,EACT,iGAAiG;QACjG,gGAAgG;QAChG,wGAAwG;QACxG,4GAA4G;IAC9G,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,GAAG,eAAe;YAClB,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2GAA2G,EAAE;YAC7J,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4DAA4D,EAAE;YACvG,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;gBAChE,oBAAoB,EAAE,IAAI;aAC3B;SACF;QACD,oBAAoB,EAAE,KAAK;KAC5B;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC;CACjD,CAAC;AAEF,KAAK,UAAU,WAAW,CAAC,KAA8B,EAAE,GAAgB,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK;IAC3G,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,kBAAkB,CAAC;YAC3B,IAAI,EAAE,aAAa,CAAC,aAAa;YACjC,OAAO,EAAE,0CAA0C,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;YACvF,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,kBAAkB,CAAC;YAC3B,IAAI,EAAE,aAAa,CAAC,aAAa;YACjC,OAAO,EAAE,qBAAqB,MAAM,CAAC,MAAM,+CAA+C;YAC1F,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;SACjC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;QACtD,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzF,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,UAAU,EAAE,MAAM,IAAI,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACtG,CAAC,CAAC;YAAE,MAAM,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,oHAAoH,EAAE,CAAC,CAAC;IAC7M,CAAC;IAED,MAAM,SAAS,GAAI,KAAK,CAAC,MAA8C,IAAI,EAAE,CAAC;IAC9E,uEAAuE;IACvE,uEAAuE;IACvE,qEAAqE;IACrE,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,kBAAkB,CAAC;YAC3B,IAAI,EAAE,aAAa,CAAC,aAAa;YACjC,OAAO,EAAE,iBAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;SACtK,CAAC,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,wDAAwD;IACxD,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,kBAAkB,CAAC;YAC3B,IAAI,EAAE,aAAa,CAAC,aAAa;YACjC,OAAO,EAAE,8CAA8C,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC5G,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,4CAA4C;IAC5C,MAAM,YAAY,GAAG,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAChE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,kBAAkB,CAAC;YAC3B,IAAI,EAAE,aAAa,CAAC,aAAa;YACjC,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,iCAAiC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAChH,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;SACpE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC;IAChH,IAAI,WAAW,CAAC,MAAM;QAAE,MAAM,IAAI,kBAAkB,CAAC;YACnD,IAAI,EAAE,aAAa,CAAC,qBAAqB;YACzC,OAAO,EAAE,iCAAiC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/H,OAAO,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE;SACvC,CAAC,CAAC;IAGH,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAA8B,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,QAAQ;QAAE,YAAY,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvE,cAAc,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9G,yEAAyE;IACzE,mEAAmE;IACnE,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;IACxH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACpC,IAAI,MAAiB,CAAC;IACtB,IAAI,CAAC;QAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE;YACnC,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,eAAe,EAAE;YAC3B,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YACjC,QAAQ,EAAE,IAAI,mBAAmB,EAAE;YACnC,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;IACzD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAE5E,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpI,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO;QAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEnF,uEAAuE;IACvE,wEAAwE;IACxE,oEAAoE;IACpE,4DAA4D;IAC5D,OAAO,QAAQ,CACb,MAAM,CAAC,EAAE;QACP,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,iDAAiD,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,UAAU,OAAO,CAAC,MAAM,aAAa;QACvI,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,WAAW,EAChC,UAAU,CACR;QACE,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,cAAc,EAAE,MAAM,CAAC,QAAQ;QAC/B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC;QACjC,OAAO;QACP,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;QACrD,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;KACvD,EACD,SAAS,CACV,CACF,CAAC;AACN,CAAC;AAED,MAAM,cAAc,GAAS;IAC3B,GAAG,WAAW;IACd,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,oQAAoQ;IACjR,WAAW,EAAE,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,UAAU,EAAE;YACvG,GAAG,WAAW,CAAC,WAAW,CAAC,UAAU;YACrC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;YACjH,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0EAA0E,EAAE;SAClI,EAAE;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;CACvD,CAAC;AAEF,MAAM,eAAe,GAAS;IAC5B,GAAG,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IACnD,WAAW,EAAE,yLAAyL;IACtM,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;CAC9D,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAW,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Tool } from './types.js';
2
+ /** #6232 D5: hosted.slide and inspector dimensions share their physical edit core. */
3
+ export declare const hostedEditTool: Tool;
4
+ //# sourceMappingURL=hosted-edit.d.ts.map
@@ -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"}
@@ -0,0 +1,37 @@
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
+ import { ToolErrorCode, ToolExecutionError } from '../errors.js';
5
+ import { okResult, resolveModel } from './util.js';
6
+ /** #6232 D5: hosted.slide and inspector dimensions share their physical edit core. */
7
+ export const hostedEditTool = {
8
+ name: 'edit_hosted_element',
9
+ description: 'Move or resize a live wall-hosted opening, door or window together with its actual cut. '
10
+ + 'Offset and Sill are metres in the host frame; OverallWidth/OverallHeight are metres. '
11
+ + 'Identity and relationships are retained. Overlap, out-of-host and unsupported geometry edits are refused atomically. '
12
+ + 'One mutation_undo restores the preceding graph.',
13
+ scope: 'mutate',
14
+ inputSchema: {
15
+ type: 'object', properties: {
16
+ model_id: { type: 'string', description: 'Required when multiple models are loaded.' },
17
+ express_id: { type: 'integer', minimum: 1 },
18
+ patch: {
19
+ type: 'object', properties: {
20
+ OverallWidth: { type: 'number', minimum: 0 }, OverallHeight: { type: 'number', minimum: 0 },
21
+ Offset: { type: 'number' }, Sill: { type: 'number' },
22
+ }, additionalProperties: false, anyOf: ['OverallWidth', 'OverallHeight', 'Offset', 'Sill'].map(name => ({ required: [name] })),
23
+ },
24
+ }, required: ['express_id', 'patch'], additionalProperties: false,
25
+ },
26
+ handler(input, ctx) {
27
+ const model = resolveModel(ctx, input.model_id);
28
+ try {
29
+ const ref = model.bim.store.editHostedElement({ modelId: model.id, expressId: input.express_id }, input.patch);
30
+ return okResult(`Edited hosted element #${ref.expressId}.`, { ...ref });
31
+ }
32
+ catch (error) {
33
+ throw new ToolExecutionError({ code: ToolErrorCode.INVALID_INPUT, message: error instanceof Error ? error.message : String(error) });
34
+ }
35
+ },
36
+ };
37
+ //# sourceMappingURL=hosted-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-edit.js","sourceRoot":"","sources":["../../src/tools/hosted-edit.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,sFAAsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,0FAA0F;UACnG,uFAAuF;UACvF,uHAAuH;UACvH,iDAAiD;IACrD,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE;YAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACtF,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;YAC3C,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE;oBAC1B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;oBAC3F,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACrD,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC/H;SACF,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,oBAAoB,EAAE,KAAK;KAClE;IACD,OAAO,CAAC,KAAK,EAAE,GAAG;QAChB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAA8B,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,UAAoB,EAAE,EAAE,KAAK,CAAC,KAA0B,CAAC,CAAC;YAC9I,OAAO,QAAQ,CAAC,0BAA0B,GAAG,CAAC,SAAS,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvI,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import type { IfcDataStore } from '@ifc-lite/parser';
9
9
  import type { MutablePropertyView } from '@ifc-lite/mutations';
10
+ import type { IFCDataAccessor } from '@ifc-lite/ids';
10
11
  /**
11
12
  * `mutationView`, when supplied, is consulted for entity membership only.
12
13
  * Enumeration excludes tombstones and includes overlay-created entities, and
@@ -14,5 +15,5 @@ import type { MutablePropertyView } from '@ifc-lite/mutations';
14
15
  * `EntityVisibilityView` structurally, so no adapter is needed. Omitting it
15
16
  * leaves the accessor answering for the file as parsed.
16
17
  */
17
- export declare function buildIdsAccessor(store: IfcDataStore, mutationView?: MutablePropertyView | null): unknown;
18
+ export declare function buildIdsAccessor(store: IfcDataStore, mutationView?: MutablePropertyView | null): IFCDataAccessor;
18
19
  //# sourceMappingURL=ids-accessor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ids-accessor.d.ts","sourceRoot":"","sources":["../../src/tools/ids-accessor.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACxC,OAAO,CAET"}
1
+ {"version":3,"file":"ids-accessor.d.ts","sourceRoot":"","sources":["../../src/tools/ids-accessor.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACxC,eAAe,CAEjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ids-accessor.js","sourceRoot":"","sources":["../../src/tools/ids-accessor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAY/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAmB,EACnB,YAAyC;IAEzC,OAAO,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,IAAI,SAAS,CAAC,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"ids-accessor.js","sourceRoot":"","sources":["../../src/tools/ids-accessor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAa/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAmB,EACnB,YAAyC;IAEzC,OAAO,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,IAAI,SAAS,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Tool } from './types.js';
2
+ export declare const idsAuthoringModelTools: Tool[];
3
+ //# sourceMappingURL=ids-authoring-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids-authoring-model.d.ts","sourceRoot":"","sources":["../../src/tools/ids-authoring-model.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAgGvC,eAAO,MAAM,sBAAsB,EAAE,IAAI,EAA0D,CAAC"}
@@ -0,0 +1,112 @@
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
+ * IDS authoring tools, batch 2 (IDS-119): `ids_diff`, plus the model-loop
6
+ * and test-suite tools `ids_preview`, `ids_infer`, `ids_coverage` and
7
+ * `ids_test`.
8
+ *
9
+ * `ids_diff` works today (re-identification matcher, `diffIds`). The other
10
+ * four are declared with their final input schemas and answer
11
+ * UNSUPPORTED_OPERATION, the same convention as `gherkin_check`: the
12
+ * funnel, inference and coverage engines (IDS model loop) and the
13
+ * test-suite runner (IDS-110) are not in this release. Each replaces its
14
+ * stub handler when its engine lands; the names and inputs do not change.
15
+ */
16
+ import { readFile } from 'node:fs/promises';
17
+ import { IDSParseError, parseIDS } from '@ifc-lite/ids';
18
+ import { diffIds } from '@ifc-lite/ids-authoring';
19
+ import { ToolErrorCode, ToolExecutionError } from '../errors.js';
20
+ import { resolveSafePath } from '../safe-path.js';
21
+ import { okResult } from './util.js';
22
+ async function loadSide(input, side, ctx) {
23
+ const inline = input[`${side}_xml`];
24
+ const path = input[`${side}_path`];
25
+ let xml;
26
+ if (typeof inline === 'string')
27
+ xml = inline;
28
+ else if (typeof path === 'string')
29
+ xml = await readFile(await resolveSafePath(path, ctx, 'read'), 'utf-8');
30
+ else
31
+ throw new ToolExecutionError({ code: ToolErrorCode.INVALID_INPUT, message: `Provide ${side}_xml or ${side}_path.` });
32
+ try {
33
+ return parseIDS(xml);
34
+ }
35
+ catch (err) {
36
+ if (!(err instanceof IDSParseError))
37
+ throw err;
38
+ throw new ToolExecutionError({ code: ToolErrorCode.PARSE_FAILED, message: `The ${side} IDS does not parse: ${err.message}` });
39
+ }
40
+ }
41
+ const idsDiff = {
42
+ name: 'ids_diff',
43
+ description: 'Semantic diff of two IDS revisions. Specifications and facets are paired by identifier, then name and applicability, then similarity, so a rename or an edited requirement is one change. Returns added / removed / changed entries with XML paths and a plain-language line each.',
44
+ scope: 'read',
45
+ inputSchema: {
46
+ type: 'object',
47
+ properties: {
48
+ before_xml: { type: 'string' },
49
+ before_path: { type: 'string', description: 'Subject to allowedPaths.' },
50
+ after_xml: { type: 'string' },
51
+ after_path: { type: 'string', description: 'Subject to allowedPaths.' },
52
+ },
53
+ additionalProperties: false,
54
+ },
55
+ async handler(input, ctx) {
56
+ const diff = diffIds(await loadSide(input, 'before', ctx), await loadSide(input, 'after', ctx));
57
+ const head = diff.identical ? 'No changes.' : `${diff.entries.length} change(s):`;
58
+ const lines = diff.entries.slice(0, 20).map((e) => `- ${e.text}`);
59
+ return okResult([head, ...lines].join('\n'), { identical: diff.identical, entries: diff.entries });
60
+ },
61
+ };
62
+ function notInThisRelease(name, engine) {
63
+ return () => {
64
+ throw new ToolExecutionError({
65
+ code: ToolErrorCode.UNSUPPORTED_OPERATION,
66
+ message: `${name} is not available in this release: it needs ${engine}, which has not shipped yet.`,
67
+ hint: 'Use ids_validate to check a model against an IDS, and ids_lint for static checks.',
68
+ });
69
+ };
70
+ }
71
+ const MODEL_ID = { type: 'string', description: 'Loaded model to evaluate against (default: the only one).' };
72
+ const IDS_SOURCE = {
73
+ ids_xml: { type: 'string' },
74
+ ids_path: { type: 'string' },
75
+ doc: { type: 'object', description: 'A Studio document from ids_read / ids_apply_ops.' },
76
+ };
77
+ const MODEL_LOOP = 'the IDS model loop (funnel, inference and coverage engines)';
78
+ const idsPreview = {
79
+ name: 'ids_preview',
80
+ description: 'Funnel counts per specification against a loaded model: how many elements each applicability facet keeps, and how many pass each requirement. Not available yet.',
81
+ scope: 'validate',
82
+ inputSchema: { type: 'object', properties: { model_id: MODEL_ID, ...IDS_SOURCE, spec_id: { type: 'string' } }, additionalProperties: false },
83
+ handler: notInThisRelease('ids_preview', MODEL_LOOP),
84
+ };
85
+ const idsInfer = {
86
+ name: 'ids_infer',
87
+ description: 'Infer specifications from the elements a selector picks in a loaded model (IfcOpenShell selector syntax). Returns ops for ids_apply_ops. Not available yet.',
88
+ scope: 'validate',
89
+ inputSchema: {
90
+ type: 'object',
91
+ properties: { model_id: MODEL_ID, select: { type: 'string' }, threshold: { type: 'number', minimum: 0, maximum: 1 } },
92
+ required: ['select'],
93
+ additionalProperties: false,
94
+ },
95
+ handler: notInThisRelease('ids_infer', MODEL_LOOP),
96
+ };
97
+ const idsCoverage = {
98
+ name: 'ids_coverage',
99
+ description: 'Element classes in a loaded model that no specification of the IDS governs. Not available yet.',
100
+ scope: 'validate',
101
+ inputSchema: { type: 'object', properties: { model_id: MODEL_ID, ...IDS_SOURCE }, additionalProperties: false },
102
+ handler: notInThisRelease('ids_coverage', MODEL_LOOP),
103
+ };
104
+ const idsTest = {
105
+ name: 'ids_test',
106
+ description: 'Run the test suites stored in an .idsz bundle (fixtures that must pass or fail each specification). Not available yet.',
107
+ scope: 'validate',
108
+ inputSchema: { type: 'object', properties: { idsz_path: { type: 'string' } }, required: ['idsz_path'], additionalProperties: false },
109
+ handler: notInThisRelease('ids_test', 'the IDS test-suite runner'),
110
+ };
111
+ export const idsAuthoringModelTools = [idsDiff, idsPreview, idsInfer, idsCoverage, idsTest];
112
+ //# sourceMappingURL=ids-authoring-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids-authoring-model.js","sourceRoot":"","sources":["../../src/tools/ids-authoring-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Tool } from './types.js';
2
+ export declare const idsAuthoringTools: Tool[];
3
+ //# sourceMappingURL=ids-authoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids-authoring.d.ts","sourceRoot":"","sources":["../../src/tools/ids-authoring.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAiMvC,eAAO,MAAM,iBAAiB,EAAE,IAAI,EAAwD,CAAC"}