opentakeoff-mcp 0.9.40 → 0.9.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/server-core.js +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -311,6 +311,19 @@ sheet number (`A-101`) wherever a sheet is named.
|
|
|
311
311
|
has nothing for `detect_rooms`/`sheet_graph`/`resolve_tag` to read: seeds
|
|
312
312
|
come from you (`view_sheet`, then `one_click`). The raster path needs the
|
|
313
313
|
same optional `@napi-rs/canvas` as `view_sheet`.
|
|
314
|
+
- **Stitching is human-only — deliberately, not a gap.** The canvas can join
|
|
315
|
+
2–4 sheets split at a match line into one composite surface (#200), but no
|
|
316
|
+
MCP verb creates, aligns, or addresses a stitch. Joining the match line
|
|
317
|
+
means clicking the same drawn wall junction on both halves — a judgment
|
|
318
|
+
call with a worse blast radius than a bad scale, because a sloppy align
|
|
319
|
+
silently skews every quantity that crosses the seam. That stays behind
|
|
320
|
+
human eyes; it is not staged for later exposure. For a split floor: a
|
|
321
|
+
human stitches and aligns in the canvas, and over MCP you work each member
|
|
322
|
+
sheet as its own surface — a seam-crossing room belongs to the canvas.
|
|
323
|
+
This server also doesn't read the app's additive `stitches` payload field,
|
|
324
|
+
so a stitched takeoff round-tripped through `import_takeoff` →
|
|
325
|
+
`export_takeoff` comes back without its stitches — when a stitch is in
|
|
326
|
+
play, the app's own save is the one to keep.
|
|
314
327
|
- `load_plan` replaces the session by default; `merge: true` builds a multi-document working set (#152). Reloading a merged file is refused — reload = replace, deliberately.
|
|
315
328
|
- The takeoff lives in memory. `export_takeoff` (the app's exact save payload,
|
|
316
329
|
nothing lost in translation) and `export_marked_pdf` (the reviewable marked
|
package/dist/server-core.js
CHANGED
|
@@ -10639,7 +10639,7 @@ function applyStagedTools(server, registered) {
|
|
|
10639
10639
|
// package.json
|
|
10640
10640
|
var package_default = {
|
|
10641
10641
|
name: "opentakeoff-mcp",
|
|
10642
|
-
version: "0.9.
|
|
10642
|
+
version: "0.9.42",
|
|
10643
10643
|
mcpName: "io.github.Kentucky-ai/opentakeoff",
|
|
10644
10644
|
type: "module",
|
|
10645
10645
|
description: "OpenTakeoff MCP server \u2014 drive the takeoff engine from your MCP client over stdio.",
|
|
@@ -10725,6 +10725,7 @@ function buildServer(session = new Session(), opts = {}) {
|
|
|
10725
10725
|
"3. DERIVE what follows from the rooms instead of re-measuring it: derive_base for base LF (perimeter \u2212 the door openings YOU state), derive_transitions for the line where two finishes meet. Both read committed floor shapes, so they come after step 2 and their output is audited in step 4 like anything else.",
|
|
10726
10726
|
"4. LOOK at what landed with view_sheet overlay:true and fix misses with edit_shape before trusting totals \u2014 crop the work region tight (full-sheet renders downsample too far to audit a ring).",
|
|
10727
10727
|
"5. Finish by writing the marked-up planset with export_marked_pdf and give the user its file path, alongside export_report for the numbers. Never end a takeoff with numbers alone.",
|
|
10728
|
+
"A floor split across sheets at a MATCH LINE: there is no stitch verb, deliberately \u2014 joining and aligning a match line is human judgment in the canvas (a sloppy join silently skews every seam-crossing quantity). Measure each member sheet as its own surface and tell the user a seam-crossing room needs their stitch in the app; never approximate one by combining sheets yourself.",
|
|
10728
10729
|
"WITHHELD IS NOT A FAILURE \u2014 IT IS THE ANSWER. detect_rooms, symbol_sweep, sweep_schedule_row and derive_transitions all measure things they then decline to commit, and say why: a near-match in the score band, a room the schedule cannot answer for, adjacency across a WALL rather than a butt joint. Read those arrays, view_sheet the coordinates they hand you, and resolve them or report them. A withheld item you ignore is a hole in the bid; one you never mention is worse.",
|
|
10729
10730
|
...staged ? [STAGED_INSTRUCTIONS] : []
|
|
10730
10731
|
].join("\n")
|
package/package.json
CHANGED