@paradigma-inc/flywheel 0.1.95 → 0.1.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -4
- package/package.json +2 -1
- package/skills/flywheel-llm-proof-paper/SKILL.md +156 -0
- package/skills/flywheel-llm-proof-paper/agents/openai.yaml +4 -0
- package/skills/flywheel-llm-proof-paper/references/checks.md +60 -0
- package/skills/flywheel-llm-proof-paper/scripts/__pycache__/check_paper.cpython-311.pyc +0 -0
- package/skills/flywheel-llm-proof-paper/scripts/check_paper.py +1065 -0
- package/src/cli.mjs +27 -3
- package/src/public-command-metadata.mjs +44 -0
- package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.d.ts +21 -0
- package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.js +68 -2
- package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/compute-acquire.js +2 -8
- package/src/runtime/vendor/flywheel-cli-dist/commands/compute-acquire.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/feedback-create.js +4 -0
- package/src/runtime/vendor/flywheel-cli-dist/commands/feedback-create.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/registry/compute.js +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/registry/compute.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.js +16 -0
- package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.js.map +1 -1
- package/src/runtime/vendor/manifest.json +1 -1
- package/src/setup/shared/prior-mode-detect.mjs +76 -9
- package/src/unified-cli.mjs +54 -16
- package/src/update/cache.mjs +124 -0
- package/src/update/command.mjs +438 -0
- package/src/update/install-state.mjs +135 -0
- package/src/update/refresh.mjs +393 -0
- package/src/update/registry.mjs +35 -0
- package/src/update/version.mjs +59 -0
- package/src/update/warning.mjs +109 -0
package/src/cli.mjs
CHANGED
|
@@ -1193,8 +1193,11 @@ async function runUninstallCommand(options) {
|
|
|
1193
1193
|
log.blank();
|
|
1194
1194
|
}
|
|
1195
1195
|
|
|
1196
|
-
function buildProgram() {
|
|
1196
|
+
function buildProgram({ exitOverride = false } = {}) {
|
|
1197
1197
|
const program = new Command();
|
|
1198
|
+
if (exitOverride) {
|
|
1199
|
+
program.exitOverride();
|
|
1200
|
+
}
|
|
1198
1201
|
program
|
|
1199
1202
|
.name("flywheel")
|
|
1200
1203
|
.description("Flywheel setup CLI")
|
|
@@ -1250,6 +1253,10 @@ Examples:
|
|
|
1250
1253
|
)
|
|
1251
1254
|
.action(async (shell, options) => {
|
|
1252
1255
|
if (!shell) {
|
|
1256
|
+
if (exitOverride) {
|
|
1257
|
+
completionCommand.outputHelp();
|
|
1258
|
+
return;
|
|
1259
|
+
}
|
|
1253
1260
|
completionCommand.help();
|
|
1254
1261
|
return;
|
|
1255
1262
|
}
|
|
@@ -1445,18 +1452,35 @@ Next steps:
|
|
|
1445
1452
|
return program;
|
|
1446
1453
|
}
|
|
1447
1454
|
|
|
1448
|
-
export async function runCli(argv = process.argv) {
|
|
1455
|
+
export async function runCli(argv = process.argv, { exitOverride = false } = {}) {
|
|
1449
1456
|
try {
|
|
1450
|
-
const program = buildProgram();
|
|
1457
|
+
const program = buildProgram({ exitOverride });
|
|
1451
1458
|
await program.parseAsync(argv);
|
|
1459
|
+
return process.exitCode ?? 0;
|
|
1452
1460
|
} catch (error) {
|
|
1453
1461
|
if (error instanceof Error && error.name === "ExitPromptError") {
|
|
1462
|
+
if (exitOverride) {
|
|
1463
|
+
return 0;
|
|
1464
|
+
}
|
|
1454
1465
|
process.exit(0);
|
|
1455
1466
|
}
|
|
1456
1467
|
if (error instanceof Error && /cancelled/i.test(error.message)) {
|
|
1457
1468
|
log.warn(error.message);
|
|
1469
|
+
if (exitOverride) {
|
|
1470
|
+
return 0;
|
|
1471
|
+
}
|
|
1458
1472
|
process.exit(0);
|
|
1459
1473
|
}
|
|
1474
|
+
if (
|
|
1475
|
+
exitOverride &&
|
|
1476
|
+
error &&
|
|
1477
|
+
typeof error === "object" &&
|
|
1478
|
+
typeof error.code === "string" &&
|
|
1479
|
+
error.code.startsWith("commander.") &&
|
|
1480
|
+
Number.isInteger(error.exitCode)
|
|
1481
|
+
) {
|
|
1482
|
+
return error.exitCode;
|
|
1483
|
+
}
|
|
1460
1484
|
throw error;
|
|
1461
1485
|
}
|
|
1462
1486
|
}
|
|
@@ -58,6 +58,11 @@ export const HELP_EXTRAS = [
|
|
|
58
58
|
name: "setup",
|
|
59
59
|
summary: "Install Flywheel CLI + MCP + skills.",
|
|
60
60
|
},
|
|
61
|
+
{
|
|
62
|
+
group: "setup-admin",
|
|
63
|
+
name: "update",
|
|
64
|
+
summary: "Update Flywheel CLI and refresh local setup artifacts.",
|
|
65
|
+
},
|
|
61
66
|
{
|
|
62
67
|
group: "setup-admin",
|
|
63
68
|
name: "uninstall",
|
|
@@ -332,6 +337,45 @@ export const USAGE_EXTRAS = [
|
|
|
332
337
|
],
|
|
333
338
|
related: ["uninstall"],
|
|
334
339
|
},
|
|
340
|
+
{
|
|
341
|
+
group: "setup-admin",
|
|
342
|
+
name: "update",
|
|
343
|
+
summary: "Update the local Flywheel CLI package and setup artifacts",
|
|
344
|
+
endpoints: [],
|
|
345
|
+
required: [],
|
|
346
|
+
optional: [
|
|
347
|
+
{
|
|
348
|
+
name: "check",
|
|
349
|
+
type: "boolean",
|
|
350
|
+
description: "Print installed/latest status without changing files",
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
name: "dry-run",
|
|
354
|
+
type: "boolean",
|
|
355
|
+
description: "Print planned package and local setup refresh steps",
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
name: "yes",
|
|
359
|
+
type: "boolean",
|
|
360
|
+
description: "Run prompt-free for agent execution",
|
|
361
|
+
},
|
|
362
|
+
],
|
|
363
|
+
examples: [
|
|
364
|
+
{
|
|
365
|
+
description: "Update the Flywheel CLI and refresh local setup",
|
|
366
|
+
invocation: "flywheel update --yes",
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
description: "Check whether a newer public package is available",
|
|
370
|
+
invocation: "flywheel update --check",
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
description: "Preview update and refresh steps",
|
|
374
|
+
invocation: "flywheel update --dry-run",
|
|
375
|
+
},
|
|
376
|
+
],
|
|
377
|
+
related: ["setup", "uninstall"],
|
|
378
|
+
},
|
|
335
379
|
{
|
|
336
380
|
group: "setup-admin",
|
|
337
381
|
name: "uninstall",
|
|
@@ -2,6 +2,7 @@ import type { CommandContext } from './types.js';
|
|
|
2
2
|
interface ComputeLeaseSummary {
|
|
3
3
|
lease_id?: string;
|
|
4
4
|
status?: string;
|
|
5
|
+
error?: string | null;
|
|
5
6
|
}
|
|
6
7
|
interface ComputeStatusResponse {
|
|
7
8
|
compute?: {
|
|
@@ -12,7 +13,27 @@ interface ComputeStatusResponse {
|
|
|
12
13
|
state?: string;
|
|
13
14
|
leases?: ComputeLeaseSummary[];
|
|
14
15
|
}
|
|
16
|
+
interface ComputeConnectionPayload {
|
|
17
|
+
lease_status?: string;
|
|
18
|
+
host?: string | null;
|
|
19
|
+
port?: number | null;
|
|
20
|
+
user?: string | null;
|
|
21
|
+
private_key?: string | null;
|
|
22
|
+
}
|
|
23
|
+
interface ComputeConnectionResponse {
|
|
24
|
+
compute?: ComputeConnectionPayload | null;
|
|
25
|
+
lease_status?: string;
|
|
26
|
+
host?: string | null;
|
|
27
|
+
port?: number | null;
|
|
28
|
+
user?: string | null;
|
|
29
|
+
private_key?: string | null;
|
|
30
|
+
}
|
|
31
|
+
interface ComputeConnectionPollState {
|
|
32
|
+
status: ComputeStatusResponse;
|
|
33
|
+
connection: ComputeConnectionResponse;
|
|
34
|
+
}
|
|
15
35
|
export declare function pollComputeStatusByToken(context: CommandContext, token: string, terminalStates: ReadonlySet<string>, commandName: string): Promise<ComputeStatusResponse>;
|
|
36
|
+
export declare function pollComputeConnectionReadinessByToken(context: CommandContext, token: string, commandName: string): Promise<ComputeConnectionPollState>;
|
|
16
37
|
interface GrantsListResponse {
|
|
17
38
|
grants?: Array<{
|
|
18
39
|
status?: string;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { pollUntilTerminal } from '../http/poll.js';
|
|
2
|
+
import { EXIT_TRANSPORT } from '../exit-codes.js';
|
|
3
|
+
import { CliHttpError } from '../http/client.js';
|
|
4
|
+
function extractLeases(result) {
|
|
5
|
+
return result?.compute?.leases ?? result?.leases ?? [];
|
|
6
|
+
}
|
|
2
7
|
function extractLeaseStatuses(result) {
|
|
3
|
-
|
|
4
|
-
return leases
|
|
8
|
+
return extractLeases(result)
|
|
5
9
|
.map((lease) => (typeof lease?.status === 'string' ? lease.status : null))
|
|
6
10
|
.filter((status) => status !== null);
|
|
7
11
|
}
|
|
@@ -17,6 +21,43 @@ function resolveEffectiveState(result) {
|
|
|
17
21
|
}
|
|
18
22
|
return result?.compute?.state ?? result?.state ?? null;
|
|
19
23
|
}
|
|
24
|
+
function connectionPayload(result) {
|
|
25
|
+
return result?.compute ?? result ?? null;
|
|
26
|
+
}
|
|
27
|
+
function hasPresentString(value) {
|
|
28
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
29
|
+
}
|
|
30
|
+
function hasPositiveInteger(value) {
|
|
31
|
+
return typeof value === 'number' && Number.isInteger(value) && value > 0;
|
|
32
|
+
}
|
|
33
|
+
function hasUsableConnectionMaterial(result) {
|
|
34
|
+
const payload = connectionPayload(result);
|
|
35
|
+
return (hasPresentString(payload?.host) &&
|
|
36
|
+
hasPositiveInteger(payload?.port) &&
|
|
37
|
+
hasPresentString(payload?.user) &&
|
|
38
|
+
hasPresentString(payload?.private_key));
|
|
39
|
+
}
|
|
40
|
+
function describeConnectionPollState(state) {
|
|
41
|
+
const status = resolveEffectiveState(state.status) ?? 'unknown';
|
|
42
|
+
const payload = connectionPayload(state.connection);
|
|
43
|
+
const connection = typeof payload?.lease_status === 'string' && payload.lease_status.trim()
|
|
44
|
+
? payload.lease_status
|
|
45
|
+
: 'unknown';
|
|
46
|
+
const host = hasPresentString(payload?.host) ? 'present' : 'missing';
|
|
47
|
+
const port = hasPositiveInteger(payload?.port) ? 'present' : 'missing';
|
|
48
|
+
return `status=${status}; connection=${connection}; host=${host}; port=${port}`;
|
|
49
|
+
}
|
|
50
|
+
function throwIfStatusTerminalError(result) {
|
|
51
|
+
const lease = extractLeases(result)[0] ?? null;
|
|
52
|
+
const status = lease?.status ?? resolveEffectiveState(result);
|
|
53
|
+
if (status !== 'error') {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const reason = typeof lease?.error === 'string' && lease.error.trim()
|
|
57
|
+
? lease.error.trim()
|
|
58
|
+
: 'error';
|
|
59
|
+
throw new CliHttpError(`compute lease entered terminal error state: ${reason}`, EXIT_TRANSPORT, 200, result, { method: 'GET', path: '/compute/status' });
|
|
60
|
+
}
|
|
20
61
|
export async function pollComputeStatusByToken(context, token, terminalStates, commandName) {
|
|
21
62
|
const timeoutS = context.globals?.waitTimeoutS ?? 600;
|
|
22
63
|
const verbose = context.globals?.verbose === true;
|
|
@@ -47,6 +88,31 @@ export async function pollComputeStatusByToken(context, token, terminalStates, c
|
|
|
47
88
|
: undefined,
|
|
48
89
|
});
|
|
49
90
|
}
|
|
91
|
+
export async function pollComputeConnectionReadinessByToken(context, token, commandName) {
|
|
92
|
+
const timeoutS = context.globals?.waitTimeoutS ?? 600;
|
|
93
|
+
const verbose = context.globals?.verbose === true;
|
|
94
|
+
return pollUntilTerminal(async () => {
|
|
95
|
+
const status = await context.requestJson('GET', '/compute/status', {
|
|
96
|
+
query: { lease_control_token: token },
|
|
97
|
+
wrapperStep: 'wait-status',
|
|
98
|
+
});
|
|
99
|
+
throwIfStatusTerminalError(status);
|
|
100
|
+
const connection = await context.requestJson('GET', '/compute/connection', {
|
|
101
|
+
query: { lease_control_token: token },
|
|
102
|
+
wrapperStep: 'wait-connection',
|
|
103
|
+
});
|
|
104
|
+
return { status, connection };
|
|
105
|
+
}, (result) => hasUsableConnectionMaterial(result.connection), {
|
|
106
|
+
timeoutS,
|
|
107
|
+
commandName,
|
|
108
|
+
describeState: describeConnectionPollState,
|
|
109
|
+
onProgress: verbose
|
|
110
|
+
? (event) => {
|
|
111
|
+
context.stderr?.(`${JSON.stringify({ event: 'status', data: event })}\n`);
|
|
112
|
+
}
|
|
113
|
+
: undefined,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
50
116
|
export async function pollGrantsUntilActive(context, approvalSessionId, commandName) {
|
|
51
117
|
const timeoutS = context.globals?.waitTimeoutS ?? 600;
|
|
52
118
|
const verbose = context.globals?.verbose === true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_wait-polling.js","sourceRoot":"","sources":["../../src/commands/_wait-polling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"_wait-polling.js","sourceRoot":"","sources":["../../src/commands/_wait-polling.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { pollComputeConnectionReadinessByToken } from './_wait-polling.js';
|
|
2
2
|
import { optionalString, requiredString } from './utils.js';
|
|
3
|
-
// uses pollUntilTerminal via _wait-polling.js
|
|
4
|
-
// Wire values come from core.models.ComputeLeaseStatus (pending/active/
|
|
5
|
-
// releasing/released/error) serialized verbatim by _serialize_compute_status.
|
|
6
|
-
// `error` is the terminal failure state for a failed acquire; omitting it
|
|
7
|
-
// causes --wait to poll until timeout instead of returning promptly.
|
|
8
|
-
const TERMINAL = new Set(['active', 'error']);
|
|
9
3
|
export const computeAcquireCommand = async (context) => {
|
|
10
4
|
const nodeId = requiredString(context.params, 'node_id');
|
|
11
5
|
const grantId = requiredString(context.params, 'compute_grant_id');
|
|
@@ -33,7 +27,7 @@ export const computeAcquireCommand = async (context) => {
|
|
|
33
27
|
if (!token) {
|
|
34
28
|
return response;
|
|
35
29
|
}
|
|
36
|
-
const terminal = await
|
|
30
|
+
const terminal = await pollComputeConnectionReadinessByToken(context, token, 'compute:acquire');
|
|
37
31
|
return { ...response, wait_result: terminal };
|
|
38
32
|
};
|
|
39
33
|
//# sourceMappingURL=compute-acquire.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute-acquire.js","sourceRoot":"","sources":["../../src/commands/compute-acquire.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"compute-acquire.js","sourceRoot":"","sources":["../../src/commands/compute-acquire.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQ5D,MAAM,CAAC,MAAM,qBAAqB,GAAmB,KAAK,EAAE,OAAO,EAAE,EAAE;IACrE,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACnE,MAAM,OAAO,GACX,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;QAC1C,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxD,8EAA8E;IAC9E,2EAA2E;IAC3E,0CAA0C;IAC1C,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC;IACvE,MAAM,IAAI,GAA4B;QACpC,OAAO;QACP,gBAAgB,EAAE,OAAO;QACzB,QAAQ,EAAE,OAAO;QACjB,mBAAmB,EAAE,iBAAiB;KACvC,CAAC;IACF,IAAI,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAEjC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CACxC,MAAM,EACN,UAAU,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,EACtD,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CACjC,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,EAAE,OAAO,EAAE,mBAAmB,CAAC;IACrD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,qCAAqC,CAC1D,OAAO,EACP,KAAK,EACL,iBAAiB,CAClB,CAAC;IACF,OAAO,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAChD,CAAC,CAAC"}
|
|
@@ -13,9 +13,13 @@ export const feedbackCreateCommand = async (context) => {
|
|
|
13
13
|
'command_family',
|
|
14
14
|
'tool_family',
|
|
15
15
|
'node_id',
|
|
16
|
+
'request_id',
|
|
16
17
|
'trace_id',
|
|
17
18
|
'sentry_event_id',
|
|
18
19
|
'product_event_id',
|
|
20
|
+
'cli_invocation_id',
|
|
21
|
+
'mcp_request_id',
|
|
22
|
+
'mcp_idempotency_key',
|
|
19
23
|
]) {
|
|
20
24
|
const value = optionalString(context.params, key);
|
|
21
25
|
if (value !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-create.js","sourceRoot":"","sources":["../../src/commands/feedback-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,CAAC,MAAM,qBAAqB,GAAmB,KAAK,EAAE,OAAO,EAAE,EAAE;IACrE,MAAM,IAAI,GAA2B;QACnC,OAAO,EAAE,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;QACnE,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,mBAAmB,CAAC,IAAI,OAAO;QAClF,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,mBAAmB,CAAC,IAAI,KAAK;KACjF,CAAC;IACF,KAAK,MAAM,GAAG,IAAI;QAChB,cAAc;QACd,sBAAsB;QACtB,gBAAgB;QAChB,aAAa;QACb,SAAS;QACT,UAAU;QACV,iBAAiB;QACjB,kBAAkB;
|
|
1
|
+
{"version":3,"file":"feedback-create.js","sourceRoot":"","sources":["../../src/commands/feedback-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,CAAC,MAAM,qBAAqB,GAAmB,KAAK,EAAE,OAAO,EAAE,EAAE;IACrE,MAAM,IAAI,GAA2B;QACnC,OAAO,EAAE,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;QACnE,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,mBAAmB,CAAC,IAAI,OAAO;QAClF,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,mBAAmB,CAAC,IAAI,KAAK;KACjF,CAAC;IACF,KAAK,MAAM,GAAG,IAAI;QAChB,cAAc;QACd,sBAAsB;QACtB,gBAAgB;QAChB,aAAa;QACb,SAAS;QACT,YAAY;QACZ,UAAU;QACV,iBAAiB;QACjB,kBAAkB;QAClB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;KACtB,EAAE,CAAC;QACF,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC"}
|
|
@@ -60,7 +60,7 @@ export const COMPUTE_COMMANDS = [
|
|
|
60
60
|
{
|
|
61
61
|
name: 'compute:acquire',
|
|
62
62
|
group: 'compute-executions',
|
|
63
|
-
summary: 'Acquire managed compute for a node.',
|
|
63
|
+
summary: 'Acquire managed compute for a node; with --wait, wait for usable SSH connection material.',
|
|
64
64
|
endpoints: ['POST /nodes/{node_id}/compute/acquire'],
|
|
65
65
|
required: [
|
|
66
66
|
{ name: 'node_id', type: 'string', description: 'Target node.' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../../src/commands/registry/compute.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE;QACE,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,kDAAkD;QAC3D,SAAS,EAAE,CAAC,sBAAsB,CAAC;QACnC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC;QAC5F,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACxE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE;YAC/D,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;SACnE;QACD,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,eAAe;gBAC5B,UAAU,EAAE,2DAA2D;aACxE;SACF;QACD,OAAO,EAAE,CAAC,iBAAiB,CAAC;KAC7B;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,2DAA2D;QACpE,SAAS,EAAE,CAAC,sBAAsB,CAAC;QACnC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;QAClF,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sBAAsB;aACpC;SACF;QACD,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,eAAe;gBAC5B,UAAU,EAAE,mDAAmD;aAChE;SACF;QACD,OAAO,EAAE,CAAC,iBAAiB,CAAC;KAC7B;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,iDAAiD;QAC1D,SAAS,EAAE,CAAC,yBAAyB,CAAC;QACtC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;QAChG,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACrE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;SACpE;QACD,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,iBAAiB;gBAC9B,UAAU,EACR,qEAAqE;aACxE;SACF;QACD,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC5B;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../../src/commands/registry/compute.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ export const RESOURCES_COMMANDS = [
|
|
|
29
29
|
description: 'MCP tool family associated with the feedback.',
|
|
30
30
|
},
|
|
31
31
|
{ name: 'node_id', type: 'string', description: 'Related node ID.' },
|
|
32
|
+
{ name: 'request_id', type: 'string', description: 'Related request ID.' },
|
|
32
33
|
{ name: 'trace_id', type: 'string', description: 'Related trace ID.' },
|
|
33
34
|
{
|
|
34
35
|
name: 'sentry_event_id',
|
|
@@ -40,6 +41,21 @@ export const RESOURCES_COMMANDS = [
|
|
|
40
41
|
type: 'string',
|
|
41
42
|
description: 'Related product event ID.',
|
|
42
43
|
},
|
|
44
|
+
{
|
|
45
|
+
name: 'cli_invocation_id',
|
|
46
|
+
type: 'string',
|
|
47
|
+
description: 'Related CLI invocation ID.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'mcp_request_id',
|
|
51
|
+
type: 'string',
|
|
52
|
+
description: 'Related MCP request ID.',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'mcp_idempotency_key',
|
|
56
|
+
type: 'string',
|
|
57
|
+
description: 'Related MCP idempotency key.',
|
|
58
|
+
},
|
|
43
59
|
],
|
|
44
60
|
examples: [
|
|
45
61
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/commands/registry/resources.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/commands/registry/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -123,7 +123,34 @@ function isFlywheelMcpUrl(url, targetOrigin) {
|
|
|
123
123
|
return targetOrigin !== null && parsed.origin.toLowerCase() === targetOrigin;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
function isMcpServerUrl(url) {
|
|
127
|
+
if (typeof url !== "string" || url.trim().length === 0) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
return new URL(url).pathname === "/mcp-server";
|
|
132
|
+
} catch {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function shouldTreatAsFlywheelMcpEntry({
|
|
138
|
+
serverName,
|
|
139
|
+
serverUrl,
|
|
140
|
+
targetOrigin,
|
|
141
|
+
trustedServerNames,
|
|
142
|
+
}) {
|
|
143
|
+
return (
|
|
144
|
+
isFlywheelMcpUrl(serverUrl, targetOrigin) ||
|
|
145
|
+
(trustedServerNames.has(serverName) && isMcpServerUrl(serverUrl))
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
async function findFlywheelTomlEntries(
|
|
150
|
+
filePath,
|
|
151
|
+
targetOrigin,
|
|
152
|
+
trustedServerNames,
|
|
153
|
+
) {
|
|
127
154
|
let raw;
|
|
128
155
|
try {
|
|
129
156
|
raw = await readFile(filePath, "utf8");
|
|
@@ -139,9 +166,14 @@ async function findFlywheelTomlEntryNames(filePath, targetOrigin) {
|
|
|
139
166
|
if (
|
|
140
167
|
currentServerName !== null &&
|
|
141
168
|
currentUrl !== null &&
|
|
142
|
-
|
|
169
|
+
shouldTreatAsFlywheelMcpEntry({
|
|
170
|
+
serverName: currentServerName,
|
|
171
|
+
serverUrl: currentUrl,
|
|
172
|
+
targetOrigin,
|
|
173
|
+
trustedServerNames,
|
|
174
|
+
})
|
|
143
175
|
) {
|
|
144
|
-
matches.push(currentServerName);
|
|
176
|
+
matches.push({ serverName: currentServerName, serverUrl: currentUrl });
|
|
145
177
|
}
|
|
146
178
|
currentServerName = null;
|
|
147
179
|
currentUrl = null;
|
|
@@ -176,26 +208,48 @@ async function findFlywheelTomlEntryNames(filePath, targetOrigin) {
|
|
|
176
208
|
}
|
|
177
209
|
commitCurrent();
|
|
178
210
|
|
|
179
|
-
return
|
|
211
|
+
return uniqueEntries(matches);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function uniqueEntries(entries = []) {
|
|
215
|
+
const seen = new Set();
|
|
216
|
+
const out = [];
|
|
217
|
+
for (const entry of entries) {
|
|
218
|
+
const key = `${entry.serverName}\0${entry.serverUrl}`;
|
|
219
|
+
if (seen.has(key)) continue;
|
|
220
|
+
seen.add(key);
|
|
221
|
+
out.push(entry);
|
|
222
|
+
}
|
|
223
|
+
return out.sort((left, right) => {
|
|
224
|
+
const byName = left.serverName.localeCompare(right.serverName);
|
|
225
|
+
if (byName !== 0) return byName;
|
|
226
|
+
return left.serverUrl.localeCompare(right.serverUrl);
|
|
227
|
+
});
|
|
180
228
|
}
|
|
181
229
|
|
|
182
|
-
export async function
|
|
230
|
+
export async function findFlywheelMcpEntries({
|
|
183
231
|
hostName,
|
|
184
232
|
scope,
|
|
185
233
|
cwd = process.cwd(),
|
|
186
234
|
targetOrigin = null,
|
|
235
|
+
trustedServerNames = [],
|
|
187
236
|
getHost = defaultGetHost,
|
|
188
237
|
resolveMcpPath = defaultResolveMcpPath,
|
|
189
238
|
readJsonConfig = defaultReadJsonConfig,
|
|
190
239
|
readYamlConfig = defaultReadYamlConfig,
|
|
191
240
|
}) {
|
|
241
|
+
const trustedServerNameSet = new Set(trustedServerNames);
|
|
192
242
|
try {
|
|
193
243
|
const host = getHost(hostName);
|
|
194
244
|
const candidates = resolveCandidatesForScope(host, scope, cwd);
|
|
195
245
|
const filePath = await resolveMcpPath(candidates);
|
|
196
246
|
|
|
197
247
|
if (host.mcp.configType === "toml") {
|
|
198
|
-
return await
|
|
248
|
+
return await findFlywheelTomlEntries(
|
|
249
|
+
filePath,
|
|
250
|
+
targetOrigin,
|
|
251
|
+
trustedServerNameSet,
|
|
252
|
+
);
|
|
199
253
|
}
|
|
200
254
|
|
|
201
255
|
const config =
|
|
@@ -223,16 +277,29 @@ export async function findFlywheelMcpEntryNames({
|
|
|
223
277
|
const matches = [];
|
|
224
278
|
for (const [entryName, entry] of Object.entries(section)) {
|
|
225
279
|
const entryUrl = readEntryServerUrl(entry);
|
|
226
|
-
if (
|
|
227
|
-
|
|
280
|
+
if (
|
|
281
|
+
entryUrl !== null &&
|
|
282
|
+
shouldTreatAsFlywheelMcpEntry({
|
|
283
|
+
serverName: entryName,
|
|
284
|
+
serverUrl: entryUrl,
|
|
285
|
+
targetOrigin,
|
|
286
|
+
trustedServerNames: trustedServerNameSet,
|
|
287
|
+
})
|
|
288
|
+
) {
|
|
289
|
+
matches.push({ serverName: entryName, serverUrl: entryUrl });
|
|
228
290
|
}
|
|
229
291
|
}
|
|
230
|
-
return
|
|
292
|
+
return uniqueEntries(matches);
|
|
231
293
|
} catch {
|
|
232
294
|
return [];
|
|
233
295
|
}
|
|
234
296
|
}
|
|
235
297
|
|
|
298
|
+
export async function findFlywheelMcpEntryNames(options) {
|
|
299
|
+
const entries = await findFlywheelMcpEntries(options);
|
|
300
|
+
return entries.map((entry) => entry.serverName);
|
|
301
|
+
}
|
|
302
|
+
|
|
236
303
|
/**
|
|
237
304
|
* Determine whether a truly skill-only host's ownership marker is present at
|
|
238
305
|
* the skills-root that `hostName` would write into. The two destination
|