attention-manifest-protocol 0.4.2 → 0.4.3

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 (827) hide show
  1. package/CHANGELOG.md +341 -293
  2. package/CHANGELOG.zh-CN.md +41 -8
  3. package/README.md +250 -171
  4. package/README.zh-CN.md +251 -171
  5. package/lib/assignment/assign.d.ts +102 -0
  6. package/lib/assignment/assign.js +556 -0
  7. package/lib/assignment/binding.d.ts +103 -0
  8. package/lib/assignment/binding.js +575 -0
  9. package/lib/assignment/errors.d.ts +14 -0
  10. package/lib/assignment/errors.js +16 -0
  11. package/lib/assignment/guards.d.ts +18 -0
  12. package/lib/assignment/guards.js +28 -0
  13. package/lib/assignment/index.d.ts +10 -0
  14. package/lib/assignment/index.js +10 -0
  15. package/lib/assignment/types.d.ts +169 -0
  16. package/lib/assignment/types.js +1 -0
  17. package/lib/attention/budget.d.ts +1 -1
  18. package/lib/attention/budget.js +31 -9
  19. package/lib/bayes/engine.js +2 -1
  20. package/lib/bayes/reliability.js +25 -10
  21. package/lib/boundary/frame.d.ts +10 -4
  22. package/lib/boundary/frame.js +346 -109
  23. package/lib/boundary/kinds.d.ts +11 -0
  24. package/lib/boundary/kinds.js +33 -0
  25. package/lib/boundary/refTable.d.ts +19 -9
  26. package/lib/boundary/refTable.js +128 -30
  27. package/lib/boundary/toolCall.d.ts +22 -10
  28. package/lib/boundary/toolCall.js +798 -97
  29. package/lib/concept/conceptBudget.js +10 -1
  30. package/lib/concurrency/idempotency.d.ts +4 -3
  31. package/lib/concurrency/idempotency.js +57 -13
  32. package/lib/concurrency/retry.js +18 -3
  33. package/lib/context/agentContext.d.ts +13 -0
  34. package/lib/context/agentContext.js +14 -1
  35. package/lib/context/ast.d.ts +4 -1
  36. package/lib/context/ast.js +13 -3
  37. package/lib/context/contentStore.js +22 -9
  38. package/lib/context/contextBuilder.d.ts +457 -0
  39. package/lib/context/contextBuilder.js +1395 -0
  40. package/lib/context/contextPackage.d.ts +214 -0
  41. package/lib/context/contextPackage.js +191 -0
  42. package/lib/context/index.d.ts +14 -3
  43. package/lib/context/index.js +9 -1
  44. package/lib/context/relevance.d.ts +171 -0
  45. package/lib/context/relevance.js +250 -0
  46. package/lib/context/workspaceDiff.d.ts +105 -0
  47. package/lib/context/workspaceDiff.js +238 -0
  48. package/lib/context/workspaceService.d.ts +236 -1
  49. package/lib/context/workspaceService.js +1501 -73
  50. package/lib/cooperation/collaboration.d.ts +9 -0
  51. package/lib/cooperation/session.d.ts +4 -4
  52. package/lib/cooperation/session.js +3 -3
  53. package/lib/database/adapter/filesystemStore.d.ts +145 -0
  54. package/lib/database/adapter/filesystemStore.js +321 -0
  55. package/lib/database/adapter/index.d.ts +2 -0
  56. package/lib/database/adapter/index.js +2 -0
  57. package/lib/database/adapter/workspaceSessionStore.d.ts +118 -0
  58. package/lib/database/adapter/workspaceSessionStore.js +120 -0
  59. package/lib/database/entity/fileGraph.d.ts +53 -0
  60. package/lib/database/entity/fileGraph.js +15 -0
  61. package/lib/database/entity/fileTree.d.ts +76 -0
  62. package/lib/database/entity/fileTree.js +39 -0
  63. package/lib/database/entity/hook.d.ts +29 -0
  64. package/lib/database/entity/hook.js +18 -0
  65. package/lib/database/entity/index.d.ts +4 -0
  66. package/lib/database/entity/index.js +4 -0
  67. package/lib/database/entity/workspaceSession.d.ts +53 -0
  68. package/lib/database/entity/workspaceSession.js +28 -0
  69. package/lib/database/repository/fileAnnotationRepository.d.ts +75 -0
  70. package/lib/database/repository/fileAnnotationRepository.js +109 -0
  71. package/lib/database/repository/fileGraphRepository.d.ts +188 -0
  72. package/lib/database/repository/fileGraphRepository.js +648 -0
  73. package/lib/database/repository/fileNodeRepository.d.ts +116 -0
  74. package/lib/database/repository/fileNodeRepository.js +263 -0
  75. package/lib/database/repository/fileOutlineRepository.d.ts +40 -0
  76. package/lib/database/repository/fileOutlineRepository.js +104 -0
  77. package/lib/database/repository/fileWriteRepository.d.ts +41 -0
  78. package/lib/database/repository/fileWriteRepository.js +93 -0
  79. package/lib/database/repository/hookRepository.d.ts +67 -0
  80. package/lib/database/repository/hookRepository.js +150 -0
  81. package/lib/database/repository/index.d.ts +7 -0
  82. package/lib/database/repository/index.js +7 -0
  83. package/lib/database/repository/workspaceSessionRepository.d.ts +134 -0
  84. package/lib/database/repository/workspaceSessionRepository.js +327 -0
  85. package/lib/database/service/database.d.ts +14 -0
  86. package/lib/database/service/database.js +21 -0
  87. package/lib/database/sql/schema.js +187 -0
  88. package/lib/database/store/database.js +6 -1
  89. package/lib/delegate/team.d.ts +5 -0
  90. package/lib/delegate/team.js +83 -20
  91. package/lib/discover/classify.d.ts +20 -0
  92. package/lib/discover/classify.js +85 -0
  93. package/lib/discover/host.d.ts +20 -0
  94. package/lib/discover/host.js +89 -0
  95. package/lib/discover/index.d.ts +11 -0
  96. package/lib/discover/index.js +11 -0
  97. package/lib/discover/kinds.d.ts +14 -0
  98. package/lib/discover/kinds.js +23 -0
  99. package/lib/discover/tree.d.ts +7 -0
  100. package/lib/discover/tree.js +432 -0
  101. package/lib/discover/types.d.ts +115 -0
  102. package/lib/discover/types.js +1 -0
  103. package/lib/error/boundaryRejection.d.ts +1 -1
  104. package/lib/evaluation/agreement.js +2 -2
  105. package/lib/execution/handles.js +6 -0
  106. package/lib/execution/pin.js +2 -2
  107. package/lib/file/cfb.d.ts +56 -0
  108. package/lib/file/cfb.js +396 -0
  109. package/lib/file/dependency.d.ts +151 -0
  110. package/lib/file/dependency.js +568 -0
  111. package/lib/file/directory.d.ts +34 -0
  112. package/lib/file/directory.js +141 -0
  113. package/lib/file/errors.d.ts +20 -0
  114. package/lib/file/errors.js +18 -0
  115. package/lib/file/exportGraph.d.ts +31 -0
  116. package/lib/file/exportGraph.js +554 -0
  117. package/lib/file/file.d.ts +40 -0
  118. package/lib/file/file.js +339 -0
  119. package/lib/file/importGraph.d.ts +121 -0
  120. package/lib/file/importGraph.js +1022 -0
  121. package/lib/file/index.d.ts +45 -0
  122. package/lib/file/index.js +30 -0
  123. package/lib/file/metadata.d.ts +66 -0
  124. package/lib/file/metadata.js +470 -0
  125. package/lib/file/path.d.ts +60 -0
  126. package/lib/file/path.js +259 -0
  127. package/lib/file/read.d.ts +168 -0
  128. package/lib/file/read.js +541 -0
  129. package/lib/file/runtime.d.ts +95 -0
  130. package/lib/file/runtime.js +150 -0
  131. package/lib/file/service.d.ts +227 -0
  132. package/lib/file/service.js +663 -0
  133. package/lib/file/syntaxTree.d.ts +7 -0
  134. package/lib/file/syntaxTree.js +38 -0
  135. package/lib/file/time.d.ts +38 -0
  136. package/lib/file/time.js +44 -0
  137. package/lib/file/tree.d.ts +53 -0
  138. package/lib/file/tree.js +417 -0
  139. package/lib/file/types.d.ts +371 -0
  140. package/lib/file/types.js +1 -0
  141. package/lib/file/write.d.ts +159 -0
  142. package/lib/file/write.js +1028 -0
  143. package/lib/file/zip.d.ts +35 -0
  144. package/lib/file/zip.js +349 -0
  145. package/lib/fingerprint/algorithm.d.ts +97 -0
  146. package/lib/fingerprint/algorithm.js +271 -0
  147. package/lib/fingerprint/bytes.d.ts +18 -0
  148. package/lib/fingerprint/bytes.js +31 -0
  149. package/lib/fingerprint/error.d.ts +73 -0
  150. package/lib/fingerprint/error.js +86 -0
  151. package/lib/fingerprint/file.d.ts +71 -0
  152. package/lib/fingerprint/file.js +254 -0
  153. package/lib/fingerprint/index.d.ts +37 -0
  154. package/lib/fingerprint/index.js +12 -0
  155. package/lib/fingerprint/json.d.ts +41 -0
  156. package/lib/fingerprint/json.js +94 -0
  157. package/lib/fingerprint/number.d.ts +32 -0
  158. package/lib/fingerprint/number.js +95 -0
  159. package/lib/fingerprint/policy.d.ts +54 -0
  160. package/lib/fingerprint/policy.js +50 -0
  161. package/lib/fingerprint/preimage.d.ts +84 -0
  162. package/lib/fingerprint/preimage.js +133 -0
  163. package/lib/fingerprint/raw.d.ts +26 -0
  164. package/lib/fingerprint/raw.js +45 -0
  165. package/lib/fingerprint/ref.d.ts +39 -0
  166. package/lib/fingerprint/ref.js +178 -0
  167. package/lib/fingerprint/text.d.ts +42 -0
  168. package/lib/fingerprint/text.js +155 -0
  169. package/lib/fingerprint/tree.d.ts +56 -0
  170. package/lib/fingerprint/tree.js +288 -0
  171. package/lib/fingerprint/verify.d.ts +20 -0
  172. package/lib/fingerprint/verify.js +99 -0
  173. package/lib/global/filesystem.d.ts +43 -0
  174. package/lib/global/filesystem.js +75 -0
  175. package/lib/global/index.d.ts +8 -0
  176. package/lib/global/index.js +8 -0
  177. package/lib/global/service.d.ts +51 -0
  178. package/lib/global/service.js +98 -0
  179. package/lib/governance/transport.js +18 -6
  180. package/lib/hook/ast.d.ts +29 -0
  181. package/lib/hook/ast.js +22 -0
  182. package/lib/hook/code.d.ts +55 -0
  183. package/lib/hook/code.js +47 -0
  184. package/lib/hook/dependency.d.ts +45 -0
  185. package/lib/hook/dependency.js +28 -0
  186. package/lib/hook/diff.d.ts +114 -0
  187. package/lib/hook/diff.js +327 -0
  188. package/lib/hook/exportation.d.ts +31 -0
  189. package/lib/hook/exportation.js +24 -0
  190. package/lib/hook/file.d.ts +44 -0
  191. package/lib/hook/file.js +154 -0
  192. package/lib/hook/importation.d.ts +33 -0
  193. package/lib/hook/importation.js +22 -0
  194. package/lib/hook/index.d.ts +30 -0
  195. package/lib/hook/index.js +23 -0
  196. package/lib/hook/outline.d.ts +35 -0
  197. package/lib/hook/outline.js +27 -0
  198. package/lib/hook/project.d.ts +65 -0
  199. package/lib/hook/project.js +217 -0
  200. package/lib/hook/types.d.ts +114 -0
  201. package/lib/hook/types.js +407 -0
  202. package/lib/index.d.ts +9 -0
  203. package/lib/index.js +9 -0
  204. package/lib/lock/lease.js +28 -3
  205. package/lib/manifest/cardSign.d.ts +1 -1
  206. package/lib/manifest/cardSign.js +37 -7
  207. package/lib/manifest/federation.js +13 -6
  208. package/lib/manifest/trust.d.ts +2 -0
  209. package/lib/manifest/trust.js +27 -6
  210. package/lib/module/index.d.ts +4 -0
  211. package/lib/module/index.js +4 -0
  212. package/lib/module/mcp/client.js +21 -2
  213. package/lib/module/mcp/filesystemServer.d.ts +24 -0
  214. package/lib/module/mcp/filesystemServer.js +102 -0
  215. package/lib/module/mcp/http.js +32 -19
  216. package/lib/module/mcp/workspaceServer.js +20 -3
  217. package/lib/module/tool/filesystemExecutor.d.ts +18 -0
  218. package/lib/module/tool/filesystemExecutor.js +49 -0
  219. package/lib/module/tool/globalExecutor.d.ts +17 -0
  220. package/lib/module/tool/globalExecutor.js +39 -0
  221. package/lib/module/tool/globalFilesystemExecutor.d.ts +18 -0
  222. package/lib/module/tool/globalFilesystemExecutor.js +49 -0
  223. package/lib/module/tool/workspaceExecutor.d.ts +9 -0
  224. package/lib/module/tool/workspaceExecutor.js +16 -3
  225. package/lib/naming/aliases.d.ts +48 -0
  226. package/lib/naming/aliases.js +79 -0
  227. package/lib/naming/catalog.d.ts +117 -0
  228. package/lib/naming/catalog.js +108 -0
  229. package/lib/naming/grammar.d.ts +67 -0
  230. package/lib/naming/grammar.js +212 -0
  231. package/lib/naming/ids.d.ts +157 -0
  232. package/lib/naming/ids.js +119 -0
  233. package/lib/naming/index.d.ts +13 -0
  234. package/lib/naming/index.js +13 -0
  235. package/lib/outline/index.d.ts +9 -0
  236. package/lib/outline/index.js +8 -0
  237. package/lib/outline/office.d.ts +160 -0
  238. package/lib/outline/office.js +2375 -0
  239. package/lib/outline/officeBridge.d.ts +32 -0
  240. package/lib/outline/officeBridge.js +27 -0
  241. package/lib/outline/outline.d.ts +159 -0
  242. package/lib/outline/outline.js +837 -0
  243. package/lib/outline/outlineIndex.d.ts +97 -0
  244. package/lib/outline/outlineIndex.js +325 -0
  245. package/lib/outline/outlineKeywords.d.ts +59 -0
  246. package/lib/outline/outlineKeywords.js +143 -0
  247. package/lib/outline/outlineStrategies.d.ts +414 -0
  248. package/lib/outline/outlineStrategies.js +8324 -0
  249. package/lib/outline/reactOutline.d.ts +37 -0
  250. package/lib/outline/reactOutline.js +1070 -0
  251. package/lib/outline/shellOutline.d.ts +65 -0
  252. package/lib/outline/shellOutline.js +873 -0
  253. package/lib/outline/sqlOutline.d.ts +170 -0
  254. package/lib/outline/sqlOutline.js +1536 -0
  255. package/lib/outline/strategy.d.ts +46 -0
  256. package/lib/outline/strategy.js +1 -0
  257. package/lib/outline/types.d.ts +95 -0
  258. package/lib/outline/types.js +1 -0
  259. package/lib/outline/visualBasicOutline.d.ts +27 -0
  260. package/lib/outline/visualBasicOutline.js +750 -0
  261. package/lib/protocol/filesystem.d.ts +55 -0
  262. package/lib/protocol/filesystem.js +105 -0
  263. package/lib/protocol/global.d.ts +42 -0
  264. package/lib/protocol/global.js +63 -0
  265. package/lib/protocol/globalFilesystem.d.ts +40 -0
  266. package/lib/protocol/globalFilesystem.js +59 -0
  267. package/lib/protocol/index.d.ts +4 -0
  268. package/lib/protocol/index.js +4 -0
  269. package/lib/protocol/protocol.d.ts +4 -0
  270. package/lib/protocol/wire.js +5 -2
  271. package/lib/protocol/workspace.d.ts +305 -0
  272. package/lib/protocol/workspace.js +258 -0
  273. package/lib/receipt/receipt.d.ts +8 -0
  274. package/lib/registry/content.js +9 -3
  275. package/lib/runtime/kernelRuntime.js +9 -1
  276. package/lib/scenario/scenario.js +5 -4
  277. package/lib/semantic/canonical.d.ts +61 -0
  278. package/lib/semantic/canonical.js +135 -8
  279. package/lib/semantic/jsonValue.d.ts +31 -0
  280. package/lib/semantic/jsonValue.js +122 -0
  281. package/lib/semantic/sha256.js +3 -0
  282. package/lib/semantic/time.d.ts +14 -0
  283. package/lib/semantic/time.js +56 -0
  284. package/lib/session/context.d.ts +76 -0
  285. package/lib/session/context.js +419 -0
  286. package/lib/session/errors.d.ts +24 -0
  287. package/lib/session/errors.js +22 -0
  288. package/lib/session/identity.d.ts +24 -0
  289. package/lib/session/identity.js +56 -0
  290. package/lib/session/index.d.ts +14 -0
  291. package/lib/session/index.js +12 -0
  292. package/lib/session/registry.d.ts +130 -0
  293. package/lib/session/registry.js +908 -0
  294. package/lib/session/types.d.ts +227 -0
  295. package/lib/session/types.js +14 -0
  296. package/lib/structure/index.d.ts +1 -0
  297. package/lib/structure/index.js +1 -0
  298. package/lib/structure/trie.d.ts +88 -0
  299. package/lib/structure/trie.js +183 -0
  300. package/lib/syntax/byteIndex.d.ts +44 -0
  301. package/lib/syntax/byteIndex.js +148 -0
  302. package/lib/syntax/charset.d.ts +88 -0
  303. package/lib/syntax/charset.js +276 -0
  304. package/lib/syntax/index.d.ts +6 -0
  305. package/lib/syntax/index.js +5 -0
  306. package/lib/syntax/syntaxRegistry.d.ts +150 -0
  307. package/lib/syntax/syntaxRegistry.js +314 -0
  308. package/lib/syntax/syntaxTree.d.ts +106 -0
  309. package/lib/syntax/syntaxTree.js +668 -0
  310. package/lib/syntax/types.d.ts +15 -0
  311. package/lib/syntax/types.js +1 -0
  312. package/lib/types/common.d.ts +1 -1
  313. package/package.json +72 -193
  314. package/.editorconfig +0 -12
  315. package/.prettierignore +0 -17
  316. package/MCP-Token/347/250/216/344/270/216/344/270/213/344/270/200/344/273/243/345/267/245/345/205/267/345/215/217/350/256/256.html +0 -1763
  317. package/docs/annotation-campaign-A.csv +0 -54
  318. package/docs/annotation-campaign-B.csv +0 -54
  319. package/docs/annotation-campaign.csv +0 -54
  320. package/docs/eval/annotations-A.jsonl +0 -16
  321. package/docs/eval/annotations.json +0 -122
  322. package/docs/eval/recorded-labels.json +0 -12
  323. package/docs/eval/replay-cases.json +0 -14
  324. package/docs/eval/replay-labels-b.json +0 -14
  325. package/docs/examples/attention-request.json +0 -16
  326. package/docs/examples/checkpoint.json +0 -15
  327. package/docs/examples/claim.json +0 -66
  328. package/docs/examples/collaboration.json +0 -66
  329. package/docs/examples/concept-checkpoint.json +0 -15
  330. package/docs/examples/concept-prune-plan.json +0 -45
  331. package/docs/examples/federation.json +0 -126
  332. package/docs/examples/frame-chain.json +0 -77
  333. package/docs/examples/ledger-snapshot.json +0 -108
  334. package/docs/examples/manifest.json +0 -77
  335. package/docs/examples/message.json +0 -19
  336. package/docs/examples/other-model.json +0 -45
  337. package/docs/examples/plan.json +0 -50
  338. package/docs/examples/prune-plan.json +0 -48
  339. package/docs/examples/receipt.json +0 -22
  340. package/docs/examples/runtime-run.json +0 -573
  341. package/docs/examples/team.json +0 -66
  342. package/docs/examples/verb-note.json +0 -11
  343. package/docs/probes/bayes-scores.json +0 -1452
  344. package/docs/probes/calibration-imported.json +0 -141
  345. package/docs/probes/context-ast-deepseek.json +0 -1577
  346. package/docs/probes/deepseek-probe.json +0 -917
  347. package/docs/probes/eval-recorded-replay.json +0 -597
  348. package/docs/probes/eval-replay.json +0 -124
  349. package/docs/probes/eval-summary.json +0 -42
  350. package/docs/probes/runtime-eval.json +0 -4230
  351. package/docs/schemas/collaboration.schema.json +0 -73
  352. package/docs/schemas/common.schema.json +0 -125
  353. package/docs/schemas/compaction.schema.json +0 -121
  354. package/docs/schemas/concept-compaction.schema.json +0 -73
  355. package/docs/schemas/concept.schema.json +0 -97
  356. package/docs/schemas/epistemic.schema.json +0 -178
  357. package/docs/schemas/federation.schema.json +0 -66
  358. package/docs/schemas/frame.schema.json +0 -86
  359. package/docs/schemas/ledger-snapshot.schema.json +0 -30
  360. package/docs/schemas/manifest.schema.json +0 -169
  361. package/docs/schemas/message.schema.json +0 -41
  362. package/docs/schemas/plan.schema.json +0 -189
  363. package/docs/schemas/receipt.schema.json +0 -45
  364. package/docs/schemas/social.schema.json +0 -153
  365. package/docs/schemas/team.schema.json +0 -56
  366. package/docs/schemas/verb.schema.json +0 -120
  367. package/eslint.config.mts +0 -96
  368. package/index.html +0 -13
  369. package/lib/context/workspaceProtocol.d.ts +0 -30
  370. package/lib/context/workspaceProtocol.js +0 -49
  371. package/prettier.config.mts +0 -37
  372. package/public/favicon.svg +0 -1
  373. package/public/icons.svg +0 -24
  374. package/src/attention/attention.ts +0 -347
  375. package/src/attention/budget.ts +0 -72
  376. package/src/attention/cognition.ts +0 -519
  377. package/src/attention/index.ts +0 -8
  378. package/src/attention/interrupts.ts +0 -228
  379. package/src/attention/resource.ts +0 -316
  380. package/src/attention/social.ts +0 -217
  381. package/src/attention/socialTypes.ts +0 -115
  382. package/src/authz/authz.ts +0 -305
  383. package/src/authz/index.ts +0 -1
  384. package/src/bayes/calibration.ts +0 -204
  385. package/src/bayes/calibrationRegistry.ts +0 -111
  386. package/src/bayes/calibrationSelection.ts +0 -154
  387. package/src/bayes/engine.ts +0 -532
  388. package/src/bayes/index.ts +0 -6
  389. package/src/bayes/reliability.ts +0 -62
  390. package/src/bayes/scopedPriors.ts +0 -88
  391. package/src/boundary/frame.ts +0 -322
  392. package/src/boundary/ids.ts +0 -14
  393. package/src/boundary/index.ts +0 -12
  394. package/src/boundary/refTable.ts +0 -125
  395. package/src/boundary/toolCall.ts +0 -212
  396. package/src/concept/concept.ts +0 -75
  397. package/src/concept/conceptBudget.ts +0 -346
  398. package/src/concept/conceptBudgetTypes.ts +0 -79
  399. package/src/concept/index.ts +0 -3
  400. package/src/concurrency/idempotency.ts +0 -41
  401. package/src/concurrency/index.ts +0 -5
  402. package/src/concurrency/mutex.ts +0 -26
  403. package/src/concurrency/namedLocks.ts +0 -35
  404. package/src/concurrency/retry.ts +0 -50
  405. package/src/concurrency/worker.ts +0 -128
  406. package/src/context/agentContext.ts +0 -308
  407. package/src/context/ast.ts +0 -499
  408. package/src/context/contentStore.ts +0 -75
  409. package/src/context/context.ts +0 -65
  410. package/src/context/contextIndex.ts +0 -85
  411. package/src/context/document.ts +0 -137
  412. package/src/context/fileStorePath.ts +0 -14
  413. package/src/context/index.ts +0 -43
  414. package/src/context/lifecycle.ts +0 -221
  415. package/src/context/projections.ts +0 -151
  416. package/src/context/workspace.ts +0 -422
  417. package/src/context/workspaceProtocol.ts +0 -112
  418. package/src/context/workspaceService.ts +0 -423
  419. package/src/cooperation/board.ts +0 -104
  420. package/src/cooperation/collaboration.ts +0 -60
  421. package/src/cooperation/index.ts +0 -6
  422. package/src/cooperation/merge.ts +0 -190
  423. package/src/cooperation/metrics.ts +0 -57
  424. package/src/cooperation/session.ts +0 -131
  425. package/src/cooperation/unified.ts +0 -56
  426. package/src/counter.ts +0 -9
  427. package/src/database/adapter/adapters.ts +0 -35
  428. package/src/database/adapter/index.ts +0 -4
  429. package/src/database/adapter/runtimeSink.ts +0 -74
  430. package/src/database/adapter/sessionStore.ts +0 -32
  431. package/src/database/adapter/turnStore.ts +0 -23
  432. package/src/database/entity/agent.ts +0 -199
  433. package/src/database/entity/entity.ts +0 -1046
  434. package/src/database/entity/handle.ts +0 -79
  435. package/src/database/entity/index.ts +0 -32
  436. package/src/database/entity/message.ts +0 -74
  437. package/src/database/entity/meta.ts +0 -11
  438. package/src/database/entity/object.ts +0 -42
  439. package/src/database/entity/outbox.ts +0 -15
  440. package/src/database/entity/process.ts +0 -65
  441. package/src/database/entity/registry.ts +0 -155
  442. package/src/database/entity/runtimeApproval.ts +0 -30
  443. package/src/database/entity/runtimeSession.ts +0 -13
  444. package/src/database/entity/runtimeTurn.ts +0 -15
  445. package/src/database/entity/thread.ts +0 -85
  446. package/src/database/entity/window.ts +0 -85
  447. package/src/database/entity/worker.ts +0 -90
  448. package/src/database/index.ts +0 -6
  449. package/src/database/repository/addressSpaceRepository.ts +0 -72
  450. package/src/database/repository/agentRepository.ts +0 -460
  451. package/src/database/repository/base.ts +0 -41
  452. package/src/database/repository/executionRepository.ts +0 -477
  453. package/src/database/repository/handleRepository.ts +0 -64
  454. package/src/database/repository/index.ts +0 -20
  455. package/src/database/repository/messageRepository.ts +0 -52
  456. package/src/database/repository/objectRepository.ts +0 -69
  457. package/src/database/repository/outboxRepository.ts +0 -63
  458. package/src/database/repository/processRepository.ts +0 -58
  459. package/src/database/repository/registryRepository.ts +0 -119
  460. package/src/database/repository/repository.ts +0 -491
  461. package/src/database/repository/runtimeApprovalRepository.ts +0 -44
  462. package/src/database/repository/runtimeSessionRepository.ts +0 -27
  463. package/src/database/repository/runtimeTurnRepository.ts +0 -39
  464. package/src/database/repository/socialRepository.ts +0 -185
  465. package/src/database/repository/threadRepository.ts +0 -57
  466. package/src/database/repository/windowRepository.ts +0 -88
  467. package/src/database/repository/workerRepository.ts +0 -69
  468. package/src/database/service/database.ts +0 -90
  469. package/src/database/service/handleService.ts +0 -48
  470. package/src/database/service/index.ts +0 -16
  471. package/src/database/service/messageService.ts +0 -61
  472. package/src/database/service/objectService.ts +0 -59
  473. package/src/database/service/processService.ts +0 -61
  474. package/src/database/service/registryServices.ts +0 -88
  475. package/src/database/service/service.ts +0 -183
  476. package/src/database/service/stepService.ts +0 -53
  477. package/src/database/service/threadService.ts +0 -65
  478. package/src/database/service/windowService.ts +0 -30
  479. package/src/database/service/workerService.ts +0 -57
  480. package/src/database/sql/index.ts +0 -3
  481. package/src/database/sql/schema.ts +0 -418
  482. package/src/database/sql/sql.ts +0 -543
  483. package/src/database/store/database.ts +0 -210
  484. package/src/database/store/index.ts +0 -3
  485. package/src/database/store/store.ts +0 -266
  486. package/src/delegate/index.ts +0 -2
  487. package/src/delegate/team.ts +0 -268
  488. package/src/delegate/teamTypes.ts +0 -47
  489. package/src/diagnosis/checklist.ts +0 -74
  490. package/src/diagnosis/context.ts +0 -93
  491. package/src/diagnosis/frame.ts +0 -256
  492. package/src/diagnosis/index.ts +0 -5
  493. package/src/diagnosis/router.ts +0 -72
  494. package/src/diagnosis/types.ts +0 -89
  495. package/src/error/agentError.ts +0 -16
  496. package/src/error/ampError.ts +0 -20
  497. package/src/error/authzError.ts +0 -14
  498. package/src/error/boundaryRejection.ts +0 -20
  499. package/src/error/index.ts +0 -7
  500. package/src/error/kernelError.ts +0 -27
  501. package/src/error/mailboxError.ts +0 -9
  502. package/src/error/windowError.ts +0 -12
  503. package/src/evaluation/agreement.ts +0 -96
  504. package/src/evaluation/index.ts +0 -2
  505. package/src/evaluation/labels.ts +0 -241
  506. package/src/evidence/evidenceGraph.ts +0 -205
  507. package/src/evidence/index.ts +0 -4
  508. package/src/evidence/revalidation.ts +0 -191
  509. package/src/execution/exec.ts +0 -408
  510. package/src/execution/handles.ts +0 -65
  511. package/src/execution/index.ts +0 -3
  512. package/src/execution/pin.ts +0 -154
  513. package/src/frame/frame.ts +0 -70
  514. package/src/frame/index.ts +0 -1
  515. package/src/goal/goal.ts +0 -43
  516. package/src/goal/index.ts +0 -2
  517. package/src/goal/plan.ts +0 -196
  518. package/src/governance/attentionManifest.ts +0 -802
  519. package/src/governance/audit.ts +0 -362
  520. package/src/governance/budget.ts +0 -628
  521. package/src/governance/context.ts +0 -356
  522. package/src/governance/control.ts +0 -159
  523. package/src/governance/cooperation.ts +0 -479
  524. package/src/governance/credential.ts +0 -359
  525. package/src/governance/httpServer.ts +0 -99
  526. package/src/governance/index.ts +0 -32
  527. package/src/governance/legal.ts +0 -574
  528. package/src/governance/matrix.ts +0 -460
  529. package/src/governance/perspectives.ts +0 -406
  530. package/src/governance/signing.ts +0 -407
  531. package/src/governance/store.ts +0 -125
  532. package/src/governance/switching.ts +0 -459
  533. package/src/governance/toolPolicy.ts +0 -80
  534. package/src/governance/transport.ts +0 -204
  535. package/src/governance/types.ts +0 -380
  536. package/src/governance/workflow.ts +0 -743
  537. package/src/index.ts +0 -11
  538. package/src/interaction/index.ts +0 -1
  539. package/src/interaction/interaction.ts +0 -391
  540. package/src/ipc/index.ts +0 -4
  541. package/src/ipc/mailbox.ts +0 -132
  542. package/src/ipc/memorySocialStore.ts +0 -93
  543. package/src/ipc/social.ts +0 -93
  544. package/src/kernel/index.ts +0 -14
  545. package/src/kernel/scheduler.ts +0 -498
  546. package/src/ledger/checkpoint.ts +0 -304
  547. package/src/ledger/index.ts +0 -4
  548. package/src/ledger/ledger.ts +0 -31
  549. package/src/ledger/persistence.ts +0 -159
  550. package/src/ledger/share.ts +0 -80
  551. package/src/lock/index.ts +0 -2
  552. package/src/lock/lease.ts +0 -74
  553. package/src/main.ts +0 -199
  554. package/src/manifest/agentCard.ts +0 -72
  555. package/src/manifest/cardSign.ts +0 -87
  556. package/src/manifest/federation.ts +0 -237
  557. package/src/manifest/federationTypes.ts +0 -55
  558. package/src/manifest/index.ts +0 -8
  559. package/src/manifest/keys.ts +0 -643
  560. package/src/manifest/manifest.ts +0 -114
  561. package/src/manifest/sign.ts +0 -134
  562. package/src/manifest/trust.ts +0 -146
  563. package/src/mission/index.ts +0 -2
  564. package/src/mission/missionQueue.ts +0 -75
  565. package/src/module/index.ts +0 -9
  566. package/src/module/llm/deepseek.ts +0 -214
  567. package/src/module/llm/llm.ts +0 -84
  568. package/src/module/mcp/client.ts +0 -110
  569. package/src/module/mcp/http.ts +0 -102
  570. package/src/module/mcp/protocol.ts +0 -77
  571. package/src/module/mcp/server.ts +0 -148
  572. package/src/module/mcp/transport.ts +0 -30
  573. package/src/module/mcp/workspaceServer.ts +0 -111
  574. package/src/module/sandbox/sandbox.ts +0 -29
  575. package/src/module/tool/mcpExecutor.ts +0 -54
  576. package/src/module/tool/policy.ts +0 -52
  577. package/src/module/tool/redact.ts +0 -29
  578. package/src/module/tool/tool.ts +0 -53
  579. package/src/module/tool/workspaceExecutor.ts +0 -35
  580. package/src/policy/guard.ts +0 -240
  581. package/src/policy/index.ts +0 -2
  582. package/src/policy/policy.ts +0 -561
  583. package/src/process/agent.ts +0 -341
  584. package/src/process/agentService.ts +0 -236
  585. package/src/process/agentStore.ts +0 -378
  586. package/src/process/executionStore.ts +0 -151
  587. package/src/process/index.ts +0 -5
  588. package/src/process/process.ts +0 -240
  589. package/src/process/transitions.ts +0 -19
  590. package/src/progress/index.ts +0 -2
  591. package/src/progress/progress.ts +0 -85
  592. package/src/protocol/a2a.ts +0 -120
  593. package/src/protocol/channel.ts +0 -44
  594. package/src/protocol/envelope.ts +0 -655
  595. package/src/protocol/httpChannel.ts +0 -87
  596. package/src/protocol/index.ts +0 -6
  597. package/src/protocol/protocol.ts +0 -138
  598. package/src/protocol/wire.ts +0 -60
  599. package/src/receipt/index.ts +0 -1
  600. package/src/receipt/receipt.ts +0 -47
  601. package/src/registry/content.ts +0 -69
  602. package/src/registry/index.ts +0 -23
  603. package/src/registry/registry.ts +0 -599
  604. package/src/runtime/action.ts +0 -87
  605. package/src/runtime/behavior.ts +0 -330
  606. package/src/runtime/behaviorTuning.ts +0 -163
  607. package/src/runtime/cognitiveRuntime.ts +0 -703
  608. package/src/runtime/escalation.ts +0 -35
  609. package/src/runtime/governedTask.ts +0 -233
  610. package/src/runtime/index.ts +0 -15
  611. package/src/runtime/kernelRuntime.ts +0 -144
  612. package/src/runtime/operation.ts +0 -35
  613. package/src/runtime/replay.ts +0 -71
  614. package/src/runtime/routing.ts +0 -58
  615. package/src/runtime/safety.ts +0 -48
  616. package/src/runtime/session.ts +0 -341
  617. package/src/runtime/sessionStore.ts +0 -43
  618. package/src/runtime/telemetry.ts +0 -55
  619. package/src/runtime/turnStore.ts +0 -30
  620. package/src/scenario/index.ts +0 -1
  621. package/src/scenario/scenario.ts +0 -299
  622. package/src/semantic/canonical.ts +0 -24
  623. package/src/semantic/index.ts +0 -2
  624. package/src/semantic/sha256.ts +0 -82
  625. package/src/storage/appendLog.ts +0 -372
  626. package/src/storage/fileAppendSink.ts +0 -40
  627. package/src/storage/index.ts +0 -2
  628. package/src/store/bindCache.ts +0 -22
  629. package/src/store/cache.ts +0 -191
  630. package/src/store/context.ts +0 -31
  631. package/src/store/handleStore.ts +0 -31
  632. package/src/store/index.ts +0 -9
  633. package/src/store/messageStore.ts +0 -31
  634. package/src/store/objectStore.ts +0 -31
  635. package/src/store/processStore.ts +0 -31
  636. package/src/store/threadStore.ts +0 -31
  637. package/src/store/windowStore.ts +0 -31
  638. package/src/structure/abstractSyntaxTree.ts +0 -493
  639. package/src/structure/avlTree.ts +0 -408
  640. package/src/structure/binarySearchTree.ts +0 -352
  641. package/src/structure/binaryTree.ts +0 -525
  642. package/src/structure/bloomFilter.ts +0 -231
  643. package/src/structure/compare.ts +0 -110
  644. package/src/structure/cuckooFilter.ts +0 -337
  645. package/src/structure/deque.ts +0 -223
  646. package/src/structure/filterKey.ts +0 -36
  647. package/src/structure/hash.ts +0 -279
  648. package/src/structure/heap.ts +0 -268
  649. package/src/structure/index.ts +0 -20
  650. package/src/structure/iterator.ts +0 -22
  651. package/src/structure/lru.ts +0 -619
  652. package/src/structure/ordered.ts +0 -399
  653. package/src/structure/priority.ts +0 -915
  654. package/src/structure/queue.ts +0 -168
  655. package/src/structure/redBlackTree.ts +0 -680
  656. package/src/structure/segmentTree.ts +0 -248
  657. package/src/structure/stack.ts +0 -118
  658. package/src/structure/unordered.ts +0 -407
  659. package/src/style.css +0 -278
  660. package/src/thread/index.ts +0 -2
  661. package/src/thread/thread.ts +0 -176
  662. package/src/thread/transitions.ts +0 -17
  663. package/src/types/common.ts +0 -119
  664. package/src/types/index.ts +0 -23
  665. package/src/warrant/epistemic.ts +0 -154
  666. package/src/warrant/index.ts +0 -3
  667. package/src/warrant/inquiry.ts +0 -166
  668. package/src/warrant/warrant.ts +0 -179
  669. package/src/window/compaction.ts +0 -403
  670. package/src/window/compactionTypes.ts +0 -119
  671. package/src/window/index.ts +0 -7
  672. package/src/window/page.ts +0 -18
  673. package/src/window/window.ts +0 -244
  674. package/tools/_helpers.ts +0 -34
  675. package/tools/a2a-check.ts +0 -110
  676. package/tools/a2a-flow-check.ts +0 -78
  677. package/tools/agent-card-check.ts +0 -76
  678. package/tools/agent-check.ts +0 -236
  679. package/tools/agent-store-check.ts +0 -153
  680. package/tools/agreement-check.ts +0 -27
  681. package/tools/annotation-server-check.ts +0 -48
  682. package/tools/annotation-server.ts +0 -230
  683. package/tools/annotation-status.ts +0 -65
  684. package/tools/approval-access-check.ts +0 -66
  685. package/tools/arch-check.ts +0 -72
  686. package/tools/attention-core-check.ts +0 -48
  687. package/tools/attention-resource-check.ts +0 -169
  688. package/tools/audit-check.ts +0 -207
  689. package/tools/authority-check.ts +0 -124
  690. package/tools/authz-check.ts +0 -138
  691. package/tools/bayes-check.ts +0 -162
  692. package/tools/bayes-probe.ts +0 -154
  693. package/tools/behavior-tuning-check.ts +0 -53
  694. package/tools/board-check.ts +0 -87
  695. package/tools/boundary-check.ts +0 -199
  696. package/tools/bundle-trust-check.ts +0 -96
  697. package/tools/calibrate-imported.ts +0 -108
  698. package/tools/calibration-check.ts +0 -44
  699. package/tools/calibration-registry-check.ts +0 -40
  700. package/tools/calibration-sim.ts +0 -40
  701. package/tools/card-sign-check.ts +0 -71
  702. package/tools/card-trust-check.ts +0 -78
  703. package/tools/channel-check.ts +0 -86
  704. package/tools/checkpoint-check.ts +0 -620
  705. package/tools/cleanup-style-configs.ts +0 -29
  706. package/tools/cognition-check.ts +0 -648
  707. package/tools/cognitive-runtime-check.ts +0 -609
  708. package/tools/collaboration-demo.ts +0 -78
  709. package/tools/compaction-check.ts +0 -266
  710. package/tools/concept-check.ts +0 -260
  711. package/tools/concurrency-check.ts +0 -242
  712. package/tools/conformance-runtime.ts +0 -389
  713. package/tools/conformance.ts +0 -651
  714. package/tools/context-ast-check.ts +0 -90
  715. package/tools/context-ast-deepseek.ts +0 -242
  716. package/tools/context-graph-bench.ts +0 -50
  717. package/tools/context-graph-check.ts +0 -229
  718. package/tools/context-index-check.ts +0 -48
  719. package/tools/context-lifecycle-check.ts +0 -69
  720. package/tools/context-projection-check.ts +0 -73
  721. package/tools/context-scope-check.ts +0 -134
  722. package/tools/context-storage-check.ts +0 -113
  723. package/tools/cooperation-check.ts +0 -517
  724. package/tools/cooperation-http-check.ts +0 -125
  725. package/tools/deepseek-llm-check.ts +0 -147
  726. package/tools/deepseek-probe.ts +0 -494
  727. package/tools/diagnosis-check.ts +0 -109
  728. package/tools/diagnosis-router-check.ts +0 -50
  729. package/tools/document-context-check.ts +0 -237
  730. package/tools/envelope-check.ts +0 -659
  731. package/tools/eslint-rules/index.ts +0 -26
  732. package/tools/eslint-rules/rules/jsdoc-comment-format.ts +0 -105
  733. package/tools/eslint-rules/rules/no-function-keyword.ts +0 -60
  734. package/tools/eslint-rules/rules/no-multiline-parameters.ts +0 -71
  735. package/tools/eslint-rules/rules/no-multiline-type-parameters.ts +0 -57
  736. package/tools/eslint-rules/rules/no-undefined-comparison.ts +0 -115
  737. package/tools/eslint-rules/rules/prefer-template-for-string-conversion.ts +0 -97
  738. package/tools/eslint-rules/rules/require-typeof-parentheses.ts +0 -49
  739. package/tools/eslint-rules/rules/require-variable-type.ts +0 -36
  740. package/tools/eslint-rules/rules/variable-naming.ts +0 -175
  741. package/tools/eval-recorded-replay.ts +0 -215
  742. package/tools/eval-replay.ts +0 -139
  743. package/tools/eval-summary.ts +0 -136
  744. package/tools/evidence-revalidation-check.ts +0 -235
  745. package/tools/exec-check.ts +0 -217
  746. package/tools/federation-check.ts +0 -166
  747. package/tools/federation-demo.ts +0 -45
  748. package/tools/filter-check.ts +0 -243
  749. package/tools/governance-check.ts +0 -680
  750. package/tools/governance-store-check.ts +0 -131
  751. package/tools/governed-task-check.ts +0 -227
  752. package/tools/guard-check.ts +0 -122
  753. package/tools/http-channel-check.ts +0 -125
  754. package/tools/import-campaign.ts +0 -28
  755. package/tools/inquiry-check.ts +0 -126
  756. package/tools/interaction-check.ts +0 -171
  757. package/tools/interrupts-check.ts +0 -173
  758. package/tools/ipc-check.ts +0 -170
  759. package/tools/kernel-async-check.ts +0 -136
  760. package/tools/kernel-check.ts +0 -369
  761. package/tools/kernel-runtime-check.ts +0 -276
  762. package/tools/keys-check.ts +0 -559
  763. package/tools/label-audit.ts +0 -70
  764. package/tools/labels-workflow-check.ts +0 -49
  765. package/tools/linear-structure-check.ts +0 -524
  766. package/tools/live-exec.ts +0 -62
  767. package/tools/live-governance-eval.ts +0 -813
  768. package/tools/live-legacy.ts +0 -50
  769. package/tools/lru-check.ts +0 -182
  770. package/tools/make-annotation-campaign.ts +0 -57
  771. package/tools/mcp-executor-check.ts +0 -33
  772. package/tools/merge-annotations.ts +0 -32
  773. package/tools/merge-check.ts +0 -98
  774. package/tools/metrics-check.ts +0 -84
  775. package/tools/net-probe.ts +0 -107
  776. package/tools/oauth-probe.ts +0 -117
  777. package/tools/outbox-check.ts +0 -50
  778. package/tools/persistence-check.ts +0 -144
  779. package/tools/pin-check.ts +0 -116
  780. package/tools/platform-check.ts +0 -281
  781. package/tools/policy-check.ts +0 -514
  782. package/tools/prettier-plugin/index.mts +0 -84
  783. package/tools/priority-check.ts +0 -627
  784. package/tools/probe-context7.ts +0 -63
  785. package/tools/registry-check.ts +0 -252
  786. package/tools/reliability-check.ts +0 -25
  787. package/tools/retry-check.ts +0 -85
  788. package/tools/rewrite-declaration-extensions.ts +0 -98
  789. package/tools/runtime-check.ts +0 -165
  790. package/tools/runtime-deepseek-check.ts +0 -85
  791. package/tools/runtime-eval.ts +0 -358
  792. package/tools/scenario-check.ts +0 -161
  793. package/tools/scenario-incident.ts +0 -162
  794. package/tools/scoped-priors-check.ts +0 -35
  795. package/tools/scoped-priors-pooling.ts +0 -34
  796. package/tools/segment-ast-check.ts +0 -649
  797. package/tools/session-check.ts +0 -196
  798. package/tools/session-store-check.ts +0 -73
  799. package/tools/share-check.ts +0 -88
  800. package/tools/sign-check.ts +0 -95
  801. package/tools/signing-check.ts +0 -275
  802. package/tools/snapshot-demo.ts +0 -65
  803. package/tools/social-check.ts +0 -146
  804. package/tools/structure-compare-check.ts +0 -95
  805. package/tools/support/documentScanner.ts +0 -577
  806. package/tools/support/texScanner.ts +0 -631
  807. package/tools/support/workspaceScanner.ts +0 -476
  808. package/tools/team-check.ts +0 -163
  809. package/tools/team-demo.ts +0 -36
  810. package/tools/telemetry-check.ts +0 -44
  811. package/tools/tex-context-check.ts +0 -263
  812. package/tools/tool-gate-check.ts +0 -98
  813. package/tools/tree-structure-check.ts +0 -786
  814. package/tools/trust-flow-check.ts +0 -158
  815. package/tools/turn-store-check.ts +0 -57
  816. package/tools/unified-check.ts +0 -83
  817. package/tools/validate.ts +0 -309
  818. package/tools/wire-check.ts +0 -96
  819. package/tools/workspace-agent-check.ts +0 -486
  820. package/tools/workspace-agent-demo.ts +0 -62
  821. package/tools/workspace-agent-server.ts +0 -101
  822. package/tools/workspace-context-check.ts +0 -331
  823. package/tools/workspace-context.ts +0 -131
  824. package/tsconfig.build.json +0 -14
  825. package/tsconfig.json +0 -24
  826. package/tsconfig.tools.json +0 -31
  827. package/viz/context-ast.json +0 -1577
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Algorithm registry and the portable SHA-256 core.
3
+ *
4
+ * Two rules shape this file. First, the algorithm is named in every reference,
5
+ * so the registry is the only place that knows how long a digest is: parsing,
6
+ * formatting and comparison ask it instead of hard-coding "64 hex characters".
7
+ * Second, the module must stay dependency-free and behave identically in Node
8
+ * and the browser, so `node:crypto` is never imported here; `sha256` is a
9
+ * genuine incremental FIPS 180-4 implementation over raw bytes. `src/semantic/sha256.ts`
10
+ * remains the string-oriented implementation used by `canonical()`; this one
11
+ * hashes bytes so binary content cannot be rewritten by a UTF-8 encoder.
12
+ *
13
+ * The other identifiers are registered but carry no backend in this build. That
14
+ * is deliberate: a reference that names `sha512` must still parse and round-trip
15
+ * (its digest length is a property of the algorithm, not of this build), while
16
+ * asking for a digest raises `UnsupportedAlgorithm` rather than silently
17
+ * falling back to SHA-256.
18
+ */
19
+ import { FingerprintError, UnsupportedAlgorithm } from "./error.js";
20
+ /**
21
+ * Declaration order is the canonical listing order; nothing in the module
22
+ * depends on iteration order, but diagnostics and future catalogues do.
23
+ */
24
+ export const AlgorithmIds = ["sha256", "sha512", "sha3-256", "blake2b-512"];
25
+ const Algorithms = new Map([
26
+ ["sha256", { id: "sha256", digestBytes: 32, backend: "portable" }],
27
+ ["sha512", { id: "sha512", digestBytes: 64, backend: "unavailable" }],
28
+ ["sha3-256", { id: "sha3-256", digestBytes: 32, backend: "unavailable" }],
29
+ ["blake2b-512", { id: "blake2b-512", digestBytes: 64, backend: "unavailable" }],
30
+ ]);
31
+ /**
32
+ * True for a value that is one of the four registered identifiers. Used by the
33
+ * parsers, which must reject an unknown algorithm instead of guessing.
34
+ */
35
+ export const isAlgorithmId = (value) => Algorithms.has(value);
36
+ /**
37
+ * Look up a registered algorithm. A value that is syntactically fine but not
38
+ * registered is an `UnsupportedAlgorithm`, because at this point a hasher is
39
+ * required and there is nothing safe to substitute.
40
+ */
41
+ export const algorithmSpec = (algorithm) => {
42
+ const spec = Algorithms.get(algorithm);
43
+ if (spec === (void 0)) {
44
+ throw new UnsupportedAlgorithm([`unknown algorithm "${algorithm}"; known: ${AlgorithmIds.join(", ")}`]);
45
+ }
46
+ return spec;
47
+ };
48
+ /**
49
+ * Expected lowercase-hex length of a digest for this algorithm. Both parsers
50
+ * use it so "wrong length" and "wrong algorithm" cannot be confused.
51
+ */
52
+ export const digestHexLength = (algorithm) => algorithmSpec(algorithm).digestBytes * 2;
53
+ const HexDigits = "0123456789abcdef";
54
+ const HexMask = 0x0f;
55
+ const HexShift = 4;
56
+ /**
57
+ * Lowercase hex encoding. Lowercase is required by the OCI digest grammar and
58
+ * by every existing `sha256:` reference in this repository; emitting uppercase
59
+ * would create a second spelling of the same digest.
60
+ */
61
+ export const bytesToHex = (bytes) => {
62
+ let out = "";
63
+ for (let index = 0; index < bytes.length; index += 1) {
64
+ const byte = bytes[index];
65
+ out += `${HexDigits[byte >>> HexShift]}${HexDigits[byte & HexMask]}`;
66
+ }
67
+ return out;
68
+ };
69
+ const hexDigitValue = (code) => {
70
+ if (code >= 0x30 && code <= 0x39) {
71
+ return code - 0x30;
72
+ }
73
+ return code - 0x61 + 10;
74
+ };
75
+ /**
76
+ * Decode a hex digest back to bytes. Used by the tree leaf serialisation, which
77
+ * has to embed a child digest as 32 raw bytes.
78
+ */
79
+ export const hexToBytes = (hex) => {
80
+ const bytes = new Uint8Array(hex.length / 2);
81
+ for (let index = 0; index < bytes.length; index += 1) {
82
+ const offset = index * 2;
83
+ bytes[index] = (hexDigitValue(hex.charCodeAt(offset)) << HexShift) | hexDigitValue(hex.charCodeAt(offset + 1));
84
+ }
85
+ return bytes;
86
+ };
87
+ /**
88
+ * Strict lowercase-hex check. Uppercase is rejected rather than folded, because
89
+ * `sha256:AB...` and `sha256:ab...` are different strings and a parser that
90
+ * accepts both silently creates two names for one digest.
91
+ */
92
+ export const isLowerHex = (text, length) => {
93
+ if (text.length !== length) {
94
+ return false;
95
+ }
96
+ for (let index = 0; index < text.length; index += 1) {
97
+ const code = text.charCodeAt(index);
98
+ const digit = (code >= 0x30 && code <= 0x39) || (code >= 0x61 && code <= 0x66);
99
+ if (!digit) {
100
+ return false;
101
+ }
102
+ }
103
+ return true;
104
+ };
105
+ const Sha256InitialState = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];
106
+ const Sha256RoundConstants = new Uint32Array([
107
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74,
108
+ 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d,
109
+ 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e,
110
+ 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
111
+ 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
112
+ ]);
113
+ const WordCount = 64;
114
+ const BlockBytes = 64;
115
+ const DigestBytes = 32;
116
+ const PaddingBoundary = 56;
117
+ const HighBitDivisor = 0x20000000;
118
+ const rotr = (value, shift) => ((value >>> shift) | (value << (32 - shift))) >>> 0;
119
+ /**
120
+ * The FIPS 180-4 compression function for one 64-byte block.
121
+ *
122
+ * `words` is caller-provided scratch space so an incremental hasher does not
123
+ * allocate 64 words per block; `src/semantic/sha256.ts` keeps the same loop but
124
+ * reads from a padded copy of the whole input, which is exactly the 2x memory
125
+ * cost this module cannot afford for streamed files.
126
+ */
127
+ const compressBlock = (state, block, words) => {
128
+ for (let index = 0; index < 16; index += 1) {
129
+ const offset = index * 4;
130
+ words[index] = ((block[offset] << 24) | (block[offset + 1] << 16) | (block[offset + 2] << 8) | block[offset + 3]) >>> 0;
131
+ }
132
+ for (let index = 16; index < WordCount; index += 1) {
133
+ const s0 = rotr(words[index - 15], 7) ^ rotr(words[index - 15], 18) ^ (words[index - 15] >>> 3);
134
+ const s1 = rotr(words[index - 2], 17) ^ rotr(words[index - 2], 19) ^ (words[index - 2] >>> 10);
135
+ words[index] = (words[index - 16] + s0 + words[index - 7] + s1) >>> 0;
136
+ }
137
+ let a = state[0];
138
+ let b = state[1];
139
+ let c = state[2];
140
+ let d = state[3];
141
+ let e = state[4];
142
+ let f = state[5];
143
+ let g = state[6];
144
+ let h = state[7];
145
+ for (let index = 0; index < WordCount; index += 1) {
146
+ const sigma1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);
147
+ const choose = (e & f) ^ (~e & g);
148
+ const temp1 = (h + sigma1 + choose + Sha256RoundConstants[index] + words[index]) >>> 0;
149
+ const sigma0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);
150
+ const majority = (a & b) ^ (a & c) ^ (b & c);
151
+ const temp2 = (sigma0 + majority) >>> 0;
152
+ h = g;
153
+ g = f;
154
+ f = e;
155
+ e = (d + temp1) >>> 0;
156
+ d = c;
157
+ c = b;
158
+ b = a;
159
+ a = (temp1 + temp2) >>> 0;
160
+ }
161
+ state[0] = (state[0] + a) >>> 0;
162
+ state[1] = (state[1] + b) >>> 0;
163
+ state[2] = (state[2] + c) >>> 0;
164
+ state[3] = (state[3] + d) >>> 0;
165
+ state[4] = (state[4] + e) >>> 0;
166
+ state[5] = (state[5] + f) >>> 0;
167
+ state[6] = (state[6] + g) >>> 0;
168
+ state[7] = (state[7] + h) >>> 0;
169
+ };
170
+ /**
171
+ * Portable incremental SHA-256 over raw bytes.
172
+ *
173
+ * The implementation tracks the total byte count separately from the buffered
174
+ * block because the FIPS padding needs the input length in bits; computing the
175
+ * final eight bytes from `totalBytes` (high = bits >> 32, low = low 32 bits)
176
+ * avoids the overflow a 32-bit byte counter would hit at 512 MiB.
177
+ */
178
+ export const createSha256 = () => {
179
+ const state = new Uint32Array(Sha256InitialState);
180
+ const block = new Uint8Array(BlockBytes);
181
+ const words = new Uint32Array(WordCount);
182
+ let blockLength = 0;
183
+ let totalBytes = 0;
184
+ let finished = false;
185
+ const hasher = {
186
+ update: (bytes) => {
187
+ if (finished) {
188
+ throw new FingerprintError("hasher_finished", ["sha256 hasher already finalised; digest() is single-shot"]);
189
+ }
190
+ if (!(bytes instanceof Uint8Array)) {
191
+ throw new TypeError(`sha256 hasher accepts Uint8Array, received ${typeof (bytes)}`);
192
+ }
193
+ totalBytes += bytes.length;
194
+ let offset = 0;
195
+ if (blockLength > 0) {
196
+ const taken = Math.min(BlockBytes - blockLength, bytes.length);
197
+ block.set(bytes.subarray(0, taken), blockLength);
198
+ blockLength += taken;
199
+ offset += taken;
200
+ if (blockLength === BlockBytes) {
201
+ compressBlock(state, block, words);
202
+ blockLength = 0;
203
+ }
204
+ }
205
+ while (offset + BlockBytes <= bytes.length) {
206
+ compressBlock(state, bytes.subarray(offset, offset + BlockBytes), words);
207
+ offset += BlockBytes;
208
+ }
209
+ if (offset < bytes.length) {
210
+ block.set(bytes.subarray(offset), 0);
211
+ blockLength = bytes.length - offset;
212
+ }
213
+ return hasher;
214
+ },
215
+ digest: () => {
216
+ if (finished) {
217
+ throw new FingerprintError("hasher_finished", ["sha256 hasher already finalised; digest() is single-shot"]);
218
+ }
219
+ finished = true;
220
+ const tail = new Uint8Array(blockLength < PaddingBoundary ? BlockBytes : BlockBytes * 2);
221
+ tail.set(block.subarray(0, blockLength));
222
+ tail[blockLength] = 0x80;
223
+ const highBits = Math.floor(totalBytes / HighBitDivisor);
224
+ const lowBits = (totalBytes % HighBitDivisor) * 8;
225
+ const view = new DataView(tail.buffer);
226
+ view.setUint32(tail.length - 8, highBits);
227
+ view.setUint32(tail.length - 4, lowBits);
228
+ for (let offset = 0; offset < tail.length; offset += BlockBytes) {
229
+ compressBlock(state, tail.subarray(offset, offset + BlockBytes), words);
230
+ }
231
+ const digest = new Uint8Array(DigestBytes);
232
+ const digestView = new DataView(digest.buffer);
233
+ for (let index = 0; index < DigestBytes / 4; index += 1) {
234
+ digestView.setUint32(index * 4, state[index]);
235
+ }
236
+ return digest;
237
+ },
238
+ };
239
+ return hasher;
240
+ };
241
+ /**
242
+ * One-shot SHA-256 over raw bytes. Thin wrapper so call sites do not repeat the
243
+ * create/update/digest sequence and cannot forget the update.
244
+ */
245
+ export const sha256Bytes = (bytes) => createSha256().update(bytes).digest();
246
+ /**
247
+ * Fail closed unless this build can actually compute the named algorithm.
248
+ *
249
+ * The registry must answer before any payload is touched: a caller that gets a
250
+ * hasher is entitled to assume the algorithm in the reference is the algorithm
251
+ * that ran. The same guard is called by the file layer before it opens a file,
252
+ * so an unsupported algorithm fails without a pointless read instead of after
253
+ * the work has already been done.
254
+ */
255
+ export const assertBackend = (algorithm) => {
256
+ const spec = algorithmSpec(algorithm);
257
+ if (spec.backend !== "portable" || spec.id !== "sha256") {
258
+ throw new UnsupportedAlgorithm([`algorithm "${algorithm}" has no backend in this dependency-free build; only sha256 is available`]);
259
+ }
260
+ return spec;
261
+ };
262
+ /**
263
+ * Construct a hasher for any registered algorithm, or fail closed.
264
+ *
265
+ * Kept as a thin wrapper over `assertBackend` so the availability rule lives in
266
+ * exactly one place.
267
+ */
268
+ export const createHasher = (algorithm) => {
269
+ assertBackend(algorithm);
270
+ return createSha256();
271
+ };
@@ -0,0 +1,18 @@
1
+ import type { AlgorithmId } from "./algorithm.js";
2
+ import type { Fingerprint } from "./preimage.js";
3
+ /**
4
+ * Option shape for `fingerprintBytes`. SHA-256 is the only backend in this
5
+ * build; the other registered ids raise `UnsupportedAlgorithm` rather than
6
+ * falling back silently.
7
+ */
8
+ export interface BytesFingerprintOptions {
9
+ readonly algorithm?: AlgorithmId;
10
+ }
11
+ /**
12
+ * Fingerprint a byte sequence under the `bytes/raw` policy.
13
+ *
14
+ * The `bytes` field of the returned reference is the exact payload length, and
15
+ * `digest` is the CAS-compatible `sha256:<hex>` spelling so callers can keep
16
+ * storing it in the existing content stores unchanged.
17
+ */
18
+ export declare const fingerprintBytes: (bytes: Uint8Array, options?: BytesFingerprintOptions) => Fingerprint;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Raw byte fingerprints.
3
+ *
4
+ * This is the primitive every other content kind reduces to: text, JSON and
5
+ * files all end up as a `Uint8Array` and then as a header plus payload. Its one
6
+ * rule is that the bytes are hashed exactly as given 鈥?no decoding, no newline
7
+ * folding, no charset guessing. That is what makes `0x80` and `0x81` different
8
+ * fingerprints, which the legacy `readFile(path, "utf8")` path got wrong (both
9
+ * decode to U+FFFD and collided).
10
+ */
11
+ import { isAlgorithmId } from "./algorithm.js";
12
+ import { UnsupportedAlgorithm } from "./error.js";
13
+ import { Policy } from "./policy.js";
14
+ import { fingerprintPayload } from "./preimage.js";
15
+ /**
16
+ * Fingerprint a byte sequence under the `bytes/raw` policy.
17
+ *
18
+ * The `bytes` field of the returned reference is the exact payload length, and
19
+ * `digest` is the CAS-compatible `sha256:<hex>` spelling so callers can keep
20
+ * storing it in the existing content stores unchanged.
21
+ */
22
+ export const fingerprintBytes = (bytes, options) => {
23
+ if (!(bytes instanceof Uint8Array)) {
24
+ throw new TypeError(`fingerprintBytes expects a Uint8Array, received ${typeof (bytes)}`);
25
+ }
26
+ const algorithm = options?.algorithm ?? "sha256";
27
+ if (!isAlgorithmId(algorithm)) {
28
+ throw new UnsupportedAlgorithm([`unknown algorithm "${algorithm}"; known: sha256, sha512, sha3-256, blake2b-512`]);
29
+ }
30
+ return fingerprintPayload(algorithm, "bytes", Policy.bytesRaw, bytes);
31
+ };
@@ -0,0 +1,73 @@
1
+ /**
2
+ * The failure taxonomy of the fingerprint module.
3
+ *
4
+ * A caller has to be able to tell four situations apart: the algorithm is not
5
+ * available in this build, the kind is outside the frozen set, the chosen
6
+ * policy refused the input, or a comparison failed. Treating them as one
7
+ * generic error forces the caller either to swallow an integrity failure or to
8
+ * retry a permanent bug, so the code is part of the contract and not just a
9
+ * diagnostic string. The base class mirrors `src/error/ampError.ts`: one
10
+ * machine-readable code plus every problem found in the same attempt.
11
+ */
12
+ import { AmpError } from "../error/ampError.js";
13
+ /**
14
+ * Stable machine-readable reasons; callers may switch on these.
15
+ */
16
+ export type FingerprintErrorCode = "unsupported_algorithm" | "unsupported_kind" | "unsupported_policy" | "normalization_rejected" | "fingerprint_mismatch" | "fingerprint_io_error" | "invalid_ref" | "hasher_finished";
17
+ /**
18
+ * Base class for every rejection this module raises.
19
+ *
20
+ * `problems` is plural because one input can violate several rules at once and
21
+ * a caller should see all of them, exactly like the boundary rejections in
22
+ * `src/error/boundaryRejection.ts`. The `name` parameter exists only so the
23
+ * subclasses below can keep `error.name` useful when they call `super`.
24
+ */
25
+ export declare class FingerprintError extends AmpError {
26
+ constructor(code: FingerprintErrorCode, problems: readonly string[], name?: string);
27
+ }
28
+ /**
29
+ * The algorithm id is not registered, or it is registered but this build has no
30
+ * backend for it. Never downgraded to SHA-256: a silent fallback would make the
31
+ * algorithm name in the reference a lie.
32
+ */
33
+ export declare class UnsupportedAlgorithm extends FingerprintError {
34
+ constructor(problems: readonly string[]);
35
+ }
36
+ /**
37
+ * The kind is outside the frozen `FingerprintKind` set, so no preimage header
38
+ * could be built without inventing a field the verifier does not know.
39
+ */
40
+ export declare class UnsupportedKind extends FingerprintError {
41
+ constructor(problems: readonly string[]);
42
+ }
43
+ /**
44
+ * A policy refused the input: a lone surrogate, `-0`, a non-finite number,
45
+ * invalid UTF-8, a NUL inside `text`. Retrying with the same arguments cannot
46
+ * succeed, which is what separates this from an I/O failure.
47
+ */
48
+ export declare class NormalizationRejected extends FingerprintError {
49
+ constructor(problems: readonly string[]);
50
+ }
51
+ /**
52
+ * Two references that should describe the same value do not. Both references
53
+ * are in the message because a bare "digest mismatch" cannot be debugged from
54
+ * a log line.
55
+ */
56
+ export declare class FingerprintMismatch extends FingerprintError {
57
+ constructor(problems: readonly string[]);
58
+ }
59
+ /**
60
+ * The file system refused the read: missing path, directory where a file was
61
+ * expected, a symlink the caller may not follow, or a file that changed size
62
+ * while it was being streamed.
63
+ */
64
+ export declare class FingerprintIOError extends FingerprintError {
65
+ constructor(problems: readonly string[]);
66
+ }
67
+ /**
68
+ * Render an unknown thrown value for a diagnostic. `String(error)` is avoided
69
+ * on purpose: it turns a thrown object into `[object Object]`, while the
70
+ * `message` of a Node system error (`ENOENT: no such file ...`) is the part a
71
+ * human needs.
72
+ */
73
+ export declare const describeError: (error: unknown) => string;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The failure taxonomy of the fingerprint module.
3
+ *
4
+ * A caller has to be able to tell four situations apart: the algorithm is not
5
+ * available in this build, the kind is outside the frozen set, the chosen
6
+ * policy refused the input, or a comparison failed. Treating them as one
7
+ * generic error forces the caller either to swallow an integrity failure or to
8
+ * retry a permanent bug, so the code is part of the contract and not just a
9
+ * diagnostic string. The base class mirrors `src/error/ampError.ts`: one
10
+ * machine-readable code plus every problem found in the same attempt.
11
+ */
12
+ import { AmpError } from "../error/ampError.js";
13
+ /**
14
+ * Base class for every rejection this module raises.
15
+ *
16
+ * `problems` is plural because one input can violate several rules at once and
17
+ * a caller should see all of them, exactly like the boundary rejections in
18
+ * `src/error/boundaryRejection.ts`. The `name` parameter exists only so the
19
+ * subclasses below can keep `error.name` useful when they call `super`.
20
+ */
21
+ export class FingerprintError extends AmpError {
22
+ constructor(code, problems, name = "FingerprintError") {
23
+ super(name, code, problems);
24
+ }
25
+ }
26
+ /**
27
+ * The algorithm id is not registered, or it is registered but this build has no
28
+ * backend for it. Never downgraded to SHA-256: a silent fallback would make the
29
+ * algorithm name in the reference a lie.
30
+ */
31
+ export class UnsupportedAlgorithm extends FingerprintError {
32
+ constructor(problems) {
33
+ super("unsupported_algorithm", problems, "UnsupportedAlgorithm");
34
+ }
35
+ }
36
+ /**
37
+ * The kind is outside the frozen `FingerprintKind` set, so no preimage header
38
+ * could be built without inventing a field the verifier does not know.
39
+ */
40
+ export class UnsupportedKind extends FingerprintError {
41
+ constructor(problems) {
42
+ super("unsupported_kind", problems, "UnsupportedKind");
43
+ }
44
+ }
45
+ /**
46
+ * A policy refused the input: a lone surrogate, `-0`, a non-finite number,
47
+ * invalid UTF-8, a NUL inside `text`. Retrying with the same arguments cannot
48
+ * succeed, which is what separates this from an I/O failure.
49
+ */
50
+ export class NormalizationRejected extends FingerprintError {
51
+ constructor(problems) {
52
+ super("normalization_rejected", problems, "NormalizationRejected");
53
+ }
54
+ }
55
+ /**
56
+ * Two references that should describe the same value do not. Both references
57
+ * are in the message because a bare "digest mismatch" cannot be debugged from
58
+ * a log line.
59
+ */
60
+ export class FingerprintMismatch extends FingerprintError {
61
+ constructor(problems) {
62
+ super("fingerprint_mismatch", problems, "FingerprintMismatch");
63
+ }
64
+ }
65
+ /**
66
+ * The file system refused the read: missing path, directory where a file was
67
+ * expected, a symlink the caller may not follow, or a file that changed size
68
+ * while it was being streamed.
69
+ */
70
+ export class FingerprintIOError extends FingerprintError {
71
+ constructor(problems) {
72
+ super("fingerprint_io_error", problems, "FingerprintIOError");
73
+ }
74
+ }
75
+ /**
76
+ * Render an unknown thrown value for a diagnostic. `String(error)` is avoided
77
+ * on purpose: it turns a thrown object into `[object Object]`, while the
78
+ * `message` of a Node system error (`ENOENT: no such file ...`) is the part a
79
+ * human needs.
80
+ */
81
+ export const describeError = (error) => {
82
+ if (error instanceof Error) {
83
+ return error.message;
84
+ }
85
+ return `${error}`;
86
+ };
@@ -0,0 +1,71 @@
1
+ import type { AlgorithmId } from "./algorithm.js";
2
+ import type { Fingerprint } from "./preimage.js";
3
+ /**
4
+ * How the octets are turned into a payload. `bytes` hashes them verbatim;
5
+ * `text` decodes strictly, then applies `text/utf8+nfc+lf`, so a line-ending or
6
+ * BOM change does not change the digest while invalid UTF-8 does.
7
+ */
8
+ export type FileFingerprintMode = "bytes" | "text";
9
+ /**
10
+ * Option shape for `fingerprintFile`.
11
+ *
12
+ * `chunkBytes` exists for tests and for callers that already read in a fixed
13
+ * block size; it must not change the digest, which the check verifies with 1,
14
+ * 7 and 1 MiB chunks.
15
+ */
16
+ export interface FileFingerprintOptions {
17
+ readonly algorithm?: AlgorithmId;
18
+ readonly mode?: FileFingerprintMode;
19
+ readonly chunkBytes?: number;
20
+ }
21
+ /**
22
+ * A file fingerprint plus the on-disk size.
23
+ *
24
+ * `size` is the file's byte length; `ref.bytes` is the payload that was hashed.
25
+ * They are equal for `mode: "bytes"` and differ for `mode: "text"` when
26
+ * normalisation changes the UTF-8 length (for example, CRLF folding), which is
27
+ * why both numbers are reported instead of one.
28
+ */
29
+ export interface FileFingerprint extends Fingerprint {
30
+ readonly size: number;
31
+ }
32
+ /**
33
+ * Validate the chunk size once, in one place, so a zero or negative value fails
34
+ * before a file is opened instead of producing an infinite loop of zero-byte
35
+ * reads.
36
+ */
37
+ export declare const resolveChunkBytes: (value: number | undefined) => number;
38
+ /**
39
+ * Fingerprint a file's content.
40
+ *
41
+ * `mode: "bytes"` hashes the octets (`file/bytes+chunked`). `mode: "text"`
42
+ * decodes strictly, applies the `text/utf8+nfc+lf` normalisation and hashes the
43
+ * re-encoded payload (`file/text+nfc`); invalid UTF-8 is `NormalizationRejected`,
44
+ * never U+FFFD. Text mode has to hold the decoded string because Unicode
45
+ * normalisation can join characters across chunk boundaries; the read itself is
46
+ * still streamed, and the payload is only re-encoded once.
47
+ */
48
+ export declare const fingerprintFile: (path: string, options?: FileFingerprintOptions) => Promise<FileFingerprint>;
49
+ /**
50
+ * Weak change-detection fingerprint of a file's metadata: `size\0mtimeNs`.
51
+ *
52
+ * This is **not an integrity fingerprint**. It cannot distinguish two files of
53
+ * the same size and the same nanosecond mtime, it says nothing about content,
54
+ * and both fields are attacker-controlled (a caller can set mtime with
55
+ * `utimes`). It exists for cache invalidation and "did this path change since
56
+ * the last sweep" decisions; use `fingerprintFile` when the question is whether
57
+ * the content is the same. It follows symlinks, unlike the content
58
+ * fingerprints, because it describes the object a path currently resolves to.
59
+ *
60
+ * The `bytes` field counts the metadata payload, not the file size —the file
61
+ * size is embedded verbatim in the payload (`size\0mtimeNs`) so a reader can
62
+ * recover it from the preimage description.
63
+ */
64
+ export declare const fingerprintFileMeta: (path: string) => Promise<Fingerprint>;
65
+ /**
66
+ * Content digest of a regular file as bare lowercase hex, with no preimage
67
+ * header. Used by `tree.ts`, whose leaf serialisation embeds a child digest as
68
+ * 32 raw bytes; the file's own type and mode are bound by the leaf, so a second
69
+ * header here would only add a field the tree format does not define.
70
+ */
71
+ export declare const fileContentDigest: (path: string, expectedSize: number, chunkBytes: number) => string;