attention-manifest-protocol 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (827) hide show
  1. package/CHANGELOG.md +341 -293
  2. package/CHANGELOG.zh-CN.md +41 -8
  3. package/README.md +250 -171
  4. package/README.zh-CN.md +251 -171
  5. package/lib/assignment/assign.d.ts +102 -0
  6. package/lib/assignment/assign.js +556 -0
  7. package/lib/assignment/binding.d.ts +103 -0
  8. package/lib/assignment/binding.js +575 -0
  9. package/lib/assignment/errors.d.ts +14 -0
  10. package/lib/assignment/errors.js +16 -0
  11. package/lib/assignment/guards.d.ts +18 -0
  12. package/lib/assignment/guards.js +28 -0
  13. package/lib/assignment/index.d.ts +10 -0
  14. package/lib/assignment/index.js +10 -0
  15. package/lib/assignment/types.d.ts +169 -0
  16. package/lib/assignment/types.js +1 -0
  17. package/lib/attention/budget.d.ts +1 -1
  18. package/lib/attention/budget.js +31 -9
  19. package/lib/bayes/engine.js +2 -1
  20. package/lib/bayes/reliability.js +25 -10
  21. package/lib/boundary/frame.d.ts +10 -4
  22. package/lib/boundary/frame.js +346 -109
  23. package/lib/boundary/kinds.d.ts +11 -0
  24. package/lib/boundary/kinds.js +33 -0
  25. package/lib/boundary/refTable.d.ts +19 -9
  26. package/lib/boundary/refTable.js +128 -30
  27. package/lib/boundary/toolCall.d.ts +22 -10
  28. package/lib/boundary/toolCall.js +798 -97
  29. package/lib/concept/conceptBudget.js +10 -1
  30. package/lib/concurrency/idempotency.d.ts +4 -3
  31. package/lib/concurrency/idempotency.js +57 -13
  32. package/lib/concurrency/retry.js +18 -3
  33. package/lib/context/agentContext.d.ts +13 -0
  34. package/lib/context/agentContext.js +14 -1
  35. package/lib/context/ast.d.ts +4 -1
  36. package/lib/context/ast.js +13 -3
  37. package/lib/context/contentStore.js +22 -9
  38. package/lib/context/contextBuilder.d.ts +457 -0
  39. package/lib/context/contextBuilder.js +1395 -0
  40. package/lib/context/contextPackage.d.ts +214 -0
  41. package/lib/context/contextPackage.js +191 -0
  42. package/lib/context/index.d.ts +14 -3
  43. package/lib/context/index.js +9 -1
  44. package/lib/context/relevance.d.ts +171 -0
  45. package/lib/context/relevance.js +250 -0
  46. package/lib/context/workspaceDiff.d.ts +105 -0
  47. package/lib/context/workspaceDiff.js +238 -0
  48. package/lib/context/workspaceService.d.ts +236 -1
  49. package/lib/context/workspaceService.js +1501 -73
  50. package/lib/cooperation/collaboration.d.ts +9 -0
  51. package/lib/cooperation/session.d.ts +4 -4
  52. package/lib/cooperation/session.js +3 -3
  53. package/lib/database/adapter/filesystemStore.d.ts +145 -0
  54. package/lib/database/adapter/filesystemStore.js +321 -0
  55. package/lib/database/adapter/index.d.ts +2 -0
  56. package/lib/database/adapter/index.js +2 -0
  57. package/lib/database/adapter/workspaceSessionStore.d.ts +118 -0
  58. package/lib/database/adapter/workspaceSessionStore.js +120 -0
  59. package/lib/database/entity/fileGraph.d.ts +53 -0
  60. package/lib/database/entity/fileGraph.js +15 -0
  61. package/lib/database/entity/fileTree.d.ts +76 -0
  62. package/lib/database/entity/fileTree.js +39 -0
  63. package/lib/database/entity/hook.d.ts +29 -0
  64. package/lib/database/entity/hook.js +18 -0
  65. package/lib/database/entity/index.d.ts +4 -0
  66. package/lib/database/entity/index.js +4 -0
  67. package/lib/database/entity/workspaceSession.d.ts +53 -0
  68. package/lib/database/entity/workspaceSession.js +28 -0
  69. package/lib/database/repository/fileAnnotationRepository.d.ts +75 -0
  70. package/lib/database/repository/fileAnnotationRepository.js +109 -0
  71. package/lib/database/repository/fileGraphRepository.d.ts +188 -0
  72. package/lib/database/repository/fileGraphRepository.js +648 -0
  73. package/lib/database/repository/fileNodeRepository.d.ts +116 -0
  74. package/lib/database/repository/fileNodeRepository.js +263 -0
  75. package/lib/database/repository/fileOutlineRepository.d.ts +40 -0
  76. package/lib/database/repository/fileOutlineRepository.js +104 -0
  77. package/lib/database/repository/fileWriteRepository.d.ts +41 -0
  78. package/lib/database/repository/fileWriteRepository.js +93 -0
  79. package/lib/database/repository/hookRepository.d.ts +67 -0
  80. package/lib/database/repository/hookRepository.js +150 -0
  81. package/lib/database/repository/index.d.ts +7 -0
  82. package/lib/database/repository/index.js +7 -0
  83. package/lib/database/repository/workspaceSessionRepository.d.ts +134 -0
  84. package/lib/database/repository/workspaceSessionRepository.js +327 -0
  85. package/lib/database/service/database.d.ts +14 -0
  86. package/lib/database/service/database.js +21 -0
  87. package/lib/database/sql/schema.js +187 -0
  88. package/lib/database/store/database.js +6 -1
  89. package/lib/delegate/team.d.ts +5 -0
  90. package/lib/delegate/team.js +83 -20
  91. package/lib/discover/classify.d.ts +20 -0
  92. package/lib/discover/classify.js +85 -0
  93. package/lib/discover/host.d.ts +20 -0
  94. package/lib/discover/host.js +89 -0
  95. package/lib/discover/index.d.ts +11 -0
  96. package/lib/discover/index.js +11 -0
  97. package/lib/discover/kinds.d.ts +14 -0
  98. package/lib/discover/kinds.js +23 -0
  99. package/lib/discover/tree.d.ts +7 -0
  100. package/lib/discover/tree.js +432 -0
  101. package/lib/discover/types.d.ts +115 -0
  102. package/lib/discover/types.js +1 -0
  103. package/lib/error/boundaryRejection.d.ts +1 -1
  104. package/lib/evaluation/agreement.js +2 -2
  105. package/lib/execution/handles.js +6 -0
  106. package/lib/execution/pin.js +2 -2
  107. package/lib/file/cfb.d.ts +56 -0
  108. package/lib/file/cfb.js +396 -0
  109. package/lib/file/dependency.d.ts +151 -0
  110. package/lib/file/dependency.js +568 -0
  111. package/lib/file/directory.d.ts +34 -0
  112. package/lib/file/directory.js +141 -0
  113. package/lib/file/errors.d.ts +20 -0
  114. package/lib/file/errors.js +18 -0
  115. package/lib/file/exportGraph.d.ts +31 -0
  116. package/lib/file/exportGraph.js +554 -0
  117. package/lib/file/file.d.ts +40 -0
  118. package/lib/file/file.js +339 -0
  119. package/lib/file/importGraph.d.ts +121 -0
  120. package/lib/file/importGraph.js +1022 -0
  121. package/lib/file/index.d.ts +45 -0
  122. package/lib/file/index.js +30 -0
  123. package/lib/file/metadata.d.ts +66 -0
  124. package/lib/file/metadata.js +470 -0
  125. package/lib/file/path.d.ts +60 -0
  126. package/lib/file/path.js +259 -0
  127. package/lib/file/read.d.ts +168 -0
  128. package/lib/file/read.js +541 -0
  129. package/lib/file/runtime.d.ts +95 -0
  130. package/lib/file/runtime.js +150 -0
  131. package/lib/file/service.d.ts +227 -0
  132. package/lib/file/service.js +663 -0
  133. package/lib/file/syntaxTree.d.ts +7 -0
  134. package/lib/file/syntaxTree.js +38 -0
  135. package/lib/file/time.d.ts +38 -0
  136. package/lib/file/time.js +44 -0
  137. package/lib/file/tree.d.ts +53 -0
  138. package/lib/file/tree.js +417 -0
  139. package/lib/file/types.d.ts +371 -0
  140. package/lib/file/types.js +1 -0
  141. package/lib/file/write.d.ts +159 -0
  142. package/lib/file/write.js +1028 -0
  143. package/lib/file/zip.d.ts +35 -0
  144. package/lib/file/zip.js +349 -0
  145. package/lib/fingerprint/algorithm.d.ts +97 -0
  146. package/lib/fingerprint/algorithm.js +271 -0
  147. package/lib/fingerprint/bytes.d.ts +18 -0
  148. package/lib/fingerprint/bytes.js +31 -0
  149. package/lib/fingerprint/error.d.ts +73 -0
  150. package/lib/fingerprint/error.js +86 -0
  151. package/lib/fingerprint/file.d.ts +71 -0
  152. package/lib/fingerprint/file.js +254 -0
  153. package/lib/fingerprint/index.d.ts +37 -0
  154. package/lib/fingerprint/index.js +12 -0
  155. package/lib/fingerprint/json.d.ts +41 -0
  156. package/lib/fingerprint/json.js +94 -0
  157. package/lib/fingerprint/number.d.ts +32 -0
  158. package/lib/fingerprint/number.js +95 -0
  159. package/lib/fingerprint/policy.d.ts +54 -0
  160. package/lib/fingerprint/policy.js +50 -0
  161. package/lib/fingerprint/preimage.d.ts +84 -0
  162. package/lib/fingerprint/preimage.js +133 -0
  163. package/lib/fingerprint/raw.d.ts +26 -0
  164. package/lib/fingerprint/raw.js +45 -0
  165. package/lib/fingerprint/ref.d.ts +39 -0
  166. package/lib/fingerprint/ref.js +178 -0
  167. package/lib/fingerprint/text.d.ts +42 -0
  168. package/lib/fingerprint/text.js +155 -0
  169. package/lib/fingerprint/tree.d.ts +56 -0
  170. package/lib/fingerprint/tree.js +288 -0
  171. package/lib/fingerprint/verify.d.ts +20 -0
  172. package/lib/fingerprint/verify.js +99 -0
  173. package/lib/global/filesystem.d.ts +43 -0
  174. package/lib/global/filesystem.js +75 -0
  175. package/lib/global/index.d.ts +8 -0
  176. package/lib/global/index.js +8 -0
  177. package/lib/global/service.d.ts +51 -0
  178. package/lib/global/service.js +98 -0
  179. package/lib/governance/transport.js +18 -6
  180. package/lib/hook/ast.d.ts +29 -0
  181. package/lib/hook/ast.js +22 -0
  182. package/lib/hook/code.d.ts +55 -0
  183. package/lib/hook/code.js +47 -0
  184. package/lib/hook/dependency.d.ts +45 -0
  185. package/lib/hook/dependency.js +28 -0
  186. package/lib/hook/diff.d.ts +114 -0
  187. package/lib/hook/diff.js +327 -0
  188. package/lib/hook/exportation.d.ts +31 -0
  189. package/lib/hook/exportation.js +24 -0
  190. package/lib/hook/file.d.ts +44 -0
  191. package/lib/hook/file.js +154 -0
  192. package/lib/hook/importation.d.ts +33 -0
  193. package/lib/hook/importation.js +22 -0
  194. package/lib/hook/index.d.ts +30 -0
  195. package/lib/hook/index.js +23 -0
  196. package/lib/hook/outline.d.ts +35 -0
  197. package/lib/hook/outline.js +27 -0
  198. package/lib/hook/project.d.ts +65 -0
  199. package/lib/hook/project.js +217 -0
  200. package/lib/hook/types.d.ts +114 -0
  201. package/lib/hook/types.js +407 -0
  202. package/lib/index.d.ts +9 -0
  203. package/lib/index.js +9 -0
  204. package/lib/lock/lease.js +28 -3
  205. package/lib/manifest/cardSign.d.ts +1 -1
  206. package/lib/manifest/cardSign.js +37 -7
  207. package/lib/manifest/federation.js +13 -6
  208. package/lib/manifest/trust.d.ts +2 -0
  209. package/lib/manifest/trust.js +27 -6
  210. package/lib/module/index.d.ts +4 -0
  211. package/lib/module/index.js +4 -0
  212. package/lib/module/mcp/client.js +21 -2
  213. package/lib/module/mcp/filesystemServer.d.ts +24 -0
  214. package/lib/module/mcp/filesystemServer.js +102 -0
  215. package/lib/module/mcp/http.js +32 -19
  216. package/lib/module/mcp/workspaceServer.js +20 -3
  217. package/lib/module/tool/filesystemExecutor.d.ts +18 -0
  218. package/lib/module/tool/filesystemExecutor.js +49 -0
  219. package/lib/module/tool/globalExecutor.d.ts +17 -0
  220. package/lib/module/tool/globalExecutor.js +39 -0
  221. package/lib/module/tool/globalFilesystemExecutor.d.ts +18 -0
  222. package/lib/module/tool/globalFilesystemExecutor.js +49 -0
  223. package/lib/module/tool/workspaceExecutor.d.ts +9 -0
  224. package/lib/module/tool/workspaceExecutor.js +16 -3
  225. package/lib/naming/aliases.d.ts +48 -0
  226. package/lib/naming/aliases.js +79 -0
  227. package/lib/naming/catalog.d.ts +117 -0
  228. package/lib/naming/catalog.js +108 -0
  229. package/lib/naming/grammar.d.ts +67 -0
  230. package/lib/naming/grammar.js +212 -0
  231. package/lib/naming/ids.d.ts +157 -0
  232. package/lib/naming/ids.js +119 -0
  233. package/lib/naming/index.d.ts +13 -0
  234. package/lib/naming/index.js +13 -0
  235. package/lib/outline/index.d.ts +9 -0
  236. package/lib/outline/index.js +8 -0
  237. package/lib/outline/office.d.ts +160 -0
  238. package/lib/outline/office.js +2375 -0
  239. package/lib/outline/officeBridge.d.ts +32 -0
  240. package/lib/outline/officeBridge.js +27 -0
  241. package/lib/outline/outline.d.ts +159 -0
  242. package/lib/outline/outline.js +837 -0
  243. package/lib/outline/outlineIndex.d.ts +97 -0
  244. package/lib/outline/outlineIndex.js +325 -0
  245. package/lib/outline/outlineKeywords.d.ts +59 -0
  246. package/lib/outline/outlineKeywords.js +143 -0
  247. package/lib/outline/outlineStrategies.d.ts +414 -0
  248. package/lib/outline/outlineStrategies.js +8324 -0
  249. package/lib/outline/reactOutline.d.ts +37 -0
  250. package/lib/outline/reactOutline.js +1070 -0
  251. package/lib/outline/shellOutline.d.ts +65 -0
  252. package/lib/outline/shellOutline.js +873 -0
  253. package/lib/outline/sqlOutline.d.ts +170 -0
  254. package/lib/outline/sqlOutline.js +1536 -0
  255. package/lib/outline/strategy.d.ts +46 -0
  256. package/lib/outline/strategy.js +1 -0
  257. package/lib/outline/types.d.ts +95 -0
  258. package/lib/outline/types.js +1 -0
  259. package/lib/outline/visualBasicOutline.d.ts +27 -0
  260. package/lib/outline/visualBasicOutline.js +750 -0
  261. package/lib/protocol/filesystem.d.ts +55 -0
  262. package/lib/protocol/filesystem.js +105 -0
  263. package/lib/protocol/global.d.ts +42 -0
  264. package/lib/protocol/global.js +63 -0
  265. package/lib/protocol/globalFilesystem.d.ts +40 -0
  266. package/lib/protocol/globalFilesystem.js +59 -0
  267. package/lib/protocol/index.d.ts +4 -0
  268. package/lib/protocol/index.js +4 -0
  269. package/lib/protocol/protocol.d.ts +4 -0
  270. package/lib/protocol/wire.js +5 -2
  271. package/lib/protocol/workspace.d.ts +305 -0
  272. package/lib/protocol/workspace.js +258 -0
  273. package/lib/receipt/receipt.d.ts +8 -0
  274. package/lib/registry/content.js +9 -3
  275. package/lib/runtime/kernelRuntime.js +9 -1
  276. package/lib/scenario/scenario.js +5 -4
  277. package/lib/semantic/canonical.d.ts +61 -0
  278. package/lib/semantic/canonical.js +135 -8
  279. package/lib/semantic/jsonValue.d.ts +31 -0
  280. package/lib/semantic/jsonValue.js +122 -0
  281. package/lib/semantic/sha256.js +3 -0
  282. package/lib/semantic/time.d.ts +14 -0
  283. package/lib/semantic/time.js +56 -0
  284. package/lib/session/context.d.ts +76 -0
  285. package/lib/session/context.js +419 -0
  286. package/lib/session/errors.d.ts +24 -0
  287. package/lib/session/errors.js +22 -0
  288. package/lib/session/identity.d.ts +24 -0
  289. package/lib/session/identity.js +56 -0
  290. package/lib/session/index.d.ts +14 -0
  291. package/lib/session/index.js +12 -0
  292. package/lib/session/registry.d.ts +130 -0
  293. package/lib/session/registry.js +908 -0
  294. package/lib/session/types.d.ts +227 -0
  295. package/lib/session/types.js +14 -0
  296. package/lib/structure/index.d.ts +1 -0
  297. package/lib/structure/index.js +1 -0
  298. package/lib/structure/trie.d.ts +88 -0
  299. package/lib/structure/trie.js +183 -0
  300. package/lib/syntax/byteIndex.d.ts +44 -0
  301. package/lib/syntax/byteIndex.js +148 -0
  302. package/lib/syntax/charset.d.ts +88 -0
  303. package/lib/syntax/charset.js +276 -0
  304. package/lib/syntax/index.d.ts +6 -0
  305. package/lib/syntax/index.js +5 -0
  306. package/lib/syntax/syntaxRegistry.d.ts +150 -0
  307. package/lib/syntax/syntaxRegistry.js +314 -0
  308. package/lib/syntax/syntaxTree.d.ts +106 -0
  309. package/lib/syntax/syntaxTree.js +668 -0
  310. package/lib/syntax/types.d.ts +15 -0
  311. package/lib/syntax/types.js +1 -0
  312. package/lib/types/common.d.ts +1 -1
  313. package/package.json +72 -193
  314. package/.editorconfig +0 -12
  315. package/.prettierignore +0 -17
  316. package/MCP-Token/347/250/216/344/270/216/344/270/213/344/270/200/344/273/243/345/267/245/345/205/267/345/215/217/350/256/256.html +0 -1763
  317. package/docs/annotation-campaign-A.csv +0 -54
  318. package/docs/annotation-campaign-B.csv +0 -54
  319. package/docs/annotation-campaign.csv +0 -54
  320. package/docs/eval/annotations-A.jsonl +0 -16
  321. package/docs/eval/annotations.json +0 -122
  322. package/docs/eval/recorded-labels.json +0 -12
  323. package/docs/eval/replay-cases.json +0 -14
  324. package/docs/eval/replay-labels-b.json +0 -14
  325. package/docs/examples/attention-request.json +0 -16
  326. package/docs/examples/checkpoint.json +0 -15
  327. package/docs/examples/claim.json +0 -66
  328. package/docs/examples/collaboration.json +0 -66
  329. package/docs/examples/concept-checkpoint.json +0 -15
  330. package/docs/examples/concept-prune-plan.json +0 -45
  331. package/docs/examples/federation.json +0 -126
  332. package/docs/examples/frame-chain.json +0 -77
  333. package/docs/examples/ledger-snapshot.json +0 -108
  334. package/docs/examples/manifest.json +0 -77
  335. package/docs/examples/message.json +0 -19
  336. package/docs/examples/other-model.json +0 -45
  337. package/docs/examples/plan.json +0 -50
  338. package/docs/examples/prune-plan.json +0 -48
  339. package/docs/examples/receipt.json +0 -22
  340. package/docs/examples/runtime-run.json +0 -573
  341. package/docs/examples/team.json +0 -66
  342. package/docs/examples/verb-note.json +0 -11
  343. package/docs/probes/bayes-scores.json +0 -1452
  344. package/docs/probes/calibration-imported.json +0 -141
  345. package/docs/probes/context-ast-deepseek.json +0 -1577
  346. package/docs/probes/deepseek-probe.json +0 -917
  347. package/docs/probes/eval-recorded-replay.json +0 -597
  348. package/docs/probes/eval-replay.json +0 -124
  349. package/docs/probes/eval-summary.json +0 -42
  350. package/docs/probes/runtime-eval.json +0 -4230
  351. package/docs/schemas/collaboration.schema.json +0 -73
  352. package/docs/schemas/common.schema.json +0 -125
  353. package/docs/schemas/compaction.schema.json +0 -121
  354. package/docs/schemas/concept-compaction.schema.json +0 -73
  355. package/docs/schemas/concept.schema.json +0 -97
  356. package/docs/schemas/epistemic.schema.json +0 -178
  357. package/docs/schemas/federation.schema.json +0 -66
  358. package/docs/schemas/frame.schema.json +0 -86
  359. package/docs/schemas/ledger-snapshot.schema.json +0 -30
  360. package/docs/schemas/manifest.schema.json +0 -169
  361. package/docs/schemas/message.schema.json +0 -41
  362. package/docs/schemas/plan.schema.json +0 -189
  363. package/docs/schemas/receipt.schema.json +0 -45
  364. package/docs/schemas/social.schema.json +0 -153
  365. package/docs/schemas/team.schema.json +0 -56
  366. package/docs/schemas/verb.schema.json +0 -120
  367. package/eslint.config.mts +0 -96
  368. package/index.html +0 -13
  369. package/lib/context/workspaceProtocol.d.ts +0 -30
  370. package/lib/context/workspaceProtocol.js +0 -49
  371. package/prettier.config.mts +0 -37
  372. package/public/favicon.svg +0 -1
  373. package/public/icons.svg +0 -24
  374. package/src/attention/attention.ts +0 -347
  375. package/src/attention/budget.ts +0 -72
  376. package/src/attention/cognition.ts +0 -519
  377. package/src/attention/index.ts +0 -8
  378. package/src/attention/interrupts.ts +0 -228
  379. package/src/attention/resource.ts +0 -316
  380. package/src/attention/social.ts +0 -217
  381. package/src/attention/socialTypes.ts +0 -115
  382. package/src/authz/authz.ts +0 -305
  383. package/src/authz/index.ts +0 -1
  384. package/src/bayes/calibration.ts +0 -204
  385. package/src/bayes/calibrationRegistry.ts +0 -111
  386. package/src/bayes/calibrationSelection.ts +0 -154
  387. package/src/bayes/engine.ts +0 -532
  388. package/src/bayes/index.ts +0 -6
  389. package/src/bayes/reliability.ts +0 -62
  390. package/src/bayes/scopedPriors.ts +0 -88
  391. package/src/boundary/frame.ts +0 -322
  392. package/src/boundary/ids.ts +0 -14
  393. package/src/boundary/index.ts +0 -12
  394. package/src/boundary/refTable.ts +0 -125
  395. package/src/boundary/toolCall.ts +0 -212
  396. package/src/concept/concept.ts +0 -75
  397. package/src/concept/conceptBudget.ts +0 -346
  398. package/src/concept/conceptBudgetTypes.ts +0 -79
  399. package/src/concept/index.ts +0 -3
  400. package/src/concurrency/idempotency.ts +0 -41
  401. package/src/concurrency/index.ts +0 -5
  402. package/src/concurrency/mutex.ts +0 -26
  403. package/src/concurrency/namedLocks.ts +0 -35
  404. package/src/concurrency/retry.ts +0 -50
  405. package/src/concurrency/worker.ts +0 -128
  406. package/src/context/agentContext.ts +0 -308
  407. package/src/context/ast.ts +0 -499
  408. package/src/context/contentStore.ts +0 -75
  409. package/src/context/context.ts +0 -65
  410. package/src/context/contextIndex.ts +0 -85
  411. package/src/context/document.ts +0 -137
  412. package/src/context/fileStorePath.ts +0 -14
  413. package/src/context/index.ts +0 -43
  414. package/src/context/lifecycle.ts +0 -221
  415. package/src/context/projections.ts +0 -151
  416. package/src/context/workspace.ts +0 -422
  417. package/src/context/workspaceProtocol.ts +0 -112
  418. package/src/context/workspaceService.ts +0 -423
  419. package/src/cooperation/board.ts +0 -104
  420. package/src/cooperation/collaboration.ts +0 -60
  421. package/src/cooperation/index.ts +0 -6
  422. package/src/cooperation/merge.ts +0 -190
  423. package/src/cooperation/metrics.ts +0 -57
  424. package/src/cooperation/session.ts +0 -131
  425. package/src/cooperation/unified.ts +0 -56
  426. package/src/counter.ts +0 -9
  427. package/src/database/adapter/adapters.ts +0 -35
  428. package/src/database/adapter/index.ts +0 -4
  429. package/src/database/adapter/runtimeSink.ts +0 -74
  430. package/src/database/adapter/sessionStore.ts +0 -32
  431. package/src/database/adapter/turnStore.ts +0 -23
  432. package/src/database/entity/agent.ts +0 -199
  433. package/src/database/entity/entity.ts +0 -1046
  434. package/src/database/entity/handle.ts +0 -79
  435. package/src/database/entity/index.ts +0 -32
  436. package/src/database/entity/message.ts +0 -74
  437. package/src/database/entity/meta.ts +0 -11
  438. package/src/database/entity/object.ts +0 -42
  439. package/src/database/entity/outbox.ts +0 -15
  440. package/src/database/entity/process.ts +0 -65
  441. package/src/database/entity/registry.ts +0 -155
  442. package/src/database/entity/runtimeApproval.ts +0 -30
  443. package/src/database/entity/runtimeSession.ts +0 -13
  444. package/src/database/entity/runtimeTurn.ts +0 -15
  445. package/src/database/entity/thread.ts +0 -85
  446. package/src/database/entity/window.ts +0 -85
  447. package/src/database/entity/worker.ts +0 -90
  448. package/src/database/index.ts +0 -6
  449. package/src/database/repository/addressSpaceRepository.ts +0 -72
  450. package/src/database/repository/agentRepository.ts +0 -460
  451. package/src/database/repository/base.ts +0 -41
  452. package/src/database/repository/executionRepository.ts +0 -477
  453. package/src/database/repository/handleRepository.ts +0 -64
  454. package/src/database/repository/index.ts +0 -20
  455. package/src/database/repository/messageRepository.ts +0 -52
  456. package/src/database/repository/objectRepository.ts +0 -69
  457. package/src/database/repository/outboxRepository.ts +0 -63
  458. package/src/database/repository/processRepository.ts +0 -58
  459. package/src/database/repository/registryRepository.ts +0 -119
  460. package/src/database/repository/repository.ts +0 -491
  461. package/src/database/repository/runtimeApprovalRepository.ts +0 -44
  462. package/src/database/repository/runtimeSessionRepository.ts +0 -27
  463. package/src/database/repository/runtimeTurnRepository.ts +0 -39
  464. package/src/database/repository/socialRepository.ts +0 -185
  465. package/src/database/repository/threadRepository.ts +0 -57
  466. package/src/database/repository/windowRepository.ts +0 -88
  467. package/src/database/repository/workerRepository.ts +0 -69
  468. package/src/database/service/database.ts +0 -90
  469. package/src/database/service/handleService.ts +0 -48
  470. package/src/database/service/index.ts +0 -16
  471. package/src/database/service/messageService.ts +0 -61
  472. package/src/database/service/objectService.ts +0 -59
  473. package/src/database/service/processService.ts +0 -61
  474. package/src/database/service/registryServices.ts +0 -88
  475. package/src/database/service/service.ts +0 -183
  476. package/src/database/service/stepService.ts +0 -53
  477. package/src/database/service/threadService.ts +0 -65
  478. package/src/database/service/windowService.ts +0 -30
  479. package/src/database/service/workerService.ts +0 -57
  480. package/src/database/sql/index.ts +0 -3
  481. package/src/database/sql/schema.ts +0 -418
  482. package/src/database/sql/sql.ts +0 -543
  483. package/src/database/store/database.ts +0 -210
  484. package/src/database/store/index.ts +0 -3
  485. package/src/database/store/store.ts +0 -266
  486. package/src/delegate/index.ts +0 -2
  487. package/src/delegate/team.ts +0 -268
  488. package/src/delegate/teamTypes.ts +0 -47
  489. package/src/diagnosis/checklist.ts +0 -74
  490. package/src/diagnosis/context.ts +0 -93
  491. package/src/diagnosis/frame.ts +0 -256
  492. package/src/diagnosis/index.ts +0 -5
  493. package/src/diagnosis/router.ts +0 -72
  494. package/src/diagnosis/types.ts +0 -89
  495. package/src/error/agentError.ts +0 -16
  496. package/src/error/ampError.ts +0 -20
  497. package/src/error/authzError.ts +0 -14
  498. package/src/error/boundaryRejection.ts +0 -20
  499. package/src/error/index.ts +0 -7
  500. package/src/error/kernelError.ts +0 -27
  501. package/src/error/mailboxError.ts +0 -9
  502. package/src/error/windowError.ts +0 -12
  503. package/src/evaluation/agreement.ts +0 -96
  504. package/src/evaluation/index.ts +0 -2
  505. package/src/evaluation/labels.ts +0 -241
  506. package/src/evidence/evidenceGraph.ts +0 -205
  507. package/src/evidence/index.ts +0 -4
  508. package/src/evidence/revalidation.ts +0 -191
  509. package/src/execution/exec.ts +0 -408
  510. package/src/execution/handles.ts +0 -65
  511. package/src/execution/index.ts +0 -3
  512. package/src/execution/pin.ts +0 -154
  513. package/src/frame/frame.ts +0 -70
  514. package/src/frame/index.ts +0 -1
  515. package/src/goal/goal.ts +0 -43
  516. package/src/goal/index.ts +0 -2
  517. package/src/goal/plan.ts +0 -196
  518. package/src/governance/attentionManifest.ts +0 -802
  519. package/src/governance/audit.ts +0 -362
  520. package/src/governance/budget.ts +0 -628
  521. package/src/governance/context.ts +0 -356
  522. package/src/governance/control.ts +0 -159
  523. package/src/governance/cooperation.ts +0 -479
  524. package/src/governance/credential.ts +0 -359
  525. package/src/governance/httpServer.ts +0 -99
  526. package/src/governance/index.ts +0 -32
  527. package/src/governance/legal.ts +0 -574
  528. package/src/governance/matrix.ts +0 -460
  529. package/src/governance/perspectives.ts +0 -406
  530. package/src/governance/signing.ts +0 -407
  531. package/src/governance/store.ts +0 -125
  532. package/src/governance/switching.ts +0 -459
  533. package/src/governance/toolPolicy.ts +0 -80
  534. package/src/governance/transport.ts +0 -204
  535. package/src/governance/types.ts +0 -380
  536. package/src/governance/workflow.ts +0 -743
  537. package/src/index.ts +0 -11
  538. package/src/interaction/index.ts +0 -1
  539. package/src/interaction/interaction.ts +0 -391
  540. package/src/ipc/index.ts +0 -4
  541. package/src/ipc/mailbox.ts +0 -132
  542. package/src/ipc/memorySocialStore.ts +0 -93
  543. package/src/ipc/social.ts +0 -93
  544. package/src/kernel/index.ts +0 -14
  545. package/src/kernel/scheduler.ts +0 -498
  546. package/src/ledger/checkpoint.ts +0 -304
  547. package/src/ledger/index.ts +0 -4
  548. package/src/ledger/ledger.ts +0 -31
  549. package/src/ledger/persistence.ts +0 -159
  550. package/src/ledger/share.ts +0 -80
  551. package/src/lock/index.ts +0 -2
  552. package/src/lock/lease.ts +0 -74
  553. package/src/main.ts +0 -199
  554. package/src/manifest/agentCard.ts +0 -72
  555. package/src/manifest/cardSign.ts +0 -87
  556. package/src/manifest/federation.ts +0 -237
  557. package/src/manifest/federationTypes.ts +0 -55
  558. package/src/manifest/index.ts +0 -8
  559. package/src/manifest/keys.ts +0 -643
  560. package/src/manifest/manifest.ts +0 -114
  561. package/src/manifest/sign.ts +0 -134
  562. package/src/manifest/trust.ts +0 -146
  563. package/src/mission/index.ts +0 -2
  564. package/src/mission/missionQueue.ts +0 -75
  565. package/src/module/index.ts +0 -9
  566. package/src/module/llm/deepseek.ts +0 -214
  567. package/src/module/llm/llm.ts +0 -84
  568. package/src/module/mcp/client.ts +0 -110
  569. package/src/module/mcp/http.ts +0 -102
  570. package/src/module/mcp/protocol.ts +0 -77
  571. package/src/module/mcp/server.ts +0 -148
  572. package/src/module/mcp/transport.ts +0 -30
  573. package/src/module/mcp/workspaceServer.ts +0 -111
  574. package/src/module/sandbox/sandbox.ts +0 -29
  575. package/src/module/tool/mcpExecutor.ts +0 -54
  576. package/src/module/tool/policy.ts +0 -52
  577. package/src/module/tool/redact.ts +0 -29
  578. package/src/module/tool/tool.ts +0 -53
  579. package/src/module/tool/workspaceExecutor.ts +0 -35
  580. package/src/policy/guard.ts +0 -240
  581. package/src/policy/index.ts +0 -2
  582. package/src/policy/policy.ts +0 -561
  583. package/src/process/agent.ts +0 -341
  584. package/src/process/agentService.ts +0 -236
  585. package/src/process/agentStore.ts +0 -378
  586. package/src/process/executionStore.ts +0 -151
  587. package/src/process/index.ts +0 -5
  588. package/src/process/process.ts +0 -240
  589. package/src/process/transitions.ts +0 -19
  590. package/src/progress/index.ts +0 -2
  591. package/src/progress/progress.ts +0 -85
  592. package/src/protocol/a2a.ts +0 -120
  593. package/src/protocol/channel.ts +0 -44
  594. package/src/protocol/envelope.ts +0 -655
  595. package/src/protocol/httpChannel.ts +0 -87
  596. package/src/protocol/index.ts +0 -6
  597. package/src/protocol/protocol.ts +0 -138
  598. package/src/protocol/wire.ts +0 -60
  599. package/src/receipt/index.ts +0 -1
  600. package/src/receipt/receipt.ts +0 -47
  601. package/src/registry/content.ts +0 -69
  602. package/src/registry/index.ts +0 -23
  603. package/src/registry/registry.ts +0 -599
  604. package/src/runtime/action.ts +0 -87
  605. package/src/runtime/behavior.ts +0 -330
  606. package/src/runtime/behaviorTuning.ts +0 -163
  607. package/src/runtime/cognitiveRuntime.ts +0 -703
  608. package/src/runtime/escalation.ts +0 -35
  609. package/src/runtime/governedTask.ts +0 -233
  610. package/src/runtime/index.ts +0 -15
  611. package/src/runtime/kernelRuntime.ts +0 -144
  612. package/src/runtime/operation.ts +0 -35
  613. package/src/runtime/replay.ts +0 -71
  614. package/src/runtime/routing.ts +0 -58
  615. package/src/runtime/safety.ts +0 -48
  616. package/src/runtime/session.ts +0 -341
  617. package/src/runtime/sessionStore.ts +0 -43
  618. package/src/runtime/telemetry.ts +0 -55
  619. package/src/runtime/turnStore.ts +0 -30
  620. package/src/scenario/index.ts +0 -1
  621. package/src/scenario/scenario.ts +0 -299
  622. package/src/semantic/canonical.ts +0 -24
  623. package/src/semantic/index.ts +0 -2
  624. package/src/semantic/sha256.ts +0 -82
  625. package/src/storage/appendLog.ts +0 -372
  626. package/src/storage/fileAppendSink.ts +0 -40
  627. package/src/storage/index.ts +0 -2
  628. package/src/store/bindCache.ts +0 -22
  629. package/src/store/cache.ts +0 -191
  630. package/src/store/context.ts +0 -31
  631. package/src/store/handleStore.ts +0 -31
  632. package/src/store/index.ts +0 -9
  633. package/src/store/messageStore.ts +0 -31
  634. package/src/store/objectStore.ts +0 -31
  635. package/src/store/processStore.ts +0 -31
  636. package/src/store/threadStore.ts +0 -31
  637. package/src/store/windowStore.ts +0 -31
  638. package/src/structure/abstractSyntaxTree.ts +0 -493
  639. package/src/structure/avlTree.ts +0 -408
  640. package/src/structure/binarySearchTree.ts +0 -352
  641. package/src/structure/binaryTree.ts +0 -525
  642. package/src/structure/bloomFilter.ts +0 -231
  643. package/src/structure/compare.ts +0 -110
  644. package/src/structure/cuckooFilter.ts +0 -337
  645. package/src/structure/deque.ts +0 -223
  646. package/src/structure/filterKey.ts +0 -36
  647. package/src/structure/hash.ts +0 -279
  648. package/src/structure/heap.ts +0 -268
  649. package/src/structure/index.ts +0 -20
  650. package/src/structure/iterator.ts +0 -22
  651. package/src/structure/lru.ts +0 -619
  652. package/src/structure/ordered.ts +0 -399
  653. package/src/structure/priority.ts +0 -915
  654. package/src/structure/queue.ts +0 -168
  655. package/src/structure/redBlackTree.ts +0 -680
  656. package/src/structure/segmentTree.ts +0 -248
  657. package/src/structure/stack.ts +0 -118
  658. package/src/structure/unordered.ts +0 -407
  659. package/src/style.css +0 -278
  660. package/src/thread/index.ts +0 -2
  661. package/src/thread/thread.ts +0 -176
  662. package/src/thread/transitions.ts +0 -17
  663. package/src/types/common.ts +0 -119
  664. package/src/types/index.ts +0 -23
  665. package/src/warrant/epistemic.ts +0 -154
  666. package/src/warrant/index.ts +0 -3
  667. package/src/warrant/inquiry.ts +0 -166
  668. package/src/warrant/warrant.ts +0 -179
  669. package/src/window/compaction.ts +0 -403
  670. package/src/window/compactionTypes.ts +0 -119
  671. package/src/window/index.ts +0 -7
  672. package/src/window/page.ts +0 -18
  673. package/src/window/window.ts +0 -244
  674. package/tools/_helpers.ts +0 -34
  675. package/tools/a2a-check.ts +0 -110
  676. package/tools/a2a-flow-check.ts +0 -78
  677. package/tools/agent-card-check.ts +0 -76
  678. package/tools/agent-check.ts +0 -236
  679. package/tools/agent-store-check.ts +0 -153
  680. package/tools/agreement-check.ts +0 -27
  681. package/tools/annotation-server-check.ts +0 -48
  682. package/tools/annotation-server.ts +0 -230
  683. package/tools/annotation-status.ts +0 -65
  684. package/tools/approval-access-check.ts +0 -66
  685. package/tools/arch-check.ts +0 -72
  686. package/tools/attention-core-check.ts +0 -48
  687. package/tools/attention-resource-check.ts +0 -169
  688. package/tools/audit-check.ts +0 -207
  689. package/tools/authority-check.ts +0 -124
  690. package/tools/authz-check.ts +0 -138
  691. package/tools/bayes-check.ts +0 -162
  692. package/tools/bayes-probe.ts +0 -154
  693. package/tools/behavior-tuning-check.ts +0 -53
  694. package/tools/board-check.ts +0 -87
  695. package/tools/boundary-check.ts +0 -199
  696. package/tools/bundle-trust-check.ts +0 -96
  697. package/tools/calibrate-imported.ts +0 -108
  698. package/tools/calibration-check.ts +0 -44
  699. package/tools/calibration-registry-check.ts +0 -40
  700. package/tools/calibration-sim.ts +0 -40
  701. package/tools/card-sign-check.ts +0 -71
  702. package/tools/card-trust-check.ts +0 -78
  703. package/tools/channel-check.ts +0 -86
  704. package/tools/checkpoint-check.ts +0 -620
  705. package/tools/cleanup-style-configs.ts +0 -29
  706. package/tools/cognition-check.ts +0 -648
  707. package/tools/cognitive-runtime-check.ts +0 -609
  708. package/tools/collaboration-demo.ts +0 -78
  709. package/tools/compaction-check.ts +0 -266
  710. package/tools/concept-check.ts +0 -260
  711. package/tools/concurrency-check.ts +0 -242
  712. package/tools/conformance-runtime.ts +0 -389
  713. package/tools/conformance.ts +0 -651
  714. package/tools/context-ast-check.ts +0 -90
  715. package/tools/context-ast-deepseek.ts +0 -242
  716. package/tools/context-graph-bench.ts +0 -50
  717. package/tools/context-graph-check.ts +0 -229
  718. package/tools/context-index-check.ts +0 -48
  719. package/tools/context-lifecycle-check.ts +0 -69
  720. package/tools/context-projection-check.ts +0 -73
  721. package/tools/context-scope-check.ts +0 -134
  722. package/tools/context-storage-check.ts +0 -113
  723. package/tools/cooperation-check.ts +0 -517
  724. package/tools/cooperation-http-check.ts +0 -125
  725. package/tools/deepseek-llm-check.ts +0 -147
  726. package/tools/deepseek-probe.ts +0 -494
  727. package/tools/diagnosis-check.ts +0 -109
  728. package/tools/diagnosis-router-check.ts +0 -50
  729. package/tools/document-context-check.ts +0 -237
  730. package/tools/envelope-check.ts +0 -659
  731. package/tools/eslint-rules/index.ts +0 -26
  732. package/tools/eslint-rules/rules/jsdoc-comment-format.ts +0 -105
  733. package/tools/eslint-rules/rules/no-function-keyword.ts +0 -60
  734. package/tools/eslint-rules/rules/no-multiline-parameters.ts +0 -71
  735. package/tools/eslint-rules/rules/no-multiline-type-parameters.ts +0 -57
  736. package/tools/eslint-rules/rules/no-undefined-comparison.ts +0 -115
  737. package/tools/eslint-rules/rules/prefer-template-for-string-conversion.ts +0 -97
  738. package/tools/eslint-rules/rules/require-typeof-parentheses.ts +0 -49
  739. package/tools/eslint-rules/rules/require-variable-type.ts +0 -36
  740. package/tools/eslint-rules/rules/variable-naming.ts +0 -175
  741. package/tools/eval-recorded-replay.ts +0 -215
  742. package/tools/eval-replay.ts +0 -139
  743. package/tools/eval-summary.ts +0 -136
  744. package/tools/evidence-revalidation-check.ts +0 -235
  745. package/tools/exec-check.ts +0 -217
  746. package/tools/federation-check.ts +0 -166
  747. package/tools/federation-demo.ts +0 -45
  748. package/tools/filter-check.ts +0 -243
  749. package/tools/governance-check.ts +0 -680
  750. package/tools/governance-store-check.ts +0 -131
  751. package/tools/governed-task-check.ts +0 -227
  752. package/tools/guard-check.ts +0 -122
  753. package/tools/http-channel-check.ts +0 -125
  754. package/tools/import-campaign.ts +0 -28
  755. package/tools/inquiry-check.ts +0 -126
  756. package/tools/interaction-check.ts +0 -171
  757. package/tools/interrupts-check.ts +0 -173
  758. package/tools/ipc-check.ts +0 -170
  759. package/tools/kernel-async-check.ts +0 -136
  760. package/tools/kernel-check.ts +0 -369
  761. package/tools/kernel-runtime-check.ts +0 -276
  762. package/tools/keys-check.ts +0 -559
  763. package/tools/label-audit.ts +0 -70
  764. package/tools/labels-workflow-check.ts +0 -49
  765. package/tools/linear-structure-check.ts +0 -524
  766. package/tools/live-exec.ts +0 -62
  767. package/tools/live-governance-eval.ts +0 -813
  768. package/tools/live-legacy.ts +0 -50
  769. package/tools/lru-check.ts +0 -182
  770. package/tools/make-annotation-campaign.ts +0 -57
  771. package/tools/mcp-executor-check.ts +0 -33
  772. package/tools/merge-annotations.ts +0 -32
  773. package/tools/merge-check.ts +0 -98
  774. package/tools/metrics-check.ts +0 -84
  775. package/tools/net-probe.ts +0 -107
  776. package/tools/oauth-probe.ts +0 -117
  777. package/tools/outbox-check.ts +0 -50
  778. package/tools/persistence-check.ts +0 -144
  779. package/tools/pin-check.ts +0 -116
  780. package/tools/platform-check.ts +0 -281
  781. package/tools/policy-check.ts +0 -514
  782. package/tools/prettier-plugin/index.mts +0 -84
  783. package/tools/priority-check.ts +0 -627
  784. package/tools/probe-context7.ts +0 -63
  785. package/tools/registry-check.ts +0 -252
  786. package/tools/reliability-check.ts +0 -25
  787. package/tools/retry-check.ts +0 -85
  788. package/tools/rewrite-declaration-extensions.ts +0 -98
  789. package/tools/runtime-check.ts +0 -165
  790. package/tools/runtime-deepseek-check.ts +0 -85
  791. package/tools/runtime-eval.ts +0 -358
  792. package/tools/scenario-check.ts +0 -161
  793. package/tools/scenario-incident.ts +0 -162
  794. package/tools/scoped-priors-check.ts +0 -35
  795. package/tools/scoped-priors-pooling.ts +0 -34
  796. package/tools/segment-ast-check.ts +0 -649
  797. package/tools/session-check.ts +0 -196
  798. package/tools/session-store-check.ts +0 -73
  799. package/tools/share-check.ts +0 -88
  800. package/tools/sign-check.ts +0 -95
  801. package/tools/signing-check.ts +0 -275
  802. package/tools/snapshot-demo.ts +0 -65
  803. package/tools/social-check.ts +0 -146
  804. package/tools/structure-compare-check.ts +0 -95
  805. package/tools/support/documentScanner.ts +0 -577
  806. package/tools/support/texScanner.ts +0 -631
  807. package/tools/support/workspaceScanner.ts +0 -476
  808. package/tools/team-check.ts +0 -163
  809. package/tools/team-demo.ts +0 -36
  810. package/tools/telemetry-check.ts +0 -44
  811. package/tools/tex-context-check.ts +0 -263
  812. package/tools/tool-gate-check.ts +0 -98
  813. package/tools/tree-structure-check.ts +0 -786
  814. package/tools/trust-flow-check.ts +0 -158
  815. package/tools/turn-store-check.ts +0 -57
  816. package/tools/unified-check.ts +0 -83
  817. package/tools/validate.ts +0 -309
  818. package/tools/wire-check.ts +0 -96
  819. package/tools/workspace-agent-check.ts +0 -486
  820. package/tools/workspace-agent-demo.ts +0 -62
  821. package/tools/workspace-agent-server.ts +0 -101
  822. package/tools/workspace-context-check.ts +0 -331
  823. package/tools/workspace-context.ts +0 -131
  824. package/tsconfig.build.json +0 -14
  825. package/tsconfig.json +0 -24
  826. package/tsconfig.tools.json +0 -31
  827. package/viz/context-ast.json +0 -1577
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Public filesystem surface: tree nodes, reads/writes, outlines and module
3
+ * graphs. Every export is read-only except `writeFile`/`ensureDirectory`;
4
+ * mutation authority is granted by a `SessionRoot` and enforced by
5
+ * `PathSandbox`.
6
+ */
7
+ export * from "./types.js";
8
+ export { FilesystemError, fail, isFilesystemError } from "./errors.js";
9
+ export { detectCharset, decodeText, encodeText, countLines, LineIndex } from "../syntax/charset.js";
10
+ export type { DetectedCharset } from "../syntax/charset.js";
11
+ export { ByteLineIndex } from "../syntax/byteIndex.js";
12
+ export { formatNodeTime, formatIsoTime, parseNodeTime, creationTime } from "./time.js";
13
+ export { PathSandbox } from "./path.js";
14
+ export type { PathSandboxOptions } from "./path.js";
15
+ export { buildFileNode, wireNode, wireTree, verifyFingerprint } from "./file.js";
16
+ export { buildDirectoryNode, listDirectory, compareTreeNodes } from "./directory.js";
17
+ export { buildTree, WorkspaceTree } from "./tree.js";
18
+ export { readPage, ReadCache, byteRangeFingerprint, locateLineSpan, useByte as useByteRead, useLine as useLineRead } from "./read.js";
19
+ export type { ReadOptions, ByteUse, ByteUseRequest, LineEnding, LineSpan, LineUse, LineUseRequest } from "./read.js";
20
+ export { writeFile, ensureDirectory, WriteLocks, useByte as useByteWrite, useLine as useLineWrite } from "./write.js";
21
+ export type { BytePatchRequest, LinePatchRequest, PatchJournalEntry, WriteOptions, WritePatchOptions, WritePatchResult, } from "./write.js";
22
+ export { SessionRuntime } from "./runtime.js";
23
+ export type { AnnotationMap, ResolvedNode, SessionRuntimeOptions } from "./runtime.js";
24
+ export { FilesystemService, FilesystemSession, filesystemSessionSummary } from "./service.js";
25
+ export type { AstRequest, DependencyQuery, ExportRequest, FilesystemServiceLimits, FilesystemServiceOptions, ImportRequest, OutlineRequest, } from "./service.js";
26
+ export { buildOutline, OutlineRegistry, DefaultOutlineRegistry, OutlineStrategies, OutlineMaxFileBytes, OutlineMaxScanLines, OutlineDefaultMaxNodes, OutlineHardMaxNodes, OutlineDefaultMaxDepth, OutlineHardMaxDepth, createOutlineRegistry, outlineLanguage, outlineNodeFingerprint, } from "../outline/outline.js";
27
+ export type { FingerprintedOutlineNode, OutlineAnchor, OutlineMatchInput, OutlineOptions, OutlineParseInput, OutlineStrategy } from "../outline/outline.js";
28
+ export { DefaultOutlineKeywords, OutlineKeywordRegistry, createOutlineKeywordRegistry } from "../outline/outlineKeywords.js";
29
+ export type { OutlineKeywordCategory } from "../outline/outlineKeywords.js";
30
+ export { buildSyntaxTree } from "./syntaxTree.js";
31
+ export { DefaultSyntaxRegistry, SyntaxRegistry, buildSyntaxTreeFromText, createSyntaxRegistry, disposeSyntaxNode, syntaxLanguageOf, wireSyntaxTree, } from "../syntax/syntaxTree.js";
32
+ export type { SyntaxLanguage, SyntaxLanguageDefinition, SyntaxNode, SyntaxNodeKind, SyntaxNodeKindDefinition, SyntaxToken, SyntaxTokenKind, SyntaxTokenKindDefinition, SyntaxTree, SyntaxTreeOptions, WireSyntaxNode, WireSyntaxToken, WireSyntaxTree, } from "../syntax/syntaxTree.js";
33
+ export { OutlineIndex, buildOutlineIndex, filterOutline, hasLabelPrefix, wireOutline, wireOutlineNode, wireOutlineRange, outlineFromWire } from "../outline/outlineIndex.js";
34
+ export type { OutlinePayload } from "../outline/outlineIndex.js";
35
+ export { extractImports, importedBy, isParseableSource, readSourceFile, resolveImportSpecifier, tokenizeSource } from "./importGraph.js";
36
+ export type { ResolvedSpecifier, SourceFileSnapshot, SourceToken } from "./importGraph.js";
37
+ export { extractExports } from "./exportGraph.js";
38
+ export { DependencyGraph, buildDependencyReport, graphFromImports } from "./dependency.js";
39
+ export { isOfficeFile, parseOffice, officeImports, officeExports, officeReferences, officeOutlineParser, installOfficeOutlineParser } from "../outline/office.js";
40
+ export type { OfficeDocument, OfficeFormat, OfficeKind, OfficeReference, OfficeSection, OfficeSectionKind } from "../outline/office.js";
41
+ export { readCfb } from "./cfb.js";
42
+ export type { CfbEntry } from "./cfb.js";
43
+ export { readZipEntries, zipText } from "./zip.js";
44
+ export type { ZipEntry } from "./zip.js";
45
+ export type { DependencyClosure, DependencyRequest, DependencySubgraph, TopologicalResult } from "./dependency.js";
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Public filesystem surface: tree nodes, reads/writes, outlines and module
3
+ * graphs. Every export is read-only except `writeFile`/`ensureDirectory`;
4
+ * mutation authority is granted by a `SessionRoot` and enforced by
5
+ * `PathSandbox`.
6
+ */
7
+ export * from "./types.js";
8
+ export { FilesystemError, fail, isFilesystemError } from "./errors.js";
9
+ export { detectCharset, decodeText, encodeText, countLines, LineIndex } from "../syntax/charset.js";
10
+ export { ByteLineIndex } from "../syntax/byteIndex.js";
11
+ export { formatNodeTime, formatIsoTime, parseNodeTime, creationTime } from "./time.js";
12
+ export { PathSandbox } from "./path.js";
13
+ export { buildFileNode, wireNode, wireTree, verifyFingerprint } from "./file.js";
14
+ export { buildDirectoryNode, listDirectory, compareTreeNodes } from "./directory.js";
15
+ export { buildTree, WorkspaceTree } from "./tree.js";
16
+ export { readPage, ReadCache, byteRangeFingerprint, locateLineSpan, useByte as useByteRead, useLine as useLineRead } from "./read.js";
17
+ export { writeFile, ensureDirectory, WriteLocks, useByte as useByteWrite, useLine as useLineWrite } from "./write.js";
18
+ export { SessionRuntime } from "./runtime.js";
19
+ export { FilesystemService, FilesystemSession, filesystemSessionSummary } from "./service.js";
20
+ export { buildOutline, OutlineRegistry, DefaultOutlineRegistry, OutlineStrategies, OutlineMaxFileBytes, OutlineMaxScanLines, OutlineDefaultMaxNodes, OutlineHardMaxNodes, OutlineDefaultMaxDepth, OutlineHardMaxDepth, createOutlineRegistry, outlineLanguage, outlineNodeFingerprint, } from "../outline/outline.js";
21
+ export { DefaultOutlineKeywords, OutlineKeywordRegistry, createOutlineKeywordRegistry } from "../outline/outlineKeywords.js";
22
+ export { buildSyntaxTree } from "./syntaxTree.js";
23
+ export { DefaultSyntaxRegistry, SyntaxRegistry, buildSyntaxTreeFromText, createSyntaxRegistry, disposeSyntaxNode, syntaxLanguageOf, wireSyntaxTree, } from "../syntax/syntaxTree.js";
24
+ export { OutlineIndex, buildOutlineIndex, filterOutline, hasLabelPrefix, wireOutline, wireOutlineNode, wireOutlineRange, outlineFromWire } from "../outline/outlineIndex.js";
25
+ export { extractImports, importedBy, isParseableSource, readSourceFile, resolveImportSpecifier, tokenizeSource } from "./importGraph.js";
26
+ export { extractExports } from "./exportGraph.js";
27
+ export { DependencyGraph, buildDependencyReport, graphFromImports } from "./dependency.js";
28
+ export { isOfficeFile, parseOffice, officeImports, officeExports, officeReferences, officeOutlineParser, installOfficeOutlineParser } from "../outline/office.js";
29
+ export { readCfb } from "./cfb.js";
30
+ export { readZipEntries, zipText } from "./zip.js";
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Deterministic, bounded metadata extraction for tree nodes.
3
+ *
4
+ * Descriptions are derived only from bytes the caller already has: a leading
5
+ * JSDoc or line comment, a Markdown heading and paragraph, front matter, a
6
+ * package manifest or the first paragraph of plain text. Extraction never
7
+ * touches the filesystem, never executes code and never inspects more than the
8
+ * first 64 KiB of a file, so building a tree stays cheap and side-effect free.
9
+ *
10
+ * The three fields have different jobs. `description` is a short identity line,
11
+ * `summary` adds detail for retrieval and `purpose` records what the host or the
12
+ * document explicitly says the node is for. Host annotations override all three,
13
+ * but they are descriptive only: they never change a fingerprint.
14
+ */
15
+ import type { Charset } from "../syntax/types.js";
16
+ import type { NodeAnnotation, TreeNode } from "./types.js";
17
+ /**
18
+ * Descriptive fields derived for one node.
19
+ */
20
+ export interface NodeDescription {
21
+ readonly description: string;
22
+ readonly summary: string;
23
+ readonly purpose: string;
24
+ }
25
+ /**
26
+ * Last path segment, accepting both POSIX and host separators so an absolute
27
+ * path is usable as a name fallback. The root path normalizes to `.`.
28
+ */
29
+ export declare const nameOfPath: (value: string) => string;
30
+ /**
31
+ * Last lowercase extension without the dot; the empty string when the name has
32
+ * no extension. A leading dot is a hidden-file marker, not an extension.
33
+ */
34
+ export declare const extensionOfPath: (value: string) => string;
35
+ /**
36
+ * Derive description/summary/purpose for one file from its detected charset and
37
+ * a bounded head of its bytes.
38
+ *
39
+ * @param absolute - Absolute host path, used only as a name fallback.
40
+ * @param relative - Root-relative POSIX path.
41
+ * @param charset - Detected charset; `binary`/`none` disable text extraction.
42
+ * @param head - First bytes of the file; at most 64 KiB are inspected.
43
+ * @param annotation - Optional host override.
44
+ * @returns The three descriptive fields.
45
+ */
46
+ export declare const describeFile: (absolute: string, relative: string, charset: Charset, head: Uint8Array, annotation?: NodeAnnotation) => NodeDescription;
47
+ /**
48
+ * Derive description/summary/purpose for one directory from its direct
49
+ * children.
50
+ *
51
+ * @param relative - Root-relative POSIX path.
52
+ * @param children - Direct children in tree order.
53
+ * @param annotation - Optional host override.
54
+ * @param readme - Optional README text used for the purpose.
55
+ * @returns The three descriptive fields.
56
+ */
57
+ export declare const describeDirectory: (relative: string, children: readonly TreeNode[], annotation?: NodeAnnotation, readme?: string) => NodeDescription;
58
+ /**
59
+ * Look up an annotation by exact root-relative path. Parent-directory
60
+ * annotations are not inherited: an override names exactly one node.
61
+ *
62
+ * @param annotations - Path-keyed override map.
63
+ * @param relative - Exact root-relative path.
64
+ * @returns The annotation when present.
65
+ */
66
+ export declare const annotationFor: (annotations: Readonly<Record<string, NodeAnnotation>> | undefined, relative: string) => NodeAnnotation | undefined;
@@ -0,0 +1,470 @@
1
+ import { decodeText } from "../syntax/charset.js";
2
+ const MaxHeadBytes = 64 * 1024;
3
+ const MaxDescriptionLength = 160;
4
+ const MaxSummaryLength = 400;
5
+ const MaxPurposeLength = 200;
6
+ const MaxSummaryChildren = 6;
7
+ const ScriptExtensions = new Set([
8
+ "js",
9
+ "jsx",
10
+ "mjs",
11
+ "cjs",
12
+ "ts",
13
+ "tsx",
14
+ "mts",
15
+ "cts",
16
+ "java",
17
+ "kt",
18
+ "kts",
19
+ "c",
20
+ "h",
21
+ "cc",
22
+ "cpp",
23
+ "hpp",
24
+ "cs",
25
+ "go",
26
+ "rs",
27
+ "swift",
28
+ ]);
29
+ const MarkdownExtensions = new Set(["md", "markdown", "mdx"]);
30
+ const collapse = (value) => value.replace(/\s+/gu, " ").trim();
31
+ const safeSliceEnd = (value, end) => {
32
+ let cut = Math.min(end, value.length);
33
+ if (cut > 0 && cut < value.length) {
34
+ const code = value.charCodeAt(cut - 1);
35
+ if (code >= 0xd800 && code <= 0xdbff) {
36
+ cut -= 1;
37
+ }
38
+ }
39
+ return cut;
40
+ };
41
+ const clip = (value, maximum) => {
42
+ if (value.length <= maximum) {
43
+ return value;
44
+ }
45
+ const cut = safeSliceEnd(value, Math.max(0, maximum - 3));
46
+ return `${value.slice(0, cut)}...`;
47
+ };
48
+ const normalizeField = (value, maximum) => clip(collapse(value), maximum);
49
+ /**
50
+ * Last path segment, accepting both POSIX and host separators so an absolute
51
+ * path is usable as a name fallback. The root path normalizes to `.`.
52
+ */
53
+ export const nameOfPath = (value) => {
54
+ const normalized = value.replace(/\\/g, "/").replace(/\/+$/, "");
55
+ if (normalized.length === 0 || normalized === ".") {
56
+ return ".";
57
+ }
58
+ const slash = normalized.lastIndexOf("/");
59
+ return slash === -1 ? normalized : normalized.slice(slash + 1);
60
+ };
61
+ /**
62
+ * Last lowercase extension without the dot; the empty string when the name has
63
+ * no extension. A leading dot is a hidden-file marker, not an extension.
64
+ */
65
+ export const extensionOfPath = (value) => {
66
+ const name = nameOfPath(value);
67
+ const dot = name.lastIndexOf(".");
68
+ if (dot <= 0 || dot === name.length - 1) {
69
+ return "";
70
+ }
71
+ return name.slice(dot + 1).toLowerCase();
72
+ };
73
+ const decodePreview = (head, charset) => {
74
+ if (charset === "binary" || charset === "none") {
75
+ return undefined;
76
+ }
77
+ const bounded = head.length > MaxHeadBytes ? head.subarray(0, MaxHeadBytes) : head;
78
+ const even = charset === "utf-16le" || charset === "utf-16be" ? bounded.subarray(0, bounded.length - (bounded.length % 2)) : bounded;
79
+ for (let trim = 0; trim <= 3; trim += 1) {
80
+ const candidate = trim === 0 ? even : even.subarray(0, Math.max(0, even.length - trim));
81
+ try {
82
+ return decodeText(candidate, charset);
83
+ }
84
+ catch {
85
+ continue;
86
+ }
87
+ }
88
+ return undefined;
89
+ };
90
+ const stripQuotes = (value) => {
91
+ const trimmed = value.trim();
92
+ if (trimmed.length >= 2) {
93
+ const first = trimmed[0];
94
+ const last = trimmed[trimmed.length - 1];
95
+ if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
96
+ return trimmed.slice(1, -1).trim();
97
+ }
98
+ }
99
+ return trimmed;
100
+ };
101
+ const parseFrontMatter = (text) => {
102
+ const normalized = text.replace(/\r\n?/g, "\n").replace(/^\uFEFF/, "");
103
+ const lines = normalized.split("\n");
104
+ if (lines.length === 0 || lines[0].trim() !== "---") {
105
+ return { body: normalized };
106
+ }
107
+ let closing = -1;
108
+ for (let index = 1; index < lines.length; index += 1) {
109
+ const marker = lines[index].trim();
110
+ if (marker === "---" || marker === "...") {
111
+ closing = index;
112
+ break;
113
+ }
114
+ }
115
+ if (closing === -1) {
116
+ return { body: normalized };
117
+ }
118
+ const fields = {};
119
+ for (let index = 1; index < closing; index += 1) {
120
+ const match = /^([A-Za-z][A-Za-z0-9_-]*)\s*:\s*(.*)$/.exec(lines[index]);
121
+ if (match === null) {
122
+ continue;
123
+ }
124
+ const key = match[1].toLowerCase();
125
+ const value = stripQuotes(match[2]);
126
+ if (value.length === 0) {
127
+ continue;
128
+ }
129
+ if (key === "title" && fields.title === (void 0)) {
130
+ fields.title = value;
131
+ }
132
+ else if (key === "description" && fields.description === (void 0)) {
133
+ fields.description = value;
134
+ }
135
+ else if (key === "purpose" && fields.purpose === (void 0)) {
136
+ fields.purpose = value;
137
+ }
138
+ }
139
+ return {
140
+ title: fields.title,
141
+ description: fields.description,
142
+ purpose: fields.purpose,
143
+ body: lines.slice(closing + 1).join("\n"),
144
+ };
145
+ };
146
+ const firstNonEmptyLine = (text) => {
147
+ const lines = text.replace(/\r\n?/g, "\n").split("\n");
148
+ for (let index = 0; index < lines.length; index += 1) {
149
+ const trimmed = lines[index].trim();
150
+ if (trimmed.length > 0) {
151
+ return trimmed;
152
+ }
153
+ }
154
+ return undefined;
155
+ };
156
+ const firstParagraph = (text) => {
157
+ const raw = text.replace(/\r\n?/g, "\n").split("\n");
158
+ const lines = [];
159
+ for (let index = 0; index < raw.length; index += 1) {
160
+ const line = raw[index].trim();
161
+ const next = index + 1 < raw.length ? raw[index + 1].trim() : "";
162
+ if (line.length > 0 && !line.startsWith("#") && /^=+\s*$/.test(next)) {
163
+ lines.push("");
164
+ index += 1;
165
+ continue;
166
+ }
167
+ lines.push(line);
168
+ }
169
+ const collected = [];
170
+ let started = false;
171
+ let fence = false;
172
+ for (let index = 0; index < lines.length; index += 1) {
173
+ const line = lines[index].trim();
174
+ const fenceLine = line.startsWith("```") || line.startsWith("~~~");
175
+ if (fenceLine) {
176
+ if (started) {
177
+ break;
178
+ }
179
+ fence = !fence;
180
+ continue;
181
+ }
182
+ if (fence) {
183
+ continue;
184
+ }
185
+ if (!started) {
186
+ if (line.length === 0 || line.startsWith("#")) {
187
+ continue;
188
+ }
189
+ started = true;
190
+ }
191
+ else if (line.length === 0 || line.startsWith("#")) {
192
+ break;
193
+ }
194
+ collected.push(line);
195
+ }
196
+ return collected.length === 0 ? undefined : collected.join(" ");
197
+ };
198
+ const firstMarkdownHeading = (text) => {
199
+ const lines = text.replace(/\r\n?/g, "\n").split("\n");
200
+ let fence = false;
201
+ for (let index = 0; index < lines.length; index += 1) {
202
+ const line = lines[index].trim();
203
+ if (line.startsWith("```") || line.startsWith("~~~")) {
204
+ fence = !fence;
205
+ continue;
206
+ }
207
+ if (fence) {
208
+ continue;
209
+ }
210
+ const match = /^#\s+(.+?)\s*#*\s*$/.exec(line);
211
+ if (match !== null) {
212
+ return match[1].trim();
213
+ }
214
+ const next = index + 1 < lines.length ? lines[index + 1].trim() : "";
215
+ if (line.length > 0 && !line.startsWith("#") && /^=+\s*$/.test(next)) {
216
+ return line;
217
+ }
218
+ }
219
+ return undefined;
220
+ };
221
+ const cleanComment = (lines) => {
222
+ const cleaned = [];
223
+ let purpose;
224
+ for (let index = 0; index < lines.length; index += 1) {
225
+ let value = lines[index].trim();
226
+ if (value.startsWith("*")) {
227
+ value = value.replace(/^\*+\s?/, "").trim();
228
+ }
229
+ if (value.length === 0) {
230
+ cleaned.push("");
231
+ continue;
232
+ }
233
+ const tag = /^@([A-Za-z][A-Za-z0-9_-]*)\s*(.*)$/.exec(value);
234
+ if (tag !== null) {
235
+ if (tag[1].toLowerCase() === "purpose") {
236
+ purpose = tag[2].trim();
237
+ }
238
+ continue;
239
+ }
240
+ cleaned.push(value);
241
+ }
242
+ return { text: cleaned.join("\n").trim(), purpose };
243
+ };
244
+ const extractLeadingComment = (text) => {
245
+ const lines = text.replace(/\r\n?/g, "\n").split("\n");
246
+ let index = 0;
247
+ while (index < lines.length && lines[index].trim().length === 0) {
248
+ index += 1;
249
+ }
250
+ if (index < lines.length && lines[index].trimStart().startsWith("#!")) {
251
+ index += 1;
252
+ }
253
+ while (index < lines.length && lines[index].trim().length === 0) {
254
+ index += 1;
255
+ }
256
+ if (index >= lines.length) {
257
+ return undefined;
258
+ }
259
+ const first = lines[index].trimStart();
260
+ if (first.startsWith("/*")) {
261
+ const raw = [];
262
+ let closed = false;
263
+ for (; index < lines.length; index += 1) {
264
+ const line = lines[index];
265
+ const open = line.indexOf("/*");
266
+ const content = line.slice(open === -1 ? 0 : open + 2);
267
+ const close = content.indexOf("*/");
268
+ raw.push(close === -1 ? content : content.slice(0, close));
269
+ if (close !== -1) {
270
+ closed = true;
271
+ break;
272
+ }
273
+ }
274
+ return closed ? cleanComment(raw) : undefined;
275
+ }
276
+ if (first.startsWith("//")) {
277
+ const raw = [];
278
+ for (; index < lines.length; index += 1) {
279
+ const trimmed = lines[index].trim();
280
+ if (trimmed.startsWith("//")) {
281
+ raw.push(trimmed.slice(2));
282
+ continue;
283
+ }
284
+ if (trimmed.length === 0) {
285
+ raw.push("");
286
+ continue;
287
+ }
288
+ break;
289
+ }
290
+ return raw.length === 0 ? undefined : cleanComment(raw);
291
+ }
292
+ return undefined;
293
+ };
294
+ const describePackage = (text, relative) => {
295
+ if (nameOfPath(relative).toLowerCase() !== "package.json") {
296
+ return undefined;
297
+ }
298
+ let parsed;
299
+ try {
300
+ parsed = JSON.parse(text);
301
+ }
302
+ catch {
303
+ return undefined;
304
+ }
305
+ if (typeof (parsed) !== "object" || parsed === null) {
306
+ return undefined;
307
+ }
308
+ const record = parsed;
309
+ const packageName = typeof (record.name) === "string" ? collapse(record.name) : "";
310
+ const declared = typeof (record.description) === "string" ? collapse(record.description) : "";
311
+ const description = packageName.length > 0 ? `Package ${packageName}.` : "File package.json.";
312
+ const summary = declared.length > 0 ? declared : description;
313
+ return {
314
+ description: normalizeField(description, MaxDescriptionLength),
315
+ summary: normalizeField(summary, MaxSummaryLength),
316
+ purpose: "not declared",
317
+ };
318
+ };
319
+ const withAnnotation = (base, annotation) => {
320
+ if (annotation === (void 0)) {
321
+ return base;
322
+ }
323
+ const description = annotation.description === (void 0) ? base.description : normalizeField(annotation.description, MaxDescriptionLength);
324
+ const summary = annotation.summary === (void 0) ? base.summary : normalizeField(annotation.summary, MaxSummaryLength);
325
+ const purpose = annotation.purpose === (void 0) ? base.purpose : normalizeField(annotation.purpose, MaxPurposeLength);
326
+ return { description, summary, purpose };
327
+ };
328
+ /**
329
+ * Derive description/summary/purpose for one file from its detected charset and
330
+ * a bounded head of its bytes.
331
+ *
332
+ * @param absolute - Absolute host path, used only as a name fallback.
333
+ * @param relative - Root-relative POSIX path.
334
+ * @param charset - Detected charset; `binary`/`none` disable text extraction.
335
+ * @param head - First bytes of the file; at most 64 KiB are inspected.
336
+ * @param annotation - Optional host override.
337
+ * @returns The three descriptive fields.
338
+ */
339
+ export const describeFile = (absolute, relative, charset, head, annotation) => {
340
+ const nameFromPath = relative === "." || relative.length === 0 ? absolute : relative;
341
+ const name = nameOfPath(nameFromPath);
342
+ const fallback = {
343
+ description: normalizeField(`File ${name}.`, MaxDescriptionLength),
344
+ summary: normalizeField(`File ${name}.`, MaxSummaryLength),
345
+ purpose: "not declared",
346
+ };
347
+ const text = decodePreview(head, charset);
348
+ let description;
349
+ let summary;
350
+ let purpose;
351
+ if (text !== (void 0)) {
352
+ const front = parseFrontMatter(text);
353
+ const body = front.body;
354
+ const extension = extensionOfPath(relative);
355
+ const isPackage = nameOfPath(relative).toLowerCase() === "package.json";
356
+ const packageDescription = describePackage(text, relative);
357
+ if (packageDescription !== (void 0)) {
358
+ description = packageDescription.description;
359
+ summary = packageDescription.summary;
360
+ purpose = packageDescription.purpose;
361
+ }
362
+ else if (isPackage) {
363
+ description = "File package.json.";
364
+ summary = description;
365
+ }
366
+ else if (MarkdownExtensions.has(extension)) {
367
+ description = firstMarkdownHeading(body) ?? firstNonEmptyLine(body);
368
+ summary = firstParagraph(body) ?? description;
369
+ }
370
+ else if (ScriptExtensions.has(extension)) {
371
+ const comment = extractLeadingComment(body);
372
+ if (comment !== (void 0)) {
373
+ purpose = comment.purpose;
374
+ }
375
+ if (comment !== (void 0) && comment.text.length > 0) {
376
+ description = firstNonEmptyLine(comment.text);
377
+ summary = collapse(comment.text);
378
+ }
379
+ else {
380
+ description = firstNonEmptyLine(body);
381
+ summary = firstParagraph(body);
382
+ }
383
+ }
384
+ else {
385
+ description = firstNonEmptyLine(body);
386
+ summary = firstParagraph(body);
387
+ }
388
+ if (front.title !== (void 0)) {
389
+ description = front.title;
390
+ }
391
+ if (front.description !== (void 0)) {
392
+ summary = front.description;
393
+ }
394
+ if (front.purpose !== (void 0)) {
395
+ purpose = front.purpose;
396
+ }
397
+ }
398
+ const resolvedDescription = normalizeField(description ?? "", MaxDescriptionLength);
399
+ const resolvedSummary = normalizeField(summary ?? description ?? "", MaxSummaryLength);
400
+ const resolvedPurpose = normalizeField(purpose ?? "", MaxPurposeLength);
401
+ const base = {
402
+ description: resolvedDescription.length > 0 ? resolvedDescription : fallback.description,
403
+ summary: resolvedSummary.length > 0 ? resolvedSummary : resolvedDescription.length > 0 ? resolvedDescription : fallback.summary,
404
+ purpose: resolvedPurpose.length > 0 ? resolvedPurpose : fallback.purpose,
405
+ };
406
+ return withAnnotation(base, annotation);
407
+ };
408
+ /**
409
+ * Derive description/summary/purpose for one directory from its direct
410
+ * children.
411
+ *
412
+ * @param relative - Root-relative POSIX path.
413
+ * @param children - Direct children in tree order.
414
+ * @param annotation - Optional host override.
415
+ * @param readme - Optional README text used for the purpose.
416
+ * @returns The three descriptive fields.
417
+ */
418
+ export const describeDirectory = (relative, children, annotation, readme) => {
419
+ const name = nameOfPath(relative);
420
+ let files = 0;
421
+ let directories = 0;
422
+ const names = [];
423
+ for (let index = 0; index < children.length; index += 1) {
424
+ const child = children[index];
425
+ if (child.type === "File") {
426
+ files += 1;
427
+ names.push(child.name);
428
+ }
429
+ else {
430
+ directories += 1;
431
+ names.push(`${child.name}/`);
432
+ }
433
+ }
434
+ names.sort((left, right) => (left < right ? -1 : left > right ? 1 : 0));
435
+ const fileWord = files === 1 ? "file" : "files";
436
+ const directoryWord = directories === 1 ? "directory" : "directories";
437
+ const description = `Directory ${name} with ${files} ${fileWord} and ${directories} ${directoryWord}.`;
438
+ const visible = names.slice(0, MaxSummaryChildren);
439
+ const hidden = names.length - visible.length;
440
+ const summary = names.length === 0 ? "Empty directory." : `Children: ${visible.join(", ")}${hidden > 0 ? ` (+${hidden} more)` : ""}.`;
441
+ let purpose = "not declared";
442
+ if (readme !== (void 0)) {
443
+ const bounded = readme.length > MaxHeadBytes ? readme.slice(0, MaxHeadBytes) : readme;
444
+ const front = parseFrontMatter(bounded);
445
+ purpose = front.purpose ?? firstParagraph(front.body) ?? firstMarkdownHeading(front.body) ?? "not declared";
446
+ }
447
+ const base = {
448
+ description: normalizeField(description, MaxDescriptionLength),
449
+ summary: normalizeField(summary, MaxSummaryLength),
450
+ purpose: normalizeField(purpose, MaxPurposeLength),
451
+ };
452
+ return withAnnotation(base, annotation);
453
+ };
454
+ /**
455
+ * Look up an annotation by exact root-relative path. Parent-directory
456
+ * annotations are not inherited: an override names exactly one node.
457
+ *
458
+ * @param annotations - Path-keyed override map.
459
+ * @param relative - Exact root-relative path.
460
+ * @returns The annotation when present.
461
+ */
462
+ export const annotationFor = (annotations, relative) => {
463
+ if (annotations === (void 0) || annotations === null) {
464
+ return undefined;
465
+ }
466
+ if (!Object.prototype.hasOwnProperty.call(annotations, relative)) {
467
+ return undefined;
468
+ }
469
+ return annotations[relative];
470
+ };
@@ -0,0 +1,60 @@
1
+ import type { SessionOperation, SessionRoot } from "../session/types.js";
2
+ import type { RootedPath } from "./types.js";
3
+ /**
4
+ * Sandbox options. Symlink following is off by default because a link is a
5
+ * capability the session was not granted.
6
+ */
7
+ export interface PathSandboxOptions {
8
+ readonly followSymlinks?: boolean;
9
+ }
10
+ export declare class PathSandbox {
11
+ private readonly roots;
12
+ private readonly byId;
13
+ private readonly followSymlinks;
14
+ private readonly defaultRootId;
15
+ constructor(roots: readonly SessionRoot[], options?: PathSandboxOptions);
16
+ /**
17
+ * All roots, in the order the session declared them.
18
+ */
19
+ listRoots(): readonly SessionRoot[];
20
+ /**
21
+ * The root used when a path does not name one explicitly.
22
+ */
23
+ defaultRoot(): SessionRoot;
24
+ /**
25
+ * Look up a root by id.
26
+ */
27
+ root(id: string): SessionRoot;
28
+ /**
29
+ * Resolve a caller path to a root, a normalized relative path and an
30
+ * absolute host path. The method does not require the target to exist; a
31
+ * write may create it. Symlink checks stop at the first missing component.
32
+ *
33
+ * @param input - Root-relative POSIX path, optionally prefixed by `rootId/`.
34
+ * @param operation - Operation used for writability checks.
35
+ * @returns Resolved path.
36
+ */
37
+ resolve(input: unknown, operation: SessionOperation): RootedPath;
38
+ /**
39
+ * Whether an absolute path is inside a root, using the platform's case
40
+ * sensitivity.
41
+ */
42
+ contains(rootPath: string, absolute: string): boolean;
43
+ /**
44
+ * Prefix/name exclusion. A bare name excludes a segment at any depth; a
45
+ * value containing `/` is a root-relative prefix.
46
+ */
47
+ isExcluded(root: SessionRoot, relative: string): boolean;
48
+ /**
49
+ * The root-relative POSIX path for an absolute path already known to be in
50
+ * the root.
51
+ */
52
+ relative(root: SessionRoot, absolute: string): string;
53
+ /**
54
+ * Re-check that a path still resolves inside its root. Used after a write
55
+ * rename and before a read, so a component swapped for a symlink between
56
+ * resolution and I/O is rejected.
57
+ */
58
+ revalidate(rooted: RootedPath): void;
59
+ private assertNoSymlinkEscape;
60
+ }