@superbee/core 0.2.0-pre.4 → 0.2.0-pre.41

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 (628) hide show
  1. package/README.md +1255 -0
  2. package/dist/artifact-contract.d.ts +90 -0
  3. package/dist/artifact-contract.d.ts.map +1 -0
  4. package/dist/artifact-contract.js +205 -0
  5. package/dist/artifact-contract.js.map +1 -0
  6. package/dist/backend.d.ts +22 -2
  7. package/dist/backend.d.ts.map +1 -1
  8. package/dist/backend.js +153 -38
  9. package/dist/backend.js.map +1 -1
  10. package/dist/blob-contract.d.ts +82 -0
  11. package/dist/blob-contract.d.ts.map +1 -0
  12. package/dist/blob-contract.js +134 -0
  13. package/dist/blob-contract.js.map +1 -0
  14. package/dist/blob-journal.d.ts +303 -0
  15. package/dist/blob-journal.d.ts.map +1 -0
  16. package/dist/blob-journal.js +541 -0
  17. package/dist/blob-journal.js.map +1 -0
  18. package/dist/body-replace-guards.d.ts +52 -0
  19. package/dist/body-replace-guards.d.ts.map +1 -0
  20. package/dist/body-replace-guards.js +176 -0
  21. package/dist/body-replace-guards.js.map +1 -0
  22. package/dist/builtin-recipes/content.d.ts +93 -0
  23. package/dist/builtin-recipes/content.d.ts.map +1 -0
  24. package/dist/builtin-recipes/content.js +288 -0
  25. package/dist/builtin-recipes/content.js.map +1 -0
  26. package/dist/builtin-recipes.d.ts +10 -0
  27. package/dist/builtin-recipes.d.ts.map +1 -0
  28. package/dist/builtin-recipes.js +97 -0
  29. package/dist/builtin-recipes.js.map +1 -0
  30. package/dist/bundle-health/index.d.ts +14 -0
  31. package/dist/bundle-health/index.d.ts.map +1 -0
  32. package/dist/bundle-health/index.js +12 -0
  33. package/dist/bundle-health/index.js.map +1 -0
  34. package/dist/bundle-health/kind-findings.d.ts +44 -0
  35. package/dist/bundle-health/kind-findings.d.ts.map +1 -0
  36. package/dist/bundle-health/kind-findings.js +68 -0
  37. package/dist/bundle-health/kind-findings.js.map +1 -0
  38. package/dist/bundle-health/legacy-page.d.ts +39 -0
  39. package/dist/bundle-health/legacy-page.d.ts.map +1 -0
  40. package/dist/bundle-health/legacy-page.js +50 -0
  41. package/dist/bundle-health/legacy-page.js.map +1 -0
  42. package/dist/bundle-health/report.d.ts +207 -0
  43. package/dist/bundle-health/report.d.ts.map +1 -0
  44. package/dist/bundle-health/report.js +454 -0
  45. package/dist/bundle-health/report.js.map +1 -0
  46. package/dist/bundle-ops.d.ts +3 -2
  47. package/dist/bundle-ops.d.ts.map +1 -1
  48. package/dist/bundle-ops.js +4 -4
  49. package/dist/bundle-ops.js.map +1 -1
  50. package/dist/bundle.d.ts +3 -4
  51. package/dist/bundle.d.ts.map +1 -1
  52. package/dist/bundle.js +5 -14
  53. package/dist/bundle.js.map +1 -1
  54. package/dist/code-point-order.d.ts +8 -0
  55. package/dist/code-point-order.d.ts.map +1 -0
  56. package/dist/code-point-order.js +20 -0
  57. package/dist/code-point-order.js.map +1 -0
  58. package/dist/code-unit-order.d.ts +15 -0
  59. package/dist/code-unit-order.d.ts.map +1 -0
  60. package/dist/code-unit-order.js +17 -0
  61. package/dist/code-unit-order.js.map +1 -0
  62. package/dist/connector-request.d.ts +112 -0
  63. package/dist/connector-request.d.ts.map +1 -0
  64. package/dist/connector-request.js +495 -0
  65. package/dist/connector-request.js.map +1 -0
  66. package/dist/connectors.d.ts +297 -0
  67. package/dist/connectors.d.ts.map +1 -0
  68. package/dist/connectors.js +1233 -0
  69. package/dist/connectors.js.map +1 -0
  70. package/dist/cross-bundle.d.ts +135 -0
  71. package/dist/cross-bundle.d.ts.map +1 -0
  72. package/dist/cross-bundle.js +191 -0
  73. package/dist/cross-bundle.js.map +1 -0
  74. package/dist/dependencies.d.ts +94 -0
  75. package/dist/dependencies.d.ts.map +1 -0
  76. package/dist/dependencies.js +180 -0
  77. package/dist/dependencies.js.map +1 -0
  78. package/dist/document-codec.d.ts +7 -2
  79. package/dist/document-codec.d.ts.map +1 -1
  80. package/dist/document-codec.js +8 -5
  81. package/dist/document-codec.js.map +1 -1
  82. package/dist/document-field-actions.d.ts +31 -1
  83. package/dist/document-field-actions.d.ts.map +1 -1
  84. package/dist/document-field-actions.js +137 -34
  85. package/dist/document-field-actions.js.map +1 -1
  86. package/dist/document-mutation.d.ts +37 -13
  87. package/dist/document-mutation.d.ts.map +1 -1
  88. package/dist/document-mutation.js +129 -60
  89. package/dist/document-mutation.js.map +1 -1
  90. package/dist/document-transfer.d.ts +208 -0
  91. package/dist/document-transfer.d.ts.map +1 -0
  92. package/dist/document-transfer.js +928 -0
  93. package/dist/document-transfer.js.map +1 -0
  94. package/dist/document-write-policy.d.ts.map +1 -1
  95. package/dist/document-write-policy.js +4 -2
  96. package/dist/document-write-policy.js.map +1 -1
  97. package/dist/domain-model.d.ts +73 -0
  98. package/dist/domain-model.d.ts.map +1 -0
  99. package/dist/domain-model.js +169 -0
  100. package/dist/domain-model.js.map +1 -0
  101. package/dist/engine.d.ts +21 -9
  102. package/dist/engine.d.ts.map +1 -1
  103. package/dist/engine.js +72 -14
  104. package/dist/engine.js.map +1 -1
  105. package/dist/file-journaled-backend-internal.d.ts +21 -0
  106. package/dist/file-journaled-backend-internal.d.ts.map +1 -0
  107. package/dist/file-journaled-backend-internal.js +12 -0
  108. package/dist/file-journaled-backend-internal.js.map +1 -0
  109. package/dist/file-journaled-backend.d.ts +160 -0
  110. package/dist/file-journaled-backend.d.ts.map +1 -0
  111. package/dist/file-journaled-backend.js +1345 -0
  112. package/dist/file-journaled-backend.js.map +1 -0
  113. package/dist/filesystem-host.d.ts +15 -0
  114. package/dist/filesystem-host.d.ts.map +1 -0
  115. package/dist/filesystem-host.js +20 -0
  116. package/dist/filesystem-host.js.map +1 -0
  117. package/dist/filesystem-identity.d.ts +97 -21
  118. package/dist/filesystem-identity.d.ts.map +1 -1
  119. package/dist/filesystem-identity.js +398 -119
  120. package/dist/filesystem-identity.js.map +1 -1
  121. package/dist/filesystem-lock.d.ts +16 -3
  122. package/dist/filesystem-lock.d.ts.map +1 -1
  123. package/dist/filesystem-lock.js +323 -77
  124. package/dist/filesystem-lock.js.map +1 -1
  125. package/dist/filesystem-push-role.d.ts +77 -0
  126. package/dist/filesystem-push-role.d.ts.map +1 -0
  127. package/dist/filesystem-push-role.js +165 -0
  128. package/dist/filesystem-push-role.js.map +1 -0
  129. package/dist/filesystem.d.ts +17 -0
  130. package/dist/filesystem.d.ts.map +1 -0
  131. package/dist/filesystem.js +18 -0
  132. package/dist/filesystem.js.map +1 -0
  133. package/dist/frontmatter.d.ts +8 -6
  134. package/dist/frontmatter.d.ts.map +1 -1
  135. package/dist/frontmatter.js +5 -4
  136. package/dist/frontmatter.js.map +1 -1
  137. package/dist/governed-body-write.d.ts +8 -1
  138. package/dist/governed-body-write.d.ts.map +1 -1
  139. package/dist/governed-body-write.js +9 -2
  140. package/dist/governed-body-write.js.map +1 -1
  141. package/dist/heads-digest.d.ts.map +1 -1
  142. package/dist/heads-digest.js +2 -1
  143. package/dist/heads-digest.js.map +1 -1
  144. package/dist/host-policy-snapshot.d.ts +9 -0
  145. package/dist/host-policy-snapshot.d.ts.map +1 -0
  146. package/dist/host-policy-snapshot.js +33 -0
  147. package/dist/host-policy-snapshot.js.map +1 -0
  148. package/dist/host-text.d.ts +31 -0
  149. package/dist/host-text.d.ts.map +1 -0
  150. package/dist/host-text.js +77 -0
  151. package/dist/host-text.js.map +1 -0
  152. package/dist/hosted-client/binding.d.ts +7 -0
  153. package/dist/hosted-client/binding.d.ts.map +1 -0
  154. package/dist/hosted-client/binding.js +10 -0
  155. package/dist/hosted-client/binding.js.map +1 -0
  156. package/dist/hosted-client/blob-delivery.d.ts +68 -0
  157. package/dist/hosted-client/blob-delivery.d.ts.map +1 -0
  158. package/dist/hosted-client/blob-delivery.js +170 -0
  159. package/dist/hosted-client/blob-delivery.js.map +1 -0
  160. package/dist/hosted-client/blob-write.d.ts +387 -0
  161. package/dist/hosted-client/blob-write.d.ts.map +1 -0
  162. package/dist/hosted-client/blob-write.js +770 -0
  163. package/dist/hosted-client/blob-write.js.map +1 -0
  164. package/dist/hosted-client/bundle-listing.d.ts +46 -0
  165. package/dist/hosted-client/bundle-listing.d.ts.map +1 -0
  166. package/dist/hosted-client/bundle-listing.js +36 -0
  167. package/dist/hosted-client/bundle-listing.js.map +1 -0
  168. package/dist/hosted-client/client.d.ts +219 -0
  169. package/dist/hosted-client/client.d.ts.map +1 -0
  170. package/dist/hosted-client/client.js +309 -0
  171. package/dist/hosted-client/client.js.map +1 -0
  172. package/dist/hosted-client/directory.d.ts +46 -0
  173. package/dist/hosted-client/directory.d.ts.map +1 -0
  174. package/dist/hosted-client/directory.js +74 -0
  175. package/dist/hosted-client/directory.js.map +1 -0
  176. package/dist/hosted-client/errors.d.ts +26 -0
  177. package/dist/hosted-client/errors.d.ts.map +1 -0
  178. package/dist/hosted-client/errors.js +35 -0
  179. package/dist/hosted-client/errors.js.map +1 -0
  180. package/dist/hosted-client/inbox.d.ts +320 -0
  181. package/dist/hosted-client/inbox.d.ts.map +1 -0
  182. package/dist/hosted-client/inbox.js +379 -0
  183. package/dist/hosted-client/inbox.js.map +1 -0
  184. package/dist/hosted-client/index.d.ts +30 -0
  185. package/dist/hosted-client/index.d.ts.map +1 -0
  186. package/dist/hosted-client/index.js +32 -0
  187. package/dist/hosted-client/index.js.map +1 -0
  188. package/dist/hosted-client/journal.d.ts +103 -0
  189. package/dist/hosted-client/journal.d.ts.map +1 -0
  190. package/dist/hosted-client/journal.js +464 -0
  191. package/dist/hosted-client/journal.js.map +1 -0
  192. package/dist/hosted-client/node.d.ts +74 -0
  193. package/dist/hosted-client/node.d.ts.map +1 -0
  194. package/dist/hosted-client/node.js +219 -0
  195. package/dist/hosted-client/node.js.map +1 -0
  196. package/dist/hosted-client/reference.d.ts +12 -0
  197. package/dist/hosted-client/reference.d.ts.map +1 -0
  198. package/dist/hosted-client/reference.js +29 -0
  199. package/dist/hosted-client/reference.js.map +1 -0
  200. package/dist/hosted-client/write.d.ts +217 -0
  201. package/dist/hosted-client/write.d.ts.map +1 -0
  202. package/dist/hosted-client/write.js +418 -0
  203. package/dist/hosted-client/write.js.map +1 -0
  204. package/dist/hosted-transport/answer-rows.d.ts +243 -0
  205. package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
  206. package/dist/hosted-transport/answer-rows.js +457 -0
  207. package/dist/hosted-transport/answer-rows.js.map +1 -0
  208. package/dist/hosted-transport/blob-reads.d.ts +35 -0
  209. package/dist/hosted-transport/blob-reads.d.ts.map +1 -0
  210. package/dist/hosted-transport/blob-reads.js +179 -0
  211. package/dist/hosted-transport/blob-reads.js.map +1 -0
  212. package/dist/hosted-transport/blob-write.d.ts +34 -0
  213. package/dist/hosted-transport/blob-write.d.ts.map +1 -0
  214. package/dist/hosted-transport/blob-write.js +115 -0
  215. package/dist/hosted-transport/blob-write.js.map +1 -0
  216. package/dist/hosted-transport/carrier.d.ts +151 -0
  217. package/dist/hosted-transport/carrier.d.ts.map +1 -0
  218. package/dist/hosted-transport/carrier.js +260 -0
  219. package/dist/hosted-transport/carrier.js.map +1 -0
  220. package/dist/hosted-transport/document-backend.d.ts +74 -0
  221. package/dist/hosted-transport/document-backend.d.ts.map +1 -0
  222. package/dist/hosted-transport/document-backend.js +160 -0
  223. package/dist/hosted-transport/document-backend.js.map +1 -0
  224. package/dist/hosted-transport/history-pages.d.ts +55 -0
  225. package/dist/hosted-transport/history-pages.d.ts.map +1 -0
  226. package/dist/hosted-transport/history-pages.js +69 -0
  227. package/dist/hosted-transport/history-pages.js.map +1 -0
  228. package/dist/hosted-transport/index.d.ts +19 -0
  229. package/dist/hosted-transport/index.d.ts.map +1 -0
  230. package/dist/hosted-transport/index.js +19 -0
  231. package/dist/hosted-transport/index.js.map +1 -0
  232. package/dist/hosted-transport/operations.d.ts +85 -0
  233. package/dist/hosted-transport/operations.d.ts.map +1 -0
  234. package/dist/hosted-transport/operations.js +128 -0
  235. package/dist/hosted-transport/operations.js.map +1 -0
  236. package/dist/hosted-transport/paged-reads.d.ts +87 -0
  237. package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
  238. package/dist/hosted-transport/paged-reads.js +238 -0
  239. package/dist/hosted-transport/paged-reads.js.map +1 -0
  240. package/dist/hosted-transport/read-adapter.d.ts +256 -0
  241. package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
  242. package/dist/hosted-transport/read-adapter.js +568 -0
  243. package/dist/hosted-transport/read-adapter.js.map +1 -0
  244. package/dist/hosted-transport/root-write.d.ts +114 -0
  245. package/dist/hosted-transport/root-write.d.ts.map +1 -0
  246. package/dist/hosted-transport/root-write.js +171 -0
  247. package/dist/hosted-transport/root-write.js.map +1 -0
  248. package/dist/hosted-transport/whole-document-transport.d.ts +204 -0
  249. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
  250. package/dist/hosted-transport/whole-document-transport.js +447 -0
  251. package/dist/hosted-transport/whole-document-transport.js.map +1 -0
  252. package/dist/identity-fold.d.ts +18 -0
  253. package/dist/identity-fold.d.ts.map +1 -0
  254. package/dist/identity-fold.js +22 -0
  255. package/dist/identity-fold.js.map +1 -0
  256. package/dist/index.d.ts +41 -11
  257. package/dist/index.d.ts.map +1 -1
  258. package/dist/index.js +31 -9
  259. package/dist/index.js.map +1 -1
  260. package/dist/indexeddb-backend.d.ts +25 -33
  261. package/dist/indexeddb-backend.d.ts.map +1 -1
  262. package/dist/indexeddb-backend.js +264 -8
  263. package/dist/indexeddb-backend.js.map +1 -1
  264. package/dist/inventory-guard.d.ts +58 -0
  265. package/dist/inventory-guard.d.ts.map +1 -0
  266. package/dist/inventory-guard.js +169 -0
  267. package/dist/inventory-guard.js.map +1 -0
  268. package/dist/journaled-backend.d.ts +149 -9
  269. package/dist/journaled-backend.d.ts.map +1 -1
  270. package/dist/journaled-backend.js +64 -58
  271. package/dist/journaled-backend.js.map +1 -1
  272. package/dist/kind-authoring.d.ts +170 -0
  273. package/dist/kind-authoring.d.ts.map +1 -0
  274. package/dist/kind-authoring.js +452 -0
  275. package/dist/kind-authoring.js.map +1 -0
  276. package/dist/kind-changes.d.ts +45 -0
  277. package/dist/kind-changes.d.ts.map +1 -0
  278. package/dist/kind-changes.js +96 -0
  279. package/dist/kind-changes.js.map +1 -0
  280. package/dist/kind-conformance-error.d.ts +15 -0
  281. package/dist/kind-conformance-error.d.ts.map +1 -0
  282. package/dist/kind-conformance-error.js +20 -0
  283. package/dist/kind-conformance-error.js.map +1 -0
  284. package/dist/kind-coverage.d.ts +99 -0
  285. package/dist/kind-coverage.d.ts.map +1 -0
  286. package/dist/kind-coverage.js +186 -0
  287. package/dist/kind-coverage.js.map +1 -0
  288. package/dist/kind-deprecation.d.ts +32 -0
  289. package/dist/kind-deprecation.d.ts.map +1 -0
  290. package/dist/kind-deprecation.js +141 -0
  291. package/dist/kind-deprecation.js.map +1 -0
  292. package/dist/kind-field-mutation.d.ts +4 -0
  293. package/dist/kind-field-mutation.d.ts.map +1 -1
  294. package/dist/kind-field-mutation.js +28 -3
  295. package/dist/kind-field-mutation.js.map +1 -1
  296. package/dist/kinds-load.js +4 -4
  297. package/dist/kinds-load.js.map +1 -1
  298. package/dist/kinds.d.ts +111 -2
  299. package/dist/kinds.d.ts.map +1 -1
  300. package/dist/kinds.js +386 -20
  301. package/dist/kinds.js.map +1 -1
  302. package/dist/link-emit.d.ts +29 -0
  303. package/dist/link-emit.d.ts.map +1 -0
  304. package/dist/link-emit.js +39 -0
  305. package/dist/link-emit.js.map +1 -0
  306. package/dist/link-types.d.ts +27 -0
  307. package/dist/link-types.d.ts.map +1 -0
  308. package/dist/link-types.js +60 -0
  309. package/dist/link-types.js.map +1 -0
  310. package/dist/links.d.ts +52 -3
  311. package/dist/links.d.ts.map +1 -1
  312. package/dist/links.js +259 -18
  313. package/dist/links.js.map +1 -1
  314. package/dist/managed-document-metadata.d.ts +2 -0
  315. package/dist/managed-document-metadata.d.ts.map +1 -0
  316. package/dist/managed-document-metadata.js +9 -0
  317. package/dist/managed-document-metadata.js.map +1 -0
  318. package/dist/memory-backend.d.ts +3 -0
  319. package/dist/memory-backend.d.ts.map +1 -1
  320. package/dist/memory-backend.js +44 -2
  321. package/dist/memory-backend.js.map +1 -1
  322. package/dist/okf-actor.d.ts +1 -0
  323. package/dist/okf-actor.d.ts.map +1 -1
  324. package/dist/okf-actor.js +1 -0
  325. package/dist/okf-actor.js.map +1 -1
  326. package/dist/okf-authoring.d.ts +4 -0
  327. package/dist/okf-authoring.d.ts.map +1 -0
  328. package/dist/okf-authoring.js +12 -0
  329. package/dist/okf-authoring.js.map +1 -0
  330. package/dist/okf-standard-fields.d.ts +3 -0
  331. package/dist/okf-standard-fields.d.ts.map +1 -1
  332. package/dist/okf-standard-fields.js +3 -0
  333. package/dist/okf-standard-fields.js.map +1 -1
  334. package/dist/path-fold.d.ts +39 -0
  335. package/dist/path-fold.d.ts.map +1 -0
  336. package/dist/path-fold.js +41 -0
  337. package/dist/path-fold.js.map +1 -0
  338. package/dist/paths.d.ts +18 -0
  339. package/dist/paths.d.ts.map +1 -1
  340. package/dist/paths.js +32 -0
  341. package/dist/paths.js.map +1 -1
  342. package/dist/platform.d.ts +13 -2
  343. package/dist/platform.d.ts.map +1 -1
  344. package/dist/platform.js +16 -0
  345. package/dist/platform.js.map +1 -1
  346. package/dist/portable-export.d.ts +119 -0
  347. package/dist/portable-export.d.ts.map +1 -0
  348. package/dist/portable-export.js +501 -0
  349. package/dist/portable-export.js.map +1 -0
  350. package/dist/publication-filesystem.d.ts +1 -1
  351. package/dist/publication-filesystem.d.ts.map +1 -1
  352. package/dist/publication-filesystem.js +1 -1
  353. package/dist/publication-filesystem.js.map +1 -1
  354. package/dist/qualified-links.d.ts +67 -0
  355. package/dist/qualified-links.d.ts.map +1 -0
  356. package/dist/qualified-links.js +117 -0
  357. package/dist/qualified-links.js.map +1 -0
  358. package/dist/query-filter.d.ts +16 -2
  359. package/dist/query-filter.d.ts.map +1 -1
  360. package/dist/query-filter.js +40 -1
  361. package/dist/query-filter.js.map +1 -1
  362. package/dist/query-order.d.ts +22 -0
  363. package/dist/query-order.d.ts.map +1 -0
  364. package/dist/query-order.js +43 -0
  365. package/dist/query-order.js.map +1 -0
  366. package/dist/recipe-lifecycle/errors.d.ts +96 -0
  367. package/dist/recipe-lifecycle/errors.d.ts.map +1 -0
  368. package/dist/recipe-lifecycle/errors.js +122 -0
  369. package/dist/recipe-lifecycle/errors.js.map +1 -0
  370. package/dist/recipe-lifecycle/evolution.d.ts +124 -0
  371. package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
  372. package/dist/recipe-lifecycle/evolution.js +993 -0
  373. package/dist/recipe-lifecycle/evolution.js.map +1 -0
  374. package/dist/recipe-lifecycle/index.d.ts +34 -0
  375. package/dist/recipe-lifecycle/index.d.ts.map +1 -0
  376. package/dist/recipe-lifecycle/index.js +28 -0
  377. package/dist/recipe-lifecycle/index.js.map +1 -0
  378. package/dist/recipe-lifecycle/install.d.ts +155 -0
  379. package/dist/recipe-lifecycle/install.d.ts.map +1 -0
  380. package/dist/recipe-lifecycle/install.js +604 -0
  381. package/dist/recipe-lifecycle/install.js.map +1 -0
  382. package/dist/recipe-lifecycle/legacy-aliases.d.ts +16 -0
  383. package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -0
  384. package/dist/recipe-lifecycle/legacy-aliases.js +51 -0
  385. package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -0
  386. package/dist/recipe-lifecycle/retirement-apply.d.ts +59 -0
  387. package/dist/recipe-lifecycle/retirement-apply.d.ts.map +1 -0
  388. package/dist/recipe-lifecycle/retirement-apply.js +165 -0
  389. package/dist/recipe-lifecycle/retirement-apply.js.map +1 -0
  390. package/dist/recipe-lifecycle/retirement.d.ts +89 -0
  391. package/dist/recipe-lifecycle/retirement.d.ts.map +1 -0
  392. package/dist/recipe-lifecycle/retirement.js +347 -0
  393. package/dist/recipe-lifecycle/retirement.js.map +1 -0
  394. package/dist/recipe-lifecycle/stamp.d.ts +151 -0
  395. package/dist/recipe-lifecycle/stamp.d.ts.map +1 -0
  396. package/dist/recipe-lifecycle/stamp.js +364 -0
  397. package/dist/recipe-lifecycle/stamp.js.map +1 -0
  398. package/dist/recipe-set-preflight.d.ts +139 -0
  399. package/dist/recipe-set-preflight.d.ts.map +1 -0
  400. package/dist/recipe-set-preflight.js +536 -0
  401. package/dist/recipe-set-preflight.js.map +1 -0
  402. package/dist/recipes.d.ts +29 -1
  403. package/dist/recipes.d.ts.map +1 -1
  404. package/dist/recipes.js +137 -1
  405. package/dist/recipes.js.map +1 -1
  406. package/dist/record-overlay/apply.d.ts +43 -0
  407. package/dist/record-overlay/apply.d.ts.map +1 -0
  408. package/dist/record-overlay/apply.js +527 -0
  409. package/dist/record-overlay/apply.js.map +1 -0
  410. package/dist/record-overlay/canonical.d.ts +22 -0
  411. package/dist/record-overlay/canonical.d.ts.map +1 -0
  412. package/dist/record-overlay/canonical.js +47 -0
  413. package/dist/record-overlay/canonical.js.map +1 -0
  414. package/dist/record-overlay/digest.d.ts +4 -0
  415. package/dist/record-overlay/digest.d.ts.map +1 -0
  416. package/dist/record-overlay/digest.js +11 -0
  417. package/dist/record-overlay/digest.js.map +1 -0
  418. package/dist/record-overlay/errors.d.ts +44 -0
  419. package/dist/record-overlay/errors.d.ts.map +1 -0
  420. package/dist/record-overlay/errors.js +55 -0
  421. package/dist/record-overlay/errors.js.map +1 -0
  422. package/dist/record-overlay/findings.d.ts +5 -0
  423. package/dist/record-overlay/findings.d.ts.map +1 -0
  424. package/dist/record-overlay/findings.js +83 -0
  425. package/dist/record-overlay/findings.js.map +1 -0
  426. package/dist/record-overlay/index.d.ts +23 -0
  427. package/dist/record-overlay/index.d.ts.map +1 -0
  428. package/dist/record-overlay/index.js +21 -0
  429. package/dist/record-overlay/index.js.map +1 -0
  430. package/dist/record-overlay/plan.d.ts +12 -0
  431. package/dist/record-overlay/plan.d.ts.map +1 -0
  432. package/dist/record-overlay/plan.js +285 -0
  433. package/dist/record-overlay/plan.js.map +1 -0
  434. package/dist/record-overlay/policy.d.ts +74 -0
  435. package/dist/record-overlay/policy.d.ts.map +1 -0
  436. package/dist/record-overlay/policy.js +235 -0
  437. package/dist/record-overlay/policy.js.map +1 -0
  438. package/dist/record-overlay/redact.d.ts +3 -0
  439. package/dist/record-overlay/redact.d.ts.map +1 -0
  440. package/dist/record-overlay/redact.js +27 -0
  441. package/dist/record-overlay/redact.js.map +1 -0
  442. package/dist/record-overlay/signal-kind.d.ts +30 -0
  443. package/dist/record-overlay/signal-kind.d.ts.map +1 -0
  444. package/dist/record-overlay/signal-kind.js +38 -0
  445. package/dist/record-overlay/signal-kind.js.map +1 -0
  446. package/dist/record-overlay/signal-text.d.ts +45 -0
  447. package/dist/record-overlay/signal-text.d.ts.map +1 -0
  448. package/dist/record-overlay/signal-text.js +116 -0
  449. package/dist/record-overlay/signal-text.js.map +1 -0
  450. package/dist/record-overlay/source-index.d.ts +19 -0
  451. package/dist/record-overlay/source-index.d.ts.map +1 -0
  452. package/dist/record-overlay/source-index.js +102 -0
  453. package/dist/record-overlay/source-index.js.map +1 -0
  454. package/dist/record-overlay/types.d.ts +291 -0
  455. package/dist/record-overlay/types.d.ts.map +1 -0
  456. package/dist/record-overlay/types.js +2 -0
  457. package/dist/record-overlay/types.js.map +1 -0
  458. package/dist/remote-backend.d.ts +58 -13
  459. package/dist/remote-backend.d.ts.map +1 -1
  460. package/dist/remote-backend.js +156 -36
  461. package/dist/remote-backend.js.map +1 -1
  462. package/dist/remote-document-codec.d.ts +2 -1
  463. package/dist/remote-document-codec.d.ts.map +1 -1
  464. package/dist/remote-document-codec.js +3 -2
  465. package/dist/remote-document-codec.js.map +1 -1
  466. package/dist/remote-error.d.ts +17 -1
  467. package/dist/remote-error.d.ts.map +1 -1
  468. package/dist/remote-error.js +32 -2
  469. package/dist/remote-error.js.map +1 -1
  470. package/dist/remote-operations.d.ts +0 -40
  471. package/dist/remote-operations.d.ts.map +1 -1
  472. package/dist/remote-operations.js +26 -6
  473. package/dist/remote-operations.js.map +1 -1
  474. package/dist/remote-parsers.d.ts +1 -1
  475. package/dist/remote-parsers.js +1 -1
  476. package/dist/search/backend-source.d.ts +6 -0
  477. package/dist/search/backend-source.d.ts.map +1 -0
  478. package/dist/search/backend-source.js +33 -0
  479. package/dist/search/backend-source.js.map +1 -0
  480. package/dist/search/contract.d.ts +151 -0
  481. package/dist/search/contract.d.ts.map +1 -0
  482. package/dist/search/contract.js +78 -0
  483. package/dist/search/contract.js.map +1 -0
  484. package/dist/search/errors.d.ts +30 -0
  485. package/dist/search/errors.d.ts.map +1 -0
  486. package/dist/search/errors.js +50 -0
  487. package/dist/search/errors.js.map +1 -0
  488. package/dist/search/identity.d.ts +12 -0
  489. package/dist/search/identity.d.ts.map +1 -0
  490. package/dist/search/identity.js +90 -0
  491. package/dist/search/identity.js.map +1 -0
  492. package/dist/search/index.d.ts +16 -0
  493. package/dist/search/index.d.ts.map +1 -0
  494. package/dist/search/index.js +15 -0
  495. package/dist/search/index.js.map +1 -0
  496. package/dist/search/memory-source.d.ts +36 -0
  497. package/dist/search/memory-source.d.ts.map +1 -0
  498. package/dist/search/memory-source.js +235 -0
  499. package/dist/search/memory-source.js.map +1 -0
  500. package/dist/search/rank.d.ts +34 -0
  501. package/dist/search/rank.d.ts.map +1 -0
  502. package/dist/search/rank.js +129 -0
  503. package/dist/search/rank.js.map +1 -0
  504. package/dist/search/row-text.d.ts +38 -0
  505. package/dist/search/row-text.d.ts.map +1 -0
  506. package/dist/search/row-text.js +88 -0
  507. package/dist/search/row-text.js.map +1 -0
  508. package/dist/search/search.d.ts +28 -0
  509. package/dist/search/search.d.ts.map +1 -0
  510. package/dist/search/search.js +257 -0
  511. package/dist/search/search.js.map +1 -0
  512. package/dist/search/source.d.ts +67 -0
  513. package/dist/search/source.d.ts.map +1 -0
  514. package/dist/search/source.js +2 -0
  515. package/dist/search/source.js.map +1 -0
  516. package/dist/search/text.d.ts +47 -0
  517. package/dist/search/text.d.ts.map +1 -0
  518. package/dist/search/text.js +150 -0
  519. package/dist/search/text.js.map +1 -0
  520. package/dist/site-capabilities.d.ts +345 -0
  521. package/dist/site-capabilities.d.ts.map +1 -0
  522. package/dist/site-capabilities.js +724 -0
  523. package/dist/site-capabilities.js.map +1 -0
  524. package/dist/source-engine/driver.d.ts +42 -0
  525. package/dist/source-engine/driver.d.ts.map +1 -0
  526. package/dist/source-engine/driver.js +529 -0
  527. package/dist/source-engine/driver.js.map +1 -0
  528. package/dist/source-engine/evidence.d.ts +39 -0
  529. package/dist/source-engine/evidence.d.ts.map +1 -0
  530. package/dist/source-engine/evidence.js +54 -0
  531. package/dist/source-engine/evidence.js.map +1 -0
  532. package/dist/source-engine/guard.d.ts +87 -0
  533. package/dist/source-engine/guard.d.ts.map +1 -0
  534. package/dist/source-engine/guard.js +427 -0
  535. package/dist/source-engine/guard.js.map +1 -0
  536. package/dist/source-engine/index.d.ts +35 -0
  537. package/dist/source-engine/index.d.ts.map +1 -0
  538. package/dist/source-engine/index.js +27 -0
  539. package/dist/source-engine/index.js.map +1 -0
  540. package/dist/source-engine/machine-state.d.ts +87 -0
  541. package/dist/source-engine/machine-state.d.ts.map +1 -0
  542. package/dist/source-engine/machine-state.js +94 -0
  543. package/dist/source-engine/machine-state.js.map +1 -0
  544. package/dist/source-engine/observe.d.ts +10 -0
  545. package/dist/source-engine/observe.d.ts.map +1 -0
  546. package/dist/source-engine/observe.js +276 -0
  547. package/dist/source-engine/observe.js.map +1 -0
  548. package/dist/source-engine/overlay.d.ts +50 -0
  549. package/dist/source-engine/overlay.d.ts.map +1 -0
  550. package/dist/source-engine/overlay.js +114 -0
  551. package/dist/source-engine/overlay.js.map +1 -0
  552. package/dist/source-engine/robots.d.ts +53 -0
  553. package/dist/source-engine/robots.d.ts.map +1 -0
  554. package/dist/source-engine/robots.js +158 -0
  555. package/dist/source-engine/robots.js.map +1 -0
  556. package/dist/source-engine/snapshot.d.ts +104 -0
  557. package/dist/source-engine/snapshot.d.ts.map +1 -0
  558. package/dist/source-engine/snapshot.js +240 -0
  559. package/dist/source-engine/snapshot.js.map +1 -0
  560. package/dist/source-engine/target-consumer.d.ts +12 -0
  561. package/dist/source-engine/target-consumer.d.ts.map +1 -0
  562. package/dist/source-engine/target-consumer.js +15 -0
  563. package/dist/source-engine/target-consumer.js.map +1 -0
  564. package/dist/source-engine/target-descriptor.d.ts +3 -0
  565. package/dist/source-engine/target-descriptor.d.ts.map +1 -0
  566. package/dist/source-engine/target-descriptor.js +26 -0
  567. package/dist/source-engine/target-descriptor.js.map +1 -0
  568. package/dist/source-engine/target.d.ts +82 -0
  569. package/dist/source-engine/target.d.ts.map +1 -0
  570. package/dist/source-engine/target.js +213 -0
  571. package/dist/source-engine/target.js.map +1 -0
  572. package/dist/source-engine/types.d.ts +296 -0
  573. package/dist/source-engine/types.d.ts.map +1 -0
  574. package/dist/source-engine/types.js +2 -0
  575. package/dist/source-engine/types.js.map +1 -0
  576. package/dist/source-harness/conformance.d.ts +16 -0
  577. package/dist/source-harness/conformance.d.ts.map +1 -0
  578. package/dist/source-harness/conformance.js +266 -0
  579. package/dist/source-harness/conformance.js.map +1 -0
  580. package/dist/source-harness/fixture.d.ts +97 -0
  581. package/dist/source-harness/fixture.d.ts.map +1 -0
  582. package/dist/source-harness/fixture.js +276 -0
  583. package/dist/source-harness/fixture.js.map +1 -0
  584. package/dist/source-harness/index.d.ts +22 -0
  585. package/dist/source-harness/index.d.ts.map +1 -0
  586. package/dist/source-harness/index.js +19 -0
  587. package/dist/source-harness/index.js.map +1 -0
  588. package/dist/source-harness/peer.d.ts +74 -0
  589. package/dist/source-harness/peer.d.ts.map +1 -0
  590. package/dist/source-harness/peer.js +106 -0
  591. package/dist/source-harness/peer.js.map +1 -0
  592. package/dist/source-profiles/index.d.ts +31 -0
  593. package/dist/source-profiles/index.d.ts.map +1 -0
  594. package/dist/source-profiles/index.js +206 -0
  595. package/dist/source-profiles/index.js.map +1 -0
  596. package/dist/source-profiles/link-header.d.ts +6 -0
  597. package/dist/source-profiles/link-header.d.ts.map +1 -0
  598. package/dist/source-profiles/link-header.js +131 -0
  599. package/dist/source-profiles/link-header.js.map +1 -0
  600. package/dist/storage.d.ts +9 -2
  601. package/dist/storage.d.ts.map +1 -1
  602. package/dist/storage.js +6 -1
  603. package/dist/storage.js.map +1 -1
  604. package/dist/string-identity-agreement.d.ts +35 -0
  605. package/dist/string-identity-agreement.d.ts.map +1 -0
  606. package/dist/string-identity-agreement.js +72 -0
  607. package/dist/string-identity-agreement.js.map +1 -0
  608. package/dist/types.d.ts +41 -6
  609. package/dist/types.d.ts.map +1 -1
  610. package/dist/types.js +0 -10
  611. package/dist/types.js.map +1 -1
  612. package/dist/uncertain-write.d.ts +157 -17
  613. package/dist/uncertain-write.d.ts.map +1 -1
  614. package/dist/uncertain-write.js +86 -30
  615. package/dist/uncertain-write.js.map +1 -1
  616. package/dist/versioning.d.ts +9 -4
  617. package/dist/versioning.d.ts.map +1 -1
  618. package/dist/versioning.js +9 -4
  619. package/dist/versioning.js.map +1 -1
  620. package/dist/view-launch-contract.d.ts +14 -0
  621. package/dist/view-launch-contract.d.ts.map +1 -0
  622. package/dist/view-launch-contract.js +23 -0
  623. package/dist/view-launch-contract.js.map +1 -0
  624. package/dist/write-identity.d.ts +5 -0
  625. package/dist/write-identity.d.ts.map +1 -0
  626. package/dist/write-identity.js +9 -0
  627. package/dist/write-identity.js.map +1 -0
  628. package/package.json +140 -3
@@ -0,0 +1,452 @@
1
+ import { InvalidInputError } from "./errors.js";
2
+ import { isManagedDocumentMetadataField } from "./managed-document-metadata.js";
3
+ // Storage-neutral Kind inference and guarded authoring. Pure derivations consume already-read
4
+ // documents; the public operations below acquire state and share mutation specifications with
5
+ // presentation adapters. Host-specific prose, command formatting and receipts stay with callers.
6
+ //
7
+ // The one invariant this module exists to protect: an INFERRED draft applies with zero new
8
+ // conformance warnings ("zero-debt by construction"). That holds only because the inference
9
+ // predicates below are pinned to core's OWN validation predicates — presence is core's
10
+ // `isPresent` (never bare key existence: a `title: ""` on one instance must not become a
11
+ // required field), and enum proposal is scalar-string-only (an array-valued key would fire
12
+ // KIND_FIELD_ARITY on every instance). The apply-then-validate property test in
13
+ // kind-draft.test.ts pins this predicate equality; drift there fails the suite loudly.
14
+ import { sha256HexOfUtf8 } from "./sha256.js";
15
+ import { isPresent, RESERVED_KIND_FIELD_NAMES, SUPERBEE_PROGRESS_STATUS_FIELD, splitSections, validateAgainstKind, } from "./kinds.js";
16
+ /** Enum inference gates: 100% presence, at least this many instances, 2-6 distinct scalar strings. */
17
+ export const ENUM_MIN_INSTANCES = 10;
18
+ export const ENUM_MIN_DISTINCT = 2;
19
+ export const ENUM_MAX_DISTINCT = 6;
20
+ /**
21
+ * Floor for a sub-100% H1 heading to appear as a PRICED promotion (mirrors the 60% descriptive
22
+ * threshold the modeling signal's status block uses). Headings below it are noise, not candidates.
23
+ */
24
+ export const SECTION_PROMOTION_FLOOR = 0.6;
25
+ /** Inference omits ownership metadata and receipts, without changing field-action policy. */
26
+ const EXCLUDED_FIELDS = new Set([...RESERVED_KIND_FIELD_NAMES, "head_version"]);
27
+ function excludedInferenceField(field) {
28
+ return EXCLUDED_FIELDS.has(field) || isManagedDocumentMetadataField(field) ||
29
+ (field.startsWith("superbee_") && field !== SUPERBEE_PROGRESS_STATUS_FIELD);
30
+ }
31
+ /**
32
+ * One predicate per declaring key. The `Record<DeclarationKey, ...>` type is the point: adding a
33
+ * key to `KindConvention` in core makes this object structurally incomplete and FAILS THE BUILD
34
+ * until the new key is classified. This predicate was previously a hand-written chain of `||`,
35
+ * and an enumeration maintained by hand goes stale silently — it omitted `path`, and then
36
+ * `browseCollapsed`, each found only by someone probing for it. A missing entry here is not a
37
+ * cosmetic gap: it makes a real convention read as a dismissal record, so a draft will overwrite
38
+ * the declaration it could not see.
39
+ */
40
+ /**
41
+ * The same exhaustiveness, one level down. `fields` is a structured sub-object, and the first
42
+ * version of this classifier enumerated four of its six keys by hand — missing `descriptions`
43
+ * and `valueDescriptions`, so a convention carrying only field guidance read as declaration-free
44
+ * and could be drafted over. Every key of `KindFields` declares something (a dismissal record has
45
+ * an EMPTY fields block, not a partially-filled one), so nothing is excluded here; adding a key to
46
+ * `KindFields` in core fails the build until it is classified.
47
+ */
48
+ const FIELDS_DECLARES = {
49
+ required: (f) => f.required.length > 0,
50
+ optional: (f) => f.optional.length > 0,
51
+ values: (f) => Object.keys(f.values).length > 0,
52
+ valueDescriptions: (f) => f.valueDescriptions !== undefined && Object.keys(f.valueDescriptions).length > 0,
53
+ terminal: (f) => Object.keys(f.terminal).length > 0,
54
+ descriptions: (f) => Object.keys(f.descriptions).length > 0,
55
+ types: (f) => f.types !== undefined && Object.keys(f.types).length > 0,
56
+ };
57
+ const DECLARES = {
58
+ deprecated: kind => Boolean(kind.deprecated && (kind.deprecated.fields.length || Object.keys(kind.deprecated.values).length || kind.deprecated.links.length || kind.deprecated.problems?.length)),
59
+ path: (kind) => kind.path !== undefined && kind.path !== "",
60
+ fields: (kind) => Object.values(FIELDS_DECLARES).some((declares) => declares(kind.fields)),
61
+ links: (kind) => kind.links !== undefined && Object.keys(kind.links).length > 0,
62
+ linkDescriptions: (kind) => kind.linkDescriptions !== undefined && Object.keys(kind.linkDescriptions).length > 0,
63
+ expectsInbound: (kind) => kind.expectsInbound !== undefined && Object.keys(kind.expectsInbound).length > 0,
64
+ sections: (kind) => kind.sections !== undefined && kind.sections.length > 0,
65
+ freshnessHorizon: (kind) => kind.freshnessHorizon !== undefined,
66
+ // Core parses only a strict `true` here; a declared `false` never reaches this predicate, so the
67
+ // `!== undefined` form is the whole check rather than a distinction between true and false.
68
+ browseCollapsed: (kind) => kind.browseCollapsed !== undefined,
69
+ // A reading-order placement is authored on purpose; a draft must never overwrite it.
70
+ order: (kind) => kind.order !== undefined,
71
+ claim: (kind) => kind.claim !== undefined,
72
+ };
73
+ /**
74
+ * Whether `kind` declares ANY schema obligation or behavior. The ONE predicate shared by
75
+ * `kind draft`'s refusal (a declaration-bearing kind is never silently redrafted), `kind
76
+ * dismiss`'s idempotency check, and `new`'s registry-lookup guard (a declaration-free kind — a
77
+ * dismissal record — must leave `new`'s command surface exactly as it was before the dismissal).
78
+ */
79
+ export function kindDeclaresAnything(kind) {
80
+ return Object.values(DECLARES).some((declares) => declares(kind));
81
+ }
82
+ /** `"Context Note"` -> `"context-note"` — the same slug shape the builtin conventions use. */
83
+ export function conventionSlugForType(type) {
84
+ const slug = type
85
+ .trim()
86
+ .toLowerCase()
87
+ .replace(/[^a-z0-9]+/g, "-")
88
+ .replace(/^-|-$/g, "");
89
+ return slug === "" ? "kind" : slug;
90
+ }
91
+ function sortedRecord(entries) {
92
+ return Object.fromEntries([...entries].sort(([a], [b]) => a.localeCompare(b)));
93
+ }
94
+ /** Fold `instances` into the presence stats. Presence is core's `isPresent`, never key existence. */
95
+ export function collectInstanceStats(instances) {
96
+ const keys = new Map();
97
+ const headings = new Map();
98
+ for (const doc of instances) {
99
+ for (const [key, value] of Object.entries(doc.frontmatter)) {
100
+ if (!isPresent(value))
101
+ continue;
102
+ keys.set(key, (keys.get(key) ?? 0) + 1);
103
+ }
104
+ for (const heading of Object.keys(splitSections(doc.body))) {
105
+ headings.set(heading, (headings.get(heading) ?? 0) + 1);
106
+ }
107
+ }
108
+ return {
109
+ count: instances.length,
110
+ keyPresence: sortedRecord(keys),
111
+ headingPresence: sortedRecord(headings),
112
+ };
113
+ }
114
+ /** True when every observed value for `key` across `instances` is a scalar string. */
115
+ function everyValueScalarString(instances, key) {
116
+ for (const doc of instances) {
117
+ const value = doc.frontmatter[key];
118
+ if (value === undefined || value === null)
119
+ continue;
120
+ if (typeof value !== "string")
121
+ return false;
122
+ }
123
+ return true;
124
+ }
125
+ /** Distinct observed (string) values for `key`, in first-seen order. */
126
+ function distinctValues(instances, key) {
127
+ const seen = new Set();
128
+ for (const doc of instances) {
129
+ const value = doc.frontmatter[key];
130
+ if (typeof value === "string" && value.trim() !== "")
131
+ seen.add(value);
132
+ }
133
+ return [...seen];
134
+ }
135
+ /**
136
+ * Infer the candidate convention for `type` from its instances:
137
+ * - required = keys `isPresent` on 100% of instances (minus reserved + attribution)
138
+ * - optional = every other key `isPresent` on >=1 instance
139
+ * - values = only at 100% presence, >= {@link ENUM_MIN_INSTANCES} instances, 2-6 distinct
140
+ * values, every observed value a scalar string
141
+ * - sections = H1 headings on 100% of instances (H1-only: core's ONE heading splitter)
142
+ * - path = the common leading id segment, only when ALL instances share exactly one — a
143
+ * split (`plans/` + `designs/`) is the finding; silently blessing one prefix
144
+ * would orphan the rest, so no `path` is proposed there
145
+ */
146
+ export function inferKindCandidate(type, instances, stats = collectInstanceStats(instances), description = `Drafted from ${stats.count} existing instances.`) {
147
+ const count = stats.count;
148
+ const required = [];
149
+ const optional = [];
150
+ const values = {};
151
+ for (const [key, present] of Object.entries(stats.keyPresence)) {
152
+ if (excludedInferenceField(key))
153
+ continue;
154
+ if (present === count && count > 0) {
155
+ required.push(key);
156
+ if (count >= ENUM_MIN_INSTANCES && everyValueScalarString(instances, key)) {
157
+ const distinct = distinctValues(instances, key);
158
+ if (distinct.length >= ENUM_MIN_DISTINCT && distinct.length <= ENUM_MAX_DISTINCT) {
159
+ values[key] = distinct.sort((a, b) => a.localeCompare(b));
160
+ }
161
+ }
162
+ }
163
+ else {
164
+ optional.push(key);
165
+ }
166
+ }
167
+ const sections = Object.entries(stats.headingPresence)
168
+ .filter(([, present]) => present === count && count > 0)
169
+ .map(([heading]) => heading);
170
+ const prefixes = new Set();
171
+ let allPrefixed = instances.length > 0;
172
+ for (const doc of instances) {
173
+ const slash = doc.id.indexOf("/");
174
+ if (slash <= 0) {
175
+ allPrefixed = false;
176
+ break;
177
+ }
178
+ prefixes.add(doc.id.slice(0, slash));
179
+ }
180
+ const path = allPrefixed && prefixes.size === 1 ? `${[...prefixes][0]}/` : undefined;
181
+ return {
182
+ id: `conventions/${conventionSlugForType(type)}`,
183
+ title: type,
184
+ governs: type,
185
+ description,
186
+ ...(path === undefined ? {} : { path }),
187
+ fields: { required, optional, values, terminal: {}, descriptions: {} },
188
+ ...(sections.length > 0 ? { sections } : {}),
189
+ };
190
+ }
191
+ /**
192
+ * Price the candidate promotions: every sub-100% optional field, plus every H1 heading at or
193
+ * above {@link SECTION_PROMOTION_FLOOR} but below 100%. `warnings_if_added` is exactly the
194
+ * instances the added declaration would newly warn on.
195
+ */
196
+ export function draftPromotions(kind, stats) {
197
+ const rows = [];
198
+ for (const key of kind.fields.optional) {
199
+ const present = stats.keyPresence[key] ?? 0;
200
+ rows.push({
201
+ declaration: `field ${key} (optional -> required)`,
202
+ present: `${present}/${stats.count}`,
203
+ warnings_if_added: stats.count - present,
204
+ });
205
+ }
206
+ for (const [heading, present] of Object.entries(stats.headingPresence)) {
207
+ if (present === stats.count)
208
+ continue; // already in the draft
209
+ if (present / stats.count < SECTION_PROMOTION_FLOOR)
210
+ continue;
211
+ rows.push({
212
+ declaration: `section "# ${heading}"`,
213
+ present: `${present}/${stats.count}`,
214
+ warnings_if_added: stats.count - present,
215
+ });
216
+ }
217
+ rows.sort((a, b) => a.warnings_if_added - b.warnings_if_added || a.declaration.localeCompare(b.declaration));
218
+ return rows;
219
+ }
220
+ /**
221
+ * The MEASURED post-apply warning count: run core's validator over every instance against the
222
+ * candidate and sum the violations. Zero by construction for an inferred candidate (see module
223
+ * comment); the true — possibly large — number for an adopted catalog candidate. Never assumed.
224
+ */
225
+ export function warningsAfterApply(kind, instances) {
226
+ let total = 0;
227
+ for (const doc of instances)
228
+ total += validateAgainstKind(doc, kind).length;
229
+ return total;
230
+ }
231
+ /**
232
+ * The state-bound plan token `--apply` must present: sha256 of the canonical JSON of everything
233
+ * the human inspected — the exact candidate document, the bundle edition, and the instance stats
234
+ * it was inferred from. Any change to WHAT THE TOKEN BINDS between draft and apply refuses:
235
+ * a presence-stat change (new/removed instances, a key appearing or emptying), an edition
236
+ * change, or a candidate difference. It ALSO binds the measured warning count, because that count
237
+ * is what the human accepted: an instance edit that changes the forecast (a value leaving a
238
+ * declared enum) must not apply under a token issued against a different number. An edit changing
239
+ * neither the candidate, the presence stats, nor the warning count keeps the token valid — the
240
+ * written bytes are identical either way.
241
+ */
242
+ export function draftPlanToken(input) {
243
+ return `sha256:${sha256HexOfUtf8(JSON.stringify(input))}`;
244
+ }
245
+ import { CONVENTION_TYPE, parseConventionDoc } from "./kinds.js";
246
+ import { loadKinds } from "./kinds-load.js";
247
+ import { query, readBundleOkfVersion } from "./bundle-ops.js";
248
+ import { builtinNames, resolveBuiltinSync } from "./builtin-recipes.js";
249
+ import { materializeRecipeForEdition } from "./recipe-lifecycle/install.js";
250
+ import { droppedLinks } from "./body-replace-guards.js";
251
+ import { mutateDocument } from "./document-mutation.js";
252
+ /** Adapters render recovery commands from these typed facts, never from parsed prose. */
253
+ export class KindAuthoringError extends Error {
254
+ reason;
255
+ type;
256
+ details;
257
+ constructor(reason, type, details = {}) {
258
+ super(`Kind authoring for '${type}' refused: ${reason}.`);
259
+ this.name = "KindAuthoringError";
260
+ this.reason = reason;
261
+ this.type = type;
262
+ this.details = details;
263
+ }
264
+ }
265
+ /** The builtin convention governing `type`, materialized for this bundle's edition, if any. */
266
+ function catalogConventionForType(type, okfVersion) {
267
+ for (const name of builtinNames()) {
268
+ const recipe = resolveBuiltinSync(name);
269
+ if (!recipe.governs.includes(type))
270
+ continue;
271
+ const materialized = materializeRecipeForEdition(recipe, okfVersion);
272
+ const doc = materialized.docs.find((d) => {
273
+ const governs = d.frontmatter.governs;
274
+ return typeof governs === "string" && governs.trim() === type;
275
+ });
276
+ if (!doc)
277
+ continue;
278
+ const parsed = parseConventionDoc(doc);
279
+ if (!parsed.ok)
280
+ continue;
281
+ return {
282
+ recipeId: recipe.id,
283
+ doc,
284
+ kind: parsed.kind,
285
+ siblings: recipe.governs.filter((governs) => governs !== type),
286
+ };
287
+ }
288
+ return undefined;
289
+ }
290
+ /** Candidate frontmatter WITHOUT a timestamp — the engine stamps one at write time. */
291
+ function candidateDocFor(kind, body) {
292
+ const fields = {};
293
+ if (kind.fields.required.length > 0)
294
+ fields.required = kind.fields.required;
295
+ if (kind.fields.optional.length > 0)
296
+ fields.optional = kind.fields.optional;
297
+ if (Object.keys(kind.fields.values).length > 0)
298
+ fields.values = kind.fields.values;
299
+ const frontmatter = {
300
+ type: CONVENTION_TYPE,
301
+ title: kind.title,
302
+ governs: kind.governs,
303
+ };
304
+ if (kind.description !== undefined)
305
+ frontmatter.description = kind.description;
306
+ if (kind.path !== undefined)
307
+ frontmatter.path = kind.path;
308
+ if (Object.keys(fields).length > 0)
309
+ frontmatter.fields = fields;
310
+ if (kind.sections !== undefined && kind.sections.length > 0)
311
+ frontmatter.sections = kind.sections;
312
+ return { id: kind.id, frontmatter, body };
313
+ }
314
+ /** Match convention parsing: type names are trimmed strings with nonempty content. */
315
+ function normalizeKindAuthoringType(type) {
316
+ const normalized = typeof type === "string" ? type.trim() : "";
317
+ if (!isPresent(normalized))
318
+ throw new InvalidInputError("Kind authoring requires a nonempty type name.");
319
+ return normalized;
320
+ }
321
+ /** Build the whole read-only plan: registry + instances -> candidate + forecast + token. */
322
+ export async function prepareKindDraft(bundle, type, text = {}) {
323
+ type = normalizeKindAuthoringType(type);
324
+ const [registry, okfVersionRead] = await Promise.all([loadKinds(bundle), readBundleOkfVersion(bundle)]);
325
+ const okfVersion = okfVersionRead ?? "0.1";
326
+ const existing = registry.kinds.get(type);
327
+ if (existing && kindDeclaresAnything(existing)) {
328
+ throw new KindAuthoringError("already-governed", type, { id: existing.id });
329
+ }
330
+ const instances = (await query(bundle, { type })).sort((a, b) => a.id.localeCompare(b.id));
331
+ if (instances.length === 0) {
332
+ throw new KindAuthoringError("no-instances", type);
333
+ }
334
+ const stats = collectInstanceStats(instances);
335
+ const catalog = catalogConventionForType(type, okfVersion);
336
+ let candidateKind;
337
+ let candidateDoc;
338
+ if (catalog) {
339
+ // Adopt the builtin definition VERBATIM — the recipe's schema is better than an inference,
340
+ // and landing it at its canonical id keeps the recipes surface consistent. The forecast
341
+ // below then reports the REAL (possibly large) warning count against existing instances —
342
+ // the priced route `recipe add` cannot offer when instances already exist.
343
+ candidateKind = catalog.kind;
344
+ const { timestamp: _timestamp, ...frontmatter } = catalog.doc.frontmatter;
345
+ candidateDoc = { id: catalog.doc.id, frontmatter, body: catalog.doc.body };
346
+ }
347
+ else {
348
+ candidateKind = inferKindCandidate(type, instances, stats, text.inferredDescription?.(type, stats.count));
349
+ candidateDoc = candidateDocFor(candidateKind, text.inferredBody?.(type, stats.count) ?? `Drafted from ${stats.count} existing '${type}' instances.\n`);
350
+ }
351
+ // A redraft upgrades the EXISTING governing record in place, wherever it lives — a
352
+ // hand-authored governs-only convention at a non-canonical id keeps its id (never two
353
+ // conventions for one kind; the slug id is only for true creates).
354
+ if (existing)
355
+ candidateDoc = { ...candidateDoc, id: existing.id };
356
+ const warnings = warningsAfterApply(candidateKind, instances);
357
+ const token = draftPlanToken({ target: candidateDoc.id, candidate: candidateDoc, okfVersion, stats, warnings });
358
+ return {
359
+ type,
360
+ okfVersion,
361
+ registry,
362
+ redraftOver: existing,
363
+ candidateDoc,
364
+ candidateKind,
365
+ catalog,
366
+ stats,
367
+ instances,
368
+ warnings,
369
+ token,
370
+ };
371
+ }
372
+ /** The one guarded mutation specification used by public apply and presentation adapters. */
373
+ export function prepareKindDraftMutation(bundle, plan, expectedToken, options = {}) {
374
+ const expected = expectedToken.trim();
375
+ if (plan.token !== expected)
376
+ throw new KindAuthoringError("plan-changed", plan.type, { expected, current: plan.token });
377
+ const prepared = {
378
+ droppedLinks: [],
379
+ options: {
380
+ seedGenerationClock: false, bundle, id: plan.candidateDoc.id,
381
+ mode: plan.redraftOver ? "replace-document" : "create-only",
382
+ registry: plan.registry, strict: false, actor: options.actor, now: options.now,
383
+ // An accepted redraft replaces the decline prose; report any removed links explicitly.
384
+ bodyReplace: { replaceLinks: true },
385
+ buildCandidate: (existing, context) => {
386
+ if (context.okfVersion !== plan.okfVersion)
387
+ throw new KindAuthoringError("edition-changed", plan.type);
388
+ if (plan.redraftOver) {
389
+ const parsed = existing && parseConventionDoc(existing);
390
+ if (!parsed || !parsed.ok || parsed.kind.governs !== plan.type || kindDeclaresAnything(parsed.kind)) {
391
+ throw new KindAuthoringError("redraft-changed", plan.type, { id: plan.redraftOver.id });
392
+ }
393
+ }
394
+ prepared.droppedLinks = existing ? droppedLinks(bundle, existing, plan.candidateDoc.body) : [];
395
+ return { frontmatter: structuredClone(plan.candidateDoc.frontmatter), body: plan.candidateDoc.body };
396
+ },
397
+ },
398
+ };
399
+ return prepared;
400
+ }
401
+ export async function appliedKindDraftWarnings(bundle, plan) {
402
+ const applied = (await loadKinds(bundle)).kinds.get(plan.type);
403
+ return applied ? warningsAfterApply(applied, plan.instances) : plan.warnings;
404
+ }
405
+ /** Recompute what was inspected before applying; callers never reproduce the stale-plan checks. */
406
+ export async function applyKindDraft(bundle, type, expectedToken, options = {}) {
407
+ const plan = await prepareKindDraft(bundle, type, options);
408
+ const prepared = prepareKindDraftMutation(bundle, plan, expectedToken, options);
409
+ const result = await mutateDocument(prepared.options);
410
+ return { ...result, droppedLinks: prepared.droppedLinks, warningsAfterApply: await appliedKindDraftWarnings(bundle, plan) };
411
+ }
412
+ export async function prepareKindDismissal(bundle, type, options = {}) {
413
+ type = normalizeKindAuthoringType(type);
414
+ const [registry, edition] = await Promise.all([loadKinds(bundle), readBundleOkfVersion(bundle)]);
415
+ const existing = registry.kinds.get(type);
416
+ if (existing && kindDeclaresAnything(existing))
417
+ throw new KindAuthoringError("dismiss-governed", type, { id: existing.id });
418
+ if (existing)
419
+ return { id: existing.id };
420
+ const id = `conventions/${conventionSlugForType(type)}`;
421
+ const catalog = catalogConventionForType(type, edition ?? "0.1");
422
+ return {
423
+ id, catalog,
424
+ options: {
425
+ seedGenerationClock: false, bundle, id, mode: "create-only", registry, strict: false,
426
+ actor: options.actor, now: options.now,
427
+ buildCandidate: () => ({
428
+ frontmatter: { type: CONVENTION_TYPE, title: type, governs: type,
429
+ description: options.description ?? `Declined: '${type}' is deliberately unconstrained.` },
430
+ body: options.body?.(type, catalog) ?? `A Kind for '${type}' was deliberately declined.\n`,
431
+ }),
432
+ },
433
+ };
434
+ }
435
+ export async function dismissKind(bundle, type, options = {}) {
436
+ const prepared = await prepareKindDismissal(bundle, type, options);
437
+ if (!prepared.options)
438
+ return { id: prepared.id, changed: false };
439
+ const result = await mutateDocument(prepared.options);
440
+ return { id: prepared.id, changed: result.changed, result, catalog: prepared.catalog };
441
+ }
442
+ /** Typed values are already authored by the caller; existing core validation owns their meaning.
443
+ * Undefined body scaffolds headings, while an explicit empty body remains deliberately empty. */
444
+ export function kindInstanceCandidate(kind, fields, body) {
445
+ const frontmatter = { type: kind.governs };
446
+ for (const [field, value] of Object.entries(fields)) {
447
+ if (field !== "type")
448
+ Object.defineProperty(frontmatter, field, { value, writable: true, enumerable: true, configurable: true });
449
+ }
450
+ return { frontmatter, body: body ?? (kind.sections ?? []).map(heading => `# ${heading}\n`).join("\n") };
451
+ }
452
+ //# sourceMappingURL=kind-authoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kind-authoring.js","sourceRoot":"","sources":["../src/kind-authoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { KindConvention, KindFieldType } from "./kinds.js";
2
+ export interface KindRelationshipChange {
3
+ readonly field: string;
4
+ readonly previous: string;
5
+ readonly next?: string;
6
+ }
7
+ /** Parsed declaration facts only. Callers retain their own approval and proof policies. */
8
+ export interface KindDeclarationChanges {
9
+ readonly requiredAdded: readonly string[];
10
+ readonly enumsAdded: ReadonlyArray<{
11
+ field: string;
12
+ values: readonly string[];
13
+ currentDeclared: boolean;
14
+ desiredDeclared: boolean;
15
+ }>;
16
+ readonly enumsNarrowed: ReadonlyArray<{
17
+ field: string;
18
+ removedValues: readonly string[];
19
+ }>;
20
+ readonly sectionsAdded: readonly string[];
21
+ readonly outboundAdded: readonly string[];
22
+ readonly outboundChanged: readonly KindRelationshipChange[];
23
+ readonly inboundAdded: readonly string[];
24
+ readonly inboundChanged: readonly KindRelationshipChange[];
25
+ /** Additions and changes interleaved in desired declaration order. */
26
+ readonly typesUpdated: ReadonlyArray<{
27
+ change: "added" | "changed";
28
+ field: string;
29
+ previousType?: KindFieldType;
30
+ nextType: KindFieldType;
31
+ }>;
32
+ readonly typesRemoved: readonly string[];
33
+ /** Ordered string arrays; map key order is irrelevant. Malformed runtime maps compare unequal. */
34
+ readonly terminalChanged: boolean;
35
+ /** Same occurrence counts per field, ignoring array order. */
36
+ readonly terminalOccurrencesChanged: boolean;
37
+ }
38
+ /**
39
+ * Compare parsed Kind declarations without storage, recipe ownership, host approval or instance
40
+ * validation. Required/section and removed-enum occurrences keep their authored order and count.
41
+ * Relationship maps use own parsed keys. This is not arbitrary document/YAML equality: hosts may
42
+ * impose stricter representation and resource bounds before admitting a definition change.
43
+ */
44
+ export declare function classifyKindChanges(current: KindConvention, desired: KindConvention): KindDeclarationChanges;
45
+ //# sourceMappingURL=kind-changes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kind-changes.d.ts","sourceRoot":"","sources":["../src/kind-changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,2FAA2F;AAC3F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,eAAe,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACrI,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3F,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC5D,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3D,sEAAsE;IACtE,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;QAAE,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,aAAa,CAAC;QAAC,QAAQ,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;IAC5I,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,kGAAkG;IAClG,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;CAC9C;AA6CD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,GAAG,sBAAsB,CAuC5G"}
@@ -0,0 +1,96 @@
1
+ function relationships(current = {}, desired = {}) {
2
+ const added = Object.keys(desired).filter(field => !Object.hasOwn(current, field));
3
+ const changed = [];
4
+ for (const [field, previous] of Object.entries(current)) {
5
+ if (Object.hasOwn(desired, field) && desired[field] === previous)
6
+ continue;
7
+ changed.push({ field, previous, ...(Object.hasOwn(desired, field) ? { next: desired[field] } : {}) });
8
+ }
9
+ return { added, changed };
10
+ }
11
+ /** No accessors, sparse/inherited indices or exotic array representations establish equality. */
12
+ function terminalRows(value) {
13
+ if (value === null || typeof value !== "object")
14
+ return undefined;
15
+ const prototype = Object.getPrototypeOf(value);
16
+ if (prototype !== Object.prototype && prototype !== null)
17
+ return undefined;
18
+ const result = new Map();
19
+ for (const key of Reflect.ownKeys(value)) {
20
+ const entry = Object.getOwnPropertyDescriptor(value, key);
21
+ if (typeof key !== "string" || !entry.enumerable || !("value" in entry))
22
+ return undefined;
23
+ const values = entry.value;
24
+ if (!Array.isArray(values) || Object.getPrototypeOf(values) !== Array.prototype
25
+ || Reflect.ownKeys(values).length !== values.length + 1)
26
+ return undefined;
27
+ const row = [];
28
+ for (let index = 0; index < values.length; index += 1) {
29
+ const item = Object.getOwnPropertyDescriptor(values, index);
30
+ if (!item || !item.enumerable || !("value" in item) || typeof item.value !== "string")
31
+ return undefined;
32
+ row.push(item.value);
33
+ }
34
+ result.set(key, row);
35
+ }
36
+ return result;
37
+ }
38
+ function sameTerminalRows(current, desired, ordered) {
39
+ return current.size === desired.size && [...current].every(([field, values]) => {
40
+ const next = desired.get(field);
41
+ if (!next || values.length !== next.length)
42
+ return false;
43
+ const left = ordered ? values : [...values].sort();
44
+ const right = ordered ? next : [...next].sort();
45
+ return left.every((value, index) => value === right[index]);
46
+ });
47
+ }
48
+ /**
49
+ * Compare parsed Kind declarations without storage, recipe ownership, host approval or instance
50
+ * validation. Required/section and removed-enum occurrences keep their authored order and count.
51
+ * Relationship maps use own parsed keys. This is not arbitrary document/YAML equality: hosts may
52
+ * impose stricter representation and resource bounds before admitting a definition change.
53
+ */
54
+ export function classifyKindChanges(current, desired) {
55
+ const currentDeclared = new Set([...current.fields.required, ...current.fields.optional]);
56
+ const desiredDeclared = new Set([...desired.fields.required, ...desired.fields.optional]);
57
+ const required = new Set(current.fields.required);
58
+ const sections = new Set(current.sections ?? []);
59
+ const enumsAdded = [];
60
+ const enumsNarrowed = [];
61
+ for (const [field, values] of Object.entries(desired.fields.values)) {
62
+ if (!Object.hasOwn(current.fields.values, field)) {
63
+ enumsAdded.push({ field, values: [...values], currentDeclared: currentDeclared.has(field), desiredDeclared: desiredDeclared.has(field) });
64
+ continue;
65
+ }
66
+ const allowed = new Set(values);
67
+ const removedValues = current.fields.values[field].filter(value => !allowed.has(value));
68
+ if (removedValues.length)
69
+ enumsNarrowed.push({ field, removedValues });
70
+ }
71
+ const outbound = relationships(current.links, desired.links);
72
+ const inbound = relationships(current.expectsInbound, desired.expectsInbound);
73
+ const typesUpdated = [];
74
+ const currentTypes = current.fields.types ?? {};
75
+ const desiredTypes = desired.fields.types ?? {};
76
+ for (const [field, nextType] of Object.entries(desiredTypes)) {
77
+ const previousType = Object.hasOwn(currentTypes, field) ? currentTypes[field] : undefined;
78
+ if (previousType === nextType)
79
+ continue;
80
+ typesUpdated.push({ change: previousType === undefined ? "added" : "changed", field,
81
+ ...(previousType === undefined ? {} : { previousType }), nextType });
82
+ }
83
+ const currentTerminal = terminalRows(current.fields.terminal);
84
+ const desiredTerminal = terminalRows(desired.fields.terminal);
85
+ return {
86
+ requiredAdded: desired.fields.required.filter(field => !required.has(field)),
87
+ enumsAdded, enumsNarrowed,
88
+ sectionsAdded: (desired.sections ?? []).filter(section => !sections.has(section)),
89
+ outboundAdded: outbound.added, outboundChanged: outbound.changed,
90
+ inboundAdded: inbound.added, inboundChanged: inbound.changed,
91
+ typesUpdated, typesRemoved: Object.keys(currentTypes).filter(field => !Object.hasOwn(desiredTypes, field)),
92
+ terminalChanged: !currentTerminal || !desiredTerminal || !sameTerminalRows(currentTerminal, desiredTerminal, true),
93
+ terminalOccurrencesChanged: !currentTerminal || !desiredTerminal || !sameTerminalRows(currentTerminal, desiredTerminal, false),
94
+ };
95
+ }
96
+ //# sourceMappingURL=kind-changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kind-changes.js","sourceRoot":"","sources":["../src/kind-changes.ts"],"names":[],"mappings":"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"}