@raidiant/notifai 3.0.1 → 5.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 +73 -0
- package/README.md +12 -4
- package/dist/commands.d.ts +27 -10
- package/dist/commands.js +429 -152
- package/dist/commands.js.map +1 -1
- package/dist/config-schema.js +20 -11
- package/dist/config-schema.js.map +1 -1
- package/dist/config.d.ts +3 -1
- package/dist/config.js +12 -1
- package/dist/config.js.map +1 -1
- package/dist/file-lock.d.ts +6 -1
- package/dist/file-lock.js +55 -9
- package/dist/file-lock.js.map +1 -1
- package/dist/harnesses.d.ts +1 -1
- package/dist/harnesses.js.map +1 -1
- package/dist/hooks.d.ts +84 -12
- package/dist/hooks.js +433 -125
- package/dist/hooks.js.map +1 -1
- package/dist/install-hooks.d.ts +91 -14
- package/dist/install-hooks.js +226 -34
- package/dist/install-hooks.js.map +1 -1
- package/dist/interactive.d.ts +1 -1
- package/dist/interactive.js +1 -1
- package/dist/invocation-context.d.ts +42 -0
- package/dist/invocation-context.js +130 -0
- package/dist/invocation-context.js.map +1 -0
- package/dist/logging.d.ts +8 -0
- package/dist/logging.js +8 -0
- package/dist/logging.js.map +1 -1
- package/dist/main.js +84 -49
- package/dist/main.js.map +1 -1
- package/dist/opencode-plugin.d.ts +8 -0
- package/dist/opencode-plugin.js +24 -162
- package/dist/opencode-plugin.js.map +1 -1
- package/dist/send.d.ts +38 -7
- package/dist/send.js +97 -41
- package/dist/send.js.map +1 -1
- package/dist/ui/help.d.ts +0 -1
- package/dist/ui/help.js +6 -3
- package/dist/ui/help.js.map +1 -1
- package/dist/ui/theme.d.ts +0 -15
- package/dist/ui/theme.js +2 -18
- package/dist/ui/theme.js.map +1 -1
- package/package.json +2 -2
- package/src/commands.test.ts +501 -63
- package/src/commands.ts +547 -187
- package/src/config-schema.test.ts +1 -1
- package/src/config-schema.ts +22 -11
- package/src/config.test.ts +178 -18
- package/src/config.ts +14 -1
- package/src/file-lock.test.ts +41 -0
- package/src/file-lock.ts +59 -9
- package/src/harnesses.test.ts +37 -29
- package/src/harnesses.ts +1 -4
- package/src/hooks.test.ts +500 -58
- package/src/hooks.ts +523 -169
- package/src/install-hooks.test.ts +232 -12
- package/src/install-hooks.ts +241 -37
- package/src/interactive.ts +1 -1
- package/src/invocation-context.test.ts +253 -0
- package/src/invocation-context.ts +176 -0
- package/src/logging-process-worker.test.ts +8 -2
- package/src/logging.test.ts +33 -18
- package/src/logging.ts +11 -0
- package/src/main.ts +119 -54
- package/src/opencode-plugin.ts +24 -164
- package/src/question-caps.test.ts +49 -0
- package/src/send.ts +144 -50
- package/src/skill.test.ts +197 -120
- package/src/ui/help.ts +8 -3
- package/src/ui/theme.ts +2 -16
package/dist/opencode-plugin.js
CHANGED
|
@@ -27,7 +27,7 @@ export const OPENCODE_PLUGIN_MARKER = '// notifai managed opencode plugin';
|
|
|
27
27
|
/** Filename we own inside whichever plugins directory is being written. */
|
|
28
28
|
export const OPENCODE_PLUGIN_FILENAME = 'notifai.js';
|
|
29
29
|
/** Bump when an installed generated file must be rewritten to remain functional. */
|
|
30
|
-
const OPENCODE_ADAPTER_VERSION =
|
|
30
|
+
const OPENCODE_ADAPTER_VERSION = 6;
|
|
31
31
|
export function opencodePluginDir(global, cwd, env = process.env, platform = process.platform) {
|
|
32
32
|
return global
|
|
33
33
|
? path.join(configHome(env, 'OPENCODE_CONFIG_DIR', '.config/opencode', platform), 'plugins')
|
|
@@ -48,148 +48,32 @@ export function opencodePluginPath(global, cwd, env = process.env, platform = pr
|
|
|
48
48
|
* hand that to the CLI on stdin. It deliberately fails open: an adapter error
|
|
49
49
|
* never changes OpenCode's own behavior.
|
|
50
50
|
*/
|
|
51
|
-
export function opencodePluginSource(options) {
|
|
52
|
-
if (hookHostPlatform(options.platform) === 'win32') {
|
|
53
|
-
return win32OpencodePluginSource(options);
|
|
54
|
-
}
|
|
55
|
-
return posixOpencodePluginSource(options);
|
|
56
|
-
}
|
|
57
|
-
function posixOpencodePluginSource(options) {
|
|
58
|
-
const { adapterPath, timeoutSeconds } = options;
|
|
59
|
-
return `${OPENCODE_PLUGIN_MARKER}
|
|
60
|
-
// Generated by \`notifai hooks install --harness opencode\`. Edits are lost on
|
|
61
|
-
// the next install; change the CLI instead, which is where the logic lives.
|
|
62
|
-
import { spawn } from "node:child_process"
|
|
63
|
-
|
|
64
|
-
const ADAPTER = ${JSON.stringify(adapterPath)}
|
|
65
|
-
const TIMEOUT_MS = ${timeoutSeconds * 1000}
|
|
66
|
-
const ADAPTER_VERSION = ${OPENCODE_ADAPTER_VERSION}
|
|
67
|
-
|
|
68
51
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
52
|
+
* The plugin body, which is the same on every platform except for how it
|
|
53
|
+
* reaches the adapter.
|
|
54
|
+
*
|
|
55
|
+
* It was two near-identical copies — about a hundred and twenty lines each,
|
|
56
|
+
* differing only in the spawn call — so every fix to the plugin had to be made
|
|
57
|
+
* twice or silently apply to one platform.
|
|
71
58
|
*/
|
|
72
|
-
function
|
|
73
|
-
return new Promise((resolve) => {
|
|
74
|
-
let child
|
|
75
|
-
try {
|
|
76
|
-
child = spawn(ADAPTER, ["hook", event, "--owner", "notifai", "--harness", "opencode"], {
|
|
77
|
-
env: process.env,
|
|
78
|
-
shell: false,
|
|
79
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
80
|
-
})
|
|
81
|
-
} catch {
|
|
82
|
-
resolve(null)
|
|
83
|
-
return
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
let stdout = ""
|
|
87
|
-
let settled = false
|
|
88
|
-
const finish = (value) => {
|
|
89
|
-
if (settled) return
|
|
90
|
-
settled = true
|
|
91
|
-
clearTimeout(timer)
|
|
92
|
-
resolve(value)
|
|
93
|
-
}
|
|
94
|
-
const timer = setTimeout(() => {
|
|
95
|
-
child.kill("SIGTERM")
|
|
96
|
-
finish(null)
|
|
97
|
-
}, TIMEOUT_MS)
|
|
98
|
-
|
|
99
|
-
child.stdout?.setEncoding("utf-8")
|
|
100
|
-
child.stdout?.on("data", (chunk) => {
|
|
101
|
-
stdout += chunk
|
|
102
|
-
})
|
|
103
|
-
// Hook stderr is diagnostics, not plugin output; discard it here.
|
|
104
|
-
child.stderr?.resume()
|
|
105
|
-
child.on("error", () => finish(null))
|
|
106
|
-
child.on("close", () => finish(stdout))
|
|
107
|
-
|
|
108
|
-
try {
|
|
109
|
-
child.stdin?.end(JSON.stringify(envelope))
|
|
110
|
-
} catch {
|
|
111
|
-
finish(null)
|
|
112
|
-
}
|
|
113
|
-
})
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
function additionalContext(stdout) {
|
|
117
|
-
if (typeof stdout !== "string" || stdout.trim() === "") return null
|
|
118
|
-
try {
|
|
119
|
-
const parsed = JSON.parse(stdout)
|
|
120
|
-
const context = parsed?.hookSpecificOutput?.additionalContext
|
|
121
|
-
return typeof context === "string" && context.length > 0 ? context : null
|
|
122
|
-
} catch {
|
|
123
|
-
return null
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export const NotifAIPlugin = async ({ directory }) => {
|
|
128
|
-
const cwd = typeof directory === "string" && directory.length > 0 ? directory : process.cwd()
|
|
129
|
-
|
|
130
|
-
return {
|
|
131
|
-
/** Exact active-harness identity for shell commands such as \`notifai ask\`. */
|
|
132
|
-
"shell.env": async (input, output) => {
|
|
133
|
-
output.env.NOTIFAI_ACTIVE_HARNESS = "opencode"
|
|
134
|
-
const sessionID = input?.sessionID
|
|
135
|
-
if (typeof sessionID === "string" && sessionID.length > 0) {
|
|
136
|
-
output.env.NOTIFAI_ACTIVE_SESSION_ID = sessionID
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Presence. The user typing is the signal every harness shares, and it is
|
|
142
|
-
* also what publishes the project -> session pointer \`notifai ask\` reads.
|
|
143
|
-
*/
|
|
144
|
-
"chat.message": async (input, output) => {
|
|
145
|
-
const stdout = await runHook("user-prompt-submit", {
|
|
146
|
-
session_id: input?.sessionID ?? input?.info?.sessionID,
|
|
147
|
-
cwd,
|
|
148
|
-
hook_event_name: "UserPromptSubmit",
|
|
149
|
-
})
|
|
150
|
-
const context = additionalContext(stdout)
|
|
151
|
-
if (context !== null) {
|
|
152
|
-
output.parts.push({
|
|
153
|
-
id: "prt_notifai_" + Date.now(),
|
|
154
|
-
sessionID: input.sessionID,
|
|
155
|
-
messageID: output.message.id,
|
|
156
|
-
type: "text",
|
|
157
|
-
text: context,
|
|
158
|
-
synthetic: true,
|
|
159
|
-
})
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
|
|
163
|
-
/** Session lifecycle events are delivered through OpenCode's event bus. */
|
|
164
|
-
event: async ({ event }) => {
|
|
165
|
-
if (event?.type === "session.idle") {
|
|
166
|
-
await runHook("stop", {
|
|
167
|
-
session_id: event?.properties?.sessionID,
|
|
168
|
-
cwd,
|
|
169
|
-
hook_event_name: "Stop",
|
|
170
|
-
})
|
|
171
|
-
} else if (event?.type === "session.deleted") {
|
|
172
|
-
await runHook("session-end", {
|
|
173
|
-
session_id: event?.properties?.info?.id,
|
|
174
|
-
cwd,
|
|
175
|
-
hook_event_name: "SessionEnd",
|
|
176
|
-
})
|
|
177
|
-
}
|
|
178
|
-
},
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
`;
|
|
182
|
-
}
|
|
183
|
-
function win32OpencodePluginSource(options) {
|
|
59
|
+
export function opencodePluginSource(options) {
|
|
184
60
|
const { adapterPath, timeoutSeconds } = options;
|
|
185
|
-
|
|
61
|
+
// Windows cannot execute the adapter script directly, so it goes through the
|
|
62
|
+
// registered Node executable and the console window is suppressed.
|
|
63
|
+
const win32 = hookHostPlatform(options.platform) === 'win32';
|
|
64
|
+
const nodeConstant = win32
|
|
65
|
+
? `const NODE = ${JSON.stringify(options.nodePath ?? process.execPath)}\n`
|
|
66
|
+
: '';
|
|
67
|
+
const spawnArguments = win32
|
|
68
|
+
? 'NODE, [ADAPTER, "hook", event, "--owner", "notifai", "--harness", "opencode"]'
|
|
69
|
+
: 'ADAPTER, ["hook", event, "--owner", "notifai", "--harness", "opencode"]';
|
|
70
|
+
const windowsHide = win32 ? '\n windowsHide: true,' : '';
|
|
186
71
|
return `${OPENCODE_PLUGIN_MARKER}
|
|
187
72
|
// Generated by \`notifai hooks install --harness opencode\`. Edits are lost on
|
|
188
73
|
// the next install; change the CLI instead, which is where the logic lives.
|
|
189
74
|
import { spawn } from "node:child_process"
|
|
190
75
|
|
|
191
|
-
const
|
|
192
|
-
const ADAPTER = ${JSON.stringify(adapterPath)}
|
|
76
|
+
${nodeConstant}const ADAPTER = ${JSON.stringify(adapterPath)}
|
|
193
77
|
const TIMEOUT_MS = ${timeoutSeconds * 1000}
|
|
194
78
|
const ADAPTER_VERSION = ${OPENCODE_ADAPTER_VERSION}
|
|
195
79
|
|
|
@@ -201,10 +85,9 @@ function runHook(event, envelope) {
|
|
|
201
85
|
return new Promise((resolve) => {
|
|
202
86
|
let child
|
|
203
87
|
try {
|
|
204
|
-
child = spawn(
|
|
88
|
+
child = spawn(${spawnArguments}, {
|
|
205
89
|
env: process.env,
|
|
206
|
-
shell: false
|
|
207
|
-
windowsHide: true,
|
|
90
|
+
shell: false,${windowsHide}
|
|
208
91
|
stdio: ["pipe", "pipe", "pipe"],
|
|
209
92
|
})
|
|
210
93
|
} catch {
|
|
@@ -242,17 +125,6 @@ function runHook(event, envelope) {
|
|
|
242
125
|
})
|
|
243
126
|
}
|
|
244
127
|
|
|
245
|
-
function additionalContext(stdout) {
|
|
246
|
-
if (typeof stdout !== "string" || stdout.trim() === "") return null
|
|
247
|
-
try {
|
|
248
|
-
const parsed = JSON.parse(stdout)
|
|
249
|
-
const context = parsed?.hookSpecificOutput?.additionalContext
|
|
250
|
-
return typeof context === "string" && context.length > 0 ? context : null
|
|
251
|
-
} catch {
|
|
252
|
-
return null
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
128
|
export const NotifAIPlugin = async ({ directory }) => {
|
|
257
129
|
const cwd = typeof directory === "string" && directory.length > 0 ? directory : process.cwd()
|
|
258
130
|
|
|
@@ -270,23 +142,13 @@ export const NotifAIPlugin = async ({ directory }) => {
|
|
|
270
142
|
* Presence. The user typing is the signal every harness shares, and it is
|
|
271
143
|
* also what publishes the project -> session pointer \`notifai ask\` reads.
|
|
272
144
|
*/
|
|
273
|
-
|
|
274
|
-
|
|
145
|
+
/** Publishes the session pointer; the CLI returns no content to inject. */
|
|
146
|
+
"chat.message": async (input) => {
|
|
147
|
+
await runHook("user-prompt-submit", {
|
|
275
148
|
session_id: input?.sessionID ?? input?.info?.sessionID,
|
|
276
149
|
cwd,
|
|
277
150
|
hook_event_name: "UserPromptSubmit",
|
|
278
151
|
})
|
|
279
|
-
const context = additionalContext(stdout)
|
|
280
|
-
if (context !== null) {
|
|
281
|
-
output.parts.push({
|
|
282
|
-
id: "prt_notifai_" + Date.now(),
|
|
283
|
-
sessionID: input.sessionID,
|
|
284
|
-
messageID: output.message.id,
|
|
285
|
-
type: "text",
|
|
286
|
-
text: context,
|
|
287
|
-
synthetic: true,
|
|
288
|
-
})
|
|
289
|
-
}
|
|
290
152
|
},
|
|
291
153
|
|
|
292
154
|
/** Session lifecycle events are delivered through OpenCode's event bus. */
|
|
@@ -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,gBAAgB,EAAyB,MAAM,mBAAmB,CAAA;AAC3E,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,EACpC,WAA+C,OAAO,CAAC,QAAQ;IAE/D,OAAO,MAAM;QACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAC5F,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,EACpC,WAA+C,OAAO,CAAC,QAAQ;IAE/D,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,wBAAwB,CAAC,CAAA;AAC3F,CAAC;AAYD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,
|
|
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,16 +1,18 @@
|
|
|
1
|
-
import { type LifecycleT, type NotificationDraftT, type Platform, type QuestionT, type SubmissionReceipt } from '@raidiant/notifai-protocol';
|
|
1
|
+
import { type LifecycleT, type MediaItemT, type NotificationDraftT, type Platform, type QuestionT, type SourceContextT, type SubmissionReceipt } from '@raidiant/notifai-protocol';
|
|
2
2
|
import type { CliConfig } from './config.js';
|
|
3
3
|
export interface SendFlags {
|
|
4
4
|
title: string;
|
|
5
|
+
/** The one canonical Markdown body. */
|
|
5
6
|
body: string;
|
|
6
7
|
subtitle?: string;
|
|
7
|
-
/** Long-form markdown for the app's detail view; never on the banner. */
|
|
8
|
-
detail?: string;
|
|
9
8
|
event?: string;
|
|
10
|
-
/** What this notification is
|
|
9
|
+
/** What this notification is; absent means update. */
|
|
11
10
|
kind?: string;
|
|
12
11
|
project?: string;
|
|
13
|
-
session
|
|
12
|
+
/** Opaque exact-session override. */
|
|
13
|
+
sessionId?: string;
|
|
14
|
+
/** Human-readable session label override. */
|
|
15
|
+
sessionLabel?: string;
|
|
14
16
|
device?: string[];
|
|
15
17
|
all?: boolean;
|
|
16
18
|
ttl?: number;
|
|
@@ -19,7 +21,15 @@ export interface SendFlags {
|
|
|
19
21
|
threadId?: string;
|
|
20
22
|
level?: string;
|
|
21
23
|
data?: string[];
|
|
22
|
-
|
|
24
|
+
/** Ready media ids in author-supplied order. Commands resolve paths and URLs first. */
|
|
25
|
+
image?: string[];
|
|
26
|
+
/** Optional alt text paired with images by position. */
|
|
27
|
+
imageAlt?: string[];
|
|
28
|
+
/**
|
|
29
|
+
* Complete canonical media manifest for internal callers that already froze
|
|
30
|
+
* uploads and alt text. Mutually exclusive with the CLI's parallel inputs.
|
|
31
|
+
*/
|
|
32
|
+
media?: MediaItemT[];
|
|
23
33
|
/** Enable the inline reply action for this Notification Request. */
|
|
24
34
|
reply?: boolean;
|
|
25
35
|
/** How long the server accepts a reply after submission. */
|
|
@@ -52,8 +62,23 @@ export type DraftBuild = {
|
|
|
52
62
|
ok: false;
|
|
53
63
|
error: string;
|
|
54
64
|
};
|
|
65
|
+
/** Invocation-derived values beneath explicit and configured author input. */
|
|
66
|
+
export interface DraftInvocation {
|
|
67
|
+
inferredProject?: string | null;
|
|
68
|
+
source?: SourceContextT;
|
|
69
|
+
}
|
|
70
|
+
/** Validate media cardinality and positional alt pairing before any upload starts. */
|
|
71
|
+
export declare function validateMediaInputs(images: readonly string[] | undefined, alts: readonly string[] | undefined): string | null;
|
|
72
|
+
/** Rewrite authorable 1-based media positions to canonical ready media ids. */
|
|
73
|
+
export declare function rewriteMediaReferences(body: string, mediaIds: readonly string[]): {
|
|
74
|
+
ok: true;
|
|
75
|
+
body: string;
|
|
76
|
+
} | {
|
|
77
|
+
ok: false;
|
|
78
|
+
error: string;
|
|
79
|
+
};
|
|
55
80
|
/** Merge flags over resolved config into a Notification Request draft. */
|
|
56
|
-
export declare function buildDraft(config: CliConfig, flags: SendFlags): DraftBuild;
|
|
81
|
+
export declare function buildDraft(config: CliConfig, flags: SendFlags, invocation?: DraftInvocation): DraftBuild;
|
|
57
82
|
/** Human one-screen receipt summary; agents use --json instead. */
|
|
58
83
|
export declare function formatReceipt(receipt: SubmissionReceipt): string;
|
|
59
84
|
/** Stable exit codes: 0 ok/pending, 1 rejected everywhere. */
|
|
@@ -72,5 +97,11 @@ export declare function parseChoices(value: string[] | undefined): {
|
|
|
72
97
|
label: string;
|
|
73
98
|
}[] | null | 'invalid';
|
|
74
99
|
/** Message shared by every surface that accepts choice labels. */
|
|
100
|
+
/** `ask` spells this flag `--choice`. */
|
|
75
101
|
export declare const CHOICE_USAGE: string;
|
|
102
|
+
/**
|
|
103
|
+
* `send` spells the same flag `--reply-choice`, and a remedy that names the
|
|
104
|
+
* other command's flag reproduces the error it is trying to fix.
|
|
105
|
+
*/
|
|
106
|
+
export declare const REPLY_CHOICE_USAGE: string;
|
|
76
107
|
export declare function slugify(label: string): string;
|
package/dist/send.js
CHANGED
|
@@ -1,28 +1,95 @@
|
|
|
1
|
-
import { CLI_SOUNDS, COLLAPSE_KEY_MAX_BYTES, INTERRUPTION_LEVELS, NOTIFICATION_SCHEMA_VERSION, QUESTION_TEXT_MAX_LENGTH, NOTIFICATION_KINDS, PLATFORMS, } from '@raidiant/notifai-protocol';
|
|
1
|
+
import { CLI_SOUNDS, COLLAPSE_KEY_MAX_BYTES, INTERRUPTION_LEVELS, MEDIA_MAX_ITEMS, NOTIFICATION_SCHEMA_VERSION, QUESTION_TEXT_MAX_LENGTH, bannerExcerpt, NOTIFICATION_KINDS, DEFAULT_NOTIFICATION_KIND, defaultSoundForKind, PLATFORMS, } from '@raidiant/notifai-protocol';
|
|
2
|
+
const POSITIONAL_MEDIA_REFERENCE = /media:(\d+)(?![A-Za-z0-9_-])/g;
|
|
3
|
+
/** Validate media cardinality and positional alt pairing before any upload starts. */
|
|
4
|
+
export function validateMediaInputs(images, alts) {
|
|
5
|
+
const imageCount = images?.length ?? 0;
|
|
6
|
+
const imageAlts = alts ?? [];
|
|
7
|
+
if (imageCount > MEDIA_MAX_ITEMS)
|
|
8
|
+
return `Attach at most ${MEDIA_MAX_ITEMS} images.`;
|
|
9
|
+
if (imageAlts.length > imageCount) {
|
|
10
|
+
return `Received ${imageAlts.length} --image-alt values for ${imageCount} --image values.`;
|
|
11
|
+
}
|
|
12
|
+
if (imageAlts.some((alt) => alt.length < 1 || alt.length > 256)) {
|
|
13
|
+
return '--image-alt must be 1-256 characters.';
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
/** Validate a frozen value-object manifest without collapsing sparse alt text. */
|
|
18
|
+
function validateMediaManifest(media) {
|
|
19
|
+
if (media.length > MEDIA_MAX_ITEMS)
|
|
20
|
+
return `Attach at most ${MEDIA_MAX_ITEMS} images.`;
|
|
21
|
+
if (media.some((item) => item.alt !== undefined && (item.alt.length < 1 || item.alt.length > 256))) {
|
|
22
|
+
return 'Media alt text must be 1-256 characters.';
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
/** Rewrite authorable 1-based media positions to canonical ready media ids. */
|
|
27
|
+
export function rewriteMediaReferences(body, mediaIds) {
|
|
28
|
+
let error;
|
|
29
|
+
const rewritten = body.replace(POSITIONAL_MEDIA_REFERENCE, (reference, digits) => {
|
|
30
|
+
const position = Number(digits);
|
|
31
|
+
if (!Number.isSafeInteger(position) ||
|
|
32
|
+
position < 1 ||
|
|
33
|
+
position > MEDIA_MAX_ITEMS ||
|
|
34
|
+
digits !== String(position) ||
|
|
35
|
+
mediaIds[position - 1] === undefined) {
|
|
36
|
+
error = `Body reference "${reference}" has no matching --image occurrence.`;
|
|
37
|
+
return reference;
|
|
38
|
+
}
|
|
39
|
+
return `media:${mediaIds[position - 1]}`;
|
|
40
|
+
});
|
|
41
|
+
return error === undefined ? { ok: true, body: rewritten } : { ok: false, error };
|
|
42
|
+
}
|
|
2
43
|
/** Merge flags over resolved config into a Notification Request draft. */
|
|
3
|
-
export function buildDraft(config, flags) {
|
|
44
|
+
export function buildDraft(config, flags, invocation = {}) {
|
|
4
45
|
if (!flags.title || !flags.body)
|
|
5
46
|
return { ok: false, error: 'Both --title and --body are required.' };
|
|
6
47
|
const platform = resolvePlatform(flags.platform);
|
|
7
48
|
if (!platform) {
|
|
8
49
|
return { ok: false, error: `Unknown platform "${flags.platform}" — use ${PLATFORMS.join(' or ')}.` };
|
|
9
50
|
}
|
|
51
|
+
if (flags.media !== undefined && (flags.image !== undefined || flags.imageAlt !== undefined)) {
|
|
52
|
+
return { ok: false, error: 'Internal media manifests cannot be combined with --image or --image-alt.' };
|
|
53
|
+
}
|
|
54
|
+
const imageIds = flags.media?.map((item) => item.media_id) ?? flags.image ?? [];
|
|
55
|
+
const imageAlts = flags.imageAlt ?? [];
|
|
56
|
+
const mediaInputError = flags.media === undefined
|
|
57
|
+
? validateMediaInputs(imageIds, imageAlts)
|
|
58
|
+
: validateMediaManifest(flags.media);
|
|
59
|
+
if (mediaInputError !== null)
|
|
60
|
+
return { ok: false, error: mediaInputError };
|
|
61
|
+
const media = flags.media ??
|
|
62
|
+
imageIds.map((media_id, index) => ({
|
|
63
|
+
media_id,
|
|
64
|
+
...(imageAlts[index] !== undefined ? { alt: imageAlts[index] } : {}),
|
|
65
|
+
}));
|
|
66
|
+
const body = rewriteMediaReferences(flags.body, imageIds);
|
|
67
|
+
if (!body.ok)
|
|
68
|
+
return body;
|
|
10
69
|
const deviceIds = flags.all ? null : (flags.device?.length ? flags.device : config.devices.value);
|
|
11
70
|
const targets = deviceIds && deviceIds.length > 0 ? { mode: 'selected', device_ids: deviceIds } : { mode: 'all' };
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
71
|
+
if (flags.kind !== undefined &&
|
|
72
|
+
!NOTIFICATION_KINDS.includes(flags.kind)) {
|
|
73
|
+
return {
|
|
74
|
+
ok: false,
|
|
75
|
+
error: `Unknown kind "${flags.kind}" — supported: ${NOTIFICATION_KINDS.map((kind) => `"${kind}"`).join(', ')}.`,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Kind states what happened; the sound table turns that truth into the
|
|
79
|
+
// attention it deserves, so an honest sender gets the right sound without
|
|
80
|
+
// reasoning about audio. An explicit --sound and the user's saved preference
|
|
81
|
+
// both outrank it, and `none` still means silent.
|
|
82
|
+
const kindForSound = flags.reply
|
|
83
|
+
? 'question'
|
|
84
|
+
: (flags.kind ?? DEFAULT_NOTIFICATION_KIND);
|
|
85
|
+
const sound = flags.sound ?? config.sound.value ?? defaultSoundForKind(kindForSound);
|
|
16
86
|
if (sound !== null && sound !== undefined && !CLI_SOUNDS.includes(sound)) {
|
|
17
87
|
return {
|
|
18
88
|
ok: false,
|
|
19
89
|
error: `Unknown sound "${sound}" — supported: ${CLI_SOUNDS.map((value) => `"${value}"`).join(', ')}.`,
|
|
20
90
|
};
|
|
21
91
|
}
|
|
22
|
-
const
|
|
23
|
-
? undefined
|
|
24
|
-
: config.interruption_level.value;
|
|
25
|
-
const level = flags.level ?? configuredLevel ?? profile?.level;
|
|
92
|
+
const level = flags.level ?? config.interruption_level.value;
|
|
26
93
|
if (level !== null &&
|
|
27
94
|
level !== undefined &&
|
|
28
95
|
!INTERRUPTION_LEVELS.includes(level)) {
|
|
@@ -49,13 +116,6 @@ export function buildDraft(config, flags) {
|
|
|
49
116
|
}
|
|
50
117
|
options.custom_data = data;
|
|
51
118
|
}
|
|
52
|
-
if (flags.kind !== undefined &&
|
|
53
|
-
!NOTIFICATION_KINDS.includes(flags.kind)) {
|
|
54
|
-
return {
|
|
55
|
-
ok: false,
|
|
56
|
-
error: `Unknown kind "${flags.kind}" — supported: ${NOTIFICATION_KINDS.map((kind) => `"${kind}"`).join(', ')}.`,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
119
|
const ttl = flags.ttl ?? config.ttl_seconds.value;
|
|
60
120
|
const collapse = flags.collapseKey ?? config.collapse_key.value;
|
|
61
121
|
if (collapse !== null &&
|
|
@@ -66,32 +126,29 @@ export function buildDraft(config, flags) {
|
|
|
66
126
|
error: `--collapse-key must be at most ${COLLAPSE_KEY_MAX_BYTES} UTF-8 bytes.`,
|
|
67
127
|
};
|
|
68
128
|
}
|
|
69
|
-
const project = flags.project ?? config.project.value;
|
|
70
|
-
// Harnesses can export NOTIFAI_SESSION once instead of passing the flag
|
|
71
|
-
// on every send.
|
|
72
|
-
const session = flags.session ?? process.env['NOTIFAI_SESSION'];
|
|
129
|
+
const project = flags.project ?? config.project.value ?? invocation.inferredProject;
|
|
73
130
|
// Ids are derived from labels so an agent writing a one-liner does not have
|
|
74
131
|
// to invent them, but they stay the stable thing it branches on afterwards.
|
|
75
132
|
const choices = parseChoices(flags.replyChoice);
|
|
76
133
|
if (choices === 'invalid') {
|
|
77
134
|
return {
|
|
78
135
|
ok: false,
|
|
79
|
-
error:
|
|
136
|
+
error: REPLY_CHOICE_USAGE,
|
|
80
137
|
};
|
|
81
138
|
}
|
|
82
139
|
if (flags.replyMulti && choices === null && flags.questions === undefined) {
|
|
83
140
|
return { ok: false, error: '--reply-multi needs answers to select between; add --reply-choice.' };
|
|
84
141
|
}
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
|
|
142
|
+
// A single reply question is the first readable block of the canonical body.
|
|
143
|
+
// Context may follow after a blank line without changing what the user answers.
|
|
144
|
+
const derivedQuestion = bannerExcerpt(body.body).split('\n', 1)[0].trim();
|
|
88
145
|
if (flags.reply &&
|
|
89
146
|
flags.questions === undefined &&
|
|
90
|
-
|
|
147
|
+
derivedQuestion.length > QUESTION_TEXT_MAX_LENGTH) {
|
|
91
148
|
return {
|
|
92
149
|
ok: false,
|
|
93
|
-
error: `
|
|
94
|
-
'
|
|
150
|
+
error: `Keep the question within ${QUESTION_TEXT_MAX_LENGTH} characters and put ` +
|
|
151
|
+
'the longer context after a blank line — the first paragraph is the question.',
|
|
95
152
|
};
|
|
96
153
|
}
|
|
97
154
|
const draft = {
|
|
@@ -102,26 +159,23 @@ export function buildDraft(config, flags) {
|
|
|
102
159
|
: {}),
|
|
103
160
|
...(flags.lifecycle !== undefined ? { lifecycle: flags.lifecycle } : {}),
|
|
104
161
|
...(project !== null && project !== undefined ? { project } : {}),
|
|
105
|
-
...(
|
|
162
|
+
...(invocation.source !== undefined ? { source: invocation.source } : {}),
|
|
106
163
|
presentation: {
|
|
107
164
|
title: flags.title,
|
|
108
|
-
body:
|
|
165
|
+
body: body.body,
|
|
109
166
|
...(flags.subtitle !== undefined ? { subtitle: flags.subtitle } : {}),
|
|
110
|
-
...(
|
|
111
|
-
? { detail: flags.detail }
|
|
112
|
-
: {}),
|
|
113
|
-
...(flags.image !== undefined ? { image: { media_id: flags.image } } : {}),
|
|
167
|
+
...(media.length > 0 ? { media } : {}),
|
|
114
168
|
},
|
|
115
169
|
targets,
|
|
116
170
|
delivery: { ttl_seconds: ttl, collapse_key: collapse },
|
|
117
171
|
...(flags.reply
|
|
118
172
|
? {
|
|
119
173
|
reply: {
|
|
120
|
-
expires_in_seconds: flags.replyWindow ??
|
|
174
|
+
expires_in_seconds: flags.replyWindow ?? config.reply_window_seconds.value,
|
|
121
175
|
questions: flags.questions ?? [
|
|
122
176
|
{
|
|
123
177
|
id: 'q1',
|
|
124
|
-
text:
|
|
178
|
+
text: derivedQuestion,
|
|
125
179
|
...(choices !== null ? { choices } : {}),
|
|
126
180
|
...(flags.replyMulti ? { multi: true } : {}),
|
|
127
181
|
},
|
|
@@ -139,11 +193,6 @@ export function buildDraft(config, flags) {
|
|
|
139
193
|
};
|
|
140
194
|
return { ok: true, draft, platform };
|
|
141
195
|
}
|
|
142
|
-
const KIND_PROFILES = {
|
|
143
|
-
update: { sound: 'none', level: 'passive' },
|
|
144
|
-
done: { sound: 'done', level: 'passive' },
|
|
145
|
-
question: { sound: 'attention', level: 'active' },
|
|
146
|
-
};
|
|
147
196
|
function resolvePlatform(value) {
|
|
148
197
|
if (value === undefined)
|
|
149
198
|
return 'ios';
|
|
@@ -196,8 +245,15 @@ export function parseChoices(value) {
|
|
|
196
245
|
return choices;
|
|
197
246
|
}
|
|
198
247
|
/** Message shared by every surface that accepts choice labels. */
|
|
248
|
+
/** `ask` spells this flag `--choice`. */
|
|
199
249
|
export const CHOICE_USAGE = 'Offer 2-6 answers, one --choice flag per answer, unique once slugified — ' +
|
|
200
250
|
'e.g. --choice "Yes, ship it" --choice "Not yet".';
|
|
251
|
+
/**
|
|
252
|
+
* `send` spells the same flag `--reply-choice`, and a remedy that names the
|
|
253
|
+
* other command's flag reproduces the error it is trying to fix.
|
|
254
|
+
*/
|
|
255
|
+
export const REPLY_CHOICE_USAGE = 'Offer 2-6 answers, one --reply-choice flag per answer, unique once slugified — ' +
|
|
256
|
+
'e.g. --reply-choice "Yes, ship it" --reply-choice "Not yet".';
|
|
201
257
|
export function slugify(label) {
|
|
202
258
|
return label
|
|
203
259
|
.toLowerCase()
|
package/dist/send.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,2BAA2B,EAC3B,wBAAwB,EACxB,aAAa,EAMb,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EAEnB,SAAS,GAKV,MAAM,4BAA4B,CAAA;AAsEnC,MAAM,0BAA0B,GAAG,+BAA+B,CAAA;AAElE,sFAAsF;AACtF,MAAM,UAAU,mBAAmB,CACjC,MAAqC,EACrC,IAAmC;IAEnC,MAAM,UAAU,GAAG,MAAM,EAAE,MAAM,IAAI,CAAC,CAAA;IACtC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;IAC5B,IAAI,UAAU,GAAG,eAAe;QAAE,OAAO,kBAAkB,eAAe,UAAU,CAAA;IACpF,IAAI,SAAS,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QAClC,OAAO,YAAY,SAAS,CAAC,MAAM,2BAA2B,UAAU,kBAAkB,CAAA;IAC5F,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,uCAAuC,CAAA;IAChD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,kFAAkF;AAClF,SAAS,qBAAqB,CAAC,KAA4B;IACzD,IAAI,KAAK,CAAC,MAAM,GAAG,eAAe;QAAE,OAAO,kBAAkB,eAAe,UAAU,CAAA;IACtF,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,0CAA0C,CAAA;IACnD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,QAA2B;IAE3B,IAAI,KAAyB,CAAA;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,SAAS,EAAE,MAAc,EAAE,EAAE;QACvF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/B,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC/B,QAAQ,GAAG,CAAC;YACZ,QAAQ,GAAG,eAAe;YAC1B,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC;YAC3B,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,SAAS,EACpC,CAAC;YACD,KAAK,GAAG,mBAAmB,SAAS,uCAAuC,CAAA;YAC3E,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,SAAS,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAA;IAC1C,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AACnF,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CACxB,MAAiB,EACjB,KAAgB,EAChB,aAA8B,EAAE;IAEhC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAA;IACrG,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,KAAK,CAAC,QAAQ,WAAW,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;IACtG,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC;QAC7F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0EAA0E,EAAE,CAAA;IACzG,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;IAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;IACtC,MAAM,eAAe,GACnB,KAAK,CAAC,KAAK,KAAK,SAAS;QACvB,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC;QAC1C,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACxC,IAAI,eAAe,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;IAC1E,MAAM,KAAK,GACT,KAAK,CAAC,KAAK;QACX,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACjC,QAAQ;YACR,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,CAAC,CAAC,CAAA;IACL,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACzD,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IAEzB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACjG,MAAM,OAAO,GACX,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IAEnG,IACE,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAA2C,CAAC,EAC/E,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,iBAAiB,KAAK,CAAC,IAAI,kBAAkB,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SAChH,CAAA;IACH,CAAC;IAED,uEAAuE;IACvE,0EAA0E;IAC1E,6EAA6E;IAC7E,kDAAkD;IAClD,MAAM,YAAY,GAAqB,KAAK,CAAC,KAAK;QAChD,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,CAAE,KAAK,CAAC,IAAqC,IAAI,yBAAyB,CAAC,CAAA;IAC/E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAA;IACpF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAiB,CAAC,EAAE,CAAC;QACrF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,kBAAkB,KAAK,kBAAkB,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SACtG,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAA;IAC5D,IACE,KAAK,KAAK,IAAI;QACd,KAAK,KAAK,SAAS;QACnB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAA6C,CAAC,EAC5E,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,KAAK,IAAI,EAAE,CAAA;IACvE,CAAC;IAED,MAAM,OAAO,GAAgC,EAAE,CAAA;IAC/C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;SACrC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,GAAG,KAAqD,CAAA;IACvE,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAA;IACpE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,CAAC,kBAAkB,GAAG,KAA6C,CAAA;IAC5E,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAA2B,EAAE,CAAA;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC5B,IAAI,EAAE,IAAI,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,IAAI,IAAI,EAAE,CAAA;YACpF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;IAC5B,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,CAAA;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAA;IAC/D,IACE,QAAQ,KAAK,IAAI;QACjB,QAAQ,KAAK,SAAS;QACtB,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,sBAAsB,EAC5D,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,kCAAkC,sBAAsB,eAAe;SAC/E,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,eAAe,CAAA;IAEnF,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,kBAAkB;SAC1B,CAAA;IACH,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oEAAoE,EAAE,CAAA;IACnG,CAAC;IACD,6EAA6E;IAC7E,gFAAgF;IAChF,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAA;IAC1E,IACE,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,eAAe,CAAC,MAAM,GAAG,wBAAwB,EACjD,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EACH,4BAA4B,wBAAwB,sBAAsB;gBAC1E,8EAA8E;SACjF,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAuB;QAChC,cAAc,EAAE,2BAA2B;QAC3C,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;YAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAA2C,EAAE;YAC7D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,YAAY,EAAE;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvC;QACD,OAAO;QACP,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE;QACtD,GAAG,CAAC,KAAK,CAAC,KAAK;YACb,CAAC,CAAC;gBACE,KAAK,EAAE;oBACL,kBAAkB,EAAE,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,oBAAoB,CAAC,KAAK;oBAC1E,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI;wBAC5B;4BACE,EAAE,EAAE,IAAI;4BACR,IAAI,EAAE,eAAe;4BACrB,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACxC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC7C;qBACF;iBACF;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;YACjC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;gBAC5B,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBAChD,CAAC,CAAC,QAAQ,KAAK,KAAK;oBAClB,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;oBAChC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACrC,OAAQ,SAA+B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAkB,CAAC,CAAC,CAAC,IAAI,CAAA;AACtF,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,OAA0B;IACtD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,OAAO,GACX,OAAO,CAAC,OAAO,KAAK,uBAAuB;QACzC,CAAC,CAAC,gDAAgD;QAClD,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,2BAA2B;YAC/C,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,uBAAuB;gBAC3C,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,iBAAiB,CAAA;IAC3B,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAA;IAC/F,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACjE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAA;IACvD,CAAC;IACD,KAAK,CAAC,IAAI,CACR,6DAA6D,OAAO,CAAC,UAAU,iCAAiC,CACjH,CAAA;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IACjF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,OAAO,OAAO,CAAC,OAAO,KAAK,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,KAA2B;IAE3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACjF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACtE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QAAE,OAAO,SAAS,CAAA;IAChE,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IACzF,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,kEAAkE;AAClE,yCAAyC;AACzC,MAAM,CAAC,MAAM,YAAY,GACvB,2EAA2E;IAC3E,kDAAkD,CAAA;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,iFAAiF;IACjF,8DAA8D,CAAA;AAEhE,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjB,CAAC"}
|
package/dist/ui/help.d.ts
CHANGED
|
@@ -25,7 +25,6 @@ export declare const GROUP: {
|
|
|
25
25
|
readonly daily: "Everyday:";
|
|
26
26
|
readonly agent: "For agents and scripts:";
|
|
27
27
|
readonly advanced: "Account and wiring:";
|
|
28
|
-
readonly help: "Help:";
|
|
29
28
|
};
|
|
30
29
|
/** Option groups for `send`, which carries thirty flags. */
|
|
31
30
|
export declare const SEND_GROUP: {
|
package/dist/ui/help.js
CHANGED
|
@@ -26,7 +26,6 @@ export const GROUP = {
|
|
|
26
26
|
daily: 'Everyday:',
|
|
27
27
|
agent: 'For agents and scripts:',
|
|
28
28
|
advanced: 'Account and wiring:',
|
|
29
|
-
help: 'Help:',
|
|
30
29
|
};
|
|
31
30
|
/** Option groups for `send`, which carries thirty flags. */
|
|
32
31
|
export const SEND_GROUP = {
|
|
@@ -42,7 +41,6 @@ const GROUP_ORDER = [
|
|
|
42
41
|
GROUP.daily,
|
|
43
42
|
GROUP.agent,
|
|
44
43
|
GROUP.advanced,
|
|
45
|
-
GROUP.help,
|
|
46
44
|
];
|
|
47
45
|
function groupRank(heading) {
|
|
48
46
|
const index = GROUP_ORDER.indexOf(heading);
|
|
@@ -97,7 +95,12 @@ export function rootHelpFooter() {
|
|
|
97
95
|
` ${style.code('notifai')} ${style.dim(`${glyph.arrow} the interactive app: status, settings, devices, test sends`)}`,
|
|
98
96
|
` ${style.code('notifai init')} ${style.dim(`${glyph.arrow} set this project up, step by step`)}`,
|
|
99
97
|
'',
|
|
100
|
-
style.
|
|
98
|
+
style.heading('First call, for an agent'),
|
|
99
|
+
` ${style.code('notifai send --kind done --title "All 42 tests passed" --body "Finished in 3m 10s. Next: review the release candidate."')}`,
|
|
100
|
+
` ${style.code('notifai ask "Deploy migration 0007 to production?" --choice Deploy --choice Hold')}`,
|
|
101
|
+
` ${style.dim(`${glyph.arrow} ${style.code('ask')} needs question routing installed; ${style.code('notifai doctor --json')} says whether it is.`)}`,
|
|
102
|
+
'',
|
|
103
|
+
style.dim(`Every command takes ${style.code('--help')}. Where a command has machine-readable output it takes ${style.code('--json')}.`),
|
|
101
104
|
style.dim(`Settings are explained by ${style.code('notifai config show')} and ${style.code('notifai config explain <key>')}.`),
|
|
102
105
|
];
|
|
103
106
|
return lines.join('\n');
|
package/dist/ui/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/ui/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,IAAI,EAAqD,MAAM,WAAW,CAAA;AACnF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEzC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,yBAAyB;IAChC,QAAQ,EAAE,qBAAqB;
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/ui/help.ts"],"names":[],"mappings":"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"}
|