@angelmsger/fx 0.12.0 → 0.14.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 (80) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/defaults/tools.yaml +14 -2
  3. package/dist/adapters/ci/jenkins-cli/recipes.js +5 -1
  4. package/dist/adapters/ci/jenkins-cli/recipes.js.map +1 -1
  5. package/dist/adapters/family/service.js +5 -0
  6. package/dist/adapters/family/service.js.map +1 -1
  7. package/dist/adapters/log-store/openobserve-cli/provider.js +1 -1
  8. package/dist/adapters/log-store/openobserve-cli/provider.js.map +1 -1
  9. package/dist/adapters/log-store/openobserve-cli/recipes.js +5 -1
  10. package/dist/adapters/log-store/openobserve-cli/recipes.js.map +1 -1
  11. package/dist/adapters/metrics/prometheus-cli/provider.js +1 -1
  12. package/dist/adapters/metrics/prometheus-cli/provider.js.map +1 -1
  13. package/dist/adapters/process/deadline-process.js +27 -5
  14. package/dist/adapters/process/deadline-process.js.map +1 -1
  15. package/dist/application/hook/observe.js +9 -3
  16. package/dist/application/hook/observe.js.map +1 -1
  17. package/dist/application/init/standalone.js +328 -0
  18. package/dist/application/init/standalone.js.map +1 -0
  19. package/dist/application/login/verify.js +4 -2
  20. package/dist/application/login/verify.js.map +1 -1
  21. package/dist/application/release/repo.js +4 -2
  22. package/dist/application/release/repo.js.map +1 -1
  23. package/dist/application/self/update.js +84 -27
  24. package/dist/application/self/update.js.map +1 -1
  25. package/dist/application/skill/copies.js +19 -2
  26. package/dist/application/skill/copies.js.map +1 -1
  27. package/dist/application/skill/fx-copies.js.map +1 -1
  28. package/dist/application/skill/standalone-targets.js +8 -4
  29. package/dist/application/skill/standalone-targets.js.map +1 -1
  30. package/dist/application/skill/standalone.js +24 -2
  31. package/dist/application/skill/standalone.js.map +1 -1
  32. package/dist/application/skill/tool-skills.js +26 -0
  33. package/dist/application/skill/tool-skills.js.map +1 -1
  34. package/dist/application/tool/install.js +10 -22
  35. package/dist/application/tool/install.js.map +1 -1
  36. package/dist/application/tool/show.js +6 -1
  37. package/dist/application/tool/show.js.map +1 -1
  38. package/dist/application/tool/toolchain.js +1 -1
  39. package/dist/application/tool/toolchain.js.map +1 -1
  40. package/dist/application/tool/with-skills.js +68 -0
  41. package/dist/application/tool/with-skills.js.map +1 -0
  42. package/dist/application/update/notices.js +1 -1
  43. package/dist/application/update/notices.js.map +1 -1
  44. package/dist/cli/base.js +6 -1
  45. package/dist/cli/base.js.map +1 -1
  46. package/dist/cli/commands/index.js +2 -0
  47. package/dist/cli/commands/index.js.map +1 -1
  48. package/dist/cli/commands/init.js +27 -4
  49. package/dist/cli/commands/init.js.map +1 -1
  50. package/dist/cli/commands/skill/update.js +17 -0
  51. package/dist/cli/commands/skill/update.js.map +1 -0
  52. package/dist/cli/preparation-view.js +63 -4
  53. package/dist/cli/preparation-view.js.map +1 -1
  54. package/dist/cli/skill-command.js +1 -1
  55. package/dist/cli/skill-command.js.map +1 -1
  56. package/dist/cli/tool-command.js +10 -5
  57. package/dist/cli/tool-command.js.map +1 -1
  58. package/dist/composition/command-wiring.js +14 -0
  59. package/dist/composition/command-wiring.js.map +1 -1
  60. package/dist/composition/tool-install.js +9 -0
  61. package/dist/composition/tool-install.js.map +1 -1
  62. package/dist/composition/update.js +2 -0
  63. package/dist/composition/update.js.map +1 -1
  64. package/dist/domain/manifest/rules/tools.js +1 -0
  65. package/dist/domain/manifest/rules/tools.js.map +1 -1
  66. package/dist/domain/manifest/tools.schema.js +6 -0
  67. package/dist/domain/manifest/tools.schema.js.map +1 -1
  68. package/dist/domain/preparation.js.map +1 -1
  69. package/dist/domain/release/version.js +5 -3
  70. package/dist/domain/release/version.js.map +1 -1
  71. package/dist/domain/setup/planner.js +5 -1
  72. package/dist/domain/setup/planner.js.map +1 -1
  73. package/dist/domain/setup/types.js.map +1 -1
  74. package/dist/domain/toolchain/resolve.js +26 -16
  75. package/dist/domain/toolchain/resolve.js.map +1 -1
  76. package/package.json +1 -1
  77. package/skills/fx-workspace/SKILL.md +6 -6
  78. package/skills/fx-workspace/references/commands.md +12 -4
  79. package/skills/fx-workspace/references/initialization.md +17 -0
  80. package/skills/fx-workspace/references/workspace-tasks.md +3 -3
@@ -0,0 +1,328 @@
1
+ // Init without a manifest prepares companion tools on this machine rather than a
2
+ // workspace. The person picks tools from the bundled catalog; fx installs the missing
3
+ // ones, has each install its Skill beside fx's own, and checks each sign-in. A tool's
4
+ // own setup asks for the service and the person's credentials, so fx starts it only
5
+ // when the person at the terminal says yes, never on --yes, and otherwise hands it over.
6
+ import { asDevkitError, DevkitError, toEnvelope, withPartialResult } from '../../domain/errors.js';
7
+ import { preparation, preparationCheck, } from '../../domain/preparation.js';
8
+ import { shellLine } from '../../domain/shell.js';
9
+ import { CHECK_TIMEOUT_MS, commandVerdict } from '../login/verify.js';
10
+ import { assertWritable } from '../safety/posture.js';
11
+ import { applyCopies, planCopies } from '../skill/fx-copies.js';
12
+ import { skillTargets } from '../skill/targets.js';
13
+ import { planToolSkills, runTools, toolSkillOutcome, } from '../skill/tool-skills.js';
14
+ import { skillChecks } from '../sync/checks.js';
15
+ import { ToolCheck } from '../tool/check.js';
16
+ import { selectTools } from '../tool/select.js';
17
+ import { bundledToolchain } from '../tool/toolchain.js';
18
+ export const TOOL_SETUP_STAGES = ['tools', 'skills', 'setup'];
19
+ export class StandaloneInit {
20
+ deps;
21
+ constructor(deps) {
22
+ this.deps = deps;
23
+ }
24
+ async execute(input) {
25
+ const catalog = bundledToolchain(this.deps.bundledTools(), this.deps.cliVersion).all.filter((tool) => tool.enabled);
26
+ const selected = await this.choose(catalog, input);
27
+ if (!input.dryRun)
28
+ assertWritable(input.posture, 'init');
29
+ const installs = await this.install(selected, input);
30
+ const statuses = await new ToolCheck(this.deps.process).execute({
31
+ tools: selected,
32
+ continueOnError: true,
33
+ });
34
+ const onPath = selected.filter((tool) => status(statuses, tool).state !== 'missing');
35
+ const skills = await this.skills(selected, onPath, installs, input);
36
+ const signIns = new Map();
37
+ for (const tool of onPath)
38
+ signIns.set(tool.name, await this.signIn(tool, input));
39
+ const rows = selected.map((tool) => row(tool, status(statuses, tool), installs, skills.tools, signIns.get(tool.name)));
40
+ const checks = input.dryRun
41
+ ? []
42
+ : [
43
+ ...rows.flatMap((item) => toolChecks(item, {
44
+ cwd: input.cwd,
45
+ install: installs.find((result) => result.name === item.name),
46
+ signIn: signIns.get(item.name),
47
+ })),
48
+ ...skillChecks({ links: [], ...skills, summary: {} }, new Set(selected.map((tool) => tool.name))),
49
+ ...(await this.agentCheck(input.cwd)),
50
+ ];
51
+ return {
52
+ operation: input.dryRun ? 'preview' : 'apply',
53
+ tools: rows,
54
+ tool_install: installs,
55
+ skills,
56
+ preparation: preparation({
57
+ scope: {
58
+ workspace: null,
59
+ stages: TOOL_SETUP_STAGES,
60
+ repositories: [],
61
+ tools: selected.map((tool) => tool.name),
62
+ environments: [],
63
+ },
64
+ checks,
65
+ preview: input.dryRun,
66
+ resume: {
67
+ id: 'check-tools',
68
+ description: 'Check these tools again after setting them up',
69
+ argv: ['fx', 'init', '--tools', selected.map((tool) => tool.name).join(',')],
70
+ cwd: input.cwd,
71
+ actor: 'agent',
72
+ requires_approval: false,
73
+ },
74
+ }),
75
+ };
76
+ }
77
+ async choose(catalog, input) {
78
+ const words = input.tools?.filter(Boolean) ??
79
+ (input.interactive ? parseChoice(await this.deps.prompter.ask(menu(catalog)), catalog) : []);
80
+ if (words.length === 0)
81
+ throw new DevkitError('usage', 'INIT_INPUT_REQUIRED', 'Choose the tools to set up', {
82
+ hint: 'Without a manifest, init sets up the companion tools you name from the catalog; with one, it prepares a workspace.',
83
+ nextSteps: [
84
+ this.command('fx', 'tool', 'list', '--catalog'),
85
+ this.command('fx', 'init', '--tools', '<name,...>'),
86
+ this.command('fx', 'init', '--tools', ALL),
87
+ this.command('fx', 'init', '<directory>', '--from', '<source>'),
88
+ ],
89
+ });
90
+ if (words.includes(ALL))
91
+ return [...catalog];
92
+ const names = new Set(selectTools(catalog, words).map((tool) => tool.name));
93
+ return catalog.filter((tool) => names.has(tool.name));
94
+ }
95
+ // One tool's failure leaves the others to install; an interruption stops them all.
96
+ async install(selected, input) {
97
+ const results = [];
98
+ for (const tool of selected) {
99
+ if ((await this.deps.process.which(tool.binary)) !== undefined)
100
+ continue;
101
+ try {
102
+ results.push(...(await this.deps.toolInstall.execute({
103
+ tools: selected,
104
+ names: [tool.name],
105
+ update: false,
106
+ operation: 'init',
107
+ dryRun: input.dryRun,
108
+ posture: input.posture,
109
+ commandShell: this.deps.commandShell,
110
+ })));
111
+ }
112
+ catch (error) {
113
+ const failure = asDevkitError(error);
114
+ if (failure.category === 'internal')
115
+ throw withPartialResult(error, { tool_install: results });
116
+ results.push({
117
+ name: tool.name,
118
+ via: tool.install[0]?.via ?? 'manual',
119
+ vector: null,
120
+ docs: tool.docs ?? null,
121
+ ran: false,
122
+ code: null,
123
+ version_after: null,
124
+ status: 'failed',
125
+ error: failure.message,
126
+ failure: toEnvelope(failure).error,
127
+ });
128
+ }
129
+ }
130
+ return results;
131
+ }
132
+ // Each chosen tool is installed by this init, which is what lets a preview plan the
133
+ // Skill of a tool it has yet to install.
134
+ async skills(selected, onPath, installs, input) {
135
+ const failed = new Set(installs.filter((item) => item.status === 'failed').map((i) => i.name));
136
+ const status = input.dryRun ? 'planned' : 'not_started';
137
+ const fx = (await planCopies(this.deps, this.deps.skills, undefined)).map((item) => ({ ...item, status }));
138
+ const tools = await planToolSkills(this.deps, this.deps.skills, {
139
+ tools: selected.filter((tool) => input.dryRun ? !failed.has(tool.name) : onPath.includes(tool)),
140
+ dryRun: input.dryRun,
141
+ posture: input.posture,
142
+ });
143
+ if (input.dryRun)
144
+ return { fx, tools };
145
+ try {
146
+ await applyCopies(this.deps, this.deps.skills, fx, input);
147
+ await runTools(this.deps, tools);
148
+ }
149
+ catch (error) {
150
+ throw withPartialResult(error, { tool_install: installs, skills: { fx, tools } });
151
+ }
152
+ return { fx, tools };
153
+ }
154
+ async signIn(tool, input) {
155
+ if (tool.auth === undefined)
156
+ return { state: 'none', detail: 'needs no sign-in' };
157
+ const before = await this.check(tool);
158
+ const login = tool.auth.login;
159
+ const offered = input.interactive && !input.yes && !input.dryRun && login !== undefined;
160
+ if (before.state !== 'pending' || !offered)
161
+ return before;
162
+ const vector = [tool.binary, ...login];
163
+ const go = await this.deps.prompter.confirm(`${tool.name} is not signed in. Set it up now with \`${shellLine(vector, this.deps.commandShell)}\`? It asks for the service and your credentials.`, { defaultYes: true });
164
+ if (!go)
165
+ return before;
166
+ await this.deps.process.run(vector, {
167
+ interactive: true,
168
+ diagnostic: { phase: `${tool.name} setup` },
169
+ });
170
+ return this.check(tool);
171
+ }
172
+ async check(tool) {
173
+ const { command, json } = tool.auth;
174
+ try {
175
+ const result = await this.deps.process.run([tool.binary, ...command], {
176
+ timeoutMs: CHECK_TIMEOUT_MS,
177
+ sensitiveOutput: true,
178
+ diagnostic: { phase: `${tool.name} sign-in check` },
179
+ });
180
+ if (result.notStarted)
181
+ return { state: 'unknown', detail: `${tool.binary} did not start` };
182
+ const unmet = `${tool.name} is not signed in`;
183
+ const verdict = commandVerdict({ command, ...(json === undefined ? {} : { json: { ...json, unmet } }) }, result);
184
+ if (verdict.ok)
185
+ return { state: 'ready', detail: `${tool.name} is signed in` };
186
+ const said = verdict.detail === unmet ? '' : `: ${verdict.detail}`;
187
+ return { state: 'pending', detail: `${unmet}${said}` };
188
+ }
189
+ catch (error) {
190
+ const failure = asDevkitError(error);
191
+ if (failure.code !== 'PROCESS_TIMEOUT')
192
+ throw error;
193
+ return { state: 'unknown', detail: failure.message };
194
+ }
195
+ }
196
+ // Skills reach the coding agents fx finds, or the ones a person picked with `fx agent pick`.
197
+ async agentCheck(cwd) {
198
+ if ((await skillTargets(this.deps.skills, undefined)).length > 0)
199
+ return [];
200
+ return [
201
+ preparationCheck('skill:agents', 'blocked', 'No coding agent found; no Skill was installed', {
202
+ required: false,
203
+ owner: 'user',
204
+ actions: [
205
+ {
206
+ id: 'agents',
207
+ description: 'List the coding agents fx knows; fx agent pick chooses where Skills go',
208
+ argv: ['fx', 'agent', 'list'],
209
+ cwd,
210
+ actor: 'agent',
211
+ requires_approval: false,
212
+ },
213
+ ],
214
+ }),
215
+ ];
216
+ }
217
+ command(...vector) {
218
+ return shellLine(vector, this.deps.commandShell);
219
+ }
220
+ }
221
+ const ALL = 'all';
222
+ function menu(catalog) {
223
+ const width = Math.max(...catalog.map((tool) => tool.name.length));
224
+ const lines = catalog.map((tool, index) => `${String(index + 1).padStart(3)} ${tool.name.padEnd(width)} ${tool.desc ?? ''}`.trimEnd());
225
+ return [
226
+ 'No manifest given, so fx sets up companion tools on this machine.',
227
+ 'For a workspace from a manifest, run fx init <directory> --from <source> instead.',
228
+ '',
229
+ ...lines,
230
+ 'Which ones? Numbers or names, separated by commas or spaces (Enter for all):',
231
+ ].join('\n');
232
+ }
233
+ // A number is the tool listed at that position; anything else is a name, checked later.
234
+ function parseChoice(answer, catalog) {
235
+ const words = answer.split(/[\s,]+/).filter(Boolean);
236
+ if (words.length === 0)
237
+ return [ALL];
238
+ return words.map((word) => {
239
+ const index = /^\d+$/.test(word) ? Number(word) - 1 : -1;
240
+ return catalog[index]?.name ?? word;
241
+ });
242
+ }
243
+ function status(statuses, tool) {
244
+ return statuses.find((item) => item.name === tool.name);
245
+ }
246
+ function row(tool, current, installs, skills, signIn) {
247
+ const installed = installs.find((item) => item.name === tool.name);
248
+ return {
249
+ name: tool.name,
250
+ state: current.state,
251
+ installed: current.installed,
252
+ install: installOutcome(installed),
253
+ skill: toolSkillOutcome(skills, tool.name),
254
+ sign_in: signIn?.state ?? 'unknown',
255
+ setup: tool.auth?.login === undefined ? null : [tool.binary, ...tool.auth.login],
256
+ };
257
+ }
258
+ function installOutcome(installed) {
259
+ if (installed === undefined)
260
+ return 'present';
261
+ if (installed.status === 'planned')
262
+ return 'planned';
263
+ if (installed.status === 'failed')
264
+ return 'failed';
265
+ return installed.ran ? 'installed' : 'manual';
266
+ }
267
+ // A tool that is not on PATH has nothing to sign in to yet; its installation is the blocker.
268
+ function toolChecks(item, context) {
269
+ const { signIn, cwd } = context;
270
+ const checks = [installCheck(item, context)];
271
+ if (signIn === undefined || signIn.state === 'none')
272
+ return checks;
273
+ const ready = signIn.state === 'ready';
274
+ const state = signIn.state === 'pending' ? 'blocked' : signIn.state;
275
+ checks.push(preparationCheck(`login:${item.name}.auth`, state, signIn.detail, {
276
+ resource: item.name,
277
+ owner: 'user',
278
+ ...(ready || item.setup === null
279
+ ? {}
280
+ : {
281
+ actions: [
282
+ {
283
+ id: `setup:${item.name}`,
284
+ description: `Set up ${item.name}: it asks for the service and your credentials`,
285
+ argv: item.setup,
286
+ cwd,
287
+ actor: 'user',
288
+ requires_approval: false,
289
+ },
290
+ ],
291
+ }),
292
+ }));
293
+ return checks;
294
+ }
295
+ function installCheck(item, context) {
296
+ const id = `tool:${item.name}`;
297
+ const action = (command, description, approval = false) => ({
298
+ id,
299
+ description,
300
+ argv: ['fx', 'tool', command, item.name],
301
+ cwd: context.cwd,
302
+ actor: 'agent',
303
+ requires_approval: approval,
304
+ });
305
+ const common = { resource: item.name, owner: 'user' };
306
+ if (item.state === 'ok')
307
+ return preparationCheck(id, 'ready', `${item.name} ${item.installed}`);
308
+ if (item.state === 'outdated')
309
+ return preparationCheck(id, 'blocked', `${item.name} ${item.installed} is older than fx needs`, {
310
+ ...common,
311
+ actions: [action('update', `Update ${item.name}`, true)],
312
+ });
313
+ if (item.state === 'unknown')
314
+ return preparationCheck(id, 'unknown', `${item.name} did not report its version`, {
315
+ ...common,
316
+ actions: [action('show', `Inspect ${item.name}`)],
317
+ });
318
+ const failure = context.install?.failure;
319
+ const said = context.install?.error;
320
+ return preparationCheck(id, 'blocked', item.install === 'manual'
321
+ ? `${item.name} has to be installed by hand`
322
+ : `${item.name} is not installed${said ? `: ${said}` : ''}`, {
323
+ ...common,
324
+ ...(failure === undefined ? {} : { code: failure.code, failure }),
325
+ actions: [action('show', `See how to install ${item.name}`)],
326
+ });
327
+ }
328
+ //# sourceMappingURL=standalone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone.js","sourceRoot":"","sources":["../../../src/application/init/standalone.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ import { ServiceOperation } from '../services/operation.js';
11
11
  import { workspaceCommand } from '../workspace/guidance.js';
12
12
  // Identity and access checks may contact a remote service or unlock native storage.
13
13
  // Local binary and public-setting probes retain their separate short deadlines.
14
- const CHECK_TIMEOUT_MS = 30_000;
14
+ export const CHECK_TIMEOUT_MS = 30_000;
15
15
  export class Verifier {
16
16
  deps;
17
17
  setup;
@@ -57,6 +57,7 @@ export class Verifier {
57
57
  const vector = expandHomeIn(verify.command, this.setup.home);
58
58
  const result = await this.deps.process.run(vector, {
59
59
  timeoutMs: CHECK_TIMEOUT_MS,
60
+ deadline: verify.deadline,
60
61
  cwd: this.deps.ctx.root,
61
62
  env: step.executionEnv,
62
63
  diagnostic: { phase: `${step.id} check` },
@@ -98,7 +99,8 @@ export function stepTrust(trust, step, asked) {
98
99
  : {}),
99
100
  };
100
101
  }
101
- function commandVerdict(verify, result) {
102
+ // Init without a workspace reads a tool's sign-in status through the same verdict.
103
+ export function commandVerdict(verify, result) {
102
104
  const unmet = verify.json !== undefined && !matchesJson(result.stdout, verify.json)
103
105
  ? (statedReason(result.stdout, verify.json) ??
104
106
  verify.json.unmet ??
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/application/login/verify.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,kFAAkF;AAClF,0CAA0C;AAE1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAoB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAmB5D,oFAAoF;AACpF,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,MAAM,OAAO,QAAQ;IAEA;IACA;IAFnB,YACmB,IAAmB,EACnB,KAAgB;QADhB,SAAI,GAAJ,IAAI,CAAe;QACnB,UAAK,GAAL,KAAK,CAAW;IAChC,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,IAAe,EAAE,UAAyB,EAAE;QACvD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;gBAC7E,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,WAAW;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1F,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,EAAE;gBAC1C,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;QACpD,CAAC;QACD,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;gBACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,IAAI,EAAE,EAAE,CAAC;YAC1D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;YAC7C,MAAM,EAAE,MAAM,CAAC,OAAO;YACtB,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,QAAQ;SAC1B,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAClF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;YACjD,SAAS,EAAE,gBAAgB;YAC3B,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;YACvB,GAAG,EAAE,IAAI,CAAC,YAAY;YACtB,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE;YACzC,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,UAAU;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACjF,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,MAAc;QAC9C,OAAO,gBAAgB,CAAC,MAAM,EAAE;YAC9B,IAAI,EAAE,4DAA4D;YAClE,SAAS,EAAE;gBACT,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;gBACjD,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC;aACrD;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAED,4FAA4F;AAC5F,MAAM,UAAU,SAAS,CACvB,KAAmB,EACnB,IAAe,EACf,KAAiF;IAEjF,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;QACvC,GAAG,CAAC,IAAI,CAAC,YAAY;YACnB,CAAC,CAAC;gBACE,SAAS,EAAE;oBACT,OAAO,EAAE,wBAAwB;oBACjC,QAAQ,EAAE,IAAI,CAAC,EAAE;oBACjB,QAAQ,EAAE,IAAI,CAAC,YAAY;iBAC5B;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,MAAoE,EACpE,MAAqB;IAErB,MAAM,KAAK,GACT,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;QACnE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,KAAK;YACjB,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1F,sFAAsF;IACtF,yBAAyB;IACzB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,MAAM,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;QACxF,GAAG,CAAC,IAAI,KAAK,SAAS;YACpB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE;oBACR,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;iBACxD;aACF,CAAC;KACP,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,MAAM,CAAC,MAAoE;IAClF,OAAO,MAAM,CAAC,IAAI,KAAK,SAAS;QAC9B,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,uEAAuE;AACvE,kEAAkE;AAClE,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,IAAY;IACrD,MAAM,MAAM,GACV,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAyB,EAAE,IAAY;IAClE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/application/login/verify.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  import { asDevkitError } from '../../domain/errors.js';
7
7
  import { DEPENDENCY_FILES } from '../../domain/release/deps.js';
8
8
  import { attributed, peopleCommits, unmergedOf } from '../../domain/release/merge.js';
9
- import { declaredVersion, GRADLE_PROPERTIES, VERSION_READERS, } from '../../domain/release/version.js';
9
+ import { declaredVersion, GRADLE_PROPERTIES, ROOT_VERSION, VERSION_READERS, } from '../../domain/release/version.js';
10
10
  export async function describeRepo(ctx, outcome) {
11
11
  const blank = {
12
12
  name: ctx.repo.name,
@@ -82,8 +82,10 @@ async function headOf(asked, facts, branch, side, file) {
82
82
  version: version ?? null,
83
83
  };
84
84
  }
85
- // The dependency file the deps check reads, when it is a kind that declares a version.
85
+ // Prefer the explicit root VERSION file, then the dependency file the deps check reads.
86
86
  async function versionFileAt(facts, sha) {
87
+ if ((await facts.host.readFile(facts.ref, ROOT_VERSION, sha)) !== undefined)
88
+ return ROOT_VERSION;
87
89
  for (const { file } of DEPENDENCY_FILES) {
88
90
  const text = await facts.host.readFile(facts.ref, file, sha);
89
91
  if (text !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/application/release/repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/application/release/repo.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,qFAAqF;AACrF,qFAAqF;AACrF,uFAAuF;AACvF,mEAAmE;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAOtF,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,eAAe,GAChB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAiB,EAAE,OAAqB;IACzE,MAAM,KAAK,GAAgB;QACzB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI;QACnB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI;QAC7B,UAAU,EAAE,EAAE;KACf,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACvF,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;QAC5C,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;QAC1E,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;KACtF,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;IACxF,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,UAAU;QAClB,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/C,QAAQ,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QAC5D,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;KAC/B,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,MAAM,MAAM,GAAG;IACb,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,UAAU;CACX,CAAC;AAEF,8EAA8E;AAC9E,MAAM,SAAS;IACI,MAAM,GAAiB,EAAE,CAAC;IAE3C,KAAK,CAAC,KAAK,CAAI,KAAa,EAAE,GAAqB;QACjD,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5F,CAAC;CACF;AAED,KAAK,UAAU,MAAM,CACnB,KAAgB,EAChB,KAAgB,EAChB,MAAc,EACd,IAAyB,EACzB,IAAwB;IAExB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1C,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7E,IAAI,KAAK,SAAS;YAChB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7E,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;QAC1B,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI;QAChC,OAAO,EAAE,OAAO,IAAI,IAAI;KACzB,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,KAAK,UAAU,aAAa,CAAC,KAAgB,EAAE,GAAW;IACxD,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IACjG,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACxF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAgB,EAAE,IAAY,EAAE,GAAW;IAClE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzE,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAChF,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;AAC/F,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,GAAiB,EACjB,KAAgB,EAChB,IAAY,EACZ,EAAU;IAEV,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAClE,OAAO,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACzC,CAAC"}
@@ -1,6 +1,8 @@
1
1
  // Update fx through its distribution registry after confirmation and the write gate.
2
2
  // Capture installer output so machine-readable results remain valid on stdout. A
3
- // completed install settles the update-check window on the version it installed.
3
+ // completed install settles the update-check window on the version it installed, then
4
+ // has the installed fx refresh the copies of its Skill that are now older than it: only
5
+ // the new installation knows its own Skill and version.
4
6
  import { DevkitError } from '../../domain/errors.js';
5
7
  import { stderrReason } from '../../domain/toolchain/stderr.js';
6
8
  import { assertWritable } from '../safety/posture.js';
@@ -14,6 +16,44 @@ export class SelfUpdate {
14
16
  this.deps = deps;
15
17
  }
16
18
  async execute(input) {
19
+ const vector = this.plan(input);
20
+ const unrun = (reason) => ({
21
+ vector,
22
+ ran: false,
23
+ code: null,
24
+ reason,
25
+ skill_refresh: this.unrefreshed(input.posture, reason),
26
+ });
27
+ if (input.dryRun)
28
+ return unrun('dry run');
29
+ assertWritable(input.posture, 'self update');
30
+ await this.assertInstaller();
31
+ if (!input.yes) {
32
+ const go = await this.deps.prompter.confirm(`Run \`${vector.join(' ')}\`?`, {
33
+ defaultYes: true,
34
+ });
35
+ if (!go)
36
+ return unrun('declined');
37
+ }
38
+ const result = await this.deps.process.run(vector, { interactive: false });
39
+ if (result.code !== 0)
40
+ return {
41
+ vector,
42
+ ran: true,
43
+ code: result.code,
44
+ reason: stderrReason(result.stderr, result.code),
45
+ skill_refresh: this.unrefreshed(input.posture, 'fx was not updated'),
46
+ };
47
+ await this.settleCheck(input);
48
+ return {
49
+ vector,
50
+ ran: true,
51
+ code: 0,
52
+ reason: null,
53
+ skill_refresh: await this.refreshSkill(input.posture),
54
+ };
55
+ }
56
+ plan(input) {
17
57
  if (input.registry === null) {
18
58
  throw new DevkitError('config', 'REGISTRY_UNKNOWN', 'No valid update registry is configured', {
19
59
  hint: 'Check npm registry configuration and any FX_REGISTRY override; follow the registry setup handoff.',
@@ -30,37 +70,44 @@ export class SelfUpdate {
30
70
  throw new DevkitError('config', 'REGISTRY_UNKNOWN', 'The installer cannot plan this update', {
31
71
  nextSteps: ['fx self info', `Update ${input.packageName} with your package manager.`],
32
72
  });
33
- if (input.dryRun)
34
- return { vector, ran: false, code: null, reason: 'dry run' };
35
- assertWritable(input.posture, 'self update');
36
- if (!(await this.deps.installer.available()))
37
- throw new DevkitError('config', 'TOOL_MISSING', 'The self-update installer is unavailable', {
38
- nextSteps: ['Install npm or add it to PATH, then retry.'],
39
- handoff: {
40
- summary: 'The package installer is missing.',
41
- command: 'fx self info --format json',
42
- userSteps: [
43
- { id: 'self-installer', kind: 'manual', title: 'Install npm or add it to PATH.' },
44
- ],
45
- },
46
- });
47
- if (!input.yes) {
48
- const go = await this.deps.prompter.confirm(`Run \`${vector.join(' ')}\`?`, {
49
- defaultYes: true,
50
- });
51
- if (!go)
52
- return { vector, ran: false, code: null, reason: 'declined' };
53
- }
54
- const result = await this.deps.process.run(vector, { interactive: false });
55
- const output = {
73
+ return vector;
74
+ }
75
+ async assertInstaller() {
76
+ if (await this.deps.installer.available())
77
+ return;
78
+ throw new DevkitError('config', 'TOOL_MISSING', 'The self-update installer is unavailable', {
79
+ nextSteps: ['Install npm or add it to PATH, then retry.'],
80
+ handoff: {
81
+ summary: 'The package installer is missing.',
82
+ command: 'fx self info --format json',
83
+ userSteps: [
84
+ { id: 'self-installer', kind: 'manual', title: 'Install npm or add it to PATH.' },
85
+ ],
86
+ },
87
+ });
88
+ }
89
+ // The refresh is an invocation of its own and resolves its posture again, so the explicit
90
+ // --allow-writes that let this one write goes with it; nothing weaker does.
91
+ refreshVector(posture) {
92
+ const refresh = this.deps.skillRefresh;
93
+ return posture.source === 'flag' ? [...refresh, '--allow-writes'] : refresh;
94
+ }
95
+ unrefreshed(posture, reason) {
96
+ const vector = this.refreshVector(posture);
97
+ return { vector, ran: false, code: null, refreshed: null, reason };
98
+ }
99
+ async refreshSkill(posture) {
100
+ const vector = this.refreshVector(posture);
101
+ const result = await this.deps.process.run(vector, {
102
+ diagnostic: { phase: 'fx skill update' },
103
+ });
104
+ return {
56
105
  vector,
57
106
  ran: true,
58
107
  code: result.code,
108
+ refreshed: result.code === 0 ? refreshedCopies(result.stdout) : null,
59
109
  reason: result.code === 0 ? null : stderrReason(result.stderr, result.code),
60
110
  };
61
- if (isUpdated(output))
62
- await this.settleCheck(input);
63
- return output;
64
111
  }
65
112
  async settleCheck(input) {
66
113
  const { latest } = await this.deps.check.execute(input);
@@ -68,4 +115,14 @@ export class SelfUpdate {
68
115
  await this.deps.check.markCurrent(input, latest);
69
116
  }
70
117
  }
118
+ // `skill update --format json` lists each copy it considered; a refreshed one now says installed.
119
+ function refreshedCopies(stdout) {
120
+ try {
121
+ const { items } = JSON.parse(stdout);
122
+ return Array.isArray(items) ? items.filter((item) => item.status === 'installed').length : null;
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ }
71
128
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/application/self/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/application/self/update.ts"],"names":[],"mappings":"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"}