@raidiant/notifai 10.1.7 → 11.0.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 (154) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +23 -13
  3. package/dist/claude-wake.d.ts +1 -2
  4. package/dist/claude-wake.js +15 -61
  5. package/dist/claude-wake.js.map +1 -1
  6. package/dist/cli-bin.js +3 -14
  7. package/dist/cli-bin.js.map +1 -1
  8. package/dist/cli-contract.d.ts +12 -0
  9. package/dist/cli-contract.js +19 -0
  10. package/dist/cli-contract.js.map +1 -0
  11. package/dist/cli-release.d.ts +0 -1
  12. package/dist/cli-release.js +5 -21
  13. package/dist/cli-release.js.map +1 -1
  14. package/dist/client.d.ts +2 -2
  15. package/dist/codex-wake.d.ts +1 -1
  16. package/dist/codex-wake.js +8 -36
  17. package/dist/codex-wake.js.map +1 -1
  18. package/dist/command-session.js +2 -1
  19. package/dist/command-session.js.map +1 -1
  20. package/dist/commands-acknowledge.d.ts +13 -0
  21. package/dist/commands-acknowledge.js +67 -0
  22. package/dist/commands-acknowledge.js.map +1 -0
  23. package/dist/commands-ask.d.ts +63 -0
  24. package/dist/commands-ask.js +407 -0
  25. package/dist/commands-ask.js.map +1 -0
  26. package/dist/commands-close.d.ts +6 -0
  27. package/dist/commands-close.js +197 -0
  28. package/dist/commands-close.js.map +1 -0
  29. package/dist/commands-config.js +2 -2
  30. package/dist/commands-config.js.map +1 -1
  31. package/dist/commands-core.js +2 -2
  32. package/dist/commands-core.js.map +1 -1
  33. package/dist/commands-doctor.js +61 -120
  34. package/dist/commands-doctor.js.map +1 -1
  35. package/dist/commands-harness-context.d.ts +0 -1
  36. package/dist/commands-harness-context.js +2 -4
  37. package/dist/commands-harness-context.js.map +1 -1
  38. package/dist/commands-hook-diagnostics.d.ts +27 -0
  39. package/dist/commands-hook-diagnostics.js +97 -0
  40. package/dist/commands-hook-diagnostics.js.map +1 -0
  41. package/dist/commands-hook-install.d.ts +26 -0
  42. package/dist/commands-hook-install.js +549 -0
  43. package/dist/commands-hook-install.js.map +1 -0
  44. package/dist/commands-hook-run.d.ts +29 -0
  45. package/dist/commands-hook-run.js +517 -0
  46. package/dist/commands-hook-run.js.map +1 -0
  47. package/dist/commands-init.d.ts +2 -7
  48. package/dist/commands-init.js +59 -92
  49. package/dist/commands-init.js.map +1 -1
  50. package/dist/commands-send.js +35 -3
  51. package/dist/commands-send.js.map +1 -1
  52. package/dist/commands-skill.js +5 -5
  53. package/dist/commands-skill.js.map +1 -1
  54. package/dist/commands-update.js +17 -31
  55. package/dist/commands-update.js.map +1 -1
  56. package/dist/commands.d.ts +11 -6
  57. package/dist/commands.js +9 -4
  58. package/dist/commands.js.map +1 -1
  59. package/dist/config.d.ts +14 -4
  60. package/dist/config.js +35 -9
  61. package/dist/config.js.map +1 -1
  62. package/dist/file-lock.d.ts +3 -0
  63. package/dist/file-lock.js +33 -17
  64. package/dist/file-lock.js.map +1 -1
  65. package/dist/guidance-content.js +30 -15
  66. package/dist/guidance-content.js.map +1 -1
  67. package/dist/hook-acknowledgements.d.ts +42 -0
  68. package/dist/hook-acknowledgements.js +316 -0
  69. package/dist/hook-acknowledgements.js.map +1 -0
  70. package/dist/hook-events.d.ts +6 -0
  71. package/dist/hook-events.js +22 -0
  72. package/dist/hook-events.js.map +1 -0
  73. package/dist/hook-gates.d.ts +7 -0
  74. package/dist/hook-gates.js +21 -0
  75. package/dist/hook-gates.js.map +1 -0
  76. package/dist/hook-lifecycle.d.ts +93 -0
  77. package/dist/{hooks.js → hook-lifecycle.js} +61 -1359
  78. package/dist/hook-lifecycle.js.map +1 -0
  79. package/dist/hook-project-sessions.d.ts +28 -0
  80. package/dist/hook-project-sessions.js +141 -0
  81. package/dist/hook-project-sessions.js.map +1 -0
  82. package/dist/hook-question-lock.d.ts +7 -0
  83. package/dist/hook-question-lock.js +173 -0
  84. package/dist/hook-question-lock.js.map +1 -0
  85. package/dist/hook-question-retirement.d.ts +57 -0
  86. package/dist/hook-question-retirement.js +261 -0
  87. package/dist/hook-question-retirement.js.map +1 -0
  88. package/dist/hook-question-state.d.ts +45 -0
  89. package/dist/hook-question-state.js +196 -0
  90. package/dist/hook-question-state.js.map +1 -0
  91. package/dist/hook-session-state.d.ts +31 -0
  92. package/dist/hook-session-state.js +249 -0
  93. package/dist/hook-session-state.js.map +1 -0
  94. package/dist/{hooks.d.ts → hook-types.d.ts} +17 -236
  95. package/dist/hook-types.js +4 -0
  96. package/dist/hook-types.js.map +1 -0
  97. package/dist/install-hooks.d.ts +72 -60
  98. package/dist/install-hooks.js +292 -211
  99. package/dist/install-hooks.js.map +1 -1
  100. package/dist/interactive.d.ts +3 -16
  101. package/dist/interactive.js +19 -95
  102. package/dist/interactive.js.map +1 -1
  103. package/dist/local-path.d.ts +7 -0
  104. package/dist/local-path.js +27 -0
  105. package/dist/local-path.js.map +1 -0
  106. package/dist/node-floor.js +3 -10
  107. package/dist/node-floor.js.map +1 -1
  108. package/dist/npm-invocation.d.ts +34 -0
  109. package/dist/npm-invocation.js +53 -0
  110. package/dist/npm-invocation.js.map +1 -0
  111. package/dist/openclaw-plugin.d.ts +12 -3
  112. package/dist/openclaw-plugin.js +42 -16
  113. package/dist/openclaw-plugin.js.map +1 -1
  114. package/dist/opencode-plugin.d.ts +2 -2
  115. package/dist/opencode-plugin.js +4 -6
  116. package/dist/opencode-plugin.js.map +1 -1
  117. package/dist/program.js +11 -13
  118. package/dist/program.js.map +1 -1
  119. package/dist/project-enablement.d.ts +6 -0
  120. package/dist/project-enablement.js +11 -27
  121. package/dist/project-enablement.js.map +1 -1
  122. package/dist/question-settlement-process.d.ts +1 -1
  123. package/dist/readiness.d.ts +0 -2
  124. package/dist/readiness.js +0 -4
  125. package/dist/readiness.js.map +1 -1
  126. package/dist/send.d.ts +8 -4
  127. package/dist/send.js +145 -26
  128. package/dist/send.js.map +1 -1
  129. package/dist/session-activation.d.ts +3 -1
  130. package/dist/session-activation.js +16 -0
  131. package/dist/session-activation.js.map +1 -1
  132. package/dist/skill-source/manifest.json +4 -4
  133. package/dist/skill-source/notifai/SKILL.md +60 -60
  134. package/dist/skill-source/notifai/references/harness-setup.md +41 -16
  135. package/dist/ui/config-view.d.ts +0 -2
  136. package/dist/ui/config-view.js +1 -5
  137. package/dist/ui/config-view.js.map +1 -1
  138. package/dist/ui/theme.d.ts +0 -3
  139. package/dist/ui/theme.js +0 -1
  140. package/dist/ui/theme.js.map +1 -1
  141. package/dist/version.d.ts +22 -0
  142. package/dist/version.js +51 -0
  143. package/dist/version.js.map +1 -0
  144. package/dist/wake-support.d.ts +8 -0
  145. package/dist/wake-support.js +38 -0
  146. package/dist/wake-support.js.map +1 -0
  147. package/package.json +2 -2
  148. package/dist/cli-update-contract.d.ts +0 -7
  149. package/dist/cli-update-contract.js +0 -10
  150. package/dist/cli-update-contract.js.map +0 -1
  151. package/dist/commands-hooks.d.ts +0 -160
  152. package/dist/commands-hooks.js +0 -1800
  153. package/dist/commands-hooks.js.map +0 -1
  154. package/dist/hooks.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../src/readiness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../src/readiness.ts"],"names":[],"mappings":"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"}
package/dist/send.d.ts CHANGED
@@ -2,9 +2,10 @@ import { type LifecycleT, type MediaItemT, type NotificationDraftT, type Platfor
2
2
  import type { CliConfig } from './config.js';
3
3
  export interface SendFlags {
4
4
  title: string;
5
- /** The one canonical Markdown body. */
6
- body: string;
7
- subtitle?: string;
5
+ /** Purpose-written plain text for native banners and notification lists. */
6
+ summary: string;
7
+ /** Optional standalone focused content. Always interpreted as Markdown. */
8
+ body?: string;
8
9
  /** What this notification is; absent means update. */
9
10
  kind?: string;
10
11
  project?: string;
@@ -79,7 +80,10 @@ export interface DraftInvocation {
79
80
  }
80
81
  /** Validate media cardinality and positional alt pairing before any upload starts. */
81
82
  export declare function validateMediaInputs(images: readonly string[] | undefined, alts: readonly string[] | undefined): string | null;
82
- /** Rewrite authorable 1-based media positions to canonical ready media ids. */
83
+ /**
84
+ * Rewrite authorable 1-based media positions to canonical ready media ids and
85
+ * refuse every other shape of media reference before anything is sent.
86
+ */
83
87
  export declare function rewriteMediaReferences(body: string, mediaIds: readonly string[]): {
84
88
  ok: true;
85
89
  body: string;
package/dist/send.js CHANGED
@@ -1,4 +1,4 @@
1
- import { COLLAPSE_KEY_MAX_BYTES, INTERRUPTION_LEVELS, MEDIA_MAX_ITEMS, NOTIFICATION_SCHEMA_VERSION, QUESTION_TEXT_MAX_LENGTH, bannerExcerpt, NOTIFICATION_KINDS, PLATFORMS, } from '@raidiant/notifai-protocol';
1
+ import { COLLAPSE_KEY_MAX_BYTES, INTERRUPTION_LEVELS, MEDIA_MAX_ITEMS, NOTIFICATION_SCHEMA_VERSION, QUESTION_TEXT_MAX_LENGTH, SUMMARY_MAX_LENGTH, NOTIFICATION_KINDS, PLATFORMS, } from '@raidiant/notifai-protocol';
2
2
  import { isCliSoundRef, unknownSoundMessage } from './sound-ref.js';
3
3
  /** A backslash-n pair that was not itself escaped as a literal backslash. */
4
4
  const ACCIDENTAL_ESCAPED_NEWLINE = /(?:^|[^\\])\\n/;
@@ -17,7 +17,6 @@ export function rejectAccidentalEscapedNewlines(body, allowLiteral) {
17
17
  return null;
18
18
  return hasAccidentalEscapedNewlines(body) ? accidentalEscapedNewlineMessage() : null;
19
19
  }
20
- const POSITIONAL_MEDIA_REFERENCE = /media:(\d+)(?![A-Za-z0-9_-])/g;
21
20
  /** Validate media cardinality and positional alt pairing before any upload starts. */
22
21
  export function validateMediaInputs(images, alts) {
23
22
  const imageCount = images?.length ?? 0;
@@ -41,27 +40,148 @@ function validateMediaManifest(media) {
41
40
  }
42
41
  return null;
43
42
  }
44
- /** Rewrite authorable 1-based media positions to canonical ready media ids. */
43
+ /**
44
+ * A body may reference an attached image only through Markdown image syntax:
45
+ * `![what it shows](media:1)` for a position in `--image` order, or
46
+ * `![…](media:med_…)` for an id that is also attached. Companions resolve
47
+ * the `media:` scheme only as an image target; a bare token or a link would
48
+ * reach the User as raw text, so both are refused here rather than rendered
49
+ * wrongly there.
50
+ */
51
+ const MEDIA_IMAGE_REFERENCE = /!\[[^\]\n]*\]\(\s*<?media:([^\s)>]*)>?(?:\s+(?:"[^"\n]*"|'[^'\n]*'|\([^\n)]*\)))?\s*\)/g;
52
+ /** A stray `media:` token outside image syntax: a position or a media id. */
53
+ const STRAY_MEDIA_REFERENCE = /media:(?:\d+(?![A-Za-z0-9_-])|med_[A-Za-z0-9_-]+)/;
54
+ /** Split Markdown into literal code (fences and spans) and the prose around it. */
55
+ function markdownProseSegments(body) {
56
+ const segments = [];
57
+ let fence = null;
58
+ let prose = '';
59
+ let code = '';
60
+ const flushProse = () => {
61
+ if (prose.length === 0)
62
+ return;
63
+ segments.push(...inlineCodeSegments(prose));
64
+ prose = '';
65
+ };
66
+ // Keep each line's own newline so the segments concatenate back to the body.
67
+ for (const line of body.split(/(?<=\n)/)) {
68
+ if (fence !== null) {
69
+ code += line;
70
+ const close = line.trim().match(/^(`{3,}|~{3,})\s*$/);
71
+ if (close?.[1]?.[0] === fence.marker && close[1].length >= fence.length) {
72
+ segments.push({ text: code, code: true });
73
+ code = '';
74
+ fence = null;
75
+ }
76
+ continue;
77
+ }
78
+ const open = line.trim().match(/^(`{3,}|~{3,})/);
79
+ if (open?.[1]) {
80
+ flushProse();
81
+ fence = { marker: open[1][0], length: open[1].length };
82
+ code = line;
83
+ continue;
84
+ }
85
+ prose += line;
86
+ }
87
+ flushProse();
88
+ if (code.length > 0)
89
+ segments.push({ text: code, code: true });
90
+ return segments;
91
+ }
92
+ /** Split prose at backtick spans so a literal `media:1` in code stays literal. */
93
+ function inlineCodeSegments(prose) {
94
+ const segments = [];
95
+ let cursor = 0;
96
+ const runs = /`+/g;
97
+ let match;
98
+ while ((match = runs.exec(prose)) !== null) {
99
+ const open = match[0];
100
+ const closeIndex = prose.indexOf(open, match.index + open.length);
101
+ if (closeIndex === -1)
102
+ continue;
103
+ const end = closeIndex + open.length;
104
+ if (match.index > cursor)
105
+ segments.push({ text: prose.slice(cursor, match.index), code: false });
106
+ segments.push({ text: prose.slice(match.index, end), code: true });
107
+ cursor = end;
108
+ runs.lastIndex = end;
109
+ }
110
+ if (cursor < prose.length)
111
+ segments.push({ text: prose.slice(cursor), code: false });
112
+ return segments;
113
+ }
114
+ /**
115
+ * Rewrite authorable 1-based media positions to canonical ready media ids and
116
+ * refuse every other shape of media reference before anything is sent.
117
+ */
45
118
  export function rewriteMediaReferences(body, mediaIds) {
46
119
  let error;
47
- const rewritten = body.replace(POSITIONAL_MEDIA_REFERENCE, (reference, digits) => {
48
- const position = Number(digits);
49
- if (!Number.isSafeInteger(position) ||
50
- position < 1 ||
51
- position > MEDIA_MAX_ITEMS ||
52
- digits !== String(position) ||
53
- mediaIds[position - 1] === undefined) {
54
- error = `Body reference "${reference}" has no matching --image occurrence.`;
55
- return reference;
120
+ const rewritten = markdownProseSegments(body)
121
+ .map((segment) => {
122
+ if (segment.code || error !== undefined)
123
+ return segment.text;
124
+ const images = [];
125
+ // Choose a marker absent from authored text. A fixed private-use
126
+ // character lets input such as `\uE0000\uE000` impersonate a placeholder
127
+ // and duplicate an image reference during restoration.
128
+ let imageMarker = '\uE000';
129
+ while (segment.text.includes(imageMarker))
130
+ imageMarker += '\uE000';
131
+ const masked = segment.text.replace(MEDIA_IMAGE_REFERENCE, (reference, target) => {
132
+ if (error !== undefined)
133
+ return reference;
134
+ let mediaId;
135
+ if (/^\d+$/.test(target)) {
136
+ const position = Number(target);
137
+ mediaId = String(position) === target ? mediaIds[position - 1] : undefined;
138
+ if (mediaId === undefined) {
139
+ error = `Body reference "media:${target}" has no matching --image occurrence.`;
140
+ return reference;
141
+ }
142
+ }
143
+ else if (/^med_[A-Za-z0-9_-]+$/.test(target)) {
144
+ if (!mediaIds.includes(target)) {
145
+ error = `Body reference "media:${target}" is not attached; pass it with --image.`;
146
+ return reference;
147
+ }
148
+ mediaId = target;
149
+ }
150
+ else {
151
+ error = `Body reference "media:${target}" is neither an --image position nor a media id.`;
152
+ return reference;
153
+ }
154
+ images.push(reference.replace(`media:${target}`, `media:${mediaId}`));
155
+ return `${imageMarker}${images.length - 1}${imageMarker}`;
156
+ });
157
+ if (error !== undefined)
158
+ return segment.text;
159
+ const stray = masked.match(STRAY_MEDIA_REFERENCE);
160
+ if (stray !== null) {
161
+ error =
162
+ `Body reference "${stray[0]}" is not a Markdown image. Write ` +
163
+ `![what it shows](${stray[0]}) — a bare or linked media reference is never rendered.`;
164
+ return segment.text;
56
165
  }
57
- return `media:${mediaIds[position - 1]}`;
58
- });
166
+ return images.reduce((restored, image, index) => restored.replaceAll(`${imageMarker}${index}${imageMarker}`, image), masked);
167
+ })
168
+ .join('');
59
169
  return error === undefined ? { ok: true, body: rewritten } : { ok: false, error };
60
170
  }
61
171
  /** Merge flags over resolved config into a Notification Request draft. */
62
172
  export function buildDraft(config, flags, invocation = {}) {
63
- if (!flags.title || !flags.body)
64
- return { ok: false, error: 'Both --title and --body are required.' };
173
+ if (!flags.title || !flags.summary || flags.summary.trim() === '') {
174
+ return { ok: false, error: 'Both --title and --summary are required.' };
175
+ }
176
+ if (Array.from(flags.summary).length > SUMMARY_MAX_LENGTH) {
177
+ return {
178
+ ok: false,
179
+ error: `--summary must be at most ${SUMMARY_MAX_LENGTH} Unicode characters.`,
180
+ };
181
+ }
182
+ if (/[\u0000-\u001F\u007F-\u009F\u2028\u2029]/u.test(flags.summary)) {
183
+ return { ok: false, error: '--summary must be one line of plain text.' };
184
+ }
65
185
  const platform = resolvePlatform(flags.platform);
66
186
  if (!platform) {
67
187
  return { ok: false, error: `Unknown platform "${flags.platform}" — use ${PLATFORMS.join(' or ')}.` };
@@ -81,8 +201,10 @@ export function buildDraft(config, flags, invocation = {}) {
81
201
  media_id,
82
202
  ...(imageAlts[index] !== undefined ? { alt: imageAlts[index] } : {}),
83
203
  }));
84
- const body = rewriteMediaReferences(flags.body, imageIds);
85
- if (!body.ok)
204
+ const body = flags.body === undefined
205
+ ? undefined
206
+ : rewriteMediaReferences(flags.body, imageIds);
207
+ if (body !== undefined && !body.ok)
86
208
  return body;
87
209
  const deviceIds = flags.all ? null : (flags.device?.length ? flags.device : config.devices.value);
88
210
  const targets = deviceIds && deviceIds.length > 0 ? { mode: 'selected', device_ids: deviceIds } : { mode: 'all' };
@@ -172,16 +294,13 @@ export function buildDraft(config, flags, invocation = {}) {
172
294
  if (flags.multi && choices === null && flags.questions === undefined) {
173
295
  return { ok: false, error: '--multi needs answers to select between; add --choice.' };
174
296
  }
175
- // A single reply question is the first readable block of the canonical body.
176
- // Context may follow after a blank line without changing what the user answers.
177
- const derivedQuestion = bannerExcerpt(body.body).split('\n', 1)[0].trim();
178
297
  if (flags.reply &&
179
298
  flags.questions === undefined &&
180
- derivedQuestion.length > QUESTION_TEXT_MAX_LENGTH) {
299
+ Array.from(flags.summary).length > QUESTION_TEXT_MAX_LENGTH) {
181
300
  return {
182
301
  ok: false,
183
302
  error: `Keep the question within ${QUESTION_TEXT_MAX_LENGTH} characters and put ` +
184
- 'the longer context after a blank line — the first paragraph is the question.',
303
+ 'the longer explanation in the optional Markdown Body.',
185
304
  };
186
305
  }
187
306
  const hasAppleOptions = Object.keys(appleOptions).length > 0;
@@ -213,8 +332,8 @@ export function buildDraft(config, flags, invocation = {}) {
213
332
  ...(invocation.source !== undefined ? { source: invocation.source } : {}),
214
333
  presentation: {
215
334
  title: flags.title,
216
- body: body.body,
217
- ...(flags.subtitle !== undefined ? { subtitle: flags.subtitle } : {}),
335
+ summary: flags.summary,
336
+ ...(body !== undefined ? { body: body.body } : {}),
218
337
  ...(media.length > 0 ? { media } : {}),
219
338
  },
220
339
  targets,
@@ -226,7 +345,7 @@ export function buildDraft(config, flags, invocation = {}) {
226
345
  questions: flags.questions ?? [
227
346
  {
228
347
  id: 'q1',
229
- text: derivedQuestion,
348
+ text: flags.summary,
230
349
  ...(choices !== null ? { choices } : {}),
231
350
  ...(flags.multi ? { multi: true } : {}),
232
351
  },
package/dist/send.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
- import type { HookHarness } from './hooks.js';
1
+ import type { HookHarness } from './hook-types.js';
2
2
  export declare const WORKER_ACTIVATION_CONTEXT = "Notifai worker context: an Agent Event is a meaningful occurrence in your work; a Notification Request is a deliberate User-visible message about one. Report Agent Events to the parent and do not send Notification Requests unless the parent explicitly delegated that ownership. If delegated, load the Notifai skill and run `notifai guidance` before composing one.";
3
3
  export declare const MISSING_LIFECYCLE_GUIDANCE_CONTEXT = "Notifai is active, but lifecycle guidance could not be loaded. Run `notifai guidance` once before deciding whether or how to send a Notification Request.";
4
4
  /** One lifecycle meaning, encoded for each harness output contract. */
5
5
  export declare function sessionActivationOutput(harness: HookHarness | undefined, hookEventName: 'SessionStart' | 'SubagentStart', cwd?: string, env?: NodeJS.ProcessEnv): string | undefined;
6
+ /** Inject a journaled device answer into the User's new turn. */
7
+ export declare function userPromptContextOutput(harness: HookHarness | undefined, context: string): string | undefined;
6
8
  /**
7
9
  * Cursor currently accepts sessionStart context without reliably delivering it
8
10
  * to the model. Its native post-Stop follow-up is the narrow fallback and is
@@ -32,6 +32,22 @@ export function sessionActivationOutput(harness, hookEventName, cwd = process.cw
32
32
  }
33
33
  return undefined;
34
34
  }
35
+ /** Inject a journaled device answer into the User's new turn. */
36
+ export function userPromptContextOutput(harness, context) {
37
+ if (harness === 'opencode' || harness === 'openclaw')
38
+ return context;
39
+ if (harness === 'cursor')
40
+ return JSON.stringify({ additional_context: context });
41
+ if (harness === 'claude-code' || harness === 'codex') {
42
+ return JSON.stringify({
43
+ hookSpecificOutput: {
44
+ hookEventName: 'UserPromptSubmit',
45
+ additionalContext: context,
46
+ },
47
+ });
48
+ }
49
+ return undefined;
50
+ }
35
51
  /**
36
52
  * Cursor currently accepts sessionStart context without reliably delivering it
37
53
  * to the model. Its native post-Stop follow-up is the narrow fallback and is
@@ -1 +1 @@
1
- {"version":3,"file":"session-activation.js","sourceRoot":"","sources":["../src/session-activation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE3F,MAAM,cAAc,GAClB,sHAAsH;IACtH,iEAAiE,CAAA;AAEnE,MAAM,CAAC,MAAM,yBAAyB,GACpC,6WAA6W,CAAA;AAE/W,MAAM,CAAC,MAAM,kCAAkC,GAC7C,2JAA2J,CAAA;AAE7J,SAAS,qBAAqB,CAAC,GAAW,EAAE,GAAsB;IAChE,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,GAAG;QACH,GAAG;QACH,QAAQ,EAAE,0BAA0B,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,cAAc,MAAM,EAAE,MAAM,CAAC;KAC1F,CAAC,CAAA;IACF,OAAO,GAAG,cAAc,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;AACrF,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,uBAAuB,CACrC,OAAgC,EAChC,aAA+C,EAC/C,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,OAAO,GAAG,aAAa,KAAK,eAAe;QAC/C,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACnC,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAA;IACpE,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,kBAAkB,EAAE;gBAClB,aAAa;gBACb,iBAAiB,EAAE,OAAO;aAC3B;SACF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,gBAAgB,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;KAClD,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"session-activation.js","sourceRoot":"","sources":["../src/session-activation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE3F,MAAM,cAAc,GAClB,sHAAsH;IACtH,iEAAiE,CAAA;AAEnE,MAAM,CAAC,MAAM,yBAAyB,GACpC,6WAA6W,CAAA;AAE/W,MAAM,CAAC,MAAM,kCAAkC,GAC7C,2JAA2J,CAAA;AAE7J,SAAS,qBAAqB,CAAC,GAAW,EAAE,GAAsB;IAChE,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,GAAG;QACH,GAAG;QACH,QAAQ,EAAE,0BAA0B,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,cAAc,MAAM,EAAE,MAAM,CAAC;KAC1F,CAAC,CAAA;IACF,OAAO,GAAG,cAAc,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;AACrF,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,uBAAuB,CACrC,OAAgC,EAChC,aAA+C,EAC/C,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,OAAO,GAAG,aAAa,KAAK,eAAe;QAC/C,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACnC,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAA;IACpE,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,kBAAkB,EAAE;gBAClB,aAAa;gBACb,iBAAiB,EAAE,OAAO;aAC3B;SACF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,uBAAuB,CACrC,OAAgC,EAChC,OAAe;IAEf,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAA;IACpE,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAA;IAChF,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,kBAAkB,EAAE;gBAClB,aAAa,EAAE,kBAAkB;gBACjC,iBAAiB,EAAE,OAAO;aAC3B;SACF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,gBAAgB,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;KAClD,CAAC,CAAA;AACJ,CAAC"}
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "package_version": "10.1.7",
3
+ "package_version": "11.0.1",
4
4
  "skill": "notifai",
5
- "digest": "sha256:58d4db719b9381d92e2d8fec9ed792a917cc0f76bb5f477dfc1fd1460819e9fa",
5
+ "digest": "sha256:32e6aa9b8bf3aa459cbc05ddd5ebae4909e32de2c37ec02cb91decd81a993611",
6
6
  "files": [
7
7
  {
8
8
  "path": "SKILL.md",
9
- "sha256": "07f2cf4f0a718a062cd1602dbad0cfb661741bbe98ab3e0443fddc9ce3f082a6"
9
+ "sha256": "8d9b88e8b8e33e3bf3ff41cee8f8409dbeae30a844077dfc720266e152ee5a38"
10
10
  },
11
11
  {
12
12
  "path": "references/harness-setup.md",
13
- "sha256": "909e23f2fe0d452ccca0a7de4e81f8aca2fe7eab4fac32c4d3b6431868abb15e"
13
+ "sha256": "68afbe018e17ea3c7ec107b64abe65f8bde774d0be02d53553642e6c4cc4419d"
14
14
  }
15
15
  ]
16
16
  }
@@ -47,7 +47,7 @@ says the guidance exceeded its bound, read it once before judging an Agent Event
47
47
  notifai guidance
48
48
  ```
49
49
 
50
- `notifai guidance` prints `when-to-notify`, `titles`, `bodies`, `questions`, and
50
+ `notifai guidance` prints `when-to-notify`, `titles`, `content`, `questions`, and
51
51
  `acknowledgements` under `from=you`, `from=this repository`, then
52
52
  `from=shipped default`. The first decides whether to notify; the others own the words.
53
53
 
@@ -95,6 +95,7 @@ and carry only Project context:
95
95
  notifai send --kind done \
96
96
  --session-label "Account creation" \
97
97
  --title "Users can now create accounts" \
98
+ --summary "Sign-up, verification, and login now work on staging." \
98
99
  --body "Sign-up, email verification, and login work end to end on staging. Next: password reset, unless you want something else first."
99
100
  ```
100
101
 
@@ -119,30 +120,36 @@ Work needs a User response to continue? Ask an answerable question — even if
119
120
  blocked. Use one-way blocked only when no User reply would resume the work.
120
121
  Reporting ready is a response.
121
122
 
122
- The words come from the guidance — `titles` and `bodies` own what a title,
123
- body, and summary line carry. The shape on the wire:
123
+ `titles` and `content` guidance own each field. The wire shape:
124
124
 
125
125
  - **Title** — stands alone; the kind and the Project travel as their own
126
126
  fields, never in it.
127
- - **Body** — one canonical Markdown body; the banner excerpt is taken from the
128
- top of it.
129
- - **`--subtitle`** — one short line between title and body, for when the body
130
- is long enough that its first line is not a fair summary of what is inside.
127
+ - **Summary** — required purpose-written one-line plain text for banners and
128
+ lists, hard limit 240 Unicode characters.
129
+ - **Body** — optional standalone Markdown for focused detail. It contains the
130
+ Summary's information plus useful detail; focused views show Body or Summary,
131
+ never both. Omit it when Summary is enough.
132
+
133
+ Use readable Markdown structure. Summary has no Markdown or media markup.
131
134
 
132
135
  ```bash
133
136
  notifai send --kind failed \
134
137
  --title "The pricing page isn't live" \
135
- --subtitle "Deploy failed; rolled back, the old page still shows" \
138
+ --summary "Rolled back cleanly; production still shows the old page." \
136
139
  --body-file ./deploy-report.md
137
140
  ```
138
141
 
139
- Use `--body-file <path|->` for a long body from a file or stdin. Keep wording
140
- channel-neutral: never assume a phone, a desktop, or a gesture like "tap here".
142
+ Use `--body-file <path|->` for long content. Keep wording channel-neutral.
141
143
 
142
144
  Other controls: `--thread-id` groups; `--collapse-key` replaces your earlier
143
- matching notification; `--ttl` bounds useful delivery. `--image` attaches up
144
- to 8 items, paired with `--image-alt`; `media:1`…`media:8` reference them.
145
+ matching notification; `--ttl` bounds useful delivery.
145
146
  Use `notifai capabilities --platform <platform>` for destination contracts.
147
+
148
+ Repeat `--image <path|url>` (up to 8), paired with `--image-alt`; all reach the
149
+ gallery. Reference any or all in Body with Markdown image syntax:
150
+ `- Bob: ![front](media:1) ![side](media:2)`. Bare `media:1`, `[…](media:1)`,
151
+ or a position with no `--image` is an error.
152
+
146
153
  `--sound`, `--level`, and `--device` belong to the User.
147
154
  `--sound` takes a shipped name or a custom name/id from `notifai sounds`.
148
155
  Use `--retry` only for the same unresolved Agent Event; the CLI reuses one
@@ -164,16 +171,14 @@ the active harness proves the exact current Agent Session.
164
171
 
165
172
  ## Ask a question
166
173
 
167
- A question must be answerable from the notification itself. Keep it under 240
168
- characters and let the reasoning follow it. Offer 2-6 closed choices when you
169
- can, one flag per choice — commas inside a label are literal. A typed answer is
170
- always possible; closed choices appear after pressing and holding the
171
- notification.
174
+ A question must be answerable from the notification itself. The positional
175
+ question is its Summary (under 240 characters) and supplies the notification
176
+ title. Put reasoning in the optional standalone Markdown Body. Offer 2-6 closed choices, one
177
+ flag per choice — commas inside a label are literal. A typed answer is always
178
+ possible; closed choices appear after pressing and holding the notification.
172
179
 
173
- **Where the question text comes from differs between the two commands.** With
174
- `ask`, it is the positional argument and `--body` is context. With
175
- `send --reply`, it is the *first line of the body* — the title is not the
176
- question — and context follows after a blank line.
180
+ For both `ask` and `send --reply`, the Summary is the exact answerable question.
181
+ Notifai never infers or truncates it from Body.
177
182
 
178
183
  ### Default: resume when they answer
179
184
 
@@ -186,7 +191,7 @@ notifai ask "Which environment should I roll out to?" \
186
191
  --choice Staging --choice Production --choice Cancel
187
192
  ```
188
193
 
189
- Add `--json` for choice ids and the ask `question_id`.
194
+ Add `--json` for choice ids and the `question_id`.
190
195
 
191
196
  `registered: true` is local only. It has not yet been submitted as a
192
197
  Notification Request and has no Provider Acceptance. Never call a question sent
@@ -207,13 +212,12 @@ turn. That commitment turns the arriving answer into work.
207
212
  **Never say where the answer must arrive:** not "tell me here" or "type it at
208
213
  this prompt". The route is the harness's concern.
209
214
 
210
- Other surfaces: `--multi` combines answers; `--body`/`--body-file` adds context;
211
- `--image`/`--image-alt` adds evidence; `--form <path|->` groups up to 10 related
212
- questions.
215
+ Other surfaces: `--multi` combines answers; `--body`/`--body-file` adds Body;
216
+ `--image`/`--image-alt` adds evidence; `--form <path|->` groups up to 10
217
+ questions and requires a set-level `summary`.
213
218
 
214
- Keep independent questions as separate `ask` calls. Retire an obsolete
215
- registration or one they answer in the conversation — even before Stop pushes
216
- it — with
219
+ Keep independent questions as separate `ask` calls. Retire a registration
220
+ that is obsolete or that they answer in the conversation with
217
221
  `notifai close <question_id>` or `notifai close --pending`.
218
222
 
219
223
  Keep every ID after a timeout or unavailable route. Inspect the original with
@@ -238,7 +242,7 @@ Question Routing unavailable and the owner can stay alive:
238
242
  ```bash
239
243
  notifai send --reply \
240
244
  --title "Schema change ready" \
241
- --body "Deploy the schema change to production now?" \
245
+ --summary "Deploy the schema change to production now?" \
242
246
  --choice "Deploy now" --choice "Wait for off-peak" \
243
247
  --reply-window 86400 --reply-timeout 86400
244
248
  ```
@@ -250,16 +254,15 @@ an unsupported-harness fallback, the foreground owner stays alive through the
250
254
  complete answer window and `--reply-timeout` equals `--reply-window`.
251
255
 
252
256
  `send --reply --json` prints the reply result and receipt. Exit code 3 means no
253
- answer arrived during the bounded foreground wait — not a Delivery failure —
254
- and it does not resume the Agent Session later. Never create a duplicate. On
255
- exit 0, act on the returned answer.
257
+ answer arrived in the bounded wait — not a Delivery failure — and it does not
258
+ resume later. Never create a duplicate. On exit 0, act on the answer.
256
259
 
257
260
  ## When the answer arrives
258
261
 
259
262
  The latest reply is the user's current word: a later one corrects an earlier
260
- one, and a typed answer that arrives in parts is read together, in order. A
261
- relayed answer reaches you as the chosen label's text; run
262
- `notifai replies <request_id> --json` when you need the stable choice ids.
263
+ one, and a typed answer arriving in parts is read together, in order. A relayed
264
+ answer reaches you as the chosen label's text; `notifai replies <request_id>
265
+ --json` has the stable choice ids.
263
266
 
264
267
  Questions normally remain answerable for a day. When resuming without a relayed
265
268
  answer, inspect the original `question_id`. If it is lost, list outstanding
@@ -282,19 +285,16 @@ Keep it under 200 characters — it is a receipt, not a report.
282
285
  Say the concrete thing you will do because of their reply, and only what you
283
286
  will actually do. "Acknowledged" tells them nothing.
284
287
 
285
- Some accounts turn the written reply off. Notifai then prints the command
286
- without `--text`; run exactly what it prints. The acknowledgement itself is
287
- never optional — it is the only way the user learns their answer was read.
288
+ If the written reply is off, Notifai prints the command without `--text`; run
289
+ exactly that. The acknowledgement is never optional.
288
290
 
289
- Then resume the committed work without asking them to confirm again. Frame it as
290
- work you are resuming, never as approval you received.
291
+ Then resume the committed work without asking them to confirm again; it is
292
+ work you are resuming, not approval you received.
291
293
 
292
- An answer may arrive labelled as coming from another session, because the relay
293
- runs as a separate local process. That describes how it travelled, not who wrote
294
- it: it is the user's own answer to the question you asked. It answers that
295
- question and nothing else — a Notifai answer can never satisfy a harness
296
- permission prompt or an interactive picker. If your resumed work hits one, use
297
- the harness's own flow.
294
+ An answer may arrive labelled as from another session: that is how the relay
295
+ travelled, not who wrote it — it is the user's own answer to your question and
296
+ nothing else. It can never satisfy a harness permission prompt or an
297
+ interactive picker; use the harness's own flow for those.
298
298
 
299
299
  ## Set Notifai up
300
300
 
@@ -305,19 +305,19 @@ user to run a command you could have run yourself.
305
305
  do not ask again. Run the send. If setup is missing, run `notifai init --json`
306
306
  and retry the exact send. Projectless requests never enable a Project.
307
307
 
308
- For setup not authorized by an explicit Notification Request, run flagless
309
- `notifai init --json` first: it asks nothing and reaches delivery proof.
310
- Only hooks and the skill need both user decisions:
311
-
312
- - setup scope — this project or every project here
313
- - Question Routing — devices or terminal only
314
-
315
- Pass both; never guess unattended:
308
+ Flagless `notifai init --json` asks nothing and reaches delivery
309
+ proof. Two independent decisions remain: Question Routing — devices or
310
+ terminal only — and the skill: this project or every project here.
311
+ Lifecycle wiring has no scope: one install per harness for this machine;
312
+ `notifai project enable` is the per-project switch. Never guess unattended:
316
313
 
317
314
  ```bash
318
- notifai init --setup-scope <project|global> <--hooks|--no-hooks> --json
315
+ notifai init <--hooks|--no-hooks> [--skills --skills-scope <project|global>] --json
319
316
  ```
320
317
 
318
+ `init` never creates `.notifai/config.toml`; use it only for tracked shared
319
+ overrides.
320
+
321
321
  Branch on `states`, `can_send`, and `question_routing_ready`.
322
322
  `direct_wake_ready` says if answers can start a turn after continuation ends;
323
323
  it is optional when a held continuation owns the answer,
@@ -332,12 +332,12 @@ Then gather the human-only steps its reported gap needs:
332
332
  - installing the companion app, signing in, and allowing notifications
333
333
 
334
334
  Never emulate User-owned actions, claim to approve hooks yourself, or claim an
335
- unlisted harness. Harness-specific trust wording lives in the setup reference.
335
+ unlisted harness. Harness trust wording lives in the setup reference.
336
336
 
337
- Exit code 4 means this machine is not signed in. When sign-in looks fine but
338
- nothing sends, `notifai auth status --json` and `notifai auth access --json`
339
- separate a pairing problem from an account without an active plan — report which
340
- one it is instead of calling it a delivery failure.
337
+ When sign-in looks fine but nothing sends, `notifai auth status --json` and
338
+ `notifai auth access --json` separate a pairing problem from an account without
339
+ an active plan — report which one it is instead of calling it a delivery
340
+ failure.
341
341
 
342
342
  On `no_active_devices`, run `notifai init --json`, close its gap, then repeat the
343
343
  exact original send with `--retry`. A verification Notification does not deliver