@acquiredintelligence/attend 0.0.0-stage → 0.1.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 (254) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +580 -2
  3. package/dist/attend.d.ts +30 -0
  4. package/dist/attend.d.ts.map +1 -0
  5. package/dist/attend.js +428 -0
  6. package/dist/attend.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +4 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/core/ids.d.ts +12 -0
  12. package/dist/core/ids.d.ts.map +1 -0
  13. package/dist/core/ids.js +97 -0
  14. package/dist/core/ids.js.map +1 -0
  15. package/dist/core/reducer.d.ts +26 -0
  16. package/dist/core/reducer.d.ts.map +1 -0
  17. package/dist/core/reducer.js +437 -0
  18. package/dist/core/reducer.js.map +1 -0
  19. package/dist/core/seen.d.ts +22 -0
  20. package/dist/core/seen.d.ts.map +1 -0
  21. package/dist/core/seen.js +61 -0
  22. package/dist/core/seen.js.map +1 -0
  23. package/dist/core/state.d.ts +12 -0
  24. package/dist/core/state.d.ts.map +1 -0
  25. package/dist/core/state.js +90 -0
  26. package/dist/core/state.js.map +1 -0
  27. package/dist/core/step.d.ts +14 -0
  28. package/dist/core/step.d.ts.map +1 -0
  29. package/dist/core/step.js +17 -0
  30. package/dist/core/step.js.map +1 -0
  31. package/dist/core/threshold.d.ts +40 -0
  32. package/dist/core/threshold.d.ts.map +1 -0
  33. package/dist/core/threshold.js +72 -0
  34. package/dist/core/threshold.js.map +1 -0
  35. package/dist/core/types.d.ts +704 -0
  36. package/dist/core/types.d.ts.map +1 -0
  37. package/dist/core/types.js +24 -0
  38. package/dist/core/types.js.map +1 -0
  39. package/dist/core/window.d.ts +38 -0
  40. package/dist/core/window.d.ts.map +1 -0
  41. package/dist/core/window.js +322 -0
  42. package/dist/core/window.js.map +1 -0
  43. package/dist/decisions.d.ts +53 -0
  44. package/dist/decisions.d.ts.map +1 -0
  45. package/dist/decisions.js +115 -0
  46. package/dist/decisions.js.map +1 -0
  47. package/dist/errors.d.ts +36 -0
  48. package/dist/errors.d.ts.map +1 -0
  49. package/dist/errors.js +53 -0
  50. package/dist/errors.js.map +1 -0
  51. package/dist/index.d.ts +10 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +4 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/internal/adapter.d.ts +21 -0
  56. package/dist/internal/adapter.d.ts.map +1 -0
  57. package/dist/internal/adapter.js +62 -0
  58. package/dist/internal/adapter.js.map +1 -0
  59. package/dist/internal/assert.d.ts +5 -0
  60. package/dist/internal/assert.d.ts.map +1 -0
  61. package/dist/internal/assert.js +14 -0
  62. package/dist/internal/assert.js.map +1 -0
  63. package/dist/internal/clock.d.ts +8 -0
  64. package/dist/internal/clock.d.ts.map +1 -0
  65. package/dist/internal/clock.js +38 -0
  66. package/dist/internal/clock.js.map +1 -0
  67. package/dist/internal/http.d.ts +42 -0
  68. package/dist/internal/http.d.ts.map +1 -0
  69. package/dist/internal/http.js +122 -0
  70. package/dist/internal/http.js.map +1 -0
  71. package/dist/internal/images.d.ts +18 -0
  72. package/dist/internal/images.d.ts.map +1 -0
  73. package/dist/internal/images.js +75 -0
  74. package/dist/internal/images.js.map +1 -0
  75. package/dist/internal/json.d.ts +3 -0
  76. package/dist/internal/json.d.ts.map +1 -0
  77. package/dist/internal/json.js +5 -0
  78. package/dist/internal/json.js.map +1 -0
  79. package/dist/internal/prompt.d.ts +31 -0
  80. package/dist/internal/prompt.d.ts.map +1 -0
  81. package/dist/internal/prompt.js +149 -0
  82. package/dist/internal/prompt.js.map +1 -0
  83. package/dist/internal/shared.d.ts +12 -0
  84. package/dist/internal/shared.d.ts.map +1 -0
  85. package/dist/internal/shared.js +134 -0
  86. package/dist/internal/shared.js.map +1 -0
  87. package/dist/jev.d.ts +74 -0
  88. package/dist/jev.d.ts.map +1 -0
  89. package/dist/jev.js +156 -0
  90. package/dist/jev.js.map +1 -0
  91. package/dist/llm.d.ts +164 -0
  92. package/dist/llm.d.ts.map +1 -0
  93. package/dist/llm.js +79 -0
  94. package/dist/llm.js.map +1 -0
  95. package/dist/mcp.d.ts +130 -0
  96. package/dist/mcp.d.ts.map +1 -0
  97. package/dist/mcp.js +550 -0
  98. package/dist/mcp.js.map +1 -0
  99. package/dist/memory.d.ts +10 -0
  100. package/dist/memory.d.ts.map +1 -0
  101. package/dist/memory.js +50 -0
  102. package/dist/memory.js.map +1 -0
  103. package/dist/postgres.d.ts +25 -0
  104. package/dist/postgres.d.ts.map +1 -0
  105. package/dist/postgres.js +56 -0
  106. package/dist/postgres.js.map +1 -0
  107. package/dist/redis.d.ts +20 -0
  108. package/dist/redis.d.ts.map +1 -0
  109. package/dist/redis.js +83 -0
  110. package/dist/redis.js.map +1 -0
  111. package/dist/server/compat.d.ts +13 -0
  112. package/dist/server/compat.d.ts.map +1 -0
  113. package/dist/server/compat.js +5 -0
  114. package/dist/server/compat.js.map +1 -0
  115. package/dist/server/cursor.d.ts +15 -0
  116. package/dist/server/cursor.d.ts.map +1 -0
  117. package/dist/server/cursor.js +50 -0
  118. package/dist/server/cursor.js.map +1 -0
  119. package/dist/server/events.d.ts +42 -0
  120. package/dist/server/events.d.ts.map +1 -0
  121. package/dist/server/events.js +189 -0
  122. package/dist/server/events.js.map +1 -0
  123. package/dist/server/fanout.d.ts +28 -0
  124. package/dist/server/fanout.d.ts.map +1 -0
  125. package/dist/server/fanout.js +184 -0
  126. package/dist/server/fanout.js.map +1 -0
  127. package/dist/server/guard.d.ts +19 -0
  128. package/dist/server/guard.d.ts.map +1 -0
  129. package/dist/server/guard.js +27 -0
  130. package/dist/server/guard.js.map +1 -0
  131. package/dist/server/http.d.ts +4 -0
  132. package/dist/server/http.d.ts.map +1 -0
  133. package/dist/server/http.js +323 -0
  134. package/dist/server/http.js.map +1 -0
  135. package/dist/server/ingest.d.ts +4 -0
  136. package/dist/server/ingest.d.ts.map +1 -0
  137. package/dist/server/ingest.js +400 -0
  138. package/dist/server/ingest.js.map +1 -0
  139. package/dist/server/install.d.ts +5 -0
  140. package/dist/server/install.d.ts.map +1 -0
  141. package/dist/server/install.js +91 -0
  142. package/dist/server/install.js.map +1 -0
  143. package/dist/server/poll.d.ts +4 -0
  144. package/dist/server/poll.d.ts.map +1 -0
  145. package/dist/server/poll.js +45 -0
  146. package/dist/server/poll.js.map +1 -0
  147. package/dist/server/serve.d.ts +19 -0
  148. package/dist/server/serve.d.ts.map +1 -0
  149. package/dist/server/serve.js +238 -0
  150. package/dist/server/serve.js.map +1 -0
  151. package/dist/server/sessions.d.ts +14 -0
  152. package/dist/server/sessions.d.ts.map +1 -0
  153. package/dist/server/sessions.js +54 -0
  154. package/dist/server/sessions.js.map +1 -0
  155. package/dist/server/stream.d.ts +11 -0
  156. package/dist/server/stream.d.ts.map +1 -0
  157. package/dist/server/stream.js +216 -0
  158. package/dist/server/stream.js.map +1 -0
  159. package/dist/server/tools.d.ts +22 -0
  160. package/dist/server/tools.d.ts.map +1 -0
  161. package/dist/server/tools.js +55 -0
  162. package/dist/server/tools.js.map +1 -0
  163. package/dist/server/types.d.ts +351 -0
  164. package/dist/server/types.d.ts.map +1 -0
  165. package/dist/server/types.js +5 -0
  166. package/dist/server/types.js.map +1 -0
  167. package/dist/server.d.ts +11 -0
  168. package/dist/server.d.ts.map +1 -0
  169. package/dist/server.js +10 -0
  170. package/dist/server.js.map +1 -0
  171. package/dist/shell/budget.d.ts +4 -0
  172. package/dist/shell/budget.d.ts.map +1 -0
  173. package/dist/shell/budget.js +5 -0
  174. package/dist/shell/budget.js.map +1 -0
  175. package/dist/shell/copy.d.ts +17 -0
  176. package/dist/shell/copy.d.ts.map +1 -0
  177. package/dist/shell/copy.js +67 -0
  178. package/dist/shell/copy.js.map +1 -0
  179. package/dist/shell/decisions.d.ts +6 -0
  180. package/dist/shell/decisions.d.ts.map +1 -0
  181. package/dist/shell/decisions.js +42 -0
  182. package/dist/shell/decisions.js.map +1 -0
  183. package/dist/shell/read.d.ts +7 -0
  184. package/dist/shell/read.d.ts.map +1 -0
  185. package/dist/shell/read.js +21 -0
  186. package/dist/shell/read.js.map +1 -0
  187. package/dist/shell/scheduler.d.ts +4 -0
  188. package/dist/shell/scheduler.d.ts.map +1 -0
  189. package/dist/shell/scheduler.js +90 -0
  190. package/dist/shell/scheduler.js.map +1 -0
  191. package/dist/shell/scope.d.ts +27 -0
  192. package/dist/shell/scope.d.ts.map +1 -0
  193. package/dist/shell/scope.js +343 -0
  194. package/dist/shell/scope.js.map +1 -0
  195. package/dist/shell/types.d.ts +156 -0
  196. package/dist/shell/types.d.ts.map +1 -0
  197. package/dist/shell/types.js +2 -0
  198. package/dist/shell/types.js.map +1 -0
  199. package/dist/sqlite.d.ts +14 -0
  200. package/dist/sqlite.d.ts.map +1 -0
  201. package/dist/sqlite.js +39 -0
  202. package/dist/sqlite.js.map +1 -0
  203. package/dist/step.d.ts +18 -0
  204. package/dist/step.d.ts.map +1 -0
  205. package/dist/step.js +14 -0
  206. package/dist/step.js.map +1 -0
  207. package/dist/store/memory.d.ts +12 -0
  208. package/dist/store/memory.d.ts.map +1 -0
  209. package/dist/store/memory.js +264 -0
  210. package/dist/store/memory.js.map +1 -0
  211. package/dist/store/postgres.d.ts +24 -0
  212. package/dist/store/postgres.d.ts.map +1 -0
  213. package/dist/store/postgres.js +364 -0
  214. package/dist/store/postgres.js.map +1 -0
  215. package/dist/store/redis.d.ts +12 -0
  216. package/dist/store/redis.d.ts.map +1 -0
  217. package/dist/store/redis.js +540 -0
  218. package/dist/store/redis.js.map +1 -0
  219. package/dist/store/sqlite-worker.d.ts +91 -0
  220. package/dist/store/sqlite-worker.d.ts.map +1 -0
  221. package/dist/store/sqlite-worker.js +322 -0
  222. package/dist/store/sqlite-worker.js.map +1 -0
  223. package/dist/store/sqlite.d.ts +34 -0
  224. package/dist/store/sqlite.d.ts.map +1 -0
  225. package/dist/store/sqlite.js +238 -0
  226. package/dist/store/sqlite.js.map +1 -0
  227. package/dist/store/types.d.ts +137 -0
  228. package/dist/store/types.d.ts.map +1 -0
  229. package/dist/store/types.js +2 -0
  230. package/dist/store/types.js.map +1 -0
  231. package/dist/testing/conformance.d.ts +13 -0
  232. package/dist/testing/conformance.d.ts.map +1 -0
  233. package/dist/testing/conformance.js +542 -0
  234. package/dist/testing/conformance.js.map +1 -0
  235. package/dist/testing/wire.d.ts +16 -0
  236. package/dist/testing/wire.d.ts.map +1 -0
  237. package/dist/testing/wire.js +304 -0
  238. package/dist/testing/wire.js.map +1 -0
  239. package/dist/testing.d.ts +113 -0
  240. package/dist/testing.d.ts.map +1 -0
  241. package/dist/testing.js +655 -0
  242. package/dist/testing.js.map +1 -0
  243. package/dist/types.d.ts +5 -0
  244. package/dist/types.d.ts.map +1 -0
  245. package/dist/types.js +5 -0
  246. package/dist/types.js.map +1 -0
  247. package/package.json +130 -4
  248. package/skills/attend/SKILL.md +231 -0
  249. package/skills/attend/references/judges.md +283 -0
  250. package/skills/attend/references/kinds.md +62 -0
  251. package/skills/attend/references/mcp.md +132 -0
  252. package/skills/attend/references/sinks.md +73 -0
  253. package/skills/attend/references/stores.md +90 -0
  254. package/skills/attend/references/testing.md +120 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Domain types shared by the reducer and public adapters. */
2
+ export * from './core/types.js';
3
+ /** The log and snapshot store port. */
4
+ export * from './store/types.js';
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,cAAc,iBAAiB,CAAC;AAChC,uCAAuC;AACvC,cAAc,kBAAkB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /** Domain types shared by the reducer and public adapters. */
2
+ export * from './core/types.js';
3
+ /** The log and snapshot store port. */
4
+ export * from './store/types.js';
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,cAAc,iBAAiB,CAAC;AAChC,uCAAuC;AACvC,cAAc,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,132 @@
1
1
  {
2
2
  "name": "@acquiredintelligence/attend",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "The attention layer for agents: decide when an event should wake your agent.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/acquiredintelligence/attend.git"
10
+ },
11
+ "keywords": [
12
+ "agents",
13
+ "mcp",
14
+ "mcp-events",
15
+ "attention",
16
+ "llm",
17
+ "proactive-agents",
18
+ "debounce",
19
+ "event-driven"
20
+ ],
21
+ "engines": {
22
+ "node": ">=22.13"
23
+ },
24
+ "bin": {
25
+ "attend": "dist/cli.js"
26
+ },
27
+ "packageManager": "pnpm@12.8.1",
28
+ "sideEffects": false,
29
+ "files": [
30
+ "dist",
31
+ "skills",
32
+ "README.md",
33
+ "LICENSE"
34
+ ],
35
+ "exports": {
36
+ ".": {
37
+ "types": "./dist/index.d.ts",
38
+ "default": "./dist/index.js"
39
+ },
40
+ "./sqlite": {
41
+ "types": "./dist/sqlite.d.ts",
42
+ "default": "./dist/sqlite.js"
43
+ },
44
+ "./postgres": {
45
+ "types": "./dist/postgres.d.ts",
46
+ "default": "./dist/postgres.js"
47
+ },
48
+ "./redis": {
49
+ "types": "./dist/redis.d.ts",
50
+ "default": "./dist/redis.js"
51
+ },
52
+ "./mcp": {
53
+ "types": "./dist/mcp.d.ts",
54
+ "default": "./dist/mcp.js"
55
+ },
56
+ "./server": {
57
+ "types": "./dist/server.d.ts",
58
+ "default": "./dist/server.js"
59
+ },
60
+ "./llm": {
61
+ "types": "./dist/llm.d.ts",
62
+ "default": "./dist/llm.js"
63
+ },
64
+ "./decisions": {
65
+ "types": "./dist/decisions.d.ts",
66
+ "default": "./dist/decisions.js"
67
+ },
68
+ "./jev": {
69
+ "types": "./dist/jev.d.ts",
70
+ "default": "./dist/jev.js"
71
+ },
72
+ "./testing": {
73
+ "types": "./dist/testing.d.ts",
74
+ "default": "./dist/testing.js"
75
+ },
76
+ "./package.json": "./package.json"
77
+ },
78
+ "scripts": {
79
+ "build": "tsc -p tsconfig.build.json",
80
+ "typecheck": "tsc -p tsconfig.json --noEmit",
81
+ "test": "vitest run",
82
+ "check": "pnpm typecheck && pnpm test && pnpm build && pnpm check:docs",
83
+ "demo": "pnpm build && node --experimental-strip-types examples/demo.ts",
84
+ "check:docs": "node scripts/check-snippets.mjs",
85
+ "test:oracle": "vitest run -c vitest.oracle.config.ts",
86
+ "bench:selfcheck": "pnpm build && vitest run -c bench/vitest.config.mjs",
87
+ "bench:openloop": "node bench/openloop.mjs",
88
+ "bench:latency": "node bench/latency.mjs",
89
+ "bench:stores": "node bench/stores.mjs",
90
+ "bench:alloc": "node bench/alloc.mjs",
91
+ "bench:suite": "node bench/suite.mjs",
92
+ "bench:validate": "node bench/validate.mjs",
93
+ "bench:gates": "node bench/gates.mjs"
94
+ },
95
+ "peerDependencies": {
96
+ "@modelcontextprotocol/sdk": "^1.30.0",
97
+ "@modelcontextprotocol/server": "^2.2.0",
98
+ "zod": "^3.25 || ^4.0"
99
+ },
100
+ "peerDependenciesMeta": {
101
+ "@modelcontextprotocol/sdk": {
102
+ "optional": true
103
+ },
104
+ "@modelcontextprotocol/server": {
105
+ "optional": true
106
+ },
107
+ "zod": {
108
+ "optional": true
109
+ }
110
+ },
111
+ "devDependencies": {
112
+ "@modelcontextprotocol/client": "2.2.0",
113
+ "@modelcontextprotocol/sdk": "1.32.1",
114
+ "@modelcontextprotocol/server": "2.2.0",
115
+ "@types/node": "^22.20.5",
116
+ "@types/pg": "8.23.1",
117
+ "fast-check": "4.10.2",
118
+ "pg": "8.23.1",
119
+ "redis": "6.3.0",
120
+ "typescript": "7.0.2",
121
+ "vitest": "5.0.5",
122
+ "zod": "^4.6.7"
123
+ },
124
+ "homepage": "https://github.com/acquiredintelligence/attend#readme",
125
+ "bugs": {
126
+ "url": "https://github.com/acquiredintelligence/attend/issues"
127
+ },
128
+ "author": "Zettel Labs, Inc.",
129
+ "publishConfig": {
130
+ "access": "public"
131
+ }
132
+ }
@@ -0,0 +1,231 @@
1
+ ---
2
+ name: attend
3
+ description: Wire the attend TypeScript library into an app so that its events wake an agent only when they should. Use when adding attend to a project, deciding which app events should reach an agent and with what reaction (interrupt, queue, note, ask, wait, skip), writing the one small attention module, choosing a store or a judge, running attend serve, tuning the act threshold from a replay, or debugging why an agent woke, stayed silent or got a dead letter.
4
+ ---
5
+
6
+ # attend
7
+
8
+ attend sits between an app's firehose of events and an agent. Each **scope** (one conversation, repo, inbox or device) collects its events into a **window**. The window settles when the act in it is finished, a **judge** picks a **route** (`interrupt`, `queue`, `note`, `ask`, `skip` or `wait`), and the app carries the route out. Everything is persisted, so a restart loses nothing.
9
+
10
+ Your job is to wire this into the user's app in four steps, with a tiny footprint:
11
+
12
+ 1. Identify the events the app emits and could pipe out.
13
+ 2. Pick which of them are useful signals.
14
+ 3. Decide which deserve which reaction.
15
+ 4. Wire it end to end.
16
+
17
+ ## How to behave
18
+
19
+ - **Discover first.** Read the code for everything you can answer yourself: the event sources, the agent runtime, the language and the conventions, which store the app already has, which API keys are in its environment (check names, never print values).
20
+ - **Stay thin.** The integration is **one small module** in the codebase's own style and location, plus **a few call sites** at event chokepoints the app already has (its bus, its webhook handler, its analytics wrapper, its store dispatch). Add no new layer, framework or directory tree, and do not scatter edits. If the app has a place for such modules, use it.
21
+ - **Tell, then ask once.** Before you edit anything, give the user the FYI below. It is an explanation, not a question. Then ask **one batch** of simple questions, each with a recommended default, in a single message. Never ask a series. If the user says "go" or nothing contradicts a default, take the defaults.
22
+ - **Never print or write an API key.** Read keys from the environment.
23
+
24
+ ## 1. Identify the events
25
+
26
+ Find every place the app already emits something an agent could react to, and note the scope each belongs to (the conversation, repo, inbox or device it is about):
27
+
28
+ | Look in | For |
29
+ |---|---|
30
+ | Analytics and telemetry calls (`track`, `capture`, `log.event`) | Named user actions |
31
+ | WebSocket and SSE handlers, message buses, queues | Messages, presence, progress |
32
+ | Store actions and reducers, DOM and UI handlers | State changes, clicks, edits |
33
+ | Webhook handlers and CI or deploy hooks | Builds, deploys, alerts, PRs |
34
+ | Logs and job runners | Failures, completions |
35
+ | MCP servers the app already talks to | Upstream events (`attend.attach(scope, mcpEventsSource(...))`, see [references/mcp.md](references/mcp.md)) |
36
+
37
+ For each event decide its `id` (derive it from the source: the delivery id, the message id; a retry must carry the same id), its `at` (the source's time in ms), and `text` (one plain line the agent can read). Note anything that must be redacted before it leaves the process.
38
+
39
+ **Check.** You have a list of event names, where each is emitted, its scope key and a stable id.
40
+
41
+ ## 2. Pick the signals
42
+
43
+ Most events are noise. Keep an event only if an agent could do something useful with it, alone or with the events around it. Drop high-rate chatter (cursor moves, heartbeats) unless the agent should react to the user lingering; keep it as `continuous` or `passive` if so. Prefer fewer, richer events. The agent's own output is worth piping in as `context`, so the judge sees what the agent already said.
44
+
45
+ **Check.** The list is short enough to read in one glance, and every kept event has a reason.
46
+
47
+ ## 3. Decide the reactions
48
+
49
+ Give each kept event a **kind**, which tells attend when the window settles. Ask these in order; the first yes decides.
50
+
51
+ 1. The agent itself produced it (a reply, a tool call, a status)? `context`. It never settles a window.
52
+ 2. A person is addressing the agent and waiting (a message to it, an @mention, a final transcript)? `flush`. The window settles at once and `wait` is not offered.
53
+ 3. One step of something the user keeps doing (typing, scrolling, dragging, a partial transcript)? `continuous`. Settles after `streamGapMs` of quiet.
54
+ 4. The user lingering without acting (hover, focus, page view)? `passive`. Settles `passiveQuietMs` after the last one.
55
+ 5. It ends something, or a run reached an outcome the agent should hear even when nobody acted (submit, save, merge, failed build, fired alert)? `closing`. Settles `closingGraceMs` later so its consequences can join.
56
+ 6. Otherwise it reports what followed (log line, progress, tool result)? `consequence`. It joins the open window and never settles one.
57
+
58
+ Then map each **route** to what the agent runtime can really do. The judge picks the route; the app decides how to run it:
59
+
60
+ | Route | The agent | Typical mapping |
61
+ |---|---|---|
62
+ | `interrupt` | Hears it now, even mid-turn | Steer or cancel the current turn with the notice |
63
+ | `queue` | Hears it when the current turn ends | Enqueue as the next user-side message |
64
+ | `note` | Gets it as context, does not respond | Append to the next turn's context |
65
+ | `ask` | Stays quiet; the user is offered a prompt | Show a banner or button that calls the agent in |
66
+ | `skip`, `wait` | Nothing yet | No handler; attend keeps them |
67
+
68
+ Write down, in a sentence each, when you expect `interrupt` and when you expect silence in this app. That goes into the judge's `guidance`. [references/kinds.md](references/kinds.md) has the exact settle rules and [references/sinks.md](references/sinks.md) the host mapping.
69
+
70
+ **Check.** Every kept event has a kind, each scope has at least one event that settles a window (`flush`, `closing`, `continuous` or `passive`; a scope fed only consequences never wakes the agent), and every route has a handler or a reason not to.
71
+
72
+ ## The FYI, then the question batch
73
+
74
+ After steps 1 to 3 and before you edit anything, send the user this, in your own words and with their real names filled in. Keep it to a few short lines:
75
+
76
+ > **How attend will work in your app**
77
+ > - **Events:** `<event names>` from `<files or sources>`, one scope per `<conversation/repo/...>`.
78
+ > - **Settling:** attend groups them into a window per scope and settles it when `<the closing event / a user message>` arrives, or after a quiet gap, so the agent hears one notice per episode, not one per event.
79
+ > - **Judge:** `<Jev / the Decisions API / your LLM / a rule>` reads each settled window and picks a route.
80
+ > - **Reactions:** interrupt `<does X>`, queue `<does Y>`, note `<does Z>`, ask `<does W>`.
81
+ > - **Where:** one new file, `<path>`, and `<N>` call sites in `<files>`.
82
+
83
+ Then, in the same message, one batch (keep only the questions you could not answer from the code):
84
+
85
+ > **Quick questions (reply "go" to accept the defaults):**
86
+ > 1. Judge: `<Jev, with your TypeSafe key in TYPESAFE_API_KEY>` (recommended: fast, built for this) or `<your own LLM>` or `<a rule>`?
87
+ > 2. Run it inside the app (recommended: real time) or as `attend serve` beside it?
88
+ > 3. How many interruptions an hour are acceptable? (default: 6)
89
+ > 4. Store: `<memory>` for now or `<the database you already have>`? (default: `<what the app has>`)
90
+ > 5. May I replay a sample of your recorded events to tune the threshold? (default: yes, from `<where>`)
91
+
92
+ ## 4. Wire it end to end
93
+
94
+ ### The one module
95
+
96
+ Put it where the app keeps its integrations, named for what it is. It owns the kinds table, the judge, the sink and the run loop, and exports two things the call sites use: `hear` and `startAttention`.
97
+
98
+ ```ts
99
+ import { createAttend, defaultNotice, memoryStore, routes, type Decision, type Event, type Kind } from '@acquiredintelligence/attend';
100
+ import { jevJudge } from '@acquiredintelligence/attend/jev';
101
+
102
+ declare const agent: {
103
+ steer(scope: string, text: string): Promise<void>;
104
+ enqueue(scope: string, text: string): Promise<void>;
105
+ addContext(scope: string, text: string): Promise<void>;
106
+ offer(scope: string, text: string): Promise<void>;
107
+ };
108
+
109
+ const KIND_BY_NAME: Record<string, Kind> = {
110
+ 'message.created': 'flush',
111
+ 'build.failed': 'closing',
112
+ 'deploy.finished': 'closing',
113
+ 'agent.reply': 'context',
114
+ };
115
+ const kind = (event: Event): Kind => KIND_BY_NAME[event.name] ?? 'consequence';
116
+
117
+ const deliver = (act: (scope: string, text: string) => Promise<void>) => (decision: Decision) => act(decision.scope, defaultNotice(decision));
118
+
119
+ const attend = createAttend({
120
+ store: memoryStore(),
121
+ kind,
122
+ judge: jevJudge({ apiKey: process.env.TYPESAFE_API_KEY ?? '' }),
123
+ sink: routes({ interrupt: deliver(agent.steer), queue: deliver(agent.enqueue), note: deliver(agent.addContext), ask: deliver(agent.offer) }),
124
+ deadLetter: (letter) => console.error('attend dead letter', letter.id, letter.message),
125
+ guidance: 'A coding agent for the acme/shop repo. Its user cares about failing builds on main and about direct questions.',
126
+ });
127
+
128
+ export const hear = (scope: string, event: Event) => attend.push(scope, [event]);
129
+ export const startAttention = (signal: AbortSignal) => attend.run({ signal });
130
+ ```
131
+
132
+ Adapt it to the codebase: its language idioms, its logger, its config for the key, its real agent calls. Make each handler idempotent on `decision.id` (attend delivers at least once and redelivers the same decision after a crash). Pass `deadLetter` something durable if the app has storage. The judge writes no text: the notice comes from `defaultNotice(decision)` or from `decision.window.events`.
133
+
134
+ ### The call sites
135
+
136
+ At each chokepoint from step 1, add one line that hands the existing event to `hear` with the scope and the stable id. Do not change what the chokepoint does. Start `startAttention(signal)` once where the app boots, and abort the signal where it shuts down.
137
+
138
+ ### Choose the judge and the store
139
+
140
+ | Situation | Choice |
141
+ |---|---|
142
+ | The user has a TypeSafe key | `jevJudge` from `@acquiredintelligence/attend/jev`. A fast classifier with real probabilities. The speed default for real time. |
143
+ | The app uses the OpenAI Decisions API | `decisionsJudge` from `@acquiredintelligence/attend/decisions` |
144
+ | The app has an LLM client and the user prefers it | `llmJudge` from `@acquiredintelligence/attend/llm` with a `complete` call; slower, see [references/judges.md](references/judges.md) |
145
+ | A rule decides ("a direct message always interrupts") | A plain function |
146
+ | Tests, a demo, a short-lived process | `memoryStore()` |
147
+ | One host with a disk | `sqliteStore(db)` from `@acquiredintelligence/attend/sqlite` |
148
+ | Several replicas, or Postgres already there | `postgresStore(pool)` from `@acquiredintelligence/attend/postgres` after `migrate(pool)` |
149
+ | Redis already there | `redisStore(send)` from `@acquiredintelligence/attend/redis` |
150
+
151
+ [references/stores.md](references/stores.md) has the setup for each store. If the app is not TypeScript, or the agent is another process, run `npx attend serve` beside it instead, post NDJSON to `/v1/ingest` from the existing chokepoints, and read decisions over MCP Events (`events/stream`, `events/poll` or the `attend_wait` tool). See [references/mcp.md](references/mcp.md).
152
+
153
+ ### Prove it with a fake clock
154
+
155
+ Inject `fakeClock()` from `@acquiredintelligence/attend/testing` as `clock`, answer with `scriptedJudge([...])`, and assert on `recordingSink()`. Advance the clock to the exact deadline (such as `DEFAULT_POLICY.closingGraceMs`) and assert nothing happens one millisecond before it. Cover every kind the app uses, one `wait` that merges with the next window, and one failure that ends in a dead letter. [references/testing.md](references/testing.md) has the setup.
156
+
157
+ ### Tune the act threshold
158
+
159
+ By default the judge's route stands. Where the judge returns real probabilities (`jevJudge`, `decisionsJudge`), set `actThreshold` so the agent acts only when `p(interrupt) + p(ask)` reaches it. Choose the value from the app's own events against the user's interruptions-per-hour budget (question 3), not by guessing: replay a recording with the threshold off, collect each judgment, and let `suggestThreshold` pick the smallest threshold that fits.
160
+
161
+ ```ts
162
+ import { createAttend, memoryStore, type Event, type Judge, type Judgment } from '@acquiredintelligence/attend';
163
+ import { jevJudge } from '@acquiredintelligence/attend/jev';
164
+ import { fakeClock, suggestThreshold } from '@acquiredintelligence/attend/testing';
165
+
166
+ export async function tune(recorded: { scope: string; event: Event }[], maxActsPerHour: number) {
167
+ const judgments: Judgment[] = [];
168
+ const base = jevJudge({ apiKey: process.env.TYPESAFE_API_KEY ?? '' });
169
+ const judge: Judge = async (input, signal) => {
170
+ const judgment = await base(input, signal);
171
+ judgments.push(judgment);
172
+ return judgment;
173
+ };
174
+ const clock = fakeClock();
175
+ const attend = createAttend({
176
+ store: memoryStore(),
177
+ clock,
178
+ judge,
179
+ kind: (event) => (event.name === 'message.created' ? 'flush' : 'consequence'),
180
+ sink: 'log',
181
+ deadLetter: 'log',
182
+ });
183
+ const stop = new AbortController();
184
+ const running = attend.run({ signal: stop.signal });
185
+ const first = recorded[0]?.event.at ?? 0;
186
+ for (const { scope, event } of recorded) {
187
+ await clock.advance(Math.max(0, event.at - first - clock.now()));
188
+ await attend.push(scope, [event]);
189
+ }
190
+ await clock.advance(120_000);
191
+ stop.abort();
192
+ await running;
193
+ const last = recorded.at(-1)?.event.at ?? first;
194
+ return suggestThreshold(judgments, { durationMs: Math.max(1, last - first), maxActsPerHour });
195
+ }
196
+ ```
197
+
198
+ Write the returned `threshold` into the module as `actThreshold`. If it is `null`, no threshold fits the budget: tell the user and keep the judge's route. `llmJudge`'s self-reported probabilities are near one-hot, so a threshold changes little there.
199
+
200
+ **Check.** An end-to-end run on real events delivers at least one decision to a handler, and `observe` traces show `settled`, `judged` and `delivered` for it. Keep `observe` on while you wire it in.
201
+
202
+ ## Run notes
203
+
204
+ - `run()` judges and delivers. `push`, `attach` and `flush` only persist. Start `run()` in at least one long-lived process; several may run over one shared store.
205
+ - Give every process that feeds a scope the same `kind`. The process that ingests an event is the one that kinds it.
206
+ - A scope can take several sources. Attach a given source to a scope from one process only, and never twice in one process: the second `attach` throws.
207
+ - `attend.end(scope)` tells attend the producer knows the unit is over (the turn ended): it settles at the next tick and still offers `wait`. `attend.flush(scope)` forces a settle without `wait`.
208
+ - `observe` receives every trace (`settled`, `judged`, `routeThresholded`, `retrying`, `deadLettered` and more).
209
+
210
+ ## Pitfalls by symptom
211
+
212
+ Turn on `observe` first. Its traces name each step a window took. Then match the symptom and check its causes in order.
213
+
214
+ | Symptom | Causes |
215
+ |---|---|
216
+ | The agent never hears anything | No process runs `run()`. The scope gets only `consequence` and `context` events. The producer that pushed the events uses a different `kind`. |
217
+ | The agent hears the same thing twice | The sink is not idempotent on `decision.id`. The source sends a new event id when it retries. |
218
+ | A direct message reaches the agent late | `kind` maps it to `closing` or `consequence` instead of `flush`. The judge chose `queue`. A judge call was in flight, and the message waited for the next window. |
219
+ | Dead letters with the message `route not offered: wait` | The judge answered `wait` when `input.routes` did not offer it: after a flush, after `attend.flush(scope)`, after `maxWaits` waits, or at the wait horizon. |
220
+ | Dead letters with `attend: judge timed out` or `judge lease expired` | The judge ignores `signal` or takes longer than `judgeTimeoutMs`. |
221
+ | Dead letters with `attend: delivery timed out` or `delivery lease expired` | The sink ignores `signal` or takes longer than `deliveryTimeoutMs`. |
222
+ | `push` rejects with `OutboxFullError` | Its `lane` says which handler is failing: `decisions` means the sink, and the scope holds `maxOutbox` undelivered decisions; `deadLetters` means the dead-letter handler, and it holds `maxDeadLetters`. Fix the handler, then retry the push. `attach` backs off on its own. |
223
+ | `push` or `flush` rejects with `ConflictError` | Eight versioned writes in a row lost to other writers on one scope. Retry; every input is idempotent. If it persists, too many producers write one scope directly: put a log in front of it and `attach` `logSource`. |
224
+ | `attach` rejects with `attend/mcp: the Client closed` | The MCP Client's transport closed. Reconnect the Client, or make a new one, and attach again. |
225
+ | `attach` throws `already attached to scope` | The process attached the same `Source.key` to the same scope twice. Attach each source once per scope per process. |
226
+ | `onError` reports `unrouted` | The server sends notifications under subscription ids attend did not open, or the app replaced the `notifications/events/*` handlers attend installed on the Client. |
227
+ | `onError` reports `idle` or `overflow` | The stream went quiet for `idleTimeoutMs`, or more than `maxBuffered` notifications waited on a slow store. attend reopened from the committed cursor; nothing is lost when the server can replay from a cursor. |
228
+ | `run()` rejects with `attend: already running` | The process called `run()` twice on one instance. Create one `Attend` per process and share it. |
229
+ | A test hangs or settles at the wrong time | `run()` started after the push, or `mcpEventsSource` or `logSource` runs on the real clock. Pass the fake clock as their `clock` option. |
230
+ | Redis Cluster replies `CROSSSLOT` | The prefix has no hash tag. Use one such as `attend:{app}:`. |
231
+ | Postgres reports that `attend_records` does not exist | `migrate()` has not run against this database and schema. |