@ours.network/install 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/install.mjs +9 -65
  2. 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
- // Install the fleet HARNESS PLUGIN into each real+safe harness — the piece that actually gives
505
- // Claude Code / Codex the fleet skill. Same drive-the-CLI, alias-safe, loud-on-failure pattern
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
- // Only claim the skill is present where the fleet plugin actually installed.
525
- if (init.ok && fleetIn.length) line(ok(`ours-fleet ready — ${fleetIn.join(' + ')} now know the fleet skill. No problems.`));
526
- else if (init.ok) line(info('ours-fleet CLI is installed; add the fleet plugin to your harness with the commands above.'));
527
- // Fleet plugins target Claude Code + Codex only (Hermes has none) — so "no fleet-capable harness
528
- // to install into" means every claude/codex is absent, NOT every harness (Hermes doesn't count).
529
- const fleetCapableAbsent = harnesses.filter((h) => h.name === 'claude' || h.name === 'codex').every((h) => h.status === 'absent');
530
- const fleetOk = init.ok && (fleetIn.length > 0 || fleetCapableAbsent);
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.12.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",