@raidiant/notifai 11.4.0-beta.2 → 11.4.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 (96) hide show
  1. package/CHANGELOG.md +9 -2
  2. package/dist/claude-wake.d.ts +11 -3
  3. package/dist/claude-wake.js +74 -67
  4. package/dist/claude-wake.js.map +1 -1
  5. package/dist/client.d.ts +23 -2
  6. package/dist/client.js +11 -5
  7. package/dist/client.js.map +1 -1
  8. package/dist/codex-wake.d.ts +12 -2
  9. package/dist/codex-wake.js +50 -13
  10. package/dist/codex-wake.js.map +1 -1
  11. package/dist/commands-acknowledge.d.ts +4 -2
  12. package/dist/commands-acknowledge.js +35 -4
  13. package/dist/commands-acknowledge.js.map +1 -1
  14. package/dist/commands-ask.js +2 -2
  15. package/dist/commands-ask.js.map +1 -1
  16. package/dist/commands-close.js +16 -4
  17. package/dist/commands-close.js.map +1 -1
  18. package/dist/commands-core.d.ts +6 -0
  19. package/dist/commands-core.js.map +1 -1
  20. package/dist/commands-doctor.js +46 -1
  21. package/dist/commands-doctor.js.map +1 -1
  22. package/dist/commands-hook-attend.d.ts +61 -0
  23. package/dist/commands-hook-attend.js +475 -0
  24. package/dist/commands-hook-attend.js.map +1 -0
  25. package/dist/commands-hook-diagnostics.js +2 -2
  26. package/dist/commands-hook-diagnostics.js.map +1 -1
  27. package/dist/commands-hook-install.js +1 -1
  28. package/dist/commands-hook-install.js.map +1 -1
  29. package/dist/commands-hook-run.js +59 -2
  30. package/dist/commands-hook-run.js.map +1 -1
  31. package/dist/commands-send.js +6 -1
  32. package/dist/commands-send.js.map +1 -1
  33. package/dist/guidance-content.js +9 -35
  34. package/dist/guidance-content.js.map +1 -1
  35. package/dist/hook-acknowledgements.d.ts +25 -5
  36. package/dist/hook-acknowledgements.js +102 -45
  37. package/dist/hook-acknowledgements.js.map +1 -1
  38. package/dist/hook-events.d.ts +26 -1
  39. package/dist/hook-events.js +38 -2
  40. package/dist/hook-events.js.map +1 -1
  41. package/dist/hook-lifecycle.d.ts +6 -0
  42. package/dist/hook-lifecycle.js +297 -26
  43. package/dist/hook-lifecycle.js.map +1 -1
  44. package/dist/hook-question-lock.d.ts +18 -0
  45. package/dist/hook-question-lock.js +80 -57
  46. package/dist/hook-question-lock.js.map +1 -1
  47. package/dist/hook-question-retirement.d.ts +10 -2
  48. package/dist/hook-question-retirement.js +21 -4
  49. package/dist/hook-question-retirement.js.map +1 -1
  50. package/dist/hook-session-state.d.ts +90 -1
  51. package/dist/hook-session-state.js +201 -9
  52. package/dist/hook-session-state.js.map +1 -1
  53. package/dist/hook-types.d.ts +50 -2
  54. package/dist/injection-render.d.ts +36 -0
  55. package/dist/injection-render.js +61 -0
  56. package/dist/injection-render.js.map +1 -0
  57. package/dist/install-hooks.d.ts +14 -0
  58. package/dist/install-hooks.js +47 -2
  59. package/dist/install-hooks.js.map +1 -1
  60. package/dist/logging.d.ts +1 -1
  61. package/dist/logging.js +12 -0
  62. package/dist/logging.js.map +1 -1
  63. package/dist/process-identity.d.ts +26 -0
  64. package/dist/process-identity.js +82 -0
  65. package/dist/process-identity.js.map +1 -0
  66. package/dist/program.js +6 -6
  67. package/dist/program.js.map +1 -1
  68. package/dist/session-attendant-probe.d.ts +74 -0
  69. package/dist/session-attendant-probe.js +131 -0
  70. package/dist/session-attendant-probe.js.map +1 -0
  71. package/dist/session-attendant-state.d.ts +53 -0
  72. package/dist/session-attendant-state.js +175 -0
  73. package/dist/session-attendant-state.js.map +1 -0
  74. package/dist/session-attendant.d.ts +135 -0
  75. package/dist/session-attendant.js +493 -0
  76. package/dist/session-attendant.js.map +1 -0
  77. package/dist/session-delivery.d.ts +214 -0
  78. package/dist/session-delivery.js +560 -0
  79. package/dist/session-delivery.js.map +1 -0
  80. package/dist/session-handoff.d.ts +98 -0
  81. package/dist/session-handoff.js +118 -0
  82. package/dist/session-handoff.js.map +1 -0
  83. package/dist/session-message-handoff.d.ts +35 -0
  84. package/dist/session-message-handoff.js +99 -0
  85. package/dist/session-message-handoff.js.map +1 -0
  86. package/dist/skill-source/manifest.json +20 -4
  87. package/dist/skill-source/notifai/SKILL.md +19 -57
  88. package/dist/skill-source/notifai/references/diagnostics.md +31 -0
  89. package/dist/skill-source/notifai/references/harness-setup.md +3 -0
  90. package/dist/skill-source/notifai/references/notes-and-edits.md +38 -0
  91. package/dist/skill-source/notifai/references/send-details.md +14 -0
  92. package/dist/skill-source/notifai/references/writing-examples.md +56 -0
  93. package/dist/wake-support.d.ts +33 -1
  94. package/dist/wake-support.js +65 -8
  95. package/dist/wake-support.js.map +1 -1
  96. package/package.json +2 -2
@@ -0,0 +1,56 @@
1
+ # Writing examples
2
+
3
+ Examples for the shipped `titles`, `content`, and `acknowledgements` guidance.
4
+ The effective guidance printed by `notifai guidance` always wins over them.
5
+
6
+ ## Titles
7
+
8
+ Good:
9
+
10
+ - `Users can now create accounts` — the capability, not the process behind it
11
+ - `Password reset emails aren't sending` — the failure as the user experiences it
12
+ - `Refund rollout awaits provider recovery` — what is stuck, not machinery
13
+ - `Found why checkout was flaky` — the finding they were waiting on
14
+ - `3 orders didn't import and need review` — a count that earns its place
15
+ because acting on it is theirs to do
16
+
17
+ Bad:
18
+
19
+ - `All 42 tests passed` — machinery; say what work is done
20
+ - `Adversarial review found 3 issues` — process report; say what it means for
21
+ what ships
22
+ - `Migration 0007 failed` — internal identifier; say what the user lost
23
+ - `Task complete` / `Build failed` / `Need input` — no substance, and the
24
+ kind restated
25
+ - `Exit code 1` — mechanics, not meaning
26
+
27
+ ## Content
28
+
29
+ Work finished:
30
+
31
+ > Account creation works end to end now: sign-up, email verification, and
32
+ > login are live on staging.
33
+ >
34
+ > Next I'll start on password reset unless you want something else first.
35
+
36
+ Work failed:
37
+
38
+ > The new pricing page isn't live. The deploy failed and I rolled it back, so
39
+ > the site still shows the old page — nothing is broken for users.
40
+ >
41
+ > The blocker is on my side and I'm fixing it; I'll retry and confirm when the
42
+ > page is up. Nothing needed from you.
43
+
44
+ Blocked:
45
+
46
+ > The refund flow is built, but the production rollout is waiting for the
47
+ > payment provider to recover. I am monitoring it and will resume automatically.
48
+ >
49
+ > There is nothing for you to answer; I will confirm when it is live.
50
+
51
+ ## Acknowledgements
52
+
53
+ - A note: `Switching the migration to staging; I'll rerun it there.`
54
+ - An edit after irreversible work: `The email already went out with Monday;
55
+ sending a correction for Friday now.` — say what already happened; never
56
+ imply it was undone.
@@ -1,8 +1,40 @@
1
1
  import type { DeliveryOutcome } from './hook-types.js';
2
2
  export declare function holdForNextTurn(reason: string): DeliveryOutcome;
3
+ /** `log.reason` of a claimed write stopped at its boundary before any byte left. */
4
+ export declare const WRITE_ABORTED_REASON = "write-aborted";
5
+ export declare function abortedDelivery(): DeliveryOutcome;
6
+ /**
7
+ * The last check before a claimed write's first byte: a connected socket asks
8
+ * `writable()`, and a connection still pending after `remainingMs()` is
9
+ * abandoned. Either way nothing is written.
10
+ */
11
+ export interface WriteGuard {
12
+ writable(): boolean;
13
+ remainingMs(): number;
14
+ }
15
+ /** Thrown when a guarded write was stopped before any byte left. */
16
+ export declare class WriteAbortedError extends Error {
17
+ }
3
18
  export declare function cancelledDelivery(): DeliveryOutcome;
4
- /** Run one harness child and preserve its diagnostic stderr on failure. */
19
+ /**
20
+ * Run one harness child and preserve its diagnostic stderr on failure.
21
+ *
22
+ * With `onSpawn` the child is started in its own process group (its pid is
23
+ * the group id) and reported at once, so a writer can journal the whole group
24
+ * that might still write if the writer itself dies. It is still awaited.
25
+ */
26
+ /** A subprocess writer was stopped at its deadline; it may already have written. */
27
+ export declare class WriteDeadlineError extends Error {
28
+ }
29
+ /**
30
+ * Run one harness command to completion. With `onSpawn` it runs in its own
31
+ * process group (reported as soon as it exists). With `signal`, an abort
32
+ * SIGKILLs that whole group — or the child, without one — and rejects with
33
+ * `WriteDeadlineError` at once: nothing the command started keeps running.
34
+ */
5
35
  export declare function runWakeCommand(command: string, args: readonly string[], options?: {
6
36
  cwd?: string;
7
37
  env?: NodeJS.ProcessEnv;
38
+ onSpawn?: (pgid: number) => void;
39
+ signal?: AbortSignal;
8
40
  }): Promise<string>;
@@ -6,6 +6,18 @@ export function holdForNextTurn(reason) {
6
6
  acknowledgement: 'held',
7
7
  };
8
8
  }
9
+ /** `log.reason` of a claimed write stopped at its boundary before any byte left. */
10
+ export const WRITE_ABORTED_REASON = 'write-aborted';
11
+ export function abortedDelivery() {
12
+ return {
13
+ notes: ['the claim lapsed before the write started; nothing was handed over'],
14
+ log: { route: 'hold-for-next-turn', stage: 'queued', reason: WRITE_ABORTED_REASON },
15
+ acknowledgement: 'held',
16
+ };
17
+ }
18
+ /** Thrown when a guarded write was stopped before any byte left. */
19
+ export class WriteAbortedError extends Error {
20
+ }
9
21
  export function cancelledDelivery() {
10
22
  return {
11
23
  notes: ['the Agent Session ended before answer delivery; stopping this observer'],
@@ -13,25 +25,70 @@ export function cancelledDelivery() {
13
25
  acknowledgement: 'held',
14
26
  };
15
27
  }
16
- /** Run one harness child and preserve its diagnostic stderr on failure. */
28
+ /**
29
+ * Run one harness child and preserve its diagnostic stderr on failure.
30
+ *
31
+ * With `onSpawn` the child is started in its own process group (its pid is
32
+ * the group id) and reported at once, so a writer can journal the whole group
33
+ * that might still write if the writer itself dies. It is still awaited.
34
+ */
35
+ /** A subprocess writer was stopped at its deadline; it may already have written. */
36
+ export class WriteDeadlineError extends Error {
37
+ }
38
+ /**
39
+ * Run one harness command to completion. With `onSpawn` it runs in its own
40
+ * process group (reported as soon as it exists). With `signal`, an abort
41
+ * SIGKILLs that whole group — or the child, without one — and rejects with
42
+ * `WriteDeadlineError` at once: nothing the command started keeps running.
43
+ */
17
44
  export function runWakeCommand(command, args, options = {}) {
18
45
  return new Promise((resolve, reject) => {
46
+ const signal = options.signal;
47
+ if (signal?.aborted === true) {
48
+ reject(new WriteDeadlineError(`${command} ${args[0] ?? ''} was not started: its deadline had passed`));
49
+ return;
50
+ }
51
+ const grouped = options.onSpawn !== undefined;
19
52
  const child = spawn(command, [...args], {
20
53
  ...(options.cwd === undefined ? {} : { cwd: options.cwd }),
21
54
  ...(options.env === undefined ? {} : { env: options.env }),
55
+ ...(grouped ? { detached: true } : {}),
22
56
  stdio: ['ignore', 'pipe', 'pipe'],
23
57
  });
58
+ let settled = false;
59
+ const settle = (finish) => {
60
+ if (settled)
61
+ return;
62
+ settled = true;
63
+ signal?.removeEventListener('abort', onAbort);
64
+ finish();
65
+ };
66
+ const onAbort = () => {
67
+ try {
68
+ if (child.pid !== undefined)
69
+ process.kill(grouped ? -child.pid : child.pid, 'SIGKILL');
70
+ }
71
+ catch {
72
+ // Already gone.
73
+ }
74
+ settle(() => reject(new WriteDeadlineError(`${command} ${args[0] ?? ''} was stopped at its deadline and may have written`)));
75
+ };
76
+ signal?.addEventListener('abort', onAbort, { once: true });
77
+ if (options.onSpawn !== undefined && child.pid !== undefined)
78
+ options.onSpawn(child.pid);
24
79
  const stdout = [];
25
80
  const stderr = [];
26
81
  child.stdout?.on('data', (chunk) => stdout.push(Buffer.from(chunk)));
27
82
  child.stderr?.on('data', (chunk) => stderr.push(Buffer.from(chunk)));
28
- child.once('error', reject);
29
- child.once('exit', (code, signal) => {
30
- if (code === 0) {
31
- resolve(Buffer.concat(stdout).toString());
32
- return;
33
- }
34
- reject(new Error(`${command} ${args[0] ?? ''} exited ${code === null ? `on ${String(signal)}` : String(code)}: ${Buffer.concat(stderr).toString().trim()}`));
83
+ child.once('error', (err) => settle(() => reject(err)));
84
+ child.once('exit', (code, exitSignal) => {
85
+ settle(() => {
86
+ if (code === 0) {
87
+ resolve(Buffer.concat(stdout).toString());
88
+ return;
89
+ }
90
+ reject(new Error(`${command} ${args[0] ?? ''} exited ${code === null ? `on ${String(exitSignal)}` : String(code)}: ${Buffer.concat(stderr).toString().trim()}`));
91
+ });
35
92
  });
36
93
  });
37
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wake-support.js","sourceRoot":"","sources":["../src/wake-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG1C,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO;QACL,KAAK,EAAE,CAAC,kDAAkD,MAAM,EAAE,CAAC;QACnE,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC7D,eAAe,EAAE,MAAM;KACxB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,KAAK,EAAE,CAAC,wEAAwE,CAAC;QACjF,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE;QAC9E,eAAe,EAAE,MAAM;KACxB,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,IAAuB,EACvB,UAAqD,EAAE;IAEvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;YACtC,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAA;QACF,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACrF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACrF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAClC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACzC,OAAM;YACR,CAAC;YACD,MAAM,CACJ,IAAI,KAAK,CACP,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1I,CACF,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"wake-support.js","sourceRoot":"","sources":["../src/wake-support.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raidiant/notifai",
3
- "version": "11.4.0-beta.2",
3
+ "version": "11.4.0",
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": "8.0.3",
15
+ "@raidiant/notifai-protocol": "8.1.0",
16
16
  "commander": "^14.0.0",
17
17
  "picocolors": "^1.1.1",
18
18
  "smol-toml": "^1.4.0"