@ours.network/install 0.13.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/install.mjs +9 -65
- package/package.json +1 -1
package/install.mjs
CHANGED
|
@@ -37,12 +37,6 @@ let DRY = !!process.env.OURS_INSTALL_DRY_RUN;
|
|
|
37
37
|
const SELFHOST_URL = 'ours.network';
|
|
38
38
|
const CLAUDE_MARKET = 'adapt-toolkit/ours-claude-marketplace';
|
|
39
39
|
const CODEX_MARKET = 'adapt-toolkit/ours-codex-marketplace';
|
|
40
|
-
// The ours-fleet HARNESS PLUGINS (separate from the `ours` plugin) — these are what actually give
|
|
41
|
-
// Claude Code / Codex the fleet skill. Claude: plugin "fleet" in the ours.network marketplace
|
|
42
|
-
// (@ours.network/fleet-claude-code). Codex: plugin "ours-fleet" in the ours-codex-marketplace
|
|
43
|
-
// (@ours.network/fleet-codex).
|
|
44
|
-
const CLAUDE_FLEET_PLUGIN = 'fleet@ours.network';
|
|
45
|
-
const CODEX_FLEET_PLUGIN = 'ours-fleet@ours-codex-marketplace';
|
|
46
40
|
|
|
47
41
|
const sink = (s) => process.stdout.write(s);
|
|
48
42
|
const line = (s = '') => sink(`${s}\n`);
|
|
@@ -501,34 +495,16 @@ async function main() {
|
|
|
501
495
|
const init = await act('ours-fleet init (one-time host setup: units, dirs, linger)', async () => run('ours-fleet', ['init']));
|
|
502
496
|
if (!init.ok) line(warn(`ours-fleet host setup didn't finish — retry '${c.cyan('ours-fleet init')}'.`));
|
|
503
497
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
// as Step 2; never dead-ends. (The `ours` plugin does NOT bundle this — it's a separate plugin.)
|
|
507
|
-
const fleetIn = [];
|
|
508
|
-
for (const h of harnesses) {
|
|
509
|
-
if (h.status === 'absent') continue;
|
|
510
|
-
if (h.name === 'claude') {
|
|
511
|
-
if (h.status !== 'ok') { manualClaudeFleet(h); continue; }
|
|
512
|
-
await act(`claude plugin marketplace add ${CLAUDE_MARKET}`, async () => run('claude', ['plugin', 'marketplace', 'add', CLAUDE_MARKET], { capture: true }));
|
|
513
|
-
const r = await act(`claude plugin install ${CLAUDE_FLEET_PLUGIN}`, async () => run('claude', ['plugin', 'install', CLAUDE_FLEET_PLUGIN], { capture: true }));
|
|
514
|
-
if (r.ok) { line(ok('Claude Code fleet plugin installed — you can spawn agents from Claude Code. No problems.')); fleetIn.push('Claude Code'); }
|
|
515
|
-
else failClaudeFleet();
|
|
516
|
-
} else if (h.name === 'codex') {
|
|
517
|
-
if (h.status !== 'ok') { manualCodexFleet(h); continue; }
|
|
518
|
-
await act(`codex plugin marketplace add ${CODEX_MARKET}`, async () => run('codex', ['plugin', 'marketplace', 'add', CODEX_MARKET], { capture: true }));
|
|
519
|
-
const r = await act(`codex plugin add ${CODEX_FLEET_PLUGIN}`, async () => run('codex', ['plugin', 'add', CODEX_FLEET_PLUGIN], { capture: true }));
|
|
520
|
-
if (r.ok) { line(ok('Codex fleet plugin installed — you can spawn agents from Codex. No problems.')); fleetIn.push('Codex'); }
|
|
521
|
-
else failCodexFleet();
|
|
522
|
-
}
|
|
498
|
+
if (init.ok) {
|
|
499
|
+
line(ok('ours-fleet ready — the core ours plugin discovers every option through `ours-fleet docs`. No problems.'));
|
|
523
500
|
}
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
record({ key: 'fleet', label: 'ours-fleet', state: fleetOk ? 'installed' : 'failed', version: globalVersion('@ours.network/fleet'), note: fleetIn.length ? fleetIn.join(' + ') : (init.ok ? 'CLI only — add plugin manually' : 'ours-fleet init failed') });
|
|
501
|
+
record({
|
|
502
|
+
key: 'fleet',
|
|
503
|
+
label: 'ours-fleet',
|
|
504
|
+
state: init.ok ? 'installed' : 'failed',
|
|
505
|
+
version: globalVersion('@ours.network/fleet'),
|
|
506
|
+
note: init.ok ? 'CLI + core-plugin discovery' : 'ours-fleet init failed',
|
|
507
|
+
});
|
|
532
508
|
} else {
|
|
533
509
|
line(info('skipped cleanly — re-run ours-install any time to add it.'));
|
|
534
510
|
record({ key: 'fleet', label: 'ours-fleet', state: 'skipped' });
|
|
@@ -611,38 +587,6 @@ function failHermes() {
|
|
|
611
587
|
line(' ' + c.cyan('ours-hermes-install'));
|
|
612
588
|
line(info('Your daemon and other steps are intact. Continuing.'));
|
|
613
589
|
}
|
|
614
|
-
// --- fleet HARNESS PLUGIN never-dead-end messaging ---------------------------------------------
|
|
615
|
-
function manualClaudeFleet(h) {
|
|
616
|
-
line(warn(h.status === 'alias'
|
|
617
|
-
? '"claude" is installed as an alias, so I can\'t add the fleet plugin for you.'
|
|
618
|
-
: 'Couldn\'t safely drive "claude" to add the fleet plugin.'));
|
|
619
|
-
line(info('Add it yourself — inside Claude Code, run these two:'));
|
|
620
|
-
line(' ' + c.cyan(`/plugin marketplace add ${CLAUDE_MARKET}`));
|
|
621
|
-
line(' ' + c.cyan('/plugin install fleet'));
|
|
622
|
-
}
|
|
623
|
-
function failClaudeFleet() {
|
|
624
|
-
line(warn('Couldn\'t install the Claude Code fleet plugin automatically.'));
|
|
625
|
-
line(info('Install it by hand — inside Claude Code, run these two, then re-run ours-install:'));
|
|
626
|
-
line(' ' + c.cyan(`/plugin marketplace add ${CLAUDE_MARKET}`));
|
|
627
|
-
line(' ' + c.cyan('/plugin install fleet'));
|
|
628
|
-
line(info('Your daemon and other steps are intact. Continuing.'));
|
|
629
|
-
}
|
|
630
|
-
function manualCodexFleet(h) {
|
|
631
|
-
line(warn(h.status === 'alias'
|
|
632
|
-
? '"codex" is installed as an alias, so I can\'t add the fleet plugin for you.'
|
|
633
|
-
: 'Couldn\'t safely drive "codex" to add the fleet plugin.'));
|
|
634
|
-
line(info('Add it yourself — run these two in your terminal:'));
|
|
635
|
-
line(' ' + c.cyan(`codex plugin marketplace add ${CODEX_MARKET}`));
|
|
636
|
-
line(' ' + c.cyan(`codex plugin add ${CODEX_FLEET_PLUGIN}`));
|
|
637
|
-
}
|
|
638
|
-
function failCodexFleet() {
|
|
639
|
-
line(warn('Couldn\'t install the Codex fleet plugin automatically.'));
|
|
640
|
-
line(info('Install it by hand — run these two, then re-run ours-install:'));
|
|
641
|
-
line(' ' + c.cyan(`codex plugin marketplace add ${CODEX_MARKET}`));
|
|
642
|
-
line(' ' + c.cyan(`codex plugin add ${CODEX_FLEET_PLUGIN}`));
|
|
643
|
-
line(info('Your daemon and other steps are intact. Continuing.'));
|
|
644
|
-
}
|
|
645
|
-
|
|
646
590
|
// --- final summary + copy-paste hand-off -------------------------------------------------------
|
|
647
591
|
function endScreen({ ttyFd, summary, chosenPort, chosenBroker }) {
|
|
648
592
|
line('');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ours.network/install",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The unified ours.network stack installer (ours-install): one guided ~3-minute flow for ours core (the daemon) + the harness plugins (Claude Code / Codex) + ours-fleet + the Telegram connector, then a single copy-paste hand-off prompt. Self-contained (Node built-ins only); run as `ours-install` or via curl|bash (install.sh).",
|
|
6
6
|
"type": "module",
|