@wjarka/cezarion 0.14.8 → 0.14.9-dev.842

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 (207) hide show
  1. package/README.md +76 -2
  2. package/dist/application-update/bin-recovery.d.ts +5 -0
  3. package/dist/application-update/bin-recovery.js +96 -0
  4. package/dist/application-update/bin-recovery.js.map +1 -0
  5. package/dist/application-update/discovery.d.ts +22 -0
  6. package/dist/application-update/discovery.js +91 -0
  7. package/dist/application-update/discovery.js.map +1 -0
  8. package/dist/application-update/helper.d.ts +57 -0
  9. package/dist/application-update/helper.js +374 -0
  10. package/dist/application-update/helper.js.map +1 -0
  11. package/dist/application-update/launcher.d.ts +8 -0
  12. package/dist/application-update/launcher.js +53 -0
  13. package/dist/application-update/launcher.js.map +1 -0
  14. package/dist/application-update/lock.d.ts +4 -0
  15. package/dist/application-update/lock.js +70 -0
  16. package/dist/application-update/lock.js.map +1 -0
  17. package/dist/application-update/npm-process.d.ts +17 -0
  18. package/dist/application-update/npm-process.js +133 -0
  19. package/dist/application-update/npm-process.js.map +1 -0
  20. package/dist/application-update/service.d.ts +69 -0
  21. package/dist/application-update/service.js +456 -0
  22. package/dist/application-update/service.js.map +1 -0
  23. package/dist/artifacts/cli.d.ts +1 -0
  24. package/dist/artifacts/cli.js +32 -0
  25. package/dist/artifacts/cli.js.map +1 -0
  26. package/dist/artifacts/lifecycle.d.ts +4 -0
  27. package/dist/artifacts/lifecycle.js +42 -0
  28. package/dist/artifacts/lifecycle.js.map +1 -0
  29. package/dist/artifacts/resolve.d.ts +18 -0
  30. package/dist/artifacts/resolve.js +102 -0
  31. package/dist/artifacts/resolve.js.map +1 -0
  32. package/dist/artifacts/store.d.ts +8 -0
  33. package/dist/artifacts/store.js +323 -0
  34. package/dist/artifacts/store.js.map +1 -0
  35. package/dist/ci-wait/mcp.d.ts +3 -0
  36. package/dist/ci-wait/mcp.js +14 -3
  37. package/dist/ci-wait/mcp.js.map +1 -1
  38. package/dist/contract/application-update.d.ts +32 -0
  39. package/dist/contract/artifacts.d.ts +83 -0
  40. package/dist/contract/ask-schema.d.ts +32 -0
  41. package/dist/contract/ask.d.ts +2 -32
  42. package/dist/contract/conversations.d.ts +165 -0
  43. package/dist/contract/delegation.d.ts +39 -0
  44. package/dist/contract/events.d.ts +49 -0
  45. package/dist/contract/health.d.ts +12 -0
  46. package/dist/contract/index.d.ts +2 -0
  47. package/dist/contract/index.js +1374 -1247
  48. package/dist/contract/runs.d.ts +143 -0
  49. package/dist/contract/skills.d.ts +28 -0
  50. package/dist/core/agent-runner.d.ts +33 -4
  51. package/dist/core/agent-runner.js +5 -0
  52. package/dist/core/agent-runner.js.map +1 -1
  53. package/dist/core/claude-cli-runner.d.ts +6 -12
  54. package/dist/core/claude-cli-runner.js +89 -19
  55. package/dist/core/claude-cli-runner.js.map +1 -1
  56. package/dist/core/codex-app-server-runner.d.ts +2 -1
  57. package/dist/core/codex-app-server-runner.js +327 -92
  58. package/dist/core/codex-app-server-runner.js.map +1 -1
  59. package/dist/core/codex-app-server-transport.d.ts +13 -1
  60. package/dist/core/codex-app-server-transport.js +58 -17
  61. package/dist/core/codex-app-server-transport.js.map +1 -1
  62. package/dist/core/cursor-acp-runner.d.ts +4 -1
  63. package/dist/core/cursor-acp-runner.js +3 -0
  64. package/dist/core/cursor-acp-runner.js.map +1 -1
  65. package/dist/core/cursor-provider-error.js +6 -1
  66. package/dist/core/cursor-provider-error.js.map +1 -1
  67. package/dist/core/input-submissions.d.ts +14 -0
  68. package/dist/core/input-submissions.js +26 -0
  69. package/dist/core/input-submissions.js.map +1 -0
  70. package/dist/core/opencode-server-runner.d.ts +4 -1
  71. package/dist/core/opencode-server-runner.js +144 -21
  72. package/dist/core/opencode-server-runner.js.map +1 -1
  73. package/dist/core/pi-runner.d.ts +2 -1
  74. package/dist/core/pi-runner.js +72 -7
  75. package/dist/core/pi-runner.js.map +1 -1
  76. package/dist/delegation/cli.js +102 -6
  77. package/dist/delegation/cli.js.map +1 -1
  78. package/dist/delegation/conversations.js +13 -5
  79. package/dist/delegation/conversations.js.map +1 -1
  80. package/dist/delegation/input.d.ts +2 -1
  81. package/dist/delegation/input.js +6 -1
  82. package/dist/delegation/input.js.map +1 -1
  83. package/dist/delegation/provision.js +5 -3
  84. package/dist/delegation/provision.js.map +1 -1
  85. package/dist/delegation/questions.d.ts +19 -0
  86. package/dist/delegation/questions.js +45 -0
  87. package/dist/delegation/questions.js.map +1 -0
  88. package/dist/delegation/results.d.ts +1 -1
  89. package/dist/delegation/results.js +23 -13
  90. package/dist/delegation/results.js.map +1 -1
  91. package/dist/delegation/routes.d.ts +142 -15
  92. package/dist/delegation/routes.js +4 -1
  93. package/dist/delegation/routes.js.map +1 -1
  94. package/dist/delegation/service.d.ts +9 -5
  95. package/dist/delegation/service.js +106 -7
  96. package/dist/delegation/service.js.map +1 -1
  97. package/dist/delegation/transport.d.ts +188 -61
  98. package/dist/index.js +72 -26
  99. package/dist/index.js.map +1 -1
  100. package/dist/open-url.d.ts +2 -0
  101. package/dist/open-url.js +20 -0
  102. package/dist/open-url.js.map +1 -0
  103. package/dist/release/snapshot.d.ts +3 -3
  104. package/dist/release/snapshot.js +6 -6
  105. package/dist/release/snapshot.js.map +1 -1
  106. package/dist/runs/client-request.d.ts +11 -0
  107. package/dist/runs/client-request.js +26 -0
  108. package/dist/runs/client-request.js.map +1 -0
  109. package/dist/runs/delegation-state.d.ts +17 -0
  110. package/dist/runs/event-history.js +6 -0
  111. package/dist/runs/event-history.js.map +1 -1
  112. package/dist/runs/store.d.ts +78 -6
  113. package/dist/runs/store.js +163 -1
  114. package/dist/runs/store.js.map +1 -1
  115. package/dist/server/server.d.ts +3761 -1648
  116. package/dist/server/server.js +170 -4
  117. package/dist/server/server.js.map +1 -1
  118. package/dist/task-cli/cli.d.ts +38 -0
  119. package/dist/task-cli/cli.js +463 -0
  120. package/dist/task-cli/cli.js.map +1 -0
  121. package/dist/task-cli/discovery.d.ts +22 -0
  122. package/dist/task-cli/discovery.js +95 -0
  123. package/dist/task-cli/discovery.js.map +1 -0
  124. package/dist/task-cli/http.d.ts +43 -0
  125. package/dist/task-cli/http.js +101 -0
  126. package/dist/task-cli/http.js.map +1 -0
  127. package/dist/task-cli/projections.d.ts +40 -0
  128. package/dist/task-cli/projections.js +45 -0
  129. package/dist/task-cli/projections.js.map +1 -0
  130. package/dist/task-cli/watch.d.ts +78 -0
  131. package/dist/task-cli/watch.js +336 -0
  132. package/dist/task-cli/watch.js.map +1 -0
  133. package/dist/workflows/run.d.ts +93 -0
  134. package/dist/workflows/run.js +816 -81
  135. package/dist/workflows/run.js.map +1 -1
  136. package/dist/workspace/projects-cli.js +1 -1
  137. package/package.json +3 -3
  138. package/scripts/mock-claude.mjs +38 -2
  139. package/scripts/mock-codex-app-server.mjs +98 -1
  140. package/scripts/mock-cursor-acp.mjs +8 -0
  141. package/scripts/mock-opencode-serve.mjs +69 -2
  142. package/scripts/mock-pi-rpc.mjs +63 -2
  143. package/web/dist/assets/agent-accounts-JPfZPgKn.js +1 -0
  144. package/web/dist/assets/centered-state-HwCqQkH3.js +43 -0
  145. package/web/dist/assets/collapsible-CTymFdL7.js +1 -0
  146. package/web/dist/assets/commit-list-BZpYGQl2.js +1 -0
  147. package/web/dist/assets/compare-variants-9VkybaQ7.js +1 -0
  148. package/web/dist/assets/{diff-tRE59UNb2.js → diff-CZcD4D1r2.js} +2 -2
  149. package/web/dist/assets/diff-controls-CpcHG3Mm.js +1 -0
  150. package/web/dist/assets/{diff-stat-Cgnl_hYF.js → diff-stat-Cn7rzy1H.js} +1 -1
  151. package/web/dist/assets/{diff-view-DN1ort7Q.js → diff-view-C46nHiP2.js} +2 -2
  152. package/web/dist/assets/dropdown-menu-_YAzCaoQ.js +1 -0
  153. package/web/dist/assets/git-toolbar-BvKDz6uS.js +1 -0
  154. package/web/dist/assets/github-CgjJCGrD.js +1 -0
  155. package/web/dist/assets/{image-preview-C2JGcBlC.js → image-preview-B618kDBH.js} +1 -1
  156. package/web/dist/assets/index-BJtve0Pm.js +7 -0
  157. package/web/dist/assets/index-D0WAgmTQ.css +1 -0
  158. package/web/dist/assets/markdown-CFWZnvMh.js +2 -0
  159. package/web/dist/assets/pill-QfwkuR50.js +1 -0
  160. package/web/dist/assets/project-router-CkAA39N5.js +1 -0
  161. package/web/dist/assets/prompt-templates-Cfna_S0T.js +15 -0
  162. package/web/dist/assets/repo-git-DgzgJ0cP.js +1 -0
  163. package/web/dist/assets/{run-diff-CyG0Nciv.js → run-diff-YbCEQn5I.js} +2 -2
  164. package/web/dist/assets/run-header-DMgIbr1d.js +1 -0
  165. package/web/dist/assets/skills-BW79kUTd.js +1 -0
  166. package/web/dist/assets/{tab-link-BWNp3mLY.js → tab-link-MIHvczEm.js} +1 -1
  167. package/web/dist/assets/task-changes-C96ekt94.js +1 -0
  168. package/web/dist/assets/task-commits-DBfcMZyG.js +1 -0
  169. package/web/dist/assets/task-files-BKpH8dKQ.js +2 -0
  170. package/web/dist/assets/task-thread-Bw_nQuTx.css +1 -0
  171. package/web/dist/assets/task-thread-Dnq7Ek6W.js +9 -0
  172. package/web/dist/assets/textarea-D2vAVgYW.js +1 -0
  173. package/web/dist/assets/thread-loading-NW8Mthco.js +1 -0
  174. package/web/dist/assets/token-metrics-D188e6_0.js +1 -0
  175. package/web/dist/assets/utils-DKheTxGD.js +64 -0
  176. package/web/dist/assets/workflows-BFY1hgp3.js +11 -0
  177. package/web/dist/assets/{zoomable-image-Z3JDnm0b.js → zoomable-image-YW3Qdrr_.js} +1 -1
  178. package/web/dist/index.html +14 -14
  179. package/web/dist/assets/agent-accounts-BZm_2WAv.js +0 -1
  180. package/web/dist/assets/alert-dialog-B422RI-k.js +0 -43
  181. package/web/dist/assets/collapsible-Cy_Fmkrd.js +0 -1
  182. package/web/dist/assets/commit-list-Dcnk7TnI.js +0 -1
  183. package/web/dist/assets/compare-variants-Ciqwvd_f.js +0 -1
  184. package/web/dist/assets/diff-controls-BGrXGi7O.js +0 -1
  185. package/web/dist/assets/dropdown-menu-dwDGT8MM.js +0 -1
  186. package/web/dist/assets/git-toolbar-UiHnGvE0.js +0 -1
  187. package/web/dist/assets/github-D-MrkbJ7.js +0 -1
  188. package/web/dist/assets/ibm-plex-mono-regular-BF3vfe7_.ttf +0 -0
  189. package/web/dist/assets/index-BszfYvBq.js +0 -7
  190. package/web/dist/assets/index-CWh4pKP3.css +0 -1
  191. package/web/dist/assets/markdown-C_IcKVQd.js +0 -2
  192. package/web/dist/assets/pill-BsbO6G7y.js +0 -1
  193. package/web/dist/assets/project-router-DbLkll25.js +0 -1
  194. package/web/dist/assets/prompt-templates-BlTGJB5W.js +0 -15
  195. package/web/dist/assets/repo-git-Bm3s6Why.js +0 -1
  196. package/web/dist/assets/run-header-IFyIGCey.js +0 -1
  197. package/web/dist/assets/skills-C-C4DVFY.js +0 -1
  198. package/web/dist/assets/task-changes-D2PHtWUW.js +0 -1
  199. package/web/dist/assets/task-commits-N5u9U0_R.js +0 -1
  200. package/web/dist/assets/task-files-BS7c7CFm.js +0 -2
  201. package/web/dist/assets/task-thread-BQFdz1dJ.css +0 -1
  202. package/web/dist/assets/task-thread-DGM2dZV-.js +0 -9
  203. package/web/dist/assets/textarea-FjaU370i.js +0 -1
  204. package/web/dist/assets/thread-loading-77sJ8Yu_.js +0 -1
  205. package/web/dist/assets/token-metrics-Clxh03bE.js +0 -1
  206. package/web/dist/assets/utils-PYYcpCFZ.js +0 -64
  207. package/web/dist/assets/workflows-Czl0ZfXH.js +0 -11
@@ -0,0 +1,133 @@
1
+ import { execFileSync, spawn } from 'node:child_process';
2
+ import { readFileSync, realpathSync, statSync } from 'node:fs';
3
+ import { basename, dirname, isAbsolute, join, delimiter } from 'node:path';
4
+ /** Only npm's declared CLI, reached through the Node toolchain or a canonical npm shim. */
5
+ function verifiedCli(candidate) {
6
+ try {
7
+ const cli = realpathSync(candidate);
8
+ if (basename(cli) !== 'npm-cli.js' || basename(dirname(cli)) !== 'bin' || !statSync(cli).isFile())
9
+ return;
10
+ const root = dirname(dirname(cli));
11
+ const manifest = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8'));
12
+ if (manifest.name === 'npm' && manifest.bin?.npm === 'bin/npm-cli.js')
13
+ return cli;
14
+ }
15
+ catch { /* Missing or unreadable npm means manual updates, never a boot failure. */ }
16
+ return undefined;
17
+ }
18
+ export function resolveNpmInvocation(command = 'npm', options = {}) {
19
+ const node = options.nodeExecutable ?? process.execPath;
20
+ const platform = options.platform ?? process.platform;
21
+ const invoke = (cli) => ({ command: node, args: [cli] });
22
+ if (basename(command) === 'npm-cli.js') {
23
+ const cli = verifiedCli(command);
24
+ if (!cli)
25
+ throw new Error('npm CLI could not be verified');
26
+ return invoke(cli);
27
+ }
28
+ // Explicit executables are used by embedders and isolated lifecycle fixtures.
29
+ // A Windows command script is never sent to spawn/execFile as an executable.
30
+ if (!['npm', 'npm.cmd'].includes(basename(command).toLowerCase())) {
31
+ if (/\.(cmd|bat)$/i.test(command))
32
+ throw new Error('npm command script is unsupported');
33
+ return { command, args: [] };
34
+ }
35
+ if (!isAbsolute(command)) {
36
+ const nodeDir = dirname(realpathSync(node));
37
+ const cli = verifiedCli(platform === 'win32'
38
+ ? join(nodeDir, 'node_modules/npm/bin/npm-cli.js')
39
+ : join(nodeDir, '../lib/node_modules/npm/bin/npm-cli.js'));
40
+ if (cli)
41
+ return invoke(cli);
42
+ }
43
+ const searchPath = options.searchPath ?? process.env[Object.keys(process.env).find(key => key.toLowerCase() === 'path') ?? 'PATH'] ?? '';
44
+ const candidates = isAbsolute(command) ? [command] : searchPath.split(platform === 'win32' ? ';' : delimiter)
45
+ .map(part => part.replace(/^"(.*)"$/, '$1')).filter(isAbsolute)
46
+ .map(part => join(part, platform === 'win32' ? 'npm.cmd' : 'npm'));
47
+ for (const shim of candidates) {
48
+ const linked = verifiedCli(shim);
49
+ if (linked)
50
+ return invoke(linked);
51
+ if (platform !== 'win32' && !/\.cmd$/i.test(shim))
52
+ continue;
53
+ const cli = verifiedCli(join(dirname(shim), 'node_modules/npm/bin/npm-cli.js'));
54
+ if (!cli)
55
+ continue;
56
+ try {
57
+ const content = readFileSync(shim, 'utf8');
58
+ // npm ships its installer shim; npm install -g npm emits cmd-shim's
59
+ // equivalent. Only their fixed adjacent CLI target is recognized.
60
+ const vendor = readFileSync(join(dirname(cli), 'npm.cmd'), 'utf8');
61
+ if (content === vendor)
62
+ return invoke(cli);
63
+ }
64
+ catch { /* Fall through to the generated shim's fixed target. */ }
65
+ try {
66
+ const content = readFileSync(shim, 'utf8');
67
+ if (content.includes('SET dp0=%~dp0') && content.includes('"%dp0%\\node_modules\\npm\\bin\\npm-cli.js"'))
68
+ return invoke(cli);
69
+ }
70
+ catch { /* Keep looking; never execute an unrecognized wrapper. */ }
71
+ }
72
+ throw new Error('npm CLI could not be verified');
73
+ }
74
+ /** Discovery and both mutating phases use the exact same shell-free invocation. */
75
+ export function readNpmConfiguration(command = 'npm') {
76
+ try {
77
+ const invocation = resolveNpmInvocation(command);
78
+ const value = (args) => execFileSync(invocation.command, [...invocation.args, ...args], {
79
+ encoding: 'utf8', timeout: 5000, stdio: ['ignore', 'pipe', 'ignore'], shell: false,
80
+ }).trim();
81
+ const prefix = value(['prefix', '-g']);
82
+ const cache = value(['config', 'get', 'cache']);
83
+ return prefix && cache ? { npmBin: invocation.args[0] ?? invocation.command, prefix, cache } : undefined;
84
+ }
85
+ catch {
86
+ return undefined;
87
+ }
88
+ }
89
+ /** A lock abort is complete only after the npm process has actually exited. */
90
+ export async function runOwnedNpm(command, args, env, signal) {
91
+ if (signal?.aborted)
92
+ throw new Error('update lock ownership changed');
93
+ const invocation = resolveNpmInvocation(command);
94
+ const child = spawn(invocation.command, [...invocation.args, ...args], { env, stdio: 'ignore', shell: false });
95
+ await new Promise((resolve, reject) => {
96
+ let cancelled = false;
97
+ let timedOut = false;
98
+ let spawnError;
99
+ let escalation;
100
+ const cancel = () => {
101
+ if (cancelled)
102
+ return;
103
+ cancelled = true;
104
+ child.kill('SIGTERM');
105
+ escalation = setTimeout(() => child.kill('SIGKILL'), 2_000);
106
+ };
107
+ const deadline = setTimeout(() => { timedOut = true; cancel(); }, 120_000);
108
+ const onAbort = () => cancel();
109
+ signal?.addEventListener('abort', onAbort, { once: true });
110
+ if (signal?.aborted)
111
+ cancel();
112
+ child.once('error', (error) => { spawnError = error; });
113
+ child.once('close', (code) => {
114
+ clearTimeout(deadline);
115
+ if (escalation)
116
+ clearTimeout(escalation);
117
+ signal?.removeEventListener('abort', onAbort);
118
+ if (signal?.aborted)
119
+ reject(new Error('update lock ownership changed'));
120
+ else if (spawnError)
121
+ reject(new Error('npm could not start'));
122
+ else if (timedOut)
123
+ reject(new Error('npm operation timed out'));
124
+ else if (cancelled)
125
+ reject(new Error('npm operation cancelled'));
126
+ else if (code !== 0)
127
+ reject(new Error('npm operation failed'));
128
+ else
129
+ resolve();
130
+ });
131
+ });
132
+ }
133
+ //# sourceMappingURL=npm-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-process.js","sourceRoot":"","sources":["../../src/application-update/npm-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3E,2FAA2F;AAC3F,SAAS,WAAW,CAAC,SAAiB;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;YAAE,OAAO;QAC1G,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAA8C,CAAC;QAC3H,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,KAAK,gBAAgB;YAAE,OAAO,GAAG,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC,CAAC,2EAA2E,CAAC,CAAC;IACvF,OAAO,SAAS,CAAC;AACnB,CAAC;AAID,MAAM,UAAU,oBAAoB,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,GAEzD,EAAE;IACJ,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,MAAM,GAAG,CAAC,GAAW,EAAiB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,YAAY,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,8EAA8E;IAC9E,6EAA6E;IAC7E,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAClE,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACxF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,KAAK,OAAO;YAC1C,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAiC,CAAC;YAClD,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,wCAAwC,CAAC,CAAC,CAAC;QAC7D,IAAI,GAAG;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;IACzI,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1G,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;SAC9D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAC5D,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,iCAAiC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3C,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;YACnE,IAAI,OAAO,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC,CAAC,wDAAwD,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,6CAA6C,CAAC;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/H,CAAC;QAAC,MAAM,CAAC,CAAC,0DAA0D,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACnD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,oBAAoB,CAAC,OAAO,GAAG,KAAK;IAClD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE;YAChG,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK;SACnF,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,OAAO,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3G,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,IAAc,EAAE,GAAsB,EAAE,MAAoB;IAC7G,IAAI,MAAM,EAAE,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/G,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,UAA6B,CAAC;QAClC,IAAI,UAAqD,CAAC;QAC1D,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE,OAAO;YAAE,MAAM,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvB,IAAI,UAAU;gBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;iBACnE,IAAI,UAAU;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;iBACzD,IAAI,QAAQ;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;iBAC3D,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;iBAC5D,IAAI,IAAI,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;;gBAC1D,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { type ApplicationUpdateState } from '../contract/index.js';
2
+ import { type Installation } from './discovery.ts';
3
+ export declare class ApplicationUpdateConflictError extends Error {
4
+ }
5
+ export declare class ApplicationUpdateFailureError extends Error {
6
+ readonly status: 409 | 503;
7
+ constructor(message: string, status?: 409 | 503);
8
+ }
9
+ export interface ApplicationUpdateServiceLike {
10
+ snapshot(): ApplicationUpdateState;
11
+ apply(): Promise<ApplicationUpdateState>;
12
+ restart(): Promise<ApplicationUpdateState>;
13
+ afterResponse?(): void;
14
+ onStateChange?(listener: () => void): void;
15
+ }
16
+ export interface ApplicationUpdateOptions {
17
+ packageRoot: string;
18
+ launchEntry: string;
19
+ npmPrefix: string;
20
+ npmCache: string;
21
+ npmBin?: string;
22
+ home: string;
23
+ targetVersion: () => string | undefined;
24
+ runNpm?: (args: string[], signal?: AbortSignal) => Promise<void>;
25
+ armRestart?: (plan: RestartPlan) => Promise<number | void>;
26
+ handoff?: () => void;
27
+ onChange?: () => void;
28
+ dryRun?: boolean;
29
+ /** Test-only bounded contention override; normal operation waits 15 seconds. */
30
+ lockWaitMs?: number;
31
+ }
32
+ export interface RestartPlan {
33
+ installation: Exclude<Installation, {
34
+ kind: 'unsupported';
35
+ }>;
36
+ targetVersion: string;
37
+ oldVersion: string;
38
+ stage: string;
39
+ recovery: string;
40
+ recoveryPackage?: string;
41
+ binLinks?: string;
42
+ recordPath: string;
43
+ claimId: string;
44
+ }
45
+ /** Validate the npm result, not merely its exit code. */
46
+ export declare function validateInstalledPackage(path: string, expectedVersion: string, installRoot?: string): void;
47
+ export declare class ApplicationUpdateService implements ApplicationUpdateServiceLike {
48
+ private readonly options;
49
+ private readonly installation;
50
+ private readonly recordPath;
51
+ private readonly dir;
52
+ private readonly recoveryPackage;
53
+ private record;
54
+ private applying?;
55
+ private handoffArmed;
56
+ private armingRestart;
57
+ private listener?;
58
+ private lockLost;
59
+ constructor(options: ApplicationUpdateOptions);
60
+ private refreshRecord;
61
+ snapshot(): ApplicationUpdateState;
62
+ private persist;
63
+ onStateChange(listener: () => void): void;
64
+ apply(): Promise<ApplicationUpdateState>;
65
+ private prepare;
66
+ restart(): Promise<ApplicationUpdateState>;
67
+ afterResponse(): void;
68
+ private runNpm;
69
+ }