@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-skill.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SKILLS_INSTALLER_SPEC } from './native-skills.js';
|
|
1
2
|
import {} from './readiness.js';
|
|
2
3
|
import { skillsSource } from './release.js';
|
|
3
4
|
/**
|
|
@@ -13,6 +14,7 @@ export const SKILLS_SOURCE = skillsSource();
|
|
|
13
14
|
* saying nothing would be worse — the sentence still has to read as English.
|
|
14
15
|
*/
|
|
15
16
|
const SKILLS_SOURCE_LABEL = SKILLS_SOURCE ?? 'the public release tag matching this CLI';
|
|
17
|
+
const SKILL_SCOPES = ['project', 'global'];
|
|
16
18
|
function skillSourceParts() {
|
|
17
19
|
if (SKILLS_SOURCE === null)
|
|
18
20
|
return null;
|
|
@@ -27,9 +29,16 @@ function expectedSkill(skill) {
|
|
|
27
29
|
skill.sourceType === 'github' &&
|
|
28
30
|
skill.ref === expected.ref);
|
|
29
31
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
function skillPin(skill) {
|
|
33
|
+
return skill.ref ?? 'unknown pin';
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Installer-managed notifai skills in both scopes. Duplicate detection has to
|
|
37
|
+
* see the pair; a selected-scope filter would hide the copy the harness still
|
|
38
|
+
* lists.
|
|
39
|
+
*/
|
|
40
|
+
export async function listScopedNotifaiSkills(deps) {
|
|
41
|
+
const results = await Promise.all(SKILL_SCOPES.map(async (scope) => {
|
|
33
42
|
if (deps.nativeSkills === undefined)
|
|
34
43
|
return { scope, skills: [] };
|
|
35
44
|
try {
|
|
@@ -39,18 +48,59 @@ export async function skillReadiness(deps, selectedScope) {
|
|
|
39
48
|
return { scope, skills: [], error: String(err) };
|
|
40
49
|
}
|
|
41
50
|
}));
|
|
42
|
-
|
|
43
|
-
|
|
51
|
+
return {
|
|
52
|
+
installed: results.flatMap(({ skills }) => skills.filter((skill) => skill.name === 'notifai')),
|
|
53
|
+
errors: results
|
|
54
|
+
.filter((result) => result.error !== undefined)
|
|
55
|
+
.map((result) => `${result.scope}: ${result.error}`),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function duplicateSkillState(installed, selectedScope) {
|
|
59
|
+
const project = installed.find((skill) => skill.scope === 'project');
|
|
60
|
+
const global = installed.find((skill) => skill.scope === 'global');
|
|
61
|
+
const projectPin = project === undefined ? 'not installed' : skillPin(project);
|
|
62
|
+
const globalPin = global === undefined ? 'not installed' : skillPin(global);
|
|
63
|
+
return {
|
|
64
|
+
id: 'skill',
|
|
65
|
+
title: 'Agent guidance skill',
|
|
66
|
+
status: 'gap',
|
|
67
|
+
detail: `project (${projectPin}) and global (${globalPin}) are both installed, so the harness lists both. ` +
|
|
68
|
+
'Keep either project or global and uninstall the other.',
|
|
69
|
+
technical: {
|
|
70
|
+
project: project === undefined
|
|
71
|
+
? null
|
|
72
|
+
: { ref: project.ref, path: project.path, current: expectedSkill(project) },
|
|
73
|
+
global: global === undefined
|
|
74
|
+
? null
|
|
75
|
+
: { ref: global.ref, path: global.path, current: expectedSkill(global) },
|
|
76
|
+
resolution: 'both-listed',
|
|
77
|
+
},
|
|
78
|
+
remedy: selectedScope === undefined
|
|
79
|
+
? {
|
|
80
|
+
by: 'user-here',
|
|
81
|
+
summary: 'keep either the project or the machine-global skill and uninstall the other; add --global to remove the machine-global copy',
|
|
82
|
+
command: `npx -y ${SKILLS_INSTALLER_SPEC} remove notifai`,
|
|
83
|
+
}
|
|
84
|
+
: {
|
|
85
|
+
by: 'cli',
|
|
86
|
+
summary: `keep the ${selectedScope} skill and uninstall the other`,
|
|
87
|
+
command: `notifai init --skills --setup-scope ${selectedScope}`,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export async function skillReadiness(deps, selectedScope) {
|
|
92
|
+
const { installed, errors } = await listScopedNotifaiSkills(deps);
|
|
93
|
+
if (installed.length > 1)
|
|
94
|
+
return duplicateSkillState(installed, selectedScope);
|
|
95
|
+
const current = installed.find(expectedSkill);
|
|
96
|
+
if (current !== undefined) {
|
|
44
97
|
return {
|
|
45
98
|
id: 'skill',
|
|
46
99
|
title: 'Agent guidance skill',
|
|
47
100
|
status: 'ready',
|
|
48
|
-
detail: `installed from ${SKILLS_SOURCE_LABEL} in the ${
|
|
101
|
+
detail: `installed from ${SKILLS_SOURCE_LABEL} in the ${current.scope} scope`,
|
|
49
102
|
};
|
|
50
103
|
}
|
|
51
|
-
const errors = results
|
|
52
|
-
.filter((result) => result.error !== undefined)
|
|
53
|
-
.map((result) => `${result.scope}: ${result.error}`);
|
|
54
104
|
const scopeText = selectedScope === undefined ? 'project or machine-global scope' : `${selectedScope} scope`;
|
|
55
105
|
return {
|
|
56
106
|
id: 'skill',
|
|
@@ -63,8 +113,8 @@ export async function skillReadiness(deps, selectedScope) {
|
|
|
63
113
|
by: 'cli',
|
|
64
114
|
summary: 'install the skill agents follow when deciding to notify',
|
|
65
115
|
command: selectedScope === undefined
|
|
66
|
-
? 'notifai init --skills'
|
|
67
|
-
: `notifai init --skills --
|
|
116
|
+
? 'notifai init --skills --setup-scope project'
|
|
117
|
+
: `notifai init --skills --setup-scope ${selectedScope}`,
|
|
68
118
|
},
|
|
69
119
|
};
|
|
70
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands-skill.js","sourceRoot":"","sources":["../src/commands-skill.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands-skill.js","sourceRoot":"","sources":["../src/commands-skill.ts"],"names":[],"mappings":"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"}
|
package/dist/commands.d.ts
CHANGED
|
@@ -5,8 +5,9 @@ export { contradictingAnswer, repliesCommand, sendCommand, statusCommand, } from
|
|
|
5
5
|
export { waitForReply } from './commands-send-support.js';
|
|
6
6
|
export { HOOK_EVENTS, acknowledgeCommand, askCommand, buildQuestions, closeCommand, describeHookFailure, hookDefersDiagnosticsUntilAfterCleanup, hookRunCommand, hooksInstallCommand, hooksUninstallCommand, runningViaNpx, type AskFlags, type BuiltQuestions, type HookEvent, type HooksInstallFlags, } from './commands-hooks.js';
|
|
7
7
|
export { configExplainCommand, configSetCommand, configShowCommand, configUnsetCommand, } from './commands-config.js';
|
|
8
|
+
export { guidanceSetCommand, guidanceShowCommand, guidanceUnsetCommand, } from './commands-guidance.js';
|
|
8
9
|
export { logsCommand, parseSince, type LogsFlags } from './commands-logs.js';
|
|
9
10
|
export { SKILLS_SOURCE } from './commands-skill.js';
|
|
10
|
-
export { initCommand, projectSlugFrom, type InitFlags, } from './commands-init.js';
|
|
11
|
+
export { initCommand, projectSlugFrom, type InitFlags, type SetupScope, } from './commands-init.js';
|
|
11
12
|
export { assessReadiness, doctorCommand } from './commands-doctor.js';
|
|
12
13
|
export { realIo } from './commands-io.js';
|
package/dist/commands.js
CHANGED
|
@@ -5,6 +5,7 @@ export { contradictingAnswer, repliesCommand, sendCommand, statusCommand, } from
|
|
|
5
5
|
export { waitForReply } from './commands-send-support.js';
|
|
6
6
|
export { HOOK_EVENTS, acknowledgeCommand, askCommand, buildQuestions, closeCommand, describeHookFailure, hookDefersDiagnosticsUntilAfterCleanup, hookRunCommand, hooksInstallCommand, hooksUninstallCommand, runningViaNpx, } from './commands-hooks.js';
|
|
7
7
|
export { configExplainCommand, configSetCommand, configShowCommand, configUnsetCommand, } from './commands-config.js';
|
|
8
|
+
export { guidanceSetCommand, guidanceShowCommand, guidanceUnsetCommand, } from './commands-guidance.js';
|
|
8
9
|
export { logsCommand, parseSince } from './commands-logs.js';
|
|
9
10
|
export { SKILLS_SOURCE } from './commands-skill.js';
|
|
10
11
|
export { initCommand, projectSlugFrom, } from './commands-init.js';
|
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,GAAG,GAIJ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,sCAAsC,EACtC,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GAKd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EACL,WAAW,EACX,eAAe,
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,GAAG,GAIJ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,sCAAsC,EACtC,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GAKd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EACL,WAAW,EACX,eAAe,GAGhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA"}
|
package/dist/config-schema.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export type ConfigKind = 'string' | 'url' | 'integer' | 'boolean' | 'enum' | 'li
|
|
|
4
4
|
* Which surface a key belongs to. Grouping is the difference between a flat
|
|
5
5
|
* list of keys and a few short ones a reader can hold in their head.
|
|
6
6
|
*/
|
|
7
|
-
export type ConfigGroup = 'questions' | 'delivery' | 'project' | 'diagnostics';
|
|
7
|
+
export type ConfigGroup = 'questions' | 'delivery' | 'project' | 'trust' | 'diagnostics';
|
|
8
8
|
export declare const CONFIG_GROUPS: {
|
|
9
9
|
id: ConfigGroup;
|
|
10
10
|
title: string;
|
package/dist/config-schema.js
CHANGED
|
@@ -32,7 +32,12 @@ export const CONFIG_GROUPS = [
|
|
|
32
32
|
{
|
|
33
33
|
id: 'project',
|
|
34
34
|
title: 'This project',
|
|
35
|
-
blurb: 'How work in this directory identifies itself
|
|
35
|
+
blurb: 'How work in this directory identifies itself. House rules for agents live in `notifai guidance`.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: 'trust',
|
|
39
|
+
title: 'Network trust',
|
|
40
|
+
blurb: 'Origins this machine may fetch from or open beyond the safe defaults. Only you can widen these — a repository cannot.',
|
|
36
41
|
},
|
|
37
42
|
{
|
|
38
43
|
id: 'diagnostics',
|
|
@@ -45,7 +50,7 @@ const INFO = {
|
|
|
45
50
|
label: 'Send questions to my devices',
|
|
46
51
|
group: 'questions',
|
|
47
52
|
kind: 'boolean',
|
|
48
|
-
summary: 'Whether a registered question may reach your
|
|
53
|
+
summary: 'Whether a registered question may reach your Companion devices at all',
|
|
49
54
|
detail: 'The master switch for question routing. When this is off, a question an agent registers with `notifai ask` stays in the terminal and never leaves this machine, whatever else is configured. Turn it off to stop being reached for a while without uninstalling the harness hooks.',
|
|
50
55
|
example: 'true',
|
|
51
56
|
},
|
|
@@ -93,9 +98,9 @@ const INFO = {
|
|
|
93
98
|
active: 'wakes the screen and plays the sound',
|
|
94
99
|
time_sensitive: 'marks the notification urgent; Focus breakthrough is not available yet',
|
|
95
100
|
},
|
|
96
|
-
summary: 'Set how insistently notifications
|
|
97
|
-
detail: '
|
|
98
|
-
unsetMeans: 'not specified;
|
|
101
|
+
summary: 'Set how insistently notifications reach Apple devices',
|
|
102
|
+
detail: 'Apple interruption level controls how hard a notification tries to reach you in the operating system\'s terms. Setting this pins one Apple-only level for sends from here; kind chooses the sound, never this. Android does not accept caller-selected interruption levels: its product-owned channels and your device settings own attention.\n\nLeave this unset to omit the field and let each destination use its normal behavior. `time_sensitive` is accepted on Apple platforms and marks the notification urgent, but Focus breakthrough is not available yet — run `notifai capabilities --platform <platform>` for the exact contract.',
|
|
103
|
+
unsetMeans: 'not specified; each destination uses its normal behavior',
|
|
99
104
|
},
|
|
100
105
|
devices: {
|
|
101
106
|
label: 'Default devices',
|
|
@@ -142,14 +147,25 @@ const INFO = {
|
|
|
142
147
|
unsetMeans: 'inferred from Git or the current directory',
|
|
143
148
|
example: 'my-app',
|
|
144
149
|
},
|
|
145
|
-
|
|
146
|
-
label: '
|
|
147
|
-
group: '
|
|
148
|
-
kind: '
|
|
149
|
-
summary: '
|
|
150
|
-
detail: '
|
|
151
|
-
unsetMeans: '
|
|
152
|
-
example: '
|
|
150
|
+
media_origins: {
|
|
151
|
+
label: 'Extra image origins',
|
|
152
|
+
group: 'trust',
|
|
153
|
+
kind: 'list',
|
|
154
|
+
summary: 'Origins remote --image URLs may use beyond public HTTPS',
|
|
155
|
+
detail: 'By default a remote `--image` URL must be HTTPS to a publicly routable host, and every redirect hop is held to the same rule — an agent given a hostile URL cannot be used to reach this machine\'s local network. List an exact origin (`scheme://host[:port]`) here to allow a self-hosted or intranet image server, including plain-http ones.\n\nThis key is yours alone: it is read from your machine and personal-project configuration and ignored in the repository\'s shared `.notifai/config.toml`, so a cloned repository can never widen it.',
|
|
156
|
+
unsetMeans: 'public HTTPS only',
|
|
157
|
+
example: 'http://imgs.intranet.example:8080',
|
|
158
|
+
advanced: true,
|
|
159
|
+
},
|
|
160
|
+
approve_origins: {
|
|
161
|
+
label: 'Extra approval origins',
|
|
162
|
+
group: 'trust',
|
|
163
|
+
kind: 'list',
|
|
164
|
+
summary: 'Dashboard origins a pairing approval link may open',
|
|
165
|
+
detail: 'During `notifai login` the server names the browser page where you approve this machine. The CLI opens that link only when it is the Notifai dashboard, the origin you are pairing with, or loopback. If you self-host with the dashboard on its own origin, list that exact origin (`scheme://host[:port]`) here.\n\nThis key is yours alone: it is read from your machine and personal-project configuration and ignored in the repository\'s shared `.notifai/config.toml`, so a cloned repository can never widen it.',
|
|
166
|
+
unsetMeans: 'the Notifai dashboard, the pairing origin, and loopback',
|
|
167
|
+
example: 'https://dash.selfhost.example',
|
|
168
|
+
advanced: true,
|
|
153
169
|
},
|
|
154
170
|
log_level: {
|
|
155
171
|
label: 'Log level',
|
|
@@ -163,7 +179,7 @@ const INFO = {
|
|
|
163
179
|
debug: 'adds config resolution and per-request detail',
|
|
164
180
|
},
|
|
165
181
|
summary: 'How much this machine records about what it did',
|
|
166
|
-
detail: 'Notifai keeps a local record of what it did — every command, every notification, and in particular every decision a harness hook made about whether a question could leave the terminal. Hooks run headless, so without this there is no account of them at all: `notifai logs` is how an agent finds out afterwards why a question never reached your
|
|
182
|
+
detail: 'Notifai keeps a local record of what it did — every command, every notification, and in particular every decision a harness hook made about whether a question could leave the terminal. Hooks run headless, so without this there is no account of them at all: `notifai logs` is how an agent finds out afterwards why a question never reached your device.\n\nThe log never leaves this machine. It is not uploaded, and nothing sends it anywhere.\n\n`debug` also records which config layer won and the detail of each request, which is what to turn on when something is behaving in a way the ordinary log does not explain.',
|
|
167
183
|
example: 'info',
|
|
168
184
|
},
|
|
169
185
|
log_max_bytes: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAA;AAUtE,MAAM,CAAC,MAAM,aAAa,GAAwD;IAChF;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,sGAAsG;KAC9G;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,mBAAmB;QAC1B,KAAK,EAAE,mFAAmF;KAC3F;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -39,8 +39,6 @@ export interface CliConfig {
|
|
|
39
39
|
interruption_level: ResolvedValue<CliInterruptionLevel | null>;
|
|
40
40
|
/** Project identifier stamped on sends; typically set in .notifai/config.toml. */
|
|
41
41
|
project: ResolvedValue<string | null>;
|
|
42
|
-
/** Free-text notification criteria agents consult before sending. */
|
|
43
|
-
notify_criteria: ResolvedValue<string | null>;
|
|
44
42
|
/** Whether a registered agent question may reach companion devices at all. */
|
|
45
43
|
ask_notifications: ResolvedValue<boolean>;
|
|
46
44
|
/**
|
|
@@ -73,9 +71,30 @@ export interface CliConfig {
|
|
|
73
71
|
reply_window_seconds: ResolvedValue<number>;
|
|
74
72
|
/** Log files kept in total, the active one included. */
|
|
75
73
|
log_max_files: ResolvedValue<number>;
|
|
74
|
+
/**
|
|
75
|
+
* Extra origins remote `--image` URLs may use beyond the default public
|
|
76
|
+
* HTTPS policy — the self-host and intranet escape hatch. User-owned: the
|
|
77
|
+
* repository layer cannot supply it (see `USER_OWNED_CONFIG_KEYS`).
|
|
78
|
+
*/
|
|
79
|
+
media_origins: ResolvedValue<string[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Extra dashboard origins a pairing approval URL may open, for self-hosts
|
|
82
|
+
* whose dashboard lives on a different origin than the API. User-owned.
|
|
83
|
+
*/
|
|
84
|
+
approve_origins: ResolvedValue<string[]>;
|
|
76
85
|
}
|
|
77
|
-
export declare const CONFIG_KEYS: readonly ["wait_seconds", "ttl_seconds", "collapse_key", "devices", "sound", "interruption_level", "project", "
|
|
86
|
+
export declare const CONFIG_KEYS: readonly ["wait_seconds", "ttl_seconds", "collapse_key", "devices", "sound", "interruption_level", "project", "ask_notifications", "ask_grace_seconds", "reply_window_seconds", "log_level", "log_max_bytes", "log_max_files", "media_origins", "approve_origins"];
|
|
78
87
|
export type ConfigKey = (typeof CONFIG_KEYS)[number];
|
|
88
|
+
/**
|
|
89
|
+
* Keys only the User may set. The shared `.notifai/config.toml` arrives with
|
|
90
|
+
* a clone, so for most keys an unwanted value is at worst a clamped nuisance —
|
|
91
|
+
* but these keys widen which network destinations this machine will touch,
|
|
92
|
+
* and a hostile repository must not be able to widen them. Resolution skips
|
|
93
|
+
* the repository layer for them entirely.
|
|
94
|
+
*/
|
|
95
|
+
export declare const USER_OWNED_CONFIG_KEYS: readonly ConfigKey[];
|
|
96
|
+
/** Keys whose TOML value must be a list of normalized http(s) origins. */
|
|
97
|
+
export declare const ORIGIN_LIST_CONFIG_KEYS: readonly ConfigKey[];
|
|
79
98
|
/** Keys whose TOML value must parse as a boolean; used by `config set`. */
|
|
80
99
|
export declare const BOOLEAN_CONFIG_KEYS: readonly ConfigKey[];
|
|
81
100
|
/** Keys whose TOML value must parse as an integer within its configured bounds. */
|
|
@@ -88,8 +107,8 @@ export declare const NUMERIC_CONFIG_KEYS: readonly ConfigKey[];
|
|
|
88
107
|
* is the same discipline the numeric bounds follow.
|
|
89
108
|
*/
|
|
90
109
|
export declare const ENUM_CONFIG_VALUES: Partial<Record<ConfigKey, readonly string[]>>;
|
|
91
|
-
/** Compiled service origin. Not a user-facing setting; override with `--base-url` or `NOTIFAI_BASE_URL`. */
|
|
92
|
-
export declare const DEFAULT_BASE_URL = "https://notifai.
|
|
110
|
+
/** Compiled service origin. Not a user-facing setting; login may override with `--base-url` or `NOTIFAI_BASE_URL`. */
|
|
111
|
+
export declare const DEFAULT_BASE_URL = "https://api.notifai.sh";
|
|
93
112
|
/** The shipped value beneath every user-controlled configuration layer. */
|
|
94
113
|
export declare function configDefaultValue(key: ConfigKey): unknown;
|
|
95
114
|
export declare function globalConfigDir(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): string;
|
package/dist/config.js
CHANGED
|
@@ -4,6 +4,7 @@ import { existsSync, readFileSync, realpathSync } from 'node:fs';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { parse as parseToml } from 'smol-toml';
|
|
6
6
|
import { configHome, stateHome } from './platform.js';
|
|
7
|
+
import { normalizeOrigin } from './url-policy.js';
|
|
7
8
|
/**
|
|
8
9
|
* How much the local log records. Defined here rather than in `logging.ts`
|
|
9
10
|
* because it is a configuration vocabulary first — `logging.ts` reads config,
|
|
@@ -18,14 +19,25 @@ export const CONFIG_KEYS = [
|
|
|
18
19
|
'sound',
|
|
19
20
|
'interruption_level',
|
|
20
21
|
'project',
|
|
21
|
-
'notify_criteria',
|
|
22
22
|
'ask_notifications',
|
|
23
23
|
'ask_grace_seconds',
|
|
24
24
|
'reply_window_seconds',
|
|
25
25
|
'log_level',
|
|
26
26
|
'log_max_bytes',
|
|
27
27
|
'log_max_files',
|
|
28
|
+
'media_origins',
|
|
29
|
+
'approve_origins',
|
|
28
30
|
];
|
|
31
|
+
/**
|
|
32
|
+
* Keys only the User may set. The shared `.notifai/config.toml` arrives with
|
|
33
|
+
* a clone, so for most keys an unwanted value is at worst a clamped nuisance —
|
|
34
|
+
* but these keys widen which network destinations this machine will touch,
|
|
35
|
+
* and a hostile repository must not be able to widen them. Resolution skips
|
|
36
|
+
* the repository layer for them entirely.
|
|
37
|
+
*/
|
|
38
|
+
export const USER_OWNED_CONFIG_KEYS = ['media_origins', 'approve_origins'];
|
|
39
|
+
/** Keys whose TOML value must be a list of normalized http(s) origins. */
|
|
40
|
+
export const ORIGIN_LIST_CONFIG_KEYS = ['media_origins', 'approve_origins'];
|
|
29
41
|
/** Keys whose TOML value must parse as a boolean; used by `config set`. */
|
|
30
42
|
export const BOOLEAN_CONFIG_KEYS = ['ask_notifications'];
|
|
31
43
|
/** Keys whose TOML value must parse as an integer within its configured bounds. */
|
|
@@ -49,8 +61,8 @@ export const ENUM_CONFIG_VALUES = {
|
|
|
49
61
|
interruption_level: INTERRUPTION_LEVELS,
|
|
50
62
|
log_level: LOG_LEVELS,
|
|
51
63
|
};
|
|
52
|
-
/** Compiled service origin. Not a user-facing setting; override with `--base-url` or `NOTIFAI_BASE_URL`. */
|
|
53
|
-
export const DEFAULT_BASE_URL = 'https://notifai.
|
|
64
|
+
/** Compiled service origin. Not a user-facing setting; login may override with `--base-url` or `NOTIFAI_BASE_URL`. */
|
|
65
|
+
export const DEFAULT_BASE_URL = 'https://api.notifai.sh';
|
|
54
66
|
const DEFAULTS = {
|
|
55
67
|
wait_seconds: 10,
|
|
56
68
|
ttl_seconds: 86400,
|
|
@@ -59,7 +71,6 @@ const DEFAULTS = {
|
|
|
59
71
|
sound: null,
|
|
60
72
|
interruption_level: null,
|
|
61
73
|
project: null,
|
|
62
|
-
notify_criteria: null,
|
|
63
74
|
// Installing the hooks is the opt-in; these exist to switch the behaviour
|
|
64
75
|
// back off for a project or a session without uninstalling anything.
|
|
65
76
|
ask_notifications: true,
|
|
@@ -76,6 +87,11 @@ const DEFAULTS = {
|
|
|
76
87
|
// agent traffic and small enough that nobody has to think about it.
|
|
77
88
|
log_max_bytes: 2_000_000,
|
|
78
89
|
log_max_files: 3,
|
|
90
|
+
// Empty by default: remote images use public HTTPS and pairing approval
|
|
91
|
+
// uses the canonical dashboard, the pairing origin, or loopback. Entries
|
|
92
|
+
// here are the User widening that, never a repository.
|
|
93
|
+
media_origins: [],
|
|
94
|
+
approve_origins: [],
|
|
79
95
|
};
|
|
80
96
|
/** The shipped value beneath every user-controlled configuration layer. */
|
|
81
97
|
export function configDefaultValue(key) {
|
|
@@ -219,6 +235,14 @@ function coerce(key, value) {
|
|
|
219
235
|
}
|
|
220
236
|
if (BOOLEAN_CONFIG_KEYS.includes(key))
|
|
221
237
|
return typeof value === 'boolean' ? value : undefined;
|
|
238
|
+
if (ORIGIN_LIST_CONFIG_KEYS.includes(key)) {
|
|
239
|
+
// A trust rule is all-or-nothing: one malformed entry drops the whole
|
|
240
|
+
// value rather than silently enforcing a subset of what was written.
|
|
241
|
+
if (!Array.isArray(value))
|
|
242
|
+
return undefined;
|
|
243
|
+
const origins = value.map((entry) => (typeof entry === 'string' ? normalizeOrigin(entry) : null));
|
|
244
|
+
return origins.every((origin) => origin !== null) ? origins : undefined;
|
|
245
|
+
}
|
|
222
246
|
const allowed = ENUM_CONFIG_VALUES[key];
|
|
223
247
|
if (allowed !== undefined) {
|
|
224
248
|
return typeof value === 'string' && allowed.includes(value) ? value : undefined;
|
|
@@ -237,8 +261,9 @@ function readTomlFile(filePath) {
|
|
|
237
261
|
}
|
|
238
262
|
}
|
|
239
263
|
/**
|
|
240
|
-
* Service origin is not a user setting. Flag and env are
|
|
241
|
-
* overrides
|
|
264
|
+
* Service origin is not a user setting. Flag and env are pairing/self-host
|
|
265
|
+
* overrides for unsigned-in traffic (login). Signed-in traffic always uses
|
|
266
|
+
* the origin stored with the Machine Credential.
|
|
242
267
|
*/
|
|
243
268
|
function resolveServiceUrl(flags, env) {
|
|
244
269
|
if (typeof flags.base_url === 'string' && flags.base_url !== '') {
|
|
@@ -264,11 +289,14 @@ export function loadConfig(options) {
|
|
|
264
289
|
const sessionPath = sessionId ? sessionConfigPath(sessionId, env) : null;
|
|
265
290
|
const sessionRaw = sessionPath && existsSync(sessionPath) ? readTomlFile(sessionPath) : {};
|
|
266
291
|
function resolve(key) {
|
|
292
|
+
// The shared project file arrives with a clone, so keys that widen
|
|
293
|
+
// network trust never read from it — whatever a repository writes there.
|
|
294
|
+
const repositoryLayerReadable = !USER_OWNED_CONFIG_KEYS.includes(key);
|
|
267
295
|
const layers = [
|
|
268
296
|
[flags[key], 'flag'],
|
|
269
297
|
[sessionPath ? sessionRaw[key] : undefined, `session:${sessionPath ?? ''}`],
|
|
270
298
|
[projectLocalPath ? projectLocalRaw[key] : undefined, `project-local:${projectLocalPath ?? ''}`],
|
|
271
|
-
[projectPath ? projectRaw[key] : undefined, `project:${projectPath ?? ''}`],
|
|
299
|
+
[projectPath && repositoryLayerReadable ? projectRaw[key] : undefined, `project:${projectPath ?? ''}`],
|
|
272
300
|
[globalRaw[key], `global:${globalPath}`],
|
|
273
301
|
];
|
|
274
302
|
for (const [raw, source] of layers) {
|
|
@@ -290,13 +318,14 @@ export function loadConfig(options) {
|
|
|
290
318
|
sound: resolve('sound'),
|
|
291
319
|
interruption_level: resolve('interruption_level'),
|
|
292
320
|
project: resolve('project'),
|
|
293
|
-
notify_criteria: resolve('notify_criteria'),
|
|
294
321
|
ask_notifications: resolve('ask_notifications'),
|
|
295
322
|
ask_grace_seconds: resolve('ask_grace_seconds'),
|
|
296
323
|
reply_window_seconds: resolve('reply_window_seconds'),
|
|
297
324
|
log_level: resolve('log_level'),
|
|
298
325
|
log_max_bytes: resolve('log_max_bytes'),
|
|
299
326
|
log_max_files: resolve('log_max_files'),
|
|
327
|
+
media_origins: resolve('media_origins'),
|
|
328
|
+
approve_origins: resolve('approve_origins'),
|
|
300
329
|
};
|
|
301
330
|
}
|
|
302
331
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/credentials.d.ts
CHANGED
|
@@ -34,8 +34,17 @@ export interface CredentialStoreOptions {
|
|
|
34
34
|
/** Which DPAPI operation a process invocation asked for. Args never carry secrets. */
|
|
35
35
|
export declare function windowsDpapiOperation(args: readonly string[]): 'protect' | 'unprotect' | null;
|
|
36
36
|
export declare const defaultProcessRunner: ProcessRunner;
|
|
37
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* macOS Keychain via the first-party `security` Security.framework client.
|
|
39
|
+
*
|
|
40
|
+
* `security add-generic-password -w <value>` puts the value in process argv.
|
|
41
|
+
* Interactive mode instead parses a command from stdin, so the credential
|
|
42
|
+
* crosses the helper boundary only through the pipe. `-X` keeps arbitrary
|
|
43
|
+
* serialized bytes out of the command parser's quoting rules.
|
|
44
|
+
*/
|
|
38
45
|
export declare class KeychainStore implements CredentialStore {
|
|
46
|
+
private readonly run;
|
|
47
|
+
constructor(options?: CredentialStoreOptions);
|
|
39
48
|
load(): MachineCredential | null;
|
|
40
49
|
save(credential: MachineCredential): void;
|
|
41
50
|
clear(): void;
|
package/dist/credentials.js
CHANGED
|
@@ -9,6 +9,7 @@ const DPAPI_FORMAT = 'notifai.dpapi.current-user.v1';
|
|
|
9
9
|
const DPAPI_ENTROPY = 'io.notifai.cli';
|
|
10
10
|
const DPAPI_TIMEOUT_MS = 15_000;
|
|
11
11
|
const DPAPI_FILE = 'credentials.dpapi';
|
|
12
|
+
const KEYCHAIN_TIMEOUT_MS = 15_000;
|
|
12
13
|
const PROTECT_SCRIPT = [
|
|
13
14
|
"$ErrorActionPreference = 'Stop'",
|
|
14
15
|
'Add-Type -AssemblyName System.Security',
|
|
@@ -64,8 +65,19 @@ export const defaultProcessRunner = {
|
|
|
64
65
|
return { status: result.status ?? 1, stdout };
|
|
65
66
|
},
|
|
66
67
|
};
|
|
67
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* macOS Keychain via the first-party `security` Security.framework client.
|
|
70
|
+
*
|
|
71
|
+
* `security add-generic-password -w <value>` puts the value in process argv.
|
|
72
|
+
* Interactive mode instead parses a command from stdin, so the credential
|
|
73
|
+
* crosses the helper boundary only through the pipe. `-X` keeps arbitrary
|
|
74
|
+
* serialized bytes out of the command parser's quoting rules.
|
|
75
|
+
*/
|
|
68
76
|
export class KeychainStore {
|
|
77
|
+
run;
|
|
78
|
+
constructor(options = {}) {
|
|
79
|
+
this.run = options.run ?? defaultProcessRunner;
|
|
80
|
+
}
|
|
69
81
|
load() {
|
|
70
82
|
try {
|
|
71
83
|
const raw = execFileSync('security', ['find-generic-password', '-s', SERVICE, '-a', 'machine', '-w'], { stdio: ['ignore', 'pipe', 'ignore'] })
|
|
@@ -78,16 +90,17 @@ export class KeychainStore {
|
|
|
78
90
|
}
|
|
79
91
|
}
|
|
80
92
|
save(credential) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
'
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
93
|
+
const serialized = Buffer.from(JSON.stringify(serializeCredential(credential)), 'utf8');
|
|
94
|
+
const command = Buffer.from(`add-generic-password -U -s ${SERVICE} -a machine -X ${serialized.toString('hex')}\n`, 'ascii');
|
|
95
|
+
const result = this.run.run({
|
|
96
|
+
command: 'security',
|
|
97
|
+
args: ['-q', '-i'],
|
|
98
|
+
input: command,
|
|
99
|
+
timeoutMs: KEYCHAIN_TIMEOUT_MS,
|
|
100
|
+
});
|
|
101
|
+
if (result.status !== 0) {
|
|
102
|
+
throw new Error('macOS Keychain credential save failed');
|
|
103
|
+
}
|
|
91
104
|
}
|
|
92
105
|
clear() {
|
|
93
106
|
try {
|
|
@@ -317,7 +330,7 @@ export function defaultCredentialStore(env = process.env, options = {}) {
|
|
|
317
330
|
? options.keychainAvailable
|
|
318
331
|
: platform === 'darwin' && keychainProbeSucceeds();
|
|
319
332
|
if (keychain)
|
|
320
|
-
return new KeychainStore();
|
|
333
|
+
return new KeychainStore(options);
|
|
321
334
|
return new FileStore(env, { platform });
|
|
322
335
|
}
|
|
323
336
|
//# sourceMappingURL=credentials.js.map
|