@ifc-lite/mcp 0.23.0 → 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.
Files changed (156) hide show
  1. package/README.md +65 -0
  2. package/dist/cli.js +2 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/context.d.ts.map +1 -1
  5. package/dist/context.js +5 -0
  6. package/dist/context.js.map +1 -1
  7. package/dist/errors.d.ts +2 -0
  8. package/dist/errors.d.ts.map +1 -1
  9. package/dist/errors.js +2 -0
  10. package/dist/errors.js.map +1 -1
  11. package/dist/headless-backend-align.d.ts +6 -0
  12. package/dist/headless-backend-align.d.ts.map +1 -0
  13. package/dist/headless-backend-align.js +35 -0
  14. package/dist/headless-backend-align.js.map +1 -0
  15. package/dist/headless-backend-modelling.d.ts +41 -1
  16. package/dist/headless-backend-modelling.d.ts.map +1 -1
  17. package/dist/headless-backend-modelling.js +112 -6
  18. package/dist/headless-backend-modelling.js.map +1 -1
  19. package/dist/headless-backend-room.d.ts +8 -0
  20. package/dist/headless-backend-room.d.ts.map +1 -0
  21. package/dist/headless-backend-room.js +24 -0
  22. package/dist/headless-backend-room.js.map +1 -0
  23. package/dist/headless-backend-store-stubs.d.ts +4 -6
  24. package/dist/headless-backend-store-stubs.d.ts.map +1 -1
  25. package/dist/headless-backend-store-stubs.js +1 -12
  26. package/dist/headless-backend-store-stubs.js.map +1 -1
  27. package/dist/headless-backend-store.d.ts +3 -1
  28. package/dist/headless-backend-store.d.ts.map +1 -1
  29. package/dist/headless-backend-store.js +14 -22
  30. package/dist/headless-backend-store.js.map +1 -1
  31. package/dist/headless-backend.d.ts +4 -0
  32. package/dist/headless-backend.d.ts.map +1 -1
  33. package/dist/headless-backend.js +7 -1
  34. package/dist/headless-backend.js.map +1 -1
  35. package/dist/headless-native-geometry.d.ts +6 -0
  36. package/dist/headless-native-geometry.d.ts.map +1 -0
  37. package/dist/headless-native-geometry.js +31 -0
  38. package/dist/headless-native-geometry.js.map +1 -0
  39. package/dist/headless-room-geometry.d.ts +9 -0
  40. package/dist/headless-room-geometry.d.ts.map +1 -0
  41. package/dist/headless-room-geometry.js +66 -0
  42. package/dist/headless-room-geometry.js.map +1 -0
  43. package/dist/protocol/types.d.ts +1 -0
  44. package/dist/protocol/types.d.ts.map +1 -1
  45. package/dist/resources/providers.d.ts.map +1 -1
  46. package/dist/resources/providers.js +10 -1
  47. package/dist/resources/providers.js.map +1 -1
  48. package/dist/server.d.ts.map +1 -1
  49. package/dist/server.js +5 -17
  50. package/dist/server.js.map +1 -1
  51. package/dist/session-cleanup.d.ts +5 -0
  52. package/dist/session-cleanup.d.ts.map +1 -0
  53. package/dist/session-cleanup.js +36 -0
  54. package/dist/session-cleanup.js.map +1 -0
  55. package/dist/test/live-tool-session.d.ts +9 -0
  56. package/dist/test/live-tool-session.d.ts.map +1 -0
  57. package/dist/test/live-tool-session.js +30 -0
  58. package/dist/test/live-tool-session.js.map +1 -0
  59. package/dist/tools/bcf.js +2 -2
  60. package/dist/tools/bcf.js.map +1 -1
  61. package/dist/tools/copy-elements.d.ts +4 -0
  62. package/dist/tools/copy-elements.d.ts.map +1 -0
  63. package/dist/tools/copy-elements.js +76 -0
  64. package/dist/tools/copy-elements.js.map +1 -0
  65. package/dist/tools/design-place.d.ts +3 -0
  66. package/dist/tools/design-place.d.ts.map +1 -0
  67. package/dist/tools/design-place.js +79 -0
  68. package/dist/tools/design-place.js.map +1 -0
  69. package/dist/tools/discovery.js +3 -3
  70. package/dist/tools/discovery.js.map +1 -1
  71. package/dist/tools/export.js +7 -7
  72. package/dist/tools/export.js.map +1 -1
  73. package/dist/tools/flow-ai.d.ts +6 -0
  74. package/dist/tools/flow-ai.d.ts.map +1 -0
  75. package/dist/tools/flow-ai.js +23 -0
  76. package/dist/tools/flow-ai.js.map +1 -0
  77. package/dist/tools/flow-host.d.ts +1 -1
  78. package/dist/tools/flow-host.d.ts.map +1 -1
  79. package/dist/tools/flow-host.js +5 -1
  80. package/dist/tools/flow-host.js.map +1 -1
  81. package/dist/tools/flow-review-host.d.ts +28 -0
  82. package/dist/tools/flow-review-host.d.ts.map +1 -0
  83. package/dist/tools/flow-review-host.js +142 -0
  84. package/dist/tools/flow-review-host.js.map +1 -0
  85. package/dist/tools/flow.d.ts.map +1 -1
  86. package/dist/tools/flow.js +143 -99
  87. package/dist/tools/flow.js.map +1 -1
  88. package/dist/tools/hosted-edit.d.ts +4 -0
  89. package/dist/tools/hosted-edit.d.ts.map +1 -0
  90. package/dist/tools/hosted-edit.js +37 -0
  91. package/dist/tools/hosted-edit.js.map +1 -0
  92. package/dist/tools/ids-accessor.d.ts +2 -1
  93. package/dist/tools/ids-accessor.d.ts.map +1 -1
  94. package/dist/tools/ids-accessor.js.map +1 -1
  95. package/dist/tools/ids-authoring-model.d.ts +3 -0
  96. package/dist/tools/ids-authoring-model.d.ts.map +1 -0
  97. package/dist/tools/ids-authoring-model.js +112 -0
  98. package/dist/tools/ids-authoring-model.js.map +1 -0
  99. package/dist/tools/ids-authoring.d.ts +3 -0
  100. package/dist/tools/ids-authoring.d.ts.map +1 -0
  101. package/dist/tools/ids-authoring.js +202 -0
  102. package/dist/tools/ids-authoring.js.map +1 -0
  103. package/dist/tools/ids-schema.d.ts +3 -0
  104. package/dist/tools/ids-schema.d.ts.map +1 -0
  105. package/dist/tools/ids-schema.js +91 -0
  106. package/dist/tools/ids-schema.js.map +1 -0
  107. package/dist/tools/index.d.ts +5 -2
  108. package/dist/tools/index.d.ts.map +1 -1
  109. package/dist/tools/index.js +8 -2
  110. package/dist/tools/index.js.map +1 -1
  111. package/dist/tools/layer-store.d.ts +2 -0
  112. package/dist/tools/layer-store.d.ts.map +1 -1
  113. package/dist/tools/layer-store.js +4 -0
  114. package/dist/tools/layer-store.js.map +1 -1
  115. package/dist/tools/mutate.d.ts.map +1 -1
  116. package/dist/tools/mutate.js +12 -2
  117. package/dist/tools/mutate.js.map +1 -1
  118. package/dist/tools/mutation-undo.d.ts.map +1 -1
  119. package/dist/tools/mutation-undo.js +3 -0
  120. package/dist/tools/mutation-undo.js.map +1 -1
  121. package/dist/tools/physical-edit.d.ts +4 -0
  122. package/dist/tools/physical-edit.d.ts.map +1 -0
  123. package/dist/tools/physical-edit.js +77 -0
  124. package/dist/tools/physical-edit.js.map +1 -0
  125. package/dist/tools/query-tools.d.ts +3 -0
  126. package/dist/tools/query-tools.d.ts.map +1 -0
  127. package/dist/tools/query-tools.js +8 -0
  128. package/dist/tools/query-tools.js.map +1 -0
  129. package/dist/tools/query.d.ts +1 -1
  130. package/dist/tools/query.d.ts.map +1 -1
  131. package/dist/tools/query.js +4 -4
  132. package/dist/tools/query.js.map +1 -1
  133. package/dist/tools/room-command.d.ts +6 -0
  134. package/dist/tools/room-command.d.ts.map +1 -0
  135. package/dist/tools/room-command.js +75 -0
  136. package/dist/tools/room-command.js.map +1 -0
  137. package/dist/tools/util.d.ts +10 -0
  138. package/dist/tools/util.d.ts.map +1 -1
  139. package/dist/tools/util.js +13 -1
  140. package/dist/tools/util.js.map +1 -1
  141. package/dist/tools/validation.d.ts +9 -0
  142. package/dist/tools/validation.d.ts.map +1 -1
  143. package/dist/tools/validation.js +3 -3
  144. package/dist/tools/validation.js.map +1 -1
  145. package/dist/transport/http-helpers.d.ts +85 -0
  146. package/dist/transport/http-helpers.d.ts.map +1 -0
  147. package/dist/transport/http-helpers.js +149 -0
  148. package/dist/transport/http-helpers.js.map +1 -0
  149. package/dist/transport/http.d.ts +14 -1
  150. package/dist/transport/http.d.ts.map +1 -1
  151. package/dist/transport/http.js +80 -90
  152. package/dist/transport/http.js.map +1 -1
  153. package/dist/validate.d.ts +1 -1
  154. package/dist/validate.js +3 -0
  155. package/dist/validate.js.map +1 -1
  156. package/package.json +22 -19
@@ -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;AAEpE,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;IACnH,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,OAAO;QACL,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,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"}
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/tools/flow.ts"],"names":[],"mappings":"AAiFA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAqPvC,eAAO,MAAM,SAAS,EAAE,IAAI,EAAgC,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"}
@@ -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,12 @@
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';
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,7 +117,7 @@ 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 availability = checkAvailability(doc, registry, headlessFeatures(usableSecretNames(process.env)));
120
+ const availability = checkAvailability(doc, registry, mcpFlowFeatures());
120
121
  const unavailable = availability.filter((node) => node.status === 'unknown' || node.status === 'unavailable');
121
122
  const ok = diagnostics.length === 0 && unavailable.length === 0;
122
123
  return okResult(ok
@@ -171,6 +172,7 @@ const runFlowTool = {
171
172
  type: 'object',
172
173
  properties: {
173
174
  ...flowInputSchema,
175
+ checkpoint_path: { type: 'string', description: 'New durable review checkpoint destination, required before a review-capable run; subject to allowedPaths.' },
174
176
  model_id: { type: 'string', description: 'Loaded model id; required when multiple models are loaded.' },
175
177
  inputs: {
176
178
  type: 'object',
@@ -180,100 +182,142 @@ const runFlowTool = {
180
182
  },
181
183
  additionalProperties: false,
182
184
  },
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, {
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, {
249
269
  host,
270
+ resume,
250
271
  registry,
251
272
  inputs: rawInputs,
252
- features: headlessFeatures(usableSecretNames(process.env)),
273
+ features: mcpFlowFeatures(),
253
274
  modelRevisions: { [model.id]: 0 },
254
275
  tracking: new MemoryTrackingStore(),
255
276
  signal: ctx.signal,
256
277
  });
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
- },
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),
277
321
  };
278
- export const flowTools = [describeFlow, runFlowTool];
322
+ export const flowTools = [describeFlow, runFlowTool, proposeFlowTool, resumeFlowTool];
279
323
  //# 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":"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"}
@@ -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"}