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,148 @@
1
+ /**
2
+ * UTF-8 byte offsets for 1-based line ranges.
3
+ *
4
+ * Outline ranges are persisted and compared across tools, so they use UTF-8
5
+ * byte offsets, matching tree-sitter and SCIP, rather than JavaScript string
6
+ * indices (UTF-16 code units). The segment tree stores the byte length of every
7
+ * line and answers "where does line N start?" as a prefix sum in O(log n),
8
+ * which keeps large-book outlines from rebuilding a byte table per node.
9
+ *
10
+ * Line extents are half-open on bytes (`endByte` is the first byte after the
11
+ * range) and inclusive on lines (`endLine` is the last covered line). A line's
12
+ * byte span includes its trailing newline so consecutive ranges tile the file
13
+ * without gaps.
14
+ */
15
+ import { SegmentTree } from "../structure/segmentTree.js";
16
+ const startsOf = (text) => {
17
+ if (text.length === 0) {
18
+ return [];
19
+ }
20
+ const starts = [0];
21
+ for (let index = 0; index < text.length; index += 1) {
22
+ if (text.charCodeAt(index) === 10 && index + 1 < text.length) {
23
+ starts.push(index + 1);
24
+ }
25
+ }
26
+ return starts;
27
+ };
28
+ export class ByteLineIndex {
29
+ tree;
30
+ starts;
31
+ text;
32
+ total;
33
+ /**
34
+ * Bytes before the decoded text (a UTF-8/UTF-16 BOM). Symbol ranges are
35
+ * offsets in the original file, while the decoded text starts after the
36
+ * marker; adding the base here keeps both coordinate systems consistent.
37
+ */
38
+ base;
39
+ constructor(text, bomBytes = 0) {
40
+ this.text = text;
41
+ this.base = Number.isSafeInteger(bomBytes) && bomBytes > 0 ? bomBytes : 0;
42
+ this.starts = startsOf(text);
43
+ const lengths = [];
44
+ for (let index = 0; index < this.starts.length; index += 1) {
45
+ const from = this.starts[index];
46
+ const to = index + 1 < this.starts.length ? this.starts[index + 1] : text.length;
47
+ lengths.push(Buffer.byteLength(text.slice(from, to), "utf8"));
48
+ }
49
+ this.total = BigInt(Buffer.byteLength(text, "utf8") + this.base);
50
+ this.tree = new SegmentTree({
51
+ size: lengths.length,
52
+ operation: (left, right) => left + right,
53
+ identity: 0,
54
+ values: lengths,
55
+ });
56
+ }
57
+ /**
58
+ * Number of logical lines. The empty file has zero lines.
59
+ */
60
+ get lineCount() {
61
+ return this.starts.length;
62
+ }
63
+ /**
64
+ * Start byte offset of a 1-based line. Lines past EOF clamp to the end.
65
+ */
66
+ startByte(line) {
67
+ if (line <= 1) {
68
+ return BigInt(this.base);
69
+ }
70
+ const last = this.starts.length;
71
+ if (line > last) {
72
+ return this.total;
73
+ }
74
+ return BigInt(this.base + this.tree.query(0, line - 1));
75
+ }
76
+ /**
77
+ * Half-open end byte offset for an inclusive line.
78
+ */
79
+ endByte(line) {
80
+ return this.startByte(line + 1);
81
+ }
82
+ /**
83
+ * Byte length of the whole text.
84
+ */
85
+ byteLength() {
86
+ return this.total;
87
+ }
88
+ /**
89
+ * Build a half-open byte / inclusive line range. Inputs are clamped so a
90
+ * parser can be approximate without producing an invalid range.
91
+ */
92
+ range(startLine, endLine) {
93
+ const start = Math.max(1, Math.min(startLine, Math.max(1, this.starts.length)));
94
+ const end = Math.max(start, Math.min(endLine, Math.max(1, this.starts.length)));
95
+ return {
96
+ startByte: this.startByte(start),
97
+ endByte: this.endByte(end),
98
+ startLine: BigInt(start),
99
+ endLine: BigInt(end),
100
+ };
101
+ }
102
+ /**
103
+ * Range covering the entire text; used for a file anchor.
104
+ */
105
+ fullRange() {
106
+ return {
107
+ startByte: 0n,
108
+ endByte: this.total,
109
+ startLine: 1n,
110
+ endLine: BigInt(Math.max(1, this.starts.length)),
111
+ };
112
+ }
113
+ /**
114
+ * Source slice for a range, useful for a `detail`/signature preview.
115
+ */
116
+ slice(range) {
117
+ const from = this.offsetOf(range.startByte);
118
+ const to = this.offsetOf(range.endByte);
119
+ return this.text.slice(from, to);
120
+ }
121
+ offsetOf(byteOffset) {
122
+ if (byteOffset <= 0n) {
123
+ return 0;
124
+ }
125
+ const target = Number(byteOffset);
126
+ if (!Number.isSafeInteger(target) || target >= Number(this.total)) {
127
+ return this.text.length;
128
+ }
129
+ /**
130
+ * Line starts are already sorted, so a binary search over the byte
131
+ * prefix positions is cheaper than another tree walk for one offset.
132
+ */
133
+ let low = 0;
134
+ let high = this.starts.length - 1;
135
+ while (low < high) {
136
+ const mid = Math.ceil((low + high) / 2);
137
+ const midByte = Number(this.startByte(mid + 1));
138
+ if (midByte <= target) {
139
+ low = mid;
140
+ }
141
+ else {
142
+ high = mid - 1;
143
+ }
144
+ }
145
+ const lineStartByte = Number(this.startByte(low + 1));
146
+ return this.starts[low] + (target - lineStartByte);
147
+ }
148
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Charset detection, decoding and line indexing.
3
+ *
4
+ * Detection is deliberately conservative. A file that does not decode as
5
+ * UTF-8/UTF-16 is only treated as Latin-1 when it looks like text; anything
6
+ * with NUL bytes or a high control-character ratio is `binary`, because
7
+ * guessing an encoding is how a tool silently corrupts a file on write.
8
+ */
9
+ import type { Charset } from "./types.js";
10
+ /**
11
+ * Result of sniffing a byte sequence. `bomLength` is the number of leading
12
+ * bytes that are part of the encoding marker and must not appear in the text.
13
+ */
14
+ export interface DetectedCharset {
15
+ readonly charset: Charset;
16
+ readonly bomLength: number;
17
+ readonly binary: boolean;
18
+ }
19
+ /**
20
+ * Sniff a byte sequence.
21
+ *
22
+ * @param bytes - Raw file bytes.
23
+ * @returns Charset, BOM length and whether the content is binary.
24
+ */
25
+ export declare const detectCharset: (bytes: Uint8Array) => DetectedCharset;
26
+ /**
27
+ * Decode bytes with a declared charset. `binary` and `none` are refused: a
28
+ * caller must decide whether base64 is the right transport.
29
+ *
30
+ * @param bytes - Raw bytes.
31
+ * @param charset - Charset from detection or node metadata.
32
+ * @returns Decoded text without a BOM.
33
+ */
34
+ export declare const decodeText: (bytes: Uint8Array, charset: Charset) => string;
35
+ /**
36
+ * Encode text for a write. The returned bytes include the BOM for
37
+ * `utf-8-bom`/UTF-16 encodings, so a caller can write them verbatim.
38
+ *
39
+ * @param text - Text to encode.
40
+ * @param encoding - Target encoding; defaults to strict UTF-8.
41
+ * @returns Encoded bytes.
42
+ */
43
+ export declare const encodeText: (text: string, encoding?: "utf-8" | "utf-8-bom" | "utf-16le" | "utf-16be" | "latin1") => Uint8Array;
44
+ /**
45
+ * Count logical lines. The empty file has zero lines; a trailing newline does
46
+ * not add a phantom empty line, matching how editors number a file.
47
+ *
48
+ * @param text - Decoded text.
49
+ * @returns Line count as a bigint.
50
+ */
51
+ export declare const countLines: (text: string) => bigint;
52
+ /**
53
+ * Lazily-built newline index over one decoded text.
54
+ *
55
+ * Offsets are JavaScript string indices (UTF-16 code units), which is exactly
56
+ * what `String.prototype.slice` consumes. Byte offsets are intentionally not
57
+ * stored: a caller that needs bytes uses `Buffer.byteLength` on the slice.
58
+ */
59
+ export declare class LineIndex {
60
+ private readonly text;
61
+ private offsets;
62
+ constructor(text: string);
63
+ /**
64
+ * Number of lines in the text.
65
+ */
66
+ get count(): number;
67
+ private starts;
68
+ /**
69
+ * Start offset of a 1-based line; lines past the end clamp to EOF.
70
+ */
71
+ start(line: number): number;
72
+ /**
73
+ * End offset (exclusive) of a 1-based line, including its newline.
74
+ */
75
+ end(line: number): number;
76
+ /**
77
+ * Slice a bounded run of lines.
78
+ *
79
+ * @param startLine - 1-based inclusive start.
80
+ * @param maxLines - Maximum number of lines.
81
+ * @returns Text without a trailing newline plus the inclusive range.
82
+ */
83
+ slice(startLine: number, maxLines: number): {
84
+ text: string;
85
+ startLine: number;
86
+ endLine: number;
87
+ };
88
+ }
@@ -0,0 +1,276 @@
1
+ import { fail } from "../file/errors.js";
2
+ const Utf8Bom = [0xef, 0xbb, 0xbf];
3
+ const Utf16LeBom = [0xff, 0xfe];
4
+ const Utf16BeBom = [0xfe, 0xff];
5
+ const startsWith = (bytes, prefix) => {
6
+ if (bytes.length < prefix.length) {
7
+ return false;
8
+ }
9
+ for (let index = 0; index < prefix.length; index += 1) {
10
+ if (bytes[index] !== prefix[index]) {
11
+ return false;
12
+ }
13
+ }
14
+ return true;
15
+ };
16
+ const isUtf8 = (bytes) => {
17
+ try {
18
+ new TextDecoder("utf-8", { fatal: true }).decode(bytes);
19
+ return true;
20
+ }
21
+ catch {
22
+ return false;
23
+ }
24
+ };
25
+ /**
26
+ * Heuristic for BOM-less UTF-16: sample ASCII code units and count NULs on
27
+ * each byte lane. A binary file with many NULs usually fails both lanes.
28
+ */
29
+ const detectUtf16WithoutBom = (bytes) => {
30
+ if (bytes.length < 8 || bytes.length % 2 !== 0) {
31
+ return undefined;
32
+ }
33
+ const sample = Math.min(bytes.length, 512);
34
+ let evenNul = 0;
35
+ let oddNul = 0;
36
+ let evenTotal = 0;
37
+ let oddTotal = 0;
38
+ for (let index = 0; index + 1 < sample; index += 2) {
39
+ evenTotal += 1;
40
+ oddTotal += 1;
41
+ if (bytes[index] === 0) {
42
+ evenNul += 1;
43
+ }
44
+ if (bytes[index + 1] === 0) {
45
+ oddNul += 1;
46
+ }
47
+ }
48
+ if (oddNul / oddTotal > 0.6 && evenNul / evenTotal < 0.1) {
49
+ return "utf-16le";
50
+ }
51
+ if (evenNul / evenTotal > 0.6 && oddNul / oddTotal < 0.1) {
52
+ return "utf-16be";
53
+ }
54
+ return undefined;
55
+ };
56
+ /**
57
+ * Control-character ratio over the first 8 KiB. Tab/newline/carriage return are
58
+ * text; other C0 controls usually mean a container format.
59
+ */
60
+ const controlRatio = (bytes) => {
61
+ const sample = Math.min(bytes.length, 8192);
62
+ let controls = 0;
63
+ for (let index = 0; index < sample; index += 1) {
64
+ const byte = bytes[index];
65
+ if (byte < 0x20 && byte !== 0x09 && byte !== 0x0a && byte !== 0x0d) {
66
+ controls += 1;
67
+ }
68
+ }
69
+ return sample === 0 ? 0 : controls / sample;
70
+ };
71
+ /**
72
+ * Sniff a byte sequence.
73
+ *
74
+ * @param bytes - Raw file bytes.
75
+ * @returns Charset, BOM length and whether the content is binary.
76
+ */
77
+ export const detectCharset = (bytes) => {
78
+ if (bytes.length === 0) {
79
+ return { charset: "utf-8", bomLength: 0, binary: false };
80
+ }
81
+ if (startsWith(bytes, Utf8Bom)) {
82
+ return { charset: "utf-8-bom", bomLength: Utf8Bom.length, binary: false };
83
+ }
84
+ if (startsWith(bytes, Utf16LeBom)) {
85
+ return { charset: "utf-16le", bomLength: Utf16LeBom.length, binary: false };
86
+ }
87
+ if (startsWith(bytes, Utf16BeBom)) {
88
+ return { charset: "utf-16be", bomLength: Utf16BeBom.length, binary: false };
89
+ }
90
+ const utf16 = detectUtf16WithoutBom(bytes);
91
+ if (utf16 !== undefined) {
92
+ return { charset: utf16, bomLength: 0, binary: false };
93
+ }
94
+ if (isUtf8(bytes)) {
95
+ return { charset: "utf-8", bomLength: 0, binary: controlRatio(bytes) > 0.05 };
96
+ }
97
+ return { charset: "latin1", bomLength: 0, binary: controlRatio(bytes) > 0.05 };
98
+ };
99
+ /**
100
+ * Decode bytes with a declared charset. `binary` and `none` are refused: a
101
+ * caller must decide whether base64 is the right transport.
102
+ *
103
+ * @param bytes - Raw bytes.
104
+ * @param charset - Charset from detection or node metadata.
105
+ * @returns Decoded text without a BOM.
106
+ */
107
+ export const decodeText = (bytes, charset) => {
108
+ switch (charset) {
109
+ case "utf-8": {
110
+ return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
111
+ }
112
+ case "utf-8-bom": {
113
+ const bom = detectCharset(bytes);
114
+ const body = bom.bomLength === 0 ? bytes : bytes.subarray(bom.bomLength);
115
+ return new TextDecoder("utf-8", { fatal: true }).decode(body);
116
+ }
117
+ case "utf-16le": {
118
+ const body = startsWith(bytes, Utf16LeBom) ? bytes.subarray(2) : bytes;
119
+ return new TextDecoder("utf-16le", { fatal: true }).decode(body);
120
+ }
121
+ case "utf-16be": {
122
+ const body = startsWith(bytes, Utf16BeBom) ? bytes.subarray(2) : bytes;
123
+ return new TextDecoder("utf-16be", { fatal: true }).decode(body);
124
+ }
125
+ case "latin1": {
126
+ return Buffer.from(bytes).toString("latin1");
127
+ }
128
+ case "binary":
129
+ case "none": {
130
+ return fail("binary_file");
131
+ }
132
+ default: {
133
+ return fail("charset_unsupported");
134
+ }
135
+ }
136
+ };
137
+ /**
138
+ * Encode text for a write. The returned bytes include the BOM for
139
+ * `utf-8-bom`/UTF-16 encodings, so a caller can write them verbatim.
140
+ *
141
+ * @param text - Text to encode.
142
+ * @param encoding - Target encoding; defaults to strict UTF-8.
143
+ * @returns Encoded bytes.
144
+ */
145
+ export const encodeText = (text, encoding = "utf-8") => {
146
+ switch (encoding) {
147
+ case "utf-8": {
148
+ return new TextEncoder().encode(text);
149
+ }
150
+ case "utf-8-bom": {
151
+ const body = new TextEncoder().encode(text);
152
+ const result = new Uint8Array(body.length + 3);
153
+ result.set(Utf8Bom);
154
+ result.set(body, 3);
155
+ return result;
156
+ }
157
+ case "utf-16le": {
158
+ const body = Buffer.from(text, "utf16le");
159
+ return new Uint8Array(Buffer.concat([Buffer.from(Utf16LeBom), body]));
160
+ }
161
+ case "utf-16be": {
162
+ const body = Buffer.from(text, "utf16le");
163
+ body.swap16();
164
+ return new Uint8Array(Buffer.concat([Buffer.from(Utf16BeBom), body]));
165
+ }
166
+ case "latin1": {
167
+ if ([...text].some((character) => character.codePointAt(0) > 0xff)) {
168
+ return fail("charset_unsupported");
169
+ }
170
+ return new Uint8Array(Buffer.from(text, "latin1"));
171
+ }
172
+ default: {
173
+ return fail("charset_unsupported");
174
+ }
175
+ }
176
+ };
177
+ /**
178
+ * Count logical lines. The empty file has zero lines; a trailing newline does
179
+ * not add a phantom empty line, matching how editors number a file.
180
+ *
181
+ * @param text - Decoded text.
182
+ * @returns Line count as a bigint.
183
+ */
184
+ export const countLines = (text) => {
185
+ if (text.length === 0) {
186
+ return 0n;
187
+ }
188
+ let count = 0n;
189
+ for (let index = 0; index < text.length; index += 1) {
190
+ if (text.charCodeAt(index) === 10) {
191
+ count += 1n;
192
+ }
193
+ }
194
+ if (text.charCodeAt(text.length - 1) !== 10) {
195
+ count += 1n;
196
+ }
197
+ return count;
198
+ };
199
+ /**
200
+ * Lazily-built newline index over one decoded text.
201
+ *
202
+ * Offsets are JavaScript string indices (UTF-16 code units), which is exactly
203
+ * what `String.prototype.slice` consumes. Byte offsets are intentionally not
204
+ * stored: a caller that needs bytes uses `Buffer.byteLength` on the slice.
205
+ */
206
+ export class LineIndex {
207
+ text;
208
+ offsets;
209
+ constructor(text) {
210
+ this.text = text;
211
+ }
212
+ /**
213
+ * Number of lines in the text.
214
+ */
215
+ get count() {
216
+ return this.starts().length;
217
+ }
218
+ starts() {
219
+ if (this.offsets !== undefined) {
220
+ return this.offsets;
221
+ }
222
+ const starts = [];
223
+ if (this.text.length > 0) {
224
+ starts.push(0);
225
+ for (let index = 0; index < this.text.length; index += 1) {
226
+ if (this.text.charCodeAt(index) === 10 && index + 1 < this.text.length) {
227
+ starts.push(index + 1);
228
+ }
229
+ }
230
+ }
231
+ this.offsets = starts;
232
+ return starts;
233
+ }
234
+ /**
235
+ * Start offset of a 1-based line; lines past the end clamp to EOF.
236
+ */
237
+ start(line) {
238
+ const starts = this.starts();
239
+ if (line <= 1) {
240
+ return 0;
241
+ }
242
+ return starts[Math.min(line - 1, starts.length)] ?? this.text.length;
243
+ }
244
+ /**
245
+ * End offset (exclusive) of a 1-based line, including its newline.
246
+ */
247
+ end(line) {
248
+ return this.start(line + 1);
249
+ }
250
+ /**
251
+ * Slice a bounded run of lines.
252
+ *
253
+ * @param startLine - 1-based inclusive start.
254
+ * @param maxLines - Maximum number of lines.
255
+ * @returns Text without a trailing newline plus the inclusive range.
256
+ */
257
+ slice(startLine, maxLines) {
258
+ const starts = this.starts();
259
+ const total = starts.length;
260
+ if (total === 0 || startLine > total) {
261
+ return { text: "", startLine, endLine: startLine - 1 };
262
+ }
263
+ const first = Math.max(1, startLine);
264
+ const last = Math.min(total, first + Math.max(1, maxLines) - 1);
265
+ const from = starts[first - 1];
266
+ const to = last < total ? starts[last] : this.text.length;
267
+ let text = this.text.slice(from, to);
268
+ if (text.endsWith("\n")) {
269
+ text = text.slice(0, -1);
270
+ }
271
+ if (text.endsWith("\r")) {
272
+ text = text.slice(0, -1);
273
+ }
274
+ return { text, startLine: first, endLine: last };
275
+ }
276
+ }
@@ -0,0 +1,6 @@
1
+ /** Source encodings, byte/line indexing and bounded concrete syntax trees. */
2
+ export * from "./types.js";
3
+ export * from "./charset.js";
4
+ export * from "./byteIndex.js";
5
+ export * from "./syntaxTree.js";
6
+ export type { SyntaxFamily, SyntaxRule } from "./syntaxRegistry.js";
@@ -0,0 +1,5 @@
1
+ /** Source encodings, byte/line indexing and bounded concrete syntax trees. */
2
+ export * from "./types.js";
3
+ export * from "./charset.js";
4
+ export * from "./byteIndex.js";
5
+ export * from "./syntaxTree.js";
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Syntax registry.
3
+ *
4
+ * Languages, token categories and node categories are data, not three frozen
5
+ * unions spread across the parser. A host can add a language (or override an
6
+ * extension) without editing `syntaxTree.ts`; the parser only asks the registry
7
+ * for the language definition and the allowed token/node ids it already knows
8
+ * how to construct.
9
+ *
10
+ * The three public type aliases stay plain strings on purpose: the registry is
11
+ * the authority, so a value that did not pass `register*` is rejected at the
12
+ * boundary instead of being accepted by the type system and failing later.
13
+ */
14
+ import type { SourceRange as OutlineRange } from "./types.js";
15
+ /**
16
+ * Registered language id. Built-ins include `typescript`, `python`, `html`,
17
+ * `vue`, `json`, `markdown`, `tex` and `plainText`.
18
+ */
19
+ export type SyntaxLanguage = string;
20
+ /**
21
+ * Registered token id. Built-ins: `keyword`, `identifier`, `number`, `string`,
22
+ * `comment`, `punctuation`, `text`.
23
+ */
24
+ export type SyntaxTokenKind = string;
25
+ /**
26
+ * Registered node id. Built-ins: `SourceFile`, `Block`, `Declaration`, `Class`,
27
+ * `Interface`, `Struct`, `Trait`, `Enum`, `Namespace`, `Function`, `Method`,
28
+ * `Property`, `Import`, `Export`, `Parameter`, `Tag`, `Attribute`, `Text`,
29
+ * `Heading`, `Rule`, `Comment`.
30
+ */
31
+ export type SyntaxNodeKind = string;
32
+ /**
33
+ * Coarse parser family. It selects the tree builder, not the language id.
34
+ */
35
+ export type SyntaxFamily = "code" | "python" | "markup" | "text" | "json" | "style";
36
+ /**
37
+ * One language definition.
38
+ */
39
+ export interface SyntaxLanguageDefinition {
40
+ readonly id: SyntaxLanguage;
41
+ readonly family: SyntaxFamily;
42
+ readonly extensions: readonly string[];
43
+ readonly lineComment?: string;
44
+ readonly blockStart?: string;
45
+ readonly blockEnd?: string;
46
+ readonly keywords?: readonly string[];
47
+ }
48
+ /**
49
+ * One token-category definition.
50
+ */
51
+ export interface SyntaxTokenKindDefinition {
52
+ readonly id: SyntaxTokenKind;
53
+ readonly description: string;
54
+ }
55
+ /**
56
+ * One node-category definition.
57
+ */
58
+ export interface SyntaxNodeKindDefinition {
59
+ readonly id: SyntaxNodeKind;
60
+ readonly category: "container" | "declaration" | "token" | "markup" | "text";
61
+ }
62
+ /**
63
+ * Lexical rules derived from one language definition.
64
+ */
65
+ export interface SyntaxRule {
66
+ readonly lineComment?: string;
67
+ readonly blockStart?: string;
68
+ readonly blockEnd?: string;
69
+ readonly family: SyntaxFamily;
70
+ }
71
+ /**
72
+ * A mutable registry with duplicate and shape checks. The default instance is
73
+ * populated once at module load; `createSyntaxRegistry()` returns an empty one
74
+ * for a host that wants a different catalog.
75
+ */
76
+ export declare class SyntaxRegistry {
77
+ private readonly languageById;
78
+ private readonly languageByExtension;
79
+ private readonly tokenKinds;
80
+ private readonly nodeKinds;
81
+ /**
82
+ * Register one language. An empty id, a duplicate id, a duplicate
83
+ * extension, an invalid extension or an unknown family is rejected.
84
+ */
85
+ registerLanguage(definition: SyntaxLanguageDefinition): this;
86
+ /**
87
+ * Register a token category.
88
+ */
89
+ registerTokenKind(definition: SyntaxTokenKindDefinition): this;
90
+ /**
91
+ * Register a node category.
92
+ */
93
+ registerNodeKind(definition: SyntaxNodeKindDefinition): this;
94
+ /**
95
+ * Look up a language by id.
96
+ */
97
+ language(id: SyntaxLanguage): SyntaxLanguageDefinition | undefined;
98
+ /**
99
+ * Resolve a path's extension. Unknown extensions return `unknown`; a path
100
+ * without an extension returns `plainText`.
101
+ */
102
+ languageOf(path: string): SyntaxLanguage;
103
+ /**
104
+ * Rule object consumed by the tokenizer.
105
+ */
106
+ ruleOf(language: SyntaxLanguage): SyntaxRule;
107
+ /**
108
+ * Keyword set for one language.
109
+ */
110
+ keywordsOf(language: SyntaxLanguage): ReadonlySet<string>;
111
+ /**
112
+ * All registered languages, in registration order.
113
+ */
114
+ languages(): SyntaxLanguageDefinition[];
115
+ /**
116
+ * All registered token kinds.
117
+ */
118
+ tokenKindsList(): SyntaxTokenKindDefinition[];
119
+ /**
120
+ * All registered node kinds.
121
+ */
122
+ nodeKindsList(): SyntaxNodeKindDefinition[];
123
+ /**
124
+ * Whether every id is registered.
125
+ */
126
+ hasTokenKind(id: SyntaxTokenKind): boolean;
127
+ /**
128
+ * Whether every id is registered.
129
+ */
130
+ hasNodeKind(id: SyntaxNodeKind): boolean;
131
+ }
132
+ /**
133
+ * The process-wide catalog used by the parser. It is frozen after module load;
134
+ * a host that needs a different catalog builds one with
135
+ * `createSyntaxRegistry()` and registers it explicitly.
136
+ */
137
+ export declare const DefaultSyntaxRegistry: SyntaxRegistry;
138
+ /**
139
+ * Create an empty registry for a host that wants to register a custom catalog.
140
+ */
141
+ export declare const createSyntaxRegistry: () => SyntaxRegistry;
142
+ /**
143
+ * Convenience wrapper over the default catalog.
144
+ */
145
+ export declare const syntaxLanguageOf: (path: string) => SyntaxLanguage;
146
+ /**
147
+ * A range used by syntax tokens/nodes; re-exported for callers that only import
148
+ * the registry module.
149
+ */
150
+ export type SyntaxRange = OutlineRange;