@animalabs/agent-framework 0.31.0 → 0.33.0

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 (298) hide show
  1. package/README.md +204 -14
  2. package/dist/src/admission/admit.d.ts +18 -0
  3. package/dist/src/admission/admit.d.ts.map +1 -1
  4. package/dist/src/admission/admit.js +16 -3
  5. package/dist/src/admission/admit.js.map +1 -1
  6. package/dist/src/agent.d.ts +185 -78
  7. package/dist/src/agent.d.ts.map +1 -1
  8. package/dist/src/agent.js +279 -102
  9. package/dist/src/agent.js.map +1 -1
  10. package/dist/src/api/mcp-server-core.d.ts.map +1 -1
  11. package/dist/src/api/mcp-server-core.js +50 -12
  12. package/dist/src/api/mcp-server-core.js.map +1 -1
  13. package/dist/src/api/server.d.ts.map +1 -1
  14. package/dist/src/api/server.js +4 -20
  15. package/dist/src/api/server.js.map +1 -1
  16. package/dist/src/code-execution/isolate/scripts.d.ts +12 -8
  17. package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
  18. package/dist/src/code-execution/isolate/scripts.js +24 -0
  19. package/dist/src/code-execution/isolate/scripts.js.map +1 -1
  20. package/dist/src/config-checks.d.ts +7 -0
  21. package/dist/src/config-checks.d.ts.map +1 -1
  22. package/dist/src/config-checks.js +14 -0
  23. package/dist/src/config-checks.js.map +1 -1
  24. package/dist/src/context-manager-errors.d.ts +25 -0
  25. package/dist/src/context-manager-errors.d.ts.map +1 -0
  26. package/dist/src/context-manager-errors.js +31 -0
  27. package/dist/src/context-manager-errors.js.map +1 -0
  28. package/dist/src/context-options.d.ts +67 -0
  29. package/dist/src/context-options.d.ts.map +1 -0
  30. package/dist/src/context-options.js +85 -0
  31. package/dist/src/context-options.js.map +1 -0
  32. package/dist/src/deferred-import.d.ts +93 -0
  33. package/dist/src/deferred-import.d.ts.map +1 -0
  34. package/dist/src/deferred-import.js +177 -0
  35. package/dist/src/deferred-import.js.map +1 -0
  36. package/dist/src/dendrite/audience.d.ts +223 -0
  37. package/dist/src/dendrite/audience.d.ts.map +1 -0
  38. package/dist/src/dendrite/audience.js +202 -0
  39. package/dist/src/dendrite/audience.js.map +1 -0
  40. package/dist/src/dendrite/index.d.ts +5 -3
  41. package/dist/src/dendrite/index.d.ts.map +1 -1
  42. package/dist/src/dendrite/index.js +2 -1
  43. package/dist/src/dendrite/index.js.map +1 -1
  44. package/dist/src/dendrite/presets.d.ts +10 -5
  45. package/dist/src/dendrite/presets.d.ts.map +1 -1
  46. package/dist/src/dendrite/presets.js +17 -5
  47. package/dist/src/dendrite/presets.js.map +1 -1
  48. package/dist/src/dendrite/registry.d.ts +62 -7
  49. package/dist/src/dendrite/registry.d.ts.map +1 -1
  50. package/dist/src/dendrite/registry.js +179 -10
  51. package/dist/src/dendrite/registry.js.map +1 -1
  52. package/dist/src/dendrite/types.d.ts +91 -8
  53. package/dist/src/dendrite/types.d.ts.map +1 -1
  54. package/dist/src/foreign-rounds.d.ts +69 -0
  55. package/dist/src/foreign-rounds.d.ts.map +1 -0
  56. package/dist/src/foreign-rounds.js +152 -0
  57. package/dist/src/foreign-rounds.js.map +1 -0
  58. package/dist/src/framework.d.ts +1977 -820
  59. package/dist/src/framework.d.ts.map +1 -1
  60. package/dist/src/framework.js +7571 -3457
  61. package/dist/src/framework.js.map +1 -1
  62. package/dist/src/gate/event-gate.d.ts +85 -15
  63. package/dist/src/gate/event-gate.d.ts.map +1 -1
  64. package/dist/src/gate/event-gate.js +421 -47
  65. package/dist/src/gate/event-gate.js.map +1 -1
  66. package/dist/src/gate/index.d.ts +1 -1
  67. package/dist/src/gate/index.d.ts.map +1 -1
  68. package/dist/src/gate/index.js.map +1 -1
  69. package/dist/src/gate/rule-scope.d.ts +30 -0
  70. package/dist/src/gate/rule-scope.d.ts.map +1 -0
  71. package/dist/src/gate/rule-scope.js +41 -0
  72. package/dist/src/gate/rule-scope.js.map +1 -0
  73. package/dist/src/gate/suppress-script-worker.d.ts +2 -0
  74. package/dist/src/gate/suppress-script-worker.d.ts.map +1 -0
  75. package/dist/src/gate/suppress-script-worker.js +103 -0
  76. package/dist/src/gate/suppress-script-worker.js.map +1 -0
  77. package/dist/src/gate/suppress-scripts.d.ts +105 -0
  78. package/dist/src/gate/suppress-scripts.d.ts.map +1 -0
  79. package/dist/src/gate/suppress-scripts.js +403 -0
  80. package/dist/src/gate/suppress-scripts.js.map +1 -0
  81. package/dist/src/gate/suppression-review.d.ts +143 -0
  82. package/dist/src/gate/suppression-review.d.ts.map +1 -0
  83. package/dist/src/gate/suppression-review.js +463 -0
  84. package/dist/src/gate/suppression-review.js.map +1 -0
  85. package/dist/src/gate/suppression-stats.d.ts +125 -0
  86. package/dist/src/gate/suppression-stats.d.ts.map +1 -0
  87. package/dist/src/gate/suppression-stats.js +214 -0
  88. package/dist/src/gate/suppression-stats.js.map +1 -0
  89. package/dist/src/gate/types.d.ts +135 -7
  90. package/dist/src/gate/types.d.ts.map +1 -1
  91. package/dist/src/gate/wake-onboarding.d.ts +119 -0
  92. package/dist/src/gate/wake-onboarding.d.ts.map +1 -0
  93. package/dist/src/gate/wake-onboarding.js +277 -0
  94. package/dist/src/gate/wake-onboarding.js.map +1 -0
  95. package/dist/src/held-writes.d.ts +31 -23
  96. package/dist/src/held-writes.d.ts.map +1 -1
  97. package/dist/src/held-writes.js +44 -59
  98. package/dist/src/held-writes.js.map +1 -1
  99. package/dist/src/index.d.ts +5 -2
  100. package/dist/src/index.d.ts.map +1 -1
  101. package/dist/src/index.js +3 -0
  102. package/dist/src/index.js.map +1 -1
  103. package/dist/src/jsonrpc-envelope.d.ts +69 -0
  104. package/dist/src/jsonrpc-envelope.d.ts.map +1 -0
  105. package/dist/src/jsonrpc-envelope.js +66 -0
  106. package/dist/src/jsonrpc-envelope.js.map +1 -0
  107. package/dist/src/mcpl/channel-registry.d.ts +131 -15
  108. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  109. package/dist/src/mcpl/channel-registry.js +290 -46
  110. package/dist/src/mcpl/channel-registry.js.map +1 -1
  111. package/dist/src/mcpl/checkpoint-manager.d.ts +2 -4
  112. package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
  113. package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
  114. package/dist/src/mcpl/feature-set-manager.d.ts +2 -4
  115. package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -1
  116. package/dist/src/mcpl/feature-set-manager.js.map +1 -1
  117. package/dist/src/mcpl/inbound-source.d.ts +2 -1
  118. package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
  119. package/dist/src/mcpl/inbound-source.js +2 -1
  120. package/dist/src/mcpl/inbound-source.js.map +1 -1
  121. package/dist/src/mcpl/inference-router.d.ts +6 -6
  122. package/dist/src/mcpl/inference-router.d.ts.map +1 -1
  123. package/dist/src/mcpl/inference-router.js.map +1 -1
  124. package/dist/src/mcpl/push-coalescer.d.ts +132 -22
  125. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  126. package/dist/src/mcpl/push-coalescer.js +105 -15
  127. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  128. package/dist/src/mcpl/push-handler.d.ts +9 -7
  129. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  130. package/dist/src/mcpl/push-handler.js.map +1 -1
  131. package/dist/src/mcpl/server-connection.d.ts +13 -10
  132. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  133. package/dist/src/mcpl/server-connection.js +134 -56
  134. package/dist/src/mcpl/server-connection.js.map +1 -1
  135. package/dist/src/mcpl/tool-classes.d.ts.map +1 -1
  136. package/dist/src/mcpl/tool-classes.js +3 -0
  137. package/dist/src/mcpl/tool-classes.js.map +1 -1
  138. package/dist/src/mcpl/types.d.ts +8 -2
  139. package/dist/src/mcpl/types.d.ts.map +1 -1
  140. package/dist/src/mcpl/types.js.map +1 -1
  141. package/dist/src/module-registry.d.ts +24 -1
  142. package/dist/src/module-registry.d.ts.map +1 -1
  143. package/dist/src/module-registry.js +68 -18
  144. package/dist/src/module-registry.js.map +1 -1
  145. package/dist/src/modules/discord/index.d.ts +45 -8
  146. package/dist/src/modules/discord/index.d.ts.map +1 -1
  147. package/dist/src/modules/discord/index.js +237 -86
  148. package/dist/src/modules/discord/index.js.map +1 -1
  149. package/dist/src/modules/history/index.d.ts +59 -0
  150. package/dist/src/modules/history/index.d.ts.map +1 -1
  151. package/dist/src/modules/history/index.js +432 -67
  152. package/dist/src/modules/history/index.js.map +1 -1
  153. package/dist/src/modules/history/semantic.d.ts +6 -5
  154. package/dist/src/modules/history/semantic.d.ts.map +1 -1
  155. package/dist/src/modules/history/semantic.js +15 -22
  156. package/dist/src/modules/history/semantic.js.map +1 -1
  157. package/dist/src/modules/workspace/disk-agreement.d.ts +1 -1
  158. package/dist/src/modules/workspace/disk-agreement.js +1 -1
  159. package/dist/src/modules/workspace/index.d.ts +28 -7
  160. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  161. package/dist/src/modules/workspace/index.js +76 -22
  162. package/dist/src/modules/workspace/index.js.map +1 -1
  163. package/dist/src/notice-tags.d.ts +10 -1
  164. package/dist/src/notice-tags.d.ts.map +1 -1
  165. package/dist/src/notice-tags.js +10 -1
  166. package/dist/src/notice-tags.js.map +1 -1
  167. package/dist/src/operator-log.d.ts +36 -3
  168. package/dist/src/operator-log.d.ts.map +1 -1
  169. package/dist/src/operator-log.js +2 -2
  170. package/dist/src/operator-log.js.map +1 -1
  171. package/dist/src/presentation.d.ts +746 -0
  172. package/dist/src/presentation.d.ts.map +1 -0
  173. package/dist/src/presentation.js +1435 -0
  174. package/dist/src/presentation.js.map +1 -0
  175. package/dist/src/prose-drafts.d.ts +15 -11
  176. package/dist/src/prose-drafts.d.ts.map +1 -1
  177. package/dist/src/prose-drafts.js +16 -12
  178. package/dist/src/prose-drafts.js.map +1 -1
  179. package/dist/src/read-marks.d.ts +192 -0
  180. package/dist/src/read-marks.d.ts.map +1 -0
  181. package/dist/src/read-marks.js +242 -0
  182. package/dist/src/read-marks.js.map +1 -0
  183. package/dist/src/recovery/offline-branch.d.ts +91 -6
  184. package/dist/src/recovery/offline-branch.d.ts.map +1 -1
  185. package/dist/src/recovery/offline-branch.js +273 -29
  186. package/dist/src/recovery/offline-branch.js.map +1 -1
  187. package/dist/src/recovery/recover-cli.js +22 -3
  188. package/dist/src/recovery/recover-cli.js.map +1 -1
  189. package/dist/src/send-tools.d.ts +5 -9
  190. package/dist/src/send-tools.d.ts.map +1 -1
  191. package/dist/src/send-tools.js +40 -7
  192. package/dist/src/send-tools.js.map +1 -1
  193. package/dist/src/stored-injections.d.ts +2 -2
  194. package/dist/src/stored-injections.js +2 -2
  195. package/dist/src/stored-removal.d.ts +17 -4
  196. package/dist/src/stored-removal.d.ts.map +1 -1
  197. package/dist/src/stored-removal.js +29 -5
  198. package/dist/src/stored-removal.js.map +1 -1
  199. package/dist/src/tool-result-guard.d.ts +12 -1
  200. package/dist/src/tool-result-guard.d.ts.map +1 -1
  201. package/dist/src/tool-result-guard.js +42 -8
  202. package/dist/src/tool-result-guard.js.map +1 -1
  203. package/dist/src/tune-out/coordinator.d.ts +1159 -79
  204. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  205. package/dist/src/tune-out/coordinator.js +3709 -363
  206. package/dist/src/tune-out/coordinator.js.map +1 -1
  207. package/dist/src/tune-out/tools.d.ts +114 -17
  208. package/dist/src/tune-out/tools.d.ts.map +1 -1
  209. package/dist/src/tune-out/tools.js +87 -27
  210. package/dist/src/tune-out/tools.js.map +1 -1
  211. package/dist/src/tune-out/window-anchor.d.ts +143 -0
  212. package/dist/src/tune-out/window-anchor.d.ts.map +1 -0
  213. package/dist/src/tune-out/window-anchor.js +202 -0
  214. package/dist/src/tune-out/window-anchor.js.map +1 -0
  215. package/dist/src/types/agent.d.ts +86 -31
  216. package/dist/src/types/agent.d.ts.map +1 -1
  217. package/dist/src/types/events.d.ts +2 -0
  218. package/dist/src/types/events.d.ts.map +1 -1
  219. package/dist/src/types/framework.d.ts +43 -21
  220. package/dist/src/types/framework.d.ts.map +1 -1
  221. package/dist/src/types/module.d.ts +180 -69
  222. package/dist/src/types/module.d.ts.map +1 -1
  223. package/dist/src/types/trace.d.ts +510 -36
  224. package/dist/src/types/trace.d.ts.map +1 -1
  225. package/package.json +3 -3
  226. package/src/admission/admit.ts +32 -3
  227. package/src/agent.ts +323 -120
  228. package/src/api/mcp-server-core.ts +54 -17
  229. package/src/api/server.ts +4 -23
  230. package/src/code-execution/isolate/scripts.ts +28 -3
  231. package/src/config-checks.ts +14 -0
  232. package/src/context-manager-errors.ts +37 -0
  233. package/src/context-options.ts +96 -0
  234. package/src/deferred-import.ts +239 -0
  235. package/src/dendrite/audience.ts +315 -0
  236. package/src/dendrite/index.ts +14 -2
  237. package/src/dendrite/presets.ts +18 -6
  238. package/src/dendrite/registry.ts +209 -12
  239. package/src/dendrite/types.ts +92 -8
  240. package/src/foreign-rounds.ts +199 -0
  241. package/src/framework.ts +7814 -3585
  242. package/src/gate/event-gate.ts +428 -65
  243. package/src/gate/index.ts +3 -0
  244. package/src/gate/rule-scope.ts +45 -0
  245. package/src/gate/suppress-script-worker.ts +89 -0
  246. package/src/gate/suppress-scripts.ts +414 -0
  247. package/src/gate/suppression-review.ts +517 -0
  248. package/src/gate/suppression-stats.ts +314 -0
  249. package/src/gate/types.ts +141 -7
  250. package/src/gate/wake-onboarding.ts +309 -0
  251. package/src/held-writes.ts +49 -60
  252. package/src/index.ts +9 -2
  253. package/src/jsonrpc-envelope.ts +81 -0
  254. package/src/mcpl/channel-registry.ts +353 -85
  255. package/src/mcpl/checkpoint-manager.ts +3 -2
  256. package/src/mcpl/feature-set-manager.ts +2 -1
  257. package/src/mcpl/inbound-source.ts +2 -1
  258. package/src/mcpl/inference-router.ts +7 -4
  259. package/src/mcpl/push-coalescer.ts +193 -34
  260. package/src/mcpl/push-handler.ts +10 -5
  261. package/src/mcpl/server-connection.ts +141 -60
  262. package/src/mcpl/tool-classes.ts +3 -0
  263. package/src/mcpl/types.ts +8 -2
  264. package/src/module-registry.ts +73 -17
  265. package/src/modules/discord/index.ts +229 -81
  266. package/src/modules/history/index.ts +439 -70
  267. package/src/modules/history/semantic.ts +15 -21
  268. package/src/modules/workspace/disk-agreement.ts +1 -1
  269. package/src/modules/workspace/index.ts +85 -23
  270. package/src/notice-tags.ts +10 -1
  271. package/src/operator-log.ts +36 -3
  272. package/src/presentation.ts +1676 -0
  273. package/src/prose-drafts.ts +16 -12
  274. package/src/read-marks.ts +328 -0
  275. package/src/recovery/offline-branch.ts +346 -32
  276. package/src/recovery/recover-cli.ts +21 -3
  277. package/src/send-tools.ts +40 -7
  278. package/src/stored-injections.ts +2 -2
  279. package/src/stored-removal.ts +31 -7
  280. package/src/tool-result-guard.ts +41 -7
  281. package/src/tune-out/coordinator.ts +4089 -457
  282. package/src/tune-out/tools.ts +160 -43
  283. package/src/tune-out/window-anchor.ts +277 -0
  284. package/src/types/agent.ts +90 -31
  285. package/src/types/events.ts +2 -0
  286. package/src/types/framework.ts +43 -21
  287. package/src/types/module.ts +181 -68
  288. package/src/types/trace.ts +542 -40
  289. package/dist/src/reasoning-loss-notice.d.ts +0 -23
  290. package/dist/src/reasoning-loss-notice.d.ts.map +0 -1
  291. package/dist/src/reasoning-loss-notice.js +0 -52
  292. package/dist/src/reasoning-loss-notice.js.map +0 -1
  293. package/dist/src/reasoning-loss.d.ts +0 -24
  294. package/dist/src/reasoning-loss.d.ts.map +0 -1
  295. package/dist/src/reasoning-loss.js +0 -102
  296. package/dist/src/reasoning-loss.js.map +0 -1
  297. package/src/reasoning-loss-notice.ts +0 -64
  298. package/src/reasoning-loss.ts +0 -120
@@ -1,4 +1,4 @@
1
1
  export { EventGate, MCPL_GATE_EVENT_TYPES, wakeProvenance, wakeLineText, type EventTypesFrom, type WakeProvenance, type WritePlacement } from './event-gate.js';
2
- export type { GateConfig, GateOptions, GatePolicy, GatePolicyMatch, GateBehavior, GateDecision, GateEventInfo, GateStatus, GatePolicyStats, WakeLine, JudgeConfig, JudgeEventSummary, JudgeFn, JudgeRequest, JudgeVerdict, ReplyJudgeOptions, UpcomingWake, } from './types.js';
2
+ export type { GateConfig, GateOptions, GatePolicy, GatePolicyMatch, GateBehavior, GateDecision, GateEventInfo, GateStatus, GatePolicyStats, WakeLine, JudgeConfig, JudgeEventSummary, JudgeFn, JudgeRequest, JudgeVerdict, ReplyJudgeOptions, UpcomingWake, UpcomingWakeKind, SuppressConfig, SuppressionReviewOptions, } from './types.js';
3
3
  export { ReplyJudge, DEFAULT_JUDGE_MODEL, DEFAULT_JUDGE_MAX_INPUT_TOKENS, MIN_JUDGE_INPUT_TOKENS, type ReplyJudgeDeps } from './reply-judge.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAChK,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAChK,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/gate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,cAAc,EAAE,YAAY,EAAiE,MAAM,iBAAiB,CAAC;AAoBhK,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,sBAAsB,EAAuB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/gate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,cAAc,EAAE,YAAY,EAAiE,MAAM,iBAAiB,CAAC;AAuBhK,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,sBAAsB,EAAuB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * What a gate rule decides about: whether its match names an event's server,
3
+ * channel or tags, or takes events without naming any of them (a catch-all).
4
+ * Shared by the gate (gate_status.catchAll) and wake onboarding, which treats
5
+ * a catch-all's let-by as no decision at all (MCPL RFC-001 §6, revision 4).
6
+ */
7
+ import type { GatePolicy } from './types.js';
8
+ /**
9
+ * Whether a glob names something: a pattern made only of wildcards and
10
+ * separators (`*`, `**`, `*:*`) matches everything, so it names nothing. A
11
+ * namespace glob such as `surface:*` names its namespace.
12
+ */
13
+ export declare const namesSomething: (pattern: unknown) => boolean;
14
+ /**
15
+ * Whether a rule's match is a decision about the events it takes: it names a
16
+ * source, a channel, or a tag (a tagsAny/tagsAll pattern that names
17
+ * something). Content filters and metadata flags (`metadataTrue`) don't: they
18
+ * take events from every server alike.
19
+ */
20
+ export declare function ruleDecides(policy: GatePolicy): boolean;
21
+ /**
22
+ * The first rule that takes MCPL events without deciding about them, or null.
23
+ * A rule whose scope names no `mcpl:` event type never sees them. With
24
+ * `lettingBy`, only one that lets them by without waking (`defer`/`skip`):
25
+ * the rule that leaves a new server's events undecided.
26
+ */
27
+ export declare function firstCatchAll(policies: readonly GatePolicy[], opts?: {
28
+ lettingBy?: boolean;
29
+ }): string | null;
30
+ //# sourceMappingURL=rule-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-scope.d.ts","sourceRoot":"","sources":["../../../src/gate/rule-scope.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,OAAgE,CAAC;AAEnH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAIvD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,GAAG,IAAI,CAWhH"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Whether a glob names something: a pattern made only of wildcards and
3
+ * separators (`*`, `**`, `*:*`) matches everything, so it names nothing. A
4
+ * namespace glob such as `surface:*` names its namespace.
5
+ */
6
+ export const namesSomething = (pattern) => typeof pattern === 'string' && /[^*?:]/.test(pattern);
7
+ /**
8
+ * Whether a rule's match is a decision about the events it takes: it names a
9
+ * source, a channel, or a tag (a tagsAny/tagsAll pattern that names
10
+ * something). Content filters and metadata flags (`metadataTrue`) don't: they
11
+ * take events from every server alike.
12
+ */
13
+ export function ruleDecides(policy) {
14
+ const m = policy.match ?? {};
15
+ if (namesSomething(m.source) || namesSomething(m.channel))
16
+ return true;
17
+ return [...(m.tagsAny ?? []), ...(m.tagsAll ?? [])].some(namesSomething);
18
+ }
19
+ /**
20
+ * The first rule that takes MCPL events without deciding about them, or null.
21
+ * A rule whose scope names no `mcpl:` event type never sees them. With
22
+ * `lettingBy`, only one that lets them by without waking (`defer`/`skip`):
23
+ * the rule that leaves a new server's events undecided.
24
+ */
25
+ export function firstCatchAll(policies, opts = {}) {
26
+ for (const p of policies) {
27
+ // A suppress rule decides no wake: what it lets by goes on to the rules after it.
28
+ if (p.suppress)
29
+ continue;
30
+ if (ruleDecides(p))
31
+ continue;
32
+ if (opts.lettingBy && p.behavior !== 'defer' && p.behavior !== 'skip')
33
+ continue;
34
+ const scope = p.match?.scope;
35
+ if (scope && !scope.some((s) => s.startsWith('mcpl:')))
36
+ continue;
37
+ return p.name;
38
+ }
39
+ return null;
40
+ }
41
+ //# sourceMappingURL=rule-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-scope.js","sourceRoot":"","sources":["../../../src/gate/rule-scope.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEnH;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAkB;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B,IAAI,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAA+B,EAAE,IAAI,GAA4B,EAAE;IAC/F,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,kFAAkF;QAClF,IAAI,CAAC,CAAC,QAAQ;YAAE,SAAS;QACzB,IAAI,WAAW,CAAC,CAAC,CAAC;YAAE,SAAS;QAC7B,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;YAAE,SAAS;QAChF,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC;QAC7B,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAAE,SAAS;QACjE,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=suppress-script-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suppress-script-worker.d.ts","sourceRoot":"","sources":["../../../src/gate/suppress-script-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Worker that runs agents' suppress-rule scripts (`suppress.script`, see
3
+ * suppress-scripts.ts).
4
+ *
5
+ * As with gate.js, the agent is trusted (it has shell and filesystem
6
+ * already), so this is a robustness boundary, not a security sandbox: on a
7
+ * thread of its own, a script that loops or hangs is timed out by the main
8
+ * thread (Atomics.wait) instead of freezing the agent's event loop.
9
+ *
10
+ * Protocol: the parent posts one message at a time and blocks in
11
+ * Atomics.wait until this worker writes the JSON answer into the shared
12
+ * buffer and flips the control word.
13
+ * - `{ type: 'reset' }` drops every script held: `{}`.
14
+ * - `{ type: 'load', name, script }` compiles one script (an expression
15
+ * that evaluates to a function) and keeps it under the rule's name:
16
+ * `{ error? }`.
17
+ * - `{ type: 'check', script }` compiles one without keeping it: `{ error? }`.
18
+ * - `{ type: 'eval', name, event, state }` calls the rule's function with
19
+ * the event and the state, and answers `{ hide, state }`: the state as
20
+ * the script left it, and `hide` true only where the script returned
21
+ * true. A script may be async.
22
+ */
23
+ import { parentPort, workerData } from 'node:worker_threads';
24
+ const { sab, maxStateBytes } = workerData;
25
+ const ctrl = new Int32Array(sab, 0, 2); // [0]=status (0 pending, 1 done), [1]=answer byte length
26
+ const data = new Uint8Array(sab, 8);
27
+ const enc = new TextEncoder();
28
+ const fns = new Map();
29
+ function answer(obj) {
30
+ let bytes = enc.encode(JSON.stringify(obj));
31
+ if (bytes.length > data.length)
32
+ bytes = enc.encode(JSON.stringify({ error: 'the answer was too large to pass back' }));
33
+ data.set(bytes);
34
+ Atomics.store(ctrl, 1, bytes.length);
35
+ Atomics.store(ctrl, 0, 1);
36
+ Atomics.notify(ctrl, 0);
37
+ }
38
+ const message = (e) => (e instanceof Error ? e.message : String(e));
39
+ function compile(script) {
40
+ // An expression, as `(event, state) => …` or `function (event, state) { … }`.
41
+ const made = new Function(`"use strict";\nreturn (${script}\n);`)();
42
+ if (typeof made !== 'function')
43
+ throw new Error(`the script is ${made === null ? 'null' : typeof made}, not a function such as (event, state) => false`);
44
+ return made;
45
+ }
46
+ parentPort?.on('message', (msg) => {
47
+ if (msg?.type === 'reset') {
48
+ fns.clear();
49
+ answer({});
50
+ return;
51
+ }
52
+ if (msg?.type === 'load') {
53
+ const name = msg.name ?? '';
54
+ try {
55
+ fns.set(name, compile(msg.script ?? ''));
56
+ answer({});
57
+ }
58
+ catch (e) {
59
+ fns.delete(name);
60
+ answer({ error: message(e) });
61
+ }
62
+ return;
63
+ }
64
+ if (msg?.type === 'check') {
65
+ try {
66
+ compile(msg.script ?? '');
67
+ answer({});
68
+ }
69
+ catch (e) {
70
+ answer({ error: message(e) });
71
+ }
72
+ return;
73
+ }
74
+ if (msg?.type !== 'eval')
75
+ return;
76
+ void (async () => {
77
+ const fn = fns.get(msg.name ?? '');
78
+ if (!fn)
79
+ return answer({ error: 'the script is not loaded' });
80
+ const state = (msg.state && typeof msg.state === 'object' && !Array.isArray(msg.state) ? msg.state : {});
81
+ try {
82
+ let hide = fn(msg.event, state);
83
+ if (hide && typeof hide.then === 'function')
84
+ hide = await hide;
85
+ let kept;
86
+ try {
87
+ kept = JSON.stringify(state);
88
+ }
89
+ catch (e) {
90
+ return answer({ error: `its state can't be kept as JSON: ${message(e)}` });
91
+ }
92
+ if (kept === undefined || enc.encode(kept).length > maxStateBytes) {
93
+ return answer({ error: `its state is over the ${maxStateBytes.toLocaleString('en-US')} bytes it may keep` });
94
+ }
95
+ // Only true hides: anything else, a truthy string included, shows the event.
96
+ answer({ hide: hide === true, state: JSON.parse(kept) });
97
+ }
98
+ catch (e) {
99
+ answer({ error: message(e) });
100
+ }
101
+ })();
102
+ });
103
+ //# sourceMappingURL=suppress-script-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suppress-script-worker.js","sourceRoot":"","sources":["../../../src/gate/suppress-script-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAM7D,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,UAAwB,CAAC;AACxD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,yDAAyD;AACjG,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACpC,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAG9B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE1C,SAAS,MAAM,CAAC,GAAY;IAC1B,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAAE,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC,CAAC;IACvH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAErF,SAAS,OAAO,CAAC,MAAc;IAC7B,8EAA8E;IAC9E,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,0BAA0B,MAAM,MAAM,CAAC,EAAa,CAAC;IAC/E,IAAI,OAAO,IAAI,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,kDAAkD,CAAC,CAAC;IACzJ,OAAO,IAAkB,CAAC;AAC5B,CAAC;AAED,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,GAAwF,EAAE,EAAE;IACrH,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,CAAC,EAAE,CAAC,CAAC;QACX,OAAO;IACT,CAAC;IACD,IAAI,GAAG,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC;YAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;YAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAC5H,OAAO;IACT,CAAC;IACD,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAC3F,OAAO;IACT,CAAC;IACD,IAAI,GAAG,EAAE,IAAI,KAAK,MAAM;QAAE,OAAO;IACjC,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAC;QACpI,IAAI,CAAC;YACH,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,IAAI,IAAI,OAAQ,IAA2B,CAAC,IAAI,KAAK,UAAU;gBAAE,IAAI,GAAG,MAAM,IAAI,CAAC;YACvF,IAAI,IAAY,CAAC;YACjB,IAAI,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBAAC,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,oCAAoC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAAC,CAAC;YAC/H,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;gBAClE,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,yBAAyB,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAC/G,CAAC;YACD,6EAA6E;YAC7E,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,105 @@
1
+ /** The most a rule's state may hold, as JSON (bytes). */
2
+ export declare const MAX_SUPPRESS_STATE_BYTES: number;
3
+ /** How long one event's call may take before the script is stopped and the event shown (ms). */
4
+ export declare const DEFAULT_SUPPRESS_SCRIPT_TIMEOUT_MS = 50;
5
+ /** Timeouts within a script's last TIMEOUT_WINDOW runs after which it isn't run again until its script changes. */
6
+ export declare const MAX_TIMEOUTS_IN_WINDOW = 3;
7
+ export declare const TIMEOUT_WINDOW = 20;
8
+ /** What a script is given for each event. */
9
+ export interface SuppressScriptEvent {
10
+ eventType: string;
11
+ source: string;
12
+ channel?: string;
13
+ author?: string;
14
+ tags: string[];
15
+ /** The event's text. */
16
+ text: string;
17
+ /** When the event arrived (ms since the epoch). */
18
+ at: number;
19
+ /** The event's metadata, as JSON. */
20
+ metadata: Record<string, unknown>;
21
+ }
22
+ /** How a rule's script has run, for gate_status. */
23
+ export interface SuppressScriptStatus {
24
+ loaded: boolean;
25
+ /** Present when the script no longer runs until its rule changes: why. */
26
+ disabled?: string;
27
+ runs: number;
28
+ hidden: number;
29
+ errors: number;
30
+ timeouts: number;
31
+ lastError: string | null;
32
+ /** Its state's size as JSON (bytes). */
33
+ stateBytes: number;
34
+ }
35
+ export declare class SuppressScripts {
36
+ private readonly opts;
37
+ /** The worker and its own shared buffer: a worker stopped after a timeout may still write to the buffer it had. */
38
+ private channel?;
39
+ private readonly dec;
40
+ private readonly rules;
41
+ /** States read from disk, by rule, kept until the rule with that script is synced or forgotten. */
42
+ private saved;
43
+ private saveTimer;
44
+ private disposed;
45
+ /** Whether the first sync, with every rule in force, has run: saved states it didn't take are then retired. */
46
+ private synced;
47
+ /** When a later event may try loading again, after loading failed for want of a worker (not a script's own error). */
48
+ private workerRetryAt;
49
+ private workerRetryDelay;
50
+ constructor(opts?: {
51
+ statePath?: string;
52
+ timeoutMs?: number;
53
+ });
54
+ private get timeoutMs();
55
+ /**
56
+ * Bring the scripts in step with the rules in force: compile new and
57
+ * changed ones, drop removed ones. A rule keeps its state while its script
58
+ * is the same text; a new or changed script starts from `{}`, or from the
59
+ * state saved for that very script before a restart.
60
+ */
61
+ sync(rules: ReadonlyArray<{
62
+ name: string;
63
+ script?: string;
64
+ }>): void;
65
+ /** Forget a rule's script and state (a rule removed or redefined), a state saved for it before a restart included. */
66
+ forget(name: string): void;
67
+ /**
68
+ * Whether `script` compiles to a function, run on the worker: an error's
69
+ * text, or null. For wake_add_rule, before it saves a rule.
70
+ */
71
+ check(script: string): string | null;
72
+ /**
73
+ * Run a rule's script for one event. `commit` keeps the state it leaves and
74
+ * counts the run; without it (a probe) the state is as before. Undefined
75
+ * when the rule has no script; `{ error }` when the script failed, and the
76
+ * event goes on to the rules after it.
77
+ */
78
+ run(name: string, event: SuppressScriptEvent, commit: boolean): {
79
+ hide: boolean;
80
+ } | {
81
+ error: string;
82
+ } | undefined;
83
+ /** One run in the rule's recent runs: how many of them timed out. */
84
+ private noteRun;
85
+ status(name: string): SuppressScriptStatus | undefined;
86
+ /** A rule's state as its script left it (a copy). */
87
+ stateOf(name: string): Record<string, unknown> | undefined;
88
+ dispose(): void;
89
+ /** Write the states now, if a write is due. */
90
+ flush(): void;
91
+ /**
92
+ * Load every script that isn't set aside into the worker, one at a time,
93
+ * on a clean slate. A script whose loading times out is set aside (it
94
+ * would stop the worker each time), and the rest are loaded again on the
95
+ * fresh worker that follows.
96
+ */
97
+ private load;
98
+ /** One message to the worker, waited for: its answer, or a timeout, after which the worker is stopped (the caller loads the scripts again). */
99
+ private call;
100
+ private ensureWorker;
101
+ private stopWorker;
102
+ private scheduleSave;
103
+ private save;
104
+ }
105
+ //# sourceMappingURL=suppress-scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suppress-scripts.d.ts","sourceRoot":"","sources":["../../../src/gate/suppress-scripts.ts"],"names":[],"mappings":"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"}