@flyingrobots/graft 0.7.1 → 0.9.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 (366) hide show
  1. package/CHANGELOG.md +202 -0
  2. package/GUIDE.md +8 -3
  3. package/README.md +128 -85
  4. package/dist/adapters/fake-echo-kernel-transport.d.ts +33 -0
  5. package/dist/adapters/fake-echo-kernel-transport.d.ts.map +1 -0
  6. package/dist/adapters/fake-echo-kernel-transport.js +208 -0
  7. package/dist/adapters/fake-echo-kernel-transport.js.map +1 -0
  8. package/dist/api/index.d.ts +3 -0
  9. package/dist/api/index.d.ts.map +1 -1
  10. package/dist/api/index.js +2 -0
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/cli/cli-error.d.ts.map +1 -1
  13. package/dist/cli/cli-error.js +22 -3
  14. package/dist/cli/cli-error.js.map +1 -1
  15. package/dist/cli/command-parser.d.ts.map +1 -1
  16. package/dist/cli/command-parser.js +62 -6
  17. package/dist/cli/command-parser.js.map +1 -1
  18. package/dist/cli/dead-symbols-render.d.ts +2 -0
  19. package/dist/cli/dead-symbols-render.d.ts.map +1 -0
  20. package/dist/cli/dead-symbols-render.js +23 -0
  21. package/dist/cli/dead-symbols-render.js.map +1 -0
  22. package/dist/cli/doctor-render.d.ts +2 -0
  23. package/dist/cli/doctor-render.d.ts.map +1 -0
  24. package/dist/cli/doctor-render.js +80 -0
  25. package/dist/cli/doctor-render.js.map +1 -0
  26. package/dist/cli/entrypoint.d.ts +1 -0
  27. package/dist/cli/entrypoint.d.ts.map +1 -1
  28. package/dist/cli/entrypoint.js +1 -0
  29. package/dist/cli/entrypoint.js.map +1 -1
  30. package/dist/cli/git-graft-enhance-model.d.ts +33 -3
  31. package/dist/cli/git-graft-enhance-model.d.ts.map +1 -1
  32. package/dist/cli/git-graft-enhance-model.js +38 -0
  33. package/dist/cli/git-graft-enhance-model.js.map +1 -1
  34. package/dist/cli/git-graft-enhance-render.d.ts.map +1 -1
  35. package/dist/cli/git-graft-enhance-render.js +13 -0
  36. package/dist/cli/git-graft-enhance-render.js.map +1 -1
  37. package/dist/cli/git-graft-enhance.d.ts.map +1 -1
  38. package/dist/cli/git-graft-enhance.js +44 -1
  39. package/dist/cli/git-graft-enhance.js.map +1 -1
  40. package/dist/cli/index-cmd.d.ts +1 -0
  41. package/dist/cli/index-cmd.d.ts.map +1 -1
  42. package/dist/cli/index-cmd.js +3 -0
  43. package/dist/cli/index-cmd.js.map +1 -1
  44. package/dist/cli/main.d.ts +2 -0
  45. package/dist/cli/main.d.ts.map +1 -1
  46. package/dist/cli/main.js +24 -2
  47. package/dist/cli/main.js.map +1 -1
  48. package/dist/cli/peer-command.d.ts.map +1 -1
  49. package/dist/cli/peer-command.js +25 -0
  50. package/dist/cli/peer-command.js.map +1 -1
  51. package/dist/cli/review-cooldown.d.ts +15 -0
  52. package/dist/cli/review-cooldown.d.ts.map +1 -0
  53. package/dist/cli/review-cooldown.js +136 -0
  54. package/dist/cli/review-cooldown.js.map +1 -0
  55. package/dist/cli/structural-blame-render.d.ts +2 -0
  56. package/dist/cli/structural-blame-render.d.ts.map +1 -0
  57. package/dist/cli/structural-blame-render.js +42 -0
  58. package/dist/cli/structural-blame-render.js.map +1 -0
  59. package/dist/cli/structural-review-render.d.ts +2 -0
  60. package/dist/cli/structural-review-render.d.ts.map +1 -0
  61. package/dist/cli/structural-review-render.js +56 -0
  62. package/dist/cli/structural-review-render.js.map +1 -0
  63. package/dist/cli/structural-test-coverage-render.d.ts +2 -0
  64. package/dist/cli/structural-test-coverage-render.d.ts.map +1 -0
  65. package/dist/cli/structural-test-coverage-render.js +46 -0
  66. package/dist/cli/structural-test-coverage-render.js.map +1 -0
  67. package/dist/contracts/capabilities.d.ts +9 -6
  68. package/dist/contracts/capabilities.d.ts.map +1 -1
  69. package/dist/contracts/capabilities.js +54 -1
  70. package/dist/contracts/capabilities.js.map +1 -1
  71. package/dist/contracts/causal-ontology.d.ts +17 -17
  72. package/dist/contracts/output-schema-cli.d.ts +106 -41
  73. package/dist/contracts/output-schema-cli.d.ts.map +1 -1
  74. package/dist/contracts/output-schema-cli.js +29 -0
  75. package/dist/contracts/output-schema-cli.js.map +1 -1
  76. package/dist/contracts/output-schema-fragments.d.ts +238 -76
  77. package/dist/contracts/output-schema-fragments.d.ts.map +1 -1
  78. package/dist/contracts/output-schema-fragments.js +27 -0
  79. package/dist/contracts/output-schema-fragments.js.map +1 -1
  80. package/dist/contracts/output-schema-mcp.d.ts +171 -62
  81. package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
  82. package/dist/contracts/output-schema-mcp.js +49 -22
  83. package/dist/contracts/output-schema-mcp.js.map +1 -1
  84. package/dist/contracts/output-schema-meta.d.ts +2 -2
  85. package/dist/contracts/output-schema-meta.d.ts.map +1 -1
  86. package/dist/contracts/output-schemas.d.ts +7 -7
  87. package/dist/contracts/output-schemas.d.ts.map +1 -1
  88. package/dist/contracts/output-schemas.js +101 -1
  89. package/dist/contracts/output-schemas.js.map +1 -1
  90. package/dist/echo/canonical-cbor.d.ts +10 -0
  91. package/dist/echo/canonical-cbor.d.ts.map +1 -0
  92. package/dist/echo/canonical-cbor.js +213 -0
  93. package/dist/echo/canonical-cbor.js.map +1 -0
  94. package/dist/echo/codec-runtime.d.ts +72 -0
  95. package/dist/echo/codec-runtime.d.ts.map +1 -0
  96. package/dist/echo/codec-runtime.js +259 -0
  97. package/dist/echo/codec-runtime.js.map +1 -0
  98. package/dist/echo/structural-history-client.d.ts +68 -0
  99. package/dist/echo/structural-history-client.d.ts.map +1 -0
  100. package/dist/echo/structural-history-client.js +149 -0
  101. package/dist/echo/structural-history-client.js.map +1 -0
  102. package/dist/echo/structural-history-envelope-codec.d.ts +46 -0
  103. package/dist/echo/structural-history-envelope-codec.d.ts.map +1 -0
  104. package/dist/echo/structural-history-envelope-codec.js +121 -0
  105. package/dist/echo/structural-history-envelope-codec.js.map +1 -0
  106. package/dist/echo/structural-reading-adapter.d.ts +13 -0
  107. package/dist/echo/structural-reading-adapter.d.ts.map +1 -0
  108. package/dist/echo/structural-reading-adapter.js +120 -0
  109. package/dist/echo/structural-reading-adapter.js.map +1 -0
  110. package/dist/generated/graft-structural-history.codec.generated.d.ts +135 -0
  111. package/dist/generated/graft-structural-history.codec.generated.d.ts.map +1 -0
  112. package/dist/generated/graft-structural-history.codec.generated.js +545 -0
  113. package/dist/generated/graft-structural-history.codec.generated.js.map +1 -0
  114. package/dist/generated/graft-structural-history.d.ts +331 -0
  115. package/dist/generated/graft-structural-history.d.ts.map +1 -0
  116. package/dist/generated/graft-structural-history.js +47 -0
  117. package/dist/generated/graft-structural-history.js.map +1 -0
  118. package/dist/git/version-guard.d.ts +17 -0
  119. package/dist/git/version-guard.d.ts.map +1 -0
  120. package/dist/git/version-guard.js +51 -0
  121. package/dist/git/version-guard.js.map +1 -0
  122. package/dist/hooks/posttooluse-read.js +2 -2
  123. package/dist/hooks/posttooluse-read.js.map +1 -1
  124. package/dist/mcp/burden.d.ts.map +1 -1
  125. package/dist/mcp/burden.js +4 -0
  126. package/dist/mcp/burden.js.map +1 -1
  127. package/dist/mcp/context.d.ts +5 -1
  128. package/dist/mcp/context.d.ts.map +1 -1
  129. package/dist/mcp/context.js +11 -1
  130. package/dist/mcp/context.js.map +1 -1
  131. package/dist/mcp/daemon-server.d.ts.map +1 -1
  132. package/dist/mcp/daemon-server.js +2 -0
  133. package/dist/mcp/daemon-server.js.map +1 -1
  134. package/dist/mcp/persisted-local-history-graph.d.ts.map +1 -1
  135. package/dist/mcp/persisted-local-history-graph.js +2 -1
  136. package/dist/mcp/persisted-local-history-graph.js.map +1 -1
  137. package/dist/mcp/persisted-local-history.d.ts +5 -5
  138. package/dist/mcp/repo-tool-job.d.ts.map +1 -1
  139. package/dist/mcp/repo-tool-job.js +2 -0
  140. package/dist/mcp/repo-tool-job.js.map +1 -1
  141. package/dist/mcp/repo-tool-worker-context.d.ts.map +1 -1
  142. package/dist/mcp/repo-tool-worker-context.js +19 -0
  143. package/dist/mcp/repo-tool-worker-context.js.map +1 -1
  144. package/dist/mcp/server-context.d.ts.map +1 -1
  145. package/dist/mcp/server-context.js +17 -0
  146. package/dist/mcp/server-context.js.map +1 -1
  147. package/dist/mcp/server-invocation.d.ts.map +1 -1
  148. package/dist/mcp/server-invocation.js +206 -147
  149. package/dist/mcp/server-invocation.js.map +1 -1
  150. package/dist/mcp/server-tool-access.d.ts.map +1 -1
  151. package/dist/mcp/server-tool-access.js +4 -0
  152. package/dist/mcp/server-tool-access.js.map +1 -1
  153. package/dist/mcp/server.d.ts.map +1 -1
  154. package/dist/mcp/server.js +184 -116
  155. package/dist/mcp/server.js.map +1 -1
  156. package/dist/mcp/stdio-server.d.ts.map +1 -1
  157. package/dist/mcp/stdio-server.js +2 -0
  158. package/dist/mcp/stdio-server.js.map +1 -1
  159. package/dist/mcp/tool-registry.d.ts.map +1 -1
  160. package/dist/mcp/tool-registry.js +9 -1
  161. package/dist/mcp/tool-registry.js.map +1 -1
  162. package/dist/mcp/tools/changed-since.d.ts.map +1 -1
  163. package/dist/mcp/tools/changed-since.js +10 -3
  164. package/dist/mcp/tools/changed-since.js.map +1 -1
  165. package/dist/mcp/tools/dead-symbols.d.ts +3 -0
  166. package/dist/mcp/tools/dead-symbols.d.ts.map +1 -0
  167. package/dist/mcp/tools/dead-symbols.js +32 -0
  168. package/dist/mcp/tools/dead-symbols.js.map +1 -0
  169. package/dist/mcp/tools/map.d.ts.map +1 -1
  170. package/dist/mcp/tools/map.js +2 -0
  171. package/dist/mcp/tools/map.js.map +1 -1
  172. package/dist/mcp/tools/precision-warp.d.ts.map +1 -1
  173. package/dist/mcp/tools/precision-warp.js +2 -6
  174. package/dist/mcp/tools/precision-warp.js.map +1 -1
  175. package/dist/mcp/tools/refactor-difficulty.d.ts.map +1 -1
  176. package/dist/mcp/tools/refactor-difficulty.js +2 -0
  177. package/dist/mcp/tools/refactor-difficulty.js.map +1 -1
  178. package/dist/mcp/tools/safe-read.d.ts.map +1 -1
  179. package/dist/mcp/tools/safe-read.js +10 -105
  180. package/dist/mcp/tools/safe-read.js.map +1 -1
  181. package/dist/mcp/tools/structural-blame.d.ts.map +1 -1
  182. package/dist/mcp/tools/structural-blame.js +3 -0
  183. package/dist/mcp/tools/structural-blame.js.map +1 -1
  184. package/dist/mcp/tools/structural-review.d.ts.map +1 -1
  185. package/dist/mcp/tools/structural-review.js +9 -22
  186. package/dist/mcp/tools/structural-review.js.map +1 -1
  187. package/dist/mcp/tools/structural-test-coverage.d.ts +3 -0
  188. package/dist/mcp/tools/structural-test-coverage.d.ts.map +1 -0
  189. package/dist/mcp/tools/structural-test-coverage.js +35 -0
  190. package/dist/mcp/tools/structural-test-coverage.js.map +1 -0
  191. package/dist/mcp/tools/workspace-list-opened.d.ts +3 -0
  192. package/dist/mcp/tools/workspace-list-opened.d.ts.map +1 -0
  193. package/dist/mcp/tools/workspace-list-opened.js +10 -0
  194. package/dist/mcp/tools/workspace-list-opened.js.map +1 -0
  195. package/dist/mcp/tools/workspace-open.d.ts +3 -0
  196. package/dist/mcp/tools/workspace-open.d.ts.map +1 -0
  197. package/dist/mcp/tools/workspace-open.js +34 -0
  198. package/dist/mcp/tools/workspace-open.js.map +1 -0
  199. package/dist/mcp/workspace-router-model.d.ts +27 -0
  200. package/dist/mcp/workspace-router-model.d.ts.map +1 -1
  201. package/dist/mcp/workspace-router-model.js.map +1 -1
  202. package/dist/mcp/workspace-router.d.ts +9 -2
  203. package/dist/mcp/workspace-router.d.ts.map +1 -1
  204. package/dist/mcp/workspace-router.js +145 -1
  205. package/dist/mcp/workspace-router.js.map +1 -1
  206. package/dist/operations/cached-file.d.ts +6 -2
  207. package/dist/operations/cached-file.d.ts.map +1 -1
  208. package/dist/operations/cached-file.js +30 -6
  209. package/dist/operations/cached-file.js.map +1 -1
  210. package/dist/operations/export-surface-diff.d.ts.map +1 -1
  211. package/dist/operations/export-surface-diff.js +2 -0
  212. package/dist/operations/export-surface-diff.js.map +1 -1
  213. package/dist/operations/file-outline.js +2 -2
  214. package/dist/operations/file-outline.js.map +1 -1
  215. package/dist/operations/graft-diff.d.ts.map +1 -1
  216. package/dist/operations/graft-diff.js +2 -0
  217. package/dist/operations/graft-diff.js.map +1 -1
  218. package/dist/operations/projection-safety.d.ts.map +1 -1
  219. package/dist/operations/projection-safety.js +2 -0
  220. package/dist/operations/projection-safety.js.map +1 -1
  221. package/dist/operations/repo-workspace.d.ts.map +1 -1
  222. package/dist/operations/repo-workspace.js +26 -8
  223. package/dist/operations/repo-workspace.js.map +1 -1
  224. package/dist/operations/review-cooldown-status.d.ts +27 -0
  225. package/dist/operations/review-cooldown-status.d.ts.map +1 -0
  226. package/dist/operations/review-cooldown-status.js +115 -0
  227. package/dist/operations/review-cooldown-status.js.map +1 -0
  228. package/dist/operations/safe-read.js +2 -2
  229. package/dist/operations/safe-read.js.map +1 -1
  230. package/dist/operations/sludge-detector.d.ts.map +1 -1
  231. package/dist/operations/sludge-detector.js +2 -1
  232. package/dist/operations/sludge-detector.js.map +1 -1
  233. package/dist/operations/structural-review.js +8 -8
  234. package/dist/operations/structural-review.js.map +1 -1
  235. package/dist/operations/structural-test-coverage-map.d.ts +44 -0
  236. package/dist/operations/structural-test-coverage-map.d.ts.map +1 -0
  237. package/dist/operations/structural-test-coverage-map.js +331 -0
  238. package/dist/operations/structural-test-coverage-map.js.map +1 -0
  239. package/dist/operations/structured-buffer-compare.d.ts.map +1 -1
  240. package/dist/operations/structured-buffer-compare.js +4 -1
  241. package/dist/operations/structured-buffer-compare.js.map +1 -1
  242. package/dist/operations/structured-buffer-model.d.ts +15 -13
  243. package/dist/operations/structured-buffer-model.d.ts.map +1 -1
  244. package/dist/operations/structured-buffer-model.js +24 -5
  245. package/dist/operations/structured-buffer-model.js.map +1 -1
  246. package/dist/operations/structured-buffer-query.d.ts.map +1 -1
  247. package/dist/operations/structured-buffer-query.js +21 -12
  248. package/dist/operations/structured-buffer-query.js.map +1 -1
  249. package/dist/parser/extractors/common.d.ts +16 -0
  250. package/dist/parser/extractors/common.d.ts.map +1 -0
  251. package/dist/parser/extractors/common.js +23 -0
  252. package/dist/parser/extractors/common.js.map +1 -0
  253. package/dist/parser/extractors/go.d.ts +18 -0
  254. package/dist/parser/extractors/go.d.ts.map +1 -0
  255. package/dist/parser/extractors/go.js +200 -0
  256. package/dist/parser/extractors/go.js.map +1 -0
  257. package/dist/parser/extractors/graphql.d.ts +26 -0
  258. package/dist/parser/extractors/graphql.d.ts.map +1 -0
  259. package/dist/parser/extractors/graphql.js +239 -0
  260. package/dist/parser/extractors/graphql.js.map +1 -0
  261. package/dist/parser/extractors/index.d.ts +4 -0
  262. package/dist/parser/extractors/index.d.ts.map +1 -0
  263. package/dist/parser/extractors/index.js +26 -0
  264. package/dist/parser/extractors/index.js.map +1 -0
  265. package/dist/parser/extractors/json.d.ts +10 -0
  266. package/dist/parser/extractors/json.d.ts.map +1 -0
  267. package/dist/parser/extractors/json.js +75 -0
  268. package/dist/parser/extractors/json.js.map +1 -0
  269. package/dist/parser/extractors/python.d.ts +16 -0
  270. package/dist/parser/extractors/python.d.ts.map +1 -0
  271. package/dist/parser/extractors/python.js +145 -0
  272. package/dist/parser/extractors/python.js.map +1 -0
  273. package/dist/parser/extractors/rust.d.ts +12 -0
  274. package/dist/parser/extractors/rust.d.ts.map +1 -0
  275. package/dist/parser/extractors/rust.js +122 -0
  276. package/dist/parser/extractors/rust.js.map +1 -0
  277. package/dist/parser/extractors/toml.d.ts +10 -0
  278. package/dist/parser/extractors/toml.d.ts.map +1 -0
  279. package/dist/parser/extractors/toml.js +74 -0
  280. package/dist/parser/extractors/toml.js.map +1 -0
  281. package/dist/parser/extractors/typescript.d.ts +13 -0
  282. package/dist/parser/extractors/typescript.d.ts.map +1 -0
  283. package/dist/parser/extractors/typescript.js +179 -0
  284. package/dist/parser/extractors/typescript.js.map +1 -0
  285. package/dist/parser/extractors/yaml.d.ts +13 -0
  286. package/dist/parser/extractors/yaml.d.ts.map +1 -0
  287. package/dist/parser/extractors/yaml.js +93 -0
  288. package/dist/parser/extractors/yaml.js.map +1 -0
  289. package/dist/parser/lang.d.ts +2 -2
  290. package/dist/parser/lang.d.ts.map +1 -1
  291. package/dist/parser/lang.js +19 -1
  292. package/dist/parser/lang.js.map +1 -1
  293. package/dist/parser/outline.d.ts +4 -0
  294. package/dist/parser/outline.d.ts.map +1 -1
  295. package/dist/parser/outline.js +32 -221
  296. package/dist/parser/outline.js.map +1 -1
  297. package/dist/parser/runtime.d.ts +7 -0
  298. package/dist/parser/runtime.d.ts.map +1 -1
  299. package/dist/parser/runtime.js +99 -10
  300. package/dist/parser/runtime.js.map +1 -1
  301. package/dist/parser/types.d.ts +1 -1
  302. package/dist/parser/types.d.ts.map +1 -1
  303. package/dist/parser/types.js.map +1 -1
  304. package/dist/ports/echo-kernel-transport.d.ts +12 -0
  305. package/dist/ports/echo-kernel-transport.d.ts.map +1 -0
  306. package/dist/ports/echo-kernel-transport.js +13 -0
  307. package/dist/ports/echo-kernel-transport.js.map +1 -0
  308. package/dist/ports/provenance-timeline.d.ts +10 -0
  309. package/dist/ports/provenance-timeline.d.ts.map +1 -0
  310. package/dist/ports/provenance-timeline.js +17 -0
  311. package/dist/ports/provenance-timeline.js.map +1 -0
  312. package/dist/ports/semantic-enrichment.d.ts +47 -0
  313. package/dist/ports/semantic-enrichment.d.ts.map +1 -0
  314. package/dist/ports/semantic-enrichment.js +2 -0
  315. package/dist/ports/semantic-enrichment.js.map +1 -0
  316. package/dist/ports/structural-reading.d.ts +100 -0
  317. package/dist/ports/structural-reading.d.ts.map +1 -0
  318. package/dist/ports/structural-reading.js +41 -0
  319. package/dist/ports/structural-reading.js.map +1 -0
  320. package/dist/warp/ast-import-resolver.d.ts.map +1 -1
  321. package/dist/warp/ast-import-resolver.js +2 -1
  322. package/dist/warp/ast-import-resolver.js.map +1 -1
  323. package/dist/warp/dead-symbols.d.ts.map +1 -1
  324. package/dist/warp/dead-symbols.js +4 -7
  325. package/dist/warp/dead-symbols.js.map +1 -1
  326. package/dist/warp/index-head.d.ts +4 -0
  327. package/dist/warp/index-head.d.ts.map +1 -1
  328. package/dist/warp/index-head.js +255 -22
  329. package/dist/warp/index-head.js.map +1 -1
  330. package/dist/warp/observers.d.ts.map +1 -1
  331. package/dist/warp/observers.js +3 -2
  332. package/dist/warp/observers.js.map +1 -1
  333. package/dist/warp/refactor-difficulty.d.ts.map +1 -1
  334. package/dist/warp/refactor-difficulty.js +4 -9
  335. package/dist/warp/refactor-difficulty.js.map +1 -1
  336. package/dist/warp/references.d.ts.map +1 -1
  337. package/dist/warp/references.js +2 -1
  338. package/dist/warp/references.js.map +1 -1
  339. package/dist/warp/semantic-enrichment.d.ts +14 -0
  340. package/dist/warp/semantic-enrichment.d.ts.map +1 -0
  341. package/dist/warp/semantic-enrichment.js +55 -0
  342. package/dist/warp/semantic-enrichment.js.map +1 -0
  343. package/dist/warp/structural-queries.d.ts.map +1 -1
  344. package/dist/warp/structural-queries.js +7 -14
  345. package/dist/warp/structural-queries.js.map +1 -1
  346. package/dist/warp/structural-reading-adapter.d.ts +28 -0
  347. package/dist/warp/structural-reading-adapter.d.ts.map +1 -0
  348. package/dist/warp/structural-reading-adapter.js +94 -0
  349. package/dist/warp/structural-reading-adapter.js.map +1 -0
  350. package/dist/warp/sym-id-codec.d.ts +14 -0
  351. package/dist/warp/sym-id-codec.d.ts.map +1 -0
  352. package/dist/warp/sym-id-codec.js +47 -0
  353. package/dist/warp/sym-id-codec.js.map +1 -0
  354. package/dist/warp/symbol-timeline.d.ts.map +1 -1
  355. package/dist/warp/symbol-timeline.js +6 -14
  356. package/dist/warp/symbol-timeline.js.map +1 -1
  357. package/dist/warp/warp-structural-churn.d.ts.map +1 -1
  358. package/dist/warp/warp-structural-churn.js +6 -10
  359. package/dist/warp/warp-structural-churn.js.map +1 -1
  360. package/dist/warp/warp-structural-log.d.ts.map +1 -1
  361. package/dist/warp/warp-structural-log.js +8 -10
  362. package/dist/warp/warp-structural-log.js.map +1 -1
  363. package/docs/CLI.md +63 -5
  364. package/docs/MCP.md +12 -6
  365. package/docs/SETUP.md +12 -6
  366. package/package.json +13 -4
@@ -0,0 +1,259 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Minimal deterministic codec helpers — little-endian binary encoding.
3
+ //
4
+ // This is a method-for-method TypeScript mirror of echo-wasm-abi::codec (Rust).
5
+ // Wire layout is identical: same field order, same type widths, same endianness.
6
+ //
7
+ // Canonicalization contract for f32 (matches F32Scalar::new in warp-math):
8
+ // NaN (any variant) → 0x7fc00000 (positive quiet NaN)
9
+ // subnormal → +0.0 (0x00000000)
10
+ // -0.0 → +0.0
11
+ // all other values pass through unchanged
12
+ // ---------------------------------------------------------------------------
13
+ // Writer
14
+ // ---------------------------------------------------------------------------
15
+ const INITIAL_CAPACITY = 256;
16
+ const U8_MAX = 0xff;
17
+ const U16_MAX = 0xffff;
18
+ const U32_MAX = 0xffffffff;
19
+ const I32_MIN = -0x80000000;
20
+ const I32_MAX = 0x7fffffff;
21
+ function assertUint(name, v, max) {
22
+ if (!Number.isInteger(v) || v < 0 || v > max) {
23
+ throw new CodecError(`${name} ${String(v)} is out of range`);
24
+ }
25
+ }
26
+ function assertInt32(v) {
27
+ if (!Number.isInteger(v) || v < I32_MIN || v > I32_MAX) {
28
+ throw new CodecError(`i32 ${String(v)} is out of range`);
29
+ }
30
+ }
31
+ export class Writer {
32
+ buf;
33
+ view;
34
+ pos;
35
+ constructor() {
36
+ this.buf = new Uint8Array(INITIAL_CAPACITY);
37
+ this.view = new DataView(this.buf.buffer);
38
+ this.pos = 0;
39
+ }
40
+ reserve(n) {
41
+ const needed = this.pos + n;
42
+ if (needed <= this.buf.length)
43
+ return;
44
+ let next = this.buf.length * 2;
45
+ while (next < needed)
46
+ next *= 2;
47
+ const grown = new Uint8Array(next);
48
+ grown.set(this.buf);
49
+ this.buf = grown;
50
+ this.view = new DataView(this.buf.buffer);
51
+ }
52
+ writeBytes(bytes) {
53
+ this.reserve(bytes.length);
54
+ this.buf.set(bytes, this.pos);
55
+ this.pos += bytes.length;
56
+ }
57
+ writeU8(v) {
58
+ assertUint('u8', v, U8_MAX);
59
+ this.reserve(1);
60
+ this.buf[this.pos] = v;
61
+ this.pos += 1;
62
+ }
63
+ writeU16Le(v) {
64
+ assertUint('u16', v, U16_MAX);
65
+ this.reserve(2);
66
+ this.view.setUint16(this.pos, v, /* littleEndian */ true);
67
+ this.pos += 2;
68
+ }
69
+ writeU32Le(v) {
70
+ assertUint('u32', v, U32_MAX);
71
+ this.reserve(4);
72
+ this.view.setUint32(this.pos, v, /* littleEndian */ true);
73
+ this.pos += 4;
74
+ }
75
+ writeI32Le(v) {
76
+ assertInt32(v);
77
+ this.reserve(4);
78
+ this.view.setInt32(this.pos, v, /* littleEndian */ true);
79
+ this.pos += 4;
80
+ }
81
+ /**
82
+ * Canonicalize `v` identically to `F32Scalar::new()` / `canonicalize_f32()`
83
+ * in Rust, then write 4 bytes LE.
84
+ *
85
+ * Caller contract: `v` must already be an exact f32-representable value.
86
+ * Do not feed f64 intermediate results into this method.
87
+ */
88
+ writeF32Le(v) {
89
+ this.reserve(4);
90
+ this.view.setFloat32(this.pos, canonicalizeF32(v), /* littleEndian */ true);
91
+ this.pos += 4;
92
+ }
93
+ /**
94
+ * 1 byte: 0x00 = false, 0x01 = true. Takes the literal byte value
95
+ * directly rather than a `boolean` because the quality gate forbids
96
+ * boolean parameters (no flag-shaped function signatures). Callers
97
+ * with a runtime `boolean` should write `w.writeBool(v ? 1 : 0)`.
98
+ */
99
+ writeBool(v) {
100
+ this.writeU8(v);
101
+ }
102
+ /**
103
+ * Write a length-prefixed UTF-8 string (u32 LE length + bytes, no null
104
+ * terminator). Caller must ensure the string is NFC-normalized before
105
+ * encoding if cross-platform digest stability is required.
106
+ */
107
+ writeString(v) {
108
+ const bytes = new TextEncoder().encode(v);
109
+ this.writeU32Le(bytes.length);
110
+ this.writeBytes(bytes);
111
+ }
112
+ /** Presence tag (0x00 = null) + encoded payload when present. */
113
+ writeOption(v, encode) {
114
+ if (v === null) {
115
+ this.writeU8(0x00);
116
+ }
117
+ else {
118
+ this.writeU8(0x01);
119
+ encode(this, v);
120
+ }
121
+ }
122
+ /** u32 LE element count + each element encoded inline. */
123
+ writeList(vs, encode) {
124
+ this.writeU32Le(vs.length);
125
+ for (const v of vs) {
126
+ encode(this, v);
127
+ }
128
+ }
129
+ finish() {
130
+ return this.buf.slice(0, this.pos);
131
+ }
132
+ }
133
+ // ---------------------------------------------------------------------------
134
+ // Reader
135
+ // ---------------------------------------------------------------------------
136
+ export class CodecError extends Error {
137
+ constructor(message) {
138
+ super(message);
139
+ this.name = 'CodecError';
140
+ }
141
+ }
142
+ export class Reader {
143
+ view;
144
+ pos;
145
+ constructor(bytes) {
146
+ this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
147
+ this.pos = 0;
148
+ }
149
+ /** Number of bytes left to consume from the underlying buffer. */
150
+ remaining() {
151
+ return this.view.byteLength - this.pos;
152
+ }
153
+ take(n) {
154
+ const start = this.pos;
155
+ if (start + n > this.view.byteLength) {
156
+ throw new CodecError('buffer too short');
157
+ }
158
+ this.pos += n;
159
+ return start;
160
+ }
161
+ readU8() {
162
+ const at = this.take(1);
163
+ return this.view.getUint8(at);
164
+ }
165
+ readU16Le() {
166
+ const at = this.take(2);
167
+ return this.view.getUint16(at, /* littleEndian */ true);
168
+ }
169
+ readU32Le() {
170
+ const at = this.take(4);
171
+ return this.view.getUint32(at, /* littleEndian */ true);
172
+ }
173
+ readI32Le() {
174
+ const at = this.take(4);
175
+ return this.view.getInt32(at, /* littleEndian */ true);
176
+ }
177
+ readF32Le() {
178
+ const at = this.take(4);
179
+ return this.view.getFloat32(at, /* littleEndian */ true);
180
+ }
181
+ readBool() {
182
+ const tag = this.readU8();
183
+ if (tag === 0x00)
184
+ return false;
185
+ if (tag === 0x01)
186
+ return true;
187
+ throw new CodecError(`invalid bool tag: 0x${tag.toString(16).padStart(2, '0')}`);
188
+ }
189
+ readString() {
190
+ const len = this.readU32Le();
191
+ const at = this.take(len);
192
+ const slice = new Uint8Array(this.view.buffer, this.view.byteOffset + at, len);
193
+ try {
194
+ return new TextDecoder('utf-8', { fatal: true }).decode(slice);
195
+ }
196
+ catch {
197
+ throw new CodecError('invalid utf-8');
198
+ }
199
+ }
200
+ readOption(decode) {
201
+ const tag = this.readU8();
202
+ if (tag === 0x00)
203
+ return null;
204
+ if (tag === 0x01)
205
+ return decode(this);
206
+ throw new CodecError(`invalid option tag: 0x${tag.toString(16).padStart(2, '0')}`);
207
+ }
208
+ readList(decode) {
209
+ const count = this.readU32Le();
210
+ const out = [];
211
+ for (let i = 0; i < count; i++) {
212
+ out.push(decode(this));
213
+ }
214
+ return out;
215
+ }
216
+ }
217
+ // ---------------------------------------------------------------------------
218
+ // F32 canonicalization
219
+ // ---------------------------------------------------------------------------
220
+ // Shared DataView for bit-manipulation of f32 values.
221
+ const _f32Buf = new ArrayBuffer(4);
222
+ const _f32View = new DataView(_f32Buf);
223
+ /** Canonical quiet-NaN bit pattern (matches `F32Scalar` in warp-math). */
224
+ const F32_CANONICAL_NAN_BITS = 0x7fc0_0000;
225
+ /**
226
+ * Canonicalize a number as an f32, matching `canonicalize_f32()` in Rust.
227
+ *
228
+ * - NaN (any) → 0x7fc00000 (positive quiet NaN)
229
+ * - subnormal → +0.0
230
+ * - -0.0 → +0.0
231
+ * - all other values pass through unchanged
232
+ *
233
+ * JavaScript has no f32 type. This function reads the float32 bit pattern
234
+ * written by `DataView.setFloat32` (which narrows the f64 to the nearest f32),
235
+ * then applies the canonicalization rules above.
236
+ */
237
+ export function canonicalizeF32(v) {
238
+ // Write as f32 to capture the narrowed bit pattern.
239
+ _f32View.setFloat32(0, v, /* littleEndian */ false);
240
+ const bits = _f32View.getUint32(0, /* littleEndian */ false);
241
+ const exponent = (bits >>> 23) & 0xff;
242
+ const mantissa = bits & 0x007f_ffff;
243
+ // NaN: exponent all-1s, mantissa non-zero.
244
+ if (exponent === 0xff && mantissa !== 0) {
245
+ _f32View.setUint32(0, F32_CANONICAL_NAN_BITS, /* littleEndian */ false);
246
+ return _f32View.getFloat32(0, /* littleEndian */ false);
247
+ }
248
+ // Subnormal: exponent zero, mantissa non-zero. → +0.0
249
+ if (exponent === 0 && mantissa !== 0) {
250
+ return 0;
251
+ }
252
+ // -0.0: sign bit set, exponent zero, mantissa zero. → +0.0
253
+ if (bits === 0x8000_0000) {
254
+ return 0;
255
+ }
256
+ // All other values (normal, ±Infinity, +0.0) pass through.
257
+ return _f32View.getFloat32(0, /* littleEndian */ false);
258
+ }
259
+ //# sourceMappingURL=codec-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec-runtime.js","sourceRoot":"","sources":["../../src/echo/codec-runtime.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,uEAAuE;AACvE,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,EAAE;AACF,2EAA2E;AAC3E,yDAAyD;AACzD,4CAA4C;AAC5C,8BAA8B;AAC9B,8CAA8C;AAE9C,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,OAAO,GAAG,UAAU,CAAC;AAC3B,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC;AAC5B,MAAM,OAAO,GAAG,UAAU,CAAC;AAE3B,SAAS,UAAU,CAAC,IAAY,EAAE,CAAS,EAAE,GAAW;IACpD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAC3C,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACjE,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;QACrD,MAAM,IAAI,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC7D,CAAC;AACL,CAAC;AAED,MAAM,OAAO,MAAM;IACP,GAAG,CAAa;IAChB,IAAI,CAAW;IACf,GAAG,CAAS;IAEpB;QACI,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACjB,CAAC;IAEO,OAAO,CAAC,CAAS;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO;QACtC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,OAAO,IAAI,GAAG,MAAM;YAAE,IAAI,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU,CAAC,KAAiB;QACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,CAAS;QACb,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,CAAS;QAChB,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,CAAS;QAChB,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,CAAS;QAChB,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,CAAS;QAChB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,CAAQ;QACd,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAS;QACjB,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,iEAAiE;IACjE,WAAW,CAAI,CAAW,EAAE,MAAiC;QACzD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,0DAA0D;IAC1D,SAAS,CAAI,EAAgB,EAAE,MAAiC;QAC5D,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;CACJ;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,OAAO,UAAW,SAAQ,KAAK;IACjC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC7B,CAAC;CACJ;AAED,MAAM,OAAO,MAAM;IACE,IAAI,CAAW;IACxB,GAAG,CAAS;IAEpB,YAAY,KAAiB;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,kEAAkE;IAClE,SAAS;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;IAC3C,CAAC;IAEO,IAAI,CAAC,CAAS;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM;QACF,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,SAAS;QACL,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS;QACL,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS;QACL,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS;QACL,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,QAAQ;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,IAAI,UAAU,CAAC,uBAAuB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,UAAU;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,UAAU,CACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,EACzB,GAAG,CACN,CAAC;QACF,IAAI,CAAC;YACD,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAED,UAAU,CAAI,MAAwB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,UAAU,CAAC,yBAAyB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,QAAQ,CAAI,MAAwB;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,sDAAsD;AACtD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AAEvC,0EAA0E;AAC1E,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS;IACrC,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,WAAW,CAAC;IAEpC,2CAA2C;IAC3C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACtC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,sDAAsD;IACtD,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC;IACb,CAAC;IAED,2DAA2D;IAC3D,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,2DAA2D;IAC3D,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type { EchoKernelTransport } from "../ports/echo-kernel-transport.js";
2
+ import { type CborValue } from "./canonical-cbor.js";
3
+ import { type RecordGitWarpImportBatchVars } from "../generated/graft-structural-history.codec.generated.js";
4
+ export interface EchoContractObstruction {
5
+ readonly code: string;
6
+ readonly message: string;
7
+ readonly recovery?: string;
8
+ }
9
+ export declare class EchoSubstrateObstructionError extends Error {
10
+ readonly code: string;
11
+ readonly recovery: string | undefined;
12
+ constructor(obstruction: EchoContractObstruction);
13
+ }
14
+ export interface EchoIntentReceipt {
15
+ readonly submissionId: string;
16
+ readonly operationName: string;
17
+ }
18
+ export type EchoIntentOutcome = {
19
+ readonly kind: "applied";
20
+ readonly receipt: EchoIntentReceipt;
21
+ } | {
22
+ readonly kind: "rejected";
23
+ readonly reason: string;
24
+ readonly receipt: EchoIntentReceipt;
25
+ } | {
26
+ readonly kind: "pending";
27
+ } | {
28
+ readonly kind: "unknown";
29
+ } | {
30
+ readonly kind: "obstructed";
31
+ readonly obstruction: EchoContractObstruction;
32
+ };
33
+ export interface EchoIntentSubmissionHandle {
34
+ readonly submissionId: string;
35
+ }
36
+ export interface EchoStructuralReadingRecord {
37
+ readonly readingId: string;
38
+ readonly readingKind: string;
39
+ readonly basisId: string;
40
+ readonly payloadJson: CborValue;
41
+ readonly evidence: {
42
+ readonly family: string;
43
+ readonly readingId: string;
44
+ readonly basis: Readonly<Record<string, CborValue>>;
45
+ };
46
+ }
47
+ export interface EchoStructuralReadingsObservation {
48
+ readonly readings: readonly EchoStructuralReadingRecord[];
49
+ readonly obstruction?: EchoContractObstruction;
50
+ }
51
+ export interface EchoStructuralReadingsRequest {
52
+ readonly basisId: string;
53
+ readonly readingKind?: string;
54
+ }
55
+ export interface EchoRetainedEvidenceRequest {
56
+ readonly basisId: string;
57
+ }
58
+ export interface EchoRetainedEvidenceResult {
59
+ readonly posture: "retained" | "missing" | "obstructed";
60
+ }
61
+ export interface EchoStructuralHistoryClient {
62
+ recordGitWarpImportBatch(vars: RecordGitWarpImportBatchVars): Promise<EchoIntentSubmissionHandle>;
63
+ observeIntentOutcome(submissionId: string): Promise<EchoIntentOutcome>;
64
+ observeStructuralReadings(request: EchoStructuralReadingsRequest): Promise<EchoStructuralReadingsObservation>;
65
+ inspectRetainedEvidence(request: EchoRetainedEvidenceRequest): Promise<EchoRetainedEvidenceResult>;
66
+ }
67
+ export declare function createEchoStructuralHistoryClient(transport: EchoKernelTransport): EchoStructuralHistoryClient;
68
+ //# sourceMappingURL=structural-history-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural-history-client.d.ts","sourceRoot":"","sources":["../../src/echo/structural-history-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Typed structural-history client over the Echo kernel transport.
3
+ //
4
+ // Rides the generated operation codecs and the EINT v1 / CBOR wire
5
+ // envelopes. Outcome kinds mirror Echo's product-facing intent surface
6
+ // IntentOutcome::{Unknown, Pending, Applied, Rejected, Obstructed}
7
+ // [echo crates/warp-core/src/trusted_runtime_host.rs#740@2048da5c].
8
+ // ---------------------------------------------------------------------------
9
+ import { isCborArray } from "./canonical-cbor.js";
10
+ import { ABI_ERROR_NAMES, EchoEnvelopeCodecError, STRUCTURAL_HISTORY_OBSERVE_OPERATIONS, decodeStructuralHistoryIntentResponse, decodeStructuralHistoryObserveResponse, encodeStructuralHistoryObserveRequest, packStructuralHistoryIntentV1, } from "./structural-history-envelope-codec.js";
11
+ import { OP_RECORD_GIT_WARP_IMPORT_BATCH, encodeRecordGitWarpImportBatchVars, } from "../generated/graft-structural-history.codec.generated.js";
12
+ export class EchoSubstrateObstructionError extends Error {
13
+ code;
14
+ recovery;
15
+ constructor(obstruction) {
16
+ super(`${obstruction.code}: ${obstruction.message}`);
17
+ this.name = "EchoSubstrateObstructionError";
18
+ this.code = obstruction.code;
19
+ this.recovery = obstruction.recovery;
20
+ }
21
+ }
22
+ function asRecord(value, label) {
23
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
24
+ throw new EchoEnvelopeCodecError(`${label} is not a map`);
25
+ }
26
+ return value;
27
+ }
28
+ function asString(value, label) {
29
+ if (typeof value !== "string") {
30
+ throw new EchoEnvelopeCodecError(`${label} is not a string`);
31
+ }
32
+ return value;
33
+ }
34
+ function parseObstruction(value) {
35
+ const record = asRecord(value, "obstruction");
36
+ const recovery = record["recovery"];
37
+ return {
38
+ code: asString(record["code"] ?? null, "obstruction.code"),
39
+ message: asString(record["message"] ?? null, "obstruction.message"),
40
+ ...(typeof recovery === "string" ? { recovery } : {}),
41
+ };
42
+ }
43
+ function parseReceipt(value) {
44
+ const record = asRecord(value, "receipt");
45
+ return {
46
+ submissionId: asString(record["submissionId"] ?? null, "receipt.submissionId"),
47
+ operationName: asString(record["operationName"] ?? null, "receipt.operationName"),
48
+ };
49
+ }
50
+ function parseOutcome(value) {
51
+ const record = asRecord(value, "intent outcome");
52
+ const kind = asString(record["kind"] ?? null, "outcome.kind");
53
+ switch (kind) {
54
+ case "applied":
55
+ return { kind, receipt: parseReceipt(record["receipt"] ?? null) };
56
+ case "rejected":
57
+ return {
58
+ kind,
59
+ reason: asString(record["reason"] ?? null, "outcome.reason"),
60
+ receipt: parseReceipt(record["receipt"] ?? null),
61
+ };
62
+ case "pending":
63
+ case "unknown":
64
+ return { kind };
65
+ case "obstructed":
66
+ return { kind, obstruction: parseObstruction(record["obstruction"] ?? null) };
67
+ default:
68
+ throw new EchoEnvelopeCodecError(`unknown intent outcome kind: ${kind}`);
69
+ }
70
+ }
71
+ function throwWireError(code, message) {
72
+ throw new EchoSubstrateObstructionError({
73
+ code: ABI_ERROR_NAMES[code] ?? `ABI_ERROR_${String(code)}`,
74
+ message,
75
+ });
76
+ }
77
+ export function createEchoStructuralHistoryClient(transport) {
78
+ async function observe(operationName, vars) {
79
+ // The transport seam is synchronous today; awaiting keeps the client
80
+ // contract stable when a daemon-bridged async kernel replaces the fake.
81
+ const responseBytes = await Promise.resolve(transport.observeBytes(encodeStructuralHistoryObserveRequest({ operationName, vars })));
82
+ const response = decodeStructuralHistoryObserveResponse(responseBytes);
83
+ if (!response.ok) {
84
+ throwWireError(response.code, response.message);
85
+ }
86
+ return { ...response.fields };
87
+ }
88
+ return {
89
+ async recordGitWarpImportBatch(vars) {
90
+ const envelope = packStructuralHistoryIntentV1(OP_RECORD_GIT_WARP_IMPORT_BATCH, encodeRecordGitWarpImportBatchVars(vars));
91
+ const responseBytes = await Promise.resolve(transport.submitIntentBytes(envelope));
92
+ const response = decodeStructuralHistoryIntentResponse(responseBytes);
93
+ if (!response.ok) {
94
+ throwWireError(response.code, response.message);
95
+ }
96
+ return {
97
+ submissionId: asString(response.fields["submissionId"] ?? null, "submissionId"),
98
+ };
99
+ },
100
+ async observeIntentOutcome(submissionId) {
101
+ const fields = await observe(STRUCTURAL_HISTORY_OBSERVE_OPERATIONS.intentOutcome, { submissionId });
102
+ return parseOutcome(fields["outcome"] ?? null);
103
+ },
104
+ async observeStructuralReadings(request) {
105
+ const fields = await observe(STRUCTURAL_HISTORY_OBSERVE_OPERATIONS.structuralReadings, {
106
+ basisId: request.basisId,
107
+ readingKind: request.readingKind ?? null,
108
+ });
109
+ const rawReadings = fields["readings"] ?? null;
110
+ if (!isCborArray(rawReadings)) {
111
+ throw new EchoEnvelopeCodecError("structural readings response is missing its readings array");
112
+ }
113
+ const readings = [];
114
+ {
115
+ for (const raw of rawReadings) {
116
+ const record = asRecord(raw, "structural reading");
117
+ const evidence = asRecord(record["evidence"] ?? null, "reading evidence");
118
+ readings.push({
119
+ readingId: asString(record["readingId"] ?? null, "reading.readingId"),
120
+ readingKind: asString(record["readingKind"] ?? null, "reading.readingKind"),
121
+ basisId: asString(record["basisId"] ?? null, "reading.basisId"),
122
+ payloadJson: record["payloadJson"] ?? null,
123
+ evidence: {
124
+ family: asString(evidence["family"] ?? null, "evidence.family"),
125
+ readingId: asString(evidence["readingId"] ?? null, "evidence.readingId"),
126
+ basis: asRecord(evidence["basis"] ?? null, "evidence.basis"),
127
+ },
128
+ });
129
+ }
130
+ }
131
+ const obstruction = fields["obstruction"];
132
+ return {
133
+ readings,
134
+ ...(obstruction !== undefined && obstruction !== null
135
+ ? { obstruction: parseObstruction(obstruction) }
136
+ : {}),
137
+ };
138
+ },
139
+ async inspectRetainedEvidence(request) {
140
+ const fields = await observe(STRUCTURAL_HISTORY_OBSERVE_OPERATIONS.retainedEvidencePosture, { basisId: request.basisId });
141
+ const posture = asString(fields["posture"] ?? null, "retained evidence posture");
142
+ if (posture !== "retained" && posture !== "missing" && posture !== "obstructed") {
143
+ throw new EchoEnvelopeCodecError(`unknown retained posture: ${posture}`);
144
+ }
145
+ return { posture };
146
+ },
147
+ };
148
+ }
149
+ //# sourceMappingURL=structural-history-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural-history-client.js","sourceRoot":"","sources":["../../src/echo/structural-history-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { type CborValue } from "./canonical-cbor.js";
2
+ /** ABI v3 error codes [echo docs/spec/SPEC-0009-wasm-abi-v3.md@2048da5c]. */
3
+ export declare const ABI_ERROR_CODES: {
4
+ readonly INVALID_INTENT: 2;
5
+ readonly NOT_SUPPORTED: 5;
6
+ readonly CODEC_ERROR: 6;
7
+ readonly UNSUPPORTED_QUERY: 11;
8
+ readonly FORBIDDEN_CONTROL_INTENT: 19;
9
+ };
10
+ export declare const ABI_ERROR_NAMES: Readonly<Record<number, string>>;
11
+ /** Envelope-level observe operation names (pre-observer-plan convention). */
12
+ export declare const STRUCTURAL_HISTORY_OBSERVE_OPERATIONS: {
13
+ readonly intentOutcome: "intentOutcome";
14
+ readonly structuralReadings: "structuralReadings";
15
+ readonly retainedEvidencePosture: "retainedEvidencePosture";
16
+ };
17
+ /** Default basis id used by the witness fixture space. */
18
+ export declare const DEFAULT_STRUCTURAL_HISTORY_BASIS_ID = "basis-live";
19
+ export declare class EchoEnvelopeCodecError extends Error {
20
+ constructor(message: string);
21
+ }
22
+ export declare function packStructuralHistoryIntentV1(opId: number, vars: Uint8Array): Uint8Array;
23
+ export interface StructuralHistoryIntentEnvelope {
24
+ readonly opId: number;
25
+ readonly vars: Uint8Array;
26
+ }
27
+ export declare function unpackStructuralHistoryIntentV1(envelope: Uint8Array): StructuralHistoryIntentEnvelope;
28
+ export interface StructuralHistoryObserveRequest {
29
+ readonly operationName: string;
30
+ readonly vars: CborValue;
31
+ }
32
+ export declare function encodeStructuralHistoryObserveRequest(request: StructuralHistoryObserveRequest): Uint8Array;
33
+ export declare function decodeStructuralHistoryObserveRequest(bytes: Uint8Array): StructuralHistoryObserveRequest;
34
+ export type StructuralHistoryWireResponse = {
35
+ readonly ok: true;
36
+ readonly fields: Readonly<Record<string, CborValue>>;
37
+ } | {
38
+ readonly ok: false;
39
+ readonly code: number;
40
+ readonly message: string;
41
+ };
42
+ export declare function encodeStructuralHistoryOkResponse(fields: Readonly<Record<string, CborValue>>): Uint8Array;
43
+ export declare function encodeStructuralHistoryErrorResponse(code: number, message: string): Uint8Array;
44
+ export declare function decodeStructuralHistoryIntentResponse(bytes: Uint8Array): StructuralHistoryWireResponse;
45
+ export declare function decodeStructuralHistoryObserveResponse(bytes: Uint8Array): StructuralHistoryWireResponse;
46
+ //# sourceMappingURL=structural-history-envelope-codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural-history-envelope-codec.d.ts","sourceRoot":"","sources":["../../src/echo/structural-history-envelope-codec.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAK7B,6EAA6E;AAC7E,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE5D,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,qCAAqC;;;;CAIxC,CAAC;AAEX,0DAA0D;AAC1D,eAAO,MAAM,mCAAmC,eAAe,CAAC;AAEhE,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GACf,UAAU,CAQZ;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,UAAU,GACnB,+BAA+B,CAgBjC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,+BAA+B,GACvC,UAAU,CAKZ;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,UAAU,GAChB,+BAA+B,CAOjC;AAED,MAAM,MAAM,6BAA6B,GACrC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAC1C,UAAU,CAEZ;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,UAAU,CAEZ;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,UAAU,GAChB,6BAA6B,CAE/B;AAED,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,UAAU,GAChB,6BAA6B,CAE/B"}