@axiomantic/garden 0.1.2 → 0.1.4

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 CHANGED
@@ -67,24 +67,51 @@ Garden is organized into a clean, batteries-included catalog of self-explanatory
67
67
  | **[`plan-implementation`](skills/plan-implementation/SKILL.md)** | **Master Scheduling** | Authors `implementation_plan.md` defining task assignment matrices, `rhizo` distributed fencing locks, `vine` strand workflows, dynamic markdown checkboxes, harness To-Do integration, and emergent design addenda. |
68
68
  | **[`orchestrate-swarm`](skills/orchestrate-swarm/SKILL.md)** | **Main-Chat Governor** | Governs execution from the primary chat session: dispatches tasks over Redis, tracks heartbeats, ratifies emergent design addenda, verifies Two-Key gate passes, and triggers `vine weave`. |
69
69
 
70
+ ## Standalone Yet Designed for the Axiomantic Triad
71
+
72
+ Garden is completely standalone and can direct multi-agent dialectics, persona selection, and tmux worker swarms on any codebase.
73
+
74
+ However, Garden is designed from the ground up to pair seamlessly with **Rhizo** and **Vine**:
75
+ - [**Rhizo**](https://github.com/axiomantic/rhizo) (Transport & Concurrency): Inter-agent messaging bus, monotonic fencing locks, and task queues over Redis.
76
+ - [**Vine**](https://github.com/axiomantic/vine) (Workspaces & Verification): Sub-second APFS Copy-on-Write strands, polyglot build-cache normalization, and the Two-Key integration gate (`git merge-tree` mechanical + compiler/test suite semantic checks).
77
+ - **Garden** (Swarm Ceremonies): Tmux worker fleet provisioning, 3-stage empirical dialectical pump (research, architecture, audit), and master ceremonial implementation planning.
78
+
70
79
  ---
71
80
 
72
81
  ## Installation
73
82
 
74
- ### 1. For AI Coding Assistants (Interactive Skill Setup)
75
- Install the Garden skills into your coding assistants (Claude Code, Antigravity, Cursor, etc.):
83
+ ### 1. For AI Coding Assistants (Recommended)
84
+
85
+ Install the skills globally (`-g`) across all your coding assistants (Claude Code, Antigravity, Cursor, Codex, OpenCode, etc.):
86
+
76
87
  ```bash
77
- npx skills add axiomantic/garden
88
+ # Recommended: Install the complete multi-agent triad globally
89
+ npx skills add -g axiomantic/rhizo
90
+ npx skills add -g axiomantic/vine
91
+ npx skills add -g axiomantic/garden
92
+ ```
93
+
94
+ *(Each skill automatically self-bootstraps its native CLI binary if it is not already installed on your system).*
95
+
96
+ To install only Garden (includes the 6 Garden skills):
97
+ ```bash
98
+ npx skills add -g axiomantic/garden
78
99
  ```
79
- *(Launches the interactive selector to choose which skills and which agents to equip. Self-bootstraps Rhizo & Vine automatically).*
80
100
 
81
101
  ### 2. Standalone CLI Installation
82
- Install the compiled CLI tool directly onto your `$PATH`:
102
+
103
+ Install the compiled CLI tools directly onto your `$PATH`:
104
+
83
105
  ```bash
106
+ # Install all three tools:
107
+ npm install -g @axiomantic/rhizo @axiomantic/vine @axiomantic/garden
108
+
109
+ # Or install Garden alone:
84
110
  npm install -g @axiomantic/garden
85
111
  ```
86
112
 
87
113
  ### 3. Repository Coordination Guide
114
+
88
115
  Install the Garden multi-agent swarm coordination protocol directly into any project's `AGENTS.md`:
89
116
  ```bash
90
117
  garden guide install
package/SKILL.md CHANGED
@@ -8,6 +8,18 @@ description: "Master entrypoint and end-to-end ceremony director for multi-agent
8
8
  > **The Sovereign Orchestration Layer for Autonomous AI Swarms**
9
9
  > *Where `rhizo` is the transport nervous system and `vine` is the workspace integrator, `garden` is the institutional intellect, deliberation crucible, and master ceremony conductor.*
10
10
 
11
+ ## 0. Prerequisite & Automatic Bootstrapping
12
+
13
+ All swarm ceremonies require the native `garden` CLI. If `command -v garden` fails, immediately install it:
14
+ ```bash
15
+ npm install -g @axiomantic/garden
16
+ ```
17
+ Or install the full coordination triad:
18
+ ```bash
19
+ npm install -g @axiomantic/rhizo @axiomantic/vine @axiomantic/garden
20
+ ```
21
+ Once installed, `garden` is available on `$PATH` and provisions architecture-appropriate binaries automatically.
22
+
11
23
  ---
12
24
 
13
25
  ## 1. Architectural Architecture & Layering
Binary file
Binary file
Binary file
Binary file
package/bin/run.js CHANGED
@@ -1,31 +1,139 @@
1
1
  #!/usr/bin/env node
2
2
  const fs = require('fs');
3
3
  const path = require('path');
4
- const { spawnSync } = require('child_process');
4
+ const os = require('os');
5
+ const { spawnSync, execSync } = require('child_process');
5
6
 
6
- function findBinary() {
7
+ const PKG_NAME = 'garden';
8
+ const REPO = `axiomantic/${PKG_NAME}`;
9
+ const VERSION = require('../package.json').version;
10
+
11
+ function isCompatibleBinary(filePath) {
12
+ try {
13
+ if (!fs.existsSync(filePath)) return false;
14
+ const stat = fs.statSync(filePath);
15
+ if (!stat.isFile() || stat.size < 64) return false;
16
+
17
+ const fd = fs.openSync(filePath, 'r');
18
+ const buf = Buffer.alloc(64);
19
+ fs.readSync(fd, buf, 0, 64, 0);
20
+ fs.closeSync(fd);
21
+
22
+ const platform = process.platform;
23
+ const arch = process.arch;
24
+
25
+ if (platform === 'darwin') {
26
+ const isMachO64 = (buf[0] === 0xcf && buf[1] === 0xfa && buf[2] === 0xed && buf[3] === 0xfe);
27
+ const isFatMachO = (buf[0] === 0xca && buf[1] === 0xfe && buf[2] === 0xba && buf[3] === 0xbe);
28
+ if (isFatMachO) return true;
29
+ if (!isMachO64) return false;
30
+ const cpuType = buf.readInt32LE(4);
31
+ if (arch === 'arm64' && cpuType === 0x0100000c) return true;
32
+ if (arch === 'x64' && cpuType === 0x01000007) return true;
33
+ return false;
34
+ }
35
+
36
+ if (platform === 'linux') {
37
+ const isELF = buf[0] === 0x7f && buf[1] === 0x45 && buf[2] === 0x4c && buf[3] === 0x46;
38
+ if (!isELF) return false;
39
+ const is64Bit = buf[4] === 2;
40
+ if (!is64Bit) return false;
41
+ const machine = buf.readUInt16LE(18);
42
+ if (arch === 'x64' && machine === 62) return true; // EM_X86_64
43
+ if (arch === 'arm64' && machine === 183) return true; // EM_AARCH64
44
+ return false;
45
+ }
46
+
47
+ if (platform === 'win32') {
48
+ return buf[0] === 0x4d && buf[1] === 0x5a;
49
+ }
50
+
51
+ return false;
52
+ } catch (_) {
53
+ return false;
54
+ }
55
+ }
56
+
57
+ function resolveBinary() {
7
58
  const ext = process.platform === 'win32' ? '.exe' : '';
8
- const arch = process.arch;
9
- const platform = process.platform;
59
+ const arch = process.arch === 'arm64' ? 'arm64' : 'amd64';
60
+ const platform = process.platform === 'darwin' ? 'darwin' : (process.platform === 'linux' ? 'linux' : 'windows');
10
61
 
11
- for (const name of ['garden']) {
12
- const directBin = path.join(__dirname, `${name}${ext}`);
13
- if (fs.existsSync(directBin)) return directBin;
62
+ // 1. Check local/bundled locations (Fat-Package and local builds)
63
+ const candidates = [
64
+ path.join(__dirname, 'binaries', `${PKG_NAME}-${process.platform}-${process.arch}${ext}`),
65
+ path.join(__dirname, 'binaries', `${PKG_NAME}-${process.platform}-${process.arch === 'x64' ? 'amd64' : process.arch}${ext}`),
66
+ path.join(__dirname, `${PKG_NAME}-${process.platform}-${process.arch}${ext}`),
67
+ path.join(__dirname, `${PKG_NAME}${ext}`),
68
+ path.join(__dirname, '..', 'vendor', 'bin', `${PKG_NAME}${ext}`),
69
+ ];
14
70
 
15
- const platformBin = path.join(__dirname, `${name}-${platform}-${arch}${ext}`);
16
- if (fs.existsSync(platformBin)) return platformBin;
71
+ for (const cand of candidates) {
72
+ if (isCompatibleBinary(cand)) {
73
+ try { fs.chmodSync(cand, 0o755); } catch (_) {}
74
+ return cand;
75
+ }
76
+ }
77
+
78
+ // 2. Check user cache directory (~/.cache/<pkg>/bin/<pkg>)
79
+ const cacheBase = process.env.XDG_CACHE_HOME || (
80
+ process.platform === 'win32'
81
+ ? (process.env.LOCALAPPDATA || path.join(os.homedir(), 'AppData', 'Local'))
82
+ : path.join(os.homedir(), '.cache')
83
+ );
84
+ const cacheBinDir = path.join(cacheBase, PKG_NAME, 'bin');
85
+ const cachedBin = path.join(cacheBinDir, `${PKG_NAME}${ext}`);
86
+
87
+ if (isCompatibleBinary(cachedBin)) {
88
+ return cachedBin;
89
+ }
90
+
91
+ // 3. Auto-download from GitHub releases
92
+ const assetExt = process.platform === 'win32' ? '.zip' : '.tar.gz';
93
+ const assetName = `${PKG_NAME}-${platform}-${arch}${assetExt}`;
94
+ const downloadUrl = `https://github.com/${REPO}/releases/download/v${VERSION}/${assetName}`;
95
+
96
+ try {
97
+ fs.mkdirSync(cacheBinDir, { recursive: true });
98
+ process.stderr.write(`[@axiomantic/${PKG_NAME}] Downloading native binary for ${platform}-${arch} from GitHub Releases...\n`);
99
+
100
+ if (process.platform === 'win32') {
101
+ const zipPath = path.join(cacheBinDir, assetName);
102
+ execSync(`powershell -Command "Invoke-WebRequest -Uri '${downloadUrl}' -OutFile '${zipPath}'; Expand-Archive -Path '${zipPath}' -DestinationPath '${cacheBinDir}' -Force; Remove-Item '${zipPath}'"`, { stdio: 'inherit' });
103
+ } else {
104
+ execSync(`curl -fsSL "${downloadUrl}" | tar -xzf - -C "${cacheBinDir}"`, { stdio: 'inherit' });
105
+ }
106
+
107
+ if (isCompatibleBinary(cachedBin)) {
108
+ try { fs.chmodSync(cachedBin, 0o755); } catch (_) {}
109
+ return cachedBin;
110
+ }
111
+ } catch (err) {
112
+ process.stderr.write(`[@axiomantic/${PKG_NAME}] Automatic download failed: ${err.message}\n`);
113
+ }
17
114
 
18
- const vendorBin = path.join(__dirname, '..', 'vendor', 'bin', `${name}${ext}`);
19
- if (fs.existsSync(vendorBin)) return vendorBin;
115
+ // 4. Fallback: compile from local source if nim is available
116
+ const srcFile = path.join(__dirname, '..', 'src', `${PKG_NAME}.nim`);
117
+ if (fs.existsSync(srcFile)) {
118
+ try {
119
+ execSync('which nim', { stdio: 'ignore' });
120
+ process.stderr.write(`[@axiomantic/${PKG_NAME}] Building from source via Nim compiler...\n`);
121
+ fs.mkdirSync(cacheBinDir, { recursive: true });
122
+ execSync(`nim c -d:release --opt:speed -o:"${cachedBin}" "${srcFile}"`, { stdio: 'inherit' });
123
+ if (isCompatibleBinary(cachedBin)) {
124
+ try { fs.chmodSync(cachedBin, 0o755); } catch (_) {}
125
+ return cachedBin;
126
+ }
127
+ } catch (_) {}
20
128
  }
21
129
 
22
130
  return null;
23
131
  }
24
132
 
25
- const binPath = findBinary();
133
+ const binPath = resolveBinary();
26
134
  if (!binPath) {
27
- console.error(`Error: @axiomantic/garden native binary not found for ${process.platform}-${process.arch}.`);
28
- console.error(`Please visit https://github.com/axiomantic/garden/releases to download.`);
135
+ console.error(`\nError: @axiomantic/${PKG_NAME} native binary not found or incompatible with ${process.platform}-${process.arch}.`);
136
+ console.error(`Please visit https://github.com/${REPO}/releases to download, or install Nim (https://nim-lang.org) to compile from source.`);
29
137
  process.exit(1);
30
138
  }
31
139
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiomantic/garden",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Multi-Agent Swarm Orchestration, Empirical Dialectics & Ceremonies on top of Rhizo & Vine",
5
5
  "main": "bin/run.js",
6
6
  "bin": {
@@ -8,7 +8,8 @@
8
8
  },
9
9
  "skills": "./skills",
10
10
  "files": [
11
- "bin/",
11
+ "bin/run.js",
12
+ "bin/binaries/",
12
13
  "scripts/",
13
14
  "skills/",
14
15
  "SKILL.md",
@@ -8,6 +8,18 @@ description: "Master entrypoint and end-to-end ceremony director for multi-agent
8
8
  > **The Sovereign Orchestration Layer for Autonomous AI Swarms**
9
9
  > *Where `rhizo` is the transport nervous system and `vine` is the workspace integrator, `garden` is the institutional intellect, deliberation crucible, and master ceremony conductor.*
10
10
 
11
+ ## 0. Prerequisite & Automatic Bootstrapping
12
+
13
+ All swarm ceremonies require the native `garden` CLI. If `command -v garden` fails, immediately install it:
14
+ ```bash
15
+ npm install -g @axiomantic/garden
16
+ ```
17
+ Or install the full coordination triad:
18
+ ```bash
19
+ npm install -g @axiomantic/rhizo @axiomantic/vine @axiomantic/garden
20
+ ```
21
+ Once installed, `garden` is available on `$PATH` and provisions architecture-appropriate binaries automatically.
22
+
11
23
  ---
12
24
 
13
25
  ## 1. Architectural Architecture & Layering
package/bin/garden DELETED
Binary file