@inf-monkeys-tech/monkeys-cli 0.11.5 → 0.12.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 +17 -14
- package/README.zh.md +11 -8
- package/bin/run.js +4 -52
- package/bin/update-cache.js +3 -1
- package/dist/cli/run.d.ts +2 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +45 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/command/metadata.d.ts +1 -2
- package/dist/command/metadata.d.ts.map +1 -1
- package/dist/command/metadata.js +15 -24
- package/dist/command/metadata.js.map +1 -1
- package/dist/commands/{agent → dev-agent}/work/assign/existing.d.ts +1 -1
- package/dist/commands/dev-agent/work/assign/existing.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/assign/existing.js +10 -10
- package/dist/commands/dev-agent/work/assign/existing.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/assign/new.d.ts +1 -1
- package/dist/commands/dev-agent/work/assign/new.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/assign/new.js +8 -8
- package/dist/commands/dev-agent/work/assign/new.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/collaborators.d.ts +1 -1
- package/dist/commands/dev-agent/work/collaborators.d.ts.map +1 -0
- package/dist/commands/dev-agent/work/collaborators.js +20 -0
- package/dist/commands/dev-agent/work/collaborators.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/conversation/send.d.ts +1 -1
- package/dist/commands/dev-agent/work/conversation/send.d.ts.map +1 -0
- package/dist/commands/dev-agent/work/conversation/send.js +24 -0
- package/dist/commands/dev-agent/work/conversation/send.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/create.d.ts +1 -1
- package/dist/commands/dev-agent/work/create.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/create.js +15 -15
- package/dist/commands/dev-agent/work/create.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/delete.d.ts +1 -1
- package/dist/commands/dev-agent/work/delete.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/delete.js +8 -8
- package/dist/commands/dev-agent/work/delete.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/get.d.ts +1 -1
- package/dist/commands/dev-agent/work/get.d.ts.map +1 -0
- package/dist/commands/dev-agent/work/get.js +21 -0
- package/dist/commands/dev-agent/work/get.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/list.d.ts +1 -1
- package/dist/commands/dev-agent/work/list.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/list.js +11 -11
- package/dist/commands/dev-agent/work/list.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/pause.d.ts +1 -1
- package/dist/commands/dev-agent/work/pause.d.ts.map +1 -0
- package/dist/commands/dev-agent/work/pause.js +24 -0
- package/dist/commands/dev-agent/work/pause.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/resume.d.ts +1 -1
- package/dist/commands/dev-agent/work/resume.d.ts.map +1 -0
- package/dist/commands/dev-agent/work/resume.js +24 -0
- package/dist/commands/dev-agent/work/resume.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/retry.d.ts +1 -1
- package/dist/commands/dev-agent/work/retry.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/retry.js +11 -11
- package/dist/commands/dev-agent/work/retry.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/review/approve.d.ts +1 -1
- package/dist/commands/dev-agent/work/review/approve.d.ts.map +1 -0
- package/dist/commands/dev-agent/work/review/approve.js +27 -0
- package/dist/commands/dev-agent/work/review/approve.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/review/request-changes.d.ts +1 -1
- package/dist/commands/dev-agent/work/review/request-changes.d.ts.map +1 -0
- package/dist/commands/dev-agent/work/review/request-changes.js +29 -0
- package/dist/commands/dev-agent/work/review/request-changes.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/runtime/list.d.ts +1 -1
- package/dist/commands/dev-agent/work/runtime/list.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/runtime/list.js +9 -9
- package/dist/commands/dev-agent/work/runtime/list.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/spec/approve.d.ts +1 -1
- package/dist/commands/dev-agent/work/spec/approve.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/spec/approve.js +10 -10
- package/dist/commands/dev-agent/work/spec/approve.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/spec/request-revision.d.ts +1 -1
- package/dist/commands/dev-agent/work/spec/request-revision.d.ts.map +1 -0
- package/dist/commands/dev-agent/work/spec/request-revision.js +28 -0
- package/dist/commands/dev-agent/work/spec/request-revision.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/update.d.ts +1 -1
- package/dist/commands/dev-agent/work/update.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/update.js +15 -15
- package/dist/commands/dev-agent/work/update.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/wait.d.ts +1 -1
- package/dist/commands/dev-agent/work/wait.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/wait.js +12 -12
- package/dist/commands/dev-agent/work/wait.js.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/watch.d.ts +1 -1
- package/dist/commands/dev-agent/work/watch.d.ts.map +1 -0
- package/dist/commands/{agent → dev-agent}/work/watch.js +14 -17
- package/dist/commands/dev-agent/work/watch.js.map +1 -0
- package/dist/commands/execution/watch.d.ts.map +1 -1
- package/dist/commands/execution/watch.js +4 -7
- package/dist/commands/execution/watch.js.map +1 -1
- package/dist/commands/install.d.ts +12 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +66 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +68 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +0 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/local-command.d.ts +0 -2
- package/dist/config/local-command.d.ts.map +1 -1
- package/dist/config/local-command.js +8 -14
- package/dist/config/local-command.js.map +1 -1
- package/dist/config/registry.d.ts.map +1 -1
- package/dist/config/registry.js +2 -12
- package/dist/config/registry.js.map +1 -1
- package/dist/config/store.d.ts.map +1 -1
- package/dist/config/store.js +46 -5
- package/dist/config/store.js.map +1 -1
- package/dist/contracts/result.d.ts +1 -1
- package/dist/contracts/result.js +1 -1
- package/dist/contracts/version.d.ts +3 -3
- package/dist/contracts/version.d.ts.map +1 -1
- package/dist/contracts/version.js +3 -3
- package/dist/contracts/version.js.map +1 -1
- package/dist/dev-agent-work/adapters.d.ts +15 -0
- package/dist/dev-agent-work/adapters.d.ts.map +1 -0
- package/dist/{agent-work → dev-agent-work}/adapters.js +25 -25
- package/dist/dev-agent-work/adapters.js.map +1 -0
- package/dist/{agent-work → dev-agent-work}/client.d.ts +23 -23
- package/dist/dev-agent-work/client.d.ts.map +1 -0
- package/dist/{agent-work → dev-agent-work}/client.js +26 -24
- package/dist/dev-agent-work/client.js.map +1 -0
- package/dist/{agent-work → dev-agent-work}/context.d.ts +2 -2
- package/dist/dev-agent-work/context.d.ts.map +1 -0
- package/dist/{agent-work → dev-agent-work}/context.js +3 -3
- package/dist/dev-agent-work/context.js.map +1 -0
- package/dist/{agent-work → dev-agent-work}/contracts.d.ts +46 -46
- package/dist/dev-agent-work/contracts.d.ts.map +1 -0
- package/dist/{agent-work → dev-agent-work}/contracts.js +19 -13
- package/dist/dev-agent-work/contracts.js.map +1 -0
- package/dist/{agent-work → dev-agent-work}/definitions.d.ts +2 -2
- package/dist/dev-agent-work/definitions.d.ts.map +1 -0
- package/dist/dev-agent-work/definitions.js +33 -0
- package/dist/dev-agent-work/definitions.js.map +1 -0
- package/dist/dev-agent-work/index.d.ts.map +1 -0
- package/dist/dev-agent-work/index.js.map +1 -0
- package/dist/{agent-work → dev-agent-work}/input.d.ts +1 -1
- package/dist/dev-agent-work/input.d.ts.map +1 -0
- package/dist/{agent-work → dev-agent-work}/input.js +16 -16
- package/dist/dev-agent-work/input.js.map +1 -0
- package/dist/{agent-work → dev-agent-work}/output.d.ts +3 -3
- package/dist/dev-agent-work/output.d.ts.map +1 -0
- package/dist/dev-agent-work/output.js +16 -0
- package/dist/dev-agent-work/output.js.map +1 -0
- package/dist/dev-agent-work/polling.d.ts +23 -0
- package/dist/dev-agent-work/polling.d.ts.map +1 -0
- package/dist/{agent-work → dev-agent-work}/polling.js +8 -8
- package/dist/dev-agent-work/polling.js.map +1 -0
- package/dist/dev-agent-work/runtime.d.ts +2 -0
- package/dist/dev-agent-work/runtime.d.ts.map +1 -0
- package/dist/{agent-work → dev-agent-work}/runtime.js +3 -3
- package/dist/dev-agent-work/runtime.js.map +1 -0
- package/dist/errors/cli-error.d.ts +3 -0
- package/dist/errors/cli-error.d.ts.map +1 -1
- package/dist/errors/cli-error.js +17 -0
- package/dist/errors/cli-error.js.map +1 -1
- package/dist/output/render.js +1 -1
- package/dist/schema/command-schema.d.ts +2 -1
- package/dist/schema/command-schema.d.ts.map +1 -1
- package/dist/schema/command-schema.js +2 -1
- package/dist/schema/command-schema.js.map +1 -1
- package/dist/security/redact.d.ts.map +1 -1
- package/dist/security/redact.js +16 -2
- package/dist/security/redact.js.map +1 -1
- package/dist/skills/content.d.ts +1 -0
- package/dist/skills/content.d.ts.map +1 -1
- package/dist/skills/content.js +2 -2
- package/dist/skills/content.js.map +1 -1
- package/dist/skills/state.d.ts +33 -7
- package/dist/skills/state.d.ts.map +1 -1
- package/dist/skills/state.js +103 -14
- package/dist/skills/state.js.map +1 -1
- package/dist/skills/sync.d.ts +5 -2
- package/dist/skills/sync.d.ts.map +1 -1
- package/dist/skills/sync.js +110 -9
- package/dist/skills/sync.js.map +1 -1
- package/dist/transport/http-client.d.ts.map +1 -1
- package/dist/transport/http-client.js +46 -20
- package/dist/transport/http-client.js.map +1 -1
- package/dist/transport/multipart-upload.d.ts.map +1 -1
- package/dist/transport/multipart-upload.js +10 -7
- package/dist/transport/multipart-upload.js.map +1 -1
- package/dist/transport/url-policy.d.ts +2 -0
- package/dist/transport/url-policy.d.ts.map +1 -0
- package/dist/transport/url-policy.js +33 -0
- package/dist/transport/url-policy.js.map +1 -0
- package/dist/update/finalize.d.ts +26 -0
- package/dist/update/finalize.d.ts.map +1 -0
- package/dist/update/finalize.js +5 -0
- package/dist/update/finalize.js.map +1 -0
- package/dist/update/installation.d.ts +17 -0
- package/dist/update/installation.d.ts.map +1 -0
- package/dist/update/installation.js +63 -0
- package/dist/update/installation.js.map +1 -0
- package/dist/update/notifier.d.ts +4 -4
- package/dist/update/notifier.d.ts.map +1 -1
- package/dist/update/notifier.js +68 -39
- package/dist/update/notifier.js.map +1 -1
- package/dist/update/process.d.ts +11 -0
- package/dist/update/process.d.ts.map +1 -0
- package/dist/update/process.js +20 -0
- package/dist/update/process.js.map +1 -0
- package/dist/update/updater.d.ts +12 -13
- package/dist/update/updater.d.ts.map +1 -1
- package/dist/update/updater.js +149 -59
- package/dist/update/updater.js.map +1 -1
- package/oclif.manifest.json +3901 -6477
- package/package.json +7 -15
- package/skills/monkeys-dev-agent-work/SKILL.md +21 -0
- package/skills/monkeys-dev-agent-work/agents/openai.yaml +4 -0
- package/skills/{monkeys-agent-work/references/agent-work.md → monkeys-dev-agent-work/references/dev-agent-work.md} +28 -28
- package/skills/monkeys-shared/SKILL.md +1 -1
- package/skills/monkeys-shared/references/compatibility.md +4 -4
- package/skills/monkeys-shared/references/platform-overview.md +3 -3
- package/bin/install-wizard.js +0 -77
- package/dist/agent-work/adapters.d.ts +0 -15
- package/dist/agent-work/adapters.d.ts.map +0 -1
- package/dist/agent-work/adapters.js.map +0 -1
- package/dist/agent-work/client.d.ts.map +0 -1
- package/dist/agent-work/client.js.map +0 -1
- package/dist/agent-work/context.d.ts.map +0 -1
- package/dist/agent-work/context.js.map +0 -1
- package/dist/agent-work/contracts.d.ts.map +0 -1
- package/dist/agent-work/contracts.js.map +0 -1
- package/dist/agent-work/definitions.d.ts.map +0 -1
- package/dist/agent-work/definitions.js +0 -33
- package/dist/agent-work/definitions.js.map +0 -1
- package/dist/agent-work/index.d.ts.map +0 -1
- package/dist/agent-work/index.js.map +0 -1
- package/dist/agent-work/input.d.ts.map +0 -1
- package/dist/agent-work/input.js.map +0 -1
- package/dist/agent-work/output.d.ts.map +0 -1
- package/dist/agent-work/output.js +0 -16
- package/dist/agent-work/output.js.map +0 -1
- package/dist/agent-work/polling.d.ts +0 -23
- package/dist/agent-work/polling.d.ts.map +0 -1
- package/dist/agent-work/polling.js.map +0 -1
- package/dist/agent-work/runtime.d.ts +0 -2
- package/dist/agent-work/runtime.d.ts.map +0 -1
- package/dist/agent-work/runtime.js.map +0 -1
- package/dist/commands/agent/work/assign/existing.d.ts.map +0 -1
- package/dist/commands/agent/work/assign/existing.js.map +0 -1
- package/dist/commands/agent/work/assign/new.d.ts.map +0 -1
- package/dist/commands/agent/work/assign/new.js.map +0 -1
- package/dist/commands/agent/work/collaborators.d.ts.map +0 -1
- package/dist/commands/agent/work/collaborators.js +0 -20
- package/dist/commands/agent/work/collaborators.js.map +0 -1
- package/dist/commands/agent/work/conversation/send.d.ts.map +0 -1
- package/dist/commands/agent/work/conversation/send.js +0 -24
- package/dist/commands/agent/work/conversation/send.js.map +0 -1
- package/dist/commands/agent/work/create.d.ts.map +0 -1
- package/dist/commands/agent/work/create.js.map +0 -1
- package/dist/commands/agent/work/delete.d.ts.map +0 -1
- package/dist/commands/agent/work/delete.js.map +0 -1
- package/dist/commands/agent/work/get.d.ts.map +0 -1
- package/dist/commands/agent/work/get.js +0 -21
- package/dist/commands/agent/work/get.js.map +0 -1
- package/dist/commands/agent/work/list.d.ts.map +0 -1
- package/dist/commands/agent/work/list.js.map +0 -1
- package/dist/commands/agent/work/pause.d.ts.map +0 -1
- package/dist/commands/agent/work/pause.js +0 -24
- package/dist/commands/agent/work/pause.js.map +0 -1
- package/dist/commands/agent/work/resume.d.ts.map +0 -1
- package/dist/commands/agent/work/resume.js +0 -24
- package/dist/commands/agent/work/resume.js.map +0 -1
- package/dist/commands/agent/work/retry.d.ts.map +0 -1
- package/dist/commands/agent/work/retry.js.map +0 -1
- package/dist/commands/agent/work/review/approve.d.ts.map +0 -1
- package/dist/commands/agent/work/review/approve.js +0 -27
- package/dist/commands/agent/work/review/approve.js.map +0 -1
- package/dist/commands/agent/work/review/request-changes.d.ts.map +0 -1
- package/dist/commands/agent/work/review/request-changes.js +0 -29
- package/dist/commands/agent/work/review/request-changes.js.map +0 -1
- package/dist/commands/agent/work/runtime/list.d.ts.map +0 -1
- package/dist/commands/agent/work/runtime/list.js.map +0 -1
- package/dist/commands/agent/work/spec/approve.d.ts.map +0 -1
- package/dist/commands/agent/work/spec/approve.js.map +0 -1
- package/dist/commands/agent/work/spec/request-revision.d.ts.map +0 -1
- package/dist/commands/agent/work/spec/request-revision.js +0 -28
- package/dist/commands/agent/work/spec/request-revision.js.map +0 -1
- package/dist/commands/agent/work/update.d.ts.map +0 -1
- package/dist/commands/agent/work/update.js.map +0 -1
- package/dist/commands/agent/work/wait.d.ts.map +0 -1
- package/dist/commands/agent/work/wait.js.map +0 -1
- package/dist/commands/agent/work/watch.d.ts.map +0 -1
- package/dist/commands/agent/work/watch.js.map +0 -1
- package/dist/config/fast-subscription-list.d.ts +0 -6
- package/dist/config/fast-subscription-list.d.ts.map +0 -1
- package/dist/config/fast-subscription-list.js +0 -19
- package/dist/config/fast-subscription-list.js.map +0 -1
- package/skills/monkeys-agent-work/SKILL.md +0 -21
- package/skills/monkeys-agent-work/agents/openai.yaml +0 -4
- /package/dist/{agent-work → dev-agent-work}/index.d.ts +0 -0
- /package/dist/{agent-work → dev-agent-work}/index.js +0 -0
package/dist/update/updater.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { listBundledSkills } from '../skills/content.js';
|
|
6
|
-
import { writeSkillsState } from '../skills/state.js';
|
|
7
|
-
export const MONKEYS_NPM_PACKAGE = '@inf-monkeys-tech/monkeys-cli';
|
|
8
|
-
const UPDATE_PROCESS_TIMEOUT_MS = 120_000;
|
|
1
|
+
import { readFile, realpath } from 'node:fs/promises';
|
|
2
|
+
import { isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
3
|
+
import { packageManagerInstallArgs, resolveExecutableOnPath } from './installation.js';
|
|
4
|
+
import { MONKEYS_NPM_PACKAGE, runUpdateProcess } from './process.js';
|
|
9
5
|
const MAX_PROCESS_DETAIL = 2_000;
|
|
6
|
+
export { MONKEYS_NPM_PACKAGE, runUpdateProcess } from './process.js';
|
|
10
7
|
export class UpdateProcessError extends Error {
|
|
11
8
|
command;
|
|
12
9
|
detail;
|
|
@@ -17,22 +14,6 @@ export class UpdateProcessError extends Error {
|
|
|
17
14
|
this.detail = detail;
|
|
18
15
|
}
|
|
19
16
|
}
|
|
20
|
-
export function runUpdateProcess(command, args) {
|
|
21
|
-
const windows = process.platform === 'win32';
|
|
22
|
-
const executable = windows ? (process.env.ComSpec ?? 'cmd.exe') : command;
|
|
23
|
-
const commandArgs = windows ? ['/d', '/s', '/c', command, ...args] : args;
|
|
24
|
-
const result = spawnSync(executable, commandArgs, {
|
|
25
|
-
encoding: 'utf8',
|
|
26
|
-
timeout: UPDATE_PROCESS_TIMEOUT_MS,
|
|
27
|
-
windowsHide: true,
|
|
28
|
-
});
|
|
29
|
-
return {
|
|
30
|
-
...(result.error ? { error: result.error } : {}),
|
|
31
|
-
status: result.status,
|
|
32
|
-
stderr: result.stderr ?? '',
|
|
33
|
-
stdout: result.stdout ?? '',
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
17
|
function processDetail(result) {
|
|
37
18
|
return `${result.stdout}\n${result.stderr}`.trim().slice(0, MAX_PROCESS_DETAIL);
|
|
38
19
|
}
|
|
@@ -41,67 +22,176 @@ function requireSuccess(result, command, message) {
|
|
|
41
22
|
return;
|
|
42
23
|
throw new UpdateProcessError(message, command, processDetail(result) || result.error?.message || 'unknown failure');
|
|
43
24
|
}
|
|
44
|
-
function parseGlobalRoot(result) {
|
|
45
|
-
|
|
25
|
+
function parseGlobalRoot(result, manager) {
|
|
26
|
+
const command = `${manager} root --global`;
|
|
27
|
+
requireSuccess(result, command, `Unable to determine ${manager} global installation directory.`);
|
|
46
28
|
const lines = result.stdout
|
|
47
29
|
.split(/\r?\n/)
|
|
48
30
|
.map((line) => line.trim())
|
|
49
31
|
.filter(Boolean);
|
|
50
32
|
if (lines.length !== 1 || !isAbsolute(lines[0])) {
|
|
51
|
-
throw new UpdateProcessError(
|
|
33
|
+
throw new UpdateProcessError(`${manager} returned an invalid global installation directory.`, command, processDetail(result));
|
|
52
34
|
}
|
|
53
35
|
return lines[0];
|
|
54
36
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
37
|
+
function manifestBinary(manifest) {
|
|
38
|
+
if (typeof manifest.bin === 'string')
|
|
39
|
+
return manifest.bin;
|
|
40
|
+
if (!manifest.bin || typeof manifest.bin !== 'object' || Array.isArray(manifest.bin))
|
|
41
|
+
return undefined;
|
|
42
|
+
const binaries = Object.values(manifest.bin).filter((value) => typeof value === 'string');
|
|
43
|
+
const monkeys = manifest.bin.monkeys;
|
|
44
|
+
if (typeof monkeys === 'string')
|
|
45
|
+
return monkeys;
|
|
46
|
+
return binaries.length === 1 ? binaries[0] : undefined;
|
|
47
|
+
}
|
|
48
|
+
async function resolveInstalledBinary(packageRoot, manifest) {
|
|
49
|
+
const entry = manifestBinary(manifest);
|
|
50
|
+
if (!entry || isAbsolute(entry)) {
|
|
51
|
+
throw new UpdateProcessError('The installed package does not declare a valid CLI entry point.', `read ${join(packageRoot, 'package.json')}`, 'missing or absolute bin entry');
|
|
52
|
+
}
|
|
53
|
+
const candidate = resolve(packageRoot, entry);
|
|
54
|
+
const candidateRelative = relative(packageRoot, candidate);
|
|
55
|
+
if (!candidateRelative || candidateRelative === '..' || candidateRelative.startsWith(`..${sep}`) || isAbsolute(candidateRelative)) {
|
|
56
|
+
throw new UpdateProcessError('The installed package CLI entry point escapes the package root.', `read ${join(packageRoot, 'package.json')}`, entry);
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const canonicalRoot = await realpath(packageRoot);
|
|
60
|
+
const canonicalBinary = await realpath(candidate);
|
|
61
|
+
const canonicalRelative = relative(canonicalRoot, canonicalBinary);
|
|
62
|
+
if (!canonicalRelative || canonicalRelative === '..' || canonicalRelative.startsWith(`..${sep}`) || isAbsolute(canonicalRelative)) {
|
|
63
|
+
throw new Error('resolved bin entry escapes package root');
|
|
64
|
+
}
|
|
65
|
+
await readFile(canonicalBinary);
|
|
66
|
+
return canonicalBinary;
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
throw new UpdateProcessError('Unable to verify the installed CLI entry point.', `read ${candidate}`, error instanceof Error ? error.message : String(error));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async function installedPackage(manager, packageName, targetVersion, runner) {
|
|
73
|
+
const globalRoot = parseGlobalRoot(runner(manager, ['root', '--global']), manager);
|
|
61
74
|
const packageRoot = join(globalRoot, ...packageName.split('/'));
|
|
62
75
|
let manifest;
|
|
63
76
|
try {
|
|
64
77
|
manifest = JSON.parse(await readFile(join(packageRoot, 'package.json'), 'utf8'));
|
|
65
78
|
}
|
|
66
79
|
catch (error) {
|
|
67
|
-
throw new UpdateProcessError('Unable to
|
|
80
|
+
throw new UpdateProcessError('Unable to read the installed package manifest.', `read ${join(packageRoot, 'package.json')}`, error instanceof Error ? error.message : String(error));
|
|
68
81
|
}
|
|
69
|
-
if (manifest.name !== packageName || manifest.version !==
|
|
70
|
-
throw new UpdateProcessError('The
|
|
82
|
+
if (manifest.name !== packageName || manifest.version !== targetVersion) {
|
|
83
|
+
throw new UpdateProcessError('The installed package is inconsistent with the target version.', `read ${join(packageRoot, 'package.json')}`, JSON.stringify({
|
|
71
84
|
actualName: manifest.name,
|
|
72
85
|
actualVersion: manifest.version,
|
|
73
86
|
expectedName: packageName,
|
|
74
|
-
expectedVersion:
|
|
87
|
+
expectedVersion: targetVersion,
|
|
75
88
|
}));
|
|
76
89
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
catch (error) {
|
|
82
|
-
throw new UpdateProcessError('The upgraded npm package is missing an official Agent Skill.', `read ${join(packageRoot, 'skills', skillName, 'SKILL.md')}`, error instanceof Error ? error.message : String(error));
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
const skillsResult = runner('npx', ['-y', 'skills', 'add', join(packageRoot, 'skills'), '-y', '-g', '--copy']);
|
|
86
|
-
if (skillsResult.error || skillsResult.status !== 0) {
|
|
87
|
-
return {
|
|
88
|
-
currentVersion: latestVersion,
|
|
89
|
-
packageRoot,
|
|
90
|
-
skillsAction: 'failed',
|
|
91
|
-
skillsWarning: `CLI upgraded, but skill sync failed: ${processDetail(skillsResult) || skillsResult.error?.message || 'unknown failure'}`,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
90
|
+
return { executable: await resolveInstalledBinary(packageRoot, manifest), packageRoot };
|
|
91
|
+
}
|
|
92
|
+
function parseEnvelope(result, command) {
|
|
93
|
+
requireSuccess(result, command, `${command} failed.`);
|
|
94
94
|
try {
|
|
95
|
-
|
|
95
|
+
const envelope = JSON.parse(result.stdout);
|
|
96
|
+
if (!envelope || typeof envelope !== 'object' || envelope.ok !== true)
|
|
97
|
+
throw new Error('ok=true is missing');
|
|
98
|
+
return envelope;
|
|
96
99
|
}
|
|
97
100
|
catch (error) {
|
|
101
|
+
throw new UpdateProcessError(`${command} returned an invalid success contract.`, command, `${error instanceof Error ? error.message : String(error)}; output=${processDetail(result)}`.slice(0, MAX_PROCESS_DETAIL));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function envelopeData(envelope, command) {
|
|
105
|
+
const data = envelope.data;
|
|
106
|
+
if (!data || typeof data !== 'object' || Array.isArray(data)) {
|
|
107
|
+
throw new UpdateProcessError(`${command} returned no structured data.`, command, JSON.stringify(envelope).slice(0, MAX_PROCESS_DETAIL));
|
|
108
|
+
}
|
|
109
|
+
return data;
|
|
110
|
+
}
|
|
111
|
+
async function verifyResolvedCli(binary, expectedVersion, runner) {
|
|
112
|
+
const command = `${binary} version show --output json`;
|
|
113
|
+
const data = envelopeData(parseEnvelope(runner(binary, ['version', 'show', '--output', 'json']), command), command);
|
|
114
|
+
if (data.cliVersion !== expectedVersion) {
|
|
115
|
+
throw new UpdateProcessError('PATH resolves a different monkeys CLI version.', command, JSON.stringify({ actual: data.cliVersion, expectedVersion }));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function verifyFinalization(binary, expectedVersion, source, runner) {
|
|
119
|
+
const args = ['update', '--finalize', '--finalize-source', source, '--output', 'json'];
|
|
120
|
+
const command = `${binary} ${args.join(' ')}`;
|
|
121
|
+
const data = envelopeData(parseEnvelope(runner(binary, args), command), command);
|
|
122
|
+
if (data.action !== 'finalized' || data.currentVersion !== expectedVersion || data.skillsAction !== 'synced') {
|
|
123
|
+
throw new UpdateProcessError('The CLI did not confirm exact Skill finalization.', command, JSON.stringify(data).slice(0, MAX_PROCESS_DETAIL));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function rollback(manager, packageName, previousVersion, runner, resolvePathBinary) {
|
|
127
|
+
const args = packageManagerInstallArgs(manager, packageName, previousVersion);
|
|
128
|
+
const command = `${manager} ${args.join(' ')}`;
|
|
129
|
+
const result = runner(manager, args);
|
|
130
|
+
requireSuccess(result, command, 'Automatic rollback failed.');
|
|
131
|
+
const binary = await resolvePathBinary();
|
|
132
|
+
if (!binary)
|
|
133
|
+
throw new UpdateProcessError('Automatic rollback cannot resolve monkeys on PATH.', 'resolve monkeys', 'not found');
|
|
134
|
+
const installed = await installedPackage(manager, packageName, previousVersion, runner);
|
|
135
|
+
if (process.platform !== 'win32' && (await realpath(binary).catch(() => binary)) !== installed.executable) {
|
|
136
|
+
throw new UpdateProcessError('Automatic rollback restored a package that is not active on PATH.', 'resolve monkeys', binary);
|
|
137
|
+
}
|
|
138
|
+
await verifyResolvedCli(binary, previousVersion, runner);
|
|
139
|
+
verifyFinalization(binary, previousVersion, 'update', runner);
|
|
140
|
+
return `restored and finalized ${packageName}@${previousVersion}`;
|
|
141
|
+
}
|
|
142
|
+
function cleanupFailedFirstInstall(manager, packageName, runner) {
|
|
143
|
+
const failures = [];
|
|
144
|
+
const args = manager === 'pnpm' ? ['remove', '--global', packageName] : ['uninstall', '--global', packageName];
|
|
145
|
+
const removed = runner(manager, args);
|
|
146
|
+
if (removed.error || removed.status !== 0)
|
|
147
|
+
failures.push(`package: ${processDetail(removed)}`);
|
|
148
|
+
return failures.length === 0
|
|
149
|
+
? 'removed failed first installation; Skill transaction restored its prior set'
|
|
150
|
+
: `cleanup failed: ${failures.join('; ')}`;
|
|
151
|
+
}
|
|
152
|
+
export async function installCliAndSkill(latestVersion, options) {
|
|
153
|
+
const packageName = options.packageName ?? MONKEYS_NPM_PACKAGE;
|
|
154
|
+
const runner = options.runner ?? runUpdateProcess;
|
|
155
|
+
const resolvePathBinary = options.resolvePathBinary ?? (() => resolveExecutableOnPath('monkeys'));
|
|
156
|
+
const installArgs = packageManagerInstallArgs(options.manager, packageName, latestVersion);
|
|
157
|
+
const installCommand = `${options.manager} ${installArgs.join(' ')}`;
|
|
158
|
+
const installResult = runner(options.manager, installArgs);
|
|
159
|
+
requireSuccess(installResult, installCommand, `${options.manager} global installation failed.`);
|
|
160
|
+
try {
|
|
161
|
+
const installed = await installedPackage(options.manager, packageName, latestVersion, runner);
|
|
162
|
+
const pathBinary = await resolvePathBinary();
|
|
163
|
+
if (!pathBinary)
|
|
164
|
+
throw new UpdateProcessError('The installed monkeys command is not reachable on PATH.', 'resolve monkeys', 'not found');
|
|
165
|
+
if (process.platform !== 'win32' && (await realpath(pathBinary).catch(() => pathBinary)) !== installed.executable) {
|
|
166
|
+
throw new UpdateProcessError('PATH still resolves a different monkeys installation after installation.', 'resolve monkeys', JSON.stringify({ expected: installed.executable, resolved: pathBinary }));
|
|
167
|
+
}
|
|
168
|
+
await verifyResolvedCli(pathBinary, latestVersion, runner);
|
|
169
|
+
verifyFinalization(pathBinary, latestVersion, options.finalizeSource ?? 'update', runner);
|
|
98
170
|
return {
|
|
99
171
|
currentVersion: latestVersion,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
172
|
+
executable: pathBinary,
|
|
173
|
+
manager: options.manager,
|
|
174
|
+
packageRoot: installed.packageRoot,
|
|
175
|
+
skillsAction: 'synced',
|
|
103
176
|
};
|
|
104
177
|
}
|
|
105
|
-
|
|
178
|
+
catch (error) {
|
|
179
|
+
let rollbackDetail;
|
|
180
|
+
if (options.previousVersion) {
|
|
181
|
+
try {
|
|
182
|
+
rollbackDetail = await rollback(options.manager, packageName, options.previousVersion, runner, resolvePathBinary);
|
|
183
|
+
}
|
|
184
|
+
catch (rollbackError) {
|
|
185
|
+
rollbackDetail = `rollback failed: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
rollbackDetail = cleanupFailedFirstInstall(options.manager, packageName, runner);
|
|
190
|
+
}
|
|
191
|
+
if (error instanceof UpdateProcessError) {
|
|
192
|
+
throw new UpdateProcessError(error.message, error.command, `${error.detail}; ${rollbackDetail}`.slice(0, MAX_PROCESS_DETAIL));
|
|
193
|
+
}
|
|
194
|
+
throw new UpdateProcessError('Post-install verification failed.', installCommand, `${String(error)}; ${rollbackDetail}`.slice(0, MAX_PROCESS_DETAIL));
|
|
195
|
+
}
|
|
106
196
|
}
|
|
107
197
|
//# sourceMappingURL=updater.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/update/updater.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/update/updater.ts"],"names":[],"mappings":"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"}
|