attention-manifest-protocol 0.4.2 → 0.4.4

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 (809) 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/eslint.config.mts +0 -96
  352. package/index.html +0 -13
  353. package/prettier.config.mts +0 -37
  354. package/public/favicon.svg +0 -1
  355. package/public/icons.svg +0 -24
  356. package/src/attention/attention.ts +0 -347
  357. package/src/attention/budget.ts +0 -72
  358. package/src/attention/cognition.ts +0 -519
  359. package/src/attention/index.ts +0 -8
  360. package/src/attention/interrupts.ts +0 -228
  361. package/src/attention/resource.ts +0 -316
  362. package/src/attention/social.ts +0 -217
  363. package/src/attention/socialTypes.ts +0 -115
  364. package/src/authz/authz.ts +0 -305
  365. package/src/authz/index.ts +0 -1
  366. package/src/bayes/calibration.ts +0 -204
  367. package/src/bayes/calibrationRegistry.ts +0 -111
  368. package/src/bayes/calibrationSelection.ts +0 -154
  369. package/src/bayes/engine.ts +0 -532
  370. package/src/bayes/index.ts +0 -6
  371. package/src/bayes/reliability.ts +0 -62
  372. package/src/bayes/scopedPriors.ts +0 -88
  373. package/src/boundary/frame.ts +0 -322
  374. package/src/boundary/ids.ts +0 -14
  375. package/src/boundary/index.ts +0 -12
  376. package/src/boundary/refTable.ts +0 -125
  377. package/src/boundary/toolCall.ts +0 -212
  378. package/src/concept/concept.ts +0 -75
  379. package/src/concept/conceptBudget.ts +0 -346
  380. package/src/concept/conceptBudgetTypes.ts +0 -79
  381. package/src/concept/index.ts +0 -3
  382. package/src/concurrency/idempotency.ts +0 -41
  383. package/src/concurrency/index.ts +0 -5
  384. package/src/concurrency/mutex.ts +0 -26
  385. package/src/concurrency/namedLocks.ts +0 -35
  386. package/src/concurrency/retry.ts +0 -50
  387. package/src/concurrency/worker.ts +0 -128
  388. package/src/context/agentContext.ts +0 -308
  389. package/src/context/ast.ts +0 -499
  390. package/src/context/contentStore.ts +0 -75
  391. package/src/context/context.ts +0 -65
  392. package/src/context/contextIndex.ts +0 -85
  393. package/src/context/document.ts +0 -137
  394. package/src/context/fileStorePath.ts +0 -14
  395. package/src/context/index.ts +0 -43
  396. package/src/context/lifecycle.ts +0 -221
  397. package/src/context/projections.ts +0 -151
  398. package/src/context/workspace.ts +0 -422
  399. package/src/context/workspaceProtocol.ts +0 -112
  400. package/src/context/workspaceService.ts +0 -423
  401. package/src/cooperation/board.ts +0 -104
  402. package/src/cooperation/collaboration.ts +0 -60
  403. package/src/cooperation/index.ts +0 -6
  404. package/src/cooperation/merge.ts +0 -190
  405. package/src/cooperation/metrics.ts +0 -57
  406. package/src/cooperation/session.ts +0 -131
  407. package/src/cooperation/unified.ts +0 -56
  408. package/src/counter.ts +0 -9
  409. package/src/database/adapter/adapters.ts +0 -35
  410. package/src/database/adapter/index.ts +0 -4
  411. package/src/database/adapter/runtimeSink.ts +0 -74
  412. package/src/database/adapter/sessionStore.ts +0 -32
  413. package/src/database/adapter/turnStore.ts +0 -23
  414. package/src/database/entity/agent.ts +0 -199
  415. package/src/database/entity/entity.ts +0 -1046
  416. package/src/database/entity/handle.ts +0 -79
  417. package/src/database/entity/index.ts +0 -32
  418. package/src/database/entity/message.ts +0 -74
  419. package/src/database/entity/meta.ts +0 -11
  420. package/src/database/entity/object.ts +0 -42
  421. package/src/database/entity/outbox.ts +0 -15
  422. package/src/database/entity/process.ts +0 -65
  423. package/src/database/entity/registry.ts +0 -155
  424. package/src/database/entity/runtimeApproval.ts +0 -30
  425. package/src/database/entity/runtimeSession.ts +0 -13
  426. package/src/database/entity/runtimeTurn.ts +0 -15
  427. package/src/database/entity/thread.ts +0 -85
  428. package/src/database/entity/window.ts +0 -85
  429. package/src/database/entity/worker.ts +0 -90
  430. package/src/database/index.ts +0 -6
  431. package/src/database/repository/addressSpaceRepository.ts +0 -72
  432. package/src/database/repository/agentRepository.ts +0 -460
  433. package/src/database/repository/base.ts +0 -41
  434. package/src/database/repository/executionRepository.ts +0 -477
  435. package/src/database/repository/handleRepository.ts +0 -64
  436. package/src/database/repository/index.ts +0 -20
  437. package/src/database/repository/messageRepository.ts +0 -52
  438. package/src/database/repository/objectRepository.ts +0 -69
  439. package/src/database/repository/outboxRepository.ts +0 -63
  440. package/src/database/repository/processRepository.ts +0 -58
  441. package/src/database/repository/registryRepository.ts +0 -119
  442. package/src/database/repository/repository.ts +0 -491
  443. package/src/database/repository/runtimeApprovalRepository.ts +0 -44
  444. package/src/database/repository/runtimeSessionRepository.ts +0 -27
  445. package/src/database/repository/runtimeTurnRepository.ts +0 -39
  446. package/src/database/repository/socialRepository.ts +0 -185
  447. package/src/database/repository/threadRepository.ts +0 -57
  448. package/src/database/repository/windowRepository.ts +0 -88
  449. package/src/database/repository/workerRepository.ts +0 -69
  450. package/src/database/service/database.ts +0 -90
  451. package/src/database/service/handleService.ts +0 -48
  452. package/src/database/service/index.ts +0 -16
  453. package/src/database/service/messageService.ts +0 -61
  454. package/src/database/service/objectService.ts +0 -59
  455. package/src/database/service/processService.ts +0 -61
  456. package/src/database/service/registryServices.ts +0 -88
  457. package/src/database/service/service.ts +0 -183
  458. package/src/database/service/stepService.ts +0 -53
  459. package/src/database/service/threadService.ts +0 -65
  460. package/src/database/service/windowService.ts +0 -30
  461. package/src/database/service/workerService.ts +0 -57
  462. package/src/database/sql/index.ts +0 -3
  463. package/src/database/sql/schema.ts +0 -418
  464. package/src/database/sql/sql.ts +0 -543
  465. package/src/database/store/database.ts +0 -210
  466. package/src/database/store/index.ts +0 -3
  467. package/src/database/store/store.ts +0 -266
  468. package/src/delegate/index.ts +0 -2
  469. package/src/delegate/team.ts +0 -268
  470. package/src/delegate/teamTypes.ts +0 -47
  471. package/src/diagnosis/checklist.ts +0 -74
  472. package/src/diagnosis/context.ts +0 -93
  473. package/src/diagnosis/frame.ts +0 -256
  474. package/src/diagnosis/index.ts +0 -5
  475. package/src/diagnosis/router.ts +0 -72
  476. package/src/diagnosis/types.ts +0 -89
  477. package/src/error/agentError.ts +0 -16
  478. package/src/error/ampError.ts +0 -20
  479. package/src/error/authzError.ts +0 -14
  480. package/src/error/boundaryRejection.ts +0 -20
  481. package/src/error/index.ts +0 -7
  482. package/src/error/kernelError.ts +0 -27
  483. package/src/error/mailboxError.ts +0 -9
  484. package/src/error/windowError.ts +0 -12
  485. package/src/evaluation/agreement.ts +0 -96
  486. package/src/evaluation/index.ts +0 -2
  487. package/src/evaluation/labels.ts +0 -241
  488. package/src/evidence/evidenceGraph.ts +0 -205
  489. package/src/evidence/index.ts +0 -4
  490. package/src/evidence/revalidation.ts +0 -191
  491. package/src/execution/exec.ts +0 -408
  492. package/src/execution/handles.ts +0 -65
  493. package/src/execution/index.ts +0 -3
  494. package/src/execution/pin.ts +0 -154
  495. package/src/frame/frame.ts +0 -70
  496. package/src/frame/index.ts +0 -1
  497. package/src/goal/goal.ts +0 -43
  498. package/src/goal/index.ts +0 -2
  499. package/src/goal/plan.ts +0 -196
  500. package/src/governance/attentionManifest.ts +0 -802
  501. package/src/governance/audit.ts +0 -362
  502. package/src/governance/budget.ts +0 -628
  503. package/src/governance/context.ts +0 -356
  504. package/src/governance/control.ts +0 -159
  505. package/src/governance/cooperation.ts +0 -479
  506. package/src/governance/credential.ts +0 -359
  507. package/src/governance/httpServer.ts +0 -99
  508. package/src/governance/index.ts +0 -32
  509. package/src/governance/legal.ts +0 -574
  510. package/src/governance/matrix.ts +0 -460
  511. package/src/governance/perspectives.ts +0 -406
  512. package/src/governance/signing.ts +0 -407
  513. package/src/governance/store.ts +0 -125
  514. package/src/governance/switching.ts +0 -459
  515. package/src/governance/toolPolicy.ts +0 -80
  516. package/src/governance/transport.ts +0 -204
  517. package/src/governance/types.ts +0 -380
  518. package/src/governance/workflow.ts +0 -743
  519. package/src/index.ts +0 -11
  520. package/src/interaction/index.ts +0 -1
  521. package/src/interaction/interaction.ts +0 -391
  522. package/src/ipc/index.ts +0 -4
  523. package/src/ipc/mailbox.ts +0 -132
  524. package/src/ipc/memorySocialStore.ts +0 -93
  525. package/src/ipc/social.ts +0 -93
  526. package/src/kernel/index.ts +0 -14
  527. package/src/kernel/scheduler.ts +0 -498
  528. package/src/ledger/checkpoint.ts +0 -304
  529. package/src/ledger/index.ts +0 -4
  530. package/src/ledger/ledger.ts +0 -31
  531. package/src/ledger/persistence.ts +0 -159
  532. package/src/ledger/share.ts +0 -80
  533. package/src/lock/index.ts +0 -2
  534. package/src/lock/lease.ts +0 -74
  535. package/src/main.ts +0 -199
  536. package/src/manifest/agentCard.ts +0 -72
  537. package/src/manifest/cardSign.ts +0 -87
  538. package/src/manifest/federation.ts +0 -237
  539. package/src/manifest/federationTypes.ts +0 -55
  540. package/src/manifest/index.ts +0 -8
  541. package/src/manifest/keys.ts +0 -643
  542. package/src/manifest/manifest.ts +0 -114
  543. package/src/manifest/sign.ts +0 -134
  544. package/src/manifest/trust.ts +0 -146
  545. package/src/mission/index.ts +0 -2
  546. package/src/mission/missionQueue.ts +0 -75
  547. package/src/module/index.ts +0 -9
  548. package/src/module/llm/deepseek.ts +0 -214
  549. package/src/module/llm/llm.ts +0 -84
  550. package/src/module/mcp/client.ts +0 -110
  551. package/src/module/mcp/http.ts +0 -102
  552. package/src/module/mcp/protocol.ts +0 -77
  553. package/src/module/mcp/server.ts +0 -148
  554. package/src/module/mcp/transport.ts +0 -30
  555. package/src/module/mcp/workspaceServer.ts +0 -111
  556. package/src/module/sandbox/sandbox.ts +0 -29
  557. package/src/module/tool/mcpExecutor.ts +0 -54
  558. package/src/module/tool/policy.ts +0 -52
  559. package/src/module/tool/redact.ts +0 -29
  560. package/src/module/tool/tool.ts +0 -53
  561. package/src/module/tool/workspaceExecutor.ts +0 -35
  562. package/src/policy/guard.ts +0 -240
  563. package/src/policy/index.ts +0 -2
  564. package/src/policy/policy.ts +0 -561
  565. package/src/process/agent.ts +0 -341
  566. package/src/process/agentService.ts +0 -236
  567. package/src/process/agentStore.ts +0 -378
  568. package/src/process/executionStore.ts +0 -151
  569. package/src/process/index.ts +0 -5
  570. package/src/process/process.ts +0 -240
  571. package/src/process/transitions.ts +0 -19
  572. package/src/progress/index.ts +0 -2
  573. package/src/progress/progress.ts +0 -85
  574. package/src/protocol/a2a.ts +0 -120
  575. package/src/protocol/channel.ts +0 -44
  576. package/src/protocol/envelope.ts +0 -655
  577. package/src/protocol/httpChannel.ts +0 -87
  578. package/src/protocol/index.ts +0 -6
  579. package/src/protocol/protocol.ts +0 -138
  580. package/src/protocol/wire.ts +0 -60
  581. package/src/receipt/index.ts +0 -1
  582. package/src/receipt/receipt.ts +0 -47
  583. package/src/registry/content.ts +0 -69
  584. package/src/registry/index.ts +0 -23
  585. package/src/registry/registry.ts +0 -599
  586. package/src/runtime/action.ts +0 -87
  587. package/src/runtime/behavior.ts +0 -330
  588. package/src/runtime/behaviorTuning.ts +0 -163
  589. package/src/runtime/cognitiveRuntime.ts +0 -703
  590. package/src/runtime/escalation.ts +0 -35
  591. package/src/runtime/governedTask.ts +0 -233
  592. package/src/runtime/index.ts +0 -15
  593. package/src/runtime/kernelRuntime.ts +0 -144
  594. package/src/runtime/operation.ts +0 -35
  595. package/src/runtime/replay.ts +0 -71
  596. package/src/runtime/routing.ts +0 -58
  597. package/src/runtime/safety.ts +0 -48
  598. package/src/runtime/session.ts +0 -341
  599. package/src/runtime/sessionStore.ts +0 -43
  600. package/src/runtime/telemetry.ts +0 -55
  601. package/src/runtime/turnStore.ts +0 -30
  602. package/src/scenario/index.ts +0 -1
  603. package/src/scenario/scenario.ts +0 -299
  604. package/src/semantic/canonical.ts +0 -24
  605. package/src/semantic/index.ts +0 -2
  606. package/src/semantic/sha256.ts +0 -82
  607. package/src/storage/appendLog.ts +0 -372
  608. package/src/storage/fileAppendSink.ts +0 -40
  609. package/src/storage/index.ts +0 -2
  610. package/src/store/bindCache.ts +0 -22
  611. package/src/store/cache.ts +0 -191
  612. package/src/store/context.ts +0 -31
  613. package/src/store/handleStore.ts +0 -31
  614. package/src/store/index.ts +0 -9
  615. package/src/store/messageStore.ts +0 -31
  616. package/src/store/objectStore.ts +0 -31
  617. package/src/store/processStore.ts +0 -31
  618. package/src/store/threadStore.ts +0 -31
  619. package/src/store/windowStore.ts +0 -31
  620. package/src/structure/abstractSyntaxTree.ts +0 -493
  621. package/src/structure/avlTree.ts +0 -408
  622. package/src/structure/binarySearchTree.ts +0 -352
  623. package/src/structure/binaryTree.ts +0 -525
  624. package/src/structure/bloomFilter.ts +0 -231
  625. package/src/structure/compare.ts +0 -110
  626. package/src/structure/cuckooFilter.ts +0 -337
  627. package/src/structure/deque.ts +0 -223
  628. package/src/structure/filterKey.ts +0 -36
  629. package/src/structure/hash.ts +0 -279
  630. package/src/structure/heap.ts +0 -268
  631. package/src/structure/index.ts +0 -20
  632. package/src/structure/iterator.ts +0 -22
  633. package/src/structure/lru.ts +0 -619
  634. package/src/structure/ordered.ts +0 -399
  635. package/src/structure/priority.ts +0 -915
  636. package/src/structure/queue.ts +0 -168
  637. package/src/structure/redBlackTree.ts +0 -680
  638. package/src/structure/segmentTree.ts +0 -248
  639. package/src/structure/stack.ts +0 -118
  640. package/src/structure/unordered.ts +0 -407
  641. package/src/style.css +0 -278
  642. package/src/thread/index.ts +0 -2
  643. package/src/thread/thread.ts +0 -176
  644. package/src/thread/transitions.ts +0 -17
  645. package/src/types/common.ts +0 -119
  646. package/src/types/index.ts +0 -23
  647. package/src/warrant/epistemic.ts +0 -154
  648. package/src/warrant/index.ts +0 -3
  649. package/src/warrant/inquiry.ts +0 -166
  650. package/src/warrant/warrant.ts +0 -179
  651. package/src/window/compaction.ts +0 -403
  652. package/src/window/compactionTypes.ts +0 -119
  653. package/src/window/index.ts +0 -7
  654. package/src/window/page.ts +0 -18
  655. package/src/window/window.ts +0 -244
  656. package/tools/_helpers.ts +0 -34
  657. package/tools/a2a-check.ts +0 -110
  658. package/tools/a2a-flow-check.ts +0 -78
  659. package/tools/agent-card-check.ts +0 -76
  660. package/tools/agent-check.ts +0 -236
  661. package/tools/agent-store-check.ts +0 -153
  662. package/tools/agreement-check.ts +0 -27
  663. package/tools/annotation-server-check.ts +0 -48
  664. package/tools/annotation-server.ts +0 -230
  665. package/tools/annotation-status.ts +0 -65
  666. package/tools/approval-access-check.ts +0 -66
  667. package/tools/arch-check.ts +0 -72
  668. package/tools/attention-core-check.ts +0 -48
  669. package/tools/attention-resource-check.ts +0 -169
  670. package/tools/audit-check.ts +0 -207
  671. package/tools/authority-check.ts +0 -124
  672. package/tools/authz-check.ts +0 -138
  673. package/tools/bayes-check.ts +0 -162
  674. package/tools/bayes-probe.ts +0 -154
  675. package/tools/behavior-tuning-check.ts +0 -53
  676. package/tools/board-check.ts +0 -87
  677. package/tools/boundary-check.ts +0 -199
  678. package/tools/bundle-trust-check.ts +0 -96
  679. package/tools/calibrate-imported.ts +0 -108
  680. package/tools/calibration-check.ts +0 -44
  681. package/tools/calibration-registry-check.ts +0 -40
  682. package/tools/calibration-sim.ts +0 -40
  683. package/tools/card-sign-check.ts +0 -71
  684. package/tools/card-trust-check.ts +0 -78
  685. package/tools/channel-check.ts +0 -86
  686. package/tools/checkpoint-check.ts +0 -620
  687. package/tools/cleanup-style-configs.ts +0 -29
  688. package/tools/cognition-check.ts +0 -648
  689. package/tools/cognitive-runtime-check.ts +0 -609
  690. package/tools/collaboration-demo.ts +0 -78
  691. package/tools/compaction-check.ts +0 -266
  692. package/tools/concept-check.ts +0 -260
  693. package/tools/concurrency-check.ts +0 -242
  694. package/tools/conformance-runtime.ts +0 -389
  695. package/tools/conformance.ts +0 -651
  696. package/tools/context-ast-check.ts +0 -90
  697. package/tools/context-ast-deepseek.ts +0 -242
  698. package/tools/context-graph-bench.ts +0 -50
  699. package/tools/context-graph-check.ts +0 -229
  700. package/tools/context-index-check.ts +0 -48
  701. package/tools/context-lifecycle-check.ts +0 -69
  702. package/tools/context-projection-check.ts +0 -73
  703. package/tools/context-scope-check.ts +0 -134
  704. package/tools/context-storage-check.ts +0 -113
  705. package/tools/cooperation-check.ts +0 -517
  706. package/tools/cooperation-http-check.ts +0 -125
  707. package/tools/deepseek-llm-check.ts +0 -147
  708. package/tools/deepseek-probe.ts +0 -494
  709. package/tools/diagnosis-check.ts +0 -109
  710. package/tools/diagnosis-router-check.ts +0 -50
  711. package/tools/document-context-check.ts +0 -237
  712. package/tools/envelope-check.ts +0 -659
  713. package/tools/eslint-rules/index.ts +0 -26
  714. package/tools/eslint-rules/rules/jsdoc-comment-format.ts +0 -105
  715. package/tools/eslint-rules/rules/no-function-keyword.ts +0 -60
  716. package/tools/eslint-rules/rules/no-multiline-parameters.ts +0 -71
  717. package/tools/eslint-rules/rules/no-multiline-type-parameters.ts +0 -57
  718. package/tools/eslint-rules/rules/no-undefined-comparison.ts +0 -115
  719. package/tools/eslint-rules/rules/prefer-template-for-string-conversion.ts +0 -97
  720. package/tools/eslint-rules/rules/require-typeof-parentheses.ts +0 -49
  721. package/tools/eslint-rules/rules/require-variable-type.ts +0 -36
  722. package/tools/eslint-rules/rules/variable-naming.ts +0 -175
  723. package/tools/eval-recorded-replay.ts +0 -215
  724. package/tools/eval-replay.ts +0 -139
  725. package/tools/eval-summary.ts +0 -136
  726. package/tools/evidence-revalidation-check.ts +0 -235
  727. package/tools/exec-check.ts +0 -217
  728. package/tools/federation-check.ts +0 -166
  729. package/tools/federation-demo.ts +0 -45
  730. package/tools/filter-check.ts +0 -243
  731. package/tools/governance-check.ts +0 -680
  732. package/tools/governance-store-check.ts +0 -131
  733. package/tools/governed-task-check.ts +0 -227
  734. package/tools/guard-check.ts +0 -122
  735. package/tools/http-channel-check.ts +0 -125
  736. package/tools/import-campaign.ts +0 -28
  737. package/tools/inquiry-check.ts +0 -126
  738. package/tools/interaction-check.ts +0 -171
  739. package/tools/interrupts-check.ts +0 -173
  740. package/tools/ipc-check.ts +0 -170
  741. package/tools/kernel-async-check.ts +0 -136
  742. package/tools/kernel-check.ts +0 -369
  743. package/tools/kernel-runtime-check.ts +0 -276
  744. package/tools/keys-check.ts +0 -559
  745. package/tools/label-audit.ts +0 -70
  746. package/tools/labels-workflow-check.ts +0 -49
  747. package/tools/linear-structure-check.ts +0 -524
  748. package/tools/live-exec.ts +0 -62
  749. package/tools/live-governance-eval.ts +0 -813
  750. package/tools/live-legacy.ts +0 -50
  751. package/tools/lru-check.ts +0 -182
  752. package/tools/make-annotation-campaign.ts +0 -57
  753. package/tools/mcp-executor-check.ts +0 -33
  754. package/tools/merge-annotations.ts +0 -32
  755. package/tools/merge-check.ts +0 -98
  756. package/tools/metrics-check.ts +0 -84
  757. package/tools/net-probe.ts +0 -107
  758. package/tools/oauth-probe.ts +0 -117
  759. package/tools/outbox-check.ts +0 -50
  760. package/tools/persistence-check.ts +0 -144
  761. package/tools/pin-check.ts +0 -116
  762. package/tools/platform-check.ts +0 -281
  763. package/tools/policy-check.ts +0 -514
  764. package/tools/prettier-plugin/index.mts +0 -84
  765. package/tools/priority-check.ts +0 -627
  766. package/tools/probe-context7.ts +0 -63
  767. package/tools/registry-check.ts +0 -252
  768. package/tools/reliability-check.ts +0 -25
  769. package/tools/retry-check.ts +0 -85
  770. package/tools/rewrite-declaration-extensions.ts +0 -98
  771. package/tools/runtime-check.ts +0 -165
  772. package/tools/runtime-deepseek-check.ts +0 -85
  773. package/tools/runtime-eval.ts +0 -358
  774. package/tools/scenario-check.ts +0 -161
  775. package/tools/scenario-incident.ts +0 -162
  776. package/tools/scoped-priors-check.ts +0 -35
  777. package/tools/scoped-priors-pooling.ts +0 -34
  778. package/tools/segment-ast-check.ts +0 -649
  779. package/tools/session-check.ts +0 -196
  780. package/tools/session-store-check.ts +0 -73
  781. package/tools/share-check.ts +0 -88
  782. package/tools/sign-check.ts +0 -95
  783. package/tools/signing-check.ts +0 -275
  784. package/tools/snapshot-demo.ts +0 -65
  785. package/tools/social-check.ts +0 -146
  786. package/tools/structure-compare-check.ts +0 -95
  787. package/tools/support/documentScanner.ts +0 -577
  788. package/tools/support/texScanner.ts +0 -631
  789. package/tools/support/workspaceScanner.ts +0 -476
  790. package/tools/team-check.ts +0 -163
  791. package/tools/team-demo.ts +0 -36
  792. package/tools/telemetry-check.ts +0 -44
  793. package/tools/tex-context-check.ts +0 -263
  794. package/tools/tool-gate-check.ts +0 -98
  795. package/tools/tree-structure-check.ts +0 -786
  796. package/tools/trust-flow-check.ts +0 -158
  797. package/tools/turn-store-check.ts +0 -57
  798. package/tools/unified-check.ts +0 -83
  799. package/tools/validate.ts +0 -309
  800. package/tools/wire-check.ts +0 -96
  801. package/tools/workspace-agent-check.ts +0 -486
  802. package/tools/workspace-agent-demo.ts +0 -62
  803. package/tools/workspace-agent-server.ts +0 -101
  804. package/tools/workspace-context-check.ts +0 -331
  805. package/tools/workspace-context.ts +0 -131
  806. package/tsconfig.build.json +0 -14
  807. package/tsconfig.json +0 -24
  808. package/tsconfig.tools.json +0 -31
  809. 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;