@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.
- package/CHANGELOG.md +72 -0
- package/defaults/tools.yaml +14 -2
- package/dist/adapters/ci/jenkins-cli/recipes.js +5 -1
- package/dist/adapters/ci/jenkins-cli/recipes.js.map +1 -1
- package/dist/adapters/family/service.js +5 -0
- package/dist/adapters/family/service.js.map +1 -1
- package/dist/adapters/log-store/openobserve-cli/provider.js +1 -1
- package/dist/adapters/log-store/openobserve-cli/provider.js.map +1 -1
- package/dist/adapters/log-store/openobserve-cli/recipes.js +5 -1
- package/dist/adapters/log-store/openobserve-cli/recipes.js.map +1 -1
- package/dist/adapters/metrics/prometheus-cli/provider.js +1 -1
- package/dist/adapters/metrics/prometheus-cli/provider.js.map +1 -1
- package/dist/adapters/process/deadline-process.js +27 -5
- package/dist/adapters/process/deadline-process.js.map +1 -1
- package/dist/application/hook/observe.js +9 -3
- package/dist/application/hook/observe.js.map +1 -1
- package/dist/application/init/standalone.js +328 -0
- package/dist/application/init/standalone.js.map +1 -0
- package/dist/application/login/verify.js +4 -2
- package/dist/application/login/verify.js.map +1 -1
- package/dist/application/release/repo.js +4 -2
- package/dist/application/release/repo.js.map +1 -1
- package/dist/application/self/update.js +84 -27
- package/dist/application/self/update.js.map +1 -1
- package/dist/application/skill/copies.js +19 -2
- package/dist/application/skill/copies.js.map +1 -1
- package/dist/application/skill/fx-copies.js.map +1 -1
- package/dist/application/skill/standalone-targets.js +8 -4
- package/dist/application/skill/standalone-targets.js.map +1 -1
- package/dist/application/skill/standalone.js +24 -2
- package/dist/application/skill/standalone.js.map +1 -1
- package/dist/application/skill/tool-skills.js +26 -0
- package/dist/application/skill/tool-skills.js.map +1 -1
- package/dist/application/tool/install.js +10 -22
- package/dist/application/tool/install.js.map +1 -1
- package/dist/application/tool/show.js +6 -1
- package/dist/application/tool/show.js.map +1 -1
- package/dist/application/tool/toolchain.js +1 -1
- package/dist/application/tool/toolchain.js.map +1 -1
- package/dist/application/tool/with-skills.js +68 -0
- package/dist/application/tool/with-skills.js.map +1 -0
- package/dist/application/update/notices.js +1 -1
- package/dist/application/update/notices.js.map +1 -1
- package/dist/cli/base.js +6 -1
- package/dist/cli/base.js.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.js +27 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/skill/update.js +17 -0
- package/dist/cli/commands/skill/update.js.map +1 -0
- package/dist/cli/preparation-view.js +63 -4
- package/dist/cli/preparation-view.js.map +1 -1
- package/dist/cli/skill-command.js +1 -1
- package/dist/cli/skill-command.js.map +1 -1
- package/dist/cli/tool-command.js +10 -5
- package/dist/cli/tool-command.js.map +1 -1
- package/dist/composition/command-wiring.js +14 -0
- package/dist/composition/command-wiring.js.map +1 -1
- package/dist/composition/tool-install.js +9 -0
- package/dist/composition/tool-install.js.map +1 -1
- package/dist/composition/update.js +2 -0
- package/dist/composition/update.js.map +1 -1
- package/dist/domain/manifest/rules/tools.js +1 -0
- package/dist/domain/manifest/rules/tools.js.map +1 -1
- package/dist/domain/manifest/tools.schema.js +6 -0
- package/dist/domain/manifest/tools.schema.js.map +1 -1
- package/dist/domain/preparation.js.map +1 -1
- package/dist/domain/release/version.js +5 -3
- package/dist/domain/release/version.js.map +1 -1
- package/dist/domain/setup/planner.js +5 -1
- package/dist/domain/setup/planner.js.map +1 -1
- package/dist/domain/setup/types.js.map +1 -1
- package/dist/domain/toolchain/resolve.js +26 -16
- package/dist/domain/toolchain/resolve.js.map +1 -1
- package/package.json +1 -1
- package/skills/fx-workspace/SKILL.md +6 -6
- package/skills/fx-workspace/references/commands.md +12 -4
- package/skills/fx-workspace/references/initialization.md +17 -0
- 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
|
-
|
|
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;
|
|
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
|
-
//
|
|
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":"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"}
|
|
@@ -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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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":"AAAA,qFAAqF;AACrF,iFAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/application/self/update.ts"],"names":[],"mappings":"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"}
|