greprag 5.53.0 → 5.53.1

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 (52) hide show
  1. package/dist/commands/arm-reminder.js +1 -1
  2. package/dist/commands/arm-reminder.js.map +1 -1
  3. package/dist/commands/codex-supervisor.js +27 -8
  4. package/dist/commands/codex-supervisor.js.map +1 -1
  5. package/dist/commands/codex.js +27 -4
  6. package/dist/commands/codex.js.map +1 -1
  7. package/dist/commands/friction-reminder.d.ts +3 -4
  8. package/dist/commands/friction-reminder.js +42 -9
  9. package/dist/commands/friction-reminder.js.map +1 -1
  10. package/dist/commands/inbox-drain.js +9 -2
  11. package/dist/commands/inbox-drain.js.map +1 -1
  12. package/dist/commands/inbox-primer-reminder.d.ts +1 -1
  13. package/dist/commands/inbox-primer-reminder.js +1 -1
  14. package/dist/commands/inbox-primer-reminder.js.map +1 -1
  15. package/dist/commands/inbox-watch.d.ts +3 -0
  16. package/dist/commands/inbox-watch.js +9 -3
  17. package/dist/commands/inbox-watch.js.map +1 -1
  18. package/dist/commands/mechanic-live.d.ts +12 -0
  19. package/dist/commands/mechanic-live.js +89 -0
  20. package/dist/commands/mechanic-live.js.map +1 -0
  21. package/dist/commands/mechanic-manifest.d.ts +16 -0
  22. package/dist/commands/mechanic-manifest.js +81 -0
  23. package/dist/commands/mechanic-manifest.js.map +1 -0
  24. package/dist/commands/mechanic.d.ts +3 -0
  25. package/dist/commands/mechanic.js +61 -7
  26. package/dist/commands/mechanic.js.map +1 -1
  27. package/dist/commands/opencode-relay.js +10 -1
  28. package/dist/commands/opencode-relay.js.map +1 -1
  29. package/dist/commands/reminder-types.d.ts +6 -0
  30. package/dist/guard.d.ts +9 -2
  31. package/dist/guard.js +12 -5
  32. package/dist/guard.js.map +1 -1
  33. package/dist/harness.d.ts +6 -0
  34. package/dist/harness.js +47 -0
  35. package/dist/harness.js.map +1 -0
  36. package/dist/hook.js +81 -4
  37. package/dist/hook.js.map +1 -1
  38. package/dist/index.js +12 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/mechanic-friction.d.ts +93 -0
  41. package/dist/mechanic-friction.js +368 -0
  42. package/dist/mechanic-friction.js.map +1 -0
  43. package/dist/mechanic-role.d.ts +20 -0
  44. package/dist/mechanic-role.js +107 -0
  45. package/dist/mechanic-role.js.map +1 -0
  46. package/dist/opencode-plugin.bundle.js +47 -13
  47. package/dist/session-id.d.ts +1 -1
  48. package/dist/session-id.js +2 -2
  49. package/dist/session-id.js.map +1 -1
  50. package/package.json +1 -1
  51. package/skill/greprag/docs/inbox-watch.md +3 -0
  52. package/skill/mechanic/SKILL.md +22 -0
@@ -161,14 +161,14 @@ function buildSessionIdContext(short, alias = null) {
161
161
  * made the wrapper unsafe before. The layers: this loop relaunches a dead
162
162
  * SUPERVISOR; the supervisor respawns a dead SSE CHILD; EPIPE-terminal stops
163
163
  * everything when the consumer leaves. adr: adr/monitor-resilience.md */
164
- function armMonitorCommand(short, ownerPid, assistant = false) {
164
+ function armMonitorCommand(short, ownerPid, assistant = false, mechanic = false) {
165
165
  // --owner-pid is stamped for audit continuity only; the count-cap never reads it.
166
166
  const owner = ownerPid ? ` --owner-pid ${ownerPid}` : '';
167
167
  // --assistant elevates the watcher to the tenant's Assistant subscription
168
168
  // (session ∪ inbound-email arrivals) — added ONLY for the designated assistant
169
169
  // project (isAssistantProject), so a normal session arms a stock watcher.
170
170
  // adr: adr/assistant-role.md
171
- const role = assistant ? ' --assistant' : '';
171
+ const role = mechanic ? ' --mechanic' : (assistant ? ' --assistant' : '');
172
172
  const watch = `greprag inbox watch --session ${short} --json${owner}${role}`;
173
173
  // Break on 0 (consumer-gone / clean / signal) and 64 (FATAL: bad key) — both are
174
174
  // intentional terminals; relaunch on any other code (a crash). `sleep 1` floors
@@ -1 +1 @@
1
- {"version":3,"file":"session-id.js","sourceRoot":"","sources":["../src/session-id.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcH,8CAKC;AAWD,wCAQC;AAaD,oCAIC;AASD,8CAaC;AAWD,sDAUC;AAuBD,8CAaC;AAWD,kDAaC;AA5JD,2CAA6B;AAC7B,uCAAyB;AAEzB;;;;;;;;kDAQkD;AAClD,SAAgB,iBAAiB,CAAC,SAAoC;IACpE,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;sCAQsC;AACtC,SAAgB,cAAc;IAC5B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,sBAAsB;WAC/B,OAAO,CAAC,GAAG,CAAC,eAAe;WAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB;WAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB;WAC9B,IAAI,CACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;;yDAUyD;AACzD,SAAgB,YAAY,CAAC,SAAoC;IAC/D,OAAO,SAAS;QACd,CAAC,CAAC,yEAAyE;QAC3E,CAAC,CAAC,6CAA6C,CAAC;AACpD,CAAC;AAED;;;;;;0CAM0C;AAC1C,SAAgB,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;QACpD,IAAI,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;+EAQ+E;AAC/E,SAAgB,qBAAqB,CACnC,KAAa,EACb,QAAuB,IAAI;IAE3B,MAAM,MAAM,GAAG,KAAK,IAAI,UAAU,CAAC;IACnC,OAAO,CACL,4BAA4B,KAAK,IAAI;UACnC,iBAAiB,MAAM,gBAAgB,KAAK,GAAG;UAC/C,2BAA2B,MAAM,wEAAwE,CAC5G,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;0EAoB0E;AAC1E,SAAgB,iBAAiB,CAAC,KAAa,EAAE,QAAwB,EAAE,SAAS,GAAG,KAAK;IAC1F,kFAAkF;IAClF,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,0EAA0E;IAC1E,+EAA+E;IAC/E,0EAA0E;IAC1E,6BAA6B;IAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,iCAAiC,KAAK,UAAU,KAAK,GAAG,IAAI,EAAE,CAAC;IAC7E,iFAAiF;IACjF,gFAAgF;IAChF,sDAAsD;IACtD,OAAO,kBAAkB,KAAK,gDAAgD,CAAC;AACjF,CAAC;AAED;;;;;;;;qDAQqD;AACrD,SAAgB,mBAAmB,CACjC,KAA8B;IAE9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG;QACd,kBAAkB,EAAE;YAClB,aAAa,EAAE,cAAc;YAC7B,iBAAiB,EAAE,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC;SACvD;KACF,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"session-id.js","sourceRoot":"","sources":["../src/session-id.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcH,8CAKC;AAWD,wCAQC;AAaD,oCAIC;AASD,8CAaC;AAWD,sDAUC;AAuBD,8CAkBC;AAWD,kDAaC;AAjKD,2CAA6B;AAC7B,uCAAyB;AAEzB;;;;;;;;kDAQkD;AAClD,SAAgB,iBAAiB,CAAC,SAAoC;IACpE,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;sCAQsC;AACtC,SAAgB,cAAc;IAC5B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,sBAAsB;WAC/B,OAAO,CAAC,GAAG,CAAC,eAAe;WAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB;WAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB;WAC9B,IAAI,CACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;;yDAUyD;AACzD,SAAgB,YAAY,CAAC,SAAoC;IAC/D,OAAO,SAAS;QACd,CAAC,CAAC,yEAAyE;QAC3E,CAAC,CAAC,6CAA6C,CAAC;AACpD,CAAC;AAED;;;;;;0CAM0C;AAC1C,SAAgB,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;QACpD,IAAI,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;+EAQ+E;AAC/E,SAAgB,qBAAqB,CACnC,KAAa,EACb,QAAuB,IAAI;IAE3B,MAAM,MAAM,GAAG,KAAK,IAAI,UAAU,CAAC;IACnC,OAAO,CACL,4BAA4B,KAAK,IAAI;UACnC,iBAAiB,MAAM,gBAAgB,KAAK,GAAG;UAC/C,2BAA2B,MAAM,wEAAwE,CAC5G,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;0EAoB0E;AAC1E,SAAgB,iBAAiB,CAC/B,KAAa,EACb,QAAwB,EACxB,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,KAAK;IAEhB,kFAAkF;IAClF,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,0EAA0E;IAC1E,+EAA+E;IAC/E,0EAA0E;IAC1E,6BAA6B;IAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,iCAAiC,KAAK,UAAU,KAAK,GAAG,IAAI,EAAE,CAAC;IAC7E,iFAAiF;IACjF,gFAAgF;IAChF,sDAAsD;IACtD,OAAO,kBAAkB,KAAK,gDAAgD,CAAC;AACjF,CAAC;AAED;;;;;;;;qDAQqD;AACrD,SAAgB,mBAAmB,CACjC,KAA8B;IAE9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG;QACd,kBAAkB,EAAE;YAClB,aAAa,EAAE,cAAc;YAC7B,iBAAiB,EAAE,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC;SACvD;KACF,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACvD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greprag",
3
- "version": "5.53.0",
3
+ "version": "5.53.1",
4
4
  "description": "GrepRAG — agent memory for Claude Code, Codex, and OpenCode.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -9,12 +9,15 @@ greprag inbox watch # tenant-wide stream
9
9
  greprag inbox watch --project <name> # only messages addressed to this project
10
10
  greprag inbox watch --session <id> # only messages targeting this session (strictest)
11
11
  greprag inbox watch --receptionist # also wake on the front desk (cold opens + email)
12
+ greprag inbox watch --mechanic # also wake on live mechanic_friction events
12
13
  greprag inbox watch --since <id-or-iso> # resume from a known cursor
13
14
  greprag inbox watch --json # one JSON object per line (preferred under Monitor)
14
15
  ```
15
16
 
16
17
  `--project` and `--session` compose. `--session` is the strictest filter: only messages with matching `to_session_id` get through. The tenant catch-all (cold open / inbound email — `to_session_id IS NULL`) does NOT reach a session- or project-scoped watcher; only a `--receptionist` watcher wakes on it (Option C). adr: adr/address-grammar.md. This eliminates cross-session noise when several Claude sessions watch the same project's inbox at once.
17
18
 
19
+ `--mechanic` is a role subscription: it keeps the normal session/project lane and adds only tenant `mechanic_friction` events. It does not wake on ordinary cold opens or inbound email.
20
+
18
21
  Each message arrives within ~500ms of the sender's `greprag send` (210ms verified end-to-end). Connection auto-reconnects with exponential backoff; the watcher tracks last seen message id and uses it as `since=` on reconnect — nothing dropped, nothing duplicated.
19
22
 
20
23
  ## Liveness model (post v0.8.5)
@@ -59,6 +59,7 @@ Same gate the hourly compactor applies at write-time — Mechanic and compactor
59
59
  - **Bulk is fine for Tier-0 when the set is named aloud** (clearing verified-stale / noise fixes); never bulk a Tier-2 action.
60
60
  - **Never edit `~/.claude/docs/chip-spawn.md` without confirm.** Global rules are sticky.
61
61
  - **Cross-project carve-out.** Default to the current project (resolved via `greprag fix list`). The Phase 0 census MAY read sibling queues to show where fixes piled up; *draining* one requires the operator to name it, and every `add`/`delete` against it MUST carry `--project <that-project>`. Never touch a sibling silently.
62
+ - **Harness scope is mandatory.** Friction carries its source harness (`claude-code`, `codex`, `opencode`). Repairs to hooks/skills/watchers must target that harness with `greprag mechanic install ... --harness <name>`. In a Codex session, default to `--harness codex`; use `--harness all` only for deliberately portable mechanisms.
62
63
 
63
64
  ## Phase 0 — Fix digestion
64
65
 
@@ -200,6 +201,14 @@ Append `(phase <X> skipped)` per skipped phase.
200
201
  Repairs (D3 rows attached to fixes) are managed with `greprag mechanic`, not by editing hooks:
201
202
 
202
203
  ```
204
+ greprag mechanic set mark THIS project/session as the live Mechanic role;
205
+ fan out `mechanic_live` to open sessions;
206
+ arm with --mechanic to receive live friction
207
+ greprag mechanic role show whether this project is the live Mechanic
208
+ greprag mechanic friction "obs" explicit live friction brief; hook stress forwarding
209
+ emits the same `mechanic_friction` message type
210
+ greprag mechanic reply --to <8hex> typed follow-up from Mechanic to source session;
211
+ "msg" [--friction-id <id>] do not use generic send for mechanic workflow
203
212
  greprag mechanic status inventory: live (shadow|active) repairs grouped by status,
204
213
  each with a verdict (working|failed|harmful|unproven|dormant);
205
214
  ⚑ marks shadow rows ready to graduate (≥3 fires or ≥7 days)
@@ -210,6 +219,19 @@ greprag mechanic why <nodeId> provenance: the friction → fix → repai
210
219
  greprag mechanic off / on PANIC SWITCH — local file, no network; suspends ALL repairs
211
220
  ```
212
221
 
222
+ **Live Mechanic role.** A `--mechanic` inbox watcher receives tenant
223
+ `mechanic_friction` events in addition to its own session lane. Working sessions
224
+ always assume they are not the Mechanic unless `greprag mechanic role` says the
225
+ current session will arm with `--mechanic`. `greprag mechanic set` sends an
226
+ immediate typed `mechanic_live` notice to currently open same-project sessions;
227
+ SessionStart and the reminder hook cover sessions that launch or turn later.
228
+ Working sessions emit friction automatically when the stress detector fires, and
229
+ manually via `greprag mechanic friction "..." --tier sentence|mechanism|unsure
230
+ --signal <why> --platform <harness>`, then keep working unless blocked. The event
231
+ is internal queue/work mail: it does not wake ordinary sessions or Assistant. The
232
+ Mechanic replies with `greprag mechanic reply --to <source-session> "..."` for
233
+ coordination and pings the operator for status/Tier-2 gates.
234
+
213
235
  **Born shadow → graduate.** Every repair is born `shadow`: it matches and logs would-have-fired
214
236
  evidence but injects nothing. Graduation is evidence-first — when `status` flags a row `⚑`, review
215
237
  its fire history (`why`) and `enable` it. Nothing goes live without the operator; the gates are