@flyingrobots/graft 0.8.0 → 0.10.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 (186) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/GUIDE.md +8 -3
  3. package/README.md +134 -100
  4. package/dist/adapters/colorful-cli-prose-projector.d.ts +13 -0
  5. package/dist/adapters/colorful-cli-prose-projector.d.ts.map +1 -0
  6. package/dist/adapters/colorful-cli-prose-projector.js +89 -0
  7. package/dist/adapters/colorful-cli-prose-projector.js.map +1 -0
  8. package/dist/adapters/fake-echo-kernel-transport.d.ts +33 -0
  9. package/dist/adapters/fake-echo-kernel-transport.d.ts.map +1 -0
  10. package/dist/adapters/fake-echo-kernel-transport.js +208 -0
  11. package/dist/adapters/fake-echo-kernel-transport.js.map +1 -0
  12. package/dist/adapters/node-process-runner.d.ts.map +1 -1
  13. package/dist/adapters/node-process-runner.js +1 -0
  14. package/dist/adapters/node-process-runner.js.map +1 -1
  15. package/dist/api/index.d.ts +7 -2
  16. package/dist/api/index.d.ts.map +1 -1
  17. package/dist/api/index.js +14 -3
  18. package/dist/api/index.js.map +1 -1
  19. package/dist/cli/structural-blame-render.d.ts.map +1 -1
  20. package/dist/cli/structural-blame-render.js +4 -1
  21. package/dist/cli/structural-blame-render.js.map +1 -1
  22. package/dist/contracts/capabilities.d.ts +2 -2
  23. package/dist/contracts/capabilities.d.ts.map +1 -1
  24. package/dist/contracts/capabilities.js +14 -0
  25. package/dist/contracts/capabilities.js.map +1 -1
  26. package/dist/contracts/output-schema-cli.d.ts +3 -0
  27. package/dist/contracts/output-schema-cli.d.ts.map +1 -1
  28. package/dist/contracts/output-schema-fragments.d.ts +183 -0
  29. package/dist/contracts/output-schema-fragments.d.ts.map +1 -1
  30. package/dist/contracts/output-schema-fragments.js +38 -0
  31. package/dist/contracts/output-schema-fragments.js.map +1 -1
  32. package/dist/contracts/output-schema-mcp.d.ts +91 -0
  33. package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
  34. package/dist/contracts/output-schema-mcp.js +6 -1
  35. package/dist/contracts/output-schema-mcp.js.map +1 -1
  36. package/dist/contracts/output-schema-meta.d.ts +1 -1
  37. package/dist/contracts/output-schema-meta.d.ts.map +1 -1
  38. package/dist/contracts/output-schemas.d.ts.map +1 -1
  39. package/dist/contracts/output-schemas.js +43 -0
  40. package/dist/contracts/output-schemas.js.map +1 -1
  41. package/dist/echo/canonical-cbor.d.ts +10 -0
  42. package/dist/echo/canonical-cbor.d.ts.map +1 -0
  43. package/dist/echo/canonical-cbor.js +213 -0
  44. package/dist/echo/canonical-cbor.js.map +1 -0
  45. package/dist/echo/codec-runtime.d.ts +72 -0
  46. package/dist/echo/codec-runtime.d.ts.map +1 -0
  47. package/dist/echo/codec-runtime.js +259 -0
  48. package/dist/echo/codec-runtime.js.map +1 -0
  49. package/dist/echo/structural-history-client.d.ts +68 -0
  50. package/dist/echo/structural-history-client.d.ts.map +1 -0
  51. package/dist/echo/structural-history-client.js +149 -0
  52. package/dist/echo/structural-history-client.js.map +1 -0
  53. package/dist/echo/structural-history-envelope-codec.d.ts +46 -0
  54. package/dist/echo/structural-history-envelope-codec.d.ts.map +1 -0
  55. package/dist/echo/structural-history-envelope-codec.js +121 -0
  56. package/dist/echo/structural-history-envelope-codec.js.map +1 -0
  57. package/dist/echo/structural-reading-adapter.d.ts +13 -0
  58. package/dist/echo/structural-reading-adapter.d.ts.map +1 -0
  59. package/dist/echo/structural-reading-adapter.js +120 -0
  60. package/dist/echo/structural-reading-adapter.js.map +1 -0
  61. package/dist/echo/structural-reading-generated-model.d.ts +18 -0
  62. package/dist/echo/structural-reading-generated-model.d.ts.map +1 -0
  63. package/dist/echo/structural-reading-generated-model.js +324 -0
  64. package/dist/echo/structural-reading-generated-model.js.map +1 -0
  65. package/dist/generated/graft-structural-history.codec.generated.d.ts +135 -0
  66. package/dist/generated/graft-structural-history.codec.generated.d.ts.map +1 -0
  67. package/dist/generated/graft-structural-history.codec.generated.js +549 -0
  68. package/dist/generated/graft-structural-history.codec.generated.js.map +1 -0
  69. package/dist/generated/graft-structural-history.d.ts +331 -0
  70. package/dist/generated/graft-structural-history.d.ts.map +1 -0
  71. package/dist/generated/graft-structural-history.js +47 -0
  72. package/dist/generated/graft-structural-history.js.map +1 -0
  73. package/dist/mcp/burden.d.ts.map +1 -1
  74. package/dist/mcp/burden.js +2 -0
  75. package/dist/mcp/burden.js.map +1 -1
  76. package/dist/mcp/context.d.ts +5 -1
  77. package/dist/mcp/context.d.ts.map +1 -1
  78. package/dist/mcp/context.js +11 -1
  79. package/dist/mcp/context.js.map +1 -1
  80. package/dist/mcp/control-plane/types.d.ts +8 -0
  81. package/dist/mcp/control-plane/types.d.ts.map +1 -1
  82. package/dist/mcp/daemon-control-plane.d.ts +2 -1
  83. package/dist/mcp/daemon-control-plane.d.ts.map +1 -1
  84. package/dist/mcp/daemon-control-plane.js +49 -0
  85. package/dist/mcp/daemon-control-plane.js.map +1 -1
  86. package/dist/mcp/repo-tool-worker-context.d.ts.map +1 -1
  87. package/dist/mcp/repo-tool-worker-context.js +19 -0
  88. package/dist/mcp/repo-tool-worker-context.js.map +1 -1
  89. package/dist/mcp/repo-workspace.d.ts +1 -1
  90. package/dist/mcp/repo-workspace.d.ts.map +1 -1
  91. package/dist/mcp/repo-workspace.js +5 -0
  92. package/dist/mcp/repo-workspace.js.map +1 -1
  93. package/dist/mcp/server-context.d.ts.map +1 -1
  94. package/dist/mcp/server-context.js +17 -0
  95. package/dist/mcp/server-context.js.map +1 -1
  96. package/dist/mcp/server-tool-access.d.ts.map +1 -1
  97. package/dist/mcp/server-tool-access.js +4 -0
  98. package/dist/mcp/server-tool-access.js.map +1 -1
  99. package/dist/mcp/tool-registry.d.ts.map +1 -1
  100. package/dist/mcp/tool-registry.js +5 -1
  101. package/dist/mcp/tool-registry.js.map +1 -1
  102. package/dist/mcp/tools/changed-since.d.ts.map +1 -1
  103. package/dist/mcp/tools/changed-since.js +24 -10
  104. package/dist/mcp/tools/changed-since.js.map +1 -1
  105. package/dist/mcp/tools/dead-symbols.d.ts.map +1 -1
  106. package/dist/mcp/tools/dead-symbols.js +2 -3
  107. package/dist/mcp/tools/dead-symbols.js.map +1 -1
  108. package/dist/mcp/tools/file-outline.d.ts.map +1 -1
  109. package/dist/mcp/tools/file-outline.js +10 -5
  110. package/dist/mcp/tools/file-outline.js.map +1 -1
  111. package/dist/mcp/tools/structural-blame.d.ts.map +1 -1
  112. package/dist/mcp/tools/structural-blame.js +3 -0
  113. package/dist/mcp/tools/structural-blame.js.map +1 -1
  114. package/dist/mcp/tools/structural-review.d.ts.map +1 -1
  115. package/dist/mcp/tools/structural-review.js +9 -22
  116. package/dist/mcp/tools/structural-review.js.map +1 -1
  117. package/dist/mcp/tools/workspace-list-opened.d.ts +3 -0
  118. package/dist/mcp/tools/workspace-list-opened.d.ts.map +1 -0
  119. package/dist/mcp/tools/workspace-list-opened.js +10 -0
  120. package/dist/mcp/tools/workspace-list-opened.js.map +1 -0
  121. package/dist/mcp/tools/workspace-open.d.ts +3 -0
  122. package/dist/mcp/tools/workspace-open.d.ts.map +1 -0
  123. package/dist/mcp/tools/workspace-open.js +34 -0
  124. package/dist/mcp/tools/workspace-open.js.map +1 -0
  125. package/dist/mcp/workspace-registry.d.ts +83 -0
  126. package/dist/mcp/workspace-registry.d.ts.map +1 -0
  127. package/dist/mcp/workspace-registry.js +542 -0
  128. package/dist/mcp/workspace-registry.js.map +1 -0
  129. package/dist/mcp/workspace-router-model.d.ts +27 -0
  130. package/dist/mcp/workspace-router-model.d.ts.map +1 -1
  131. package/dist/mcp/workspace-router-model.js.map +1 -1
  132. package/dist/mcp/workspace-router.d.ts +9 -2
  133. package/dist/mcp/workspace-router.d.ts.map +1 -1
  134. package/dist/mcp/workspace-router.js +145 -1
  135. package/dist/mcp/workspace-router.js.map +1 -1
  136. package/dist/operations/colorful-prose-projection.d.ts +32 -0
  137. package/dist/operations/colorful-prose-projection.d.ts.map +1 -0
  138. package/dist/operations/colorful-prose-projection.js +344 -0
  139. package/dist/operations/colorful-prose-projection.js.map +1 -0
  140. package/dist/operations/file-outline.d.ts +10 -0
  141. package/dist/operations/file-outline.d.ts.map +1 -1
  142. package/dist/operations/file-outline.js +29 -3
  143. package/dist/operations/file-outline.js.map +1 -1
  144. package/dist/operations/repo-workspace.d.ts +4 -0
  145. package/dist/operations/repo-workspace.d.ts.map +1 -1
  146. package/dist/operations/repo-workspace.js +57 -21
  147. package/dist/operations/repo-workspace.js.map +1 -1
  148. package/dist/operations/safe-read.d.ts +2 -0
  149. package/dist/operations/safe-read.d.ts.map +1 -1
  150. package/dist/operations/safe-read.js +20 -0
  151. package/dist/operations/safe-read.js.map +1 -1
  152. package/dist/operations/structured-buffer-model.d.ts +19 -15
  153. package/dist/operations/structured-buffer-model.d.ts.map +1 -1
  154. package/dist/operations/structured-buffer-model.js +6 -4
  155. package/dist/operations/structured-buffer-model.js.map +1 -1
  156. package/dist/operations/structured-buffer-query.d.ts.map +1 -1
  157. package/dist/operations/structured-buffer-query.js +64 -1
  158. package/dist/operations/structured-buffer-query.js.map +1 -1
  159. package/dist/operations/structured-buffer.d.ts +3 -1
  160. package/dist/operations/structured-buffer.d.ts.map +1 -1
  161. package/dist/operations/structured-buffer.js.map +1 -1
  162. package/dist/parser/types.d.ts +1 -1
  163. package/dist/parser/types.d.ts.map +1 -1
  164. package/dist/parser/types.js.map +1 -1
  165. package/dist/ports/echo-kernel-transport.d.ts +12 -0
  166. package/dist/ports/echo-kernel-transport.d.ts.map +1 -0
  167. package/dist/ports/echo-kernel-transport.js +13 -0
  168. package/dist/ports/echo-kernel-transport.js.map +1 -0
  169. package/dist/ports/process-runner.d.ts +1 -0
  170. package/dist/ports/process-runner.d.ts.map +1 -1
  171. package/dist/ports/structural-history.d.ts +23 -0
  172. package/dist/ports/structural-history.d.ts.map +1 -0
  173. package/dist/ports/structural-history.js +22 -0
  174. package/dist/ports/structural-history.js.map +1 -0
  175. package/dist/ports/structural-reading.d.ts +100 -0
  176. package/dist/ports/structural-reading.d.ts.map +1 -0
  177. package/dist/ports/structural-reading.js +41 -0
  178. package/dist/ports/structural-reading.js.map +1 -0
  179. package/dist/warp/structural-reading-adapter.d.ts +28 -0
  180. package/dist/warp/structural-reading-adapter.d.ts.map +1 -0
  181. package/dist/warp/structural-reading-adapter.js +98 -0
  182. package/dist/warp/structural-reading-adapter.js.map +1 -0
  183. package/docs/CLI.md +4 -4
  184. package/docs/MCP.md +10 -5
  185. package/docs/SETUP.md +12 -6
  186. package/package.json +13 -6
@@ -1 +1 @@
1
- {"version":3,"file":"structural-blame.js","sourceRoot":"","sources":["../../../src/mcp/tools/structural-blame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,kEAAkE;QAClE,gEAAgE;QAChE,gEAAgE;QAChE,4BAA4B;IAC9B,MAAM,EAAE;QACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B;IACD,aAAa;QACX,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAE7B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YAEjC,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAC1C,IAAI,EACJ,UAAU,EACV,QAAQ,IAAI,EAAE,CACf,CAAC;YAEF,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAE/C,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;gBAC7C,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI;gBAC9C,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,IAAI;gBACtD,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjC,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;iBAC/B,CAAC,CAAC;aACJ,CAAC,CAAC,CAAC;QACN,CAAC,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"structural-blame.js","sourceRoot":"","sources":["../../../src/mcp/tools/structural-blame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,kEAAkE;QAClE,gEAAgE;QAChE,gEAAgE;QAChE,4BAA4B;IAC9B,MAAM,EAAE;QACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B;IACD,aAAa;QACX,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAE7B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YAEjC,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAC1C,IAAI,EACJ,UAAU,EACV,QAAQ,IAAI,EAAE,CACf,CAAC;YAEF,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAE/C,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;gBAC7C,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI;gBAC9C,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,IAAI;gBACtD,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjC,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,CAAC,CAAC,QAAQ;oBAChB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;oBAC9B,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3D,CAAC,CAAC;aACJ,CAAC,CAAC,CAAC;QACN,CAAC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"structural-review.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/structural-review.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,cAAc,EAAe,MAAM,eAAe,CAAC;AAgC9E,eAAO,MAAM,oBAAoB,EAAE,cA2BlC,CAAC"}
1
+ {"version":3,"file":"structural-review.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/structural-review.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,cAAc,EAAe,MAAM,eAAe,CAAC;AAmB9E,eAAO,MAAM,oBAAoB,EAAE,cA2BlC,CAAC"}
@@ -1,29 +1,16 @@
1
1
  import { z } from "zod";
2
2
  import { structuralReview } from "../../operations/structural-review.js";
3
3
  import { toJsonObject } from "../../operations/result-dto.js";
4
- import { countSymbolReferencesFromGraph } from "../../warp/warp-reference-count.js";
5
- import { nodePathOps } from "../../adapters/node-paths.js";
6
- import { countNamedImportReferencesAtRef } from "../../operations/import-reference-impact.js";
7
4
  async function countReviewReferences(ctx, symbolName, filePath, headRef) {
8
- const warpCtx = await ctx.getWarp();
9
- const graphResult = await countSymbolReferencesFromGraph(warpCtx, symbolName, filePath);
10
- if (graphResult.referenceCount > 0) {
11
- return graphResult;
12
- }
13
- try {
14
- const fallbackResult = await countNamedImportReferencesAtRef({
15
- cwd: ctx.projectRoot,
16
- git: ctx.git,
17
- pathOps: nodePathOps,
18
- symbolName,
19
- filePath,
20
- ref: headRef,
21
- });
22
- return fallbackResult.referenceCount > 0 ? fallbackResult : graphResult;
23
- }
24
- catch {
25
- return graphResult;
26
- }
5
+ const reading = await ctx.getStructuralReadingPort().countSymbolReferences({
6
+ symbolName,
7
+ filePath,
8
+ ref: headRef,
9
+ });
10
+ return {
11
+ referenceCount: reading.payload.referenceCount,
12
+ referencingFiles: reading.payload.referencingFiles,
13
+ };
27
14
  }
28
15
  export const structuralReviewTool = {
29
16
  name: "graft_review",
@@ -1 +1 @@
1
- {"version":3,"file":"structural-review.js","sourceRoot":"","sources":["../../../src/mcp/tools/structural-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAA6B,MAAM,uCAAuC,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAE9F,KAAK,UAAU,qBAAqB,CAClC,GAAgB,EAChB,UAAkB,EAClB,QAAgB,EAChB,OAAe;IAEf,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,MAAM,8BAA8B,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACxF,IAAI,WAAW,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,+BAA+B,CAAC;YAC3D,GAAG,EAAE,GAAG,CAAC,WAAW;YACpB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,OAAO,EAAE,WAAW;YACpB,UAAU;YACV,QAAQ;YACR,GAAG,EAAE,OAAO;SACb,CAAC,CAAC;QACH,OAAO,cAAc,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,gEAAgE;QAChE,kEAAkE;QAClE,mEAAmE;IACrE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;IACpE,aAAa;QACX,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAuB,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;gBACpC,GAAG,EAAE,GAAG,CAAC,WAAW;gBACpB,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,sBAAsB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAC/D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAuB;gBACxC,IAAI;gBACJ,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;oBAC9C,OAAO,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;gBAC1E,CAAC;aACF,CAAC,CAAC;YACH,GAAG,CAAC,eAAe,CAAC;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACvC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"structural-review.js","sourceRoot":"","sources":["../../../src/mcp/tools/structural-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAA6B,MAAM,uCAAuC,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,KAAK,UAAU,qBAAqB,CAClC,GAAgB,EAChB,UAAkB,EAClB,QAAgB,EAChB,OAAe;IAEf,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,wBAAwB,EAAE,CAAC,qBAAqB,CAAC;QACzE,UAAU;QACV,QAAQ;QACR,GAAG,EAAE,OAAO;KACb,CAAC,CAAC;IACH,OAAO;QACL,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc;QAC9C,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB;KACnD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,gEAAgE;QAChE,kEAAkE;QAClE,mEAAmE;IACrE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;IACpE,aAAa;QACX,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAuB,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;gBACpC,GAAG,EAAE,GAAG,CAAC,WAAW;gBACpB,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,sBAAsB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAC/D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAuB;gBACxC,IAAI;gBACJ,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;oBAC9C,OAAO,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;gBAC1E,CAAC;aACF,CAAC,CAAC;YACH,GAAG,CAAC,eAAe,CAAC;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACvC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from "../context.js";
2
+ export declare const workspaceListOpenedTool: ToolDefinition;
3
+ //# sourceMappingURL=workspace-list-opened.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-list-opened.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/workspace-list-opened.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAEjE,eAAO,MAAM,uBAAuB,EAAE,cASrC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const workspaceListOpenedTool = {
2
+ name: "workspace_list_opened",
3
+ description: "List workspaces opened in this MCP session and identify the active workspace.",
4
+ createHandler() {
5
+ return async (_args, ctx) => {
6
+ return ctx.respond("workspace_list_opened", { ...await ctx.listOpenedWorkspaces() });
7
+ };
8
+ },
9
+ };
10
+ //# sourceMappingURL=workspace-list-opened.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-list-opened.js","sourceRoot":"","sources":["../../../src/mcp/tools/workspace-list-opened.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,+EAA+E;IACjF,aAAa;QACX,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from "../context.js";
2
+ export declare const workspaceOpenTool: ToolDefinition;
3
+ //# sourceMappingURL=workspace-open.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-open.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/workspace-open.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAEjE,eAAO,MAAM,iBAAiB,EAAE,cAgC/B,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ export const workspaceOpenTool = {
3
+ name: "workspace_open",
4
+ description: "Open a git worktree path in this MCP session and optionally make it the active workspace.",
5
+ schema: {
6
+ cwd: z.string(),
7
+ activate: z.boolean().optional(),
8
+ runCapture: z.boolean().optional(),
9
+ },
10
+ createHandler() {
11
+ return async (args, ctx) => {
12
+ const request = {
13
+ cwd: args["cwd"],
14
+ activate: args["activate"],
15
+ runCapture: args["runCapture"],
16
+ };
17
+ if (ctx.getWorkspaceStatus().sessionMode === "daemon") {
18
+ const authorization = await ctx.authorizeWorkspace(request);
19
+ if (!authorization.ok) {
20
+ return ctx.respond("workspace_open", {
21
+ ok: false,
22
+ changed: false,
23
+ freshSessionSlice: false,
24
+ ...ctx.getWorkspaceStatus(),
25
+ errorCode: authorization.errorCode,
26
+ error: authorization.error,
27
+ });
28
+ }
29
+ }
30
+ return ctx.respond("workspace_open", { ...await ctx.openWorkspace(request) });
31
+ };
32
+ },
33
+ };
34
+ //# sourceMappingURL=workspace-open.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-open.js","sourceRoot":"","sources":["../../../src/mcp/tools/workspace-open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,2FAA2F;IAC7F,MAAM,EAAE;QACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KACnC;IACD,aAAa;QACX,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG;gBACd,GAAG,EAAE,IAAI,CAAC,KAAK,CAAW;gBAC1B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAwB;gBACjD,UAAU,EAAE,IAAI,CAAC,YAAY,CAAwB;aACtD,CAAC;YACF,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACtD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC5D,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;oBACtB,OAAO,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE;wBACnC,EAAE,EAAE,KAAK;wBACT,OAAO,EAAE,KAAK;wBACd,iBAAiB,EAAE,KAAK;wBACxB,GAAG,GAAG,CAAC,kBAAkB,EAAE;wBAC3B,SAAS,EAAE,aAAa,CAAC,SAAS;wBAClC,KAAK,EAAE,aAAa,CAAC,KAAK;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,83 @@
1
+ export type WorkspaceRegistryKind = "git" | "directory";
2
+ export type IncarnationStatus = "confirmed" | "suspect" | "replaced" | "unknown";
3
+ export interface WorkspaceIdentityInput {
4
+ readonly installationId: string;
5
+ readonly platformNamespace: string;
6
+ readonly volumeNamespace: string;
7
+ readonly workspaceKind: WorkspaceRegistryKind;
8
+ readonly canonicalIdentityComponents: readonly string[];
9
+ }
10
+ export interface WorkspaceRegistryPaths {
11
+ readonly graftDir: string;
12
+ readonly workspaceDir: string;
13
+ readonly metadataPath: string;
14
+ readonly incarnationsDir: string;
15
+ readonly incarnationDir: string;
16
+ readonly incarnationMetadataPath: string;
17
+ readonly incarnationCacheDir: string;
18
+ }
19
+ export interface WorkspaceRegistryRetention {
20
+ readonly cachePolicy: "derived-content";
21
+ readonly workspaceBudgetBytes: number;
22
+ readonly ttlDays: number;
23
+ }
24
+ export interface WorkspaceRegistryStorage {
25
+ readonly registry: "graft-managed";
26
+ readonly cache: "graft-managed";
27
+ }
28
+ export interface WorkspaceMetadataRecord {
29
+ readonly schemaVersion: 1;
30
+ readonly workspaceId: string;
31
+ readonly displayName: string;
32
+ readonly canonicalRoot: string;
33
+ readonly gitCommonDir: string;
34
+ readonly sanitizedRemotes: readonly string[];
35
+ readonly incarnationId: string;
36
+ readonly historyBindingIds: readonly string[];
37
+ readonly storage: WorkspaceRegistryStorage;
38
+ readonly createdAt: string;
39
+ readonly lastObservedAt: string;
40
+ readonly retention: WorkspaceRegistryRetention;
41
+ }
42
+ export interface IncarnationMetadataRecord {
43
+ readonly schemaVersion: 1;
44
+ readonly workspaceId: string;
45
+ readonly incarnationId: string;
46
+ readonly incarnationStatus: IncarnationStatus;
47
+ readonly createdAt: string;
48
+ readonly lastObservedAt: string;
49
+ readonly evidence: {
50
+ readonly kind: "git";
51
+ readonly canonicalRoot: string;
52
+ readonly gitCommonDir: string;
53
+ readonly repositoryFingerprint?: string | undefined;
54
+ };
55
+ }
56
+ export interface ObserveGitWorkspaceInput {
57
+ readonly graftDir: string;
58
+ readonly canonicalRoot: string;
59
+ readonly gitCommonDir: string;
60
+ readonly remotes?: readonly string[] | undefined;
61
+ readonly installationId?: string | undefined;
62
+ readonly platformNamespace?: string | undefined;
63
+ readonly volumeNamespace?: string | undefined;
64
+ readonly now?: (() => string) | undefined;
65
+ readonly randomBytes?: ((size: number) => Buffer) | undefined;
66
+ readonly repositoryFingerprint?: string | undefined;
67
+ }
68
+ export interface ObservedWorkspaceRecord {
69
+ readonly workspaceId: string;
70
+ readonly incarnationId: string;
71
+ readonly metadata: WorkspaceMetadataRecord;
72
+ readonly paths: WorkspaceRegistryPaths;
73
+ }
74
+ export declare function deriveWorkspaceId(input: WorkspaceIdentityInput): string;
75
+ export declare function registryPaths(graftDir: string, workspaceId: string, incarnationId: string): WorkspaceRegistryPaths;
76
+ export declare function sanitizeRemoteUrl(remote: string): string;
77
+ export declare function loadOrCreateInstallationId(input: {
78
+ readonly graftDir: string;
79
+ readonly now?: (() => string) | undefined;
80
+ readonly randomBytes?: ((size: number) => Buffer) | undefined;
81
+ }): Promise<string>;
82
+ export declare function observeGitWorkspace(input: ObserveGitWorkspaceInput): Promise<ObservedWorkspaceRecord>;
83
+ //# sourceMappingURL=workspace-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-registry.d.ts","sourceRoot":"","sources":["../../src/mcp/workspace-registry.ts"],"names":[],"mappings":"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"}