@raidiant/notifai 7.0.2 → 9.0.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 (157) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +20 -13
  3. package/dist/atomic-file.d.ts +14 -0
  4. package/dist/atomic-file.js +27 -2
  5. package/dist/atomic-file.js.map +1 -1
  6. package/dist/cli-bin.d.ts +4 -0
  7. package/dist/cli-bin.js +62 -0
  8. package/dist/cli-bin.js.map +1 -0
  9. package/dist/cli-release.d.ts +10 -0
  10. package/dist/cli-release.js +75 -0
  11. package/dist/cli-release.js.map +1 -0
  12. package/dist/client.d.ts +1 -0
  13. package/dist/client.js +13 -3
  14. package/dist/client.js.map +1 -1
  15. package/dist/commands-auth.d.ts +6 -0
  16. package/dist/commands-auth.js +28 -3
  17. package/dist/commands-auth.js.map +1 -1
  18. package/dist/commands-config.js +22 -3
  19. package/dist/commands-config.js.map +1 -1
  20. package/dist/commands-core.d.ts +12 -0
  21. package/dist/commands-core.js +27 -3
  22. package/dist/commands-core.js.map +1 -1
  23. package/dist/commands-devices.d.ts +2 -1
  24. package/dist/commands-devices.js +20 -8
  25. package/dist/commands-devices.js.map +1 -1
  26. package/dist/commands-doctor.d.ts +1 -0
  27. package/dist/commands-doctor.js +85 -27
  28. package/dist/commands-doctor.js.map +1 -1
  29. package/dist/commands-guidance.d.ts +27 -0
  30. package/dist/commands-guidance.js +163 -0
  31. package/dist/commands-guidance.js.map +1 -0
  32. package/dist/commands-hooks.d.ts +16 -5
  33. package/dist/commands-hooks.js +433 -38
  34. package/dist/commands-hooks.js.map +1 -1
  35. package/dist/commands-init.d.ts +10 -18
  36. package/dist/commands-init.js +139 -54
  37. package/dist/commands-init.js.map +1 -1
  38. package/dist/commands-send-support.d.ts +17 -2
  39. package/dist/commands-send-support.js +66 -8
  40. package/dist/commands-send-support.js.map +1 -1
  41. package/dist/commands-send.d.ts +0 -1
  42. package/dist/commands-send.js +105 -39
  43. package/dist/commands-send.js.map +1 -1
  44. package/dist/commands-setup-proof.d.ts +8 -0
  45. package/dist/commands-setup-proof.js +31 -2
  46. package/dist/commands-setup-proof.js.map +1 -1
  47. package/dist/commands-skill.d.ts +11 -1
  48. package/dist/commands-skill.js +61 -11
  49. package/dist/commands-skill.js.map +1 -1
  50. package/dist/commands.d.ts +2 -1
  51. package/dist/commands.js +1 -0
  52. package/dist/commands.js.map +1 -1
  53. package/dist/config-schema.d.ts +1 -1
  54. package/dist/config-schema.js +30 -14
  55. package/dist/config-schema.js.map +1 -1
  56. package/dist/config.d.ts +24 -5
  57. package/dist/config.js +37 -8
  58. package/dist/config.js.map +1 -1
  59. package/dist/credentials.d.ts +10 -1
  60. package/dist/credentials.js +25 -12
  61. package/dist/credentials.js.map +1 -1
  62. package/dist/guidance-content.d.ts +50 -0
  63. package/dist/guidance-content.js +240 -0
  64. package/dist/guidance-content.js.map +1 -0
  65. package/dist/guidance.d.ts +69 -0
  66. package/dist/guidance.js +173 -0
  67. package/dist/guidance.js.map +1 -0
  68. package/dist/hook-adapter.js +37 -3
  69. package/dist/hook-adapter.js.map +1 -1
  70. package/dist/hooks.d.ts +68 -7
  71. package/dist/hooks.js +238 -92
  72. package/dist/hooks.js.map +1 -1
  73. package/dist/install-hooks.d.ts +10 -18
  74. package/dist/install-hooks.js +110 -23
  75. package/dist/install-hooks.js.map +1 -1
  76. package/dist/interactive.d.ts +1 -1
  77. package/dist/interactive.js +14 -9
  78. package/dist/interactive.js.map +1 -1
  79. package/dist/logging.d.ts +8 -1
  80. package/dist/logging.js +43 -2
  81. package/dist/logging.js.map +1 -1
  82. package/dist/main.js +5 -487
  83. package/dist/main.js.map +1 -1
  84. package/dist/native-skills.d.ts +19 -0
  85. package/dist/native-skills.js +30 -8
  86. package/dist/native-skills.js.map +1 -1
  87. package/dist/opencode-plugin.js +14 -1
  88. package/dist/opencode-plugin.js.map +1 -1
  89. package/dist/program.d.ts +49 -0
  90. package/dist/program.js +576 -0
  91. package/dist/program.js.map +1 -0
  92. package/dist/send.d.ts +12 -10
  93. package/dist/send.js +65 -29
  94. package/dist/send.js.map +1 -1
  95. package/dist/session-activation.d.ts +15 -0
  96. package/dist/session-activation.js +35 -0
  97. package/dist/session-activation.js.map +1 -0
  98. package/dist/session-labels.d.ts +9 -3
  99. package/dist/session-labels.js +38 -7
  100. package/dist/session-labels.js.map +1 -1
  101. package/dist/url-policy.d.ts +85 -0
  102. package/dist/url-policy.js +369 -0
  103. package/dist/url-policy.js.map +1 -0
  104. package/package.json +6 -4
  105. package/src/atomic-file.ts +36 -2
  106. package/src/cli-bin.test.ts +38 -0
  107. package/src/cli-bin.ts +67 -0
  108. package/src/cli-release.test.ts +46 -0
  109. package/src/cli-release.ts +78 -0
  110. package/src/client.test.ts +95 -0
  111. package/src/client.ts +16 -3
  112. package/src/commands-auth.ts +32 -3
  113. package/src/commands-config.ts +25 -2
  114. package/src/commands-core.ts +38 -3
  115. package/src/commands-devices.ts +28 -9
  116. package/src/commands-doctor.ts +116 -25
  117. package/src/commands-guidance.ts +216 -0
  118. package/src/commands-hooks.ts +513 -42
  119. package/src/commands-init.ts +170 -60
  120. package/src/commands-send-support.test.ts +156 -0
  121. package/src/commands-send-support.ts +72 -8
  122. package/src/commands-send.ts +123 -38
  123. package/src/commands-setup-proof.ts +36 -2
  124. package/src/commands-skill.ts +78 -15
  125. package/src/commands.test.ts +1490 -197
  126. package/src/commands.ts +6 -0
  127. package/src/config-schema.ts +32 -16
  128. package/src/config.test.ts +57 -2
  129. package/src/config.ts +49 -10
  130. package/src/credentials.test.ts +71 -3
  131. package/src/credentials.ts +29 -15
  132. package/src/guidance-content.ts +256 -0
  133. package/src/guidance.test.ts +299 -0
  134. package/src/guidance.ts +233 -0
  135. package/src/hook-adapter.test.ts +113 -1
  136. package/src/hook-adapter.ts +37 -3
  137. package/src/hooks.test.ts +783 -170
  138. package/src/hooks.ts +306 -131
  139. package/src/install-hooks.test.ts +135 -16
  140. package/src/install-hooks.ts +113 -25
  141. package/src/interactive.ts +14 -9
  142. package/src/logging.test.ts +66 -3
  143. package/src/logging.ts +45 -2
  144. package/src/main.ts +6 -614
  145. package/src/native-skills.test.ts +41 -1
  146. package/src/native-skills.ts +40 -6
  147. package/src/opencode-plugin.ts +14 -1
  148. package/src/program.test.ts +237 -0
  149. package/src/program.ts +751 -0
  150. package/src/send.test.ts +28 -0
  151. package/src/send.ts +81 -34
  152. package/src/session-activation.ts +45 -0
  153. package/src/session-labels.test.ts +120 -3
  154. package/src/session-labels.ts +38 -7
  155. package/src/skill.test.ts +153 -12
  156. package/src/trust-policy.test.ts +701 -0
  157. package/src/url-policy.ts +399 -0
@@ -3,18 +3,20 @@ import { randomBytes } from 'node:crypto';
3
3
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
4
4
  import path from 'node:path';
5
5
  import { parse as parseToml, stringify as stringifyToml } from 'smol-toml';
6
+ import { ensurePrivateDirectory } from './atomic-file.js';
6
7
  import { ApiCallError, NetworkError } from './client.js';
7
- import {} from './config.js';
8
+ import { personalProjectConfigPath } from './config.js';
8
9
  import { projectSlugFrom as inferredProjectSlugFrom } from './invocation-context.js';
10
+ import { SKILLS_INSTALLER_SPEC } from './native-skills.js';
9
11
  import { firstBlocker } from './readiness.js';
10
12
  import { buildDraft, formatReceipt } from './send.js';
11
13
  import { loginCommand } from './commands-auth.js';
12
14
  import { EXIT, UPDATE_CLI_COMMAND, authedClient, loadLoggedConfig, reportError, } from './commands-core.js';
13
- import { readyIosDevices, supportPageUrl } from './commands-devices.js';
15
+ import { readyCompanionDevices, supportPageUrl } from './commands-devices.js';
14
16
  import { assessReadiness, remedyLine } from './commands-doctor.js';
15
17
  import { hooksInstallCommand, pickHarnessesToInstall } from './commands-hooks.js';
16
- import { observedCompanionReceipt, readSetupProof, writeSetupProof } from './commands-setup-proof.js';
17
- import { SKILLS_SOURCE } from './commands-skill.js';
18
+ import { observedCompanionReceipt, readSetupProof, setupProofIsStale, writeSetupProof, } from './commands-setup-proof.js';
19
+ import { listScopedNotifaiSkills, SKILLS_SOURCE } from './commands-skill.js';
18
20
  // ---------------------------------------------------------------------------
19
21
  // init
20
22
  // ---------------------------------------------------------------------------
@@ -22,7 +24,7 @@ import { SKILLS_SOURCE } from './commands-skill.js';
22
24
  export function projectSlugFrom(name) {
23
25
  return inferredProjectSlugFrom(name) ?? 'project';
24
26
  }
25
- /** Long enough for a first TestFlight install; keep-waiting extends another budget. */
27
+ /** Long enough for a first controlled Companion install; keep-waiting extends another budget. */
26
28
  const DEVICE_BRIDGE_TIMEOUT_MS = 10 * 60 * 1000;
27
29
  const DEVICE_BRIDGE_POLL_MS = 2_000;
28
30
  const PROOF_TIMEOUT_MS = 30_000;
@@ -33,12 +35,18 @@ function formatWaitBudget(milliseconds) {
33
35
  }
34
36
  async function closeGap(deps, state, flags) {
35
37
  if (state.id === 'project') {
36
- const configPath = path.join(deps.cwd, '.notifai', 'config.toml');
38
+ const slug = projectSlugFrom(flags.projectId ?? path.basename(deps.cwd));
39
+ const configPath = flags.setupScope === 'global'
40
+ ? personalProjectConfigPath(deps.cwd, deps.env)
41
+ : path.join(deps.cwd, '.notifai', 'config.toml');
37
42
  const existing = existsSync(configPath)
38
43
  ? parseToml(readFileSync(configPath, 'utf8'))
39
44
  : {};
40
- existing['project'] = projectSlugFrom(flags.projectId ?? path.basename(deps.cwd));
41
- mkdirSync(path.dirname(configPath), { recursive: true });
45
+ existing['project'] = slug;
46
+ if (flags.setupScope === 'global')
47
+ ensurePrivateDirectory(path.dirname(configPath));
48
+ else
49
+ mkdirSync(path.dirname(configPath), { recursive: true });
42
50
  writeFileSync(configPath, `${stringifyToml(existing)}\n`);
43
51
  return 'closed';
44
52
  }
@@ -47,8 +55,9 @@ async function closeGap(deps, state, flags) {
47
55
  if (harnesses === null || harnesses.length === 0)
48
56
  return 'failed';
49
57
  let ok = true;
58
+ const hookFlags = flags.setupScope === 'global' ? { global: true } : {};
50
59
  for (const harness of harnesses) {
51
- if (hooksInstallCommand(deps, { harness }) !== EXIT.ok)
60
+ if (hooksInstallCommand(deps, { harness, ...hookFlags }) !== EXIT.ok)
52
61
  ok = false;
53
62
  }
54
63
  return ok ? 'closed' : 'failed';
@@ -64,19 +73,36 @@ async function closeGap(deps, state, flags) {
64
73
  deps.io.err('Skill installation failed — this build cannot determine its own version, so there is no release tag to install from.');
65
74
  return 'failed';
66
75
  }
67
- const scopeText = flags.skillsScope === undefined ? 'the scope you choose' : `${flags.skillsScope} scope`;
68
- deps.io.out(`Starting the native npx skills setup for the notifai agent skill (${scopeText})...`);
69
- const addOptions = {
76
+ const installScope = flags.setupScope ?? flags.skillsScope;
77
+ if (installScope === undefined) {
78
+ deps.io.err('Skill installation refused — choose a setup scope: `notifai init --skills --setup-scope project` or `... global`.');
79
+ return 'failed';
80
+ }
81
+ const { installed } = await listScopedNotifaiSkills(deps);
82
+ const extras = installed.filter((skill) => skill.scope !== installScope);
83
+ for (const extra of extras) {
84
+ const code = await deps.nativeSkills.remove({
85
+ skill: 'notifai',
86
+ scope: extra.scope,
87
+ cwd: deps.cwd,
88
+ env: deps.env,
89
+ });
90
+ if (code !== 0) {
91
+ deps.io.err(`Skill installation refused — could not uninstall the ${extra.scope} copy (${extra.ref ?? 'unknown pin'}), so installing ${installScope} would leave both active.`);
92
+ return 'failed';
93
+ }
94
+ }
95
+ deps.io.out(`Starting the native npx skills setup for the notifai agent skill (${installScope} scope)...`);
96
+ const code = await deps.nativeSkills.add({
70
97
  source: SKILLS_SOURCE,
71
98
  skill: 'notifai',
72
99
  cwd: deps.cwd,
73
100
  env: deps.env,
74
- ...(flags.skillsScope === undefined ? {} : { scope: flags.skillsScope }),
75
- };
76
- const code = await deps.nativeSkills.add(addOptions);
101
+ scope: installScope,
102
+ });
77
103
  if (code !== 0) {
78
104
  deps.io.err('Skill installation failed — run it manually with:');
79
- deps.io.err(` npx skills add ${SKILLS_SOURCE} --skill notifai${flags.skillsScope === 'global' ? ' --global' : ''}${flags.skillsScope === undefined ? '' : ' --yes'}`);
105
+ deps.io.err(` npx -y ${SKILLS_INSTALLER_SPEC} add ${SKILLS_SOURCE} --skill notifai${installScope === 'global' ? ' --global' : ''} --yes`);
80
106
  }
81
107
  return code === 0 ? 'closed' : 'failed';
82
108
  }
@@ -86,7 +112,7 @@ async function closeGap(deps, state, flags) {
86
112
  }
87
113
  function deviceBridgeMessage(devices) {
88
114
  if (devices.length === 0) {
89
- return 'Waiting for the iPhone app to sign in and register…';
115
+ return 'Waiting for a Companion App to sign in and register…';
90
116
  }
91
117
  const denied = devices.find((device) => device.permission_status === 'denied');
92
118
  if (denied)
@@ -94,13 +120,14 @@ function deviceBridgeMessage(devices) {
94
120
  const undecided = devices.find((device) => device.permission_status === 'not_determined');
95
121
  if (undecided)
96
122
  return `Waiting for ${undecided.display_name} to allow the notification prompt…`;
97
- return 'Waiting for an iPhone to become ready…';
123
+ return 'Waiting for a Companion device to become ready…';
98
124
  }
99
125
  /**
100
126
  * Observe the supported Device Installation path while the user finishes the
101
- * app-side work. The live bridge is the dashboard `/support` page (TestFlight
102
- * steps). Interactive runs offer to open it so the user never types the URL;
103
- * non-interactive/agent paths only print plain text and never wait on a prompt.
127
+ * app-side work. The live bridge is the dashboard `/support` page (controlled
128
+ * Companion installation steps). Interactive runs offer to open it so the user
129
+ * never types the URL; non-interactive/agent paths only print plain text and
130
+ * never wait on a prompt.
104
131
  *
105
132
  * The wait budget is stated up front. On expiry we say the *timer* expired —
106
133
  * not the setup — and offer another budget when a human is present. Agents
@@ -123,8 +150,8 @@ async function waitForReadyDevice(deps, state) {
123
150
  state.detail,
124
151
  remedy.summary,
125
152
  `Install steps (no typing): ${supportUrl}`,
126
- `I will wait up to ${budgetLabel} for your iPhone to become ready.`,
127
- ].join('\n'), 'Finish setup on your iPhone');
153
+ `I will wait up to ${budgetLabel} for a Companion device to become ready.`,
154
+ ].join('\n'), 'Finish setup on your Companion device');
128
155
  // Open the real support page so the user never has to type the URL. Decline
129
156
  // is fine — the URL remains in the note and in the Next: line if they leave.
130
157
  if (await deps.io.confirm('Open install instructions in your browser?', true)) {
@@ -137,21 +164,21 @@ async function waitForReadyDevice(deps, state) {
137
164
  const now = deps.now ?? Date.now;
138
165
  const sleep = deps.sleep ??
139
166
  ((milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)));
140
- const spinner = await deps.io.spinner?.(`Waiting up to ${budgetLabel} for your iPhone…`);
167
+ const spinner = await deps.io.spinner?.(`Waiting up to ${budgetLabel} for a Companion device…`);
141
168
  let lastDevices = [];
142
169
  let deadline = now() + DEVICE_BRIDGE_TIMEOUT_MS;
143
170
  for (;;) {
144
171
  while (now() < deadline) {
145
172
  try {
146
173
  const response = await authed.client.listDevices();
147
- const iphoneDevices = response.devices.filter((device) => device.platform === 'ios');
148
- lastDevices = iphoneDevices;
149
- const ready = readyIosDevices(iphoneDevices)[0];
174
+ const companionDevices = response.devices.filter((device) => device.platform === 'ios' || device.platform === 'android');
175
+ lastDevices = companionDevices;
176
+ const ready = readyCompanionDevices(companionDevices)[0];
150
177
  if (ready) {
151
178
  spinner?.stop(`${ready.display_name} is ready to receive`);
152
179
  return 'closed';
153
180
  }
154
- spinner?.message(deviceBridgeMessage(iphoneDevices));
181
+ spinner?.message(deviceBridgeMessage(companionDevices));
155
182
  }
156
183
  catch (err) {
157
184
  if (!(err instanceof NetworkError)) {
@@ -172,10 +199,10 @@ async function waitForReadyDevice(deps, state) {
172
199
  deps.io.err(`Re-run \`notifai init\` later and it will pick up from here (install steps: ${supportUrl}).`);
173
200
  const keepWaiting = await deps.io.confirm(`Keep waiting for another ${budgetLabel}?`, false);
174
201
  if (!keepWaiting) {
175
- deps.io.out('Stopping the wait. iPhone setup can continue; re-run `notifai init` when ready.');
202
+ deps.io.out('Stopping the wait. Companion setup can continue; re-run `notifai init` when ready.');
176
203
  return 'pending';
177
204
  }
178
- spinner?.message(`Waiting another ${budgetLabel} for your iPhone…`);
205
+ spinner?.message(`Waiting another ${budgetLabel} for a Companion device…`);
179
206
  deadline = now() + DEVICE_BRIDGE_TIMEOUT_MS;
180
207
  }
181
208
  }
@@ -186,12 +213,13 @@ function setupProofDraft(config, device) {
186
213
  body: project === null
187
214
  ? 'This real notification completed setup verification.'
188
215
  : `This real notification completed setup verification for ${project}.`,
189
- event: 'setup_verified',
190
216
  kind: 'update',
191
- platform: 'ios',
217
+ platform: device.platform,
192
218
  device: [device.device_id],
193
219
  sound: 'none',
194
- level: 'passive',
220
+ // Android has no caller-selected interruption level. Explicit null keeps an
221
+ // Apple preference in config from leaking into this Android-only proof.
222
+ level: device.platform === 'ios' ? 'passive' : null,
195
223
  collapseKey: 'notifai-setup-verification',
196
224
  });
197
225
  }
@@ -226,8 +254,8 @@ async function submitSetupProof(deps, client, config, device) {
226
254
  }
227
255
  /**
228
256
  * Send or resume one real setup probe, then wait for a Companion Receipt.
229
- * Provider Acceptance is intentionally insufficient: it proves APNs accepted
230
- * the push, not that a companion process received it.
257
+ * Provider Acceptance is intentionally insufficient: it proves a push provider
258
+ * accepted the request, not that a companion process received it.
231
259
  */
232
260
  async function runSetupProof(deps) {
233
261
  const config = loadLoggedConfig(deps, { cwd: deps.cwd, env: deps.env });
@@ -242,16 +270,31 @@ async function runSetupProof(deps) {
242
270
  reportError(deps, err);
243
271
  return 'failed';
244
272
  }
245
- const candidates = readyIosDevices(devices);
273
+ const candidates = readyCompanionDevices(devices);
246
274
  const existing = readSetupProof(deps);
247
275
  const target = candidates.find((device) => device.device_id === existing?.device_id && existing.project === config.project.value) ?? candidates[0];
248
276
  if (!target) {
249
- deps.io.err('Setup proof needs a receipt-capable iPhone.');
277
+ deps.io.err('Setup proof needs a receipt-capable iPhone or Android Companion App.');
250
278
  return 'pending';
251
279
  }
252
280
  let proof = existing?.device_id === target.device_id && existing.project === config.project.value
253
281
  ? existing
254
282
  : null;
283
+ const nowMs = (deps.now ?? Date.now)();
284
+ if (proof !== null && setupProofIsStale(proof, nowMs)) {
285
+ let keepStale = false;
286
+ try {
287
+ const snapshot = await authed.client.evidence(proof.request_id);
288
+ keepStale = observedCompanionReceipt(snapshot, proof.device_id) !== null;
289
+ }
290
+ catch {
291
+ keepStale = false;
292
+ }
293
+ if (!keepStale) {
294
+ deps.io.out(`The saved proof ${proof.request_id} is older than 24h without a Companion Receipt; sending a replacement.`);
295
+ proof = null;
296
+ }
297
+ }
255
298
  if (proof === null) {
256
299
  const receipt = await submitSetupProof(deps, authed.client, config, target);
257
300
  if (receipt === null)
@@ -380,25 +423,67 @@ function wantsOptional(deps, state, flags) {
380
423
  * and a revoked credential are the same code path arriving at different
381
424
  * states rather than four branches to enumerate.
382
425
  */
383
- export async function initCommand(deps, flags) {
384
- if (flags.skillsScope !== undefined &&
385
- flags.skillsScope !== 'project' &&
386
- flags.skillsScope !== 'global') {
426
+ function isSetupScope(value) {
427
+ return value === 'project' || value === 'global';
428
+ }
429
+ async function resolveSetupScope(deps, flags) {
430
+ if (flags.setupScope !== undefined && !isSetupScope(flags.setupScope)) {
431
+ deps.io.err('Invalid setup scope. Choose `project` or `global`.');
432
+ return 'usage';
433
+ }
434
+ if (flags.skillsScope !== undefined && !isSetupScope(flags.skillsScope)) {
387
435
  deps.io.err('Invalid skill scope. Choose `project` or `global`.');
388
- return EXIT.usage;
436
+ return 'usage';
437
+ }
438
+ if (flags.setupScope !== undefined &&
439
+ flags.skillsScope !== undefined &&
440
+ flags.setupScope !== flags.skillsScope) {
441
+ deps.io.err('`--setup-scope` and `--skills-scope` disagree. Pass one, or pass the same value twice.');
442
+ return 'usage';
389
443
  }
390
444
  if (flags.skillsScope !== undefined && flags.skills !== true) {
391
- deps.io.err('`--skills-scope` requires `--skills`. Choose project or global in the native installer.');
392
- return EXIT.usage;
445
+ deps.io.err('`--skills-scope` requires `--skills`. Use `--setup-scope` to choose project or machine for the whole setup.');
446
+ return 'usage';
393
447
  }
394
- if (flags.skills === true &&
395
- deps.io.interactive !== true &&
396
- flags.skillsScope === undefined) {
397
- deps.io.err('Unattended skill setup requires an explicit scope: `notifai init --skills --skills-scope project` or `... global`.');
398
- return EXIT.usage;
448
+ const fromFlags = flags.setupScope ?? flags.skillsScope;
449
+ if (fromFlags !== undefined)
450
+ return fromFlags;
451
+ if (flags.skills === false && flags.hooks === false)
452
+ return undefined;
453
+ if (deps.io.interactive === true && deps.io.select) {
454
+ const selected = await deps.io.select('Should this Notifai setup apply to this project only, or to every project on this machine?', [
455
+ {
456
+ value: 'project',
457
+ label: 'This project',
458
+ hint: 'skill, hooks, and shared config stay in this checkout',
459
+ },
460
+ {
461
+ value: 'global',
462
+ label: 'This machine',
463
+ hint: 'skill and hooks follow you into every repo',
464
+ },
465
+ ]);
466
+ if (selected === 'project' || selected === 'global')
467
+ return selected;
468
+ deps.io.err('No setup scope selected. Pass `--setup-scope project` or `--setup-scope global`.');
469
+ return 'usage';
470
+ }
471
+ if (flags.skills === true) {
472
+ deps.io.err('Unattended skill setup requires an explicit scope: `notifai init --skills --setup-scope project` or `... global`.');
473
+ return 'usage';
399
474
  }
475
+ return undefined;
476
+ }
477
+ export async function initCommand(deps, flags) {
478
+ const setupScope = await resolveSetupScope(deps, flags);
479
+ if (setupScope === 'usage')
480
+ return EXIT.usage;
481
+ const resolved = {
482
+ ...flags,
483
+ ...(setupScope === undefined ? {} : { setupScope, skillsScope: flags.skillsScope ?? setupScope }),
484
+ };
400
485
  await deps.io.intro?.('Notifai setup');
401
- const skillOpts = flags.skillsScope === undefined ? {} : { skillScope: flags.skillsScope };
486
+ const skillOpts = resolved.setupScope === undefined ? {} : { skillScope: resolved.setupScope };
402
487
  let readiness = await assessReadiness(deps, skillOpts);
403
488
  const reassess = (refresh) => assessReadiness(deps, {
404
489
  ...skillOpts,
@@ -428,10 +513,10 @@ export async function initCommand(deps, flags) {
428
513
  continue;
429
514
  }
430
515
  if (state.status === 'optional-gap') {
431
- if (remedy.by !== 'cli' || !(await wantsOptional(deps, state, flags)))
516
+ if (remedy.by !== 'cli' || !(await wantsOptional(deps, state, resolved)))
432
517
  continue;
433
518
  attempted.add(state.id);
434
- const result = await closeGap(deps, state, flags);
519
+ const result = await closeGap(deps, state, resolved);
435
520
  if (result === 'failed')
436
521
  failed = true;
437
522
  if (result === 'failed' && state.status === 'optional-gap') {
@@ -449,7 +534,7 @@ export async function initCommand(deps, flags) {
449
534
  }
450
535
  if (remedy.by === 'cli') {
451
536
  attempted.add(state.id);
452
- const result = await closeGap(deps, state, flags);
537
+ const result = await closeGap(deps, state, resolved);
453
538
  if (result === 'failed')
454
539
  failed = true;
455
540
  if (result !== 'closed') {
@@ -498,7 +583,7 @@ export async function initCommand(deps, flags) {
498
583
  if (stop || !advanced)
499
584
  break;
500
585
  }
501
- await printInitClose(deps, readiness, flags);
586
+ await printInitClose(deps, readiness, resolved);
502
587
  const blocker = firstBlocker(readiness);
503
588
  if (blocker === null)
504
589
  return failed ? EXIT.failed : EXIT.ok;
@@ -1 +1 @@
1
- {"version":3,"file":"commands-init.js","sourceRoot":"","sources":["../src/commands-init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands-init.js","sourceRoot":"","sources":["../src/commands-init.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,21 @@ type UploadResult = {
39
39
  error: string | null;
40
40
  exit: number;
41
41
  };
42
- /** `--image` accepts a media id, a local file path, or an http(s) URL. */
43
- export declare function uploadImage(deps: CommandDeps, client: ApiClient, source: string): Promise<UploadResult>;
42
+ /**
43
+ * Read a remote image without buffering more than the server will accept.
44
+ *
45
+ * Content-Length is an early refusal, not trust: a lying header still hits
46
+ * the byte cap while the body is read. Supported schemes stay http and https.
47
+ */
48
+ export declare function readCappedBytes(response: Response, maxBytes: number): Promise<Uint8Array | 'too-large'>;
49
+ /**
50
+ * `--image` accepts a media id, a local file path, or an http(s) URL.
51
+ *
52
+ * A remote URL is fetched under the media URL policy (`url-policy.ts`):
53
+ * public HTTPS by default, every redirect hop re-validated, and non-public
54
+ * destinations only through the User's `media_origins` — never a
55
+ * repository's. `--image` values routinely arrive from an agent that read
56
+ * them in a working tree, so the URL is hostile input until proven otherwise.
57
+ */
58
+ export declare function uploadImage(deps: CommandDeps, client: ApiClient, source: string, allowOrigins?: readonly string[]): Promise<UploadResult>;
44
59
  export {};
@@ -1,8 +1,9 @@
1
- import {} from '@raidiant/notifai-protocol';
1
+ import { NOTIFICATION_IMAGE_MAX_BYTES } from '@raidiant/notifai-protocol';
2
2
  import { sha256Hex } from '@raidiant/notifai-protocol/node';
3
3
  import { existsSync, readFileSync } from 'node:fs';
4
4
  import path from 'node:path';
5
5
  import { isRetryableReplyPollError } from './client.js';
6
+ import { fetchMediaUrl } from './url-policy.js';
6
7
  import { buildSourceContext, inferInvocationContext } from './invocation-context.js';
7
8
  import { readOrcaSessionTitle } from './orca-session-title.js';
8
9
  import {} from './send.js';
@@ -10,9 +11,11 @@ import { EXIT, reportError } from './commands-core.js';
10
11
  function managedSessionTitle(deps, flags, active) {
11
12
  if (active?.sessionLabel !== undefined)
12
13
  return active.sessionLabel;
13
- if (active?.harness !== 'claude-code' ||
14
- active.sessionId === undefined ||
15
- active.sessionId !== deps.env['CLAUDE_CODE_SESSION_ID'] ||
14
+ // The Orca worktree title names the workspace, not one harness: every
15
+ // harness session Orca starts inside that worktree inherits the same
16
+ // environment selector, so any active session with an identity to label
17
+ // may use it. An explicit label still wins without paying for the lookup.
18
+ if (active?.sessionId === undefined ||
16
19
  flags.sessionLabel !== undefined ||
17
20
  deps.env['NOTIFAI_SESSION_LABEL'] !== undefined) {
18
21
  return undefined;
@@ -153,18 +156,73 @@ const MEDIA_TYPES = {
153
156
  '.png': 'image/png',
154
157
  '.gif': 'image/gif',
155
158
  };
156
- /** `--image` accepts a media id, a local file path, or an http(s) URL. */
157
- export async function uploadImage(deps, client, source) {
159
+ /**
160
+ * Read a remote image without buffering more than the server will accept.
161
+ *
162
+ * Content-Length is an early refusal, not trust: a lying header still hits
163
+ * the byte cap while the body is read. Supported schemes stay http and https.
164
+ */
165
+ export async function readCappedBytes(response, maxBytes) {
166
+ const contentLength = Number(response.headers.get('content-length'));
167
+ if (Number.isFinite(contentLength) && contentLength > maxBytes)
168
+ return 'too-large';
169
+ const reader = response.body?.getReader();
170
+ if (reader === undefined) {
171
+ const buf = new Uint8Array(await response.arrayBuffer());
172
+ return buf.byteLength > maxBytes ? 'too-large' : buf;
173
+ }
174
+ const chunks = [];
175
+ let received = 0;
176
+ while (true) {
177
+ const { done, value } = await reader.read();
178
+ if (done)
179
+ break;
180
+ received += value.byteLength;
181
+ if (received > maxBytes) {
182
+ await reader.cancel();
183
+ return 'too-large';
184
+ }
185
+ chunks.push(value);
186
+ }
187
+ const out = new Uint8Array(received);
188
+ let offset = 0;
189
+ for (const chunk of chunks) {
190
+ out.set(chunk, offset);
191
+ offset += chunk.byteLength;
192
+ }
193
+ return out;
194
+ }
195
+ /**
196
+ * `--image` accepts a media id, a local file path, or an http(s) URL.
197
+ *
198
+ * A remote URL is fetched under the media URL policy (`url-policy.ts`):
199
+ * public HTTPS by default, every redirect hop re-validated, and non-public
200
+ * destinations only through the User's `media_origins` — never a
201
+ * repository's. `--image` values routinely arrive from an agent that read
202
+ * them in a working tree, so the URL is hostile input until proven otherwise.
203
+ */
204
+ export async function uploadImage(deps, client, source, allowOrigins = []) {
158
205
  let bytes;
159
206
  let mediaType;
160
207
  if (/^https?:\/\//.test(source)) {
161
208
  try {
162
- const response = await fetch(source);
209
+ const fetched = await fetchMediaUrl(source, { allowOrigins }, deps.fetchImpl);
210
+ if (!fetched.ok)
211
+ return { ok: false, error: fetched.reason, exit: EXIT.usage };
212
+ const response = fetched.response;
163
213
  if (!response.ok)
164
214
  return { ok: false, error: `Could not fetch ${source} (${response.status}).`, exit: EXIT.usage };
165
215
  const contentType = response.headers.get('content-type')?.split(';')[0]?.trim() ?? '';
166
216
  mediaType = ['image/jpeg', 'image/png', 'image/gif'].find((t) => t === contentType);
167
- bytes = new Uint8Array(await response.arrayBuffer());
217
+ const downloaded = await readCappedBytes(response, NOTIFICATION_IMAGE_MAX_BYTES);
218
+ if (downloaded === 'too-large') {
219
+ return {
220
+ ok: false,
221
+ error: `Remote image exceeds the ${NOTIFICATION_IMAGE_MAX_BYTES} byte media limit.`,
222
+ exit: EXIT.usage,
223
+ };
224
+ }
225
+ bytes = downloaded;
168
226
  }
169
227
  catch (err) {
170
228
  return { ok: false, error: `Could not fetch ${source}: ${String(err)}`, exit: EXIT.network };