@raidiant/notifai 10.1.1 → 10.1.2
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 +20 -0
- package/dist/commands-core.d.ts +1 -1
- package/dist/commands-init.js +9 -6
- package/dist/commands-init.js.map +1 -1
- package/dist/commands-send-support.js +3 -0
- package/dist/commands-send-support.js.map +1 -1
- package/dist/commands-skill.js +72 -54
- package/dist/commands-skill.js.map +1 -1
- package/dist/invocation-context.d.ts +1 -0
- package/dist/invocation-context.js +9 -1
- package/dist/invocation-context.js.map +1 -1
- package/dist/native-skills.d.ts +13 -3
- package/dist/native-skills.js +51 -12
- package/dist/native-skills.js.map +1 -1
- package/dist/node-floor.d.ts +2 -1
- package/dist/node-floor.js +9 -5
- package/dist/node-floor.js.map +1 -1
- package/dist/orca-session-title.d.ts +5 -4
- package/dist/orca-session-title.js +32 -19
- package/dist/orca-session-title.js.map +1 -1
- package/dist/platform.d.ts +11 -17
- package/dist/platform.js +20 -23
- package/dist/platform.js.map +1 -1
- package/dist/release.d.ts +5 -5
- package/dist/release.js +5 -5
- package/dist/setup-destinations.js +1 -1
- package/dist/setup-destinations.js.map +1 -1
- package/dist/skill-integrity.d.ts +49 -0
- package/dist/skill-integrity.js +154 -0
- package/dist/skill-integrity.js.map +1 -0
- package/dist/skill-source/manifest.json +16 -0
- package/dist/skill-source/notifai/SKILL.md +390 -0
- package/dist/skill-source/notifai/references/harness-setup.md +220 -0
- package/package.json +11 -14
- package/src/atomic-file.ts +0 -198
- package/src/claude-wake.test.ts +0 -321
- package/src/claude-wake.ts +0 -499
- package/src/cli-bin.test.ts +0 -176
- package/src/cli-bin.ts +0 -233
- package/src/cli-release.test.ts +0 -46
- package/src/cli-release.ts +0 -78
- package/src/cli-update-contract.ts +0 -9
- package/src/cli-update.test.ts +0 -125
- package/src/client.test.ts +0 -390
- package/src/client.ts +0 -352
- package/src/codex-wake.test.ts +0 -254
- package/src/codex-wake.ts +0 -301
- package/src/command-session.ts +0 -38
- package/src/commands-agent-sessions.ts +0 -72
- package/src/commands-auth.ts +0 -238
- package/src/commands-config.ts +0 -336
- package/src/commands-core.ts +0 -312
- package/src/commands-devices.ts +0 -180
- package/src/commands-doctor.ts +0 -1501
- package/src/commands-guidance.ts +0 -181
- package/src/commands-harness-context.ts +0 -207
- package/src/commands-hook-shape.ts +0 -69
- package/src/commands-hooks.ts +0 -2318
- package/src/commands-init.ts +0 -1055
- package/src/commands-io.ts +0 -108
- package/src/commands-logs.ts +0 -243
- package/src/commands-project.ts +0 -47
- package/src/commands-send-support.test.ts +0 -156
- package/src/commands-send-support.ts +0 -311
- package/src/commands-send.ts +0 -875
- package/src/commands-setup-proof.test.ts +0 -72
- package/src/commands-setup-proof.ts +0 -124
- package/src/commands-skill.test.ts +0 -44
- package/src/commands-skill.ts +0 -204
- package/src/commands-sounds.test.ts +0 -106
- package/src/commands-sounds.ts +0 -49
- package/src/commands-update.ts +0 -180
- package/src/commands.test.ts +0 -8297
- package/src/commands.ts +0 -77
- package/src/config-schema.test.ts +0 -153
- package/src/config-schema.ts +0 -349
- package/src/config.test.ts +0 -581
- package/src/config.ts +0 -475
- package/src/credentials.test.ts +0 -403
- package/src/credentials.ts +0 -403
- package/src/file-lock-process-worker.test.ts +0 -64
- package/src/file-lock.test.ts +0 -320
- package/src/file-lock.ts +0 -393
- package/src/fixtures/hermes-0.20.6-classic-cli-local.json +0 -50
- package/src/fixtures/openclaw-2026.7.1-2-agent-local.json +0 -57
- package/src/generated-session-label.ts +0 -155
- package/src/guidance-content.ts +0 -278
- package/src/guidance-render.ts +0 -56
- package/src/guidance.test.ts +0 -327
- package/src/guidance.ts +0 -233
- package/src/harness-integration.test.ts +0 -294
- package/src/harnesses.test.ts +0 -149
- package/src/harnesses.ts +0 -164
- package/src/hook-adapter.test.ts +0 -496
- package/src/hook-adapter.ts +0 -424
- package/src/hook-input.test.ts +0 -39
- package/src/hook-input.ts +0 -72
- package/src/hooks.test.ts +0 -5824
- package/src/hooks.ts +0 -4011
- package/src/install-hooks.test.ts +0 -1614
- package/src/install-hooks.ts +0 -1501
- package/src/interactive.test.ts +0 -387
- package/src/interactive.ts +0 -858
- package/src/invocation-context.test.ts +0 -352
- package/src/invocation-context.ts +0 -197
- package/src/logging-process-worker.test.ts +0 -45
- package/src/logging.test.ts +0 -544
- package/src/logging.ts +0 -698
- package/src/main-run.ts +0 -45
- package/src/main.ts +0 -12
- package/src/native-skills.test.ts +0 -115
- package/src/native-skills.ts +0 -162
- package/src/node-floor.test.ts +0 -27
- package/src/node-floor.ts +0 -37
- package/src/onboarding-docs.test.ts +0 -25
- package/src/openclaw-plugin.ts +0 -409
- package/src/opencode-plugin.ts +0 -298
- package/src/orca-session-title.test.ts +0 -54
- package/src/orca-session-title.ts +0 -103
- package/src/pack-feedback-slice.test.ts +0 -212
- package/src/pack-feedback-slice.ts +0 -187
- package/src/platform.test.ts +0 -152
- package/src/platform.ts +0 -173
- package/src/program.test.ts +0 -317
- package/src/program.ts +0 -842
- package/src/project-enablement.test.ts +0 -55
- package/src/project-enablement.ts +0 -99
- package/src/question-caps.test.ts +0 -49
- package/src/question-settlement-process.ts +0 -47
- package/src/question-timing.ts +0 -56
- package/src/readiness.test.ts +0 -25
- package/src/readiness.ts +0 -212
- package/src/release.ts +0 -51
- package/src/send-attempts.test.ts +0 -143
- package/src/send-attempts.ts +0 -188
- package/src/send.test.ts +0 -28
- package/src/send.ts +0 -436
- package/src/session-activation.ts +0 -61
- package/src/session-end-log-lock-worker.test.ts +0 -35
- package/src/session-labels.test.ts +0 -490
- package/src/session-labels.ts +0 -474
- package/src/setup-destinations.test.ts +0 -41
- package/src/setup-destinations.ts +0 -50
- package/src/skill.test.ts +0 -426
- package/src/sound-ref.test.ts +0 -31
- package/src/sound-ref.ts +0 -34
- package/src/trust-policy.test.ts +0 -701
- package/src/ui/banner.ts +0 -95
- package/src/ui/config-view.test.ts +0 -90
- package/src/ui/config-view.ts +0 -138
- package/src/ui/help.test.ts +0 -16
- package/src/ui/help.ts +0 -128
- package/src/ui/theme.test.ts +0 -92
- package/src/ui/theme.ts +0 -265
- package/src/url-policy.ts +0 -399
- package/tsconfig.json +0 -10
package/dist/native-skills.js
CHANGED
|
@@ -2,11 +2,13 @@ import { spawn } from 'node:child_process';
|
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { accountHome, npxLaunch } from './platform.js';
|
|
5
|
+
import { packageVersion } from './release.js';
|
|
6
|
+
import { stageShippedSkillBundle } from './skill-integrity.js';
|
|
5
7
|
/**
|
|
6
8
|
* Exact reviewed version of the external `skills` installer.
|
|
7
9
|
*
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
10
|
+
* The installer program must not float on `latest`. Notifai gives this pinned
|
|
11
|
+
* version a verified local copy from the installed npm package.
|
|
10
12
|
*/
|
|
11
13
|
export const SKILLS_INSTALLER_SPEC = 'skills@1.5.23';
|
|
12
14
|
function skillLockPath(scope, cwd, env) {
|
|
@@ -43,9 +45,11 @@ function skillsFromLock(scope, cwd, env) {
|
|
|
43
45
|
{
|
|
44
46
|
name,
|
|
45
47
|
scope,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
// skills@1.5.23 records the source-relative SKILL.md as `skillPath`.
|
|
49
|
+
// It is not the installed destination and is therefore not trusted for
|
|
50
|
+
// readiness. The installer contract puts skills at this conventional
|
|
51
|
+
// path for both scopes.
|
|
52
|
+
path: conventionalSkillPath(scope, name, cwd, env),
|
|
49
53
|
source: typeof entry.source === 'string' ? entry.source : null,
|
|
50
54
|
sourceType: typeof entry.sourceType === 'string' ? entry.sourceType : null,
|
|
51
55
|
sourceUrl: typeof entry.sourceUrl === 'string' ? entry.sourceUrl : null,
|
|
@@ -54,11 +58,26 @@ function skillsFromLock(scope, cwd, env) {
|
|
|
54
58
|
];
|
|
55
59
|
});
|
|
56
60
|
}
|
|
57
|
-
function
|
|
61
|
+
export function runSkillsCommand(args, options, resolveLaunch = npxLaunch) {
|
|
58
62
|
return new Promise((resolve) => {
|
|
59
|
-
|
|
63
|
+
let launch;
|
|
64
|
+
try {
|
|
65
|
+
launch = resolveLaunch(args, options);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
resolve({
|
|
69
|
+
code: 1,
|
|
70
|
+
error: error instanceof Error ? error.message : 'the native skills installer could not start',
|
|
71
|
+
});
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
60
74
|
const child = spawn(launch.file, launch.args, launch.options);
|
|
61
|
-
child.on('error', () =>
|
|
75
|
+
child.on('error', () => {
|
|
76
|
+
resolve({
|
|
77
|
+
code: 1,
|
|
78
|
+
error: 'the native skills installer could not start on this machine; repair the local Node.js and npm installation, then rerun setup',
|
|
79
|
+
});
|
|
80
|
+
});
|
|
62
81
|
child.on('exit', (code) => resolve(code ?? 1));
|
|
63
82
|
});
|
|
64
83
|
}
|
|
@@ -68,9 +87,10 @@ export function skillsAddArgv(options) {
|
|
|
68
87
|
if (options.scope === 'global')
|
|
69
88
|
args.push('--global');
|
|
70
89
|
// An explicit scope is the unattended contract. Native `--yes` keeps all
|
|
71
|
-
// remaining installer prompts non-interactive after the scope is chosen
|
|
90
|
+
// remaining installer prompts non-interactive after the scope is chosen;
|
|
91
|
+
// `--copy` keeps the installed directory independent of temporary staging.
|
|
72
92
|
if (options.scope !== undefined)
|
|
73
|
-
args.push('--yes');
|
|
93
|
+
args.push('--copy', '--yes');
|
|
74
94
|
return args;
|
|
75
95
|
}
|
|
76
96
|
/** argv for uninstalling one skill in one installer scope. */
|
|
@@ -84,10 +104,29 @@ export function skillsRemoveArgv(options) {
|
|
|
84
104
|
/** The only process/filesystem adapter Notifai needs for the external installer. */
|
|
85
105
|
export const nativeSkills = {
|
|
86
106
|
async add(options) {
|
|
87
|
-
|
|
107
|
+
const version = packageVersion();
|
|
108
|
+
if (version === null) {
|
|
109
|
+
return { code: 1, error: 'this CLI cannot establish which packaged skill belongs to it' };
|
|
110
|
+
}
|
|
111
|
+
const staged = stageShippedSkillBundle(options.cwd, version);
|
|
112
|
+
if (!staged.ok)
|
|
113
|
+
return { code: 1, error: staged.error };
|
|
114
|
+
try {
|
|
115
|
+
return await runSkillsCommand(skillsAddArgv({ ...options, source: staged.staged.source }), {
|
|
116
|
+
cwd: options.cwd,
|
|
117
|
+
env: options.env,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
staged.staged.cleanup();
|
|
122
|
+
}
|
|
88
123
|
},
|
|
89
124
|
async remove(options) {
|
|
90
|
-
|
|
125
|
+
const result = await runSkillsCommand(skillsRemoveArgv(options), {
|
|
126
|
+
cwd: options.cwd,
|
|
127
|
+
env: options.env,
|
|
128
|
+
});
|
|
129
|
+
return typeof result === 'number' ? result : result.code;
|
|
91
130
|
},
|
|
92
131
|
async list(scope, cwd, env) {
|
|
93
132
|
// Presence is already on disk. `npx skills list` takes seconds and cannot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-skills.js","sourceRoot":"","sources":["../src/native-skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"native-skills.js","sourceRoot":"","sources":["../src/native-skills.ts"],"names":[],"mappings":"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"}
|
package/dist/node-floor.d.ts
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* floor it is checking — so it can run and report on the runtimes it exists to
|
|
11
11
|
* turn away. Everything else is loaded after it passes.
|
|
12
12
|
*/
|
|
13
|
-
export declare const NODE_MAJOR_FLOOR =
|
|
13
|
+
export declare const NODE_MAJOR_FLOOR = 20;
|
|
14
|
+
export declare const NODE_MINOR_FLOOR = 12;
|
|
14
15
|
/** The major from a `process.version` string, or null when unrecognisable. */
|
|
15
16
|
export declare function nodeMajor(version: string): number | null;
|
|
16
17
|
export declare function belowNodeFloor(version: string): boolean;
|
package/dist/node-floor.js
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* floor it is checking — so it can run and report on the runtimes it exists to
|
|
11
11
|
* turn away. Everything else is loaded after it passes.
|
|
12
12
|
*/
|
|
13
|
-
export const NODE_MAJOR_FLOOR =
|
|
13
|
+
export const NODE_MAJOR_FLOOR = 20;
|
|
14
|
+
export const NODE_MINOR_FLOOR = 12;
|
|
14
15
|
/** The major from a `process.version` string, or null when unrecognisable. */
|
|
15
16
|
export function nodeMajor(version) {
|
|
16
17
|
const match = /^v?(\d+)\./.exec(version);
|
|
@@ -20,16 +21,19 @@ export function nodeMajor(version) {
|
|
|
20
21
|
return Number.isFinite(major) ? major : null;
|
|
21
22
|
}
|
|
22
23
|
export function belowNodeFloor(version) {
|
|
23
|
-
const
|
|
24
|
+
const match = /^v?(\d+)\.(\d+)\.(\d+)/.exec(version);
|
|
24
25
|
// An unrecognisable version is not evidence of an old runtime, and refusing
|
|
25
26
|
// to run on one would strand a reader whose Node is fine.
|
|
26
|
-
|
|
27
|
+
if (match === null)
|
|
28
|
+
return false;
|
|
29
|
+
const [major, minor] = [Number(match[1]), Number(match[2])];
|
|
30
|
+
return major < NODE_MAJOR_FLOOR || (major === NODE_MAJOR_FLOOR && minor < NODE_MINOR_FLOOR);
|
|
27
31
|
}
|
|
28
32
|
/** One sentence for what is wrong, one for what to do about it. */
|
|
29
33
|
export function nodeFloorMessage(version) {
|
|
30
34
|
return [
|
|
31
|
-
`Notifai needs Node ${NODE_MAJOR_FLOOR} or newer; this is Node ${version}.`,
|
|
32
|
-
`next: install Node ${NODE_MAJOR_FLOOR}+ (https://nodejs.org), then run this again.`,
|
|
35
|
+
`Notifai needs Node ${NODE_MAJOR_FLOOR}.${NODE_MINOR_FLOOR} or newer; this is Node ${version}.`,
|
|
36
|
+
`next: install Node ${NODE_MAJOR_FLOOR}.${NODE_MINOR_FLOOR}+ (https://nodejs.org), then run this again.`,
|
|
33
37
|
];
|
|
34
38
|
}
|
|
35
39
|
//# sourceMappingURL=node-floor.js.map
|
package/dist/node-floor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-floor.js","sourceRoot":"","sources":["../src/node-floor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAElC,8EAA8E;AAC9E,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"node-floor.js","sourceRoot":"","sources":["../src/node-floor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAElC,8EAA8E;AAC9E,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACpD,4EAA4E;IAC5E,0DAA0D;IAC1D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAChC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,OAAO,KAAK,GAAG,gBAAgB,IAAI,CAAC,KAAK,KAAK,gBAAgB,IAAI,KAAK,GAAG,gBAAgB,CAAC,CAAA;AAC7F,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO;QACL,sBAAsB,gBAAgB,IAAI,gBAAgB,2BAA2B,OAAO,GAAG;QAC/F,sBAAsB,gBAAgB,IAAI,gBAAgB,8CAA8C;KACzG,CAAA;AACH,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export type OrcaSessionTitleLookup = (env: NodeJS.ProcessEnv) => string | undefined;
|
|
2
2
|
export type OrcaCommand = (executable: string, args: readonly string[]) => string | null;
|
|
3
3
|
/**
|
|
4
|
-
* Read the User-facing task name assigned to this exact Orca
|
|
4
|
+
* Read the User-facing task name assigned to this exact Orca Agent Session.
|
|
5
5
|
*
|
|
6
|
-
* The environment contributes only
|
|
7
|
-
* exact id and
|
|
8
|
-
*
|
|
6
|
+
* The environment contributes only opaque selectors. Orca must return the
|
|
7
|
+
* exact worktree id and path plus the exact pane before its task title becomes
|
|
8
|
+
* trusted; Project, branch, path, worktree, and pane strings are never
|
|
9
|
+
* promoted into an Agent Session label.
|
|
9
10
|
*/
|
|
10
11
|
export declare function readOrcaSessionTitle(env: NodeJS.ProcessEnv, command?: OrcaCommand): string | undefined;
|
|
@@ -34,6 +34,15 @@ function worktreePathFromId(value) {
|
|
|
34
34
|
? worktreePath
|
|
35
35
|
: null;
|
|
36
36
|
}
|
|
37
|
+
function opaqueSelector(value) {
|
|
38
|
+
if (value === undefined ||
|
|
39
|
+
value.length === 0 ||
|
|
40
|
+
value.length > 1_024 ||
|
|
41
|
+
containsControlCharacter(value)) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
37
46
|
function orcaExecutable(env) {
|
|
38
47
|
const configured = env['ORCA_CLI_COMMAND']?.trim();
|
|
39
48
|
if (configured !== undefined && configured.length > 0) {
|
|
@@ -42,11 +51,12 @@ function orcaExecutable(env) {
|
|
|
42
51
|
return env['ORCA_DEV_REPO_ROOT'] === undefined ? 'orca' : 'orca-dev';
|
|
43
52
|
}
|
|
44
53
|
/**
|
|
45
|
-
* Read the User-facing task name assigned to this exact Orca
|
|
54
|
+
* Read the User-facing task name assigned to this exact Orca Agent Session.
|
|
46
55
|
*
|
|
47
|
-
* The environment contributes only
|
|
48
|
-
* exact id and
|
|
49
|
-
*
|
|
56
|
+
* The environment contributes only opaque selectors. Orca must return the
|
|
57
|
+
* exact worktree id and path plus the exact pane before its task title becomes
|
|
58
|
+
* trusted; Project, branch, path, worktree, and pane strings are never
|
|
59
|
+
* promoted into an Agent Session label.
|
|
50
60
|
*/
|
|
51
61
|
export function readOrcaSessionTitle(env, command = runOrcaCommand) {
|
|
52
62
|
if (env['TERM_PROGRAM'] !== 'Orca')
|
|
@@ -57,18 +67,15 @@ export function readOrcaSessionTitle(env, command = runOrcaCommand) {
|
|
|
57
67
|
const expectedPath = worktreePathFromId(worktreeId);
|
|
58
68
|
if (expectedPath === null)
|
|
59
69
|
return undefined;
|
|
70
|
+
const paneKey = opaqueSelector(env['ORCA_PANE_KEY']);
|
|
71
|
+
if (paneKey === null)
|
|
72
|
+
return undefined;
|
|
60
73
|
const executable = orcaExecutable(env);
|
|
61
74
|
if (executable === null)
|
|
62
75
|
return undefined;
|
|
63
76
|
let output;
|
|
64
77
|
try {
|
|
65
|
-
output = command(executable, [
|
|
66
|
-
'worktree',
|
|
67
|
-
'show',
|
|
68
|
-
'--worktree',
|
|
69
|
-
`id:${worktreeId}`,
|
|
70
|
-
'--json',
|
|
71
|
-
]);
|
|
78
|
+
output = command(executable, ['worktree', 'ps', '--json']);
|
|
72
79
|
}
|
|
73
80
|
catch {
|
|
74
81
|
return undefined;
|
|
@@ -85,14 +92,20 @@ export function readOrcaSessionTitle(env, command = runOrcaCommand) {
|
|
|
85
92
|
if (typeof parsed !== 'object' || parsed === null)
|
|
86
93
|
return undefined;
|
|
87
94
|
const response = parsed;
|
|
88
|
-
|
|
89
|
-
if (response.ok !== true ||
|
|
90
|
-
worktree?.id !== worktreeId ||
|
|
91
|
-
worktree.path !== expectedPath ||
|
|
92
|
-
typeof worktree.displayName !== 'string' ||
|
|
93
|
-
worktree.displayName.trim().length === 0) {
|
|
95
|
+
if (response.ok !== true || !Array.isArray(response.result?.worktrees))
|
|
94
96
|
return undefined;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
const worktrees = response.result.worktrees.filter((candidate) => typeof candidate === 'object' &&
|
|
98
|
+
candidate !== null &&
|
|
99
|
+
candidate.worktreeId === worktreeId &&
|
|
100
|
+
candidate.path === expectedPath);
|
|
101
|
+
if (worktrees.length !== 1 || !Array.isArray(worktrees[0].agents))
|
|
102
|
+
return undefined;
|
|
103
|
+
const agents = worktrees[0].agents.filter((candidate) => typeof candidate === 'object' &&
|
|
104
|
+
candidate !== null &&
|
|
105
|
+
candidate.paneKey === paneKey);
|
|
106
|
+
if (agents.length !== 1)
|
|
107
|
+
return undefined;
|
|
108
|
+
const taskTitle = agents[0].taskTitle;
|
|
109
|
+
return typeof taskTitle === 'string' && taskTitle.trim().length > 0 ? taskTitle : undefined;
|
|
97
110
|
}
|
|
98
111
|
//# sourceMappingURL=orca-session-title.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orca-session-title.js","sourceRoot":"","sources":["../src/orca-session-title.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,IAAI,MAAM,WAAW,CAAA;AAK5B,MAAM,cAAc,GAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;IACvD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE;YACpC,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,GAAG,GAAG,IAAI;YACrB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC,IAAI,EAAE,CAAA;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;QAC1C,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC/C,OAAO,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,GAAG,CAAA;IAC5C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,IAAI,wBAAwB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9F,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IACxC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;IAC/C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAChF,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;QAC/E,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,SAAS,cAAc,CAAC,GAAsB;IAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAA;IAClD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAA;IACjE,CAAC;IACD,OAAO,GAAG,CAAC,oBAAoB,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAA;AACtE,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"orca-session-title.js","sourceRoot":"","sources":["../src/orca-session-title.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,IAAI,MAAM,WAAW,CAAA;AAK5B,MAAM,cAAc,GAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;IACvD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE;YACpC,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,GAAG,GAAG,IAAI;YACrB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC,IAAI,EAAE,CAAA;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;QAC1C,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC/C,OAAO,SAAS,GAAG,EAAE,IAAI,SAAS,KAAK,GAAG,CAAA;IAC5C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,IAAI,wBAAwB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9F,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IACxC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;IAC/C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAChF,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;QAC/E,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,SAAS,cAAc,CAAC,KAAyB;IAC/C,IACE,KAAK,KAAK,SAAS;QACnB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,MAAM,GAAG,KAAK;QACpB,wBAAwB,CAAC,KAAK,CAAC,EAC/B,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,cAAc,CAAC,GAAsB;IAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAA;IAClD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAA;IACjE,CAAC;IACD,OAAO,GAAG,CAAC,oBAAoB,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAA;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAsB,EACtB,UAAuB,cAAc;IAErC,IAAI,GAAG,CAAC,cAAc,CAAC,KAAK,MAAM;QAAE,OAAO,SAAS,CAAA;IACpD,MAAM,UAAU,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAC1C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC9C,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACnD,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;IACpD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACtC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAEzC,IAAI,MAAqB,CAAA;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IAEtD,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACnE,MAAM,QAAQ,GAAG,MAKhB,CAAA;IACD,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAExF,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAChD,CAAC,SAAS,EAAuE,EAAE,CACjF,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QACjB,SAAsC,CAAC,UAAU,KAAK,UAAU;QAChE,SAAgC,CAAC,IAAI,KAAK,YAAY,CAC1D,CAAA;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IAEpF,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,MAAM,CACxC,CAAC,SAAS,EAAyD,EAAE,CACnE,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QACjB,SAAmC,CAAC,OAAO,KAAK,OAAO,CAC3D,CAAA;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAA;IACtC,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7F,CAAC"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -44,30 +44,24 @@ export declare function urlOpenLaunch(url: string, platform?: NodeJS.Platform):
|
|
|
44
44
|
/** Best-effort browser open. Failure is silent: the URL is printed either way. */
|
|
45
45
|
export declare function openUrl(url: string, platform?: NodeJS.Platform): void;
|
|
46
46
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* doubled. Everything else is inert once quoted, including `& | > < ^`.
|
|
51
|
-
*/
|
|
52
|
-
export declare function quoteCmdArgument(value: string): string;
|
|
53
|
-
/**
|
|
54
|
-
* A single `/c` argument for `cmd /d /s /c`.
|
|
55
|
-
*
|
|
56
|
-
* `/s` strips the first and last quote when both ends are quotes, so the
|
|
57
|
-
* payload is wrapped once more around the already-quoted argv. What cmd then
|
|
58
|
-
* runs is `"npx.cmd" "-y" …` with no unquoted metacharacters.
|
|
47
|
+
* Resolve npm's JavaScript npx entry point when this Windows Node installation
|
|
48
|
+
* exposes it. Invoking that file with the current Node runtime avoids the
|
|
49
|
+
* cwd-sensitive relative paths embedded in some npx.cmd shims.
|
|
59
50
|
*/
|
|
60
|
-
export declare function
|
|
51
|
+
export declare function windowsNpxCli(nodeExecutable?: string): string | null;
|
|
61
52
|
/**
|
|
62
|
-
* Launch `npx`
|
|
53
|
+
* Launch `npx` without making its resolution depend on the target project.
|
|
63
54
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
55
|
+
* Prefer npm's JavaScript entry point, which avoids both CreateProcess's
|
|
56
|
+
* inability to run `.cmd` files and shims whose relative paths depend on the
|
|
57
|
+
* working directory. A nonstandard Windows Node layout fails closed instead
|
|
58
|
+
* of executing an environment-selected shell or command shim; POSIX can
|
|
59
|
+
* execute `npx` directly without a shell.
|
|
67
60
|
*/
|
|
68
61
|
export declare function npxLaunch(args: readonly string[], options: {
|
|
69
62
|
cwd: string;
|
|
70
63
|
env: NodeJS.ProcessEnv;
|
|
64
|
+
nodeExecutable?: string;
|
|
71
65
|
platform?: NodeJS.Platform;
|
|
72
66
|
stdio?: SpawnOptions['stdio'];
|
|
73
67
|
}): ProcessLaunch;
|
package/dist/platform.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
2
3
|
import os from 'node:os';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
/** Drive letter or UNC. MSYS `/c/Users/…` is not a Windows account home. */
|
|
@@ -93,44 +94,40 @@ export function openUrl(url, platform = process.platform) {
|
|
|
93
94
|
}
|
|
94
95
|
}
|
|
95
96
|
/**
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* doubled. Everything else is inert once quoted, including `& | > < ^`.
|
|
100
|
-
*/
|
|
101
|
-
export function quoteCmdArgument(value) {
|
|
102
|
-
return `"${value.replace(/%/g, '%%').replace(/"/g, '""')}"`;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* A single `/c` argument for `cmd /d /s /c`.
|
|
106
|
-
*
|
|
107
|
-
* `/s` strips the first and last quote when both ends are quotes, so the
|
|
108
|
-
* payload is wrapped once more around the already-quoted argv. What cmd then
|
|
109
|
-
* runs is `"npx.cmd" "-y" …` with no unquoted metacharacters.
|
|
97
|
+
* Resolve npm's JavaScript npx entry point when this Windows Node installation
|
|
98
|
+
* exposes it. Invoking that file with the current Node runtime avoids the
|
|
99
|
+
* cwd-sensitive relative paths embedded in some npx.cmd shims.
|
|
110
100
|
*/
|
|
111
|
-
export function
|
|
112
|
-
|
|
101
|
+
export function windowsNpxCli(nodeExecutable = process.execPath) {
|
|
102
|
+
const bundledWithNode = path.join(path.dirname(nodeExecutable), 'node_modules', 'npm', 'bin', 'npx-cli.js');
|
|
103
|
+
return existsSync(bundledWithNode) ? bundledWithNode : null;
|
|
113
104
|
}
|
|
114
105
|
/**
|
|
115
|
-
* Launch `npx`
|
|
106
|
+
* Launch `npx` without making its resolution depend on the target project.
|
|
116
107
|
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
108
|
+
* Prefer npm's JavaScript entry point, which avoids both CreateProcess's
|
|
109
|
+
* inability to run `.cmd` files and shims whose relative paths depend on the
|
|
110
|
+
* working directory. A nonstandard Windows Node layout fails closed instead
|
|
111
|
+
* of executing an environment-selected shell or command shim; POSIX can
|
|
112
|
+
* execute `npx` directly without a shell.
|
|
120
113
|
*/
|
|
121
114
|
export function npxLaunch(args, options) {
|
|
122
115
|
const platform = options.platform ?? process.platform;
|
|
123
116
|
const stdio = options.stdio ?? 'inherit';
|
|
124
117
|
if (platform === 'win32') {
|
|
118
|
+
const nodeExecutable = options.nodeExecutable ?? process.execPath;
|
|
119
|
+
const npxCli = windowsNpxCli(nodeExecutable);
|
|
120
|
+
if (npxCli === null) {
|
|
121
|
+
throw new Error('this Windows Node.js installation is missing its bundled npm tools; repair or reinstall Node.js, then rerun setup');
|
|
122
|
+
}
|
|
125
123
|
return {
|
|
126
|
-
file:
|
|
127
|
-
args: [
|
|
124
|
+
file: nodeExecutable,
|
|
125
|
+
args: [npxCli, ...args],
|
|
128
126
|
options: {
|
|
129
127
|
cwd: options.cwd,
|
|
130
128
|
env: options.env,
|
|
131
129
|
stdio,
|
|
132
130
|
windowsHide: true,
|
|
133
|
-
windowsVerbatimArguments: true,
|
|
134
131
|
},
|
|
135
132
|
};
|
|
136
133
|
}
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
package/dist/release.d.ts
CHANGED
|
@@ -19,11 +19,11 @@ export declare function packageVersion(): string | null;
|
|
|
19
19
|
/**
|
|
20
20
|
* Where `npx skills add` fetches the agent skill from, as printed to users.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
22
|
+
* The human-readable release tag naming this exact build. The installer does
|
|
23
|
+
* not trust or fetch this ref: it installs the verified skill embedded in the
|
|
24
|
+
* npm package through a short-lived local source. Deriving the label from the
|
|
25
|
+
* version keeps release identity from drifting; it used to be maintained by
|
|
26
|
+
* hand in three places.
|
|
27
27
|
*
|
|
28
28
|
* In the skills CLI grammar `owner/repo#ref` selects a Git ref, while
|
|
29
29
|
* `owner/repo@name` selects a skill — so the `#` here is load-bearing.
|
package/dist/release.js
CHANGED
|
@@ -36,11 +36,11 @@ export function packageVersion() {
|
|
|
36
36
|
/**
|
|
37
37
|
* Where `npx skills add` fetches the agent skill from, as printed to users.
|
|
38
38
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
39
|
+
* The human-readable release tag naming this exact build. The installer does
|
|
40
|
+
* not trust or fetch this ref: it installs the verified skill embedded in the
|
|
41
|
+
* npm package through a short-lived local source. Deriving the label from the
|
|
42
|
+
* version keeps release identity from drifting; it used to be maintained by
|
|
43
|
+
* hand in three places.
|
|
44
44
|
*
|
|
45
45
|
* In the skills CLI grammar `owner/repo#ref` selects a Git ref, while
|
|
46
46
|
* `owner/repo@name` selects a skill — so the `#` here is load-bearing.
|
|
@@ -22,7 +22,7 @@ export function companionPlatformLabel(platform) {
|
|
|
22
22
|
*/
|
|
23
23
|
function dashboardOrigin(baseUrl) {
|
|
24
24
|
const normalized = baseUrl.replace(/\/+$/, '');
|
|
25
|
-
if (normalized === 'https://api.notifai.sh'
|
|
25
|
+
if (normalized === 'https://api.notifai.sh') {
|
|
26
26
|
return 'https://app.notifai.sh';
|
|
27
27
|
}
|
|
28
28
|
return normalized;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-destinations.js","sourceRoot":"","sources":["../src/setup-destinations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,yEAAyE;AACzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAA;AAGjE,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;AACrD,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9C,IAAI,UAAU,KAAK,wBAAwB,
|
|
1
|
+
{"version":3,"file":"setup-destinations.js","sourceRoot":"","sources":["../src/setup-destinations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,yEAAyE;AACzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAA;AAGjE,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;AACrD,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9C,IAAI,UAAU,KAAK,wBAAwB,EAAE,CAAC;QAC5C,OAAO,wBAAwB,CAAA;IACjC,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,QAA4B;IAC1E,MAAM,IAAI,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,eAAe,CAAA;IACvD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,aAAa,QAAQ,EAAE,CAAA;AACvE,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,QAA4B;IAC7E,MAAM,IAAI,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAA;IAC1D,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,aAAa,QAAQ,EAAE,CAAA;AACvE,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAA;AAC9C,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface SkillManifestFile {
|
|
2
|
+
path: string;
|
|
3
|
+
sha256: string;
|
|
4
|
+
}
|
|
5
|
+
export interface SkillManifest {
|
|
6
|
+
schema_version: 1;
|
|
7
|
+
package_version: string;
|
|
8
|
+
skill: 'notifai';
|
|
9
|
+
digest: string;
|
|
10
|
+
files: SkillManifestFile[];
|
|
11
|
+
}
|
|
12
|
+
export interface VerifiedSkillBundle {
|
|
13
|
+
sourceRoot: string;
|
|
14
|
+
skillRoot: string;
|
|
15
|
+
manifest: SkillManifest;
|
|
16
|
+
}
|
|
17
|
+
export type SkillBundleResult = {
|
|
18
|
+
ok: true;
|
|
19
|
+
bundle: VerifiedSkillBundle;
|
|
20
|
+
} | {
|
|
21
|
+
ok: false;
|
|
22
|
+
error: string;
|
|
23
|
+
};
|
|
24
|
+
export interface StagedSkillBundle {
|
|
25
|
+
/** Machine-neutral path relative to the installer project cwd. */
|
|
26
|
+
source: string;
|
|
27
|
+
cleanup(): void;
|
|
28
|
+
}
|
|
29
|
+
/** Local-source grammar accepted by skills@1.5.23 on every supported host. */
|
|
30
|
+
export declare function portableLocalInstallerSource(cwd: string, source: string, platform?: NodeJS.Platform): string;
|
|
31
|
+
/** Build the exact content identity stored beside the skill in the npm tarball. */
|
|
32
|
+
export declare function createSkillManifest(skillRoot: string, packageVersion: string): SkillManifest;
|
|
33
|
+
/** Verify a bundle before either its bytes or its manifest are trusted. */
|
|
34
|
+
export declare function verifySkillBundle(sourceRoot: string, expectedPackageVersion?: string): SkillBundleResult;
|
|
35
|
+
/** Locate the generated bundle in a published install or a built source checkout. */
|
|
36
|
+
export declare function shippedSkillBundle(expectedPackageVersion?: string): SkillBundleResult;
|
|
37
|
+
/**
|
|
38
|
+
* Copy the verified npm-bundled skill to a short-lived project-relative source
|
|
39
|
+
* understood by the pinned native installer. The relative argument keeps the
|
|
40
|
+
* installer lock free of account names and absolute paths; the copied install
|
|
41
|
+
* remains after this staging directory is removed.
|
|
42
|
+
*/
|
|
43
|
+
export declare function stageShippedSkillBundle(cwd: string, packageVersion: string): {
|
|
44
|
+
ok: true;
|
|
45
|
+
staged: StagedSkillBundle;
|
|
46
|
+
} | {
|
|
47
|
+
ok: false;
|
|
48
|
+
error: string;
|
|
49
|
+
};
|