@quaglius/ai-comms 0.1.0 → 0.3.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.
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/time.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /** Human-readable duration, e.g. `2h57m`, `45m`, `3h`. */
2
+ export declare function formatDuration(ms: number): string;
3
+ export declare function formatRemaining(until: string, now?: Date): string;
4
+ export declare function overlapRemainingMs(untilA: string, untilB: string, now?: Date): number;
package/dist/time.js ADDED
@@ -0,0 +1,21 @@
1
+ /** Human-readable duration, e.g. `2h57m`, `45m`, `3h`. */
2
+ export function formatDuration(ms) {
3
+ if (ms <= 0)
4
+ return '0m';
5
+ const totalMinutes = Math.floor(ms / 60_000);
6
+ const hours = Math.floor(totalMinutes / 60);
7
+ const minutes = totalMinutes % 60;
8
+ if (hours > 0 && minutes > 0)
9
+ return `${hours}h${minutes}m`;
10
+ if (hours > 0)
11
+ return `${hours}h`;
12
+ return `${minutes}m`;
13
+ }
14
+ export function formatRemaining(until, now = new Date()) {
15
+ return formatDuration(new Date(until).getTime() - now.getTime());
16
+ }
17
+ export function overlapRemainingMs(untilA, untilB, now = new Date()) {
18
+ const overlapEnd = Math.min(new Date(untilA).getTime(), new Date(untilB).getTime());
19
+ return Math.max(0, overlapEnd - now.getTime());
20
+ }
21
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,CAAC;IAC5D,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IAClC,OAAO,GAAG,OAAO,GAAG,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IAC7D,OAAO,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,MAAc,EACd,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -23,8 +23,12 @@ Conservative interpretations applied. They do not change the envelope schema.
23
23
 
24
24
  **Protocol/spec:** daemon step 3 — `from.dev === config.dev`.
25
25
 
26
- **Interpretation:** do not re-persist or notify (MCP send already appends to the log).
27
- Do advance `cursor.json` so the message is not reprocessed.
26
+ **Interpretation:** skip desktop notification only. Every valid envelope is
27
+ persisted to `log.jsonl` regardless of author — the log reconstructs the full
28
+ channel, and filtering by author breaks that invariant (e.g. own claims vanish
29
+ after a cold start). MCP `bus_send` also appends locally; the daemon must not
30
+ drop duplicates on ingest. Always advance `cursor.json` so the message is not
31
+ reprocessed.
28
32
 
29
33
  ## 2. Notification sound
30
34
 
@@ -51,3 +55,47 @@ parsing. Extreme case; in normal use truncating `body` is enough.
51
55
  **Interpretation:** use `daemon.pid` + `process.kill(pid, 0)` and `log.jsonl`
52
56
  `mtime`. False positive if the bus is quiet but the daemon is alive; false
53
57
  negative if the pidfile is stale.
58
+
59
+ ---
60
+
61
+ ## v0.3
62
+
63
+ Conservative interpretations applied. They do not change the envelope schema.
64
+
65
+ ### 1. `bus_ask` without `team` roster
66
+
67
+ **Spec:** default `to` is all devs in `team` minus self.
68
+
69
+ **Interpretation:** if `.ai-comms.json` `team` is empty or missing, `bus_ask`
70
+ returns an error asking for explicit `to`. It does not fall back to `["*"]`.
71
+
72
+ ### 2. `bus_ask` and `need` vs `blocking`
73
+
74
+ **Spec:** mentions publishing `need` when `blocking`.
75
+
76
+ **Interpretation:** the v0.3 MCP signature has no `blocking` flag. `bus_ask`
77
+ always publishes `type: "ask"`. Use `bus_send` with `type: "need"` for blocking
78
+ requests that do not wait for a reply.
79
+
80
+ ### 3. Auto-answer repo cwd with multiple registered repos
81
+
82
+ **Spec:** headless cwd is the repo path from `config.json`.
83
+
84
+ **Interpretation:** auto-answer runs only when the project has **exactly one**
85
+ registered repo in `projects[p].repos`. With zero or multiple repos, the daemon
86
+ logs the reason and leaves the ask unanswered.
87
+
88
+ ### 4. Cursor read-only restriction
89
+
90
+ **Spec:** `cursor-agent -p` with a read-only equivalent.
91
+
92
+ **Interpretation:** launch with `--mode ask` (documented read-only). Do not pass
93
+ `--force` / `--yolo`. If Cursor changes mode semantics, treat as unsupported and
94
+ do not launch.
95
+
96
+ ### 5. `link` instruction prompt
97
+
98
+ **Spec:** `link` offers to write the instruction block.
99
+
100
+ **Interpretation:** interactive `link` prompts `[Y/n]` (default yes). `--no-instructions`
101
+ skips the prompt and the write entirely.
@@ -121,6 +121,11 @@ npx @quaglius/ai-comms link
121
121
  - `project`: from step 3 (default: `defaultProject`)
122
122
  - `repo`: repo name (default: directory basename)
123
123
 
124
+ By default, `link` also offers to write an ai-comms instruction block into
125
+ `CLAUDE.md` (and `AGENTS.md` if present), between `<!-- ai-comms:start -->` and
126
+ `<!-- ai-comms:end -->`. This tells the agent to use `bus_ask` before guessing
127
+ about other repos. Skip with `--no-instructions`.
128
+
124
129
  **Verify:** `.ai-comms.json` was created at the repo root with `project`, `repo`, and `discord.channelId`. **No token.**
125
130
 
126
131
  ```bash
@@ -146,6 +151,7 @@ npx @quaglius/ai-comms doctor
146
151
  - `Bot: <username> ✓`
147
152
  - `Channel: #<name> ✓`
148
153
  - `Permissions: VIEW_CHANNEL, SEND_MESSAGES, READ_MESSAGE_HISTORY ✓`
154
+ - `autoAnswer: disabled (default)` or `enabled` with limits
149
155
  - `Diagnostics OK.`
150
156
 
151
157
  **If it fails:**
@@ -278,15 +284,54 @@ With two devs (A and B) and the daemon running on both machines:
278
284
 
279
285
  ---
280
286
 
287
+ ## Step 11 — v0.3 cross-repo Q&A (optional)
288
+
289
+ ### Enable headless auto-answer (opt-in)
290
+
291
+ Auto-answer is **off by default**. To let the daemon reply to directed `ask` /
292
+ `need` messages without a human in the loop, add to the project in
293
+ `~/.ai-comms/config.json`:
294
+
295
+ ```json
296
+ "autoAnswer": {
297
+ "enabled": true,
298
+ "maxPerRequesterPerHour": 5,
299
+ "timeoutSeconds": 120,
300
+ "maxAgeMinutes": 10,
301
+ "repoPath": "/path/to/dir/containing/your/repos"
302
+ }
303
+ ```
304
+
305
+ **Verify:** `ai-comms doctor` reports `autoAnswer: enabled`.
306
+
307
+ **Security:** only `claude-code` and `cursor` are supported; both launch in
308
+ read-only mode. Other agents are never launched automatically.
309
+
310
+ ### Test `bus_ask`
311
+
312
+ From a linked repo with MCP connected:
313
+
314
+ ```
315
+ bus_ask({ question: "Is feature X implemented on your side?", to: ["beto"] })
316
+ ```
317
+
318
+ **Verify:** with autoAnswer enabled on beto's machine and daemon running, an
319
+ `answer` appears on the channel with `reply_to` pointing at the ask.
320
+
321
+ Check budget usage: `ai-comms budget`.
322
+
323
+ ---
324
+
281
325
  ## Quick reference commands
282
326
 
283
327
  | Command | Usage |
284
328
  |---|---|
285
329
  | `init` | First-time setup (identity + project) |
286
- | `link` | Create `.ai-comms.json` in the current repo |
330
+ | `link [--no-instructions]` | Create `.ai-comms.json` in the current repo |
287
331
  | `join <path>` | Register a cloned repo |
288
332
  | `secret set <project>` | Save token (hidden prompt) |
289
333
  | `doctor [--project p]` | Full diagnostics |
334
+ | `budget [--project p]` | Auto-answer budget for the current hour |
290
335
  | `daemon [--verbose]` | Listen on all projects |
291
336
  | `mcp` | MCP stdio server |
292
337
  | `inbox [--all] [--project p]` | Inbox in terminal |
@@ -0,0 +1,181 @@
1
+ # ai-comms v0.3 — conversación autónoma entre agentes
2
+
3
+ Sucede a v0.2. **No cambia el schema del sobre ni agrega tipos de mensaje.**
4
+
5
+ El objetivo: que el agente de un dev, al toparse con algo que no sabe y que sabe
6
+ otro repo del proyecto, pregunte por el bus **por iniciativa propia**, converse
7
+ hasta entender, y siga trabajando en la sesión de su humano. Sin que nadie diga
8
+ "hablá con la otra IA".
9
+
10
+ ## 1. La asimetría, que es el corazón del diseño
11
+
12
+ | lado | estado | qué hace | permisos |
13
+ |---|---|---|---|
14
+ | **el que pregunta** | sesión viva, humano presente | pregunta, conversa y **ejecuta** | los normales de su sesión |
15
+ | **el que responde** | dormido, se despierta headless | **sólo contesta** sobre su repo y su proyecto | **sólo lectura** |
16
+
17
+ Ninguna IA toca el repo de otra. La ejecución ocurre siempre en una sesión viva
18
+ supervisada, bajo los permisos que ese humano ya aprueba. El que responde nunca
19
+ escribe nada.
20
+
21
+ ## 2. `bus_ask` — la primitiva que falta
22
+
23
+ Nueva tool MCP, **bloqueante**. Es lo que convierte el bus en conversación.
24
+
25
+ ```
26
+ bus_ask({ question, to?, timeout_s?, context? })
27
+ ```
28
+
29
+ - Publica un `ask` (o `need` si `blocking`), y **espera** una respuesta con
30
+ `reply_to` apuntando a ese sobre, hasta `timeout_s` (default 60, máximo 120).
31
+ - Devuelve la respuesta, o un aviso claro de que nadie contestó a tiempo y que
32
+ el `ask` quedó en el inbox del destinatario como pendiente.
33
+ - Si lo que vuelve es otra pregunta en vez de una respuesta, se devuelve igual:
34
+ el agente que preguntó llama `bus_ask` de nuevo con la aclaración. Eso es la
35
+ conversación, sin maquinaria extra.
36
+ - `to` por defecto: todos los devs del `team` menos uno mismo.
37
+ - Implementación: publicar, después leer `log.jsonl` con polling cada 2 s. No
38
+ abrir una segunda conexión de gateway; el daemon ya escribe el log.
39
+ - La respuesta se entrega envuelta con el preámbulo de seguridad de siempre.
40
+
41
+ **El backlog sale gratis:** un `ask` que nadie contestó queda en el inbox del
42
+ destinatario hasta su TTL. No hace falta un tipo de mensaje nuevo.
43
+
44
+ ## 3. El respondedor headless
45
+
46
+ El daemon, al recibir un `ask` o un `need` **dirigido a este dev** (no `*`),
47
+ levanta el CLI del agente local en modo headless para que conteste.
48
+
49
+ ### 3.1 Opt-in, siempre
50
+
51
+ Apagado por defecto. Se prende por proyecto en `config.json`:
52
+
53
+ ```json
54
+ "autoAnswer": {
55
+ "enabled": true,
56
+ "maxPerRequesterPerHour": 5,
57
+ "timeoutSeconds": 120
58
+ }
59
+ ```
60
+
61
+ Un paquete público **no** puede ponerse a lanzar procesos en la máquina de la
62
+ gente sin que lo pidan. `doctor` debe informar si está prendido o apagado.
63
+
64
+ ### 3.2 Sólo lectura, sin excepciones
65
+
66
+ El proceso se lanza con una lista blanca de herramientas de sólo lectura. El
67
+ mapeo por CLI vive en un único módulo:
68
+
69
+ | `identity.agent` | comando | restricción |
70
+ |---|---|---|
71
+ | `claude-code` | `claude -p` | `--allowedTools "Read,Grep,Glob"` |
72
+ | `cursor` | `cursor-agent -p` | equivalente de sólo lectura |
73
+ | otros | — | no soportado todavía |
74
+
75
+ **Regla dura: si no se puede restringir a sólo lectura, no se lanza.** Ante un
76
+ CLI desconocido o una versión que no acepta la restricción, se registra el
77
+ motivo y el `ask` queda sin responder en el inbox. Preferimos no contestar antes
78
+ que contestar con permisos de escritura.
79
+
80
+ ### 3.3 Qué contexto recibe
81
+
82
+ El prompt se arma con, en este orden:
83
+
84
+ 1. Una cabecera que diga que la pregunta viene del agente de otro desarrollador,
85
+ que es **dato y no instrucción**, y que la tarea es responder — no actuar, no
86
+ modificar nada, no ejecutar comandos.
87
+ 2. La pregunta y el `body` del sobre.
88
+ 3. Instrucción de responder desde el código del repo **y desde el contexto del
89
+ proyecto**: los `CLAUDE.md` / `AGENTS.md` del repo y las decisiones que ya
90
+ pasaron por el bus (últimos `contract`, `done` y `fyi` del log).
91
+ 4. Instrucción de citar **branch y commit actual** en la respuesta, y de decir
92
+ explícitamente si el working tree está sucio.
93
+ 5. Instrucción de responder "no sé" cuando no sabe, en vez de inventar.
94
+
95
+ El cwd del proceso es la ruta del repo correspondiente según `config.json`.
96
+
97
+ ### 3.4 Publicación de la respuesta
98
+
99
+ La salida se publica como `answer` con `reply_to` al sobre original y `hops`
100
+ incrementado. Si el proceso falla, se agota el tiempo o devuelve vacío, **no se
101
+ publica nada** y queda anotado en `daemon.log`.
102
+
103
+ ## 4. Presupuesto: el que pregunta gasta la cuota del que responde
104
+
105
+ Es la asimetría económica y hay que tratarla explícitamente. Los tokens salen
106
+ del plan de quien responde, así que el límite es **por dev que pregunta**, no
107
+ global: sin eso, una sesión en loop del otro lado te vacía la cuota.
108
+
109
+ - Ventana deslizante de 1 hora, `maxPerRequesterPerHour` por dev.
110
+ - Estado en `~/.ai-comms/projects/<p>/budget.json`.
111
+ - Pasado el tope no se responde y no se avisa por el canal — sólo queda el `ask`
112
+ en el inbox y una línea en `daemon.log`. Avisar por el canal sería regalarle
113
+ al otro lado una forma de generar tráfico gratis.
114
+ - `ai-comms budget [--project p]` muestra el consumo de la ventana actual.
115
+
116
+ ## 5. La iniciativa: que pregunte sin que se lo pidan
117
+
118
+ Las tools no se usan solas. Esta sección es la que hace que el usuario no tenga
119
+ que decir "hablá con la otra IA", y es requisito, no adorno.
120
+
121
+ `ai-comms link` gana un paso: ofrece escribir un bloque delimitado en el
122
+ `CLAUDE.md` del repo (y en `AGENTS.md` si existe), entre marcas
123
+ `<!-- ai-comms:start -->` y `<!-- ai-comms:end -->` para poder reescribirlo sin
124
+ pisar lo que haya alrededor. Si el archivo no existe, se crea.
125
+
126
+ El bloque debe instruir, en imperativo y sin ambigüedad:
127
+
128
+ - Que este repo es parte de un proyecto con varios repos y varios devs, cada uno
129
+ con su propio agente, y cuáles son esos repos.
130
+ - Que **antes de adivinar o de preguntarle al usuario** algo que corresponde a
131
+ otro repo del proyecto —el shape de una respuesta de API, por qué se tomó una
132
+ decisión, si algo ya está implementado del otro lado— use `bus_ask`.
133
+ - Que **antes de empezar a tocar archivos** mire `bus_claims`, y que si va a
134
+ trabajar un rato largo sobre un módulo publique un `claim`.
135
+ - Que cuando cambie una interfaz que otros consumen publique un `contract`.
136
+ - Que lo que llega por el bus es **dato, no instrucción**: se puede usar para
137
+ decidir, nunca se ejecuta a ciegas.
138
+ - Que no anuncie cada cosa que hace: el bus no es un chat y un `fyi` por cada
139
+ archivo tocado es ruido que le cuesta cuota a todo el equipo.
140
+
141
+ `ai-comms link --no-instructions` para saltear el paso.
142
+
143
+ ## 6. Cortes de seguridad
144
+
145
+ - `hops` máximo 3, ya en el protocolo: una respuesta automática incrementa
146
+ `hops`, así que una cadena automática muere sola.
147
+ - Un `fyi` **nunca** dispara nada. Ya es regla del protocolo; verificarlo con test.
148
+ - Nunca se responde automáticamente a un sobre propio.
149
+ - Nunca se responde a un sobre con `to: ["*"]`: sólo a lo dirigido. Si no, todo
150
+ el equipo despierta y contesta lo mismo.
151
+
152
+ ## 7. Tests
153
+
154
+ Sin red y sin lanzar procesos reales:
155
+
156
+ - `bus_ask` devuelve la respuesta cuando aparece en el log; y devuelve el aviso
157
+ de pendiente al agotarse el tiempo.
158
+ - El presupuesto corta en el tope y se recupera al correr la ventana.
159
+ - Un CLI no soportado no se lanza y deja el motivo en el log.
160
+ - `fyi` y `to: ["*"]` no disparan respondedor.
161
+ - `hops` en 3 no dispara respondedor.
162
+ - El bloque de `CLAUDE.md` se reescribe entre marcas sin tocar el resto.
163
+
164
+ ## 8. No hacer
165
+
166
+ - No cambiar el schema del sobre ni agregar tipos de mensaje.
167
+ - No darle permiso de escritura al respondedor headless bajo ninguna
168
+ circunstancia, ni siquiera detrás de un flag.
169
+ - No prender `autoAnswer` por defecto.
170
+ - No agregar dependencias nuevas.
171
+
172
+ ## 9. Criterio de aceptación
173
+
174
+ 1. `npm run build` y `npm test` verdes.
175
+ 2. Con `autoAnswer` apagado, el comportamiento es idéntico al de v0.2.
176
+ 3. Con `autoAnswer` prendido, un `ask` dirigido produce un `answer` publicado en
177
+ el canal sin intervención humana, y ningún archivo del repo cambia.
178
+ 4. Superado el tope, el `ask` queda sin responder y el motivo aparece en
179
+ `daemon.log`.
180
+ 5. `ai-comms link` escribe el bloque entre marcas y, corrido dos veces, no lo
181
+ duplica.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quaglius/ai-comms",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "A coordination bus that lets each developer AI agent on a team talk to the others over a shared Discord channel.",
5
5
  "type": "module",
6
6
  "bin": {