@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.
- package/CHANGELOG.md +75 -0
- package/README.md +20 -13
- package/dist/atomic-file.d.ts +14 -0
- package/dist/atomic-file.js +27 -2
- package/dist/atomic-file.js.map +1 -1
- package/dist/cli-bin.d.ts +4 -0
- package/dist/cli-bin.js +62 -0
- package/dist/cli-bin.js.map +1 -0
- package/dist/cli-release.d.ts +10 -0
- package/dist/cli-release.js +75 -0
- package/dist/cli-release.js.map +1 -0
- package/dist/client.d.ts +1 -0
- package/dist/client.js +13 -3
- package/dist/client.js.map +1 -1
- package/dist/commands-auth.d.ts +6 -0
- package/dist/commands-auth.js +28 -3
- package/dist/commands-auth.js.map +1 -1
- package/dist/commands-config.js +22 -3
- package/dist/commands-config.js.map +1 -1
- package/dist/commands-core.d.ts +12 -0
- package/dist/commands-core.js +27 -3
- package/dist/commands-core.js.map +1 -1
- package/dist/commands-devices.d.ts +2 -1
- package/dist/commands-devices.js +20 -8
- package/dist/commands-devices.js.map +1 -1
- package/dist/commands-doctor.d.ts +1 -0
- package/dist/commands-doctor.js +85 -27
- package/dist/commands-doctor.js.map +1 -1
- package/dist/commands-guidance.d.ts +27 -0
- package/dist/commands-guidance.js +163 -0
- package/dist/commands-guidance.js.map +1 -0
- package/dist/commands-hooks.d.ts +16 -5
- package/dist/commands-hooks.js +433 -38
- package/dist/commands-hooks.js.map +1 -1
- package/dist/commands-init.d.ts +10 -18
- package/dist/commands-init.js +139 -54
- package/dist/commands-init.js.map +1 -1
- package/dist/commands-send-support.d.ts +17 -2
- package/dist/commands-send-support.js +66 -8
- package/dist/commands-send-support.js.map +1 -1
- package/dist/commands-send.d.ts +0 -1
- package/dist/commands-send.js +105 -39
- package/dist/commands-send.js.map +1 -1
- package/dist/commands-setup-proof.d.ts +8 -0
- package/dist/commands-setup-proof.js +31 -2
- package/dist/commands-setup-proof.js.map +1 -1
- package/dist/commands-skill.d.ts +11 -1
- package/dist/commands-skill.js +61 -11
- package/dist/commands-skill.js.map +1 -1
- package/dist/commands.d.ts +2 -1
- package/dist/commands.js +1 -0
- package/dist/commands.js.map +1 -1
- package/dist/config-schema.d.ts +1 -1
- package/dist/config-schema.js +30 -14
- package/dist/config-schema.js.map +1 -1
- package/dist/config.d.ts +24 -5
- package/dist/config.js +37 -8
- package/dist/config.js.map +1 -1
- package/dist/credentials.d.ts +10 -1
- package/dist/credentials.js +25 -12
- package/dist/credentials.js.map +1 -1
- package/dist/guidance-content.d.ts +50 -0
- package/dist/guidance-content.js +240 -0
- package/dist/guidance-content.js.map +1 -0
- package/dist/guidance.d.ts +69 -0
- package/dist/guidance.js +173 -0
- package/dist/guidance.js.map +1 -0
- package/dist/hook-adapter.js +37 -3
- package/dist/hook-adapter.js.map +1 -1
- package/dist/hooks.d.ts +68 -7
- package/dist/hooks.js +238 -92
- package/dist/hooks.js.map +1 -1
- package/dist/install-hooks.d.ts +10 -18
- package/dist/install-hooks.js +110 -23
- package/dist/install-hooks.js.map +1 -1
- package/dist/interactive.d.ts +1 -1
- package/dist/interactive.js +14 -9
- package/dist/interactive.js.map +1 -1
- package/dist/logging.d.ts +8 -1
- package/dist/logging.js +43 -2
- package/dist/logging.js.map +1 -1
- package/dist/main.js +5 -487
- package/dist/main.js.map +1 -1
- package/dist/native-skills.d.ts +19 -0
- package/dist/native-skills.js +30 -8
- package/dist/native-skills.js.map +1 -1
- package/dist/opencode-plugin.js +14 -1
- package/dist/opencode-plugin.js.map +1 -1
- package/dist/program.d.ts +49 -0
- package/dist/program.js +576 -0
- package/dist/program.js.map +1 -0
- package/dist/send.d.ts +12 -10
- package/dist/send.js +65 -29
- package/dist/send.js.map +1 -1
- package/dist/session-activation.d.ts +15 -0
- package/dist/session-activation.js +35 -0
- package/dist/session-activation.js.map +1 -0
- package/dist/session-labels.d.ts +9 -3
- package/dist/session-labels.js +38 -7
- package/dist/session-labels.js.map +1 -1
- package/dist/url-policy.d.ts +85 -0
- package/dist/url-policy.js +369 -0
- package/dist/url-policy.js.map +1 -0
- package/package.json +6 -4
- package/src/atomic-file.ts +36 -2
- package/src/cli-bin.test.ts +38 -0
- package/src/cli-bin.ts +67 -0
- package/src/cli-release.test.ts +46 -0
- package/src/cli-release.ts +78 -0
- package/src/client.test.ts +95 -0
- package/src/client.ts +16 -3
- package/src/commands-auth.ts +32 -3
- package/src/commands-config.ts +25 -2
- package/src/commands-core.ts +38 -3
- package/src/commands-devices.ts +28 -9
- package/src/commands-doctor.ts +116 -25
- package/src/commands-guidance.ts +216 -0
- package/src/commands-hooks.ts +513 -42
- package/src/commands-init.ts +170 -60
- package/src/commands-send-support.test.ts +156 -0
- package/src/commands-send-support.ts +72 -8
- package/src/commands-send.ts +123 -38
- package/src/commands-setup-proof.ts +36 -2
- package/src/commands-skill.ts +78 -15
- package/src/commands.test.ts +1490 -197
- package/src/commands.ts +6 -0
- package/src/config-schema.ts +32 -16
- package/src/config.test.ts +57 -2
- package/src/config.ts +49 -10
- package/src/credentials.test.ts +71 -3
- package/src/credentials.ts +29 -15
- package/src/guidance-content.ts +256 -0
- package/src/guidance.test.ts +299 -0
- package/src/guidance.ts +233 -0
- package/src/hook-adapter.test.ts +113 -1
- package/src/hook-adapter.ts +37 -3
- package/src/hooks.test.ts +783 -170
- package/src/hooks.ts +306 -131
- package/src/install-hooks.test.ts +135 -16
- package/src/install-hooks.ts +113 -25
- package/src/interactive.ts +14 -9
- package/src/logging.test.ts +66 -3
- package/src/logging.ts +45 -2
- package/src/main.ts +6 -614
- package/src/native-skills.test.ts +41 -1
- package/src/native-skills.ts +40 -6
- package/src/opencode-plugin.ts +14 -1
- package/src/program.test.ts +237 -0
- package/src/program.ts +751 -0
- package/src/send.test.ts +28 -0
- package/src/send.ts +81 -34
- package/src/session-activation.ts +45 -0
- package/src/session-labels.test.ts +120 -3
- package/src/session-labels.ts +38 -7
- package/src/skill.test.ts +153 -12
- package/src/trust-policy.test.ts +701 -0
- package/src/url-policy.ts +399 -0
package/dist/commands-init.js
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
|
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'] =
|
|
41
|
-
|
|
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
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
102
|
-
* steps). Interactive runs offer to open it so the user
|
|
103
|
-
* non-interactive/agent paths only print plain text and
|
|
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
|
|
127
|
-
].join('\n'), 'Finish setup on your
|
|
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
|
|
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
|
|
148
|
-
lastDevices =
|
|
149
|
-
const ready =
|
|
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(
|
|
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.
|
|
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
|
|
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:
|
|
217
|
+
platform: device.platform,
|
|
192
218
|
device: [device.device_id],
|
|
193
219
|
sound: 'none',
|
|
194
|
-
level
|
|
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
|
|
230
|
-
* the
|
|
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 =
|
|
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
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
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
|
|
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`.
|
|
392
|
-
return
|
|
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
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
return
|
|
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 =
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
/**
|
|
43
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
/**
|
|
157
|
-
|
|
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
|
|
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
|
-
|
|
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 };
|