@adammcarter/use-cases 0.1.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 (704) hide show
  1. package/.agents/skills/migration/SKILL.md +85 -0
  2. package/.agents/skills/showcase/SKILL.md +60 -0
  3. package/.agents/skills/use-cases/SKILL.md +161 -0
  4. package/.agents/skills/walkthrough/SKILL.md +48 -0
  5. package/.claude-plugin/plugin.json +14 -0
  6. package/.codex-plugin/plugin.json +33 -0
  7. package/.mcp.json +8 -0
  8. package/.opencode/plugin/use-cases.js +32 -0
  9. package/CHANGELOG.md +125 -0
  10. package/LICENSE +21 -0
  11. package/README.md +112 -0
  12. package/bootstrap/use-cases.md +60 -0
  13. package/docs/README.md +51 -0
  14. package/docs/acceptance.md +16 -0
  15. package/docs/activation.md +89 -0
  16. package/docs/adr/0001-p0-bootstrap-decisions.md +107 -0
  17. package/docs/adr/0002-p1-schema-contracts.md +136 -0
  18. package/docs/adr/0003-p2-use-case-matrix-contracts.md +67 -0
  19. package/docs/adr/0004-p3-evidence-ledger-contracts.md +85 -0
  20. package/docs/adr/0005-p4-cli-contract.md +70 -0
  21. package/docs/adr/0006-trusted-user-approval-path.md +125 -0
  22. package/docs/cli.md +108 -0
  23. package/docs/data-model.md +56 -0
  24. package/docs/getting-started.md +296 -0
  25. package/docs/hosts.md +30 -0
  26. package/docs/markers-adoption.md +100 -0
  27. package/docs/mcp.md +114 -0
  28. package/docs/migration.md +90 -0
  29. package/docs/reference/error-codes.md +123 -0
  30. package/docs/reference/stability.md +123 -0
  31. package/docs/release.md +26 -0
  32. package/docs/security/ci-hardening.md +144 -0
  33. package/docs/security/key-management.md +158 -0
  34. package/docs/security.md +66 -0
  35. package/docs/showcase.md +39 -0
  36. package/docs/tutorials/python-pytest.md +188 -0
  37. package/examples/basic-product/demo-capsules/product-search.yml +23 -0
  38. package/examples/basic-product/evidence/by-id/ev/evidence-basic-search.jsonl +1 -0
  39. package/examples/basic-product/showcase-runs/run.basic.product.search/events.jsonl +4 -0
  40. package/examples/basic-product/use-cases/product.yml +85 -0
  41. package/examples/basic-product/use-cases.yml +9 -0
  42. package/examples/damaged-product/evidence/broken.jsonl +1 -0
  43. package/examples/damaged-product/use-cases/duplicate-a.yml +28 -0
  44. package/examples/damaged-product/use-cases/duplicate-b.yml +28 -0
  45. package/examples/damaged-product/use-cases/malformed.yml +14 -0
  46. package/examples/damaged-product/use-cases/valid-sibling.yml +28 -0
  47. package/examples/damaged-product/use-cases.yml +9 -0
  48. package/examples/host-projections/use-cases.yml +9 -0
  49. package/examples/python-pytest/README.md +39 -0
  50. package/examples/python-pytest/pytest.ini +8 -0
  51. package/examples/python-pytest/src/coupon.py +32 -0
  52. package/examples/python-pytest/tests/use_cases/example.checkout.apply_coupon_test.py +31 -0
  53. package/examples/python-pytest/use-cases/checkout.yml +47 -0
  54. package/examples/python-pytest/use-cases.yml +19 -0
  55. package/hooks/hooks-codex.json +16 -0
  56. package/hooks/hooks.json +16 -0
  57. package/hooks/session-start +42 -0
  58. package/hosts/claude.yml +29 -0
  59. package/hosts/codex.yml +29 -0
  60. package/hosts/copilot.yml +29 -0
  61. package/hosts/opencode.yml +29 -0
  62. package/package.json +81 -0
  63. package/packages/cli/README.md +37 -0
  64. package/packages/cli/dist/args/parse.d.ts +6 -0
  65. package/packages/cli/dist/args/parse.d.ts.map +1 -0
  66. package/packages/cli/dist/args/parse.js +55 -0
  67. package/packages/cli/dist/args/parse.js.map +1 -0
  68. package/packages/cli/dist/args/validate.d.ts +3 -0
  69. package/packages/cli/dist/args/validate.d.ts.map +1 -0
  70. package/packages/cli/dist/args/validate.js +80 -0
  71. package/packages/cli/dist/args/validate.js.map +1 -0
  72. package/packages/cli/dist/builtins.d.ts +2 -0
  73. package/packages/cli/dist/builtins.d.ts.map +1 -0
  74. package/packages/cli/dist/builtins.js +235 -0
  75. package/packages/cli/dist/builtins.js.map +1 -0
  76. package/packages/cli/dist/command/dispatch.d.ts +4 -0
  77. package/packages/cli/dist/command/dispatch.d.ts.map +1 -0
  78. package/packages/cli/dist/command/dispatch.js +45 -0
  79. package/packages/cli/dist/command/dispatch.js.map +1 -0
  80. package/packages/cli/dist/command/help-catalog.d.ts +13 -0
  81. package/packages/cli/dist/command/help-catalog.d.ts.map +1 -0
  82. package/packages/cli/dist/command/help-catalog.js +42 -0
  83. package/packages/cli/dist/command/help-catalog.js.map +1 -0
  84. package/packages/cli/dist/command/registry.d.ts +3 -0
  85. package/packages/cli/dist/command/registry.d.ts.map +1 -0
  86. package/packages/cli/dist/command/registry.js +33 -0
  87. package/packages/cli/dist/command/registry.js.map +1 -0
  88. package/packages/cli/dist/command/types.d.ts +32 -0
  89. package/packages/cli/dist/command/types.d.ts.map +1 -0
  90. package/packages/cli/dist/command/types.js +6 -0
  91. package/packages/cli/dist/command/types.js.map +1 -0
  92. package/packages/cli/dist/commands/capsule.d.ts +7 -0
  93. package/packages/cli/dist/commands/capsule.d.ts.map +1 -0
  94. package/packages/cli/dist/commands/capsule.js +178 -0
  95. package/packages/cli/dist/commands/capsule.js.map +1 -0
  96. package/packages/cli/dist/commands/common.d.ts +7 -0
  97. package/packages/cli/dist/commands/common.d.ts.map +1 -0
  98. package/packages/cli/dist/commands/common.js +32 -0
  99. package/packages/cli/dist/commands/common.js.map +1 -0
  100. package/packages/cli/dist/commands/doctor.d.ts +6 -0
  101. package/packages/cli/dist/commands/doctor.d.ts.map +1 -0
  102. package/packages/cli/dist/commands/doctor.js +133 -0
  103. package/packages/cli/dist/commands/doctor.js.map +1 -0
  104. package/packages/cli/dist/commands/evidence.d.ts +6 -0
  105. package/packages/cli/dist/commands/evidence.d.ts.map +1 -0
  106. package/packages/cli/dist/commands/evidence.js +191 -0
  107. package/packages/cli/dist/commands/evidence.js.map +1 -0
  108. package/packages/cli/dist/commands/host.d.ts +6 -0
  109. package/packages/cli/dist/commands/host.d.ts.map +1 -0
  110. package/packages/cli/dist/commands/host.js +180 -0
  111. package/packages/cli/dist/commands/host.js.map +1 -0
  112. package/packages/cli/dist/commands/keygen.d.ts +4 -0
  113. package/packages/cli/dist/commands/keygen.d.ts.map +1 -0
  114. package/packages/cli/dist/commands/keygen.js +132 -0
  115. package/packages/cli/dist/commands/keygen.js.map +1 -0
  116. package/packages/cli/dist/commands/markers.d.ts +8 -0
  117. package/packages/cli/dist/commands/markers.d.ts.map +1 -0
  118. package/packages/cli/dist/commands/markers.js +455 -0
  119. package/packages/cli/dist/commands/markers.js.map +1 -0
  120. package/packages/cli/dist/commands/matrix.d.ts +8 -0
  121. package/packages/cli/dist/commands/matrix.d.ts.map +1 -0
  122. package/packages/cli/dist/commands/matrix.js +237 -0
  123. package/packages/cli/dist/commands/matrix.js.map +1 -0
  124. package/packages/cli/dist/commands/migrate.d.ts +4 -0
  125. package/packages/cli/dist/commands/migrate.d.ts.map +1 -0
  126. package/packages/cli/dist/commands/migrate.js +82 -0
  127. package/packages/cli/dist/commands/migrate.js.map +1 -0
  128. package/packages/cli/dist/commands/plan.d.ts +6 -0
  129. package/packages/cli/dist/commands/plan.d.ts.map +1 -0
  130. package/packages/cli/dist/commands/plan.js +129 -0
  131. package/packages/cli/dist/commands/plan.js.map +1 -0
  132. package/packages/cli/dist/commands/recover.d.ts +4 -0
  133. package/packages/cli/dist/commands/recover.d.ts.map +1 -0
  134. package/packages/cli/dist/commands/recover.js +352 -0
  135. package/packages/cli/dist/commands/recover.js.map +1 -0
  136. package/packages/cli/dist/commands/schema.d.ts +5 -0
  137. package/packages/cli/dist/commands/schema.d.ts.map +1 -0
  138. package/packages/cli/dist/commands/schema.js +51 -0
  139. package/packages/cli/dist/commands/schema.js.map +1 -0
  140. package/packages/cli/dist/commands/showcase.d.ts +14 -0
  141. package/packages/cli/dist/commands/showcase.d.ts.map +1 -0
  142. package/packages/cli/dist/commands/showcase.js +638 -0
  143. package/packages/cli/dist/commands/showcase.js.map +1 -0
  144. package/packages/cli/dist/commands/workflow.d.ts +5 -0
  145. package/packages/cli/dist/commands/workflow.d.ts.map +1 -0
  146. package/packages/cli/dist/commands/workflow.js +107 -0
  147. package/packages/cli/dist/commands/workflow.js.map +1 -0
  148. package/packages/cli/dist/coreLoader.d.ts +6 -0
  149. package/packages/cli/dist/coreLoader.d.ts.map +1 -0
  150. package/packages/cli/dist/coreLoader.js +34 -0
  151. package/packages/cli/dist/coreLoader.js.map +1 -0
  152. package/packages/cli/dist/index.d.ts +5 -0
  153. package/packages/cli/dist/index.d.ts.map +1 -0
  154. package/packages/cli/dist/index.js +83 -0
  155. package/packages/cli/dist/index.js.map +1 -0
  156. package/packages/cli/dist/render.d.ts +2 -0
  157. package/packages/cli/dist/render.d.ts.map +1 -0
  158. package/packages/cli/dist/render.js +88 -0
  159. package/packages/cli/dist/render.js.map +1 -0
  160. package/packages/cli/dist/runtime.d.ts +25 -0
  161. package/packages/cli/dist/runtime.d.ts.map +1 -0
  162. package/packages/cli/dist/runtime.js +89 -0
  163. package/packages/cli/dist/runtime.js.map +1 -0
  164. package/packages/cli/package.json +38 -0
  165. package/packages/core/README.md +37 -0
  166. package/packages/core/dist/capsules/index.d.ts +4 -0
  167. package/packages/core/dist/capsules/index.d.ts.map +1 -0
  168. package/packages/core/dist/capsules/index.js +4 -0
  169. package/packages/core/dist/capsules/index.js.map +1 -0
  170. package/packages/core/dist/capsules/loadCapsule.d.ts +11 -0
  171. package/packages/core/dist/capsules/loadCapsule.d.ts.map +1 -0
  172. package/packages/core/dist/capsules/loadCapsule.js +167 -0
  173. package/packages/core/dist/capsules/loadCapsule.js.map +1 -0
  174. package/packages/core/dist/capsules/runCapsule.d.ts +3 -0
  175. package/packages/core/dist/capsules/runCapsule.d.ts.map +1 -0
  176. package/packages/core/dist/capsules/runCapsule.js +333 -0
  177. package/packages/core/dist/capsules/runCapsule.js.map +1 -0
  178. package/packages/core/dist/capsules/types.d.ts +106 -0
  179. package/packages/core/dist/capsules/types.d.ts.map +1 -0
  180. package/packages/core/dist/capsules/types.js +2 -0
  181. package/packages/core/dist/capsules/types.js.map +1 -0
  182. package/packages/core/dist/durableWrite.d.ts +2 -0
  183. package/packages/core/dist/durableWrite.d.ts.map +1 -0
  184. package/packages/core/dist/durableWrite.js +34 -0
  185. package/packages/core/dist/durableWrite.js.map +1 -0
  186. package/packages/core/dist/errors/registry.d.ts +122 -0
  187. package/packages/core/dist/errors/registry.d.ts.map +1 -0
  188. package/packages/core/dist/errors/registry.js +206 -0
  189. package/packages/core/dist/errors/registry.js.map +1 -0
  190. package/packages/core/dist/errors/render.d.ts +3 -0
  191. package/packages/core/dist/errors/render.d.ts.map +1 -0
  192. package/packages/core/dist/errors/render.js +64 -0
  193. package/packages/core/dist/errors/render.js.map +1 -0
  194. package/packages/core/dist/errors.d.ts +5 -0
  195. package/packages/core/dist/errors.d.ts.map +1 -0
  196. package/packages/core/dist/errors.js +9 -0
  197. package/packages/core/dist/errors.js.map +1 -0
  198. package/packages/core/dist/evidence/appendEvidenceEvent.d.ts +27 -0
  199. package/packages/core/dist/evidence/appendEvidenceEvent.d.ts.map +1 -0
  200. package/packages/core/dist/evidence/appendEvidenceEvent.js +218 -0
  201. package/packages/core/dist/evidence/appendEvidenceEvent.js.map +1 -0
  202. package/packages/core/dist/evidence/assurance.d.ts +18 -0
  203. package/packages/core/dist/evidence/assurance.d.ts.map +1 -0
  204. package/packages/core/dist/evidence/assurance.js +38 -0
  205. package/packages/core/dist/evidence/assurance.js.map +1 -0
  206. package/packages/core/dist/evidence/index.d.ts +8 -0
  207. package/packages/core/dist/evidence/index.d.ts.map +1 -0
  208. package/packages/core/dist/evidence/index.js +8 -0
  209. package/packages/core/dist/evidence/index.js.map +1 -0
  210. package/packages/core/dist/evidence/jsonlLedger.d.ts +13 -0
  211. package/packages/core/dist/evidence/jsonlLedger.d.ts.map +1 -0
  212. package/packages/core/dist/evidence/jsonlLedger.js +171 -0
  213. package/packages/core/dist/evidence/jsonlLedger.js.map +1 -0
  214. package/packages/core/dist/evidence/linkEvidence.d.ts +4 -0
  215. package/packages/core/dist/evidence/linkEvidence.d.ts.map +1 -0
  216. package/packages/core/dist/evidence/linkEvidence.js +53 -0
  217. package/packages/core/dist/evidence/linkEvidence.js.map +1 -0
  218. package/packages/core/dist/evidence/replayEvidence.d.ts +6 -0
  219. package/packages/core/dist/evidence/replayEvidence.d.ts.map +1 -0
  220. package/packages/core/dist/evidence/replayEvidence.js +216 -0
  221. package/packages/core/dist/evidence/replayEvidence.js.map +1 -0
  222. package/packages/core/dist/evidence/results.d.ts +4 -0
  223. package/packages/core/dist/evidence/results.d.ts.map +1 -0
  224. package/packages/core/dist/evidence/results.js +32 -0
  225. package/packages/core/dist/evidence/results.js.map +1 -0
  226. package/packages/core/dist/evidence/types.d.ts +149 -0
  227. package/packages/core/dist/evidence/types.d.ts.map +1 -0
  228. package/packages/core/dist/evidence/types.js +2 -0
  229. package/packages/core/dist/evidence/types.js.map +1 -0
  230. package/packages/core/dist/host-profiles/claude.yml +29 -0
  231. package/packages/core/dist/host-profiles/codex.yml +29 -0
  232. package/packages/core/dist/host-profiles/copilot.yml +29 -0
  233. package/packages/core/dist/host-profiles/opencode.yml +29 -0
  234. package/packages/core/dist/hosts/conformanceStatus.d.ts +16 -0
  235. package/packages/core/dist/hosts/conformanceStatus.d.ts.map +1 -0
  236. package/packages/core/dist/hosts/conformanceStatus.js +160 -0
  237. package/packages/core/dist/hosts/conformanceStatus.js.map +1 -0
  238. package/packages/core/dist/hosts/index.d.ts +5 -0
  239. package/packages/core/dist/hosts/index.d.ts.map +1 -0
  240. package/packages/core/dist/hosts/index.js +5 -0
  241. package/packages/core/dist/hosts/index.js.map +1 -0
  242. package/packages/core/dist/hosts/loadHostProfile.d.ts +6 -0
  243. package/packages/core/dist/hosts/loadHostProfile.d.ts.map +1 -0
  244. package/packages/core/dist/hosts/loadHostProfile.js +41 -0
  245. package/packages/core/dist/hosts/loadHostProfile.js.map +1 -0
  246. package/packages/core/dist/hosts/projectHostFiles.d.ts +16 -0
  247. package/packages/core/dist/hosts/projectHostFiles.d.ts.map +1 -0
  248. package/packages/core/dist/hosts/projectHostFiles.js +272 -0
  249. package/packages/core/dist/hosts/projectHostFiles.js.map +1 -0
  250. package/packages/core/dist/hosts/types.d.ts +122 -0
  251. package/packages/core/dist/hosts/types.d.ts.map +1 -0
  252. package/packages/core/dist/hosts/types.js +2 -0
  253. package/packages/core/dist/hosts/types.js.map +1 -0
  254. package/packages/core/dist/index.d.ts +26 -0
  255. package/packages/core/dist/index.d.ts.map +1 -0
  256. package/packages/core/dist/index.js +31 -0
  257. package/packages/core/dist/index.js.map +1 -0
  258. package/packages/core/dist/init/index.d.ts +2 -0
  259. package/packages/core/dist/init/index.d.ts.map +1 -0
  260. package/packages/core/dist/init/index.js +3 -0
  261. package/packages/core/dist/init/index.js.map +1 -0
  262. package/packages/core/dist/init/scaffold.d.ts +28 -0
  263. package/packages/core/dist/init/scaffold.d.ts.map +1 -0
  264. package/packages/core/dist/init/scaffold.js +293 -0
  265. package/packages/core/dist/init/scaffold.js.map +1 -0
  266. package/packages/core/dist/markers/appendOnly.d.ts +23 -0
  267. package/packages/core/dist/markers/appendOnly.d.ts.map +1 -0
  268. package/packages/core/dist/markers/appendOnly.js +75 -0
  269. package/packages/core/dist/markers/appendOnly.js.map +1 -0
  270. package/packages/core/dist/markers/bindingSetHash.d.ts +28 -0
  271. package/packages/core/dist/markers/bindingSetHash.d.ts.map +1 -0
  272. package/packages/core/dist/markers/bindingSetHash.js +33 -0
  273. package/packages/core/dist/markers/bindingSetHash.js.map +1 -0
  274. package/packages/core/dist/markers/canonicalJson.d.ts +4 -0
  275. package/packages/core/dist/markers/canonicalJson.d.ts.map +1 -0
  276. package/packages/core/dist/markers/canonicalJson.js +51 -0
  277. package/packages/core/dist/markers/canonicalJson.js.map +1 -0
  278. package/packages/core/dist/markers/ciAuthority.d.ts +17 -0
  279. package/packages/core/dist/markers/ciAuthority.d.ts.map +1 -0
  280. package/packages/core/dist/markers/ciAuthority.js +131 -0
  281. package/packages/core/dist/markers/ciAuthority.js.map +1 -0
  282. package/packages/core/dist/markers/cli/bind.d.ts +48 -0
  283. package/packages/core/dist/markers/cli/bind.d.ts.map +1 -0
  284. package/packages/core/dist/markers/cli/bind.js +198 -0
  285. package/packages/core/dist/markers/cli/bind.js.map +1 -0
  286. package/packages/core/dist/markers/cli/index.d.ts +9 -0
  287. package/packages/core/dist/markers/cli/index.d.ts.map +1 -0
  288. package/packages/core/dist/markers/cli/index.js +15 -0
  289. package/packages/core/dist/markers/cli/index.js.map +1 -0
  290. package/packages/core/dist/markers/cli/io.d.ts +18 -0
  291. package/packages/core/dist/markers/cli/io.d.ts.map +1 -0
  292. package/packages/core/dist/markers/cli/io.js +62 -0
  293. package/packages/core/dist/markers/cli/io.js.map +1 -0
  294. package/packages/core/dist/markers/cli/precommit.d.ts +32 -0
  295. package/packages/core/dist/markers/cli/precommit.d.ts.map +1 -0
  296. package/packages/core/dist/markers/cli/precommit.js +174 -0
  297. package/packages/core/dist/markers/cli/precommit.js.map +1 -0
  298. package/packages/core/dist/markers/cli/prove.d.ts +69 -0
  299. package/packages/core/dist/markers/cli/prove.d.ts.map +1 -0
  300. package/packages/core/dist/markers/cli/prove.js +381 -0
  301. package/packages/core/dist/markers/cli/prove.js.map +1 -0
  302. package/packages/core/dist/markers/cli/scan.d.ts +63 -0
  303. package/packages/core/dist/markers/cli/scan.d.ts.map +1 -0
  304. package/packages/core/dist/markers/cli/scan.js +233 -0
  305. package/packages/core/dist/markers/cli/scan.js.map +1 -0
  306. package/packages/core/dist/markers/cli/shared.d.ts +25 -0
  307. package/packages/core/dist/markers/cli/shared.d.ts.map +1 -0
  308. package/packages/core/dist/markers/cli/shared.js +123 -0
  309. package/packages/core/dist/markers/cli/shared.js.map +1 -0
  310. package/packages/core/dist/markers/cli/validateLedger.d.ts +38 -0
  311. package/packages/core/dist/markers/cli/validateLedger.d.ts.map +1 -0
  312. package/packages/core/dist/markers/cli/validateLedger.js +81 -0
  313. package/packages/core/dist/markers/cli/validateLedger.js.map +1 -0
  314. package/packages/core/dist/markers/cli/verify.d.ts +65 -0
  315. package/packages/core/dist/markers/cli/verify.d.ts.map +1 -0
  316. package/packages/core/dist/markers/cli/verify.js +245 -0
  317. package/packages/core/dist/markers/cli/verify.js.map +1 -0
  318. package/packages/core/dist/markers/commentPrefix.d.ts +7 -0
  319. package/packages/core/dist/markers/commentPrefix.d.ts.map +1 -0
  320. package/packages/core/dist/markers/commentPrefix.js +79 -0
  321. package/packages/core/dist/markers/commentPrefix.js.map +1 -0
  322. package/packages/core/dist/markers/constants.d.ts +10 -0
  323. package/packages/core/dist/markers/constants.d.ts.map +1 -0
  324. package/packages/core/dist/markers/constants.js +13 -0
  325. package/packages/core/dist/markers/constants.js.map +1 -0
  326. package/packages/core/dist/markers/evidenceLedger.d.ts +150 -0
  327. package/packages/core/dist/markers/evidenceLedger.d.ts.map +1 -0
  328. package/packages/core/dist/markers/evidenceLedger.js +391 -0
  329. package/packages/core/dist/markers/evidenceLedger.js.map +1 -0
  330. package/packages/core/dist/markers/freshness.d.ts +125 -0
  331. package/packages/core/dist/markers/freshness.d.ts.map +1 -0
  332. package/packages/core/dist/markers/freshness.js +605 -0
  333. package/packages/core/dist/markers/freshness.js.map +1 -0
  334. package/packages/core/dist/markers/index.d.ts +26 -0
  335. package/packages/core/dist/markers/index.d.ts.map +1 -0
  336. package/packages/core/dist/markers/index.js +38 -0
  337. package/packages/core/dist/markers/index.js.map +1 -0
  338. package/packages/core/dist/markers/keygen.d.ts +6 -0
  339. package/packages/core/dist/markers/keygen.d.ts.map +1 -0
  340. package/packages/core/dist/markers/keygen.js +18 -0
  341. package/packages/core/dist/markers/keygen.js.map +1 -0
  342. package/packages/core/dist/markers/keyring.d.ts +23 -0
  343. package/packages/core/dist/markers/keyring.d.ts.map +1 -0
  344. package/packages/core/dist/markers/keyring.js +93 -0
  345. package/packages/core/dist/markers/keyring.js.map +1 -0
  346. package/packages/core/dist/markers/markerLine.d.ts +35 -0
  347. package/packages/core/dist/markers/markerLine.d.ts.map +1 -0
  348. package/packages/core/dist/markers/markerLine.js +125 -0
  349. package/packages/core/dist/markers/markerLine.js.map +1 -0
  350. package/packages/core/dist/markers/physicalLines.d.ts +10 -0
  351. package/packages/core/dist/markers/physicalLines.d.ts.map +1 -0
  352. package/packages/core/dist/markers/physicalLines.js +48 -0
  353. package/packages/core/dist/markers/physicalLines.js.map +1 -0
  354. package/packages/core/dist/markers/policyHash.d.ts +4 -0
  355. package/packages/core/dist/markers/policyHash.d.ts.map +1 -0
  356. package/packages/core/dist/markers/policyHash.js +14 -0
  357. package/packages/core/dist/markers/policyHash.js.map +1 -0
  358. package/packages/core/dist/markers/proofSignature.d.ts +29 -0
  359. package/packages/core/dist/markers/proofSignature.d.ts.map +1 -0
  360. package/packages/core/dist/markers/proofSignature.js +106 -0
  361. package/packages/core/dist/markers/proofSignature.js.map +1 -0
  362. package/packages/core/dist/markers/reconcile.d.ts +26 -0
  363. package/packages/core/dist/markers/reconcile.d.ts.map +1 -0
  364. package/packages/core/dist/markers/reconcile.js +52 -0
  365. package/packages/core/dist/markers/reconcile.js.map +1 -0
  366. package/packages/core/dist/markers/registry.d.ts +53 -0
  367. package/packages/core/dist/markers/registry.d.ts.map +1 -0
  368. package/packages/core/dist/markers/registry.js +161 -0
  369. package/packages/core/dist/markers/registry.js.map +1 -0
  370. package/packages/core/dist/markers/rowHash.d.ts +2 -0
  371. package/packages/core/dist/markers/rowHash.d.ts.map +1 -0
  372. package/packages/core/dist/markers/rowHash.js +10 -0
  373. package/packages/core/dist/markers/rowHash.js.map +1 -0
  374. package/packages/core/dist/markers/scanner.d.ts +67 -0
  375. package/packages/core/dist/markers/scanner.d.ts.map +1 -0
  376. package/packages/core/dist/markers/scanner.js +292 -0
  377. package/packages/core/dist/markers/scanner.js.map +1 -0
  378. package/packages/core/dist/markers/schemas/binding-registry-event.schema.json +41 -0
  379. package/packages/core/dist/markers/schemas/freshness-status.schema.json +134 -0
  380. package/packages/core/dist/markers/schemas/proof-event.schema.json +170 -0
  381. package/packages/core/dist/markers/spanCanon.d.ts +4 -0
  382. package/packages/core/dist/markers/spanCanon.d.ts.map +1 -0
  383. package/packages/core/dist/markers/spanCanon.js +42 -0
  384. package/packages/core/dist/markers/spanCanon.js.map +1 -0
  385. package/packages/core/dist/markers/swiftFuncRecognizer.d.ts +36 -0
  386. package/packages/core/dist/markers/swiftFuncRecognizer.d.ts.map +1 -0
  387. package/packages/core/dist/markers/swiftFuncRecognizer.js +638 -0
  388. package/packages/core/dist/markers/swiftFuncRecognizer.js.map +1 -0
  389. package/packages/core/dist/markers/validators.d.ts +13 -0
  390. package/packages/core/dist/markers/validators.d.ts.map +1 -0
  391. package/packages/core/dist/markers/validators.js +64 -0
  392. package/packages/core/dist/markers/validators.js.map +1 -0
  393. package/packages/core/dist/markers/verificationContextHash.d.ts +23 -0
  394. package/packages/core/dist/markers/verificationContextHash.d.ts.map +1 -0
  395. package/packages/core/dist/markers/verificationContextHash.js +96 -0
  396. package/packages/core/dist/markers/verificationContextHash.js.map +1 -0
  397. package/packages/core/dist/markers/verifierPresets.d.ts +18 -0
  398. package/packages/core/dist/markers/verifierPresets.d.ts.map +1 -0
  399. package/packages/core/dist/markers/verifierPresets.js +71 -0
  400. package/packages/core/dist/markers/verifierPresets.js.map +1 -0
  401. package/packages/core/dist/markers/verifierResolver.d.ts +27 -0
  402. package/packages/core/dist/markers/verifierResolver.d.ts.map +1 -0
  403. package/packages/core/dist/markers/verifierResolver.js +151 -0
  404. package/packages/core/dist/markers/verifierResolver.js.map +1 -0
  405. package/packages/core/dist/migration/index.d.ts +2 -0
  406. package/packages/core/dist/migration/index.d.ts.map +1 -0
  407. package/packages/core/dist/migration/index.js +2 -0
  408. package/packages/core/dist/migration/index.js.map +1 -0
  409. package/packages/core/dist/migration/testMatrix.d.ts +42 -0
  410. package/packages/core/dist/migration/testMatrix.d.ts.map +1 -0
  411. package/packages/core/dist/migration/testMatrix.js +351 -0
  412. package/packages/core/dist/migration/testMatrix.js.map +1 -0
  413. package/packages/core/dist/package/index.d.ts +2 -0
  414. package/packages/core/dist/package/index.d.ts.map +1 -0
  415. package/packages/core/dist/package/index.js +2 -0
  416. package/packages/core/dist/package/index.js.map +1 -0
  417. package/packages/core/dist/package/inspectPackage.d.ts +67 -0
  418. package/packages/core/dist/package/inspectPackage.d.ts.map +1 -0
  419. package/packages/core/dist/package/inspectPackage.js +371 -0
  420. package/packages/core/dist/package/inspectPackage.js.map +1 -0
  421. package/packages/core/dist/presentation/candidates.d.ts +13 -0
  422. package/packages/core/dist/presentation/candidates.d.ts.map +1 -0
  423. package/packages/core/dist/presentation/candidates.js +86 -0
  424. package/packages/core/dist/presentation/candidates.js.map +1 -0
  425. package/packages/core/dist/presentation/index.d.ts +8 -0
  426. package/packages/core/dist/presentation/index.d.ts.map +1 -0
  427. package/packages/core/dist/presentation/index.js +8 -0
  428. package/packages/core/dist/presentation/index.js.map +1 -0
  429. package/packages/core/dist/presentation/items.d.ts +18 -0
  430. package/packages/core/dist/presentation/items.d.ts.map +1 -0
  431. package/packages/core/dist/presentation/items.js +228 -0
  432. package/packages/core/dist/presentation/items.js.map +1 -0
  433. package/packages/core/dist/presentation/ordering.d.ts +8 -0
  434. package/packages/core/dist/presentation/ordering.d.ts.map +1 -0
  435. package/packages/core/dist/presentation/ordering.js +31 -0
  436. package/packages/core/dist/presentation/ordering.js.map +1 -0
  437. package/packages/core/dist/presentation/planHelpers.d.ts +26 -0
  438. package/packages/core/dist/presentation/planHelpers.d.ts.map +1 -0
  439. package/packages/core/dist/presentation/planHelpers.js +62 -0
  440. package/packages/core/dist/presentation/planHelpers.js.map +1 -0
  441. package/packages/core/dist/presentation/presentationFormat.d.ts +39 -0
  442. package/packages/core/dist/presentation/presentationFormat.d.ts.map +1 -0
  443. package/packages/core/dist/presentation/presentationFormat.js +58 -0
  444. package/packages/core/dist/presentation/presentationFormat.js.map +1 -0
  445. package/packages/core/dist/presentation/renderCard.d.ts +37 -0
  446. package/packages/core/dist/presentation/renderCard.d.ts.map +1 -0
  447. package/packages/core/dist/presentation/renderCard.js +129 -0
  448. package/packages/core/dist/presentation/renderCard.js.map +1 -0
  449. package/packages/core/dist/presentation/scoring.d.ts +10 -0
  450. package/packages/core/dist/presentation/scoring.d.ts.map +1 -0
  451. package/packages/core/dist/presentation/scoring.js +82 -0
  452. package/packages/core/dist/presentation/scoring.js.map +1 -0
  453. package/packages/core/dist/presentation/selectPlan.d.ts +4 -0
  454. package/packages/core/dist/presentation/selectPlan.d.ts.map +1 -0
  455. package/packages/core/dist/presentation/selectPlan.js +122 -0
  456. package/packages/core/dist/presentation/selectPlan.js.map +1 -0
  457. package/packages/core/dist/presentation/selectShowcasePlan.d.ts +3 -0
  458. package/packages/core/dist/presentation/selectShowcasePlan.d.ts.map +1 -0
  459. package/packages/core/dist/presentation/selectShowcasePlan.js +6 -0
  460. package/packages/core/dist/presentation/selectShowcasePlan.js.map +1 -0
  461. package/packages/core/dist/presentation/selectWalkthroughPlan.d.ts +3 -0
  462. package/packages/core/dist/presentation/selectWalkthroughPlan.d.ts.map +1 -0
  463. package/packages/core/dist/presentation/selectWalkthroughPlan.js +6 -0
  464. package/packages/core/dist/presentation/selectWalkthroughPlan.js.map +1 -0
  465. package/packages/core/dist/presentation/selection.d.ts +7 -0
  466. package/packages/core/dist/presentation/selection.d.ts.map +1 -0
  467. package/packages/core/dist/presentation/selection.js +20 -0
  468. package/packages/core/dist/presentation/selection.js.map +1 -0
  469. package/packages/core/dist/presentation/snapshot.d.ts +12 -0
  470. package/packages/core/dist/presentation/snapshot.d.ts.map +1 -0
  471. package/packages/core/dist/presentation/snapshot.js +53 -0
  472. package/packages/core/dist/presentation/snapshot.js.map +1 -0
  473. package/packages/core/dist/presentation/types.d.ts +172 -0
  474. package/packages/core/dist/presentation/types.d.ts.map +1 -0
  475. package/packages/core/dist/presentation/types.js +2 -0
  476. package/packages/core/dist/presentation/types.js.map +1 -0
  477. package/packages/core/dist/redact.d.ts +11 -0
  478. package/packages/core/dist/redact.d.ts.map +1 -0
  479. package/packages/core/dist/redact.js +17 -0
  480. package/packages/core/dist/redact.js.map +1 -0
  481. package/packages/core/dist/roots.d.ts +81 -0
  482. package/packages/core/dist/roots.d.ts.map +1 -0
  483. package/packages/core/dist/roots.js +220 -0
  484. package/packages/core/dist/roots.js.map +1 -0
  485. package/packages/core/dist/schema/cliResult.d.ts +34 -0
  486. package/packages/core/dist/schema/cliResult.d.ts.map +1 -0
  487. package/packages/core/dist/schema/cliResult.js +35 -0
  488. package/packages/core/dist/schema/cliResult.js.map +1 -0
  489. package/packages/core/dist/schema/diagnostic.d.ts +26 -0
  490. package/packages/core/dist/schema/diagnostic.d.ts.map +1 -0
  491. package/packages/core/dist/schema/diagnostic.js +28 -0
  492. package/packages/core/dist/schema/diagnostic.js.map +1 -0
  493. package/packages/core/dist/schema/index.d.ts +8 -0
  494. package/packages/core/dist/schema/index.d.ts.map +1 -0
  495. package/packages/core/dist/schema/index.js +9 -0
  496. package/packages/core/dist/schema/index.js.map +1 -0
  497. package/packages/core/dist/schema/registry.d.ts +15 -0
  498. package/packages/core/dist/schema/registry.d.ts.map +1 -0
  499. package/packages/core/dist/schema/registry.js +206 -0
  500. package/packages/core/dist/schema/registry.js.map +1 -0
  501. package/packages/core/dist/schema/syntheticContracts.d.ts +3 -0
  502. package/packages/core/dist/schema/syntheticContracts.d.ts.map +1 -0
  503. package/packages/core/dist/schema/syntheticContracts.js +342 -0
  504. package/packages/core/dist/schema/syntheticContracts.js.map +1 -0
  505. package/packages/core/dist/schema/validate.d.ts +21 -0
  506. package/packages/core/dist/schema/validate.d.ts.map +1 -0
  507. package/packages/core/dist/schema/validate.js +210 -0
  508. package/packages/core/dist/schema/validate.js.map +1 -0
  509. package/packages/core/dist/schemas/v1/authority.schema.json +70 -0
  510. package/packages/core/dist/schemas/v1/cli-result.schema.json +30 -0
  511. package/packages/core/dist/schemas/v1/common.schema.json +274 -0
  512. package/packages/core/dist/schemas/v1/demo-capsule.schema.json +78 -0
  513. package/packages/core/dist/schemas/v1/evidence-append-result.schema.json +14 -0
  514. package/packages/core/dist/schemas/v1/evidence-event.schema.json +181 -0
  515. package/packages/core/dist/schemas/v1/evidence-status-result.schema.json +68 -0
  516. package/packages/core/dist/schemas/v1/host-profile.schema.json +94 -0
  517. package/packages/core/dist/schemas/v1/host-status-result.schema.json +49 -0
  518. package/packages/core/dist/schemas/v1/keyring.schema.json +77 -0
  519. package/packages/core/dist/schemas/v1/ledger.schema.json +99 -0
  520. package/packages/core/dist/schemas/v1/marker.schema.json +84 -0
  521. package/packages/core/dist/schemas/v1/matrix-list-result.schema.json +67 -0
  522. package/packages/core/dist/schemas/v1/matrix-mutation-result.schema.json +49 -0
  523. package/packages/core/dist/schemas/v1/matrix-validation-result.schema.json +77 -0
  524. package/packages/core/dist/schemas/v1/mcp-tool-results.schema.json +34 -0
  525. package/packages/core/dist/schemas/v1/migration-test-matrix-result.schema.json +76 -0
  526. package/packages/core/dist/schemas/v1/presentation-plan-result.schema.json +62 -0
  527. package/packages/core/dist/schemas/v1/presentation-plan.schema.json +259 -0
  528. package/packages/core/dist/schemas/v1/release-gate-result.schema.json +136 -0
  529. package/packages/core/dist/schemas/v1/showcase-approval-result.schema.json +5 -0
  530. package/packages/core/dist/schemas/v1/showcase-event-append-result.schema.json +17 -0
  531. package/packages/core/dist/schemas/v1/showcase-event.schema.json +235 -0
  532. package/packages/core/dist/schemas/v1/showcase-finish-result.schema.json +5 -0
  533. package/packages/core/dist/schemas/v1/showcase-run-status-result.schema.json +70 -0
  534. package/packages/core/dist/schemas/v1/showcase-start-result.schema.json +5 -0
  535. package/packages/core/dist/schemas/v1/use-case-file.schema.json +178 -0
  536. package/packages/core/dist/schemas/v1/workflow-mode.schema.json +16 -0
  537. package/packages/core/dist/schemas/v1/workspace-config.schema.json +58 -0
  538. package/packages/core/dist/showcase/appendShowcaseEvent.d.ts +116 -0
  539. package/packages/core/dist/showcase/appendShowcaseEvent.d.ts.map +1 -0
  540. package/packages/core/dist/showcase/appendShowcaseEvent.js +353 -0
  541. package/packages/core/dist/showcase/appendShowcaseEvent.js.map +1 -0
  542. package/packages/core/dist/showcase/approval.d.ts +2 -0
  543. package/packages/core/dist/showcase/approval.d.ts.map +1 -0
  544. package/packages/core/dist/showcase/approval.js +2 -0
  545. package/packages/core/dist/showcase/approval.js.map +1 -0
  546. package/packages/core/dist/showcase/approvalAuthority.d.ts +19 -0
  547. package/packages/core/dist/showcase/approvalAuthority.d.ts.map +1 -0
  548. package/packages/core/dist/showcase/approvalAuthority.js +46 -0
  549. package/packages/core/dist/showcase/approvalAuthority.js.map +1 -0
  550. package/packages/core/dist/showcase/index.d.ts +11 -0
  551. package/packages/core/dist/showcase/index.d.ts.map +1 -0
  552. package/packages/core/dist/showcase/index.js +11 -0
  553. package/packages/core/dist/showcase/index.js.map +1 -0
  554. package/packages/core/dist/showcase/jsonlLedger.d.ts +11 -0
  555. package/packages/core/dist/showcase/jsonlLedger.d.ts.map +1 -0
  556. package/packages/core/dist/showcase/jsonlLedger.js +50 -0
  557. package/packages/core/dist/showcase/jsonlLedger.js.map +1 -0
  558. package/packages/core/dist/showcase/planBinding.d.ts +5 -0
  559. package/packages/core/dist/showcase/planBinding.d.ts.map +1 -0
  560. package/packages/core/dist/showcase/planBinding.js +33 -0
  561. package/packages/core/dist/showcase/planBinding.js.map +1 -0
  562. package/packages/core/dist/showcase/replayRun.d.ts +5 -0
  563. package/packages/core/dist/showcase/replayRun.d.ts.map +1 -0
  564. package/packages/core/dist/showcase/replayRun.js +199 -0
  565. package/packages/core/dist/showcase/replayRun.js.map +1 -0
  566. package/packages/core/dist/showcase/results.d.ts +3 -0
  567. package/packages/core/dist/showcase/results.d.ts.map +1 -0
  568. package/packages/core/dist/showcase/results.js +4 -0
  569. package/packages/core/dist/showcase/results.js.map +1 -0
  570. package/packages/core/dist/showcase/revisionEpochs.d.ts +2 -0
  571. package/packages/core/dist/showcase/revisionEpochs.d.ts.map +1 -0
  572. package/packages/core/dist/showcase/revisionEpochs.js +2 -0
  573. package/packages/core/dist/showcase/revisionEpochs.js.map +1 -0
  574. package/packages/core/dist/showcase/startRun.d.ts +2 -0
  575. package/packages/core/dist/showcase/startRun.d.ts.map +1 -0
  576. package/packages/core/dist/showcase/startRun.js +2 -0
  577. package/packages/core/dist/showcase/startRun.js.map +1 -0
  578. package/packages/core/dist/showcase/types.d.ts +66 -0
  579. package/packages/core/dist/showcase/types.d.ts.map +1 -0
  580. package/packages/core/dist/showcase/types.js +2 -0
  581. package/packages/core/dist/showcase/types.js.map +1 -0
  582. package/packages/core/dist/skills/canonicalSkills.d.ts +3 -0
  583. package/packages/core/dist/skills/canonicalSkills.d.ts.map +1 -0
  584. package/packages/core/dist/skills/canonicalSkills.js +7 -0
  585. package/packages/core/dist/skills/canonicalSkills.js.map +1 -0
  586. package/packages/core/dist/skills/index.d.ts +4 -0
  587. package/packages/core/dist/skills/index.d.ts.map +1 -0
  588. package/packages/core/dist/skills/index.js +4 -0
  589. package/packages/core/dist/skills/index.js.map +1 -0
  590. package/packages/core/dist/skills/types.d.ts +26 -0
  591. package/packages/core/dist/skills/types.d.ts.map +1 -0
  592. package/packages/core/dist/skills/types.js +2 -0
  593. package/packages/core/dist/skills/types.js.map +1 -0
  594. package/packages/core/dist/skills/validateSkillAssets.d.ts +6 -0
  595. package/packages/core/dist/skills/validateSkillAssets.d.ts.map +1 -0
  596. package/packages/core/dist/skills/validateSkillAssets.js +218 -0
  597. package/packages/core/dist/skills/validateSkillAssets.js.map +1 -0
  598. package/packages/core/dist/useCases/integrity.d.ts +11 -0
  599. package/packages/core/dist/useCases/integrity.d.ts.map +1 -0
  600. package/packages/core/dist/useCases/integrity.js +178 -0
  601. package/packages/core/dist/useCases/integrity.js.map +1 -0
  602. package/packages/core/dist/useCases/loadUseCaseMatrix.d.ts +7 -0
  603. package/packages/core/dist/useCases/loadUseCaseMatrix.d.ts.map +1 -0
  604. package/packages/core/dist/useCases/loadUseCaseMatrix.js +74 -0
  605. package/packages/core/dist/useCases/loadUseCaseMatrix.js.map +1 -0
  606. package/packages/core/dist/useCases/mutateUseCaseMatrix.d.ts +25 -0
  607. package/packages/core/dist/useCases/mutateUseCaseMatrix.d.ts.map +1 -0
  608. package/packages/core/dist/useCases/mutateUseCaseMatrix.js +198 -0
  609. package/packages/core/dist/useCases/mutateUseCaseMatrix.js.map +1 -0
  610. package/packages/core/dist/useCases/query.d.ts +12 -0
  611. package/packages/core/dist/useCases/query.d.ts.map +1 -0
  612. package/packages/core/dist/useCases/query.js +47 -0
  613. package/packages/core/dist/useCases/query.js.map +1 -0
  614. package/packages/core/dist/useCases/types.d.ts +149 -0
  615. package/packages/core/dist/useCases/types.d.ts.map +1 -0
  616. package/packages/core/dist/useCases/types.js +2 -0
  617. package/packages/core/dist/useCases/types.js.map +1 -0
  618. package/packages/core/dist/useCases/validateUseCaseFile.d.ts +9 -0
  619. package/packages/core/dist/useCases/validateUseCaseFile.d.ts.map +1 -0
  620. package/packages/core/dist/useCases/validateUseCaseFile.js +107 -0
  621. package/packages/core/dist/useCases/validateUseCaseFile.js.map +1 -0
  622. package/packages/core/dist/version.d.ts +9 -0
  623. package/packages/core/dist/version.d.ts.map +1 -0
  624. package/packages/core/dist/version.js +17 -0
  625. package/packages/core/dist/version.js.map +1 -0
  626. package/packages/core/package.json +39 -0
  627. package/packages/mcp/README.md +48 -0
  628. package/packages/mcp/dist/index.d.ts +20 -0
  629. package/packages/mcp/dist/index.d.ts.map +1 -0
  630. package/packages/mcp/dist/index.js +180 -0
  631. package/packages/mcp/dist/index.js.map +1 -0
  632. package/packages/mcp/dist/prompts.d.ts +32 -0
  633. package/packages/mcp/dist/prompts.d.ts.map +1 -0
  634. package/packages/mcp/dist/prompts.js +199 -0
  635. package/packages/mcp/dist/prompts.js.map +1 -0
  636. package/packages/mcp/dist/resources.d.ts +22 -0
  637. package/packages/mcp/dist/resources.d.ts.map +1 -0
  638. package/packages/mcp/dist/resources.js +342 -0
  639. package/packages/mcp/dist/resources.js.map +1 -0
  640. package/packages/mcp/dist/toolHandlers.d.ts +28 -0
  641. package/packages/mcp/dist/toolHandlers.d.ts.map +1 -0
  642. package/packages/mcp/dist/toolHandlers.js +592 -0
  643. package/packages/mcp/dist/toolHandlers.js.map +1 -0
  644. package/packages/mcp/dist/toolSchemas.d.ts +23 -0
  645. package/packages/mcp/dist/toolSchemas.d.ts.map +1 -0
  646. package/packages/mcp/dist/toolSchemas.js +223 -0
  647. package/packages/mcp/dist/toolSchemas.js.map +1 -0
  648. package/packages/mcp/dist/tools.d.ts +22 -0
  649. package/packages/mcp/dist/tools.d.ts.map +1 -0
  650. package/packages/mcp/dist/tools.js +65 -0
  651. package/packages/mcp/dist/tools.js.map +1 -0
  652. package/packages/mcp/package.json +38 -0
  653. package/plugin.json +6 -0
  654. package/schemas/v1/authority.schema.json +70 -0
  655. package/schemas/v1/cli-result.schema.json +30 -0
  656. package/schemas/v1/common.schema.json +274 -0
  657. package/schemas/v1/demo-capsule.schema.json +78 -0
  658. package/schemas/v1/evidence-append-result.schema.json +14 -0
  659. package/schemas/v1/evidence-event.schema.json +181 -0
  660. package/schemas/v1/evidence-status-result.schema.json +68 -0
  661. package/schemas/v1/host-profile.schema.json +94 -0
  662. package/schemas/v1/host-status-result.schema.json +49 -0
  663. package/schemas/v1/keyring.schema.json +77 -0
  664. package/schemas/v1/ledger.schema.json +99 -0
  665. package/schemas/v1/marker.schema.json +84 -0
  666. package/schemas/v1/matrix-list-result.schema.json +67 -0
  667. package/schemas/v1/matrix-mutation-result.schema.json +49 -0
  668. package/schemas/v1/matrix-validation-result.schema.json +77 -0
  669. package/schemas/v1/mcp-tool-results.schema.json +34 -0
  670. package/schemas/v1/migration-test-matrix-result.schema.json +76 -0
  671. package/schemas/v1/presentation-plan-result.schema.json +62 -0
  672. package/schemas/v1/presentation-plan.schema.json +259 -0
  673. package/schemas/v1/release-gate-result.schema.json +136 -0
  674. package/schemas/v1/showcase-approval-result.schema.json +5 -0
  675. package/schemas/v1/showcase-event-append-result.schema.json +17 -0
  676. package/schemas/v1/showcase-event.schema.json +235 -0
  677. package/schemas/v1/showcase-finish-result.schema.json +5 -0
  678. package/schemas/v1/showcase-run-status-result.schema.json +70 -0
  679. package/schemas/v1/showcase-start-result.schema.json +5 -0
  680. package/schemas/v1/use-case-file.schema.json +178 -0
  681. package/schemas/v1/workflow-mode.schema.json +16 -0
  682. package/schemas/v1/workspace-config.schema.json +58 -0
  683. package/use-cases/capsule/demos.yml +212 -0
  684. package/use-cases/capsule/runner.yml +49 -0
  685. package/use-cases/diagnostics/contracts.yml +239 -0
  686. package/use-cases/evidence/core.yml +32 -0
  687. package/use-cases/evidence/ledger.yml +330 -0
  688. package/use-cases/hosts/profiles.yml +365 -0
  689. package/use-cases/hosts/projections.yml +96 -0
  690. package/use-cases/lifecycle/loop.yml +229 -0
  691. package/use-cases/matrix/core.yml +92 -0
  692. package/use-cases/matrix/product.yml +289 -0
  693. package/use-cases/mcp/surface.yml +257 -0
  694. package/use-cases/mcp/wrapper.yml +100 -0
  695. package/use-cases/migration/importer.yml +171 -0
  696. package/use-cases/migration/test-matrix.yml +32 -0
  697. package/use-cases/planning/cards.yml +215 -0
  698. package/use-cases/release/package.yml +80 -0
  699. package/use-cases/release/proof.yml +180 -0
  700. package/use-cases/roadmap/deferred.yml +184 -0
  701. package/use-cases/showcase/flow.yml +269 -0
  702. package/use-cases/showcase/live.yml +44 -0
  703. package/use-cases/skills/assets.yml +92 -0
  704. package/use-cases.yml +9 -0
@@ -0,0 +1,638 @@
1
+ // Swift function recognizer for inferred-end markers (spec section 9).
2
+ //
3
+ // This is the only inferred-end recognizer in v1. There is no Swift toolchain in
4
+ // this Node repo, so this is a careful hand-written Swift *declaration* recognizer
5
+ // in TypeScript. It MUST fail closed: if it cannot prove the exact span with
6
+ // confidence, it returns an INVALID result with one of the section 9.4 codes --
7
+ // it never guesses.
8
+ //
9
+ // The recognizer:
10
+ // * lexes the source into a "code mask" that correctly skips line comments,
11
+ // nestable block comments, normal/multiline/raw string literals (incl.
12
+ // `#"..."#`), character escapes, and string interpolation `\(...)`, so that
13
+ // brace-matching runs ONLY over real code braces;
14
+ // * enforces the strict placement rule (9.2): the marker must be immediately
15
+ // adjacent to the declaration group -- no blank line, no comment, and it may
16
+ // not sit after an attached attribute/modifier;
17
+ // * computes the span extent (9.3): from the first attached attribute/modifier
18
+ // line, through the full signature (generics + where-clause, multiline ok),
19
+ // to the line of the function body's closing brace;
20
+ // * rejects every unsupported / ambiguous form (9.1, 9.4) closed.
21
+ import { splitPhysicalLines, lineIndexOfChar } from "./physicalLines.js";
22
+ import { parseMarkerLine } from "./markerLine.js";
23
+ // Section 9.4 ambiguity / unsupported-form failure codes. Every one is an
24
+ // INVALID for inferred mode; the caller must require an explicit end instead.
25
+ export const SwiftFuncErrorCode = Object.freeze({
26
+ NO_SWIFT_PARSER: "NO_SWIFT_PARSER",
27
+ SWIFT_PARSE_ERROR_IN_REGION: "SWIFT_PARSE_ERROR_IN_REGION",
28
+ MARKER_NOT_ADJACENT_TO_DECLARATION: "MARKER_NOT_ADJACENT_TO_DECLARATION",
29
+ MARKER_INSIDE_ATTACHED_DECLARATION: "MARKER_INSIDE_ATTACHED_DECLARATION",
30
+ NEXT_NODE_NOT_FUNC: "NEXT_NODE_NOT_FUNC",
31
+ FUNC_HAS_NO_BODY: "FUNC_HAS_NO_BODY",
32
+ FUNC_BODY_HAS_NO_CLOSING_BRACE: "FUNC_BODY_HAS_NO_CLOSING_BRACE",
33
+ NESTED_FUNC_UNSUPPORTED: "NESTED_FUNC_UNSUPPORTED",
34
+ CONDITIONAL_COMPILATION_IN_SPAN: "CONDITIONAL_COMPILATION_IN_SPAN",
35
+ ANOTHER_MARKER_INSIDE_SPAN: "ANOTHER_MARKER_INSIDE_SPAN",
36
+ MULTIPLE_CANDIDATE_DECLARATIONS: "MULTIPLE_CANDIDATE_DECLARATIONS"
37
+ });
38
+ function poundsRun(src, from) {
39
+ let j = from;
40
+ while (j < src.length && src[j] === "#") {
41
+ j += 1;
42
+ }
43
+ return j - from;
44
+ }
45
+ // Build the code mask for the whole source with a stack-based lexer.
46
+ function computeCodeMask(src) {
47
+ const n = src.length;
48
+ const mask = new Uint8Array(n);
49
+ const stack = [{ t: "code" }];
50
+ let i = 0;
51
+ const top = () => stack[stack.length - 1];
52
+ while (i < n) {
53
+ const ctx = top();
54
+ const c = src[i];
55
+ if (ctx.t === "code" || ctx.t === "interp") {
56
+ mask[i] = 1;
57
+ // Comments.
58
+ if (c === "/" && src[i + 1] === "/") {
59
+ stack.push({ t: "line_comment" });
60
+ i += 2;
61
+ continue;
62
+ }
63
+ if (c === "/" && src[i + 1] === "*") {
64
+ stack.push({ t: "block_comment", depth: 1 });
65
+ i += 2;
66
+ continue;
67
+ }
68
+ // Raw string `#..#"..."#..#` (also raw multiline `#"""..."""#`).
69
+ if (c === "#") {
70
+ const pounds = poundsRun(src, i);
71
+ const q = i + pounds;
72
+ if (src[q] === '"') {
73
+ const multiline = src[q + 1] === '"' && src[q + 2] === '"';
74
+ stack.push({ t: "string", multiline, pounds });
75
+ i = q + (multiline ? 3 : 1);
76
+ continue;
77
+ }
78
+ // `#` not opening a raw string (e.g. `#if`, `#selector`): ordinary char.
79
+ i += 1;
80
+ continue;
81
+ }
82
+ // Normal / multiline string.
83
+ if (c === '"') {
84
+ const multiline = src[i + 1] === '"' && src[i + 2] === '"';
85
+ stack.push({ t: "string", multiline, pounds: 0 });
86
+ i += multiline ? 3 : 1;
87
+ continue;
88
+ }
89
+ // Interpolation paren tracking (return to the owning string on close).
90
+ if (ctx.t === "interp") {
91
+ if (c === "(") {
92
+ ctx.parenDepth += 1;
93
+ i += 1;
94
+ continue;
95
+ }
96
+ if (c === ")") {
97
+ if (ctx.parenDepth === 0) {
98
+ stack.pop();
99
+ i += 1;
100
+ continue;
101
+ }
102
+ ctx.parenDepth -= 1;
103
+ i += 1;
104
+ continue;
105
+ }
106
+ }
107
+ i += 1;
108
+ continue;
109
+ }
110
+ if (ctx.t === "line_comment") {
111
+ if (c === "\n") {
112
+ stack.pop();
113
+ }
114
+ i += 1;
115
+ continue;
116
+ }
117
+ if (ctx.t === "block_comment") {
118
+ if (c === "/" && src[i + 1] === "*") {
119
+ ctx.depth += 1;
120
+ i += 2;
121
+ continue;
122
+ }
123
+ if (c === "*" && src[i + 1] === "/") {
124
+ ctx.depth -= 1;
125
+ i += 2;
126
+ if (ctx.depth === 0) {
127
+ stack.pop();
128
+ }
129
+ continue;
130
+ }
131
+ i += 1;
132
+ continue;
133
+ }
134
+ // ctx.t === "string"
135
+ const { multiline, pounds } = ctx;
136
+ if (pounds === 0) {
137
+ if (c === "\\") {
138
+ if (src[i + 1] === "(") {
139
+ stack.push({ t: "interp", parenDepth: 0 });
140
+ i += 2;
141
+ continue;
142
+ }
143
+ i += 2; // escaped char
144
+ continue;
145
+ }
146
+ if (!multiline) {
147
+ if (c === '"') {
148
+ stack.pop();
149
+ i += 1;
150
+ continue;
151
+ }
152
+ if (c === "\n") {
153
+ // Single-line string cannot span lines; stop runaway, fail closed.
154
+ stack.pop();
155
+ i += 1;
156
+ continue;
157
+ }
158
+ i += 1;
159
+ continue;
160
+ }
161
+ // multiline
162
+ if (c === '"' && src[i + 1] === '"' && src[i + 2] === '"') {
163
+ stack.pop();
164
+ i += 3;
165
+ continue;
166
+ }
167
+ i += 1;
168
+ continue;
169
+ }
170
+ // raw string (pounds > 0): escapes are `\` + pounds `#`.
171
+ const hashes = "#".repeat(pounds);
172
+ if (c === "\\" && src.startsWith(hashes, i + 1)) {
173
+ if (src[i + 1 + pounds] === "(") {
174
+ stack.push({ t: "interp", parenDepth: 0 });
175
+ i += 2 + pounds;
176
+ continue;
177
+ }
178
+ i += 2 + pounds;
179
+ continue;
180
+ }
181
+ if (!multiline) {
182
+ if (c === '"' && src.startsWith(hashes, i + 1)) {
183
+ stack.pop();
184
+ i += 1 + pounds;
185
+ continue;
186
+ }
187
+ i += 1;
188
+ continue;
189
+ }
190
+ // raw multiline
191
+ if (c === '"' &&
192
+ src[i + 1] === '"' &&
193
+ src[i + 2] === '"' &&
194
+ src.startsWith(hashes, i + 3)) {
195
+ stack.pop();
196
+ i += 3 + pounds;
197
+ continue;
198
+ }
199
+ i += 1;
200
+ continue;
201
+ }
202
+ const terminated = stack.length === 1 && stack[0].t === "code";
203
+ return { mask, terminated };
204
+ }
205
+ const WORD_START = /[A-Za-z_]/;
206
+ const WORD_CHAR = /[A-Za-z0-9_]/;
207
+ // Tokenize the code-context characters in [from, to). Strings/comments are
208
+ // skipped (mask == 0). Newlines are emitted as tokens so callers can detect
209
+ // statement boundaries.
210
+ function tokenizeCode(src, mask, from, to) {
211
+ const toks = [];
212
+ let i = from;
213
+ const end = Math.min(to, src.length);
214
+ while (i < end) {
215
+ const c = src[i];
216
+ if (c === "\n") {
217
+ toks.push({ kind: "newline", text: "\n", pos: i });
218
+ i += 1;
219
+ continue;
220
+ }
221
+ if (mask[i] === 0) {
222
+ i += 1;
223
+ continue;
224
+ }
225
+ if (WORD_START.test(c)) {
226
+ let j = i + 1;
227
+ while (j < end && WORD_CHAR.test(src[j])) {
228
+ j += 1;
229
+ }
230
+ toks.push({ kind: "word", text: src.slice(i, j), pos: i });
231
+ i = j;
232
+ continue;
233
+ }
234
+ switch (c) {
235
+ case "{":
236
+ toks.push({ kind: "lbrace", text: c, pos: i });
237
+ break;
238
+ case "}":
239
+ toks.push({ kind: "rbrace", text: c, pos: i });
240
+ break;
241
+ case "(":
242
+ toks.push({ kind: "lparen", text: c, pos: i });
243
+ break;
244
+ case ")":
245
+ toks.push({ kind: "rparen", text: c, pos: i });
246
+ break;
247
+ case "[":
248
+ toks.push({ kind: "lbracket", text: c, pos: i });
249
+ break;
250
+ case "]":
251
+ toks.push({ kind: "rbracket", text: c, pos: i });
252
+ break;
253
+ case "@":
254
+ toks.push({ kind: "at", text: c, pos: i });
255
+ break;
256
+ default:
257
+ break;
258
+ }
259
+ i += 1;
260
+ }
261
+ return toks;
262
+ }
263
+ // Access / behavior modifiers that may precede the declaration keyword. The
264
+ // recognizer skips these when classifying the next declaration.
265
+ const MODIFIERS = new Set([
266
+ "public",
267
+ "private",
268
+ "internal",
269
+ "fileprivate",
270
+ "open",
271
+ "static",
272
+ "final",
273
+ "override",
274
+ "required",
275
+ "convenience",
276
+ "lazy",
277
+ "weak",
278
+ "unowned",
279
+ "mutating",
280
+ "nonmutating",
281
+ "dynamic",
282
+ "optional",
283
+ "indirect",
284
+ "prefix",
285
+ "postfix",
286
+ "infix",
287
+ "nonisolated",
288
+ "distributed",
289
+ "unsafe",
290
+ "borrowing",
291
+ "consuming",
292
+ "package"
293
+ ]);
294
+ // Declaration keywords that open a *type* body (allowed enclosing scope for an
295
+ // inferred member func).
296
+ const TYPE_DECL = new Set(["extension", "struct", "class", "enum", "protocol", "actor"]);
297
+ // ---------------------------------------------------------------------------
298
+ // Scope analysis: classify every enclosing brace as a type body vs anything
299
+ // else (func body, closure, control-flow block, accessor, ...). An inferred
300
+ // func is only supported when every enclosing scope is a type body.
301
+ // ---------------------------------------------------------------------------
302
+ function enclosingScopesAllTypes(src, mask, untilChar) {
303
+ const toks = tokenizeCode(src, mask, 0, untilChar);
304
+ const scope = [];
305
+ let parenDepth = 0;
306
+ let stmtLead = null;
307
+ for (const t of toks) {
308
+ switch (t.kind) {
309
+ case "lparen":
310
+ case "lbracket":
311
+ parenDepth += 1;
312
+ break;
313
+ case "rparen":
314
+ case "rbracket":
315
+ if (parenDepth > 0) {
316
+ parenDepth -= 1;
317
+ }
318
+ break;
319
+ case "newline":
320
+ // Statement boundary at paren depth 0. Keep an in-flight *type* lead
321
+ // alive across newlines so multiline type headers (e.g. an extension
322
+ // with a where-clause) still classify their body as a type scope.
323
+ if (parenDepth === 0 && !(stmtLead !== null && TYPE_DECL.has(stmtLead))) {
324
+ stmtLead = null;
325
+ }
326
+ break;
327
+ case "lbrace": {
328
+ const kind = stmtLead !== null && TYPE_DECL.has(stmtLead) ? "type" : "other";
329
+ scope.push(kind);
330
+ stmtLead = null;
331
+ break;
332
+ }
333
+ case "rbrace":
334
+ if (scope.length > 0) {
335
+ scope.pop();
336
+ }
337
+ stmtLead = null;
338
+ break;
339
+ case "word": {
340
+ if (MODIFIERS.has(t.text)) {
341
+ break; // modifiers do not establish the declaration kind
342
+ }
343
+ if (stmtLead === null) {
344
+ stmtLead = t.text;
345
+ }
346
+ else if (stmtLead === "class" && (t.text === "func" || t.text === "var" || t.text === "subscript" || t.text === "init")) {
347
+ // `class func` / `class var`: the leading `class` is a modifier here.
348
+ stmtLead = t.text;
349
+ }
350
+ break;
351
+ }
352
+ default:
353
+ break;
354
+ }
355
+ }
356
+ return scope.every((s) => s === "type");
357
+ }
358
+ // ---------------------------------------------------------------------------
359
+ // Helpers for line classification.
360
+ // ---------------------------------------------------------------------------
361
+ function isBlank(text) {
362
+ return /^[ \t]*$/.test(text);
363
+ }
364
+ function trimmed(text) {
365
+ return text.replace(/^[ \t]+/, "");
366
+ }
367
+ // A line that begins (after indentation) an attached attribute or a bare
368
+ // modifier -- i.e. part of a declaration group. Used to detect a marker placed
369
+ // *inside* the attached declaration (spec 9.2: marker after `@MainActor`).
370
+ function startsAttachedDecl(text) {
371
+ const t = trimmed(text);
372
+ if (t.startsWith("@")) {
373
+ return true;
374
+ }
375
+ const firstWord = /^([A-Za-z_][A-Za-z0-9_]*)/.exec(t);
376
+ if (firstWord && MODIFIERS.has(firstWord[1])) {
377
+ // Only treat it as an attached modifier line if it does NOT itself contain
378
+ // the declaration keyword (a one-line decl above is a separate statement).
379
+ return !/\b(func|var|let|init|deinit|subscript|class|struct|enum|protocol|actor|extension|typealias|case)\b/.test(t);
380
+ }
381
+ return false;
382
+ }
383
+ const CONDITIONAL_DIRECTIVE = /^#(if|elseif|else|endif)\b/;
384
+ // ---------------------------------------------------------------------------
385
+ // Recognizer.
386
+ // ---------------------------------------------------------------------------
387
+ function fail(code, message, line) {
388
+ return { ok: false, code, message, line };
389
+ }
390
+ // Recognize the inferred Swift function span for a marker at `markerLineIndex`
391
+ // (0-based). Returns the proven span or an INVALID result with a 9.4 code.
392
+ export function recognizeSwiftFuncSpan(source, markerLineIndex, options) {
393
+ const markerPrefix = options?.markerCommentPrefix ?? "//";
394
+ const lines = splitPhysicalLines(source);
395
+ const markerLineNo = markerLineIndex + 1; // 1-based, for diagnostics
396
+ if (markerLineIndex < 0 || markerLineIndex >= lines.length) {
397
+ return fail(SwiftFuncErrorCode.MARKER_NOT_ADJACENT_TO_DECLARATION, "marker line is out of range", markerLineNo);
398
+ }
399
+ // --- Placement rule (spec 9.2). ------------------------------------------
400
+ // The marker may not sit after an attached attribute/modifier: if the line
401
+ // immediately above is an attribute or bare modifier, the marker is inside
402
+ // the declaration group.
403
+ if (markerLineIndex > 0) {
404
+ const above = lines[markerLineIndex - 1].text;
405
+ if (!isBlank(above) && startsAttachedDecl(above)) {
406
+ return fail(SwiftFuncErrorCode.MARKER_INSIDE_ATTACHED_DECLARATION, "marker is placed after an attached attribute/modifier; move it before the whole declaration group", markerLineNo);
407
+ }
408
+ }
409
+ // The declaration group must begin on the very next line: no blank line and
410
+ // no comment between the marker and the first attribute/modifier/func token.
411
+ const belowIdx = markerLineIndex + 1;
412
+ if (belowIdx >= lines.length) {
413
+ return fail(SwiftFuncErrorCode.MARKER_NOT_ADJACENT_TO_DECLARATION, "marker has no declaration after it", markerLineNo);
414
+ }
415
+ const belowText = lines[belowIdx].text;
416
+ if (isBlank(belowText)) {
417
+ return fail(SwiftFuncErrorCode.MARKER_NOT_ADJACENT_TO_DECLARATION, "blank line between marker and declaration", markerLineNo);
418
+ }
419
+ const belowTrim = trimmed(belowText);
420
+ if (belowTrim.startsWith("//") || belowTrim.startsWith("/*")) {
421
+ return fail(SwiftFuncErrorCode.MARKER_NOT_ADJACENT_TO_DECLARATION, "comment between marker and declaration", markerLineNo);
422
+ }
423
+ // --- Conditional compilation enclosing the declaration (spec 9.3 rule 8). --
424
+ // If an unbalanced `#if` is open at the declaration start, the declaration is
425
+ // inside conditional compilation -> fail closed.
426
+ let condDepth = 0;
427
+ for (let i = 0; i < belowIdx; i += 1) {
428
+ const t = trimmed(lines[i].text);
429
+ if (/^#if\b/.test(t)) {
430
+ condDepth += 1;
431
+ }
432
+ else if (/^#endif\b/.test(t)) {
433
+ condDepth = Math.max(0, condDepth - 1);
434
+ }
435
+ }
436
+ if (condDepth > 0) {
437
+ return fail(SwiftFuncErrorCode.CONDITIONAL_COMPILATION_IN_SPAN, "declaration is inside a #if conditional-compilation block", markerLineNo);
438
+ }
439
+ // --- Lex the whole file once. --------------------------------------------
440
+ const { mask } = computeCodeMask(source);
441
+ // --- Classify the next declaration and locate its body. ------------------
442
+ const declStartChar = lines[belowIdx].charStart;
443
+ const toks = tokenizeCode(source, mask, declStartChar, source.length);
444
+ // Skip attached attributes (`@Name(...)`) and modifiers; the next bare
445
+ // declaration keyword classifies the node.
446
+ let k = 0;
447
+ // Skip attributes: `@` word optional balanced `(...)`.
448
+ for (;;) {
449
+ if (k < toks.length && toks[k].kind === "at") {
450
+ k += 1; // '@'
451
+ if (k < toks.length && toks[k].kind === "word") {
452
+ k += 1; // attribute name
453
+ }
454
+ // optional balanced (...) argument list
455
+ if (k < toks.length && toks[k].kind === "lparen") {
456
+ let depth = 0;
457
+ while (k < toks.length) {
458
+ if (toks[k].kind === "lparen") {
459
+ depth += 1;
460
+ }
461
+ else if (toks[k].kind === "rparen") {
462
+ depth -= 1;
463
+ if (depth === 0) {
464
+ k += 1;
465
+ break;
466
+ }
467
+ }
468
+ k += 1;
469
+ }
470
+ }
471
+ continue;
472
+ }
473
+ if (k < toks.length && toks[k].kind === "newline") {
474
+ k += 1;
475
+ continue;
476
+ }
477
+ break;
478
+ }
479
+ // Skip modifiers (and blank-line newlines between them).
480
+ while (k < toks.length) {
481
+ const t = toks[k];
482
+ if (t.kind === "newline") {
483
+ k += 1;
484
+ continue;
485
+ }
486
+ if (t.kind === "word" && MODIFIERS.has(t.text)) {
487
+ k += 1;
488
+ continue;
489
+ }
490
+ if (t.kind === "word" && t.text === "class") {
491
+ // `class func`: a leading `class` here is a type-method modifier, not a
492
+ // type declaration. Only skip it when a `func` keyword follows.
493
+ let j = k + 1;
494
+ while (j < toks.length && toks[j].kind === "newline") {
495
+ j += 1;
496
+ }
497
+ if (j < toks.length && toks[j].kind === "word" && toks[j].text === "func") {
498
+ k += 1;
499
+ continue;
500
+ }
501
+ }
502
+ break;
503
+ }
504
+ // The classifying token.
505
+ const head = toks[k];
506
+ if (!head || head.kind !== "word" || head.text !== "func") {
507
+ return fail(SwiftFuncErrorCode.NEXT_NODE_NOT_FUNC, `the declaration after the marker is not a func (${head ? head.text ?? head.kind : "end of file"})`, markerLineNo);
508
+ }
509
+ // Symbol name: read the source right after the `func` keyword. It is either
510
+ // an identifier (`applyCoupon`, possibly followed by a generic `<...>`) or an
511
+ // operator run (`==`, `<`, `+`, ...).
512
+ let s = head.pos + "func".length;
513
+ while (s < source.length && /\s/.test(source[s])) {
514
+ s += 1;
515
+ }
516
+ const idMatch = /^[A-Za-z_][A-Za-z0-9_]*/.exec(source.slice(s));
517
+ let symbolName;
518
+ if (idMatch) {
519
+ symbolName = idMatch[0];
520
+ }
521
+ else {
522
+ // Operator function name: a run of operator chars (stop at `(`, `{`, `[`).
523
+ const opMatch = /^[^\sA-Za-z0-9_({[]+/.exec(source.slice(s));
524
+ symbolName = opMatch ? opMatch[0] : "";
525
+ }
526
+ if (symbolName === "") {
527
+ return fail(SwiftFuncErrorCode.SWIFT_PARSE_ERROR_IN_REGION, "could not read the function name", markerLineNo);
528
+ }
529
+ // --- Nesting check (spec 9.1 / 9.3 rule 7). ------------------------------
530
+ if (!enclosingScopesAllTypes(source, mask, head.pos)) {
531
+ return fail(SwiftFuncErrorCode.NESTED_FUNC_UNSUPPORTED, "func is nested inside a function/closure/non-type scope; inferred mode supports only top-level and type-member funcs", markerLineNo);
532
+ }
533
+ // --- Find the body open brace (first `{` at paren/bracket depth 0). -------
534
+ // Stop if we hit a closing `}` (enclosing scope) or a new declaration keyword
535
+ // first -> the func has no body (protocol requirement, abstract decl).
536
+ let bodyOpenTokIdx = -1;
537
+ {
538
+ let parenDepth = 0;
539
+ for (let p = k + 1; p < toks.length; p += 1) {
540
+ const t = toks[p];
541
+ if (t.kind === "lparen" || t.kind === "lbracket") {
542
+ parenDepth += 1;
543
+ }
544
+ else if (t.kind === "rparen" || t.kind === "rbracket") {
545
+ if (parenDepth > 0) {
546
+ parenDepth -= 1;
547
+ }
548
+ }
549
+ else if (t.kind === "lbrace") {
550
+ if (parenDepth === 0) {
551
+ bodyOpenTokIdx = p;
552
+ break;
553
+ }
554
+ }
555
+ else if (t.kind === "rbrace") {
556
+ if (parenDepth === 0) {
557
+ return fail(SwiftFuncErrorCode.FUNC_HAS_NO_BODY, "func has no body (no opening brace before the enclosing scope closes)", markerLineNo);
558
+ }
559
+ }
560
+ else if (t.kind === "word" &&
561
+ parenDepth === 0 &&
562
+ (t.text === "func" ||
563
+ t.text === "var" ||
564
+ t.text === "let" ||
565
+ t.text === "struct" ||
566
+ t.text === "class" ||
567
+ t.text === "enum" ||
568
+ t.text === "protocol" ||
569
+ t.text === "extension" ||
570
+ t.text === "init" ||
571
+ t.text === "deinit" ||
572
+ t.text === "subscript" ||
573
+ t.text === "typealias")) {
574
+ return fail(SwiftFuncErrorCode.FUNC_HAS_NO_BODY, "func has no body (next declaration starts before a body brace)", markerLineNo);
575
+ }
576
+ }
577
+ }
578
+ if (bodyOpenTokIdx < 0) {
579
+ return fail(SwiftFuncErrorCode.FUNC_HAS_NO_BODY, "func has no body", markerLineNo);
580
+ }
581
+ // --- Brace-match the body to its closing brace (code-context braces only). -
582
+ const openPos = toks[bodyOpenTokIdx].pos;
583
+ let depth = 0;
584
+ let closePos = -1;
585
+ for (let p = openPos; p < source.length; p += 1) {
586
+ if (mask[p] === 0) {
587
+ continue;
588
+ }
589
+ const ch = source[p];
590
+ if (ch === "{") {
591
+ depth += 1;
592
+ }
593
+ else if (ch === "}") {
594
+ depth -= 1;
595
+ if (depth === 0) {
596
+ closePos = p;
597
+ break;
598
+ }
599
+ }
600
+ }
601
+ if (closePos < 0) {
602
+ return fail(SwiftFuncErrorCode.FUNC_BODY_HAS_NO_CLOSING_BRACE, "func body has no closing brace", markerLineNo);
603
+ }
604
+ // --- Span extent (spec 9.3). ---------------------------------------------
605
+ const startLineIdx = belowIdx; // first attribute/modifier/func line
606
+ const endLineIdx = lineIndexOfChar(lines, closePos);
607
+ if (endLineIdx < 0) {
608
+ return fail(SwiftFuncErrorCode.SWIFT_PARSE_ERROR_IN_REGION, "could not locate the closing-brace line", markerLineNo);
609
+ }
610
+ // --- No marker may appear inside the computed span (spec 9.3 rule 9). -----
611
+ for (let i = startLineIdx; i <= endLineIdx; i += 1) {
612
+ const parse = parseMarkerLine(lines[i].text, markerPrefix);
613
+ if (parse.kind === "start" || parse.kind === "end" || parse.kind === "invalid") {
614
+ return fail(SwiftFuncErrorCode.ANOTHER_MARKER_INSIDE_SPAN, `another use-case marker appears inside the computed span (line ${i + 1})`, markerLineNo);
615
+ }
616
+ }
617
+ // --- No conditional-compilation directive inside the span (9.3 rule 8). ---
618
+ for (let i = startLineIdx; i <= endLineIdx; i += 1) {
619
+ if (CONDITIONAL_DIRECTIVE.test(trimmed(lines[i].text))) {
620
+ return fail(SwiftFuncErrorCode.CONDITIONAL_COMPILATION_IN_SPAN, `conditional-compilation directive inside the computed span (line ${i + 1})`, markerLineNo);
621
+ }
622
+ }
623
+ const startLine = lines[startLineIdx];
624
+ const endLine = lines[endLineIdx];
625
+ const bodyLines = lines.slice(startLineIdx, endLineIdx + 1).map((l) => l.text);
626
+ return {
627
+ ok: true,
628
+ span: {
629
+ start_line: startLineIdx + 1,
630
+ end_line: endLineIdx + 1,
631
+ start_byte: startLine.byteStart,
632
+ end_byte: endLine.byteEnd
633
+ },
634
+ symbol_name: symbolName,
635
+ body_lines: bodyLines
636
+ };
637
+ }
638
+ //# sourceMappingURL=swiftFuncRecognizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swiftFuncRecognizer.js","sourceRoot":"","sources":["../../src/markers/swiftFuncRecognizer.ts"],"names":[],"mappings":"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"}