@flarestudio/fcc-workbench 1.0.20 → 1.0.22
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 +53 -29
- package/dist/index.js +57 -4
- package/dist/index.js.map +1 -1
- package/dist/modules/config.d.ts +3 -0
- package/dist/modules/config.js +7 -2
- package/dist/modules/config.js.map +1 -1
- package/dist/modules/docker.d.ts +3 -0
- package/dist/modules/docker.js +50 -3
- package/dist/modules/docker.js.map +1 -1
- package/dist/modules/doctor.d.ts +14 -0
- package/dist/modules/doctor.js +65 -0
- package/dist/modules/doctor.js.map +1 -0
- package/dist/modules/net.d.ts +2 -0
- package/dist/modules/net.js +41 -0
- package/dist/modules/net.js.map +1 -0
- package/dist/modules/officialTools.d.ts +4 -1
- package/dist/modules/officialTools.js +219 -25
- package/dist/modules/officialTools.js.map +1 -1
- package/dist/modules/runner.d.ts +19 -0
- package/dist/modules/runner.js +374 -0
- package/dist/modules/runner.js.map +1 -0
- package/dist/modules/scaffold.d.ts +1 -1
- package/dist/modules/scaffold.js +59 -66
- package/dist/modules/scaffold.js.map +1 -1
- package/dist/modules/state.d.ts +12 -0
- package/dist/modules/state.js +32 -0
- package/dist/modules/state.js.map +1 -0
- package/dist/modules/version.d.ts +1 -0
- package/dist/modules/version.js +31 -0
- package/dist/modules/version.js.map +1 -0
- package/dist/templates/index.js +7 -4
- package/dist/templates/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
#
|
|
1
|
+
# FlareStudio FCC Workbench
|
|
2
2
|
|
|
3
3
|
Tactical infrastructure for building, testing, and deploying **Sovereign AI Agents** on the Flare Network.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@flarestudio/fcc-workbench)
|
|
6
6
|
[](https://opensource.org/licenses/ISC)
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## What is this?
|
|
9
9
|
|
|
10
|
-
The **FlareStudio FCC Workbench** is a
|
|
10
|
+
The **FlareStudio FCC Workbench** is a CLI toolkit designed to simplify development for **Flare Confidential Compute (FCC)**. It turns the TEE, proxy, and contract setup into a guided developer flow.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## Quick Start
|
|
13
13
|
|
|
14
14
|
Install the workbench globally:
|
|
15
15
|
|
|
@@ -17,49 +17,73 @@ Install the workbench globally:
|
|
|
17
17
|
npm install -g @flarestudio/fcc-workbench
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## Commands
|
|
21
21
|
|
|
22
|
-
###
|
|
23
|
-
|
|
22
|
+
### Main flow: guided onboarding
|
|
23
|
+
Use this first. It is the recommended end-to-end path for setting up a Coston2 FCC project:
|
|
24
24
|
```bash
|
|
25
|
-
|
|
25
|
+
flarestudio-fcc-cli onboard --profile coston2
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
Generate a secp256k1 key pair representing a TEE machine's hardware identity.
|
|
28
|
+
If the flow stops partway through, continue with:
|
|
30
29
|
```bash
|
|
31
|
-
|
|
30
|
+
flarestudio-fcc-cli resume
|
|
32
31
|
```
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
The guided onboarding flow handles:
|
|
34
|
+
- project scaffolding
|
|
35
|
+
- environment setup
|
|
36
|
+
- local stack startup
|
|
37
|
+
- `InstructionSender` deployment
|
|
38
|
+
- extension registration
|
|
39
|
+
- TEE version allowlisting
|
|
40
|
+
- tunnel creation
|
|
41
|
+
- TEE machine registration
|
|
42
|
+
- E2E validation
|
|
43
|
+
|
|
44
|
+
### Recovery and manual commands
|
|
45
|
+
Use these when you need to inspect or recover a partially completed onboarding run:
|
|
39
46
|
|
|
40
|
-
### 4. Ghost Envoy (Relay)
|
|
41
|
-
Directly broadcast your encrypted instructions to the Flare blockchain.
|
|
42
47
|
```bash
|
|
43
|
-
|
|
48
|
+
flarestudio-fcc-cli doctor
|
|
49
|
+
flarestudio-fcc-cli start
|
|
50
|
+
flarestudio-fcc-cli stop
|
|
51
|
+
flarestudio-fcc-cli tunnel
|
|
52
|
+
flarestudio-fcc-cli allow-tee
|
|
53
|
+
flarestudio-fcc-cli register-tee
|
|
54
|
+
flarestudio-fcc-cli test-e2e
|
|
44
55
|
```
|
|
45
56
|
|
|
46
|
-
|
|
47
|
-
|
|
57
|
+
- `doctor` checks your local prerequisites and configuration before you start onboarding.
|
|
58
|
+
- `stop` shuts down the local FCC Docker stack for the current project so you can reset ports, restart cleanly, or recover from a failed run.
|
|
59
|
+
|
|
60
|
+
### Utility commands
|
|
61
|
+
Use these for standalone tasks:
|
|
62
|
+
|
|
48
63
|
```bash
|
|
49
|
-
|
|
64
|
+
flarestudio-fcc-cli init
|
|
65
|
+
flarestudio-fcc-cli encrypt
|
|
66
|
+
flarestudio-fcc-cli send
|
|
50
67
|
```
|
|
51
68
|
|
|
52
|
-
##
|
|
69
|
+
## Current status
|
|
70
|
+
|
|
71
|
+
The onboarding docs intentionally mark the Coston2 FTDC/action-result step as **coming soon** until the hosted environment is confirmed stable. Everything before that point is documented as the supported local flow.
|
|
72
|
+
|
|
73
|
+
The hidden `.flare-fcc/` folder is created automatically inside each project to store onboarding state and resume data. It is not the CLI command name.
|
|
74
|
+
|
|
75
|
+
## Project Structure
|
|
53
76
|
|
|
54
77
|
When you run `init`, the workbench generates:
|
|
55
|
-
- `extension/` — Your agent logic
|
|
56
|
-
- `contracts/` —
|
|
57
|
-
- `scripts/` — Deployment and management scripts
|
|
58
|
-
- `docker-compose.yml` — The
|
|
78
|
+
- `extension/` — Your agent logic
|
|
79
|
+
- `contracts/` — InstructionSender Solidity contracts
|
|
80
|
+
- `scripts/` — Deployment and management scripts
|
|
81
|
+
- `docker-compose.yml` — The FCC stack
|
|
82
|
+
- `.flare-fcc/` — Hidden local state used by `resume` and onboarding recovery
|
|
59
83
|
|
|
60
|
-
##
|
|
84
|
+
## Security
|
|
61
85
|
|
|
62
|
-
This workbench allows for local testing of TEE logic. While the cryptography is production-grade (ECIES/secp256k1), real hardware isolation requires deployment to registered Flare TEE machines
|
|
86
|
+
This workbench allows for local testing of TEE logic. While the cryptography is production-grade (ECIES/secp256k1), real hardware isolation requires deployment to registered Flare TEE machines.
|
|
63
87
|
|
|
64
88
|
---
|
|
65
89
|
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { select, input, confirm } from '@inquirer/prompts';
|
|
5
|
+
import os from 'node:os';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { readPackageVersion } from './modules/version.js';
|
|
5
8
|
import * as config from './modules/config.js';
|
|
6
9
|
import * as scaffold from './modules/scaffold.js';
|
|
7
10
|
import * as crypto from './modules/crypto.js';
|
|
@@ -9,7 +12,17 @@ import * as contract from './modules/contract.js';
|
|
|
9
12
|
import * as docker from './modules/docker.js';
|
|
10
13
|
import * as tee from './modules/tee.js';
|
|
11
14
|
import * as officialTools from './modules/officialTools.js';
|
|
15
|
+
import * as doctor from './modules/doctor.js';
|
|
16
|
+
import * as runner from './modules/runner.js';
|
|
12
17
|
const program = new Command();
|
|
18
|
+
// If a user deletes the directory their shell is currently in, Node can start with an invalid cwd
|
|
19
|
+
// and crash on any process.cwd() usage (e.g. inside docker/compose tooling). Recover to a safe cwd.
|
|
20
|
+
try {
|
|
21
|
+
process.cwd();
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
process.chdir(path.resolve(os.homedir()));
|
|
25
|
+
}
|
|
13
26
|
function normalizeExtensionId(value) {
|
|
14
27
|
const trimmed = value.trim();
|
|
15
28
|
if (!trimmed)
|
|
@@ -37,9 +50,40 @@ async function assertInitialOwnerMatchesPrivateKey(env) {
|
|
|
37
50
|
}
|
|
38
51
|
}
|
|
39
52
|
program
|
|
40
|
-
.name('
|
|
53
|
+
.name('flarestudio-fcc-cli')
|
|
41
54
|
.description('Tactical Workbench for Flare Confidential Compute (FCC)')
|
|
42
|
-
.version(
|
|
55
|
+
.version(readPackageVersion());
|
|
56
|
+
// --- 0. FOUNDATIONS (PHASE 1) ---
|
|
57
|
+
program
|
|
58
|
+
.command('doctor')
|
|
59
|
+
.description('Preflight checks for tooling, runtime, and configuration')
|
|
60
|
+
.option('--json', 'Output machine-readable JSON')
|
|
61
|
+
.action(async (options) => {
|
|
62
|
+
const report = await doctor.runDoctor();
|
|
63
|
+
if (options.json) {
|
|
64
|
+
process.stdout.write(JSON.stringify(report, null, 2) + '\n');
|
|
65
|
+
process.exitCode = report.ok ? 0 : 1;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
doctor.printDoctorReport(report);
|
|
69
|
+
process.exitCode = report.ok ? 0 : 1;
|
|
70
|
+
});
|
|
71
|
+
program
|
|
72
|
+
.command('onboard')
|
|
73
|
+
.description('Guided end-to-end flow (explicit network required)')
|
|
74
|
+
.requiredOption('--profile <profile>', 'Profile: coston2 | mainnet')
|
|
75
|
+
.option('--dry-run', 'Print planned steps without executing')
|
|
76
|
+
.action(async (options) => {
|
|
77
|
+
const profile = runner.parseProfile(options.profile);
|
|
78
|
+
await runner.onboard({ profile, dryRun: Boolean(options.dryRun) });
|
|
79
|
+
});
|
|
80
|
+
program
|
|
81
|
+
.command('resume')
|
|
82
|
+
.description('Resume the most recent onboarding run in this project')
|
|
83
|
+
.option('--dry-run', 'Print remaining steps without executing')
|
|
84
|
+
.action(async (options) => {
|
|
85
|
+
await runner.resume({ dryRun: Boolean(options.dryRun) });
|
|
86
|
+
});
|
|
43
87
|
// --- 1. SCAFFOLDING & SETUP ---
|
|
44
88
|
program
|
|
45
89
|
.command('init')
|
|
@@ -71,7 +115,8 @@ program
|
|
|
71
115
|
],
|
|
72
116
|
default: 'typescript'
|
|
73
117
|
});
|
|
74
|
-
const
|
|
118
|
+
const pkeyRaw = await input({ message: 'Your EVM Private Key (Hex):' });
|
|
119
|
+
const pkey = pkeyRaw.trim().replace(/\s+/g, '');
|
|
75
120
|
const derivedOwner = contract.getAddressFromKey(pkey);
|
|
76
121
|
const initialOwner = await input({
|
|
77
122
|
message: 'Initial Owner Address:',
|
|
@@ -84,7 +129,7 @@ program
|
|
|
84
129
|
}
|
|
85
130
|
config.writeEnv({ LANGUAGE: language, PRIVATE_KEY: pkey, INITIAL_OWNER: initialOwner });
|
|
86
131
|
console.log(chalk.gray('\nFlare Indexer Database Credentials (for ext-proxy):'));
|
|
87
|
-
const dbHost = await input({ message: 'DB Host:', default: '
|
|
132
|
+
const dbHost = await input({ message: 'DB Host:', default: '34.38.42.208' });
|
|
88
133
|
const dbPort = await input({ message: 'DB Port:', default: '3306' });
|
|
89
134
|
const dbUser = await input({ message: 'DB User:' });
|
|
90
135
|
const dbPass = await input({ message: 'DB Password:' });
|
|
@@ -133,6 +178,14 @@ program
|
|
|
133
178
|
console.log(chalk.green('\n✔ Stack started in background.'));
|
|
134
179
|
console.log(chalk.gray(' Use "docker compose logs -f" to view logs.'));
|
|
135
180
|
});
|
|
181
|
+
program
|
|
182
|
+
.command('stop')
|
|
183
|
+
.description('Stop the local Docker stack for this project')
|
|
184
|
+
.action(async () => {
|
|
185
|
+
console.log(chalk.yellow.bold('\nSTOPPING TEE STACK\n'));
|
|
186
|
+
await docker.stopStack();
|
|
187
|
+
console.log(chalk.green('\n✔ Stack stopped.'));
|
|
188
|
+
});
|
|
136
189
|
program
|
|
137
190
|
.command('tunnel')
|
|
138
191
|
.description('Step 4: Launch Cloudflared tunnel for the TEE')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/modules/config.d.ts
CHANGED
package/dist/modules/config.js
CHANGED
|
@@ -26,10 +26,15 @@ export function loadEnv() {
|
|
|
26
26
|
export function writeEnv(updates) {
|
|
27
27
|
const envPath = path.resolve(process.cwd(), ENV_FILE);
|
|
28
28
|
const existing = loadEnv();
|
|
29
|
-
const merged = { ...existing
|
|
29
|
+
const merged = { ...existing };
|
|
30
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
31
|
+
if (value === undefined)
|
|
32
|
+
continue;
|
|
33
|
+
merged[key] = String(value).trim();
|
|
34
|
+
}
|
|
30
35
|
const lines = Object.entries(merged)
|
|
31
36
|
.filter(([, v]) => v !== undefined && v !== '')
|
|
32
|
-
.map(([k, v]) => `${k}="${v}"`);
|
|
37
|
+
.map(([k, v]) => `${k}="${String(v).trim()}"`);
|
|
33
38
|
fs.writeFileSync(envPath, lines.join('\n') + '\n', 'utf8');
|
|
34
39
|
}
|
|
35
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/modules/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/modules/config.ts"],"names":[],"mappings":"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"}
|
package/dist/modules/docker.d.ts
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
* Streams output directly to the terminal.
|
|
4
4
|
*/
|
|
5
5
|
export declare function runDockerCompose(args: string[]): Promise<void>;
|
|
6
|
+
export declare function stopStack(): Promise<void>;
|
|
7
|
+
export declare function tailServiceLogs(service: string, lines?: number): Promise<string>;
|
|
8
|
+
export declare function findContainersUsingHostPorts(ports: number[]): Promise<string[]>;
|
|
6
9
|
/**
|
|
7
10
|
* Check if the ext-proxy is healthy by polling its /info endpoint.
|
|
8
11
|
* Returns true when ready, throws after timeout.
|
package/dist/modules/docker.js
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
import { spawn } from 'child_process';
|
|
2
|
+
function safeCwd() {
|
|
3
|
+
try {
|
|
4
|
+
return process.cwd();
|
|
5
|
+
}
|
|
6
|
+
catch {
|
|
7
|
+
// If the current directory was deleted, Node may start with an invalid cwd.
|
|
8
|
+
// For docker compose commands we can omit cwd and let it inherit a valid one,
|
|
9
|
+
// but for compose-file discovery we prefer the caller to be in the project dir.
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function runCapture(command, args, options = {}) {
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
const child = spawn(command, args, { stdio: ['ignore', 'pipe', 'pipe'], shell: false, cwd: options.cwd });
|
|
16
|
+
let out = '';
|
|
17
|
+
child.stdout?.on('data', (d) => (out += d.toString()));
|
|
18
|
+
child.stderr?.on('data', (d) => (out += d.toString()));
|
|
19
|
+
child.on('close', (code) => resolve({ code: code ?? 1, out: out.trim() }));
|
|
20
|
+
child.on('error', () => resolve({ code: 1, out: '' }));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
2
23
|
/**
|
|
3
24
|
* Run a docker-compose command (up, down, logs, build).
|
|
4
25
|
* Streams output directly to the terminal.
|
|
@@ -8,14 +29,16 @@ export function runDockerCompose(args) {
|
|
|
8
29
|
// Support both "docker compose" (v2) and "docker-compose" (v1)
|
|
9
30
|
const child = spawn('docker', ['compose', ...args], {
|
|
10
31
|
stdio: 'inherit',
|
|
11
|
-
shell:
|
|
32
|
+
shell: false,
|
|
33
|
+
cwd: safeCwd(),
|
|
12
34
|
});
|
|
13
35
|
child.on('error', (err) => {
|
|
14
36
|
// Fallback to v1 if v2 not found
|
|
15
37
|
if (err.message.includes('ENOENT') || err.message.includes('not found')) {
|
|
16
38
|
const fallback = spawn('docker-compose', args, {
|
|
17
39
|
stdio: 'inherit',
|
|
18
|
-
shell:
|
|
40
|
+
shell: false,
|
|
41
|
+
cwd: safeCwd(),
|
|
19
42
|
});
|
|
20
43
|
fallback.on('error', reject);
|
|
21
44
|
fallback.on('close', (code) => {
|
|
@@ -37,6 +60,30 @@ export function runDockerCompose(args) {
|
|
|
37
60
|
});
|
|
38
61
|
});
|
|
39
62
|
}
|
|
63
|
+
export async function stopStack() {
|
|
64
|
+
await runDockerCompose(['down']);
|
|
65
|
+
}
|
|
66
|
+
export async function tailServiceLogs(service, lines = 200) {
|
|
67
|
+
const { out } = await runCapture('docker', ['compose', 'logs', '--no-color', '--tail', String(lines), service], { cwd: safeCwd() });
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
export async function findContainersUsingHostPorts(ports) {
|
|
71
|
+
const { out } = await runCapture('docker', ['ps', '--format', '{{.Names}}\\t{{.Ports}}']);
|
|
72
|
+
if (!out)
|
|
73
|
+
return [];
|
|
74
|
+
const lines = out.split('\n').map((l) => l.trim()).filter(Boolean);
|
|
75
|
+
const matches = [];
|
|
76
|
+
for (const line of lines) {
|
|
77
|
+
const [name, portsText = ''] = line.split('\t');
|
|
78
|
+
for (const p of ports) {
|
|
79
|
+
if (portsText.includes(`:${p}->`)) {
|
|
80
|
+
matches.push(`${name} (${portsText})`);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return matches;
|
|
86
|
+
}
|
|
40
87
|
/**
|
|
41
88
|
* Check if the ext-proxy is healthy by polling its /info endpoint.
|
|
42
89
|
* Returns true when ready, throws after timeout.
|
|
@@ -112,7 +159,7 @@ export async function fetchProxyInfo(proxyUrl = 'http://localhost:6676', retries
|
|
|
112
159
|
*/
|
|
113
160
|
export function isDockerRunning() {
|
|
114
161
|
return new Promise((resolve) => {
|
|
115
|
-
const child = spawn('docker', ['info'], { stdio: 'pipe', shell:
|
|
162
|
+
const child = spawn('docker', ['info'], { stdio: 'pipe', shell: false });
|
|
116
163
|
child.on('close', (code) => resolve(code === 0));
|
|
117
164
|
child.on('error', () => resolve(false));
|
|
118
165
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/modules/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,+DAA+D;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE;YAClD,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/modules/docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type DoctorCheckId = 'node' | 'npm' | 'git' | 'docker' | 'docker-compose' | 'go' | 'jq' | 'forge' | 'cloudflared';
|
|
2
|
+
export interface DoctorCheckResult {
|
|
3
|
+
id: DoctorCheckId;
|
|
4
|
+
title: string;
|
|
5
|
+
ok: boolean;
|
|
6
|
+
detail: string;
|
|
7
|
+
}
|
|
8
|
+
export interface DoctorReport {
|
|
9
|
+
ok: boolean;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
results: DoctorCheckResult[];
|
|
12
|
+
}
|
|
13
|
+
export declare function runDoctor(): Promise<DoctorReport>;
|
|
14
|
+
export declare function printDoctorReport(report: DoctorReport): void;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { spawn } from 'child_process';
|
|
3
|
+
function runCapture(command, args, timeoutMs = 12_000) {
|
|
4
|
+
return new Promise((resolve) => {
|
|
5
|
+
const resolvedCommand = process.platform === 'win32' && command === 'npm'
|
|
6
|
+
? 'npm.cmd'
|
|
7
|
+
: process.platform === 'win32' && command === 'npx'
|
|
8
|
+
? 'npx.cmd'
|
|
9
|
+
: command;
|
|
10
|
+
const needsShell = process.platform === 'win32' && resolvedCommand.toLowerCase().endsWith('.cmd');
|
|
11
|
+
const child = spawn(resolvedCommand, args, { shell: needsShell });
|
|
12
|
+
let out = '';
|
|
13
|
+
child.stdout?.on('data', (d) => (out += d.toString()));
|
|
14
|
+
child.stderr?.on('data', (d) => (out += d.toString()));
|
|
15
|
+
const timer = setTimeout(() => {
|
|
16
|
+
try {
|
|
17
|
+
child.kill();
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// ignore
|
|
21
|
+
}
|
|
22
|
+
}, timeoutMs);
|
|
23
|
+
child.on('close', (code) => {
|
|
24
|
+
clearTimeout(timer);
|
|
25
|
+
resolve({ code: code ?? 1, out: out.trim() });
|
|
26
|
+
});
|
|
27
|
+
child.on('error', () => {
|
|
28
|
+
clearTimeout(timer);
|
|
29
|
+
resolve({ code: 1, out: '' });
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async function checkCmd(id, title, command, args, hint) {
|
|
34
|
+
const { code, out } = await runCapture(command, args);
|
|
35
|
+
if (code === 0 && out) {
|
|
36
|
+
return { id, title, ok: true, detail: out.split('\n')[0] };
|
|
37
|
+
}
|
|
38
|
+
return { id, title, ok: false, detail: hint };
|
|
39
|
+
}
|
|
40
|
+
export async function runDoctor() {
|
|
41
|
+
const results = [];
|
|
42
|
+
results.push(await checkCmd('node', 'Node.js installed', 'node', ['--version'], 'Install Node.js and ensure `node` is on PATH.'));
|
|
43
|
+
results.push(await checkCmd('npm', 'npm installed', 'npm', ['--version'], 'Install npm (typically bundled with Node.js).'));
|
|
44
|
+
results.push(await checkCmd('git', 'git installed', 'git', ['--version'], 'Install git and ensure `git` is on PATH.'));
|
|
45
|
+
results.push(await checkCmd('docker', 'Docker installed/running', 'docker', ['version'], 'Install Docker Desktop and ensure the Docker daemon is running.'));
|
|
46
|
+
results.push(await checkCmd('docker-compose', 'Docker Compose available', 'docker', ['compose', 'version'], 'Install Docker Compose v2 (`docker compose`).'));
|
|
47
|
+
results.push(await checkCmd('go', 'Go toolchain installed', 'go', ['version'], 'Install Go (required for official FCC tools).'));
|
|
48
|
+
results.push(await checkCmd('jq', 'jq available (optional)', 'jq', ['--version'], 'Optional: install jq (required for building/running the official E2E test tool).'));
|
|
49
|
+
results.push(await checkCmd('forge', 'Foundry (forge) available (optional)', 'forge', ['--version'], 'Optional: install Foundry (forge) (required for building/running the official E2E test tool).'));
|
|
50
|
+
results.push(await checkCmd('cloudflared', 'cloudflared available (optional)', 'cloudflared', ['--version'], 'Optional: install cloudflared if you plan to use `flarestudio-fcc-cli tunnel` / TEE registration flows.'));
|
|
51
|
+
const ok = results.every((r) => r.ok || r.id === 'cloudflared' || r.id === 'jq' || r.id === 'forge');
|
|
52
|
+
return { ok, timestamp: new Date().toISOString(), results };
|
|
53
|
+
}
|
|
54
|
+
export function printDoctorReport(report) {
|
|
55
|
+
const headline = report.ok ? chalk.green('Doctor: OK') : chalk.red('Doctor: FAIL');
|
|
56
|
+
console.log(headline, chalk.gray(`(${report.timestamp})`));
|
|
57
|
+
for (const r of report.results) {
|
|
58
|
+
const mark = r.ok ? chalk.green('PASS') : chalk.red('FAIL');
|
|
59
|
+
console.log(`- ${mark} ${r.title}: ${chalk.gray(r.detail)}`);
|
|
60
|
+
}
|
|
61
|
+
if (!report.ok) {
|
|
62
|
+
console.log(chalk.yellow('\nFix the FAIL items and re-run `flarestudio-fcc-cli doctor`.'));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/modules/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AA0BtC,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,SAAS,GAAG,MAAM;IACrE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,eAAe,GACnB,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK;YAC/C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK;gBACjD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,OAAO,CAAC;QAEhB,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClG,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAClE,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,EAAiB,EAAE,KAAa,EAAE,OAAe,EAAE,IAAc,EAAE,IAAY;IACrG,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,+CAA+C,CAAC,CAAC,CAAC;IAClI,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,+CAA+C,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,0CAA0C,CAAC,CAAC,CAAC;IACvH,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,iEAAiE,CAAC,CAAC,CAAC;IAC7J,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,+CAA+C,CAAC,CAAC,CAAC;IAC9J,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,+CAA+C,CAAC,CAAC,CAAC;IACjI,OAAO,CAAC,IAAI,CACV,MAAM,QAAQ,CACZ,IAAI,EACJ,yBAAyB,EACzB,IAAI,EACJ,CAAC,WAAW,CAAC,EACb,kFAAkF,CACnF,CACF,CAAC;IACF,OAAO,CAAC,IAAI,CACV,MAAM,QAAQ,CACZ,OAAO,EACP,sCAAsC,EACtC,OAAO,EACP,CAAC,WAAW,CAAC,EACb,+FAA+F,CAChG,CACF,CAAC;IACF,OAAO,CAAC,IAAI,CACV,MAAM,QAAQ,CACZ,aAAa,EACb,kCAAkC,EAClC,aAAa,EACb,CAAC,WAAW,CAAC,EACb,yGAAyG,CAC1G,CACF,CAAC;IAEF,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,aAAa,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACrG,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC3D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import net from 'net';
|
|
2
|
+
export async function checkTcp(host, port, timeoutMs = 5000) {
|
|
3
|
+
await new Promise((resolve, reject) => {
|
|
4
|
+
const socket = new net.Socket();
|
|
5
|
+
const onError = (err) => {
|
|
6
|
+
cleanup();
|
|
7
|
+
reject(err);
|
|
8
|
+
};
|
|
9
|
+
const onTimeout = () => {
|
|
10
|
+
cleanup();
|
|
11
|
+
reject(new Error(`Timeout connecting to ${host}:${port}`));
|
|
12
|
+
};
|
|
13
|
+
const cleanup = () => {
|
|
14
|
+
socket.removeAllListeners();
|
|
15
|
+
try {
|
|
16
|
+
socket.destroy();
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// ignore
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
socket.setTimeout(timeoutMs);
|
|
23
|
+
socket.once('error', onError);
|
|
24
|
+
socket.once('timeout', onTimeout);
|
|
25
|
+
socket.connect(port, host, () => {
|
|
26
|
+
cleanup();
|
|
27
|
+
resolve();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export async function isPortFree(port, host = '0.0.0.0') {
|
|
32
|
+
return await new Promise((resolve) => {
|
|
33
|
+
const server = net.createServer();
|
|
34
|
+
server.unref();
|
|
35
|
+
server.once('error', () => resolve(false));
|
|
36
|
+
server.listen({ port, host }, () => {
|
|
37
|
+
server.close(() => resolve(true));
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=net.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/modules/net.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAY,EAAE,SAAS,GAAG,IAAI;IACzE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,GAAU,EAAE,EAAE;YAC7B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;YAC9B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAAI,GAAG,SAAS;IAC7D,OAAO,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { FccEnv } from './config.js';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function assertE2EPrereqs(): Promise<void>;
|
|
3
3
|
export declare function runGoTool(command: string, env: FccEnv, args?: string[], capture?: boolean): Promise<string>;
|
|
4
|
+
export declare function toolHelp(command: string): Promise<string>;
|
|
5
|
+
export declare function toolSupportsFlag(command: string, flag: string): Promise<boolean>;
|
|
4
6
|
export declare function parseExtensionId(output: string): string;
|
|
7
|
+
export declare function parseLastAddress(output: string): string;
|