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,305 @@
1
+ /**
2
+ * Literal spellings owned by this module.
3
+ *
4
+ * The frozen naming table is typed `string` today, so the casts below are the
5
+ * only place this file narrows a table value to its literal; once the table
6
+ * carries literal types the casts disappear without changing any consumer.
7
+ */
8
+ type WorkspaceProtocolName = "amp_protocol_workspace";
9
+ type WorkspaceVersion = 1;
10
+ type WorkspaceServiceName = "amp_service_workspace";
11
+ /**
12
+ * Wire protocol value. The literal type is intentional: `WorkspaceResponse` is
13
+ * constrained by it, so a widened `string` would let a response advertise a
14
+ * protocol this service does not implement.
15
+ */
16
+ export declare const WorkspaceProtocol: WorkspaceProtocolName;
17
+ /**
18
+ * Envelope version. Kept as the literal `1` because the response type embeds
19
+ * it; changing it is a breaking wire change rather than a routine edit.
20
+ */
21
+ export declare const WorkspaceProtocolVersion: WorkspaceVersion;
22
+ /**
23
+ * Service identity published as `serverInfo.name` and repeated as `serviceId`.
24
+ * Hosts route per server, so the namespace must be stable across every
25
+ * transport instead of being derived from whatever process happens to run it.
26
+ */
27
+ export declare const WorkspaceServiceId: WorkspaceServiceName;
28
+ /**
29
+ * Legacy protocol spellings kept for lenient hosts. Exporting them here lets a
30
+ * host compare an old `amp.workspace` value without hard-coding it, while the
31
+ * server itself writes only `WorkspaceProtocol`.
32
+ */
33
+ export { WorkspaceProtocolAliases } from "../naming/index.js";
34
+ /**
35
+ * Error taxonomy callers branch on.
36
+ *
37
+ * The set is closed and the strings are part of the wire contract, so a new
38
+ * failure mode needs a new code rather than a free-form message; that is what
39
+ * lets an adapter map a failure without parsing prose.
40
+ */
41
+ export type WorkspaceErrorCode = "invalid_arguments" | "unknown_tool" | "revision_mismatch" | "not_available" | "frame_unavailable" | "write_unavailable" | "run_unavailable" | "unsupported_action" | "fingerprint_mismatch" | "stale_detail" | "budget_exhausted" | "capacity_exceeded" | "response_too_large" | "integrity_failure" | "internal_error";
42
+ /**
43
+ * Success or failure envelope.
44
+ *
45
+ * `protocol`, `version` and `revision` stay on both branches so a host can
46
+ * reject a stale or foreign response before inspecting `ok`; `data` and `error`
47
+ * are mutually exclusive so a caller never has to decide which half to trust.
48
+ */
49
+ export type WorkspaceResponse = {
50
+ protocol: typeof WorkspaceProtocol;
51
+ version: typeof WorkspaceProtocolVersion;
52
+ revision: string;
53
+ } & ({
54
+ ok: true;
55
+ data: Record<string, unknown>;
56
+ } | {
57
+ ok: false;
58
+ error: {
59
+ code: WorkspaceErrorCode;
60
+ message: string;
61
+ };
62
+ });
63
+ /**
64
+ * Advertised tool descriptor.
65
+ *
66
+ * Kept structural instead of importing an MCP type so the same definition can
67
+ * feed `tools/list`, the direct registry and the catalog digest without the
68
+ * protocol module depending on any adapter.
69
+ */
70
+ export interface WorkspaceToolDefinition {
71
+ name: string;
72
+ description: string;
73
+ inputSchema: Record<string, unknown>;
74
+ /**
75
+ * Side-effect class. `read` covers discovery and detail reads; `write`
76
+ * covers the one tool that asks the host to persist new project content.
77
+ * The field is carried on the descriptor so the registry, the MCP
78
+ * annotations and the catalog digest cannot disagree about a tool.
79
+ */
80
+ risk: WorkspaceRisk;
81
+ }
82
+ /**
83
+ * Closed side-effect classes for workspace tools.
84
+ */
85
+ export type WorkspaceRisk = "read" | "write";
86
+ /**
87
+ * One relative file reached through an `imports` relation.
88
+ *
89
+ * `id` is the opaque workspace key the caller can re-query, while `path` is the
90
+ * project-relative source URI a human reads. `line` is the 1-based line of the
91
+ * extraction site and `method` records how the edge was produced.
92
+ */
93
+ export interface WorkspaceFileLink {
94
+ id: string;
95
+ path: string;
96
+ line?: number;
97
+ method: "manifest" | "compiler" | "explicit";
98
+ }
99
+ /**
100
+ * Files that import the node's file: the consumers of its exports.
101
+ *
102
+ * `path` is the node's containing file (or `null` when the node is not inside a
103
+ * file). `files` is bounded by the service's `maxFileLinks`; `total` is the
104
+ * untruncated count and `truncated` says whether `files` is a prefix.
105
+ */
106
+ export interface WorkspaceExportation {
107
+ path: string | null;
108
+ files: WorkspaceFileLink[];
109
+ total: number;
110
+ truncated: boolean;
111
+ }
112
+ /**
113
+ * Files the node's file imports, plus the bare package specifiers it depends on.
114
+ *
115
+ * Only relative workspace files appear in `files`; declarations outside the
116
+ * indexed snapshot stay in `external` because there is no relative path to
117
+ * report for them. Missing edges are extraction gaps, not proof of independence.
118
+ */
119
+ export interface WorkspaceImportation {
120
+ path: string | null;
121
+ files: WorkspaceFileLink[];
122
+ external: string[];
123
+ /**
124
+ * Untruncated external-specifier count and whether `external` was cut by
125
+ * `maxFileLinks`. Kept separate from `total`/`truncated`, which describe
126
+ * the relative-file list.
127
+ */
128
+ externalTotal: number;
129
+ externalTruncated: boolean;
130
+ total: number;
131
+ truncated: boolean;
132
+ }
133
+ /**
134
+ * Dependency/impact facts attached to detail reads and writes.
135
+ */
136
+ export interface WorkspaceImpacts {
137
+ exportation: WorkspaceExportation;
138
+ importation: WorkspaceImportation;
139
+ }
140
+ /**
141
+ * Actions the project tool accepts. `detect` only inspects the snapshot; the
142
+ * other four are handed to the host runner, which owns the decision to execute.
143
+ */
144
+ export type WorkspaceProjectAction = "detect" | "build" | "compile" | "run" | "test";
145
+ /**
146
+ * The manifest file that made a brand recognisable.
147
+ */
148
+ export interface WorkspaceProjectManifest {
149
+ id: string;
150
+ path: string;
151
+ }
152
+ /**
153
+ * One detected project brand with the conventional commands for it.
154
+ *
155
+ * Commands are suggestions for the host runner, not a shell grammar: the agent
156
+ * cannot supply one, and the runner may reject or rewrite any of them.
157
+ */
158
+ export interface WorkspaceProjectBrand {
159
+ brand: string;
160
+ language: string;
161
+ manifest: WorkspaceProjectManifest;
162
+ actions: WorkspaceProjectAction[];
163
+ commands: Partial<Record<WorkspaceProjectAction, string>>;
164
+ }
165
+ /**
166
+ * One project's detection result. `brand`/`manifest`/`commands` are the primary
167
+ * (most specific) evidence; `detected` keeps every brand found so a caller can
168
+ * choose when a repository mixes toolchains.
169
+ */
170
+ export interface WorkspaceProjectSummary {
171
+ projectId: string;
172
+ label: string;
173
+ cwd: string;
174
+ brand: string;
175
+ language: string;
176
+ manifest: WorkspaceProjectManifest | null;
177
+ actions: WorkspaceProjectAction[];
178
+ commands: Partial<Record<WorkspaceProjectAction, string>>;
179
+ detected: WorkspaceProjectBrand[];
180
+ }
181
+ /**
182
+ * One node in the cascading project outline.
183
+ *
184
+ * `children` nests project → directory → file → symbol/knowledge, and
185
+ * `childCount` is the untruncated number of children so a caller can tell a
186
+ * leaf from a node the `limit` cut.
187
+ */
188
+ export interface WorkspaceOutlineNode {
189
+ id: string;
190
+ kind: "project" | "directory" | "file" | "symbol" | "knowledge";
191
+ label: string;
192
+ path: string;
193
+ structureKind?: string;
194
+ startLine?: number;
195
+ endLine?: number;
196
+ childCount: number;
197
+ children: WorkspaceOutlineNode[];
198
+ }
199
+ /**
200
+ * One project dependency edge with the declaration that produced it.
201
+ */
202
+ export interface WorkspaceDependencyEdge {
203
+ id: string;
204
+ kind: string;
205
+ label: string;
206
+ path: string;
207
+ method: "manifest" | "compiler" | "explicit";
208
+ line?: number;
209
+ }
210
+ /**
211
+ * One project's dependencies and dependents.
212
+ */
213
+ export interface WorkspaceProjectDependency {
214
+ projectId: string;
215
+ label: string;
216
+ dependencies: WorkspaceDependencyEdge[];
217
+ dependents: WorkspaceDependencyEdge[];
218
+ }
219
+ /**
220
+ * Node properties the reactive surface may write.
221
+ *
222
+ * `summary`/`label`/`tags` are service-local annotations: they change what the
223
+ * reactive tree (and later reads of the node card) report without touching the
224
+ * host. `content` is the guarded file write and needs the same materialized
225
+ * allocation and host write port as `amp_tool_workspace_write`.
226
+ */
227
+ export type WorkspaceReactiveProperty = "summary" | "label" | "tags" | "content";
228
+ /**
229
+ * Plain projection of a reactive node. The in-process value is a Proxy whose
230
+ * `children`/`content` properties materialize lazily; `toJSON` produces this
231
+ * shape, bounded by the call's `maxDepth`/`limit`.
232
+ */
233
+ export interface WorkspaceReactiveNode {
234
+ id: string;
235
+ kind: string;
236
+ label: string;
237
+ path: string;
238
+ summary: string;
239
+ tags: string[];
240
+ structureKind?: string;
241
+ startLine?: number;
242
+ endLine?: number;
243
+ revision: string;
244
+ childCount: number;
245
+ children: WorkspaceReactiveNode[];
246
+ truncated?: boolean;
247
+ }
248
+ /**
249
+ * One comparable file node from `diff_read`. `revision` is the content revision
250
+ * the snapshot records, so two calls over different revisions can be compared
251
+ * without fetching bodies; `bytes`/`lines` are derived from the stored detail
252
+ * and stay `null` when the host did not provide it.
253
+ */
254
+ export interface WorkspaceDiffNode {
255
+ id: string;
256
+ kind: "project" | "directory" | "file";
257
+ label: string;
258
+ path: string;
259
+ revision: string;
260
+ bytes: number | null;
261
+ lines: number | null;
262
+ content: string | null;
263
+ contentOmitted: boolean;
264
+ /**
265
+ * True when `content` is a prefix of the file rather than the whole body
266
+ * (the service caps it at `maxReadChars`). `bytes`/`lines` always describe
267
+ * the whole file, so a truncated body is never mistaken for a short one.
268
+ */
269
+ contentTruncated: boolean;
270
+ childCount: number;
271
+ children: WorkspaceDiffNode[];
272
+ }
273
+ /**
274
+ * One changed region reported by `diff_write`.
275
+ */
276
+ export interface WorkspaceDiffHunk {
277
+ beforeStart: number;
278
+ beforeLines: number;
279
+ afterStart: number;
280
+ afterLines: number;
281
+ }
282
+ /**
283
+ * Return fresh copies of the descriptors.
284
+ *
285
+ * The definitions are module-level state; handing out the originals would let
286
+ * one adapter's tampering change what another adapter advertises. The clone
287
+ * keeps every caller's mutations local without duplicating the source table.
288
+ */
289
+ export declare const workspaceToolDefinitions: () => WorkspaceToolDefinition[];
290
+ /**
291
+ * Canonical tool id to its single leaf segment.
292
+ *
293
+ * Dispatch needs the operation token, and parsing it once here means the
294
+ * service never slices a name by hand or re-derives a convention the grammar
295
+ * already owns. Deriving from `Definitions` rather than a second literal table
296
+ * keeps the map and the advertised tools from drifting apart; a descriptor that
297
+ * stops being a single-leaf workspace tool fails at module load instead of at
298
+ * the first call.
299
+ */
300
+ declare const WorkspaceToolLeaves: ReadonlyMap<string, string>;
301
+ /**
302
+ * Frozen-contract alias for the leaf index; the local binding stays PascalCase
303
+ * because it is module-level data, matching the alias convention in naming.
304
+ */
305
+ export { WorkspaceToolLeaves as workspaceToolLeaves };
@@ -0,0 +1,258 @@
1
+ /**
2
+ * AMP workspace extension v1. Local entity IDs are opaque workspace keys, not
3
+ * paths or global AMP object IDs. JSON Schemas are shared by all adapters.
4
+ *
5
+ * The file lives outside `src/context` because a protocol is a wire contract,
6
+ * not a domain concept: direct executors and MCP bridges both need the same
7
+ * identities and schemas, and a domain directory must not own a public protocol
8
+ * surface. Every name comes from the frozen naming table, so this file adds no
9
+ * second spelling of an id.
10
+ */
11
+ import { MaxLeafSegments, parseId, ProtocolIds, ServiceIds, ToolIds } from "../naming/index.js";
12
+ import { ComponentKinds, DiscoveryScopes, ModuleKinds } from "../discover/kinds.js";
13
+ /**
14
+ * Wire protocol value. The literal type is intentional: `WorkspaceResponse` is
15
+ * constrained by it, so a widened `string` would let a response advertise a
16
+ * protocol this service does not implement.
17
+ */
18
+ export const WorkspaceProtocol = ProtocolIds.workspace;
19
+ /**
20
+ * Envelope version. Kept as the literal `1` because the response type embeds
21
+ * it; changing it is a breaking wire change rather than a routine edit.
22
+ */
23
+ export const WorkspaceProtocolVersion = 1;
24
+ /**
25
+ * Service identity published as `serverInfo.name` and repeated as `serviceId`.
26
+ * Hosts route per server, so the namespace must be stable across every
27
+ * transport instead of being derived from whatever process happens to run it.
28
+ */
29
+ export const WorkspaceServiceId = ServiceIds.workspace;
30
+ /**
31
+ * Legacy protocol spellings kept for lenient hosts. Exporting them here lets a
32
+ * host compare an old `amp.workspace` value without hard-coding it, while the
33
+ * server itself writes only `WorkspaceProtocol`.
34
+ */
35
+ export { WorkspaceProtocolAliases } from "../naming/index.js";
36
+ const Key = { type: "string", minLength: 1, maxLength: 4096 };
37
+ const Keys = { type: "array", items: Key, maxItems: 100 };
38
+ const Kinds = ["project_depends_on", "imports", "calls", "references", "documents"];
39
+ const Page = {
40
+ offset: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
41
+ limit: { type: "integer", minimum: 1, maximum: 100 },
42
+ };
43
+ /**
44
+ * Line-addressed page bounds. The ceiling matches the filesystem read tool so a
45
+ * host can map one addressing model onto both surfaces without a second limit.
46
+ */
47
+ const LineNumber = { type: "integer", minimum: 1, maximum: Number.MAX_SAFE_INTEGER };
48
+ const MaxPageBytes = 262144;
49
+ /**
50
+ * Largest single write this protocol accepts. The service enforces the same
51
+ * ceiling on the resulting content, because line/byte splices can grow a file
52
+ * beyond the length of the replacement text.
53
+ */
54
+ const MaxWriteChars = 1048576;
55
+ /**
56
+ * One line splice for `diff_write`. The validator understands nested object
57
+ * schemas, so the change list stays strictly typed without free-form patches.
58
+ */
59
+ const LineChangeSchema = {
60
+ type: "object",
61
+ properties: {
62
+ startLine: LineNumber,
63
+ endLine: LineNumber,
64
+ content: { type: "string", maxLength: MaxWriteChars },
65
+ },
66
+ required: ["startLine", "endLine", "content"],
67
+ additionalProperties: false,
68
+ };
69
+ /**
70
+ * One UTF-8 byte splice for `diff_write`.
71
+ */
72
+ const ByteChangeSchema = {
73
+ type: "object",
74
+ properties: {
75
+ offsetBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
76
+ endBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
77
+ content: { type: "string", maxLength: MaxWriteChars },
78
+ },
79
+ required: ["offsetBytes", "endBytes", "content"],
80
+ additionalProperties: false,
81
+ };
82
+ /**
83
+ * Build one descriptor from its canonical id.
84
+ *
85
+ * The caller supplies a `ToolIds` value rather than a leaf, so a definition
86
+ * cannot silently invent a name that the naming table and the alias resolver do
87
+ * not know about. Schema field order is fixed here because the catalog digest
88
+ * covers the schema as canonical JSON, not as a reordered authoring choice.
89
+ * `risk` is part of the descriptor rather than a side table so the digest, the
90
+ * registry and the MCP annotations cannot disagree about a side effect.
91
+ */
92
+ const definition = (id, risk, description, properties, required = []) => ({
93
+ name: id,
94
+ risk,
95
+ description,
96
+ inputSchema: { type: "object", properties, required, additionalProperties: false },
97
+ });
98
+ const Definitions = [
99
+ definition(ToolIds.workspaceCapabilities, "read", "Discover authorized workspace projects, revision, registered Frame IDs and service limits. Does not grant new access.", {}),
100
+ definition(ToolIds.workspaceTree, "read", "List project roots or direct structural children with native source locations; no summary or detail bodies. Use offset for pagination.", { revision: Key, parentId: Key, ...Page }, ["revision"]),
101
+ definition(ToolIds.workspaceQuery, "read", "Find candidate IDs using lexical AND search and bounded graph traversal. Candidates need host Frame allocation before content reads.", {
102
+ revision: Key,
103
+ text: { type: "string", maxLength: 4096 },
104
+ seedIds: Keys,
105
+ projectIds: Keys,
106
+ relationKinds: { type: "array", items: { type: "string", enum: Kinds }, maxItems: 5 },
107
+ direction: { type: "string", enum: ["incoming", "outgoing", "both"] },
108
+ maxDepth: { type: "integer", minimum: 0, maximum: 10 },
109
+ limit: Page.limit,
110
+ }, ["revision"]),
111
+ definition(ToolIds.workspaceRelations, "read", "Page descriptive dependency/call/reference edges for one authorized node. Does not materialize either endpoint.", {
112
+ revision: Key,
113
+ nodeId: Key,
114
+ direction: { type: "string", enum: ["incoming", "outgoing"] },
115
+ relationKind: { type: "string", enum: Kinds },
116
+ ...Page,
117
+ }, ["revision", "nodeId", "direction"]),
118
+ definition(ToolIds.workspaceDiscover, "read", "Discover authorized projects, internal modules (service/tool/...), file names and bounded content matches, plus host-registered plugins/services/tools, as one structural tree. Project nodes carry description, purpose and summary. Read-only; snippets are discovery evidence, not a detail grant.", {
119
+ revision: Key,
120
+ text: { type: "string", maxLength: 512 },
121
+ scope: { type: "string", enum: DiscoveryScopes },
122
+ moduleKind: { type: "string", enum: ModuleKinds },
123
+ componentKind: { type: "string", enum: ComponentKinds },
124
+ extension: { type: "string", maxLength: 16 },
125
+ pathPrefix: { type: "string", maxLength: 1024 },
126
+ content: { type: "boolean" },
127
+ maxDepth: { type: "integer", minimum: 0, maximum: 12 },
128
+ limit: { type: "integer", minimum: 1, maximum: 200 },
129
+ }, ["revision"]),
130
+ definition(ToolIds.workspaceMaterialize, "read", "Materialize a host-registered Frame once. Repeated calls reuse its Context. Only summaries fitting the requested and host/Frame budgets are returned.", {
131
+ revision: Key,
132
+ frameId: Key,
133
+ budgetTokens: { type: "integer", minimum: 1, maximum: 32000 },
134
+ }, ["revision", "frameId", "budgetTokens"]),
135
+ definition(ToolIds.workspaceRead, "read", "Read a bounded page of CAS-verified detail from an explicitly allocated, materialized target. Structural ancestors alone do not grant detail access. Page by character offset (default), by 1-based lines (startLine/maxLines) or by UTF-8 bytes (offsetBytes/maxBytes); the char `offset`/`nextOffset` pair continues any page, a byte offset inside a character advances to the next boundary, and one line longer than the page budget is returned whole. The reply also carries the containing file's `exportation` (relative files that import it) and `importation` (relative files it imports, plus truncated `external` package specifiers) from the indexed snapshot, so an edit can be scoped without a second query. A symbol or knowledge page whose containing file was written through this service answers `stale_detail` until the host refreshes the snapshot.", {
136
+ revision: Key,
137
+ contextId: Key,
138
+ nodeId: Key,
139
+ offset: Page.offset,
140
+ maxChars: { type: "integer", minimum: 1, maximum: 16000 },
141
+ startLine: LineNumber,
142
+ maxLines: { type: "integer", minimum: 1, maximum: 2000 },
143
+ offsetBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
144
+ maxBytes: { type: "integer", minimum: 1, maximum: MaxPageBytes },
145
+ }, ["revision", "contextId", "nodeId"]),
146
+ definition(ToolIds.workspaceWrite, "write", "Replace project content for one explicitly allocated, materialized file target. Address the whole node (default), a 1-based line range (startLine/endLine) or a UTF-8 byte range (offsetBytes/endBytes); `content` is inserted in place of that span. Line mode keeps the file's line-terminator shape: a missing final terminator is supplied and empty `content` deletes the selected lines. Byte offsets must fall on a UTF-8 character boundary. `expectRevision` is compare-and-swap against the content revision a previous read returned; `dryRun` validates and previews without asking the host to persist. The reply carries the same `exportation`/`importation` edges as `read`; the indexed snapshot is not re-parsed, so those lists describe the snapshot rather than the new text.", {
147
+ revision: Key,
148
+ contextId: Key,
149
+ nodeId: Key,
150
+ content: { type: "string", maxLength: MaxWriteChars },
151
+ startLine: LineNumber,
152
+ endLine: LineNumber,
153
+ offsetBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
154
+ endBytes: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
155
+ expectRevision: { type: "string", minLength: 1, maxLength: 256 },
156
+ dryRun: { type: "boolean" },
157
+ }, ["revision", "contextId", "nodeId", "content"]),
158
+ definition(ToolIds.workspaceProject, "write", "Detect a project's brand from manifest and lockfile evidence (npm/pnpm/yarn/bun, Maven, Gradle, CMake, Cargo, Go, Python, Make, Composer, .NET, Bundler, Swift, sbt) with its conventional build/compile/run/test commands. `action: \"detect\"` only reads the snapshot; any other action hands exactly one host-chosen command to the runner port, so an agent can never author a command string. Without `brand` the first detected brand that defines the requested action is used; a pinned `brand` that lacks it fails `unsupported_action`. Execution is host-gated: without a runner the call fails `run_unavailable`. `dryRun` returns the command without running it.", {
159
+ revision: Key,
160
+ projectId: Key,
161
+ action: { type: "string", enum: ["detect", "build", "compile", "run", "test"] },
162
+ brand: { type: "string", minLength: 1, maxLength: 32 },
163
+ dryRun: { type: "boolean" },
164
+ }, ["revision"]),
165
+ definition(ToolIds.workspaceOutline, "read", "Return one cascading outline for a project: project → directories → files → symbol/knowledge nodes, each with its project-relative path and 1-based source range. File bodies and summaries are not returned. `maxDepth` and `limit` bound the tree, and each node's `childCount` reports how many children it has before truncation. Use `pathPrefix`/`extension` to keep the outline focused and `includeSymbols: false` for directories and files only.", {
166
+ revision: Key,
167
+ projectId: Key,
168
+ pathPrefix: { type: "string", maxLength: 1024 },
169
+ extension: { type: "string", maxLength: 16 },
170
+ maxDepth: { type: "integer", minimum: 0, maximum: 12 },
171
+ limit: { type: "integer", minimum: 1, maximum: 2000 },
172
+ includeSymbols: { type: "boolean" },
173
+ }, ["revision"]),
174
+ definition(ToolIds.workspaceDependency, "read", "Report project-level dependencies and dependents from manifest/compiler `project_depends_on` edges, with the declaring source and extraction method. File-level imports stay on `read` and `relations`. `direction` selects outgoing, incoming or both; `offset`/`limit` page the project list.", {
175
+ revision: Key,
176
+ projectId: Key,
177
+ direction: { type: "string", enum: ["outgoing", "incoming", "both"] },
178
+ offset: Page.offset,
179
+ limit: { type: "integer", minimum: 1, maximum: 200 },
180
+ }, ["revision"]),
181
+ definition(ToolIds.workspaceReactiveRead, "read", "Return a reactive workspace tree. In process every node is a Proxy whose `label`, `summary`, `tags`, `revision`, `childCount` and `children` are materialized on first access and cached; `toJSON` (and therefore the wire response) is a bounded plain projection of the same tree. Structural metadata only: no file bodies. Use `reactive_write` to change a cached property; the reply reports the cache version and the invalidated ancestors.", {
182
+ revision: Key,
183
+ projectId: Key,
184
+ nodeId: Key,
185
+ maxDepth: { type: "integer", minimum: 0, maximum: 12 },
186
+ limit: { type: "integer", minimum: 1, maximum: 2000 },
187
+ }, ["revision"]),
188
+ definition(ToolIds.workspaceReactiveWrite, "write", "Set one property on a reactive node and refresh the affected cache. `summary`, `label` and `tags` update the service-local annotation overlay and are immediately visible to the next `reactive_read`; they are not persisted to the host. `content` replaces a file's text and is the guarded write path: it needs a materialized Context, the same readable target as `write`, compare-and-swap and the host write port. The reply lists the invalidated node ids and the new cache version, plus the write payload for `content`.", {
189
+ revision: Key,
190
+ nodeId: Key,
191
+ property: { type: "string", enum: ["summary", "label", "tags", "content"] },
192
+ value: {
193
+ anyOf: [
194
+ { type: "string", minLength: 1, maxLength: 4096 },
195
+ { type: "array", items: Key, maxItems: 32 },
196
+ ],
197
+ },
198
+ contextId: Key,
199
+ expectRevision: { type: "string", minLength: 1, maxLength: 256 },
200
+ dryRun: { type: "boolean" },
201
+ }, ["revision", "nodeId", "property", "value"]),
202
+ definition(ToolIds.workspaceDiffRead, "read", "Return a comparable tree for diffing: project → directory → file, where every node carries its content `revision` and each file reports `bytes`/`lines` derived from the stored detail. Because the identity and revision fields are stable, two calls over different snapshots can be compared directly. `includeContent` additionally returns bounded file text, and only for targets readable in the supplied materialized Context; every other file reports `content: null, contentOmitted: true`.", {
203
+ revision: Key,
204
+ projectId: Key,
205
+ pathPrefix: { type: "string", maxLength: 1024 },
206
+ extension: { type: "string", maxLength: 16 },
207
+ contextId: Key,
208
+ includeContent: { type: "boolean" },
209
+ limit: { type: "integer", minimum: 1, maximum: 2000 },
210
+ }, ["revision"]),
211
+ definition(ToolIds.workspaceDiffWrite, "write", "Write one file from a diff decision. Supply exactly one of `content` (whole file), `changes` (1-based line splices) or `byteChanges` (UTF-8 byte splices); line and byte changes apply bottom-up so ranges stay valid, then the whole result is persisted through the host write port. The reply reports the strategy, the line diff (`added`/`removed`/`unchanged` and bounded hunks), the content revision, and the same `exportation`/`importation` facts as `read`. Auth, CAS (`expectRevision`) and `dryRun` match `write`.", {
212
+ revision: Key,
213
+ contextId: Key,
214
+ nodeId: Key,
215
+ content: { type: "string", maxLength: MaxWriteChars },
216
+ changes: { type: "array", items: LineChangeSchema, maxItems: 100 },
217
+ byteChanges: { type: "array", items: ByteChangeSchema, maxItems: 100 },
218
+ contextLines: { type: "integer", minimum: 0, maximum: 20 },
219
+ expectRevision: { type: "string", minLength: 1, maxLength: 256 },
220
+ dryRun: { type: "boolean" },
221
+ }, ["revision", "contextId", "nodeId"]),
222
+ definition(ToolIds.workspaceRelease, "read", "Release this service's Context handle. Does not create an action Receipt or refund/reopen its Frame budget.", { revision: Key, contextId: Key }, ["revision", "contextId"]),
223
+ ];
224
+ /**
225
+ * Return fresh copies of the descriptors.
226
+ *
227
+ * The definitions are module-level state; handing out the originals would let
228
+ * one adapter's tampering change what another adapter advertises. The clone
229
+ * keeps every caller's mutations local without duplicating the source table.
230
+ */
231
+ export const workspaceToolDefinitions = () => structuredClone(Definitions);
232
+ /**
233
+ * Canonical tool id to its single leaf segment.
234
+ *
235
+ * Dispatch needs the operation token, and parsing it once here means the
236
+ * service never slices a name by hand or re-derives a convention the grammar
237
+ * already owns. Deriving from `Definitions` rather than a second literal table
238
+ * keeps the map and the advertised tools from drifting apart; a descriptor that
239
+ * stops being a single-leaf workspace tool fails at module load instead of at
240
+ * the first call.
241
+ */
242
+ const WorkspaceToolLeaves = new Map(Definitions.map((tool) => {
243
+ const parsed = parseId(tool.name);
244
+ if (parsed.kind !== "tool" || parsed.component !== "workspace" || parsed.leaf.length < 1 || parsed.leaf.length > MaxLeafSegments) {
245
+ throw new Error(`workspace tool id must be a one- or two-leaf tool in the workspace component: "${tool.name}"`);
246
+ }
247
+ /**
248
+ * Two-segment leaves (`reactive_read`, `diff_write`) keep their full
249
+ * spelling so the dispatcher can switch on one stable token. The
250
+ * grammar already caps the segment count, so joining is unambiguous.
251
+ */
252
+ return [tool.name, parsed.leaf.join("_")];
253
+ }));
254
+ /**
255
+ * Frozen-contract alias for the leaf index; the local binding stays PascalCase
256
+ * because it is module-level data, matching the alias convention in naming.
257
+ */
258
+ export { WorkspaceToolLeaves as workspaceToolLeaves };
@@ -23,6 +23,14 @@ export interface Receipt {
23
23
  predicted_voi?: Confidence;
24
24
  realized_voi?: Confidence;
25
25
  handle?: Handle;
26
+ /**
27
+ * Optional normative links: which assignment/duty or interaction contract
28
+ * this cost belongs to. They make cost attribution possible without
29
+ * changing the receipt's evidence semantics.
30
+ */
31
+ assignment?: Id;
32
+ duty?: Id;
33
+ interaction?: Id;
26
34
  note?: string;
27
35
  }
28
36
  /**
@@ -5,11 +5,17 @@
5
5
  * hashes every file under the directory into a sorted manifest, then hashes the
6
6
  * manifest, so a declaration can bind the actual code. `verifyModuleContent`
7
7
  * recomputes it and reports drift.
8
+ *
9
+ * Files are hashed as bytes, not as decoded text. Reading with `"utf8"` maps
10
+ * every invalid byte sequence to U+FFFD, so a PNG and a ZIP in the same tree
11
+ * could share a digest; bytes are the only thing a content binding can mean.
12
+ * For a file that is valid UTF-8 the two forms agree, which is why the digest
13
+ * of a text-only module does not change.
8
14
  */
9
15
  import { readdir, readFile } from "node:fs/promises";
10
16
  import path from "node:path";
17
+ import { rawHex } from "../fingerprint/index.js";
11
18
  import { digestOf } from "../semantic/canonical.js";
12
- import { sha256Hex } from "../semantic/sha256.js";
13
19
  const Skip = new Set(["node_modules", ".git", ".tscheck", "dist"]);
14
20
  const walk = async (root, current, out) => {
15
21
  const entries = await readdir(current, { withFileTypes: true });
@@ -26,8 +32,8 @@ const walk = async (root, current, out) => {
26
32
  if (!entry.isFile()) {
27
33
  continue;
28
34
  }
29
- const text = await readFile(full, "utf8");
30
- out.push({ path: path.relative(root, full).split(path.sep).join("/"), digest: sha256Hex(text) });
35
+ const bytes = await readFile(full);
36
+ out.push({ path: path.relative(root, full).split(path.sep).join("/"), digest: rawHex(bytes) });
31
37
  }
32
38
  };
33
39
  export const collectDirectory = async (root) => {
@@ -39,7 +39,7 @@ export class KernelRuntime {
39
39
  return result;
40
40
  }
41
41
  serialize(turn) {
42
- return {
42
+ const body = {
43
43
  turnId: turn.turnId,
44
44
  sessionId: turn.sessionId,
45
45
  scope: turn.scope,
@@ -101,5 +101,13 @@ export class KernelRuntime {
101
101
  trace: turn.trace,
102
102
  runtimeReceiptId: turn.receiptId,
103
103
  };
104
+ const keys = Object.keys(body);
105
+ for (let index = 0; index < keys.length; index += 1) {
106
+ const key = keys[index];
107
+ if (body[key] === (void 0)) {
108
+ delete body[key];
109
+ }
110
+ }
111
+ return body;
104
112
  }
105
113
  }
@@ -126,7 +126,7 @@ const vote = (weights, read) => {
126
126
  */
127
127
  export const normalizeScenarioMix = (mix) => {
128
128
  const result = {};
129
- let total = 0;
129
+ let maximum = 0;
130
130
  for (let index = 0; index < ScenarioKinds.length; index += 1) {
131
131
  const kind = ScenarioKinds[index];
132
132
  const raw = mix[kind] ?? 0;
@@ -134,14 +134,15 @@ export const normalizeScenarioMix = (mix) => {
134
134
  throw new RangeError(`scenario weight ${kind} must be a finite non-negative number`);
135
135
  }
136
136
  result[kind] = raw;
137
- total += raw;
137
+ maximum = Math.max(maximum, raw);
138
138
  }
139
- if (total <= 0) {
139
+ if (maximum <= 0) {
140
140
  throw new RangeError("scenario mix must contain at least one positive weight");
141
141
  }
142
+ const total = ScenarioKinds.reduce((sum, kind) => sum + result[kind] / maximum, 0);
142
143
  for (let index = 0; index < ScenarioKinds.length; index += 1) {
143
144
  const kind = ScenarioKinds[index];
144
- result[kind] /= total;
145
+ result[kind] = (result[kind] / maximum) / total;
145
146
  }
146
147
  return result;
147
148
  };