@raidiant/notifai 11.0.5 → 11.1.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 (57) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +5 -0
  3. package/dist/codex-wake.d.ts +44 -63
  4. package/dist/codex-wake.js +71 -174
  5. package/dist/codex-wake.js.map +1 -1
  6. package/dist/commands-ask.js +3 -1
  7. package/dist/commands-ask.js.map +1 -1
  8. package/dist/commands-close.js +28 -14
  9. package/dist/commands-close.js.map +1 -1
  10. package/dist/commands-core.d.ts +1 -1
  11. package/dist/commands-doctor.js +32 -11
  12. package/dist/commands-doctor.js.map +1 -1
  13. package/dist/commands-hook-install.js +111 -38
  14. package/dist/commands-hook-install.js.map +1 -1
  15. package/dist/commands-hook-run.js +8 -9
  16. package/dist/commands-hook-run.js.map +1 -1
  17. package/dist/commands-hook-shape.js +3 -2
  18. package/dist/commands-hook-shape.js.map +1 -1
  19. package/dist/credentials.js +7 -4
  20. package/dist/credentials.js.map +1 -1
  21. package/dist/harnesses.d.ts +1 -1
  22. package/dist/harnesses.js +2 -2
  23. package/dist/harnesses.js.map +1 -1
  24. package/dist/hook-adapter.d.ts +7 -1
  25. package/dist/hook-adapter.js +36 -3
  26. package/dist/hook-adapter.js.map +1 -1
  27. package/dist/hook-events.d.ts +69 -2
  28. package/dist/hook-events.js +75 -13
  29. package/dist/hook-events.js.map +1 -1
  30. package/dist/hook-lifecycle.js +44 -15
  31. package/dist/hook-lifecycle.js.map +1 -1
  32. package/dist/hook-question-retirement.d.ts +9 -0
  33. package/dist/hook-question-retirement.js +38 -3
  34. package/dist/hook-question-retirement.js.map +1 -1
  35. package/dist/hook-question-state.d.ts +14 -5
  36. package/dist/hook-question-state.js +55 -24
  37. package/dist/hook-question-state.js.map +1 -1
  38. package/dist/hook-types.d.ts +6 -0
  39. package/dist/install-hooks.d.ts +70 -12
  40. package/dist/install-hooks.js +352 -198
  41. package/dist/install-hooks.js.map +1 -1
  42. package/dist/openclaw-plugin.d.ts +0 -1
  43. package/dist/openclaw-plugin.js +0 -7
  44. package/dist/openclaw-plugin.js.map +1 -1
  45. package/dist/opencode-plugin.d.ts +9 -0
  46. package/dist/opencode-plugin.js +19 -2
  47. package/dist/opencode-plugin.js.map +1 -1
  48. package/dist/readiness.d.ts +9 -1
  49. package/dist/readiness.js +11 -3
  50. package/dist/readiness.js.map +1 -1
  51. package/dist/session-labels.js +6 -6
  52. package/dist/session-labels.js.map +1 -1
  53. package/dist/skill-source/manifest.json +4 -4
  54. package/dist/skill-source/notifai/SKILL.md +2 -2
  55. package/dist/skill-source/notifai/references/harness-setup.md +23 -14
  56. package/dist/ui/theme.d.ts +1 -1
  57. package/package.json +2 -2
@@ -57,10 +57,10 @@ Installed definitions call one stable user-level adapter at
57
57
  `~/.notifai/bin/hook-adapter`. `hooks install` atomically retargets that adapter
58
58
  to the current CLI while leaving definition bytes unchanged across Node/NVM,
59
59
  package-manager, CLI-version, checkout, XDG directory, and Notifai preference
60
- changes. Stop definitions differ by harness: Claude Code's runs asynchronously
61
- with an explicit timeout above the longest answer window (POSIX hosts only — on
62
- Windows it blocks like the others), and Codex declares the same full-window
63
- timeout; prompt-submit and session-end retain fixed short limits on both.
60
+ changes. Codex Stop runs asynchronously on every platform; Claude Code Stop
61
+ runs asynchronously on POSIX and blocks on Windows. Both declare a timeout
62
+ above the longest answer window so their waiters can own the complete window;
63
+ prompt-submit and session-end retain fixed short limits on both.
64
64
  Codex SessionStart stays within the harness's built-in inline-context budget;
65
65
  Notifai does not add an output-limit override that would create a second trust
66
66
  identity. Upgrades preserve both the source file and the approved definition.
@@ -72,7 +72,7 @@ later upgrades must not require another.
72
72
  first. The current Agent Session's UserPromptSubmit observation proves that the
73
73
  exact session owns this turn. A historical Stop observation is diagnostic
74
74
  telemetry, not an admission prerequisite: the installed, trusted, current,
75
- singular Stop definition and its continuation owner establish that the asking
75
+ singular Stop definition and its answer waiter establish that the asking
76
76
  turn can route the question. Ask exposes no `--session-id` override and will
77
77
  not guess one.
78
78
  When the failure includes a User-owned trust or permission `user_action`, relay
@@ -122,11 +122,12 @@ shell. Do not strip markers or borrow another Agent Session's identity to make
122
122
  UserPromptSubmit does not activate it. Codex SubagentStart uses the same
123
123
  reporting-only worker contract and explicit textual delegation rule as
124
124
  Claude. A fresh install writes the Machine layer's `~/.codex/hooks.json`, or
125
- joins inline `[hooks]` when that is the layer's existing representation.
126
- Upgrades preserve whichever source already owns Notifai's approved handlers
127
- and keep the default SessionStart output-limit identity, because moving the
128
- definition or adding identity-bearing fields creates a new Codex trust
129
- identity. One install covers every project and every worktree, so there is
125
+ joins inline `[hooks]` when the User already keeps their own hooks there.
126
+ Notifai-owned inline handlers with no foreign inline neighbours are moved to
127
+ `hooks.json`; Codex will ask for `/hooks` approval because it keys trust by
128
+ source path. Foreign inline configuration is left in place. Later upgrades
129
+ keep the default SessionStart output-limit identity so they do not mint a
130
+ second trust identity. One install covers every project and every worktree, so there is
130
131
  nothing to repeat in a new checkout; a Project-scoped `.codex` hook file from
131
132
  an older Notifai is removed once the Machine copy is proven current.
132
133
  - **Cursor:** start one fresh conversation, send one prompt, and let the first
@@ -196,9 +197,16 @@ meter differs per harness:
196
197
  the successor turn in the same Agent Session without another User prompt.
197
198
  Direct inbox wake is unavailable, but it is not needed while this exact Stop
198
199
  continuation owns the answer.
199
- - **Codex:** the Stop hook is the waiter. It holds until the answer arrives or
200
- the complete answer window ends, then continues the session by returning
201
- `decision: block`.
200
+ - **Codex:** the asynchronous Stop hook releases the turn and waits in the
201
+ background for the complete answer window. When an answer arrives, Notifai
202
+ invokes `codex queue` for the exact Agent Session in the same Codex home.
203
+ A live idle session starts a turn, a busy one consumes the answer after its
204
+ current turn, and a closed one keeps the queued answer until it is reopened.
205
+ Queue success proves storage, not consumption; UserPromptSubmit observes
206
+ consumption. Keep the original question and request identities if the route
207
+ fails so Notifai's journal can recover the answer. Never queue and resume the
208
+ same answer separately: a resume can consume the queue and the repeated
209
+ prompt, producing two copies.
202
210
  - **Crash recovery:** the answer journal protects an accepted answer if an
203
211
  owner process or its route fails. It is not the normal last meter for an
204
212
  unexpired question.
@@ -271,7 +279,8 @@ Those are three different controls and only the last one decides whether an
271
279
  answer is still wanted. Question Routing owns that complete window. Claude Code
272
280
  waits out of band and wakes the Agent Session on POSIX; on Windows its Stop
273
281
  stays held and returns the answer as the same Agent Session's continuation,
274
- like Codex. The journal is crash recovery, not the ordinary delivery path.
282
+ while Codex queues the answer into its Agent Session's durable inbox. The
283
+ journal is crash recovery, not the ordinary delivery path.
275
284
 
276
285
  `NOTIFAI_NO_INPUT=1` guarantees no command will ever prompt, which is what you
277
286
  want in CI or any shell with nobody at it. `NOTIFAI_CREDENTIALS=file` stores the
@@ -40,7 +40,7 @@ export declare const glyph: {
40
40
  readonly bullet: "-" | "•";
41
41
  readonly arrow: "→" | "->";
42
42
  readonly chevron: "›" | ">";
43
- readonly bar: "│" | "|";
43
+ readonly bar: "|" | "│";
44
44
  };
45
45
  export type Tone = 'ok' | 'warn' | 'bad' | 'pending';
46
46
  /** A coloured glyph for a tone; the caller supplies the words. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raidiant/notifai",
3
- "version": "11.0.5",
3
+ "version": "11.1.1",
4
4
  "type": "module",
5
5
  "description": "Send native device notifications from agents and local programs",
6
6
  "bin": {
@@ -12,7 +12,7 @@
12
12
  ],
13
13
  "dependencies": {
14
14
  "@clack/prompts": "^1.7.0",
15
- "@raidiant/notifai-protocol": "6.1.5",
15
+ "@raidiant/notifai-protocol": "7.0.2",
16
16
  "commander": "^14.0.0",
17
17
  "picocolors": "^1.1.1",
18
18
  "smol-toml": "^1.4.0"