@mycompbox/compbox-cli 1.13.0 → 1.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/.tsbuildinfo +1 -1
- package/commands/machines.d.ts +18 -0
- package/commands/machines.d.ts.map +1 -0
- package/commands/machines.js +121 -0
- package/commands/machines.js.map +1 -0
- package/index.js +155 -3
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/utils/mailbox-client.d.ts +38 -0
- package/utils/mailbox-client.d.ts.map +1 -1
- package/utils/mailbox-client.js +59 -0
- package/utils/mailbox-client.js.map +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `compbox machines` — manage the machines paired to your CompBox account
|
|
3
|
+
* (ENG-171). Three subcommands, all authenticated with the stored USER token
|
|
4
|
+
* (`st_...` from `compbox login`), NOT the daemon's `mk_...` machine token:
|
|
5
|
+
*
|
|
6
|
+
* - `list` — the caller's non-revoked machines (id / name / readiness).
|
|
7
|
+
* - `rename <id> <n>` — change a machine's display name.
|
|
8
|
+
* - `rm <id>` — soft-revoke a machine: cuts off its daemon token and
|
|
9
|
+
* fails its queued/in-progress jobs. Confirmed unless
|
|
10
|
+
* `--yes`/`--force` is passed.
|
|
11
|
+
*
|
|
12
|
+
* Auth + error-handling conventions mirror `configure.ts`: read the local
|
|
13
|
+
* config, bail with a friendly non-zero exit when not logged in, wrap each
|
|
14
|
+
* action in try/catch, and print via chalk.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from 'commander';
|
|
17
|
+
export declare const machinesCommand: Command;
|
|
18
|
+
//# sourceMappingURL=machines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machines.d.ts","sourceRoot":"","sources":["../../src/commands/machines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+CpC,eAAO,MAAM,eAAe,SAE3B,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `compbox machines` — manage the machines paired to your CompBox account
|
|
3
|
+
* (ENG-171). Three subcommands, all authenticated with the stored USER token
|
|
4
|
+
* (`st_...` from `compbox login`), NOT the daemon's `mk_...` machine token:
|
|
5
|
+
*
|
|
6
|
+
* - `list` — the caller's non-revoked machines (id / name / readiness).
|
|
7
|
+
* - `rename <id> <n>` — change a machine's display name.
|
|
8
|
+
* - `rm <id>` — soft-revoke a machine: cuts off its daemon token and
|
|
9
|
+
* fails its queued/in-progress jobs. Confirmed unless
|
|
10
|
+
* `--yes`/`--force` is passed.
|
|
11
|
+
*
|
|
12
|
+
* Auth + error-handling conventions mirror `configure.ts`: read the local
|
|
13
|
+
* config, bail with a friendly non-zero exit when not logged in, wrap each
|
|
14
|
+
* action in try/catch, and print via chalk.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from 'commander';
|
|
17
|
+
import chalk from 'chalk';
|
|
18
|
+
import Table from 'cli-table3';
|
|
19
|
+
import { readConfig } from '../utils/config-store.js';
|
|
20
|
+
import { promptConfirm } from '../utils/prompt.js';
|
|
21
|
+
import { MailboxClient, MailboxClientError } from '../utils/mailbox-client.js';
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the central URL + user token, or exit(1) with an actionable message
|
|
24
|
+
* when this machine hasn't been logged in yet. Returns `never` on the failure
|
|
25
|
+
* path (process.exit), so callers get a narrowed non-optional pair.
|
|
26
|
+
*/
|
|
27
|
+
function requireLogin() {
|
|
28
|
+
const config = readConfig();
|
|
29
|
+
if (!config.apiBaseUrl || !config.apiToken) {
|
|
30
|
+
console.error(chalk.red('\nNot logged in. Run `compbox login` first to authenticate and store your token.'));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
return { apiBaseUrl: config.apiBaseUrl, apiToken: config.apiToken };
|
|
34
|
+
}
|
|
35
|
+
/** Colorizes the server-derived readiness enum for the list table. */
|
|
36
|
+
function formatReadiness(readiness) {
|
|
37
|
+
switch (readiness) {
|
|
38
|
+
case 'ready':
|
|
39
|
+
return chalk.green('ready');
|
|
40
|
+
case 'runtime-not-found':
|
|
41
|
+
return chalk.yellow('runtime-not-found');
|
|
42
|
+
case 'offline':
|
|
43
|
+
return chalk.gray('offline');
|
|
44
|
+
default:
|
|
45
|
+
return readiness;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Prints a red error line and exits non-zero. Shared by every subcommand's catch. */
|
|
49
|
+
function failWith(error, context) {
|
|
50
|
+
const message = error instanceof MailboxClientError || error instanceof Error
|
|
51
|
+
? error.message
|
|
52
|
+
: 'unknown error';
|
|
53
|
+
console.error(chalk.red(`\n${context}: ${message}`));
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
export const machinesCommand = new Command('machines').description('List, rename, and remove the machines paired to your CompBox account');
|
|
57
|
+
machinesCommand
|
|
58
|
+
.command('list')
|
|
59
|
+
.description('List the machines paired to your account (excludes revoked ones)')
|
|
60
|
+
.action(async () => {
|
|
61
|
+
try {
|
|
62
|
+
const { apiBaseUrl, apiToken } = requireLogin();
|
|
63
|
+
const client = new MailboxClient(apiBaseUrl);
|
|
64
|
+
const machines = await client.listMachines(apiToken);
|
|
65
|
+
if (machines.length === 0) {
|
|
66
|
+
console.log(chalk.yellow('No paired machines found.'));
|
|
67
|
+
console.log(chalk.gray('Run `compbox configure` on a machine to pair it.'));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const table = new Table({
|
|
71
|
+
head: [chalk.cyan('ID'), chalk.cyan('Name'), chalk.cyan('Readiness')],
|
|
72
|
+
});
|
|
73
|
+
for (const machine of machines) {
|
|
74
|
+
table.push([machine.id, machine.name, formatReadiness(machine.readiness)]);
|
|
75
|
+
}
|
|
76
|
+
console.log(table.toString());
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
failWith(error, 'Failed to list machines');
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
machinesCommand
|
|
83
|
+
.command('rename <id> <name>')
|
|
84
|
+
.description('Rename a paired machine')
|
|
85
|
+
.action(async (id, name) => {
|
|
86
|
+
try {
|
|
87
|
+
const { apiBaseUrl, apiToken } = requireLogin();
|
|
88
|
+
const client = new MailboxClient(apiBaseUrl);
|
|
89
|
+
const machine = await client.renameMachine(apiToken, id, name);
|
|
90
|
+
console.log(chalk.green(`✔ Machine renamed to "${machine.name}".`));
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
failWith(error, 'Failed to rename machine');
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
machinesCommand
|
|
97
|
+
.command('rm <id>')
|
|
98
|
+
.description('Remove (revoke) a paired machine — cuts off its daemon token and fails its queued jobs')
|
|
99
|
+
.option('-y, --yes', 'Skip the confirmation prompt', false)
|
|
100
|
+
.option('--force', 'Alias for --yes', false)
|
|
101
|
+
.action(async (id, options) => {
|
|
102
|
+
try {
|
|
103
|
+
const { apiBaseUrl, apiToken } = requireLogin();
|
|
104
|
+
const skipConfirm = options.yes === true || options.force === true;
|
|
105
|
+
if (!skipConfirm) {
|
|
106
|
+
console.log(chalk.yellow(`\n⚠ Removing machine ${id} revokes its daemon token and fails any queued or in-progress jobs on it. This cannot be undone.`));
|
|
107
|
+
const confirmed = await promptConfirm(`Remove machine ${id}?`, false);
|
|
108
|
+
if (!confirmed) {
|
|
109
|
+
console.log(chalk.gray('Aborted. No changes made.'));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const client = new MailboxClient(apiBaseUrl);
|
|
114
|
+
const removed = await client.removeMachine(apiToken, id);
|
|
115
|
+
console.log(chalk.green(`✔ Machine ${removed.id} removed (status: ${removed.status}).`));
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
failWith(error, 'Failed to remove machine');
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=machines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machines.js","sourceRoot":"","sources":["../../src/commands/machines.ts"],"names":[],"mappings":"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"}
|
package/index.js
CHANGED
|
@@ -7,7 +7,7 @@ var __export = (target, all) => {
|
|
|
7
7
|
|
|
8
8
|
// src/index.ts
|
|
9
9
|
import { createRequire } from "node:module";
|
|
10
|
-
import { Command as
|
|
10
|
+
import { Command as Command11 } from "commander";
|
|
11
11
|
|
|
12
12
|
// src/commands/install.ts
|
|
13
13
|
import { Command } from "commander";
|
|
@@ -1668,6 +1668,66 @@ var MailboxClient = class {
|
|
|
1668
1668
|
return data.data;
|
|
1669
1669
|
}
|
|
1670
1670
|
// ---------------------------------------------------------------------
|
|
1671
|
+
// User-auth: machine management (called by `compbox machines ...`)
|
|
1672
|
+
//
|
|
1673
|
+
// These mirror pairMachine's auth (the `st_...` user token in the
|
|
1674
|
+
// Authorization header), NOT the daemon's `mk_...` machine token. They back
|
|
1675
|
+
// the `compbox machines list/rename/rm` command group (ENG-171 / ENG-169).
|
|
1676
|
+
// ---------------------------------------------------------------------
|
|
1677
|
+
/** Lists the caller's non-revoked machines (revoked ones are excluded server-side). */
|
|
1678
|
+
async listMachines(userToken) {
|
|
1679
|
+
let res;
|
|
1680
|
+
try {
|
|
1681
|
+
res = await this.http.get("/api/v1/machines", {
|
|
1682
|
+
headers: { Authorization: `Bearer ${userToken}` }
|
|
1683
|
+
});
|
|
1684
|
+
} catch (error) {
|
|
1685
|
+
throw toMailboxError(error, "List machines request failed");
|
|
1686
|
+
}
|
|
1687
|
+
if (res.status < 200 || res.status >= 300) {
|
|
1688
|
+
throw errorFromResponse(res, "Failed to list machines");
|
|
1689
|
+
}
|
|
1690
|
+
const data = res.data;
|
|
1691
|
+
return data.data;
|
|
1692
|
+
}
|
|
1693
|
+
/** Renames a machine the caller owns; returns the updated machine. */
|
|
1694
|
+
async renameMachine(userToken, id, name) {
|
|
1695
|
+
let res;
|
|
1696
|
+
try {
|
|
1697
|
+
res = await this.http.patch(
|
|
1698
|
+
`/api/v1/machines/${encodeURIComponent(id)}`,
|
|
1699
|
+
{ name },
|
|
1700
|
+
{ headers: { Authorization: `Bearer ${userToken}` } }
|
|
1701
|
+
);
|
|
1702
|
+
} catch (error) {
|
|
1703
|
+
throw toMailboxError(error, "Rename machine request failed");
|
|
1704
|
+
}
|
|
1705
|
+
if (res.status < 200 || res.status >= 300) {
|
|
1706
|
+
throw errorFromResponse(res, "Failed to rename machine");
|
|
1707
|
+
}
|
|
1708
|
+
const data = res.data;
|
|
1709
|
+
return data.data;
|
|
1710
|
+
}
|
|
1711
|
+
/**
|
|
1712
|
+
* Soft-revokes (removes) a machine the caller owns. Server-side this cuts off
|
|
1713
|
+
* the daemon token and fails the machine's non-terminal jobs. Idempotent.
|
|
1714
|
+
*/
|
|
1715
|
+
async removeMachine(userToken, id) {
|
|
1716
|
+
let res;
|
|
1717
|
+
try {
|
|
1718
|
+
res = await this.http.delete(`/api/v1/machines/${encodeURIComponent(id)}`, {
|
|
1719
|
+
headers: { Authorization: `Bearer ${userToken}` }
|
|
1720
|
+
});
|
|
1721
|
+
} catch (error) {
|
|
1722
|
+
throw toMailboxError(error, "Remove machine request failed");
|
|
1723
|
+
}
|
|
1724
|
+
if (res.status < 200 || res.status >= 300) {
|
|
1725
|
+
throw errorFromResponse(res, "Failed to remove machine");
|
|
1726
|
+
}
|
|
1727
|
+
const data = res.data;
|
|
1728
|
+
return data.data;
|
|
1729
|
+
}
|
|
1730
|
+
// ---------------------------------------------------------------------
|
|
1671
1731
|
// Machine-auth: the daemon's own calls
|
|
1672
1732
|
// ---------------------------------------------------------------------
|
|
1673
1733
|
/**
|
|
@@ -8485,16 +8545,107 @@ Failed to stop the service: ${message}`));
|
|
|
8485
8545
|
}
|
|
8486
8546
|
});
|
|
8487
8547
|
|
|
8548
|
+
// src/commands/machines.ts
|
|
8549
|
+
import { Command as Command10 } from "commander";
|
|
8550
|
+
import chalk11 from "chalk";
|
|
8551
|
+
import Table2 from "cli-table3";
|
|
8552
|
+
function requireLogin() {
|
|
8553
|
+
const config = readConfig();
|
|
8554
|
+
if (!config.apiBaseUrl || !config.apiToken) {
|
|
8555
|
+
console.error(
|
|
8556
|
+
chalk11.red("\nNot logged in. Run `compbox login` first to authenticate and store your token.")
|
|
8557
|
+
);
|
|
8558
|
+
process.exit(1);
|
|
8559
|
+
}
|
|
8560
|
+
return { apiBaseUrl: config.apiBaseUrl, apiToken: config.apiToken };
|
|
8561
|
+
}
|
|
8562
|
+
function formatReadiness(readiness) {
|
|
8563
|
+
switch (readiness) {
|
|
8564
|
+
case "ready":
|
|
8565
|
+
return chalk11.green("ready");
|
|
8566
|
+
case "runtime-not-found":
|
|
8567
|
+
return chalk11.yellow("runtime-not-found");
|
|
8568
|
+
case "offline":
|
|
8569
|
+
return chalk11.gray("offline");
|
|
8570
|
+
default:
|
|
8571
|
+
return readiness;
|
|
8572
|
+
}
|
|
8573
|
+
}
|
|
8574
|
+
function failWith(error, context) {
|
|
8575
|
+
const message = error instanceof MailboxClientError || error instanceof Error ? error.message : "unknown error";
|
|
8576
|
+
console.error(chalk11.red(`
|
|
8577
|
+
${context}: ${message}`));
|
|
8578
|
+
process.exit(1);
|
|
8579
|
+
}
|
|
8580
|
+
var machinesCommand = new Command10("machines").description(
|
|
8581
|
+
"List, rename, and remove the machines paired to your CompBox account"
|
|
8582
|
+
);
|
|
8583
|
+
machinesCommand.command("list").description("List the machines paired to your account (excludes revoked ones)").action(async () => {
|
|
8584
|
+
try {
|
|
8585
|
+
const { apiBaseUrl, apiToken } = requireLogin();
|
|
8586
|
+
const client = new MailboxClient(apiBaseUrl);
|
|
8587
|
+
const machines = await client.listMachines(apiToken);
|
|
8588
|
+
if (machines.length === 0) {
|
|
8589
|
+
console.log(chalk11.yellow("No paired machines found."));
|
|
8590
|
+
console.log(chalk11.gray("Run `compbox configure` on a machine to pair it."));
|
|
8591
|
+
return;
|
|
8592
|
+
}
|
|
8593
|
+
const table = new Table2({
|
|
8594
|
+
head: [chalk11.cyan("ID"), chalk11.cyan("Name"), chalk11.cyan("Readiness")]
|
|
8595
|
+
});
|
|
8596
|
+
for (const machine of machines) {
|
|
8597
|
+
table.push([machine.id, machine.name, formatReadiness(machine.readiness)]);
|
|
8598
|
+
}
|
|
8599
|
+
console.log(table.toString());
|
|
8600
|
+
} catch (error) {
|
|
8601
|
+
failWith(error, "Failed to list machines");
|
|
8602
|
+
}
|
|
8603
|
+
});
|
|
8604
|
+
machinesCommand.command("rename <id> <name>").description("Rename a paired machine").action(async (id, name) => {
|
|
8605
|
+
try {
|
|
8606
|
+
const { apiBaseUrl, apiToken } = requireLogin();
|
|
8607
|
+
const client = new MailboxClient(apiBaseUrl);
|
|
8608
|
+
const machine = await client.renameMachine(apiToken, id, name);
|
|
8609
|
+
console.log(chalk11.green(`\u2714 Machine renamed to "${machine.name}".`));
|
|
8610
|
+
} catch (error) {
|
|
8611
|
+
failWith(error, "Failed to rename machine");
|
|
8612
|
+
}
|
|
8613
|
+
});
|
|
8614
|
+
machinesCommand.command("rm <id>").description("Remove (revoke) a paired machine \u2014 cuts off its daemon token and fails its queued jobs").option("-y, --yes", "Skip the confirmation prompt", false).option("--force", "Alias for --yes", false).action(async (id, options) => {
|
|
8615
|
+
try {
|
|
8616
|
+
const { apiBaseUrl, apiToken } = requireLogin();
|
|
8617
|
+
const skipConfirm = options.yes === true || options.force === true;
|
|
8618
|
+
if (!skipConfirm) {
|
|
8619
|
+
console.log(
|
|
8620
|
+
chalk11.yellow(
|
|
8621
|
+
`
|
|
8622
|
+
\u26A0 Removing machine ${id} revokes its daemon token and fails any queued or in-progress jobs on it. This cannot be undone.`
|
|
8623
|
+
)
|
|
8624
|
+
);
|
|
8625
|
+
const confirmed = await promptConfirm(`Remove machine ${id}?`, false);
|
|
8626
|
+
if (!confirmed) {
|
|
8627
|
+
console.log(chalk11.gray("Aborted. No changes made."));
|
|
8628
|
+
return;
|
|
8629
|
+
}
|
|
8630
|
+
}
|
|
8631
|
+
const client = new MailboxClient(apiBaseUrl);
|
|
8632
|
+
const removed = await client.removeMachine(apiToken, id);
|
|
8633
|
+
console.log(chalk11.green(`\u2714 Machine ${removed.id} removed (status: ${removed.status}).`));
|
|
8634
|
+
} catch (error) {
|
|
8635
|
+
failWith(error, "Failed to remove machine");
|
|
8636
|
+
}
|
|
8637
|
+
});
|
|
8638
|
+
|
|
8488
8639
|
// src/index.ts
|
|
8489
8640
|
function resolveCliVersion() {
|
|
8490
8641
|
if (true) {
|
|
8491
|
-
return "1.
|
|
8642
|
+
return "1.14.0";
|
|
8492
8643
|
}
|
|
8493
8644
|
const require2 = createRequire(import.meta.url);
|
|
8494
8645
|
const pkg = require2("../package.json");
|
|
8495
8646
|
return pkg.version;
|
|
8496
8647
|
}
|
|
8497
|
-
var program = new
|
|
8648
|
+
var program = new Command11();
|
|
8498
8649
|
program.name("compbox").description("CompBox CLI \u2014 pair this machine, manage Skill Packs, and run the Agent Runner daemon").version(resolveCliVersion());
|
|
8499
8650
|
program.addCommand(installCommand);
|
|
8500
8651
|
program.addCommand(updateCommand);
|
|
@@ -8505,4 +8656,5 @@ program.addCommand(configureCommand);
|
|
|
8505
8656
|
program.addCommand(doctorCommand);
|
|
8506
8657
|
program.addCommand(runCommand);
|
|
8507
8658
|
program.addCommand(serviceCommand);
|
|
8659
|
+
program.addCommand(machinesCommand);
|
|
8508
8660
|
program.parse(process.argv);
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAezD,SAAS,iBAAiB;IACxB,2EAA2E;IAC3E,2EAA2E;IAC3E,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,CAAC;QAC3C,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,+DAA+D;IAC/D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;IAC9D,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,sFAAsF,CAAC;KACnG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAEhC,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEpC,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -36,6 +36,35 @@ export interface MailboxAttachment {
|
|
|
36
36
|
sizeBytes: number;
|
|
37
37
|
signedUrl: string;
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* A machine as returned by the user-facing list/rename endpoints (ENG-169).
|
|
41
|
+
* This is the token-free serialized view rendered by `compbox machines list`.
|
|
42
|
+
* Dates arrive as ISO strings over the wire.
|
|
43
|
+
*/
|
|
44
|
+
export interface MachineSummary {
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
status: string;
|
|
48
|
+
lastSeenAt: string | null;
|
|
49
|
+
/** Last agent-runtime status reported by the daemon (ENG-138). */
|
|
50
|
+
agentRuntimeStatus: string | null;
|
|
51
|
+
agentRuntimeDetail: string | null;
|
|
52
|
+
agentRuntimeCheckedAt: string | null;
|
|
53
|
+
/**
|
|
54
|
+
* Server-derived readiness (ENG-138): `ready` (recently seen + runtime ok),
|
|
55
|
+
* `runtime-not-found` (seen but runtime not ok), or `offline` (not seen
|
|
56
|
+
* within the online window). Widened with `string` so an unrecognized future
|
|
57
|
+
* value still parses.
|
|
58
|
+
*/
|
|
59
|
+
readiness: 'ready' | 'runtime-not-found' | 'offline' | (string & {});
|
|
60
|
+
createdAt: string;
|
|
61
|
+
updatedAt: string;
|
|
62
|
+
}
|
|
63
|
+
/** The minimal revoke result returned by DELETE /machines/:id (ENG-169). */
|
|
64
|
+
export interface RevokedMachine {
|
|
65
|
+
id: string;
|
|
66
|
+
status: string;
|
|
67
|
+
}
|
|
39
68
|
/** A single turn in a job's conversation log. */
|
|
40
69
|
export interface MailboxJobTurn {
|
|
41
70
|
id: string;
|
|
@@ -75,6 +104,15 @@ export declare class MailboxClient {
|
|
|
75
104
|
constructor(baseUrl: string);
|
|
76
105
|
/** Register this device with central using the user's API token, returning its machine token (once). */
|
|
77
106
|
pairMachine(userToken: string, name: string): Promise<PairedMachine>;
|
|
107
|
+
/** Lists the caller's non-revoked machines (revoked ones are excluded server-side). */
|
|
108
|
+
listMachines(userToken: string): Promise<MachineSummary[]>;
|
|
109
|
+
/** Renames a machine the caller owns; returns the updated machine. */
|
|
110
|
+
renameMachine(userToken: string, id: string, name: string): Promise<MachineSummary>;
|
|
111
|
+
/**
|
|
112
|
+
* Soft-revokes (removes) a machine the caller owns. Server-side this cuts off
|
|
113
|
+
* the daemon token and fails the machine's non-terminal jobs. Idempotent.
|
|
114
|
+
*/
|
|
115
|
+
removeMachine(userToken: string, id: string): Promise<RevokedMachine>;
|
|
78
116
|
/**
|
|
79
117
|
* Long-polls for the next job assigned to this machine, waiting up to
|
|
80
118
|
* `waitMs` (server clamps to its own max, currently ~25s). Returns `null`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mailbox-client.d.ts","sourceRoot":"","sources":["../../src/utils/mailbox-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,gEAAgE;AAChE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,0GAA0G;IAC1G,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EACF,SAAS,GACT,SAAS,GACT,SAAS,GACT,gBAAgB,GAChB,MAAM,GACN,QAAQ,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,mFAAmF;AACnF,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,2EAA2E;IAC3E,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAoCD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM;IAoB3B,wGAAwG;IAClG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mailbox-client.d.ts","sourceRoot":"","sources":["../../src/utils/mailbox-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;;;OAKG;IACH,SAAS,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,gEAAgE;AAChE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,0GAA0G;IAC1G,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EACF,SAAS,GACT,SAAS,GACT,SAAS,GACT,gBAAgB,GAChB,MAAM,GACN,QAAQ,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,mFAAmF;AACnF,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,2EAA2E;IAC3E,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAoCD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM;IAoB3B,wGAAwG;IAClG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA0B1E,uFAAuF;IACjF,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBhE,sEAAsE;IAChE,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC;IAkB1B;;;OAGG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB3E;;;;OAIG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAoBhF;;;;;;;OAOG;IACG,SAAS,CACb,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAwBhB,+EAA+E;IACzE,QAAQ,CACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;IAkBtB,8EAA8E;IACxE,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,QAAQ,EACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,UAAU,CAAC;CAiBvB"}
|
package/utils/mailbox-client.js
CHANGED
|
@@ -89,6 +89,65 @@ export class MailboxClient {
|
|
|
89
89
|
return data.data;
|
|
90
90
|
}
|
|
91
91
|
// ---------------------------------------------------------------------
|
|
92
|
+
// User-auth: machine management (called by `compbox machines ...`)
|
|
93
|
+
//
|
|
94
|
+
// These mirror pairMachine's auth (the `st_...` user token in the
|
|
95
|
+
// Authorization header), NOT the daemon's `mk_...` machine token. They back
|
|
96
|
+
// the `compbox machines list/rename/rm` command group (ENG-171 / ENG-169).
|
|
97
|
+
// ---------------------------------------------------------------------
|
|
98
|
+
/** Lists the caller's non-revoked machines (revoked ones are excluded server-side). */
|
|
99
|
+
async listMachines(userToken) {
|
|
100
|
+
let res;
|
|
101
|
+
try {
|
|
102
|
+
res = await this.http.get('/api/v1/machines', {
|
|
103
|
+
headers: { Authorization: `Bearer ${userToken}` },
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
throw toMailboxError(error, 'List machines request failed');
|
|
108
|
+
}
|
|
109
|
+
if (res.status < 200 || res.status >= 300) {
|
|
110
|
+
throw errorFromResponse(res, 'Failed to list machines');
|
|
111
|
+
}
|
|
112
|
+
const data = res.data;
|
|
113
|
+
return data.data;
|
|
114
|
+
}
|
|
115
|
+
/** Renames a machine the caller owns; returns the updated machine. */
|
|
116
|
+
async renameMachine(userToken, id, name) {
|
|
117
|
+
let res;
|
|
118
|
+
try {
|
|
119
|
+
res = await this.http.patch(`/api/v1/machines/${encodeURIComponent(id)}`, { name }, { headers: { Authorization: `Bearer ${userToken}` } });
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
throw toMailboxError(error, 'Rename machine request failed');
|
|
123
|
+
}
|
|
124
|
+
if (res.status < 200 || res.status >= 300) {
|
|
125
|
+
throw errorFromResponse(res, 'Failed to rename machine');
|
|
126
|
+
}
|
|
127
|
+
const data = res.data;
|
|
128
|
+
return data.data;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Soft-revokes (removes) a machine the caller owns. Server-side this cuts off
|
|
132
|
+
* the daemon token and fails the machine's non-terminal jobs. Idempotent.
|
|
133
|
+
*/
|
|
134
|
+
async removeMachine(userToken, id) {
|
|
135
|
+
let res;
|
|
136
|
+
try {
|
|
137
|
+
res = await this.http.delete(`/api/v1/machines/${encodeURIComponent(id)}`, {
|
|
138
|
+
headers: { Authorization: `Bearer ${userToken}` },
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
throw toMailboxError(error, 'Remove machine request failed');
|
|
143
|
+
}
|
|
144
|
+
if (res.status < 200 || res.status >= 300) {
|
|
145
|
+
throw errorFromResponse(res, 'Failed to remove machine');
|
|
146
|
+
}
|
|
147
|
+
const data = res.data;
|
|
148
|
+
return data.data;
|
|
149
|
+
}
|
|
150
|
+
// ---------------------------------------------------------------------
|
|
92
151
|
// Machine-auth: the daemon's own calls
|
|
93
152
|
// ---------------------------------------------------------------------
|
|
94
153
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mailbox-client.js","sourceRoot":"","sources":["../../src/utils/mailbox-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAAsB,YAAY,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"mailbox-client.js","sourceRoot":"","sources":["../../src/utils/mailbox-client.ts"],"names":[],"mappings":"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"}
|