@raidiant/notifai 0.1.7 → 0.2.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/README.md +10 -3
- package/dist/atomic-file.d.ts +12 -0
- package/dist/atomic-file.js +55 -0
- package/dist/atomic-file.js.map +1 -0
- package/dist/client.d.ts +2 -1
- package/dist/client.js +1 -0
- package/dist/client.js.map +1 -1
- package/dist/commands.d.ts +46 -15
- package/dist/commands.js +760 -248
- package/dist/commands.js.map +1 -1
- package/dist/hooks.d.ts +27 -12
- package/dist/hooks.js +519 -155
- package/dist/hooks.js.map +1 -1
- package/dist/install-hooks.d.ts +8 -4
- package/dist/install-hooks.js +45 -64
- package/dist/install-hooks.js.map +1 -1
- package/dist/main.js +80 -36
- package/dist/main.js.map +1 -1
- package/dist/native-skills.d.ts +31 -0
- package/dist/native-skills.js +117 -0
- package/dist/native-skills.js.map +1 -0
- package/dist/opencode-plugin.d.ts +1 -0
- package/dist/opencode-plugin.js +37 -4
- package/dist/opencode-plugin.js.map +1 -1
- package/dist/send.d.ts +19 -29
- package/dist/send.js +62 -57
- package/dist/send.js.map +1 -1
- package/package.json +5 -5
- package/src/atomic-file.ts +73 -0
- package/src/client.ts +3 -0
- package/src/commands.test.ts +1036 -72
- package/src/commands.ts +923 -261
- package/src/config.test.ts +68 -6
- package/src/hooks.test.ts +500 -9
- package/src/hooks.ts +624 -173
- package/src/install-hooks.test.ts +44 -16
- package/src/install-hooks.ts +50 -68
- package/src/main.ts +95 -41
- package/src/native-skills.ts +177 -0
- package/src/opencode-plugin.ts +38 -5
- package/src/send.ts +82 -60
- package/src/skill.test.ts +43 -0
package/dist/main.js
CHANGED
|
@@ -3,13 +3,16 @@ import { readFileSync } from 'node:fs';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
5
|
import { Command } from 'commander';
|
|
6
|
-
import { askCommand, authStatusCommand, capabilitiesCommand, closeCommand, configSetCommand, configShowCommand, devicesCommand, doctorCommand, hookRunCommand, hooksInstallCommand, hooksUninstallCommand, initCommand, loginCommand, logoutCommand, realIo, repliesCommand, sendCommand, statusCommand, } from './commands.js';
|
|
6
|
+
import { askCommand, accessStatusCommand, authStatusCommand, capabilitiesCommand, closeCommand, configSetCommand, configShowCommand, devicesCommand, doctorCommand, hookRunCommand, hooksInstallCommand, hooksUninstallCommand, initCommand, loginCommand, logoutCommand, realIo, repliesCommand, sendCommand, statusCommand, } from './commands.js';
|
|
7
7
|
import { defaultCredentialStore } from './credentials.js';
|
|
8
|
+
import { HARNESSES } from './install-hooks.js';
|
|
9
|
+
import { nativeSkills } from './native-skills.js';
|
|
8
10
|
const deps = {
|
|
9
11
|
io: realIo(),
|
|
10
12
|
store: defaultCredentialStore(),
|
|
11
13
|
env: process.env,
|
|
12
14
|
cwd: process.cwd(),
|
|
15
|
+
nativeSkills,
|
|
13
16
|
};
|
|
14
17
|
/**
|
|
15
18
|
* Harness hooks deliver their event payload on stdin. Bounded on both time and
|
|
@@ -67,11 +70,32 @@ function version() {
|
|
|
67
70
|
const program = new Command('notifai')
|
|
68
71
|
.description('Send native device notifications from agents and local programs')
|
|
69
72
|
.version(version());
|
|
73
|
+
// Setup leads: `init` is the single entry command for first-run friendliness.
|
|
74
|
+
program
|
|
75
|
+
.command('init')
|
|
76
|
+
.description('Set up Notifai here, idempotently: sign-in, project id, hooks, device readiness, live receipt proof. ' +
|
|
77
|
+
'Interactive at a human terminal; never prompts otherwise (agents: pass flags)')
|
|
78
|
+
.option('--project-id <id>', 'project identifier slug (default: derived from the directory name)')
|
|
79
|
+
.option('--skills', 'install/update the agent skill from its pinned public release')
|
|
80
|
+
.option('--no-skills', 'suppress the optional agent-skill status line')
|
|
81
|
+
.option('--skills-scope <scope>', 'unattended skill scope: project or global')
|
|
82
|
+
.option('--hooks', 'install harness hooks for registered-question routing')
|
|
83
|
+
.option('--no-hooks', 'skip the hooks without being asked')
|
|
84
|
+
.action(async (opts) => {
|
|
85
|
+
process.exit(await initCommand(deps, opts));
|
|
86
|
+
});
|
|
87
|
+
program
|
|
88
|
+
.command('doctor')
|
|
89
|
+
.description('Audit config, credential, server, contract, device, hook, and saved receipt proof; exits nonzero when any line is FAIL (no live send)')
|
|
90
|
+
.option('--json', 'machine-readable output')
|
|
91
|
+
.action(async (opts) => {
|
|
92
|
+
process.exit(await doctorCommand(deps, opts));
|
|
93
|
+
});
|
|
70
94
|
program
|
|
71
95
|
.command('login')
|
|
72
|
-
.description('Pair this machine with your
|
|
96
|
+
.description('Pair this machine with your Notifai account via browser approval')
|
|
73
97
|
.option('--name <name>', 'machine name shown in the dashboard (default: hostname)')
|
|
74
|
-
.option('--base-url <url>', '
|
|
98
|
+
.option('--base-url <url>', 'Notifai server URL')
|
|
75
99
|
.option('--no-open', 'do not open the approval page in a browser')
|
|
76
100
|
.action(async (opts) => {
|
|
77
101
|
process.exit(await loginCommand(deps, opts));
|
|
@@ -90,6 +114,13 @@ auth
|
|
|
90
114
|
.action((opts) => {
|
|
91
115
|
process.exit(authStatusCommand(deps, opts));
|
|
92
116
|
});
|
|
117
|
+
auth
|
|
118
|
+
.command('access')
|
|
119
|
+
.description('Show the account plan and access decision')
|
|
120
|
+
.option('--json', 'machine-readable output')
|
|
121
|
+
.action(async (opts) => {
|
|
122
|
+
process.exit(await accessStatusCommand(deps, opts));
|
|
123
|
+
});
|
|
93
124
|
program
|
|
94
125
|
.command('devices')
|
|
95
126
|
.description('List registered devices and their delivery readiness')
|
|
@@ -105,7 +136,7 @@ program
|
|
|
105
136
|
.action(async (opts) => {
|
|
106
137
|
process.exit(await capabilitiesCommand(deps, opts));
|
|
107
138
|
});
|
|
108
|
-
program
|
|
139
|
+
const send = program
|
|
109
140
|
.command('send')
|
|
110
141
|
.description('Send a notification')
|
|
111
142
|
.requiredOption('--title <title>', 'notification title')
|
|
@@ -121,26 +152,24 @@ program
|
|
|
121
152
|
.option('--all', 'target all routable devices (overrides configured devices)')
|
|
122
153
|
.option('--ttl <seconds>', 'delivery window in seconds', (v) => Number(v))
|
|
123
154
|
.option('--collapse-key <key>', 'replace earlier notifications with the same key')
|
|
124
|
-
.option('--platform <platform>', '
|
|
155
|
+
.option('--platform <platform>', 'limit optional fields to ios or macos (default: both)')
|
|
125
156
|
.option('--sound <sound>', 'default | done | attention | alert | none')
|
|
126
|
-
.option('--badge <n>', 'app badge count', (v) => Number(v))
|
|
127
157
|
.option('--thread-id <id>', 'group related notifications')
|
|
128
158
|
.option('--level <level>', 'interruption level: passive | active | time_sensitive')
|
|
129
|
-
.option('--relevance <score>', '0..1 relevance score', (v) => Number(v))
|
|
130
|
-
.option('--target-content-id <id>')
|
|
131
159
|
.option('--data <key=value>', 'custom data (repeatable)', (v, all) => [...all, v], [])
|
|
132
160
|
.option('--image <path|url|media_id>', 'upload or attach an image')
|
|
133
161
|
.option('--reply', 'enable the inline reply action and block for the answer')
|
|
134
162
|
.option('--reply-timeout <seconds>', 'how long to wait for a reply (default: 900)', (v) => Number(v))
|
|
135
|
-
.option('--reply-window <seconds>', 'how long the server accepts a reply (default:
|
|
136
|
-
.option('--reply-choice <label>', 'with --reply, ask a closed question
|
|
163
|
+
.option('--reply-window <seconds>', 'how long the server accepts a reply (default: 3600)', (v) => Number(v))
|
|
164
|
+
.option('--reply-choice <label>', 'with --reply, ask a closed question; repeat the flag once per answer (2-6)', (v, all) => [...all, v], [])
|
|
165
|
+
.option('--reply-multi', 'with --reply-choice, several answers may be selected')
|
|
137
166
|
// Kept registered, and always a usage error with --reply, so the caller gets
|
|
138
167
|
// a message pointing at `ask` instead of "unknown option".
|
|
139
168
|
.option('--no-block', 'rejected with --reply; use `notifai ask` to ask and end the turn')
|
|
140
169
|
.option('--wait <seconds>', 'how long to wait for provider outcomes', (v) => Number(v))
|
|
141
170
|
.option('--no-wait', 'return immediately after acceptance')
|
|
142
171
|
.option('--idempotency-key <key>', 'safe-retry key (default: random)')
|
|
143
|
-
.option('--base-url <url>', '
|
|
172
|
+
.option('--base-url <url>', 'Notifai server URL')
|
|
144
173
|
.option('--json', 'print the full submission receipt as JSON')
|
|
145
174
|
.action(async (opts) => {
|
|
146
175
|
// commander maps --no-wait onto the same "wait" flag; disentangle.
|
|
@@ -177,9 +206,11 @@ program
|
|
|
177
206
|
flags.wait = wait;
|
|
178
207
|
process.exit(await sendCommand(deps, flags));
|
|
179
208
|
});
|
|
209
|
+
send.addHelpText('after', `\nKind profiles (used unless --sound, --level, or saved user config overrides them):\n update sound none level passive\n done sound done level passive\n question sound attention level active (--reply)\n`);
|
|
180
210
|
program
|
|
181
|
-
.command('replies
|
|
211
|
+
.command('replies [request_id]')
|
|
182
212
|
.description('Retrieve replies for a notification request')
|
|
213
|
+
.option('--pending', 'use the pushed question pending for this project session')
|
|
183
214
|
.option('--wait <seconds>', 'how long to wait for a reply', (v) => Number(v))
|
|
184
215
|
.option('--after <seq>', 'return replies after this sequence number', (v) => Number(v))
|
|
185
216
|
.option('--json', 'machine-readable output')
|
|
@@ -194,15 +225,46 @@ program
|
|
|
194
225
|
process.exit(await statusCommand(deps, requestId, opts));
|
|
195
226
|
});
|
|
196
227
|
program
|
|
197
|
-
.command('ask
|
|
228
|
+
.command('ask [question]')
|
|
198
229
|
.description('Register a question for the turn-end hook to route under your presence settings')
|
|
199
|
-
.option('--choice <label>', 'answers to offer instead of free text
|
|
230
|
+
.option('--choice <label>', 'answers to offer instead of free text; repeat the flag once per answer (2-6)', (v, all) => [...all, v], [])
|
|
231
|
+
.option('--multi', 'with --choice, several answers may be selected')
|
|
232
|
+
.option('--detail <markdown>', 'long-form context shown only in the app, never on the banner')
|
|
233
|
+
.option('--detail-file <path>', 'read --detail from a file (use - for stdin)')
|
|
234
|
+
.option('--form <path>', 'ask several questions as one form; JSON file (use - for stdin)')
|
|
200
235
|
.option('--session <id>', 'session id (default: the session working in this directory, else $NOTIFAI_SESSION)')
|
|
201
236
|
.action((question, opts) => {
|
|
237
|
+
let detail = opts.detail;
|
|
238
|
+
if (typeof opts.detailFile === 'string') {
|
|
239
|
+
if (detail !== undefined) {
|
|
240
|
+
deps.io.err('Pass either --detail or --detail-file, not both.');
|
|
241
|
+
process.exit(2);
|
|
242
|
+
}
|
|
243
|
+
try {
|
|
244
|
+
detail = readFileSync(opts.detailFile === '-' ? 0 : opts.detailFile, 'utf8');
|
|
245
|
+
}
|
|
246
|
+
catch (err) {
|
|
247
|
+
deps.io.err(`Could not read ${opts.detailFile}: ${String(err)}`);
|
|
248
|
+
process.exit(2);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
let form;
|
|
252
|
+
if (typeof opts.form === 'string') {
|
|
253
|
+
try {
|
|
254
|
+
form = readFileSync(opts.form === '-' ? 0 : opts.form, 'utf8');
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
deps.io.err(`Could not read ${opts.form}: ${String(err)}`);
|
|
258
|
+
process.exit(2);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
202
261
|
// commander's collector defaults to []; an empty list means "not asked".
|
|
203
262
|
const flags = {
|
|
204
263
|
...(opts.session !== undefined ? { session: opts.session } : {}),
|
|
205
264
|
...(opts.choice?.length ? { choice: opts.choice } : {}),
|
|
265
|
+
...(opts.multi ? { multi: true } : {}),
|
|
266
|
+
...(detail !== undefined ? { detail } : {}),
|
|
267
|
+
...(form !== undefined ? { form } : {}),
|
|
206
268
|
};
|
|
207
269
|
process.exit(askCommand(deps, question, flags));
|
|
208
270
|
});
|
|
@@ -216,18 +278,19 @@ program
|
|
|
216
278
|
.command('hook <event>')
|
|
217
279
|
.description('Internal: run a harness hook (reads hook JSON on stdin)')
|
|
218
280
|
// Inert, and the point of it is that it is inert: the installed command line
|
|
219
|
-
// carries a marker that says "
|
|
281
|
+
// carries a marker that says "Notifai wrote this" independently of which
|
|
220
282
|
// checkout wrote it.
|
|
221
283
|
.option('--owner <name>', 'internal ownership marker')
|
|
222
284
|
.option('--harness <name>', 'internal harness output adapter')
|
|
223
285
|
.action(async (event, opts) => {
|
|
224
|
-
|
|
286
|
+
const harness = HARNESSES.find((candidate) => candidate === opts.harness);
|
|
287
|
+
process.exit(await hookRunCommand(deps, event, readStdin, harness));
|
|
225
288
|
});
|
|
226
289
|
const hooks = program.command('hooks').description('Install harness hooks for registered-question routing');
|
|
227
290
|
hooks
|
|
228
291
|
.command('install')
|
|
229
292
|
.description('Wire this harness to route registered questions to your devices')
|
|
230
|
-
.option('--harness <name>', 'claude-code | codex | cursor | opencode (default: detected; OpenCode
|
|
293
|
+
.option('--harness <name>', 'claude-code | codex | cursor | opencode (default: detected; OpenCode delivers answers on the next prompt)')
|
|
231
294
|
.option('--global', 'install for every project instead of just this one')
|
|
232
295
|
.action((opts) => {
|
|
233
296
|
process.exit(hooksInstallCommand(deps, opts));
|
|
@@ -259,24 +322,5 @@ config
|
|
|
259
322
|
.action(async (key, value, opts) => {
|
|
260
323
|
process.exit(await configSetCommand(deps, key, value, opts));
|
|
261
324
|
});
|
|
262
|
-
program
|
|
263
|
-
.command('init')
|
|
264
|
-
.description('Set up NotifAI here, idempotently: sign-in, project id, hooks, device readiness, live receipt proof. ' +
|
|
265
|
-
'Interactive at a human terminal; never prompts otherwise (agents: pass flags)')
|
|
266
|
-
.option('--project-id <id>', 'project identifier slug (default: derived from the directory name)')
|
|
267
|
-
.option('--skills', 'install/update the agent skill from its pinned public release')
|
|
268
|
-
.option('--no-skills', 'suppress the optional agent-skill status line')
|
|
269
|
-
.option('--hooks', 'install harness hooks for registered-question routing')
|
|
270
|
-
.option('--no-hooks', 'skip the hooks without being asked')
|
|
271
|
-
.action(async (opts) => {
|
|
272
|
-
process.exit(await initCommand(deps, opts));
|
|
273
|
-
});
|
|
274
|
-
program
|
|
275
|
-
.command('doctor')
|
|
276
|
-
.description('Audit config, credential, server, contract, device, hook, and saved receipt proof (no live send)')
|
|
277
|
-
.option('--json', 'machine-readable output')
|
|
278
|
-
.action(async (opts) => {
|
|
279
|
-
process.exit(await doctorCommand(deps, opts));
|
|
280
|
-
});
|
|
281
325
|
await program.parseAsync(process.argv);
|
|
282
326
|
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,MAAM,EACN,cAAc,EACd,WAAW,EACX,aAAa,GAEd,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAA;AAElE,MAAM,IAAI,GAAgB;IACxB,EAAE,EAAE,MAAM,EAAE;IACZ,KAAK,EAAE,sBAAsB,EAAE;IAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAClB,YAAY;CACb,CAAA;AAED;;;;GAIG;AACH,KAAK,UAAU,SAAS,CAAC,SAAS,GAAG,IAAI,EAAE,QAAQ,GAAG,SAAS;IAC7D,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,MAAM,GAAG,GAAS,EAAE;YACxB,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;YACvB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACjD,CAAC,CAAA;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAC3C,KAAK,CAAC,KAAK,EAAE,EAAE,CAAA;QACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAA;YACrB,IAAI,KAAK,GAAG,QAAQ;gBAAE,OAAO,MAAM,EAAE,CAAA;YACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC/B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,OAAO;IACd,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAC9F,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QAClE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAQ,MAAgC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnH,OAAQ,MAA8B,CAAC,OAAO,CAAA;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACnC,WAAW,CAAC,iEAAiE,CAAC;KAC9E,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;AAErB,8EAA8E;AAC9E,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CACV,uGAAuG;IACrG,+EAA+E,CAClF;KACA,MAAM,CAAC,mBAAmB,EAAE,oEAAoE,CAAC;KACjG,MAAM,CAAC,UAAU,EAAE,+DAA+D,CAAC;KACnF,MAAM,CAAC,aAAa,EAAE,+CAA+C,CAAC;KACtE,MAAM,CAAC,wBAAwB,EAAE,2CAA2C,CAAC;KAC7E,MAAM,CAAC,SAAS,EAAE,uDAAuD,CAAC;KAC1E,MAAM,CAAC,YAAY,EAAE,oCAAoC,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,IAAyF,EAAE,EAAE;IAC1G,OAAO,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC7C,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uIAAuI,CAAC;KACpJ,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IACzC,OAAO,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,eAAe,EAAE,yDAAyD,CAAC;KAClF,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;KAChD,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,IAAyD,EAAE,EAAE;IAC1E,OAAO,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA;AAEJ,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAA;AAC1E,IAAI;KACD,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;KAC3C,MAAM,CAAC,CAAC,IAAwB,EAAE,EAAE;IACnC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC7C,CAAC,CAAC,CAAA;AACJ,IAAI;KACD,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IACzC,OAAO,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AACrD,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IACzC,OAAO,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAChD,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,uBAAuB,EAAE,qCAAqC,CAAC;KACtE,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,IAA6C,EAAE,EAAE;IAC9D,OAAO,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AACrD,CAAC,CAAC,CAAA;AAEJ,MAAM,IAAI,GAAG,OAAO;KACjB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qBAAqB,CAAC;KAClC,cAAc,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;KACvD,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC;KACpD,MAAM,CAAC,uBAAuB,CAAC;KAC/B,MAAM,CAAC,qBAAqB,EAAE,+DAA+D,CAAC;KAC9F,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,CAAC;KAC7E,MAAM,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;KAChE,MAAM,CAAC,eAAe,EAAE,qEAAqE,CAAC;KAC9F,MAAM,CAAC,gBAAgB,EAAE,qDAAqD,CAAC;KAC/E,MAAM,CAAC,gBAAgB,EAAE,yEAAyE,CAAC;KACnG,MAAM,CAAC,eAAe,EAAE,iCAAiC,EAAE,CAAC,CAAS,EAAE,GAAa,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;KACzG,MAAM,CAAC,OAAO,EAAE,4DAA4D,CAAC;KAC7E,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACjF,MAAM,CAAC,sBAAsB,EAAE,iDAAiD,CAAC;KACjF,MAAM,CAAC,uBAAuB,EAAE,uDAAuD,CAAC;KACxF,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;KACtE,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;KACzD,MAAM,CAAC,iBAAiB,EAAE,uDAAuD,CAAC;KAClF,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,CAAC,CAAS,EAAE,GAAa,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;KACvG,MAAM,CAAC,6BAA6B,EAAE,2BAA2B,CAAC;KAClE,MAAM,CAAC,SAAS,EAAE,yDAAyD,CAAC;KAC5E,MAAM,CAAC,2BAA2B,EAAE,6CAA6C,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC5G,MAAM,CAAC,0BAA0B,EAAE,qDAAqD,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACnH,MAAM,CACL,wBAAwB,EACxB,4EAA4E,EAC5E,CAAC,CAAS,EAAE,GAAa,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAC9C;KACA,MAAM,CAAC,eAAe,EAAE,sDAAsD,CAAC;IAChF,6EAA6E;IAC7E,2DAA2D;KAC1D,MAAM,CAAC,YAAY,EAAE,kEAAkE,CAAC;KACxF,MAAM,CAAC,kBAAkB,EAAE,wCAAwC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC9F,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;KAC1D,MAAM,CAAC,yBAAyB,EAAE,kCAAkC,CAAC;KACrE,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;KAChD,MAAM,CAAC,QAAQ,EAAE,2CAA2C,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,IAA6B,EAAE,EAAE;IAC9C,mEAAmE;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,CAAA;IACrC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACxE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,CAAA;IACvC,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,CAAA;IAC5B,+CAA+C;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnF,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;IACxB,0EAA0E;IAC1E,6CAA6C;IAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAA;IAC7B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,CAAC;YACH,QAAQ,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAChF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,UAAU,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAuC,CAAA;IACnF,IAAI,IAAI,KAAK,SAAS;QAAE,OAAQ,KAA2B,CAAC,IAAI,CAAA;;QAC3D,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEJ,IAAI,CAAC,WAAW,CACd,OAAO,EACP,qOAAqO,CACtO,CAAA;AAED,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,WAAW,EAAE,0DAA0D,CAAC;KAC/E,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpF,MAAM,CAAC,eAAe,EAAE,2CAA2C,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC9F,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,IAA0E,EAAE,EAAE;IAC1H,OAAO,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAwB,EAAE,EAAE;IAC5D,OAAO,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAA;AAC1D,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,iFAAiF,CAAC;KAC9F,MAAM,CACL,kBAAkB,EAClB,8EAA8E,EAC9E,CAAC,CAAS,EAAE,GAAa,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAC9C;KACA,MAAM,CAAC,SAAS,EAAE,gDAAgD,CAAC;KACnE,MAAM,CAAC,qBAAqB,EAAE,8DAA8D,CAAC;KAC7F,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,CAAC;KAC7E,MAAM,CAAC,eAAe,EAAE,gEAAgE,CAAC;KACzF,MAAM,CAAC,gBAAgB,EAAE,oFAAoF,CAAC;KAC9G,MAAM,CAAC,CAAC,QAA4B,EAAE,IAOtC,EAAE,EAAE;IACH,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IACxB,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IACD,IAAI,IAAwB,CAAA;IAC5B,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IACD,yEAAyE;IACzE,MAAM,KAAK,GAAqC;QAC9C,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AACjD,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;IAClC,OAAO,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;AACnD,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,yDAAyD,CAAC;IACvE,6EAA6E;IAC7E,yEAAyE;IACzE,qBAAqB;KACpB,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;KACrD,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAA0B,EAAE,EAAE;IAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA;IACzE,OAAO,CAAC,IAAI,CACV,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CACtD,CAAA;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,uDAAuD,CAAC,CAAA;AAC3G,KAAK;KACF,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CACL,kBAAkB,EAClB,2GAA2G,CAC5G;KACA,MAAM,CAAC,UAAU,EAAE,oDAAoD,CAAC;KACxE,MAAM,CAAC,CAAC,IAA4C,EAAE,EAAE;IACvD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAC,CAAA;AACJ,KAAK;KACF,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,kBAAkB,EAAE,6DAA6D,CAAC;KACzF,MAAM,CAAC,UAAU,EAAE,iCAAiC,CAAC;KACrD,MAAM,CAAC,CAAC,IAA4C,EAAE,EAAE;IACvD,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AACjD,CAAC,CAAC,CAAA;AAEJ,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAA;AACpF,MAAM;KACH,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACvD,MAAM,CAAC,QAAQ,EAAE,yBAAyB,CAAC;KAC3C,MAAM,CAAC,CAAC,IAA2C,EAAE,EAAE;IACtD,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC7C,CAAC,CAAC,CAAA;AACJ,MAAM;KACH,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CACV,iHAAiH,CAClH;KACA,MAAM,CAAC,WAAW,EAAE,kDAAkD,CAAC;KACvE,MAAM,CAAC,SAAS,EAAE,mEAAmE,CAAC;KACtF,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;KACrD,MAAM,CAAC,OAAO,EAAE,4BAA4B,CAAC;KAC7C,MAAM,CACL,KAAK,EACH,GAAW,EACX,KAAa,EACb,IAA6E,EAC7E,EAAE;IACF,OAAO,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AAC9D,CAAC,CACF,CAAA;AAEH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** The two scopes offered by the skills installer. */
|
|
2
|
+
export type SkillScope = 'project' | 'global';
|
|
3
|
+
/** The installer-managed evidence needed by Notifai readiness. */
|
|
4
|
+
export interface NativeSkill {
|
|
5
|
+
name: string;
|
|
6
|
+
scope: SkillScope;
|
|
7
|
+
path: string;
|
|
8
|
+
source: string | null;
|
|
9
|
+
sourceType: string | null;
|
|
10
|
+
sourceUrl: string | null;
|
|
11
|
+
ref: string | null;
|
|
12
|
+
}
|
|
13
|
+
export interface SkillsListResult {
|
|
14
|
+
skills: NativeSkill[];
|
|
15
|
+
error?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface SkillsAddOptions {
|
|
18
|
+
source: string;
|
|
19
|
+
skill: string;
|
|
20
|
+
scope?: SkillScope;
|
|
21
|
+
cwd: string;
|
|
22
|
+
env: NodeJS.ProcessEnv;
|
|
23
|
+
}
|
|
24
|
+
export interface NativeSkills {
|
|
25
|
+
/** Launch the native interactive `npx skills add` flow. */
|
|
26
|
+
add(options: SkillsAddOptions): Promise<number>;
|
|
27
|
+
/** Ask the native installer for its managed install inventory. */
|
|
28
|
+
list(scope: SkillScope, cwd: string, env: NodeJS.ProcessEnv): Promise<SkillsListResult>;
|
|
29
|
+
}
|
|
30
|
+
/** The only process/filesystem adapter Notifai needs for the external installer. */
|
|
31
|
+
export declare const nativeSkills: NativeSkills;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
function skillLockPath(scope, cwd, env) {
|
|
6
|
+
if (scope === 'project')
|
|
7
|
+
return path.join(cwd, 'skills-lock.json');
|
|
8
|
+
const stateHome = env['XDG_STATE_HOME'];
|
|
9
|
+
const home = env['HOME'] ?? env['USERPROFILE'] ?? os.homedir();
|
|
10
|
+
return stateHome !== undefined && stateHome !== ''
|
|
11
|
+
? path.join(stateHome, 'skills', '.skill-lock.json')
|
|
12
|
+
: path.join(home, '.agents', '.skill-lock.json');
|
|
13
|
+
}
|
|
14
|
+
function readLock(scope, cwd, env) {
|
|
15
|
+
const file = skillLockPath(scope, cwd, env);
|
|
16
|
+
if (!existsSync(file))
|
|
17
|
+
return {};
|
|
18
|
+
try {
|
|
19
|
+
const parsed = JSON.parse(readFileSync(file, 'utf8'));
|
|
20
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return {};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function lockEntryFor(lock, name) {
|
|
27
|
+
const direct = lock.skills?.[name];
|
|
28
|
+
if (direct)
|
|
29
|
+
return direct;
|
|
30
|
+
const normalized = name.toLowerCase().replace(/[\s_]+/g, '-');
|
|
31
|
+
const key = Object.keys(lock.skills ?? {}).find((candidate) => candidate.toLowerCase().replace(/[\s_]+/g, '-') === normalized);
|
|
32
|
+
return key === undefined ? undefined : lock.skills?.[key];
|
|
33
|
+
}
|
|
34
|
+
function jsonArray(stdout) {
|
|
35
|
+
const start = stdout.indexOf('[');
|
|
36
|
+
const end = stdout.lastIndexOf(']');
|
|
37
|
+
if (start < 0 || end < start)
|
|
38
|
+
return null;
|
|
39
|
+
try {
|
|
40
|
+
const parsed = JSON.parse(stdout.slice(start, end + 1));
|
|
41
|
+
return Array.isArray(parsed) ? parsed : null;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function managedSkills(stdout, scope, cwd, env) {
|
|
48
|
+
const entries = jsonArray(stdout);
|
|
49
|
+
if (entries === null)
|
|
50
|
+
return null;
|
|
51
|
+
const lock = readLock(scope, cwd, env);
|
|
52
|
+
return entries.flatMap((entry) => {
|
|
53
|
+
if (entry === null || typeof entry !== 'object')
|
|
54
|
+
return [];
|
|
55
|
+
const value = entry;
|
|
56
|
+
if (typeof value.name !== 'string' ||
|
|
57
|
+
typeof value.path !== 'string' ||
|
|
58
|
+
value.scope !== scope) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
const lockEntry = lockEntryFor(lock, value.name);
|
|
62
|
+
return [
|
|
63
|
+
{
|
|
64
|
+
name: value.name,
|
|
65
|
+
scope,
|
|
66
|
+
path: value.path,
|
|
67
|
+
source: typeof value.source === 'string' ? value.source : null,
|
|
68
|
+
sourceType: typeof value.sourceType === 'string' ? value.sourceType : null,
|
|
69
|
+
sourceUrl: typeof value.sourceUrl === 'string' ? value.sourceUrl : null,
|
|
70
|
+
ref: typeof lockEntry?.ref === 'string' ? lockEntry.ref : null,
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function run(args, options) {
|
|
76
|
+
return new Promise((resolve) => {
|
|
77
|
+
const child = spawn('npx', args, {
|
|
78
|
+
cwd: options.cwd,
|
|
79
|
+
env: options.env,
|
|
80
|
+
stdio: options.stdio === 'inherit' ? 'inherit' : ['ignore', 'pipe', 'ignore'],
|
|
81
|
+
});
|
|
82
|
+
if (options.stdio === 'capture') {
|
|
83
|
+
let stdout = '';
|
|
84
|
+
child.stdout?.on('data', (chunk) => {
|
|
85
|
+
stdout += chunk.toString();
|
|
86
|
+
});
|
|
87
|
+
child.on('error', () => resolve({ code: 1, stdout }));
|
|
88
|
+
child.on('exit', (code) => resolve({ code: code ?? 1, stdout }));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
child.on('error', () => resolve({ code: 1, stdout: '' }));
|
|
92
|
+
child.on('exit', (code) => resolve({ code: code ?? 1, stdout: '' }));
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/** The only process/filesystem adapter Notifai needs for the external installer. */
|
|
96
|
+
export const nativeSkills = {
|
|
97
|
+
async add(options) {
|
|
98
|
+
const args = ['-y', 'skills', 'add', options.source, '--skill', options.skill];
|
|
99
|
+
if (options.scope === 'global')
|
|
100
|
+
args.push('--global');
|
|
101
|
+
// An explicit scope is the unattended contract. Native `--yes` keeps all
|
|
102
|
+
// remaining installer prompts non-interactive after the scope is chosen.
|
|
103
|
+
if (options.scope !== undefined)
|
|
104
|
+
args.push('--yes');
|
|
105
|
+
return (await run(args, { cwd: options.cwd, env: options.env, stdio: 'inherit' })).code;
|
|
106
|
+
},
|
|
107
|
+
async list(scope, cwd, env) {
|
|
108
|
+
const result = await run(['-y', 'skills', 'list', '--json', ...(scope === 'global' ? ['--global'] : [])], { cwd, env, stdio: 'capture' });
|
|
109
|
+
if (result.code !== 0)
|
|
110
|
+
return { skills: [], error: `npx skills list exited with code ${result.code}` };
|
|
111
|
+
const skills = managedSkills(result.stdout, scope, cwd, env);
|
|
112
|
+
return skills === null
|
|
113
|
+
? { skills: [], error: 'npx skills list returned invalid JSON' }
|
|
114
|
+
: { skills };
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=native-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-skills.js","sourceRoot":"","sources":["../src/native-skills.ts"],"names":[],"mappings":"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"}
|
package/dist/opencode-plugin.js
CHANGED
|
@@ -26,7 +26,7 @@ export const OPENCODE_PLUGIN_MARKER = '// notifai managed opencode plugin';
|
|
|
26
26
|
/** Filename we own inside whichever plugins directory is being written. */
|
|
27
27
|
export const OPENCODE_PLUGIN_FILENAME = 'notifai.js';
|
|
28
28
|
/** Bump when an installed generated file must be rewritten to remain functional. */
|
|
29
|
-
const OPENCODE_ADAPTER_VERSION =
|
|
29
|
+
const OPENCODE_ADAPTER_VERSION = 4;
|
|
30
30
|
export function opencodePluginDir(global, cwd, env = process.env) {
|
|
31
31
|
return global
|
|
32
32
|
? path.join(configHome(env, 'OPENCODE_CONFIG_DIR', '.config/opencode'), 'plugins')
|
|
@@ -66,7 +66,7 @@ function runHook(event, envelope) {
|
|
|
66
66
|
return new Promise((resolve) => {
|
|
67
67
|
let child
|
|
68
68
|
try {
|
|
69
|
-
child = spawn(EXEC, [SCRIPT, "hook", event, "--owner", "notifai"], {
|
|
69
|
+
child = spawn(EXEC, [SCRIPT, "hook", event, "--owner", "notifai", "--harness", "opencode"], {
|
|
70
70
|
env: process.env,
|
|
71
71
|
shell: false,
|
|
72
72
|
stdio: ["pipe", "pipe", "pipe"],
|
|
@@ -106,20 +106,51 @@ function runHook(event, envelope) {
|
|
|
106
106
|
})
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
function additionalContext(stdout) {
|
|
110
|
+
if (typeof stdout !== "string" || stdout.trim() === "") return null
|
|
111
|
+
try {
|
|
112
|
+
const parsed = JSON.parse(stdout)
|
|
113
|
+
const context = parsed?.hookSpecificOutput?.additionalContext
|
|
114
|
+
return typeof context === "string" && context.length > 0 ? context : null
|
|
115
|
+
} catch {
|
|
116
|
+
return null
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
109
120
|
export const NotifAIPlugin = async ({ directory }) => {
|
|
110
121
|
const cwd = typeof directory === "string" && directory.length > 0 ? directory : process.cwd()
|
|
111
122
|
|
|
112
123
|
return {
|
|
124
|
+
/** Exact active-harness identity for shell commands such as \`notifai ask\`. */
|
|
125
|
+
"shell.env": async (input, output) => {
|
|
126
|
+
output.env.NOTIFAI_ACTIVE_HARNESS = "opencode"
|
|
127
|
+
const sessionID = input?.sessionID
|
|
128
|
+
if (typeof sessionID === "string" && sessionID.length > 0) {
|
|
129
|
+
output.env.NOTIFAI_ACTIVE_SESSION_ID = sessionID
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
|
|
113
133
|
/**
|
|
114
134
|
* Presence. The user typing is the signal every harness shares, and it is
|
|
115
135
|
* also what publishes the project -> session pointer \`notifai ask\` reads.
|
|
116
136
|
*/
|
|
117
|
-
"chat.message": async (input) => {
|
|
118
|
-
await runHook("user-prompt-submit", {
|
|
137
|
+
"chat.message": async (input, output) => {
|
|
138
|
+
const stdout = await runHook("user-prompt-submit", {
|
|
119
139
|
session_id: input?.sessionID ?? input?.info?.sessionID,
|
|
120
140
|
cwd,
|
|
121
141
|
hook_event_name: "UserPromptSubmit",
|
|
122
142
|
})
|
|
143
|
+
const context = additionalContext(stdout)
|
|
144
|
+
if (context !== null) {
|
|
145
|
+
output.parts.push({
|
|
146
|
+
id: "prt_notifai_" + Date.now(),
|
|
147
|
+
sessionID: input.sessionID,
|
|
148
|
+
messageID: output.message.id,
|
|
149
|
+
type: "text",
|
|
150
|
+
text: context,
|
|
151
|
+
synthetic: true,
|
|
152
|
+
})
|
|
153
|
+
}
|
|
123
154
|
},
|
|
124
155
|
|
|
125
156
|
/** Session lifecycle events are delivered through OpenCode's event bus. */
|
|
@@ -165,6 +196,7 @@ export function opencodePluginTarget(contents) {
|
|
|
165
196
|
const exec = /^const EXEC = (".*")$/m.exec(contents)?.[1];
|
|
166
197
|
const script = /^const SCRIPT = (".*")$/m.exec(contents)?.[1];
|
|
167
198
|
const version = Number(/^const ADAPTER_VERSION = (\d+)$/m.exec(contents)?.[1] ?? 1);
|
|
199
|
+
const timeoutMs = Number(/^const TIMEOUT_MS = (\d+)$/m.exec(contents)?.[1] ?? Number.NaN);
|
|
168
200
|
if (exec === undefined || script === undefined)
|
|
169
201
|
return null;
|
|
170
202
|
try {
|
|
@@ -172,6 +204,7 @@ export function opencodePluginTarget(contents) {
|
|
|
172
204
|
exec: JSON.parse(exec),
|
|
173
205
|
script: JSON.parse(script),
|
|
174
206
|
current: version === OPENCODE_ADAPTER_VERSION,
|
|
207
|
+
...(Number.isFinite(timeoutMs) ? { timeoutSeconds: timeoutMs / 1000 } : {}),
|
|
175
208
|
};
|
|
176
209
|
}
|
|
177
210
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-plugin.js","sourceRoot":"","sources":["../src/opencode-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,oCAAoC,CAAA;AAE1E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAA;AAEpD,oFAAoF;AACpF,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAElC,MAAM,UAAU,iBAAiB,CAC/B,MAAe,EACf,GAAW,EACX,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,MAAM;QACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,qBAAqB,EAAE,kBAAkB,CAAC,EAAE,SAAS,CAAC;QAClF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAe,EACf,GAAW,EACX,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAA;AACjF,CAAC;AASD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IACxD,OAAO,GAAG,sBAAsB;;;;;eAKnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;iBACtB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;qBACtB,cAAc,GAAG,IAAI;0BAChB,wBAAwB
|
|
1
|
+
{"version":3,"file":"opencode-plugin.js","sourceRoot":"","sources":["../src/opencode-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/send.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type LifecycleT, type NotificationDraftT, type Platform, type SubmissionReceipt } from '@raidiant/notifai-protocol';
|
|
1
|
+
import { type LifecycleT, type NotificationDraftT, type Platform, type QuestionT, type SubmissionReceipt } from '@raidiant/notifai-protocol';
|
|
2
2
|
import type { CliConfig } from './config.js';
|
|
3
3
|
export interface SendFlags {
|
|
4
4
|
title: string;
|
|
@@ -16,11 +16,8 @@ export interface SendFlags {
|
|
|
16
16
|
ttl?: number;
|
|
17
17
|
collapseKey?: string;
|
|
18
18
|
sound?: string;
|
|
19
|
-
badge?: number;
|
|
20
19
|
threadId?: string;
|
|
21
20
|
level?: string;
|
|
22
|
-
relevance?: number;
|
|
23
|
-
targetContentId?: string;
|
|
24
21
|
data?: string[];
|
|
25
22
|
image?: string;
|
|
26
23
|
/** Enable the inline reply action for this Notification Request. */
|
|
@@ -28,10 +25,17 @@ export interface SendFlags {
|
|
|
28
25
|
/** How long the server accepts a reply after submission. */
|
|
29
26
|
replyWindow?: number;
|
|
30
27
|
/**
|
|
31
|
-
* Answer labels; turns the reply into a closed question. One
|
|
32
|
-
*
|
|
28
|
+
* Answer labels; turns the reply into a closed question. One flag occurrence
|
|
29
|
+
* per label, always — a label is a label, whatever characters it contains.
|
|
33
30
|
*/
|
|
34
|
-
replyChoice?: string
|
|
31
|
+
replyChoice?: string[];
|
|
32
|
+
/** The user may select several of the offered answers. */
|
|
33
|
+
replyMulti?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* A full question set, overriding the single question the flags describe.
|
|
36
|
+
* Not a user-facing flag: `ask --form` and the hooks build it.
|
|
37
|
+
*/
|
|
38
|
+
questions?: QuestionT[];
|
|
35
39
|
/** Platform whose optional notification fields these flags configure. */
|
|
36
40
|
platform?: string;
|
|
37
41
|
/**
|
|
@@ -55,32 +59,18 @@ export declare function formatReceipt(receipt: SubmissionReceipt): string;
|
|
|
55
59
|
/** Stable exit codes: 0 ok/pending, 1 rejected everywhere. */
|
|
56
60
|
export declare function receiptExitCode(receipt: SubmissionReceipt): number;
|
|
57
61
|
/**
|
|
58
|
-
*
|
|
62
|
+
* One flag occurrence, one answer: `--choice Staging --choice Production` ->
|
|
63
|
+
* `[{id:'staging',label:'Staging'}, ...]`.
|
|
59
64
|
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* agent meant two.
|
|
65
|
+
* Commas are ordinary characters. The old single-value comma split produced
|
|
66
|
+
* buttons the agent never intended ("Nothing, I'll review" became two answers)
|
|
67
|
+
* and nothing downstream could detect it, so the delimiter form is gone
|
|
68
|
+
* rather than guarded: a label is a label.
|
|
65
69
|
*/
|
|
66
|
-
export declare function parseChoices(value: string
|
|
70
|
+
export declare function parseChoices(value: string[] | undefined): {
|
|
67
71
|
id: string;
|
|
68
72
|
label: string;
|
|
69
73
|
}[] | null | 'invalid';
|
|
70
74
|
/** Message shared by every surface that accepts choice labels. */
|
|
71
75
|
export declare const CHOICE_USAGE: string;
|
|
72
|
-
|
|
73
|
-
* Catches the split that looked like it worked.
|
|
74
|
-
*
|
|
75
|
-
* `--choice "macOS parity,Long-form detail,Nothing, I'll review"` produced four
|
|
76
|
-
* buttons rather than three, because the third label contained a comma. Nothing
|
|
77
|
-
* downstream can detect it — the labels are all well-formed — and the CLI
|
|
78
|
-
* cheerfully echoed the wrong list back, so the user saw buttons the agent
|
|
79
|
-
* never intended.
|
|
80
|
-
*
|
|
81
|
-
* The tell is a comma followed by a space. A delimiter list is written
|
|
82
|
-
* "Yes,No"; prose is written "Nothing, I'll review". That is a heuristic and it
|
|
83
|
-
* will occasionally be wrong, which is exactly why this warns and names the
|
|
84
|
-
* escape hatch rather than rejecting: the split may well have been intended.
|
|
85
|
-
*/
|
|
86
|
-
export declare function ambiguousChoiceSplit(value: string | string[] | undefined): string | null;
|
|
76
|
+
export declare function slugify(label: string): string;
|