attention-manifest-protocol 0.4.0 → 0.4.2

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 (627) hide show
  1. package/CHANGELOG.md +250 -226
  2. package/CHANGELOG.zh-CN.md +63 -39
  3. package/README.md +22 -1
  4. package/README.zh-CN.md +22 -1
  5. package/docs/probes/calibration-imported.json +141 -141
  6. package/docs/probes/eval-recorded-replay.json +597 -597
  7. package/docs/probes/eval-replay.json +124 -124
  8. package/docs/probes/eval-summary.json +42 -42
  9. package/docs/probes/runtime-eval.json +4230 -4230
  10. package/lib/attention/attention.d.ts +153 -0
  11. package/lib/attention/attention.js +209 -0
  12. package/lib/attention/budget.d.ts +31 -0
  13. package/lib/attention/budget.js +55 -0
  14. package/lib/attention/cognition.d.ts +230 -0
  15. package/lib/attention/cognition.js +245 -0
  16. package/lib/attention/index.d.ts +8 -0
  17. package/lib/attention/index.js +7 -0
  18. package/lib/attention/interrupts.d.ts +97 -0
  19. package/lib/attention/interrupts.js +151 -0
  20. package/lib/attention/resource.d.ts +167 -0
  21. package/lib/attention/resource.js +148 -0
  22. package/lib/attention/social.d.ts +74 -0
  23. package/lib/attention/social.js +153 -0
  24. package/lib/attention/socialTypes.d.ts +102 -0
  25. package/lib/attention/socialTypes.js +1 -0
  26. package/lib/authz/authz.d.ts +75 -0
  27. package/lib/authz/authz.js +176 -0
  28. package/lib/authz/index.d.ts +1 -0
  29. package/lib/authz/index.js +1 -0
  30. package/lib/bayes/calibration.d.ts +67 -0
  31. package/lib/bayes/calibration.js +114 -0
  32. package/lib/bayes/calibrationRegistry.d.ts +39 -0
  33. package/lib/bayes/calibrationRegistry.js +61 -0
  34. package/lib/bayes/calibrationSelection.d.ts +40 -0
  35. package/lib/bayes/calibrationSelection.js +89 -0
  36. package/lib/bayes/engine.d.ts +163 -0
  37. package/lib/bayes/engine.js +354 -0
  38. package/lib/bayes/index.d.ts +6 -0
  39. package/lib/bayes/index.js +6 -0
  40. package/lib/bayes/reliability.d.ts +27 -0
  41. package/lib/bayes/reliability.js +38 -0
  42. package/lib/bayes/scopedPriors.d.ts +34 -0
  43. package/lib/bayes/scopedPriors.js +70 -0
  44. package/lib/boundary/frame.d.ts +63 -0
  45. package/lib/boundary/frame.js +239 -0
  46. package/lib/boundary/ids.d.ts +8 -0
  47. package/lib/boundary/ids.js +12 -0
  48. package/lib/boundary/index.d.ts +12 -0
  49. package/lib/boundary/index.js +8 -0
  50. package/lib/boundary/refTable.d.ts +49 -0
  51. package/lib/boundary/refTable.js +92 -0
  52. package/lib/boundary/toolCall.d.ts +33 -0
  53. package/lib/boundary/toolCall.js +173 -0
  54. package/lib/concept/concept.d.ts +67 -0
  55. package/lib/concept/concept.js +1 -0
  56. package/lib/concept/conceptBudget.d.ts +56 -0
  57. package/lib/concept/conceptBudget.js +281 -0
  58. package/lib/concept/conceptBudgetTypes.d.ts +74 -0
  59. package/lib/concept/conceptBudgetTypes.js +1 -0
  60. package/lib/concept/index.d.ts +3 -0
  61. package/lib/concept/index.js +3 -0
  62. package/lib/concurrency/idempotency.d.ts +16 -0
  63. package/lib/concurrency/idempotency.js +21 -0
  64. package/lib/concurrency/index.d.ts +5 -0
  65. package/lib/concurrency/index.js +5 -0
  66. package/lib/concurrency/mutex.d.ts +13 -0
  67. package/lib/concurrency/mutex.js +26 -0
  68. package/lib/concurrency/namedLocks.d.ts +7 -0
  69. package/lib/concurrency/namedLocks.js +31 -0
  70. package/lib/concurrency/retry.d.ts +23 -0
  71. package/lib/concurrency/retry.js +38 -0
  72. package/lib/concurrency/worker.d.ts +42 -0
  73. package/lib/concurrency/worker.js +67 -0
  74. package/lib/context/agentContext.d.ts +58 -0
  75. package/lib/context/agentContext.js +197 -0
  76. package/lib/context/ast.d.ts +98 -0
  77. package/lib/context/ast.js +414 -0
  78. package/lib/context/contentStore.d.ts +16 -0
  79. package/lib/context/contentStore.js +61 -0
  80. package/lib/context/context.d.ts +15 -0
  81. package/lib/context/context.js +39 -0
  82. package/lib/context/contextIndex.d.ts +40 -0
  83. package/lib/context/contextIndex.js +64 -0
  84. package/lib/context/document.d.ts +102 -0
  85. package/lib/context/document.js +22 -0
  86. package/lib/context/fileStorePath.d.ts +1 -0
  87. package/lib/context/fileStorePath.js +13 -0
  88. package/lib/context/index.d.ts +22 -0
  89. package/lib/context/index.js +11 -0
  90. package/lib/context/lifecycle.d.ts +91 -0
  91. package/lib/context/lifecycle.js +163 -0
  92. package/lib/context/projections.d.ts +20 -0
  93. package/lib/context/projections.js +127 -0
  94. package/lib/context/workspace.d.ts +111 -0
  95. package/lib/context/workspace.js +318 -0
  96. package/lib/context/workspaceProtocol.d.ts +30 -0
  97. package/lib/context/workspaceProtocol.js +49 -0
  98. package/lib/context/workspaceService.d.ts +63 -0
  99. package/lib/context/workspaceService.js +352 -0
  100. package/lib/cooperation/board.d.ts +47 -0
  101. package/lib/cooperation/board.js +66 -0
  102. package/lib/cooperation/collaboration.d.ts +55 -0
  103. package/lib/cooperation/collaboration.js +1 -0
  104. package/lib/cooperation/index.d.ts +6 -0
  105. package/lib/cooperation/index.js +6 -0
  106. package/lib/cooperation/merge.d.ts +69 -0
  107. package/lib/cooperation/merge.js +109 -0
  108. package/lib/cooperation/metrics.d.ts +39 -0
  109. package/lib/cooperation/metrics.js +17 -0
  110. package/lib/cooperation/session.d.ts +75 -0
  111. package/lib/cooperation/session.js +74 -0
  112. package/lib/cooperation/unified.d.ts +38 -0
  113. package/lib/cooperation/unified.js +40 -0
  114. package/lib/database/adapter/adapters.d.ts +24 -0
  115. package/lib/database/adapter/adapters.js +31 -0
  116. package/lib/database/adapter/index.d.ts +4 -0
  117. package/lib/database/adapter/index.js +4 -0
  118. package/lib/database/adapter/runtimeSink.d.ts +20 -0
  119. package/lib/database/adapter/runtimeSink.js +50 -0
  120. package/lib/database/adapter/sessionStore.d.ts +11 -0
  121. package/lib/database/adapter/sessionStore.js +23 -0
  122. package/lib/database/adapter/turnStore.d.ts +10 -0
  123. package/lib/database/adapter/turnStore.js +15 -0
  124. package/lib/database/entity/agent.d.ts +133 -0
  125. package/lib/database/entity/agent.js +61 -0
  126. package/lib/database/entity/entity.d.ts +715 -0
  127. package/lib/database/entity/entity.js +372 -0
  128. package/lib/database/entity/handle.d.ts +31 -0
  129. package/lib/database/entity/handle.js +53 -0
  130. package/lib/database/entity/index.d.ts +32 -0
  131. package/lib/database/entity/index.js +22 -0
  132. package/lib/database/entity/message.d.ts +27 -0
  133. package/lib/database/entity/message.js +52 -0
  134. package/lib/database/entity/meta.d.ts +11 -0
  135. package/lib/database/entity/meta.js +1 -0
  136. package/lib/database/entity/object.d.ts +23 -0
  137. package/lib/database/entity/object.js +24 -0
  138. package/lib/database/entity/outbox.d.ts +9 -0
  139. package/lib/database/entity/outbox.js +5 -0
  140. package/lib/database/entity/process.d.ts +30 -0
  141. package/lib/database/entity/process.js +40 -0
  142. package/lib/database/entity/registry.d.ts +81 -0
  143. package/lib/database/entity/registry.js +91 -0
  144. package/lib/database/entity/runtimeApproval.d.ts +23 -0
  145. package/lib/database/entity/runtimeApproval.js +5 -0
  146. package/lib/database/entity/runtimeSession.d.ts +7 -0
  147. package/lib/database/entity/runtimeSession.js +5 -0
  148. package/lib/database/entity/runtimeTurn.d.ts +9 -0
  149. package/lib/database/entity/runtimeTurn.js +5 -0
  150. package/lib/database/entity/thread.d.ts +35 -0
  151. package/lib/database/entity/thread.js +55 -0
  152. package/lib/database/entity/window.d.ts +39 -0
  153. package/lib/database/entity/window.js +56 -0
  154. package/lib/database/entity/worker.d.ts +42 -0
  155. package/lib/database/entity/worker.js +58 -0
  156. package/lib/database/index.d.ts +6 -0
  157. package/lib/database/index.js +6 -0
  158. package/lib/database/repository/addressSpaceRepository.d.ts +18 -0
  159. package/lib/database/repository/addressSpaceRepository.js +40 -0
  160. package/lib/database/repository/agentRepository.d.ts +41 -0
  161. package/lib/database/repository/agentRepository.js +398 -0
  162. package/lib/database/repository/base.d.ts +31 -0
  163. package/lib/database/repository/base.js +23 -0
  164. package/lib/database/repository/executionRepository.d.ts +64 -0
  165. package/lib/database/repository/executionRepository.js +379 -0
  166. package/lib/database/repository/handleRepository.d.ts +35 -0
  167. package/lib/database/repository/handleRepository.js +57 -0
  168. package/lib/database/repository/index.d.ts +20 -0
  169. package/lib/database/repository/index.js +17 -0
  170. package/lib/database/repository/messageRepository.d.ts +33 -0
  171. package/lib/database/repository/messageRepository.js +45 -0
  172. package/lib/database/repository/objectRepository.d.ts +43 -0
  173. package/lib/database/repository/objectRepository.js +60 -0
  174. package/lib/database/repository/outboxRepository.d.ts +15 -0
  175. package/lib/database/repository/outboxRepository.js +51 -0
  176. package/lib/database/repository/processRepository.d.ts +31 -0
  177. package/lib/database/repository/processRepository.js +48 -0
  178. package/lib/database/repository/registryRepository.d.ts +72 -0
  179. package/lib/database/repository/registryRepository.js +95 -0
  180. package/lib/database/repository/repository.d.ts +322 -0
  181. package/lib/database/repository/repository.js +332 -0
  182. package/lib/database/repository/runtimeApprovalRepository.d.ts +14 -0
  183. package/lib/database/repository/runtimeApprovalRepository.js +35 -0
  184. package/lib/database/repository/runtimeSessionRepository.d.ts +9 -0
  185. package/lib/database/repository/runtimeSessionRepository.js +21 -0
  186. package/lib/database/repository/runtimeTurnRepository.d.ts +10 -0
  187. package/lib/database/repository/runtimeTurnRepository.js +32 -0
  188. package/lib/database/repository/socialRepository.d.ts +22 -0
  189. package/lib/database/repository/socialRepository.js +155 -0
  190. package/lib/database/repository/threadRepository.d.ts +29 -0
  191. package/lib/database/repository/threadRepository.js +48 -0
  192. package/lib/database/repository/windowRepository.d.ts +46 -0
  193. package/lib/database/repository/windowRepository.js +68 -0
  194. package/lib/database/repository/workerRepository.d.ts +38 -0
  195. package/lib/database/repository/workerRepository.js +61 -0
  196. package/lib/database/service/database.d.ts +55 -0
  197. package/lib/database/service/database.js +77 -0
  198. package/lib/database/service/handleService.d.ts +20 -0
  199. package/lib/database/service/handleService.js +34 -0
  200. package/lib/database/service/index.d.ts +16 -0
  201. package/lib/database/service/index.js +11 -0
  202. package/lib/database/service/messageService.d.ts +26 -0
  203. package/lib/database/service/messageService.js +40 -0
  204. package/lib/database/service/objectService.d.ts +32 -0
  205. package/lib/database/service/objectService.js +31 -0
  206. package/lib/database/service/processService.d.ts +22 -0
  207. package/lib/database/service/processService.js +45 -0
  208. package/lib/database/service/registryServices.d.ts +43 -0
  209. package/lib/database/service/registryServices.js +60 -0
  210. package/lib/database/service/service.d.ts +131 -0
  211. package/lib/database/service/service.js +153 -0
  212. package/lib/database/service/stepService.d.ts +23 -0
  213. package/lib/database/service/stepService.js +35 -0
  214. package/lib/database/service/threadService.d.ts +23 -0
  215. package/lib/database/service/threadService.js +48 -0
  216. package/lib/database/service/windowService.d.ts +15 -0
  217. package/lib/database/service/windowService.js +22 -0
  218. package/lib/database/service/workerService.d.ts +28 -0
  219. package/lib/database/service/workerService.js +34 -0
  220. package/lib/database/sql/index.d.ts +3 -0
  221. package/lib/database/sql/index.js +2 -0
  222. package/lib/database/sql/schema.d.ts +5 -0
  223. package/lib/database/sql/schema.js +416 -0
  224. package/lib/database/sql/sql.d.ts +290 -0
  225. package/lib/database/sql/sql.js +430 -0
  226. package/lib/database/store/database.d.ts +75 -0
  227. package/lib/database/store/database.js +143 -0
  228. package/lib/database/store/index.d.ts +3 -0
  229. package/lib/database/store/index.js +2 -0
  230. package/lib/database/store/store.d.ts +145 -0
  231. package/lib/database/store/store.js +192 -0
  232. package/lib/delegate/index.d.ts +2 -0
  233. package/lib/delegate/index.js +2 -0
  234. package/lib/delegate/team.d.ts +92 -0
  235. package/lib/delegate/team.js +200 -0
  236. package/lib/delegate/teamTypes.d.ts +43 -0
  237. package/lib/delegate/teamTypes.js +1 -0
  238. package/lib/diagnosis/checklist.d.ts +16 -0
  239. package/lib/diagnosis/checklist.js +61 -0
  240. package/lib/diagnosis/context.d.ts +19 -0
  241. package/lib/diagnosis/context.js +79 -0
  242. package/lib/diagnosis/frame.d.ts +34 -0
  243. package/lib/diagnosis/frame.js +230 -0
  244. package/lib/diagnosis/index.d.ts +5 -0
  245. package/lib/diagnosis/index.js +5 -0
  246. package/lib/diagnosis/router.d.ts +22 -0
  247. package/lib/diagnosis/router.js +47 -0
  248. package/lib/diagnosis/types.d.ts +78 -0
  249. package/lib/diagnosis/types.js +2 -0
  250. package/lib/error/agentError.d.ts +9 -0
  251. package/lib/error/agentError.js +13 -0
  252. package/lib/error/ampError.d.ts +14 -0
  253. package/lib/error/ampError.js +19 -0
  254. package/lib/error/authzError.d.ts +10 -0
  255. package/lib/error/authzError.js +11 -0
  256. package/lib/error/boundaryRejection.d.ts +16 -0
  257. package/lib/error/boundaryRejection.js +14 -0
  258. package/lib/error/index.d.ts +7 -0
  259. package/lib/error/index.js +7 -0
  260. package/lib/error/kernelError.d.ts +11 -0
  261. package/lib/error/kernelError.js +12 -0
  262. package/lib/error/mailboxError.d.ts +5 -0
  263. package/lib/error/mailboxError.js +6 -0
  264. package/lib/error/windowError.d.ts +8 -0
  265. package/lib/error/windowError.js +9 -0
  266. package/lib/evaluation/agreement.d.ts +22 -0
  267. package/lib/evaluation/agreement.js +82 -0
  268. package/lib/evaluation/index.d.ts +2 -0
  269. package/lib/evaluation/index.js +2 -0
  270. package/lib/evaluation/labels.d.ts +56 -0
  271. package/lib/evaluation/labels.js +206 -0
  272. package/lib/evidence/evidenceGraph.d.ts +37 -0
  273. package/lib/evidence/evidenceGraph.js +165 -0
  274. package/lib/evidence/index.d.ts +4 -0
  275. package/lib/evidence/index.js +2 -0
  276. package/lib/evidence/revalidation.d.ts +70 -0
  277. package/lib/evidence/revalidation.js +146 -0
  278. package/lib/execution/exec.d.ts +151 -0
  279. package/lib/execution/exec.js +282 -0
  280. package/lib/execution/handles.d.ts +25 -0
  281. package/lib/execution/handles.js +45 -0
  282. package/lib/execution/index.d.ts +3 -0
  283. package/lib/execution/index.js +3 -0
  284. package/lib/execution/pin.d.ts +60 -0
  285. package/lib/execution/pin.js +103 -0
  286. package/lib/frame/frame.d.ts +61 -0
  287. package/lib/frame/frame.js +1 -0
  288. package/lib/frame/index.d.ts +1 -0
  289. package/lib/frame/index.js +1 -0
  290. package/lib/goal/goal.d.ts +19 -0
  291. package/lib/goal/goal.js +21 -0
  292. package/lib/goal/index.d.ts +2 -0
  293. package/lib/goal/index.js +1 -0
  294. package/lib/goal/plan.d.ts +125 -0
  295. package/lib/goal/plan.js +60 -0
  296. package/lib/governance/attentionManifest.d.ts +279 -0
  297. package/lib/governance/attentionManifest.js +467 -0
  298. package/lib/governance/audit.d.ts +123 -0
  299. package/lib/governance/audit.js +263 -0
  300. package/lib/governance/budget.d.ts +219 -0
  301. package/lib/governance/budget.js +424 -0
  302. package/lib/governance/context.d.ts +159 -0
  303. package/lib/governance/context.js +229 -0
  304. package/lib/governance/control.d.ts +65 -0
  305. package/lib/governance/control.js +89 -0
  306. package/lib/governance/cooperation.d.ts +163 -0
  307. package/lib/governance/cooperation.js +350 -0
  308. package/lib/governance/credential.d.ts +117 -0
  309. package/lib/governance/credential.js +229 -0
  310. package/lib/governance/httpServer.d.ts +18 -0
  311. package/lib/governance/httpServer.js +74 -0
  312. package/lib/governance/index.d.ts +32 -0
  313. package/lib/governance/index.js +32 -0
  314. package/lib/governance/legal.d.ts +222 -0
  315. package/lib/governance/legal.js +371 -0
  316. package/lib/governance/matrix.d.ts +170 -0
  317. package/lib/governance/matrix.js +365 -0
  318. package/lib/governance/perspectives.d.ts +98 -0
  319. package/lib/governance/perspectives.js +340 -0
  320. package/lib/governance/signing.d.ts +131 -0
  321. package/lib/governance/signing.js +241 -0
  322. package/lib/governance/store.d.ts +33 -0
  323. package/lib/governance/store.js +89 -0
  324. package/lib/governance/switching.d.ts +183 -0
  325. package/lib/governance/switching.js +257 -0
  326. package/lib/governance/toolPolicy.d.ts +37 -0
  327. package/lib/governance/toolPolicy.js +42 -0
  328. package/lib/governance/transport.d.ts +76 -0
  329. package/lib/governance/transport.js +124 -0
  330. package/lib/governance/types.d.ts +218 -0
  331. package/lib/governance/types.js +72 -0
  332. package/lib/governance/workflow.d.ts +174 -0
  333. package/lib/governance/workflow.js +612 -0
  334. package/lib/index.d.ts +11 -0
  335. package/lib/index.js +11 -0
  336. package/lib/interaction/index.d.ts +1 -0
  337. package/lib/interaction/index.js +1 -0
  338. package/lib/interaction/interaction.d.ts +83 -0
  339. package/lib/interaction/interaction.js +256 -0
  340. package/lib/ipc/index.d.ts +4 -0
  341. package/lib/ipc/index.js +3 -0
  342. package/lib/ipc/mailbox.d.ts +37 -0
  343. package/lib/ipc/mailbox.js +77 -0
  344. package/lib/ipc/memorySocialStore.d.ts +14 -0
  345. package/lib/ipc/memorySocialStore.js +83 -0
  346. package/lib/ipc/social.d.ts +80 -0
  347. package/lib/ipc/social.js +1 -0
  348. package/lib/kernel/index.d.ts +2 -0
  349. package/lib/kernel/index.js +1 -0
  350. package/lib/kernel/scheduler.d.ts +195 -0
  351. package/lib/kernel/scheduler.js +334 -0
  352. package/lib/ledger/checkpoint.d.ts +116 -0
  353. package/lib/ledger/checkpoint.js +223 -0
  354. package/lib/ledger/index.d.ts +4 -0
  355. package/lib/ledger/index.js +4 -0
  356. package/lib/ledger/ledger.d.ts +21 -0
  357. package/lib/ledger/ledger.js +23 -0
  358. package/lib/ledger/persistence.d.ts +46 -0
  359. package/lib/ledger/persistence.js +106 -0
  360. package/lib/ledger/share.d.ts +29 -0
  361. package/lib/ledger/share.js +39 -0
  362. package/lib/lock/index.d.ts +2 -0
  363. package/lib/lock/index.js +1 -0
  364. package/lib/lock/lease.d.ts +23 -0
  365. package/lib/lock/lease.js +42 -0
  366. package/lib/manifest/agentCard.d.ts +35 -0
  367. package/lib/manifest/agentCard.js +38 -0
  368. package/lib/manifest/cardSign.d.ts +25 -0
  369. package/lib/manifest/cardSign.js +70 -0
  370. package/lib/manifest/federation.d.ts +64 -0
  371. package/lib/manifest/federation.js +187 -0
  372. package/lib/manifest/federationTypes.d.ts +51 -0
  373. package/lib/manifest/federationTypes.js +1 -0
  374. package/lib/manifest/index.d.ts +8 -0
  375. package/lib/manifest/index.js +8 -0
  376. package/lib/manifest/keys.d.ts +221 -0
  377. package/lib/manifest/keys.js +484 -0
  378. package/lib/manifest/manifest.d.ts +102 -0
  379. package/lib/manifest/manifest.js +1 -0
  380. package/lib/manifest/sign.d.ts +38 -0
  381. package/lib/manifest/sign.js +90 -0
  382. package/lib/manifest/trust.d.ts +54 -0
  383. package/lib/manifest/trust.js +87 -0
  384. package/lib/mission/index.d.ts +2 -0
  385. package/lib/mission/index.js +1 -0
  386. package/lib/mission/missionQueue.d.ts +19 -0
  387. package/lib/mission/missionQueue.js +62 -0
  388. package/lib/module/index.d.ts +9 -0
  389. package/lib/module/index.js +9 -0
  390. package/lib/module/llm/deepseek.d.ts +43 -0
  391. package/lib/module/llm/deepseek.js +162 -0
  392. package/lib/module/llm/llm.d.ts +64 -0
  393. package/lib/module/llm/llm.js +16 -0
  394. package/lib/module/mcp/client.d.ts +32 -0
  395. package/lib/module/mcp/client.js +84 -0
  396. package/lib/module/mcp/http.d.ts +32 -0
  397. package/lib/module/mcp/http.js +83 -0
  398. package/lib/module/mcp/protocol.d.ts +62 -0
  399. package/lib/module/mcp/protocol.js +20 -0
  400. package/lib/module/mcp/server.d.ts +22 -0
  401. package/lib/module/mcp/server.js +138 -0
  402. package/lib/module/mcp/transport.d.ts +19 -0
  403. package/lib/module/mcp/transport.js +16 -0
  404. package/lib/module/mcp/workspaceServer.d.ts +20 -0
  405. package/lib/module/mcp/workspaceServer.js +90 -0
  406. package/lib/module/sandbox/sandbox.d.ts +24 -0
  407. package/lib/module/sandbox/sandbox.js +5 -0
  408. package/lib/module/tool/mcpExecutor.d.ts +18 -0
  409. package/lib/module/tool/mcpExecutor.js +41 -0
  410. package/lib/module/tool/policy.d.ts +30 -0
  411. package/lib/module/tool/policy.js +23 -0
  412. package/lib/module/tool/redact.d.ts +9 -0
  413. package/lib/module/tool/redact.js +19 -0
  414. package/lib/module/tool/tool.d.ts +26 -0
  415. package/lib/module/tool/tool.js +24 -0
  416. package/lib/module/tool/workspaceExecutor.d.ts +12 -0
  417. package/lib/module/tool/workspaceExecutor.js +25 -0
  418. package/lib/policy/guard.d.ts +115 -0
  419. package/lib/policy/guard.js +154 -0
  420. package/lib/policy/index.d.ts +2 -0
  421. package/lib/policy/index.js +2 -0
  422. package/lib/policy/policy.d.ts +249 -0
  423. package/lib/policy/policy.js +364 -0
  424. package/lib/process/agent.d.ts +295 -0
  425. package/lib/process/agent.js +1 -0
  426. package/lib/process/agentService.d.ts +87 -0
  427. package/lib/process/agentService.js +128 -0
  428. package/lib/process/agentStore.d.ts +35 -0
  429. package/lib/process/agentStore.js +328 -0
  430. package/lib/process/executionStore.d.ts +79 -0
  431. package/lib/process/executionStore.js +71 -0
  432. package/lib/process/index.d.ts +5 -0
  433. package/lib/process/index.js +5 -0
  434. package/lib/process/process.d.ts +120 -0
  435. package/lib/process/process.js +111 -0
  436. package/lib/process/transitions.d.ts +11 -0
  437. package/lib/process/transitions.js +8 -0
  438. package/lib/progress/index.d.ts +2 -0
  439. package/lib/progress/index.js +1 -0
  440. package/lib/progress/progress.d.ts +26 -0
  441. package/lib/progress/progress.js +42 -0
  442. package/lib/protocol/a2a.d.ts +51 -0
  443. package/lib/protocol/a2a.js +79 -0
  444. package/lib/protocol/channel.d.ts +25 -0
  445. package/lib/protocol/channel.js +27 -0
  446. package/lib/protocol/envelope.d.ts +180 -0
  447. package/lib/protocol/envelope.js +495 -0
  448. package/lib/protocol/httpChannel.d.ts +33 -0
  449. package/lib/protocol/httpChannel.js +59 -0
  450. package/lib/protocol/index.d.ts +6 -0
  451. package/lib/protocol/index.js +6 -0
  452. package/lib/protocol/protocol.d.ts +120 -0
  453. package/lib/protocol/protocol.js +1 -0
  454. package/lib/protocol/wire.d.ts +12 -0
  455. package/lib/protocol/wire.js +55 -0
  456. package/lib/receipt/index.d.ts +1 -0
  457. package/lib/receipt/index.js +1 -0
  458. package/lib/receipt/receipt.d.ts +43 -0
  459. package/lib/receipt/receipt.js +1 -0
  460. package/lib/registry/content.d.ts +10 -0
  461. package/lib/registry/content.js +58 -0
  462. package/lib/registry/index.d.ts +4 -0
  463. package/lib/registry/index.js +2 -0
  464. package/lib/registry/registry.d.ts +109 -0
  465. package/lib/registry/registry.js +299 -0
  466. package/lib/runtime/action.d.ts +46 -0
  467. package/lib/runtime/action.js +39 -0
  468. package/lib/runtime/behavior.d.ts +110 -0
  469. package/lib/runtime/behavior.js +179 -0
  470. package/lib/runtime/behaviorTuning.d.ts +59 -0
  471. package/lib/runtime/behaviorTuning.js +95 -0
  472. package/lib/runtime/cognitiveRuntime.d.ts +189 -0
  473. package/lib/runtime/cognitiveRuntime.js +490 -0
  474. package/lib/runtime/escalation.d.ts +22 -0
  475. package/lib/runtime/escalation.js +15 -0
  476. package/lib/runtime/governedTask.d.ts +57 -0
  477. package/lib/runtime/governedTask.js +150 -0
  478. package/lib/runtime/index.d.ts +15 -0
  479. package/lib/runtime/index.js +15 -0
  480. package/lib/runtime/kernelRuntime.d.ts +33 -0
  481. package/lib/runtime/kernelRuntime.js +105 -0
  482. package/lib/runtime/operation.d.ts +30 -0
  483. package/lib/runtime/operation.js +1 -0
  484. package/lib/runtime/replay.d.ts +24 -0
  485. package/lib/runtime/replay.js +38 -0
  486. package/lib/runtime/routing.d.ts +12 -0
  487. package/lib/runtime/routing.js +44 -0
  488. package/lib/runtime/safety.d.ts +15 -0
  489. package/lib/runtime/safety.js +28 -0
  490. package/lib/runtime/session.d.ts +147 -0
  491. package/lib/runtime/session.js +214 -0
  492. package/lib/runtime/sessionStore.d.ts +24 -0
  493. package/lib/runtime/sessionStore.js +20 -0
  494. package/lib/runtime/telemetry.d.ts +24 -0
  495. package/lib/runtime/telemetry.js +33 -0
  496. package/lib/runtime/turnStore.d.ts +16 -0
  497. package/lib/runtime/turnStore.js +15 -0
  498. package/lib/scenario/index.d.ts +1 -0
  499. package/lib/scenario/index.js +1 -0
  500. package/lib/scenario/scenario.d.ts +52 -0
  501. package/lib/scenario/scenario.js +210 -0
  502. package/lib/semantic/canonical.d.ts +6 -0
  503. package/lib/semantic/canonical.js +22 -0
  504. package/lib/semantic/index.d.ts +2 -0
  505. package/lib/semantic/index.js +2 -0
  506. package/lib/semantic/sha256.d.ts +1 -0
  507. package/lib/semantic/sha256.js +66 -0
  508. package/lib/storage/appendLog.d.ts +145 -0
  509. package/lib/storage/appendLog.js +299 -0
  510. package/lib/storage/fileAppendSink.d.ts +7 -0
  511. package/lib/storage/fileAppendSink.js +34 -0
  512. package/lib/storage/index.d.ts +2 -0
  513. package/lib/storage/index.js +2 -0
  514. package/lib/store/bindCache.d.ts +9 -0
  515. package/lib/store/bindCache.js +18 -0
  516. package/lib/store/cache.d.ts +48 -0
  517. package/lib/store/cache.js +162 -0
  518. package/lib/store/context.d.ts +10 -0
  519. package/lib/store/context.js +27 -0
  520. package/lib/store/handleStore.d.ts +9 -0
  521. package/lib/store/handleStore.js +25 -0
  522. package/lib/store/index.d.ts +9 -0
  523. package/lib/store/index.js +8 -0
  524. package/lib/store/messageStore.d.ts +9 -0
  525. package/lib/store/messageStore.js +25 -0
  526. package/lib/store/objectStore.d.ts +9 -0
  527. package/lib/store/objectStore.js +25 -0
  528. package/lib/store/processStore.d.ts +9 -0
  529. package/lib/store/processStore.js +25 -0
  530. package/lib/store/threadStore.d.ts +9 -0
  531. package/lib/store/threadStore.js +25 -0
  532. package/lib/store/windowStore.d.ts +9 -0
  533. package/lib/store/windowStore.js +25 -0
  534. package/lib/structure/abstractSyntaxTree.d.ts +181 -0
  535. package/lib/structure/abstractSyntaxTree.js +400 -0
  536. package/lib/structure/avlTree.d.ts +125 -0
  537. package/lib/structure/avlTree.js +369 -0
  538. package/lib/structure/binarySearchTree.d.ts +125 -0
  539. package/lib/structure/binarySearchTree.js +306 -0
  540. package/lib/structure/binaryTree.d.ts +174 -0
  541. package/lib/structure/binaryTree.js +495 -0
  542. package/lib/structure/bloomFilter.d.ts +126 -0
  543. package/lib/structure/bloomFilter.js +177 -0
  544. package/lib/structure/compare.d.ts +55 -0
  545. package/lib/structure/compare.js +96 -0
  546. package/lib/structure/cuckooFilter.d.ts +149 -0
  547. package/lib/structure/cuckooFilter.js +267 -0
  548. package/lib/structure/deque.d.ts +117 -0
  549. package/lib/structure/deque.js +205 -0
  550. package/lib/structure/filterKey.d.ts +19 -0
  551. package/lib/structure/filterKey.js +28 -0
  552. package/lib/structure/hash.d.ts +129 -0
  553. package/lib/structure/hash.js +241 -0
  554. package/lib/structure/heap.d.ts +152 -0
  555. package/lib/structure/heap.js +227 -0
  556. package/lib/structure/index.d.ts +20 -0
  557. package/lib/structure/index.js +20 -0
  558. package/lib/structure/iterator.d.ts +6 -0
  559. package/lib/structure/iterator.js +16 -0
  560. package/lib/structure/lru.d.ts +235 -0
  561. package/lib/structure/lru.js +524 -0
  562. package/lib/structure/ordered.d.ts +89 -0
  563. package/lib/structure/ordered.js +336 -0
  564. package/lib/structure/priority.d.ts +499 -0
  565. package/lib/structure/priority.js +756 -0
  566. package/lib/structure/queue.d.ts +90 -0
  567. package/lib/structure/queue.js +154 -0
  568. package/lib/structure/redBlackTree.d.ts +142 -0
  569. package/lib/structure/redBlackTree.js +644 -0
  570. package/lib/structure/segmentTree.d.ts +129 -0
  571. package/lib/structure/segmentTree.js +205 -0
  572. package/lib/structure/stack.d.ts +77 -0
  573. package/lib/structure/stack.js +107 -0
  574. package/lib/structure/unordered.d.ts +99 -0
  575. package/lib/structure/unordered.js +341 -0
  576. package/lib/thread/index.d.ts +2 -0
  577. package/lib/thread/index.js +2 -0
  578. package/lib/thread/thread.d.ts +107 -0
  579. package/lib/thread/thread.js +81 -0
  580. package/lib/thread/transitions.d.ts +8 -0
  581. package/lib/thread/transitions.js +9 -0
  582. package/lib/types/common.d.ts +80 -0
  583. package/lib/types/common.js +5 -0
  584. package/lib/types/index.d.ts +23 -0
  585. package/lib/types/index.js +1 -0
  586. package/lib/warrant/epistemic.d.ts +141 -0
  587. package/lib/warrant/epistemic.js +1 -0
  588. package/lib/warrant/index.d.ts +3 -0
  589. package/lib/warrant/index.js +3 -0
  590. package/lib/warrant/inquiry.d.ts +69 -0
  591. package/lib/warrant/inquiry.js +119 -0
  592. package/lib/warrant/warrant.d.ts +46 -0
  593. package/lib/warrant/warrant.js +153 -0
  594. package/lib/window/compaction.d.ts +57 -0
  595. package/lib/window/compaction.js +334 -0
  596. package/lib/window/compactionTypes.d.ts +113 -0
  597. package/lib/window/compactionTypes.js +1 -0
  598. package/lib/window/index.d.ts +7 -0
  599. package/lib/window/index.js +3 -0
  600. package/lib/window/page.d.ts +16 -0
  601. package/lib/window/page.js +2 -0
  602. package/lib/window/window.d.ts +68 -0
  603. package/lib/window/window.js +194 -0
  604. package/package.json +22 -1
  605. package/src/authz/index.ts +1 -0
  606. package/src/concept/index.ts +3 -0
  607. package/src/concurrency/index.ts +5 -0
  608. package/src/cooperation/index.ts +6 -0
  609. package/src/delegate/index.ts +2 -0
  610. package/src/error/index.ts +7 -0
  611. package/src/evaluation/index.ts +2 -0
  612. package/src/execution/index.ts +3 -0
  613. package/src/frame/index.ts +1 -0
  614. package/src/index.ts +11 -0
  615. package/src/ledger/index.ts +4 -0
  616. package/src/manifest/index.ts +8 -0
  617. package/src/policy/index.ts +2 -0
  618. package/src/protocol/index.ts +6 -0
  619. package/src/receipt/index.ts +1 -0
  620. package/src/semantic/index.ts +2 -0
  621. package/src/storage/index.ts +2 -0
  622. package/src/structure/index.ts +20 -0
  623. package/src/thread/index.ts +2 -0
  624. package/src/warrant/index.ts +3 -0
  625. package/src/window/index.ts +7 -4
  626. package/tools/rewrite-declaration-extensions.ts +98 -0
  627. package/tsconfig.build.json +14 -0
@@ -0,0 +1,61 @@
1
+ /**
2
+ * USE-style checklist. Utilization, saturation and errors are asked per layer;
3
+ * latency is decomposed because "slow" is not a layer.
4
+ */
5
+ export const LayerChecks = {
6
+ thread_pool: {
7
+ layer: "thread_pool",
8
+ question: "Are worker threads exhausted, blocked, or idle?",
9
+ signals: ["utilization", "saturation", "errors"],
10
+ probe: "active/max threads, run queue, reject count; one thread dump with top blocking frames",
11
+ },
12
+ connection_pool: {
13
+ layer: "connection_pool",
14
+ question: "Is the pool exhausted, leaking, or waiting on slow work?",
15
+ signals: ["utilization", "saturation", "latency"],
16
+ probe: "active/idle/pending, checkout wait P99, timeout count, held-time distribution",
17
+ },
18
+ connect: {
19
+ layer: "connect",
20
+ question: "Is a new connection slow to establish?",
21
+ signals: ["latency", "errors"],
22
+ probe: "TCP RTT, TLS handshake, auth, DNS, connect P99, new-connection/churn rate",
23
+ },
24
+ database: {
25
+ layer: "database",
26
+ question: "Is the database slow, locked, or out of connections?",
27
+ signals: ["utilization", "saturation", "latency", "errors"],
28
+ probe: "pg_stat_statements top SQL, EXPLAIN ANALYZE, pg_locks blocking chain, wait events, sessions/max_connections",
29
+ },
30
+ queue: {
31
+ layer: "queue",
32
+ question: "Is work arriving faster than it is consumed?",
33
+ signals: ["saturation", "latency", "errors"],
34
+ probe: "consumer lag, consume rate, retry/DLQ, partition skew, active consumers",
35
+ },
36
+ application: {
37
+ layer: "application",
38
+ question: "Is application code or GC burning CPU / holding locks?",
39
+ signals: ["utilization", "saturation", "errors"],
40
+ probe: "CPU, GC pauses, thread dump, lock contention, dependency spans",
41
+ },
42
+ release: {
43
+ layer: "release",
44
+ question: "Is the failure correlated with a specific version?",
45
+ signals: ["errors", "latency"],
46
+ probe: "per-version error/latency split, diff, canary cohort, deploy timeline",
47
+ },
48
+ };
49
+ export const stepFor = (layer) => {
50
+ const check = LayerChecks[layer];
51
+ return {
52
+ id: `probe.${layer}`,
53
+ layer,
54
+ intent: `inspect ${layer}`,
55
+ probe: check.probe,
56
+ readOnly: true,
57
+ successCriteria: [`${layer} utilization/saturation/error signals are known`, "the next hypothesis is discriminated or explicitly left open"],
58
+ stopIf: "a higher layer fully explains the symptoms and the lower layer is healthy",
59
+ };
60
+ };
61
+ export const stepsFor = (layers) => layers.map((layer) => stepFor(layer));
@@ -0,0 +1,19 @@
1
+ import { ContextAst, MemoryDetailStore } from "../context/ast.js";
2
+ import type { ContextAstNode } from "../context/ast.js";
3
+ import type { DiagnosticFrame } from "./types.js";
4
+ import { selectHypothesis } from "./frame.js";
5
+ export interface DiagnosisContext {
6
+ ast: ContextAst;
7
+ details: MemoryDetailStore;
8
+ view: ReturnType<ContextAst["view"]>;
9
+ top?: ReturnType<typeof selectHypothesis>;
10
+ }
11
+ type ContextProjector = (frame: DiagnosticFrame, budgetTokens?: number) => DiagnosisContext;
12
+ /**
13
+ * Project a DiagnosticFrame into the context AST:
14
+ * incident -> layer steps -> signals/hypotheses. Summaries stay in the view;
15
+ * raw signal/probe payloads live behind local refs.
16
+ */
17
+ export declare const toContextAst: ContextProjector;
18
+ export declare const diagnosisNode: (id: string) => ContextAstNode["kind"];
19
+ export {};
@@ -0,0 +1,79 @@
1
+ import { ContextAst, MemoryDetailStore } from "../context/ast.js";
2
+ import { assessHypotheses, selectHypothesis } from "./frame.js";
3
+ /**
4
+ * Project a DiagnosticFrame into the context AST:
5
+ * incident -> layer steps -> signals/hypotheses. Summaries stay in the view;
6
+ * raw signal/probe payloads live behind local refs.
7
+ */
8
+ export const toContextAst = (frame, budgetTokens = 1200) => {
9
+ const ast = new ContextAst();
10
+ const details = new MemoryDetailStore();
11
+ let order = 0;
12
+ ast.add({
13
+ id: "diagnosis",
14
+ kind: "goal",
15
+ summary: `${frame.incident.summary} | phase=${frame.phase} | layers=${frame.layers.join(",")}`,
16
+ order: order++,
17
+ salience: 1,
18
+ });
19
+ for (let stepIndex = 0; stepIndex < frame.steps.length; stepIndex += 1) {
20
+ const step = frame.steps[stepIndex];
21
+ const layerId = `step.${step.layer}`;
22
+ ast.add({
23
+ id: layerId,
24
+ parentId: "diagnosis",
25
+ kind: "frame",
26
+ summary: `inspect ${step.layer}: ${step.probe}`,
27
+ order: order++,
28
+ salience: 0.8,
29
+ });
30
+ const signals = (frame.incident.signals ?? []).filter((signal) => signal.layer === step.layer);
31
+ for (let signalIndex = 0; signalIndex < signals.length; signalIndex += 1) {
32
+ const signal = signals[signalIndex];
33
+ const id = `signal.${step.layer}.${signal.name}`;
34
+ const raw = JSON.stringify(signal);
35
+ const ref = details.put(id, raw);
36
+ ast.add({
37
+ id,
38
+ parentId: layerId,
39
+ kind: "observation",
40
+ summary: `${signal.layer}/${signal.kind}/${signal.name}: ${signal.state}`,
41
+ detailRef: ref,
42
+ detailTokens: Math.ceil(raw.length / 4),
43
+ order: order++,
44
+ salience: signal.state === "critical" ? 0.95 : 0.6,
45
+ });
46
+ }
47
+ }
48
+ const ranked = assessHypotheses(frame);
49
+ for (let index = 0; index < ranked.length; index += 1) {
50
+ const assessment = ranked[index];
51
+ const id = `hyp.${assessment.hypothesis.id}`;
52
+ const raw = JSON.stringify({
53
+ cause: assessment.hypothesis.cause,
54
+ matched: assessment.matched,
55
+ missing: assessment.missing,
56
+ contradicted: assessment.contradicted,
57
+ });
58
+ const ref = details.put(id, raw);
59
+ ast.add({
60
+ id,
61
+ parentId: "diagnosis",
62
+ kind: "hypothesis",
63
+ summary: `${assessment.hypothesis.layer}: ${assessment.hypothesis.cause} (confidence=${assessment.confidence.toFixed(2)})`,
64
+ detailRef: ref,
65
+ detailTokens: Math.ceil(raw.length / 4),
66
+ order: order++,
67
+ salience: assessment.confidence,
68
+ });
69
+ }
70
+ for (let index = 0; index < frame.steps.length - 1; index += 1) {
71
+ ast.link({ from: `step.${frame.steps[index].layer}`, to: `step.${frame.steps[index + 1].layer}`, kind: "before" });
72
+ }
73
+ const firstStep = frame.steps[0];
74
+ if (firstStep !== (void 0)) {
75
+ ast.link({ from: "diagnosis", to: `step.${firstStep.layer}`, kind: "before" });
76
+ }
77
+ return { ast, details, view: ast.view(budgetTokens), top: selectHypothesis(frame) };
78
+ };
79
+ export const diagnosisNode = (id) => id.startsWith("hyp.") ? "hypothesis" : id.startsWith("signal.") ? "observation" : "frame";
@@ -0,0 +1,34 @@
1
+ import type { DiagnosticFrame, DiagnosticLayer, DiagnosticSignal, DiagnosticStep, Hypothesis, HypothesisAssessment, IncidentInput } from "./types.js";
2
+ import type { PlanTask } from "../goal/plan.js";
3
+ import type { ActionPlan } from "../runtime/action.js";
4
+ export declare const DefaultHypotheses: readonly Hypothesis[];
5
+ export declare const assessHypotheses: (frame: DiagnosticFrame) => HypothesisAssessment[];
6
+ export declare const selectHypothesis: (frame: DiagnosticFrame) => HypothesisAssessment | undefined;
7
+ export declare const buildDiagnosisFrame: (incident: IncidentInput) => DiagnosticFrame;
8
+ /**
9
+ * Add an observation without mutating the original frame.
10
+ */
11
+ export declare const observe: (frame: DiagnosticFrame, signal: DiagnosticSignal) => DiagnosticFrame;
12
+ export declare const nextStep: (frame: DiagnosticFrame) => DiagnosticStep | undefined;
13
+ /**
14
+ * Route to the step that best matches the current evidence. The static layer
15
+ * order is only a fallback: a strong DB hypothesis must not be routed to
16
+ * `thread_pool` just because it is first in the checklist.
17
+ */
18
+ export declare const routeStep: (frame: DiagnosticFrame, minConfidence?: number) => DiagnosticStep | undefined;
19
+ export declare const validateDiagnosisFrame: (frame: DiagnosticFrame) => string[];
20
+ /**
21
+ * Render the next diagnostic step as a bounded, read-only ActionPlan.
22
+ */
23
+ export declare const toActionPlan: (frame: DiagnosticFrame) => ActionPlan | undefined;
24
+ /**
25
+ * Render diagnostic steps as existing PlanTasks (all irreversibility 0).
26
+ */
27
+ export declare const toPlanTasks: (frame: DiagnosticFrame) => PlanTask[];
28
+ /**
29
+ * Select the layer that best explains the current evidence, with an explicit reason.
30
+ */
31
+ export declare const selectLayer: (frame: DiagnosticFrame) => {
32
+ layer: DiagnosticLayer | null;
33
+ reason: string;
34
+ };
@@ -0,0 +1,230 @@
1
+ import { LayerOrder, clamp01 } from "./types.js";
2
+ import { stepsFor } from "./checklist.js";
3
+ export const DefaultHypotheses = [
4
+ {
5
+ id: "thread_pool_exhaustion",
6
+ cause: "worker threads are exhausted or blocked",
7
+ layer: "thread_pool",
8
+ supports: [
9
+ { layer: "thread_pool", kind: "saturation", name: "thread.queue" },
10
+ { layer: "thread_pool", kind: "utilization", name: "thread.active_max" },
11
+ { layer: "thread_pool", kind: "errors", name: "thread.reject" },
12
+ ],
13
+ contradicts: [{ layer: "thread_pool", kind: "utilization", name: "thread.idle" }],
14
+ discriminatingTest: "thread dump: are active threads blocked on a pool, a lock, or CPU?",
15
+ baseConfidence: 0.25,
16
+ rootWeight: 0,
17
+ },
18
+ {
19
+ id: "connection_pool_exhaustion",
20
+ cause: "connection pool is exhausted or leaking",
21
+ layer: "connection_pool",
22
+ supports: [
23
+ { layer: "connection_pool", kind: "saturation", name: "pool.pending" },
24
+ { layer: "connection_pool", kind: "utilization", name: "pool.active_max" },
25
+ { layer: "connection_pool", kind: "latency", name: "pool.checkout_wait" },
26
+ ],
27
+ contradicts: [{ layer: "connection_pool", kind: "utilization", name: "pool.idle" }],
28
+ discriminatingTest: "checkout wait vs active vs held-time: pool exhaustion, leak, or slow owner?",
29
+ baseConfidence: 0.25,
30
+ rootWeight: 0,
31
+ },
32
+ {
33
+ id: "connect_latency",
34
+ cause: "new connections are slow to establish",
35
+ layer: "connect",
36
+ supports: [
37
+ { layer: "connect", kind: "latency", name: "connect.p99" },
38
+ { layer: "connect", kind: "errors", name: "connect.error" },
39
+ { layer: "connect", kind: "latency", name: "tls.handshake" },
40
+ ],
41
+ contradicts: [{ layer: "connect", kind: "latency", name: "connect.ok" }],
42
+ discriminatingTest: "split connect into TCP RTT, TLS, auth, DNS; is pool wait high while active is low?",
43
+ baseConfidence: 0.25,
44
+ rootWeight: 0.1,
45
+ },
46
+ {
47
+ id: "db_slow_query",
48
+ cause: "database queries are slow",
49
+ layer: "database",
50
+ supports: [
51
+ { layer: "database", kind: "latency", name: "db.query_p99" },
52
+ { layer: "database", kind: "utilization", name: "db.cpu" },
53
+ { layer: "database", kind: "saturation", name: "db.temp_spill" },
54
+ ],
55
+ contradicts: [{ layer: "database", kind: "latency", name: "db.query_ok" }],
56
+ discriminatingTest: "EXPLAIN ANALYZE: seq scan, temp spill, bad row estimate, or missing index?",
57
+ baseConfidence: 0.25,
58
+ rootWeight: 0.15,
59
+ },
60
+ {
61
+ id: "db_lock",
62
+ cause: "database locks are blocking progress",
63
+ layer: "database",
64
+ supports: [
65
+ { layer: "database", kind: "saturation", name: "db.lock_wait" },
66
+ { layer: "database", kind: "saturation", name: "db.blocking_chain" },
67
+ ],
68
+ contradicts: [{ layer: "database", kind: "saturation", name: "db.no_lock_wait" }],
69
+ discriminatingTest: "pg_locks + pg_blocking_pids: who blocks whom, and for how long?",
70
+ baseConfidence: 0.25,
71
+ rootWeight: 0.15,
72
+ },
73
+ {
74
+ id: "queue_backlog",
75
+ cause: "consumers cannot keep up with the queue",
76
+ layer: "queue",
77
+ supports: [
78
+ { layer: "queue", kind: "saturation", name: "queue.lag" },
79
+ { layer: "queue", kind: "latency", name: "queue.consume_rate" },
80
+ { layer: "queue", kind: "errors", name: "queue.retry" },
81
+ ],
82
+ contradicts: [{ layer: "queue", kind: "saturation", name: "queue.drained" }],
83
+ discriminatingTest: "lag with idle consumers (blocked) vs busy consumers (capacity)?",
84
+ baseConfidence: 0.2,
85
+ rootWeight: 0.1,
86
+ },
87
+ {
88
+ id: "code_regression",
89
+ cause: "application code or GC is the bottleneck",
90
+ layer: "application",
91
+ supports: [
92
+ { layer: "application", kind: "utilization", name: "app.cpu" },
93
+ { layer: "application", kind: "saturation", name: "app.gc_pause" },
94
+ { layer: "release", kind: "errors", name: "release.only_new_version" },
95
+ ],
96
+ contradicts: [{ layer: "database", kind: "latency", name: "db.query_p99" }],
97
+ discriminatingTest: "DB fast + app CPU/GC high + blocked stack in app code?",
98
+ baseConfidence: 0.2,
99
+ rootWeight: 0.1,
100
+ },
101
+ ];
102
+ const patternMatches = (pattern, signal) => {
103
+ if (pattern.layer !== signal.layer) {
104
+ return false;
105
+ }
106
+ if (pattern.kind !== (void 0) && pattern.kind !== signal.kind) {
107
+ return false;
108
+ }
109
+ if (pattern.name !== (void 0) && signal.name !== pattern.name && !signal.name.startsWith(`${pattern.name}.`)) {
110
+ return false;
111
+ }
112
+ return true;
113
+ };
114
+ const label = (pattern) => [pattern.layer, pattern.kind, pattern.name].filter((part) => part !== (void 0)).join(".");
115
+ export const assessHypotheses = (frame) => {
116
+ return frame.hypotheses
117
+ .map((hypothesis) => {
118
+ const matched = hypothesis.supports.filter((pattern) => frame.incident.signals?.some((signal) => patternMatches(pattern, signal))).map(label);
119
+ const contradicted = (hypothesis.contradicts ?? [])
120
+ .filter((pattern) => frame.incident.signals?.some((signal) => patternMatches(pattern, signal)))
121
+ .map(label);
122
+ const missing = hypothesis.supports.filter((pattern) => !matched.includes(label(pattern))).map(label);
123
+ const score = matched.length - contradicted.length * 2;
124
+ return {
125
+ hypothesis,
126
+ score,
127
+ confidence: clamp01(hypothesis.baseConfidence + matched.length * 0.12 + (hypothesis.rootWeight ?? 0) - contradicted.length * 0.2),
128
+ matched,
129
+ missing,
130
+ contradicted,
131
+ };
132
+ })
133
+ .sort((left, right) => right.confidence - left.confidence || right.score - left.score);
134
+ };
135
+ export const selectHypothesis = (frame) => assessHypotheses(frame)[0];
136
+ export const buildDiagnosisFrame = (incident) => {
137
+ const layers = incident.layers ?? LayerOrder;
138
+ return {
139
+ id: `diag.${incident.id}`,
140
+ incident,
141
+ layers: [...layers],
142
+ hypotheses: DefaultHypotheses.map((hypothesis) => ({ ...hypothesis })),
143
+ steps: stepsFor(layers),
144
+ phase: (incident.signals?.length ?? 0) > 0 ? "observing" : "framing",
145
+ };
146
+ };
147
+ /**
148
+ * Add an observation without mutating the original frame.
149
+ */
150
+ export const observe = (frame, signal) => ({
151
+ ...frame,
152
+ incident: { ...frame.incident, signals: [...(frame.incident.signals ?? []), signal] },
153
+ phase: frame.phase === "framing" ? "observing" : frame.phase,
154
+ });
155
+ export const nextStep = (frame) => frame.steps[0];
156
+ /**
157
+ * Route to the step that best matches the current evidence. The static layer
158
+ * order is only a fallback: a strong DB hypothesis must not be routed to
159
+ * `thread_pool` just because it is first in the checklist.
160
+ */
161
+ export const routeStep = (frame, minConfidence = 0.5) => {
162
+ const top = selectHypothesis(frame);
163
+ if (top !== (void 0) && top.confidence >= minConfidence) {
164
+ const matched = frame.steps.find((step) => step.layer === top.hypothesis.layer);
165
+ if (matched !== (void 0)) {
166
+ return matched;
167
+ }
168
+ }
169
+ return nextStep(frame);
170
+ };
171
+ export const validateDiagnosisFrame = (frame) => {
172
+ const problems = [];
173
+ if (frame.layers.length === 0) {
174
+ problems.push("diagnosis requires at least one layer");
175
+ }
176
+ if (frame.hypotheses.length === 0) {
177
+ problems.push("diagnosis requires at least one hypothesis");
178
+ }
179
+ for (const hypothesis of frame.hypotheses) {
180
+ if (hypothesis.discriminatingTest.trim().length === 0) {
181
+ problems.push(`hypothesis ${hypothesis.id} lacks a discriminating test`);
182
+ }
183
+ }
184
+ if (frame.steps.some((step) => step.readOnly !== true)) {
185
+ problems.push("diagnostic steps must be read-only");
186
+ }
187
+ if (new Set(frame.steps.map((step) => step.id)).size !== frame.steps.length) {
188
+ problems.push("duplicate diagnostic step ids");
189
+ }
190
+ return problems;
191
+ };
192
+ /**
193
+ * Render the next diagnostic step as a bounded, read-only ActionPlan.
194
+ */
195
+ export const toActionPlan = (frame) => {
196
+ const step = routeStep(frame);
197
+ if (step === (void 0)) {
198
+ return undefined;
199
+ }
200
+ return {
201
+ goal: `discriminate the incident cause at ${step.layer}`,
202
+ intent: `diagnose:${step.layer}`,
203
+ expectedEffect: `evidence for or against ${step.layer} hypotheses`,
204
+ preconditions: ["diagnostic step is read-only", "no production mutation before discrimination"],
205
+ successCriteria: step.successCriteria,
206
+ risk: "read",
207
+ };
208
+ };
209
+ /**
210
+ * Render diagnostic steps as existing PlanTasks (all irreversibility 0).
211
+ */
212
+ export const toPlanTasks = (frame) => frame.steps.map((step, index) => ({
213
+ id: step.id,
214
+ intent: step.intent,
215
+ actor: "tool",
216
+ pre: index === 0 ? [] : [frame.steps[index - 1].id],
217
+ expect: { observation: step.probe, check: step.successCriteria.join("; ") },
218
+ irreversibility: 0,
219
+ status: "pending",
220
+ }));
221
+ /**
222
+ * Select the layer that best explains the current evidence, with an explicit reason.
223
+ */
224
+ export const selectLayer = (frame) => {
225
+ const top = selectHypothesis(frame);
226
+ if (top === (void 0)) {
227
+ return { layer: null, reason: "no hypotheses" };
228
+ }
229
+ return { layer: top.hypothesis.layer, reason: `${top.hypothesis.id} confidence=${top.confidence.toFixed(2)} matched=${top.matched.join(",") || "none"}` };
230
+ };
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export * from "./checklist.js";
3
+ export * from "./frame.js";
4
+ export * from "./context.js";
5
+ export * from "./router.js";
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export * from "./checklist.js";
3
+ export * from "./frame.js";
4
+ export * from "./context.js";
5
+ export * from "./router.js";
@@ -0,0 +1,22 @@
1
+ import type { DiagnosticFrame, DiagnosticLayer } from "./types.js";
2
+ export type ToolIntent = "inspect" | "discriminate" | "confirm" | "refute";
3
+ export interface ToolBinding {
4
+ layer: DiagnosticLayer;
5
+ hypothesisId?: string;
6
+ tool: string;
7
+ intent: ToolIntent;
8
+ readOnly: true;
9
+ produces: "metric" | "trace" | "log" | "lock" | "profile";
10
+ }
11
+ export interface ToolRoute {
12
+ tool: string;
13
+ layer: DiagnosticLayer;
14
+ hypothesisId?: string;
15
+ intent: ToolIntent;
16
+ readOnly: true;
17
+ reason: string;
18
+ }
19
+ export declare const DefaultToolBindings: readonly ToolBinding[];
20
+ type ToolRouter = (frame: DiagnosticFrame, bindings?: readonly ToolBinding[], minConfidence?: number) => ToolRoute | undefined;
21
+ export declare const routeTool: ToolRouter;
22
+ export {};
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Tool routing: AST/diagnosis candidates -> read-only probe.
3
+ *
4
+ * This is deliberately not an executor. It selects a tool and explains why; the
5
+ * runtime still wraps it in an Action/Operation and approval policy.
6
+ */
7
+ import { selectHypothesis } from "./frame.js";
8
+ export const DefaultToolBindings = [
9
+ { layer: "thread_pool", tool: "thread_dump", intent: "inspect", readOnly: true, produces: "profile" },
10
+ { layer: "connection_pool", tool: "pool_stats", intent: "inspect", readOnly: true, produces: "metric" },
11
+ { layer: "connect", tool: "connect_stats", intent: "inspect", readOnly: true, produces: "metric" },
12
+ { layer: "database", hypothesisId: "db_lock", tool: "pg_locks", intent: "discriminate", readOnly: true, produces: "lock" },
13
+ { layer: "database", hypothesisId: "db_slow_query", tool: "pg_stat_statements", intent: "discriminate", readOnly: true, produces: "trace" },
14
+ { layer: "database", tool: "pg_stat_statements", intent: "inspect", readOnly: true, produces: "trace" },
15
+ { layer: "queue", tool: "queue_lag", intent: "inspect", readOnly: true, produces: "metric" },
16
+ { layer: "application", tool: "app_profile", intent: "inspect", readOnly: true, produces: "profile" },
17
+ { layer: "release", tool: "version_diff", intent: "inspect", readOnly: true, produces: "log" },
18
+ ];
19
+ export const routeTool = (frame, bindings = DefaultToolBindings, minConfidence = 0.5) => {
20
+ const top = selectHypothesis(frame);
21
+ if (top !== (void 0) && top.confidence >= minConfidence) {
22
+ const exact = bindings.filter((binding) => binding.layer === top.hypothesis.layer && binding.hypothesisId === top.hypothesis.id);
23
+ const layer = bindings.filter((binding) => binding.layer === top.hypothesis.layer && binding.hypothesisId === (void 0));
24
+ const selected = exact[0] ?? layer[0];
25
+ if (selected !== (void 0)) {
26
+ return {
27
+ tool: selected.tool,
28
+ layer: selected.layer,
29
+ hypothesisId: top.hypothesis.id,
30
+ intent: selected.intent,
31
+ readOnly: true,
32
+ reason: `${top.hypothesis.id} confidence=${top.confidence.toFixed(2)}; matched=${top.matched.join(",") || "none"}`,
33
+ };
34
+ }
35
+ }
36
+ const fallback = bindings.find((binding) => binding.layer === "thread_pool") ?? bindings[0];
37
+ if (fallback === (void 0)) {
38
+ return undefined;
39
+ }
40
+ return {
41
+ tool: fallback.tool,
42
+ layer: fallback.layer,
43
+ intent: fallback.intent,
44
+ readOnly: true,
45
+ reason: top === (void 0) ? "no hypothesis; start with thread dump" : `weak hypothesis confidence=${top.confidence.toFixed(2)}; start with thread dump`,
46
+ };
47
+ };
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Diagnostic frame: a bounded, read-only investigation of a failing system.
3
+ *
4
+ * This is deliberately independent of the runtime. It can be rendered into a
5
+ * Plan, an Action, or a prompt; it does not execute anything.
6
+ */
7
+ export type DiagnosticLayer = "thread_pool" | "connection_pool" | "connect" | "database" | "queue" | "application" | "release";
8
+ export type SignalKind = "utilization" | "saturation" | "errors" | "latency";
9
+ export type ObservationState = "ok" | "warn" | "critical";
10
+ export interface DiagnosticSignal {
11
+ layer: DiagnosticLayer;
12
+ kind: SignalKind;
13
+ name: string;
14
+ state: ObservationState;
15
+ value?: number;
16
+ note?: string;
17
+ }
18
+ export interface SignalPattern {
19
+ layer: DiagnosticLayer;
20
+ kind?: SignalKind;
21
+ name?: string;
22
+ }
23
+ export interface Hypothesis {
24
+ id: string;
25
+ cause: string;
26
+ layer: DiagnosticLayer;
27
+ supports: SignalPattern[];
28
+ contradicts?: SignalPattern[];
29
+ /**
30
+ * A check that separates this cause from its neighbors.
31
+ */
32
+ discriminatingTest: string;
33
+ baseConfidence: number;
34
+ /**
35
+ * Root-cause evidence weighs more than a downstream saturation symptom.
36
+ */
37
+ rootWeight?: number;
38
+ }
39
+ export interface HypothesisAssessment {
40
+ hypothesis: Hypothesis;
41
+ score: number;
42
+ confidence: number;
43
+ matched: string[];
44
+ missing: string[];
45
+ contradicted: string[];
46
+ }
47
+ export interface DiagnosticStep {
48
+ id: string;
49
+ layer: DiagnosticLayer;
50
+ intent: string;
51
+ probe: string;
52
+ readOnly: true;
53
+ successCriteria: string[];
54
+ stopIf?: string;
55
+ }
56
+ export interface IncidentInput {
57
+ id: string;
58
+ summary: string;
59
+ symptoms: string[];
60
+ signals?: DiagnosticSignal[];
61
+ recentChanges?: string[];
62
+ constraints?: string[];
63
+ /**
64
+ * Optional narrowing; defaults to all layers.
65
+ */
66
+ layers?: DiagnosticLayer[];
67
+ }
68
+ export interface DiagnosticFrame {
69
+ id: string;
70
+ incident: IncidentInput;
71
+ layers: DiagnosticLayer[];
72
+ hypotheses: Hypothesis[];
73
+ steps: DiagnosticStep[];
74
+ phase: "framing" | "observing" | "discriminating" | "deciding" | "verifying";
75
+ selected?: string;
76
+ }
77
+ export declare const LayerOrder: readonly DiagnosticLayer[];
78
+ export declare const clamp01: (value: number) => number;
@@ -0,0 +1,2 @@
1
+ export const LayerOrder = ["thread_pool", "connection_pool", "connect", "database", "queue", "application", "release"];
2
+ export const clamp01 = (value) => Math.max(0, Math.min(1, value));
@@ -0,0 +1,9 @@
1
+ import type { AgentErrorCode } from "../process/agent.js";
2
+ /**
3
+ * Domain error for the agent facets; never a database error.
4
+ */
5
+ export declare class AgentError extends Error {
6
+ readonly code: AgentErrorCode;
7
+ readonly details: readonly string[];
8
+ constructor(code: AgentErrorCode, details?: readonly string[]);
9
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Domain error for the agent facets; never a database error.
3
+ */
4
+ export class AgentError extends Error {
5
+ code;
6
+ details;
7
+ constructor(code, details = []) {
8
+ super(details.length === 0 ? code : `${code}: ${details.join("; ")}`);
9
+ this.name = "AgentError";
10
+ this.code = code;
11
+ this.details = details;
12
+ }
13
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared base for AMP errors that carry a machine-readable code and every
3
+ * problem found in one attempt.
4
+ *
5
+ * Boundary rejections are the first user; other fail-closed paths can extend
6
+ * this without changing their own extra fields. The `code` stays narrow through
7
+ * the generic parameter, so `catch (error) { if (error instanceof BoundaryRejection) ... }`
8
+ * still sees a literal union.
9
+ */
10
+ export declare class AmpError<Code extends string = string> extends Error {
11
+ readonly code: Code;
12
+ readonly problems: readonly string[];
13
+ constructor(name: string, code: Code, problems: readonly string[]);
14
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared base for AMP errors that carry a machine-readable code and every
3
+ * problem found in one attempt.
4
+ *
5
+ * Boundary rejections are the first user; other fail-closed paths can extend
6
+ * this without changing their own extra fields. The `code` stays narrow through
7
+ * the generic parameter, so `catch (error) { if (error instanceof BoundaryRejection) ... }`
8
+ * still sees a literal union.
9
+ */
10
+ export class AmpError extends Error {
11
+ code;
12
+ problems;
13
+ constructor(name, code, problems) {
14
+ super(`${code}: ${problems.join("; ")}`);
15
+ this.name = name;
16
+ this.code = code;
17
+ this.problems = [...problems];
18
+ }
19
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Authorization errors: a denied capability, or a grant that would amplify
3
+ * rights or lifetime. They share the `AmpError` shape so the kernel can turn
4
+ * any of them into a blocked receipt.
5
+ */
6
+ import { AmpError } from "./ampError.js";
7
+ export type AuthzCode = "permission_denied" | "invalid_grant" | "rights_amplification" | "expiry_amplification" | "unknown_capability";
8
+ export declare class AuthzError extends AmpError<AuthzCode> {
9
+ constructor(code: AuthzCode, problems: readonly string[]);
10
+ }