@hybridlabor-api/aos 4.4.2-beta.1 → 4.4.2-beta.2

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 (3) hide show
  1. package/CLAUDE.md +52 -0
  2. package/installer.js +15 -0
  3. package/package.json +1 -1
package/CLAUDE.md CHANGED
@@ -616,6 +616,58 @@ must not do.
616
616
 
617
617
  ## Headless timeouts
618
618
 
619
+ A trivial headless `agy` prompt was measured at **605s** in 2026-09.
620
+ `agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
621
+ reports an empty body while the answer is still arriving. Pass `--timeout 15m`
622
+ for anything non-trivial. A short timeout does not read as "slow", it reads as
623
+ "broken".
624
+
625
+ # AOS — Antigravity / Gemini
626
+
627
+ **Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
628
+ harnesses: the non-negotiables, the release gate, Conventional Commits, the
629
+ skill contract and category routing, the pipeline variants, and the delegation
630
+ policy. Nothing from it is repeated here — a rule that lives in two files is a
631
+ rule that will eventually disagree with itself.
632
+
633
+ This file covers only what is specific to running AOS under Antigravity.
634
+
635
+ ## Nothing enforces the gate here — you are the enforcement
636
+
637
+ `.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
638
+ harness. Not one of the four release commands is mechanically blocked for you,
639
+ and neither is anything else.
640
+
641
+ So the full rule in AGENTS.md applies here in its entirety, not just its
642
+ hook-enforced subset: when the user asks for a plan, review, audit or
643
+ multi-step action, you are read-only until they answer with the literal **GO**
644
+ — including file writes and `git commit`. On Claude Code a hook would catch the
645
+ four worst cases if discipline failed. Here there is no backstop, which makes
646
+ this the harness where the rule matters most, not least.
647
+
648
+ ## Model routing
649
+
650
+ The tier names in `agy-delegate` map to models that go stale — the built-in
651
+ `flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
652
+ `agy models` after every upgrade; the id carries both the version and the
653
+ effort suffix.
654
+
655
+ | Work | Model |
656
+ |---|---|
657
+ | Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
658
+ | Trivial one-liners | `Gemini 3.8 Flash (Low)` |
659
+ | Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
660
+
661
+ Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
662
+ `~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
663
+ source.
664
+
665
+ Adversarial review is the case that most repays the stronger model: a Flash
666
+ tier tends to agree with what it is shown, which is the one thing a reviewer
667
+ must not do.
668
+
669
+ ## Headless timeouts
670
+
619
671
  A trivial headless `agy` prompt was measured at **605s** in 2026-09.
620
672
  `agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
621
673
  reports an empty body while the answer is still arriving. Pass `--timeout 15m`
package/installer.js CHANGED
@@ -3662,12 +3662,14 @@ async function main() {
3662
3662
  { value: 'quick', label: `⚡ Quick Update (v${installState.localVersion} ➔ v${installState.currentVersion})`, hint: 'refresh skills, templates & daemons' },
3663
3663
  { value: 'project', label: '📁 Drop Local Project Harness', hint: 'copy dispatcher contract to cwd' },
3664
3664
  { value: 'reconfigure', label: '🛠️ Reconfigure System', hint: 'change targets, tier or options' },
3665
+ { value: 'uninstall', label: '🗑️ Uninstall AOS', hint: 'remove what this installer placed; your data stays' },
3665
3666
  { value: 'cancel', label: '❌ Exit' }
3666
3667
  ]
3667
3668
  : [
3668
3669
  { value: 'project', label: '📁 Drop Local Project Harness', hint: 'copy dispatcher contract to cwd' },
3669
3670
  { value: 'quick', label: '🔄 Verify & Refresh All Skills', hint: 're-sync and health check' },
3670
3671
  { value: 'reconfigure', label: '🛠️ Reconfigure System', hint: 'switch tier or targets' },
3672
+ { value: 'uninstall', label: '🗑️ Uninstall AOS', hint: 'remove what this installer placed; your data stays' },
3671
3673
  { value: 'cancel', label: '❌ Exit' }
3672
3674
  ];
3673
3675
 
@@ -3691,6 +3693,19 @@ async function main() {
3691
3693
  outro('Quick Update complete.');
3692
3694
  return;
3693
3695
  }
3696
+ if (action === 'uninstall') {
3697
+ // aos-uninstall.mjs is its own script, not a function of this file --
3698
+ // it is ESM (installer.js is CommonJS) and drives its own readline
3699
+ // confirmation prompt, so it runs as a real child process with
3700
+ // inherited stdio rather than being imported in-process.
3701
+ const uninstallScript = path.join(srcDir, 'bin', 'aos-uninstall.mjs');
3702
+ if (!fs.existsSync(uninstallScript)) {
3703
+ log.error(`Uninstaller not found at ${uninstallScript} -- run it directly: npx @hybridlabor-api/aos-uninstall`);
3704
+ return;
3705
+ }
3706
+ spawnSync('node', [uninstallScript], { stdio: 'inherit' });
3707
+ return;
3708
+ }
3694
3709
  }
3695
3710
 
3696
3711
  const detectedNames = detections.map(d => d.name).join(', ');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hybridlabor-api/aos",
3
- "version": "4.4.2-beta.1",
3
+ "version": "4.4.2-beta.2",
4
4
  "description": "AOS — A Curated AI AGENT OS. Optimized agent skills and add-ons like memB, OpenWiki, Heimdall Token Saver, and Godmode architectures.",
5
5
  "main": "installer.js",
6
6
  "bin": {