@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.
Files changed (299) hide show
  1. package/README.md +17 -14
  2. package/README.zh.md +11 -8
  3. package/bin/run.js +4 -52
  4. package/bin/update-cache.js +3 -1
  5. package/dist/cli/run.d.ts +2 -0
  6. package/dist/cli/run.d.ts.map +1 -0
  7. package/dist/cli/run.js +45 -0
  8. package/dist/cli/run.js.map +1 -0
  9. package/dist/command/metadata.d.ts +1 -2
  10. package/dist/command/metadata.d.ts.map +1 -1
  11. package/dist/command/metadata.js +15 -24
  12. package/dist/command/metadata.js.map +1 -1
  13. package/dist/commands/{agent → dev-agent}/work/assign/existing.d.ts +1 -1
  14. package/dist/commands/dev-agent/work/assign/existing.d.ts.map +1 -0
  15. package/dist/commands/{agent → dev-agent}/work/assign/existing.js +10 -10
  16. package/dist/commands/dev-agent/work/assign/existing.js.map +1 -0
  17. package/dist/commands/{agent → dev-agent}/work/assign/new.d.ts +1 -1
  18. package/dist/commands/dev-agent/work/assign/new.d.ts.map +1 -0
  19. package/dist/commands/{agent → dev-agent}/work/assign/new.js +8 -8
  20. package/dist/commands/dev-agent/work/assign/new.js.map +1 -0
  21. package/dist/commands/{agent → dev-agent}/work/collaborators.d.ts +1 -1
  22. package/dist/commands/dev-agent/work/collaborators.d.ts.map +1 -0
  23. package/dist/commands/dev-agent/work/collaborators.js +20 -0
  24. package/dist/commands/dev-agent/work/collaborators.js.map +1 -0
  25. package/dist/commands/{agent → dev-agent}/work/conversation/send.d.ts +1 -1
  26. package/dist/commands/dev-agent/work/conversation/send.d.ts.map +1 -0
  27. package/dist/commands/dev-agent/work/conversation/send.js +24 -0
  28. package/dist/commands/dev-agent/work/conversation/send.js.map +1 -0
  29. package/dist/commands/{agent → dev-agent}/work/create.d.ts +1 -1
  30. package/dist/commands/dev-agent/work/create.d.ts.map +1 -0
  31. package/dist/commands/{agent → dev-agent}/work/create.js +15 -15
  32. package/dist/commands/dev-agent/work/create.js.map +1 -0
  33. package/dist/commands/{agent → dev-agent}/work/delete.d.ts +1 -1
  34. package/dist/commands/dev-agent/work/delete.d.ts.map +1 -0
  35. package/dist/commands/{agent → dev-agent}/work/delete.js +8 -8
  36. package/dist/commands/dev-agent/work/delete.js.map +1 -0
  37. package/dist/commands/{agent → dev-agent}/work/get.d.ts +1 -1
  38. package/dist/commands/dev-agent/work/get.d.ts.map +1 -0
  39. package/dist/commands/dev-agent/work/get.js +21 -0
  40. package/dist/commands/dev-agent/work/get.js.map +1 -0
  41. package/dist/commands/{agent → dev-agent}/work/list.d.ts +1 -1
  42. package/dist/commands/dev-agent/work/list.d.ts.map +1 -0
  43. package/dist/commands/{agent → dev-agent}/work/list.js +11 -11
  44. package/dist/commands/dev-agent/work/list.js.map +1 -0
  45. package/dist/commands/{agent → dev-agent}/work/pause.d.ts +1 -1
  46. package/dist/commands/dev-agent/work/pause.d.ts.map +1 -0
  47. package/dist/commands/dev-agent/work/pause.js +24 -0
  48. package/dist/commands/dev-agent/work/pause.js.map +1 -0
  49. package/dist/commands/{agent → dev-agent}/work/resume.d.ts +1 -1
  50. package/dist/commands/dev-agent/work/resume.d.ts.map +1 -0
  51. package/dist/commands/dev-agent/work/resume.js +24 -0
  52. package/dist/commands/dev-agent/work/resume.js.map +1 -0
  53. package/dist/commands/{agent → dev-agent}/work/retry.d.ts +1 -1
  54. package/dist/commands/dev-agent/work/retry.d.ts.map +1 -0
  55. package/dist/commands/{agent → dev-agent}/work/retry.js +11 -11
  56. package/dist/commands/dev-agent/work/retry.js.map +1 -0
  57. package/dist/commands/{agent → dev-agent}/work/review/approve.d.ts +1 -1
  58. package/dist/commands/dev-agent/work/review/approve.d.ts.map +1 -0
  59. package/dist/commands/dev-agent/work/review/approve.js +27 -0
  60. package/dist/commands/dev-agent/work/review/approve.js.map +1 -0
  61. package/dist/commands/{agent → dev-agent}/work/review/request-changes.d.ts +1 -1
  62. package/dist/commands/dev-agent/work/review/request-changes.d.ts.map +1 -0
  63. package/dist/commands/dev-agent/work/review/request-changes.js +29 -0
  64. package/dist/commands/dev-agent/work/review/request-changes.js.map +1 -0
  65. package/dist/commands/{agent → dev-agent}/work/runtime/list.d.ts +1 -1
  66. package/dist/commands/dev-agent/work/runtime/list.d.ts.map +1 -0
  67. package/dist/commands/{agent → dev-agent}/work/runtime/list.js +9 -9
  68. package/dist/commands/dev-agent/work/runtime/list.js.map +1 -0
  69. package/dist/commands/{agent → dev-agent}/work/spec/approve.d.ts +1 -1
  70. package/dist/commands/dev-agent/work/spec/approve.d.ts.map +1 -0
  71. package/dist/commands/{agent → dev-agent}/work/spec/approve.js +10 -10
  72. package/dist/commands/dev-agent/work/spec/approve.js.map +1 -0
  73. package/dist/commands/{agent → dev-agent}/work/spec/request-revision.d.ts +1 -1
  74. package/dist/commands/dev-agent/work/spec/request-revision.d.ts.map +1 -0
  75. package/dist/commands/dev-agent/work/spec/request-revision.js +28 -0
  76. package/dist/commands/dev-agent/work/spec/request-revision.js.map +1 -0
  77. package/dist/commands/{agent → dev-agent}/work/update.d.ts +1 -1
  78. package/dist/commands/dev-agent/work/update.d.ts.map +1 -0
  79. package/dist/commands/{agent → dev-agent}/work/update.js +15 -15
  80. package/dist/commands/dev-agent/work/update.js.map +1 -0
  81. package/dist/commands/{agent → dev-agent}/work/wait.d.ts +1 -1
  82. package/dist/commands/dev-agent/work/wait.d.ts.map +1 -0
  83. package/dist/commands/{agent → dev-agent}/work/wait.js +12 -12
  84. package/dist/commands/dev-agent/work/wait.js.map +1 -0
  85. package/dist/commands/{agent → dev-agent}/work/watch.d.ts +1 -1
  86. package/dist/commands/dev-agent/work/watch.d.ts.map +1 -0
  87. package/dist/commands/{agent → dev-agent}/work/watch.js +14 -17
  88. package/dist/commands/dev-agent/work/watch.js.map +1 -0
  89. package/dist/commands/execution/watch.d.ts.map +1 -1
  90. package/dist/commands/execution/watch.js +4 -7
  91. package/dist/commands/execution/watch.js.map +1 -1
  92. package/dist/commands/install.d.ts +12 -0
  93. package/dist/commands/install.d.ts.map +1 -0
  94. package/dist/commands/install.js +66 -0
  95. package/dist/commands/install.js.map +1 -0
  96. package/dist/commands/update.d.ts +3 -0
  97. package/dist/commands/update.d.ts.map +1 -1
  98. package/dist/commands/update.js +68 -3
  99. package/dist/commands/update.js.map +1 -1
  100. package/dist/config/index.d.ts +0 -1
  101. package/dist/config/index.d.ts.map +1 -1
  102. package/dist/config/index.js +0 -1
  103. package/dist/config/index.js.map +1 -1
  104. package/dist/config/local-command.d.ts +0 -2
  105. package/dist/config/local-command.d.ts.map +1 -1
  106. package/dist/config/local-command.js +8 -14
  107. package/dist/config/local-command.js.map +1 -1
  108. package/dist/config/registry.d.ts.map +1 -1
  109. package/dist/config/registry.js +2 -12
  110. package/dist/config/registry.js.map +1 -1
  111. package/dist/config/store.d.ts.map +1 -1
  112. package/dist/config/store.js +46 -5
  113. package/dist/config/store.js.map +1 -1
  114. package/dist/contracts/result.d.ts +1 -1
  115. package/dist/contracts/result.js +1 -1
  116. package/dist/contracts/version.d.ts +3 -3
  117. package/dist/contracts/version.d.ts.map +1 -1
  118. package/dist/contracts/version.js +3 -3
  119. package/dist/contracts/version.js.map +1 -1
  120. package/dist/dev-agent-work/adapters.d.ts +15 -0
  121. package/dist/dev-agent-work/adapters.d.ts.map +1 -0
  122. package/dist/{agent-work → dev-agent-work}/adapters.js +25 -25
  123. package/dist/dev-agent-work/adapters.js.map +1 -0
  124. package/dist/{agent-work → dev-agent-work}/client.d.ts +23 -23
  125. package/dist/dev-agent-work/client.d.ts.map +1 -0
  126. package/dist/{agent-work → dev-agent-work}/client.js +26 -24
  127. package/dist/dev-agent-work/client.js.map +1 -0
  128. package/dist/{agent-work → dev-agent-work}/context.d.ts +2 -2
  129. package/dist/dev-agent-work/context.d.ts.map +1 -0
  130. package/dist/{agent-work → dev-agent-work}/context.js +3 -3
  131. package/dist/dev-agent-work/context.js.map +1 -0
  132. package/dist/{agent-work → dev-agent-work}/contracts.d.ts +46 -46
  133. package/dist/dev-agent-work/contracts.d.ts.map +1 -0
  134. package/dist/{agent-work → dev-agent-work}/contracts.js +19 -13
  135. package/dist/dev-agent-work/contracts.js.map +1 -0
  136. package/dist/{agent-work → dev-agent-work}/definitions.d.ts +2 -2
  137. package/dist/dev-agent-work/definitions.d.ts.map +1 -0
  138. package/dist/dev-agent-work/definitions.js +33 -0
  139. package/dist/dev-agent-work/definitions.js.map +1 -0
  140. package/dist/dev-agent-work/index.d.ts.map +1 -0
  141. package/dist/dev-agent-work/index.js.map +1 -0
  142. package/dist/{agent-work → dev-agent-work}/input.d.ts +1 -1
  143. package/dist/dev-agent-work/input.d.ts.map +1 -0
  144. package/dist/{agent-work → dev-agent-work}/input.js +16 -16
  145. package/dist/dev-agent-work/input.js.map +1 -0
  146. package/dist/{agent-work → dev-agent-work}/output.d.ts +3 -3
  147. package/dist/dev-agent-work/output.d.ts.map +1 -0
  148. package/dist/dev-agent-work/output.js +16 -0
  149. package/dist/dev-agent-work/output.js.map +1 -0
  150. package/dist/dev-agent-work/polling.d.ts +23 -0
  151. package/dist/dev-agent-work/polling.d.ts.map +1 -0
  152. package/dist/{agent-work → dev-agent-work}/polling.js +8 -8
  153. package/dist/dev-agent-work/polling.js.map +1 -0
  154. package/dist/dev-agent-work/runtime.d.ts +2 -0
  155. package/dist/dev-agent-work/runtime.d.ts.map +1 -0
  156. package/dist/{agent-work → dev-agent-work}/runtime.js +3 -3
  157. package/dist/dev-agent-work/runtime.js.map +1 -0
  158. package/dist/errors/cli-error.d.ts +3 -0
  159. package/dist/errors/cli-error.d.ts.map +1 -1
  160. package/dist/errors/cli-error.js +17 -0
  161. package/dist/errors/cli-error.js.map +1 -1
  162. package/dist/output/render.js +1 -1
  163. package/dist/schema/command-schema.d.ts +2 -1
  164. package/dist/schema/command-schema.d.ts.map +1 -1
  165. package/dist/schema/command-schema.js +2 -1
  166. package/dist/schema/command-schema.js.map +1 -1
  167. package/dist/security/redact.d.ts.map +1 -1
  168. package/dist/security/redact.js +16 -2
  169. package/dist/security/redact.js.map +1 -1
  170. package/dist/skills/content.d.ts +1 -0
  171. package/dist/skills/content.d.ts.map +1 -1
  172. package/dist/skills/content.js +2 -2
  173. package/dist/skills/content.js.map +1 -1
  174. package/dist/skills/state.d.ts +33 -7
  175. package/dist/skills/state.d.ts.map +1 -1
  176. package/dist/skills/state.js +103 -14
  177. package/dist/skills/state.js.map +1 -1
  178. package/dist/skills/sync.d.ts +5 -2
  179. package/dist/skills/sync.d.ts.map +1 -1
  180. package/dist/skills/sync.js +110 -9
  181. package/dist/skills/sync.js.map +1 -1
  182. package/dist/transport/http-client.d.ts.map +1 -1
  183. package/dist/transport/http-client.js +46 -20
  184. package/dist/transport/http-client.js.map +1 -1
  185. package/dist/transport/multipart-upload.d.ts.map +1 -1
  186. package/dist/transport/multipart-upload.js +10 -7
  187. package/dist/transport/multipart-upload.js.map +1 -1
  188. package/dist/transport/url-policy.d.ts +2 -0
  189. package/dist/transport/url-policy.d.ts.map +1 -0
  190. package/dist/transport/url-policy.js +33 -0
  191. package/dist/transport/url-policy.js.map +1 -0
  192. package/dist/update/finalize.d.ts +26 -0
  193. package/dist/update/finalize.d.ts.map +1 -0
  194. package/dist/update/finalize.js +5 -0
  195. package/dist/update/finalize.js.map +1 -0
  196. package/dist/update/installation.d.ts +17 -0
  197. package/dist/update/installation.d.ts.map +1 -0
  198. package/dist/update/installation.js +63 -0
  199. package/dist/update/installation.js.map +1 -0
  200. package/dist/update/notifier.d.ts +4 -4
  201. package/dist/update/notifier.d.ts.map +1 -1
  202. package/dist/update/notifier.js +68 -39
  203. package/dist/update/notifier.js.map +1 -1
  204. package/dist/update/process.d.ts +11 -0
  205. package/dist/update/process.d.ts.map +1 -0
  206. package/dist/update/process.js +20 -0
  207. package/dist/update/process.js.map +1 -0
  208. package/dist/update/updater.d.ts +12 -13
  209. package/dist/update/updater.d.ts.map +1 -1
  210. package/dist/update/updater.js +149 -59
  211. package/dist/update/updater.js.map +1 -1
  212. package/oclif.manifest.json +3901 -6477
  213. package/package.json +7 -15
  214. package/skills/monkeys-dev-agent-work/SKILL.md +21 -0
  215. package/skills/monkeys-dev-agent-work/agents/openai.yaml +4 -0
  216. package/skills/{monkeys-agent-work/references/agent-work.md → monkeys-dev-agent-work/references/dev-agent-work.md} +28 -28
  217. package/skills/monkeys-shared/SKILL.md +1 -1
  218. package/skills/monkeys-shared/references/compatibility.md +4 -4
  219. package/skills/monkeys-shared/references/platform-overview.md +3 -3
  220. package/bin/install-wizard.js +0 -77
  221. package/dist/agent-work/adapters.d.ts +0 -15
  222. package/dist/agent-work/adapters.d.ts.map +0 -1
  223. package/dist/agent-work/adapters.js.map +0 -1
  224. package/dist/agent-work/client.d.ts.map +0 -1
  225. package/dist/agent-work/client.js.map +0 -1
  226. package/dist/agent-work/context.d.ts.map +0 -1
  227. package/dist/agent-work/context.js.map +0 -1
  228. package/dist/agent-work/contracts.d.ts.map +0 -1
  229. package/dist/agent-work/contracts.js.map +0 -1
  230. package/dist/agent-work/definitions.d.ts.map +0 -1
  231. package/dist/agent-work/definitions.js +0 -33
  232. package/dist/agent-work/definitions.js.map +0 -1
  233. package/dist/agent-work/index.d.ts.map +0 -1
  234. package/dist/agent-work/index.js.map +0 -1
  235. package/dist/agent-work/input.d.ts.map +0 -1
  236. package/dist/agent-work/input.js.map +0 -1
  237. package/dist/agent-work/output.d.ts.map +0 -1
  238. package/dist/agent-work/output.js +0 -16
  239. package/dist/agent-work/output.js.map +0 -1
  240. package/dist/agent-work/polling.d.ts +0 -23
  241. package/dist/agent-work/polling.d.ts.map +0 -1
  242. package/dist/agent-work/polling.js.map +0 -1
  243. package/dist/agent-work/runtime.d.ts +0 -2
  244. package/dist/agent-work/runtime.d.ts.map +0 -1
  245. package/dist/agent-work/runtime.js.map +0 -1
  246. package/dist/commands/agent/work/assign/existing.d.ts.map +0 -1
  247. package/dist/commands/agent/work/assign/existing.js.map +0 -1
  248. package/dist/commands/agent/work/assign/new.d.ts.map +0 -1
  249. package/dist/commands/agent/work/assign/new.js.map +0 -1
  250. package/dist/commands/agent/work/collaborators.d.ts.map +0 -1
  251. package/dist/commands/agent/work/collaborators.js +0 -20
  252. package/dist/commands/agent/work/collaborators.js.map +0 -1
  253. package/dist/commands/agent/work/conversation/send.d.ts.map +0 -1
  254. package/dist/commands/agent/work/conversation/send.js +0 -24
  255. package/dist/commands/agent/work/conversation/send.js.map +0 -1
  256. package/dist/commands/agent/work/create.d.ts.map +0 -1
  257. package/dist/commands/agent/work/create.js.map +0 -1
  258. package/dist/commands/agent/work/delete.d.ts.map +0 -1
  259. package/dist/commands/agent/work/delete.js.map +0 -1
  260. package/dist/commands/agent/work/get.d.ts.map +0 -1
  261. package/dist/commands/agent/work/get.js +0 -21
  262. package/dist/commands/agent/work/get.js.map +0 -1
  263. package/dist/commands/agent/work/list.d.ts.map +0 -1
  264. package/dist/commands/agent/work/list.js.map +0 -1
  265. package/dist/commands/agent/work/pause.d.ts.map +0 -1
  266. package/dist/commands/agent/work/pause.js +0 -24
  267. package/dist/commands/agent/work/pause.js.map +0 -1
  268. package/dist/commands/agent/work/resume.d.ts.map +0 -1
  269. package/dist/commands/agent/work/resume.js +0 -24
  270. package/dist/commands/agent/work/resume.js.map +0 -1
  271. package/dist/commands/agent/work/retry.d.ts.map +0 -1
  272. package/dist/commands/agent/work/retry.js.map +0 -1
  273. package/dist/commands/agent/work/review/approve.d.ts.map +0 -1
  274. package/dist/commands/agent/work/review/approve.js +0 -27
  275. package/dist/commands/agent/work/review/approve.js.map +0 -1
  276. package/dist/commands/agent/work/review/request-changes.d.ts.map +0 -1
  277. package/dist/commands/agent/work/review/request-changes.js +0 -29
  278. package/dist/commands/agent/work/review/request-changes.js.map +0 -1
  279. package/dist/commands/agent/work/runtime/list.d.ts.map +0 -1
  280. package/dist/commands/agent/work/runtime/list.js.map +0 -1
  281. package/dist/commands/agent/work/spec/approve.d.ts.map +0 -1
  282. package/dist/commands/agent/work/spec/approve.js.map +0 -1
  283. package/dist/commands/agent/work/spec/request-revision.d.ts.map +0 -1
  284. package/dist/commands/agent/work/spec/request-revision.js +0 -28
  285. package/dist/commands/agent/work/spec/request-revision.js.map +0 -1
  286. package/dist/commands/agent/work/update.d.ts.map +0 -1
  287. package/dist/commands/agent/work/update.js.map +0 -1
  288. package/dist/commands/agent/work/wait.d.ts.map +0 -1
  289. package/dist/commands/agent/work/wait.js.map +0 -1
  290. package/dist/commands/agent/work/watch.d.ts.map +0 -1
  291. package/dist/commands/agent/work/watch.js.map +0 -1
  292. package/dist/config/fast-subscription-list.d.ts +0 -6
  293. package/dist/config/fast-subscription-list.d.ts.map +0 -1
  294. package/dist/config/fast-subscription-list.js +0 -19
  295. package/dist/config/fast-subscription-list.js.map +0 -1
  296. package/skills/monkeys-agent-work/SKILL.md +0 -21
  297. package/skills/monkeys-agent-work/agents/openai.yaml +0 -4
  298. /package/dist/{agent-work → dev-agent-work}/index.d.ts +0 -0
  299. /package/dist/{agent-work → dev-agent-work}/index.js +0 -0
@@ -1,12 +1,9 @@
1
- import { spawnSync } from 'node:child_process';
2
- import { readFile } from 'node:fs/promises';
3
- import { isAbsolute, join } from 'node:path';
4
- import { BUNDLED_SKILL_NAMES } from '../contracts/version.js';
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
- requireSuccess(result, 'npm root --global', 'Unable to determine npm global installation directory.');
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('npm returned an invalid global installation directory.', 'npm root --global', processDetail(result));
33
+ throw new UpdateProcessError(`${manager} returned an invalid global installation directory.`, command, processDetail(result));
52
34
  }
53
35
  return lines[0];
54
36
  }
55
- export async function installCliAndSkill(latestVersion, options = {}) {
56
- const packageName = options.packageName ?? MONKEYS_NPM_PACKAGE;
57
- const runner = options.runner ?? runUpdateProcess;
58
- const installResult = runner('npm', ['install', '--global', `${packageName}@${latestVersion}`]);
59
- requireSuccess(installResult, `npm install --global ${packageName}@${latestVersion}`, 'npm global upgrade failed.');
60
- const globalRoot = parseGlobalRoot(runner('npm', ['root', '--global']));
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 verify upgraded npm package.', `read ${join(packageRoot, 'package.json')}`, error instanceof Error ? error.message : String(error));
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 !== latestVersion) {
70
- throw new UpdateProcessError('The upgraded npm package version is inconsistent with the target version.', `read ${join(packageRoot, 'package.json')}`, JSON.stringify({
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: latestVersion,
87
+ expectedVersion: targetVersion,
75
88
  }));
76
89
  }
77
- for (const skillName of BUNDLED_SKILL_NAMES) {
78
- try {
79
- await readFile(join(packageRoot, 'skills', skillName, 'SKILL.md'), 'utf8');
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
- await writeSkillsState(latestVersion, await listBundledSkills(join(packageRoot, 'skills')), 'update', options.statePath);
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
- packageRoot,
101
- skillsAction: 'failed',
102
- skillsWarning: `CLI and Skills upgraded, but synchronization state could not be recorded: ${error instanceof Error ? error.message : String(error)}`,
172
+ executable: pathBinary,
173
+ manager: options.manager,
174
+ packageRoot: installed.packageRoot,
175
+ skillsAction: 'synced',
103
176
  };
104
177
  }
105
- return { currentVersion: latestVersion, packageRoot, skillsAction: 'synced' };
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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"}