@guyghost/swarm-dao-herdr-adapter 0.2.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/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # Swarm DAO herdr Adapter
2
+
3
+ Run each Swarm DAO deliberation agent as a **real coding agent inside a
4
+ [herdr](https://herdr.dev) workspace** — "the runtime your coding agents live
5
+ on". herdr owns the agent's terminal and tracks its lifecycle
6
+ (`working` / `idle` / `blocked` / `done`); the operator can attach to any
7
+ agent pane live with `herdr` and watch it think.
8
+
9
+ ```
10
+ herdr workspace: swarm-dao-p1-strategist ← real pi/claude/codex/grok… agent
11
+ herdr workspace: swarm-dao-p1-critic ← another agent, another workspace
12
+ ```
13
+
14
+ ## How it works
15
+
16
+ For every agent, the adapter:
17
+
18
+ 1. Creates an **isolated herdr workspace** (one root pane, `--no-focus` —
19
+ it never touches your existing layout).
20
+ 2. Starts the agent: `herdr agent start <name> --kind <kind>` — blocks until
21
+ herdr detects the agent is ready for input.
22
+ 3. Submits the deliberation prompt: `herdr agent prompt <name> '<prompt>'
23
+ --wait` — settles on `idle`, `done`, or `blocked`.
24
+ 4. Harvests the ANSI-stripped terminal transcript:
25
+ `herdr agent read <name> --source recent-unwrapped`.
26
+ 5. Closes the workspace (unless `keepPanes`).
27
+
28
+ A **blocked** agent (approval/question UI) surfaces as an error output,
29
+ never as a vote. Outputs feed the same deterministic tally as every other
30
+ host — no AI authority, no proposal-state mutation.
31
+
32
+ ## Prerequisites
33
+
34
+ - `herdr` installed (`brew install herdr`) and the **server running**
35
+ (run `herdr` once in any terminal)
36
+ - The chosen kind's executable installed and authenticated (`pi`, `claude`,
37
+ `codex`, `gemini`, `cursor`, `grok`, `opencode`, …)
38
+
39
+ ## Usage
40
+
41
+ ```typescript
42
+ import { createHerdrHostAdapter } from "@guyghost/swarm-dao-herdr-adapter";
43
+ import { loadConfig, handleDaoDeliberate } from "@guyghost/swarm-dao-core";
44
+
45
+ const adapter = createHerdrHostAdapter({
46
+ workDir: process.cwd(),
47
+ kind: "pi", // or "claude", "codex", "grok", …
48
+ // agentArgs: ["-m", "gpt-5.4"], // passed to the agent executable
49
+ // timeoutMs: 300_000, // per-agent prompt timeout
50
+ // keepPanes: true, // keep workspaces for inspection
51
+ });
52
+
53
+ const result = await handleDaoDeliberate(
54
+ { adapter, workDir: process.cwd(), deliberationMode: "auto", controlToolName: "dao_check" },
55
+ 1,
56
+ );
57
+ ```
58
+
59
+ ## Boundary
60
+
61
+ Deliberation is read-only analysis: agents share the repository checkout for
62
+ context (each workspace's cwd is the repo root). Execution-side isolation
63
+ stays with the delivery layer's `GitWorkspace` (`execution.isolation`).
64
+
65
+ ## Testing
66
+
67
+ ```bash
68
+ bun test packages/herdr-adapter # unit (fake runner) + real-server error path
69
+ HERDR_IT=1 bun test packages/herdr-adapter # + full round-trip with a real agent
70
+ # (HERDR_KIND, HERDR_KEEP to tune)
71
+ ```
@@ -0,0 +1,55 @@
1
+ import type { HostAdapter } from "@guyghost/swarm-dao-core";
2
+ /** Minimal command surface the adapter needs (node:child_process-backed by default). */
3
+ export interface HerdrRunner {
4
+ exec(command: string, options?: {
5
+ cwd?: string;
6
+ timeout?: number;
7
+ }): Promise<{
8
+ stdout: string;
9
+ stderr: string;
10
+ exitCode: number;
11
+ }>;
12
+ }
13
+ /**
14
+ * herdr agent names must match [a-z][a-z0-9_-]{0,31} and be unique among
15
+ * live agents. Sanitize deterministically: lowercase, collapse invalid runs,
16
+ * force a leading letter, truncate to 32.
17
+ */
18
+ export declare function sanitizeHerdrName(raw: string): string;
19
+ /**
20
+ * Build a per-agent herdr name that ALWAYS keeps the agent-specific suffix
21
+ * unique: the prefix is capped so `p<id>-<agent>-<hash>` fits 32 chars even
22
+ * for long ids (truncation can never merge two agents into one name).
23
+ */
24
+ export declare function herdrAgentName(prefix: string, proposalId: number, agentId: string): string;
25
+ /**
26
+ * Terminals ECHO the submitted prompt, so the harvested transcript contains
27
+ * the charter's output-format template — including the literal line
28
+ * `for | against | abstain`, which the tally's vote parser would read as a
29
+ * vote for "for". Strip those template lines: a real vote line never
30
+ * contains pipes.
31
+ */
32
+ export declare function stripEchoedVoteTemplates(content: string): string;
33
+ export interface HerdrAdapterOptions {
34
+ /** Repository root the agent workspaces run in. */
35
+ workDir: string;
36
+ /** herdr agent kind: pi, claude, codex, gemini, cursor, grok, opencode…
37
+ * Required for deliberation — the kind's executable must be installed. */
38
+ kind?: string;
39
+ /** Extra arguments passed to the agent executable (after herdr's --). */
40
+ agentArgs?: readonly string[];
41
+ /** Per-agent prompt timeout in ms (default 5 min; herdr max 300000). */
42
+ timeoutMs?: number;
43
+ /** agent start readiness timeout in ms (default 30s; herdr 3000..300000). */
44
+ startTimeoutMs?: number;
45
+ /** Lines of terminal output harvested per agent (default 200). */
46
+ readLines?: number;
47
+ /** Keep the herdr workspaces alive after harvest (default false). */
48
+ keepPanes?: boolean;
49
+ /** Injectable command runner (tests). */
50
+ runner?: HerdrRunner;
51
+ /** Agent name / workspace label prefix (default "swarm-dao"). */
52
+ prefix?: string;
53
+ }
54
+ export declare function createHerdrHostAdapter(options: HerdrAdapterOptions): HostAdapter;
55
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAyB,WAAW,EAAY,MAAM,0BAA0B,CAAC;AAC7F,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC1B,IAAI,CACF,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAuBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASrD;AAcD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAS1F;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,mBAAmB;IAClC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB;8EAC0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yCAAyC;IACzC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAsCD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,CA6JhF"}
@@ -0,0 +1,259 @@
1
+ // ============================================================
2
+ // Swarm DAO — herdr Host Adapter
3
+ // ============================================================
4
+ // Runs each deliberation agent as a REAL interactive coding agent inside a
5
+ // herdr workspace (https://herdr.dev — "the runtime your coding agents live
6
+ // on"). herdr owns the agent's terminal, tracks its lifecycle
7
+ // (working/idle/blocked/done), and the operator can attach to any agent
8
+ // pane live with `herdr`.
9
+ //
10
+ // Lifecycle per agent (packages/herdr-adapter):
11
+ // herdr workspace create --cwd <repo> --label <name> --no-focus (isolated pane)
12
+ // herdr agent start <name> --kind <kind> --pane <id> --timeout (blocks until ready)
13
+ // herdr agent prompt <name> '<prompt>' --wait --timeout (settles on idle/done/blocked)
14
+ // herdr agent read <name> --source recent-unwrapped --lines N (ANSI-stripped output)
15
+ // herdr workspace close <id> (unless keepPanes)
16
+ //
17
+ // Boundary: deliberation is read-only analysis; outputs feed the same
18
+ // deterministic tally as every other host. A BLOCKED agent (approval or
19
+ // question UI) surfaces as an error output, never as a vote.
20
+ //
21
+ // Prerequisites: the herdr server must be running (`herdr` once) and the
22
+ // chosen kind's executable installed and authenticated.
23
+ import { exec as execCallback } from "node:child_process";
24
+ import { promises as fs } from "node:fs";
25
+ import path from "node:path";
26
+ import { promisify } from "node:util";
27
+ const execAsync = promisify(execCallback);
28
+ const defaultRunner = () => ({
29
+ exec: async (command, options) => {
30
+ try {
31
+ const { stdout, stderr } = await execAsync(command, {
32
+ cwd: options?.cwd,
33
+ timeout: options?.timeout,
34
+ });
35
+ return { stdout, stderr, exitCode: 0 };
36
+ }
37
+ catch (error) {
38
+ const failure = error;
39
+ return {
40
+ stdout: failure.stdout ?? "",
41
+ stderr: failure.stderr ?? failure.message ?? "command failed",
42
+ exitCode: Number.isInteger(failure.code) ? failure.code : 1,
43
+ };
44
+ }
45
+ },
46
+ });
47
+ /**
48
+ * herdr agent names must match [a-z][a-z0-9_-]{0,31} and be unique among
49
+ * live agents. Sanitize deterministically: lowercase, collapse invalid runs,
50
+ * force a leading letter, truncate to 32.
51
+ */
52
+ export function sanitizeHerdrName(raw) {
53
+ const cleaned = raw
54
+ .toLowerCase()
55
+ .replace(/[^a-z0-9_-]+/g, "-")
56
+ .replace(/^-+|-+$/g, "")
57
+ .slice(0, 32)
58
+ .replace(/-+$/g, "");
59
+ if (cleaned.length === 0)
60
+ return "agent";
61
+ return /^[a-z]/.test(cleaned) ? cleaned : `a-${cleaned}`.slice(0, 32);
62
+ }
63
+ /** herdr kinds are identifiers — anything else is refused, never interpolated. */
64
+ const SAFE_KIND = /^[a-z][a-z0-9_-]{0,31}$/;
65
+ /** Short stable suffix so truncated names stay unique per agent id. */
66
+ function stableSuffix(value, length) {
67
+ let hash = 0;
68
+ for (let i = 0; i < value.length; i++) {
69
+ hash = (hash * 31 + value.charCodeAt(i)) | 0;
70
+ }
71
+ return (hash >>> 0).toString(36).padStart(length, "0").slice(-length);
72
+ }
73
+ /**
74
+ * Build a per-agent herdr name that ALWAYS keeps the agent-specific suffix
75
+ * unique: the prefix is capped so `p<id>-<agent>-<hash>` fits 32 chars even
76
+ * for long ids (truncation can never merge two agents into one name).
77
+ */
78
+ export function herdrAgentName(prefix, proposalId, agentId) {
79
+ const cappedPrefix = sanitizeHerdrName(prefix).slice(0, 10);
80
+ const idPart = `p${proposalId}`;
81
+ const agent = sanitizeHerdrName(agentId);
82
+ const hash = stableSuffix(agentId, 4);
83
+ const room = 32 - cappedPrefix.length - idPart.length - hash.length - 2;
84
+ const agentPart = room > 0 ? agent.slice(0, room) : "";
85
+ const name = `${cappedPrefix}-${idPart}-${agentPart}-${hash}`.replace(/-+/g, "-");
86
+ return /^[a-z]/.test(name) ? name.slice(0, 32) : sanitizeHerdrName(name);
87
+ }
88
+ /**
89
+ * Terminals ECHO the submitted prompt, so the harvested transcript contains
90
+ * the charter's output-format template — including the literal line
91
+ * `for | against | abstain`, which the tally's vote parser would read as a
92
+ * vote for "for". Strip those template lines: a real vote line never
93
+ * contains pipes.
94
+ */
95
+ export function stripEchoedVoteTemplates(content) {
96
+ return content.replace(/^\s*for\s*\|\s*against\s*\|\s*abstain\s*$/gim, "");
97
+ }
98
+ const DEFAULT_TIMEOUT_MS = 300_000;
99
+ const DEFAULT_START_TIMEOUT_MS = 30_000;
100
+ const DEFAULT_READ_LINES = 200;
101
+ function parseHerdrJson(raw) {
102
+ try {
103
+ const parsed = JSON.parse(raw);
104
+ return typeof parsed === "object" && parsed !== null ? parsed : null;
105
+ }
106
+ catch {
107
+ return null;
108
+ }
109
+ }
110
+ function herdrErrorDetail(stderr, stdout) {
111
+ const parsed = parseHerdrJson(stderr.trim()) ?? parseHerdrJson(stdout.trim());
112
+ if (parsed?.error) {
113
+ const { code, message } = parsed.error;
114
+ return [code, message].filter((part) => part && part.length > 0).join(": ");
115
+ }
116
+ return (stderr.trim() || stdout.trim() || "unknown herdr error").slice(0, 300);
117
+ }
118
+ function agentState(result) {
119
+ return result?.agent?.status ?? result?.agent?.state ?? null;
120
+ }
121
+ export function createHerdrHostAdapter(options) {
122
+ const runner = options.runner ?? defaultRunner();
123
+ const defaultTimeoutMs = Math.min(options.timeoutMs ?? DEFAULT_TIMEOUT_MS, 300_000);
124
+ const startTimeoutMs = Math.min(options.startTimeoutMs ?? DEFAULT_START_TIMEOUT_MS, 300_000);
125
+ const readLines = options.readLines ?? DEFAULT_READ_LINES;
126
+ const prefix = sanitizeHerdrName(options.prefix ?? "swarm-dao");
127
+ const keepPanes = options.keepPanes === true;
128
+ const extraArgs = (options.agentArgs ?? []).map((arg) => quote(arg)).join(" ");
129
+ /** Resolve the deepest EXISTING ancestor's realpath, then rejoin the rest —
130
+ * containment must hold even for files that do not exist yet. */
131
+ const realPathOf = async (target) => {
132
+ let current = target;
133
+ const tail = [];
134
+ for (;;) {
135
+ const real = await fs.realpath(current).catch(() => null);
136
+ if (real !== null) {
137
+ return tail.length === 0 ? real : path.join(real, ...[...tail].reverse());
138
+ }
139
+ const parent = path.dirname(current);
140
+ if (parent === current)
141
+ return target;
142
+ tail.push(path.basename(current));
143
+ current = parent;
144
+ }
145
+ };
146
+ /** Resolve adapter file access against workDir, contained (like other hosts).
147
+ * Symlinks are resolved: a repo symlink cannot escape the root. */
148
+ const containedPath = async (file) => {
149
+ const root = await fs.realpath(path.resolve(options.workDir)).catch(() => path.resolve(options.workDir));
150
+ const resolved = await realPathOf(path.resolve(root, file));
151
+ if (resolved !== root && !resolved.startsWith(`${root}${path.sep}`)) {
152
+ throw new Error(`path escapes the working directory: ${file}`);
153
+ }
154
+ return path.resolve(root, file);
155
+ };
156
+ const harvest = async (proposal, agent, prompt, timeoutMs, startedAt) => {
157
+ // Duration is stamped at RETURN time — base carries only identity.
158
+ const base = () => ({
159
+ agentId: agent.id,
160
+ agentName: agent.name,
161
+ role: agent.role,
162
+ content: "",
163
+ });
164
+ const finish = (fields) => ({
165
+ ...base(),
166
+ content: "",
167
+ ...fields,
168
+ durationMs: Date.now() - startedAt,
169
+ });
170
+ if (!options.kind || options.kind.trim().length === 0) {
171
+ return finish({
172
+ error: 'herdr.kind is not configured: set { "herdr": { "kind": "pi" } } in .dao/config.json (a supported herdr agent kind whose executable is installed).',
173
+ });
174
+ }
175
+ if (!SAFE_KIND.test(options.kind)) {
176
+ // Never interpolate an arbitrary value into the shell command line.
177
+ return finish({ error: `herdr.kind '${options.kind}' is not a valid agent kind identifier.` });
178
+ }
179
+ const name = herdrAgentName(prefix, proposal.id, agent.id);
180
+ let workspaceId = null;
181
+ try {
182
+ // 1. Isolated workspace with one root pane (never touches the user's layout).
183
+ const created = await runner.exec(`herdr workspace create --cwd ${quote(options.workDir)} --label ${quote(name)} --no-focus`);
184
+ if (created.exitCode !== 0) {
185
+ return finish({
186
+ error: `herdr workspace create failed: ${herdrErrorDetail(created.stderr, created.stdout)} (is the herdr server running? start it with \`herdr\`)`,
187
+ });
188
+ }
189
+ const paneId = parseHerdrJson(created.stdout)?.result?.root_pane?.pane_id ?? null;
190
+ workspaceId = parseHerdrJson(created.stdout)?.result?.workspace?.workspace_id ?? null;
191
+ if (!paneId || !workspaceId) {
192
+ return finish({
193
+ error: `herdr workspace create returned no pane/workspace id: ${created.stdout.slice(0, 200)}`,
194
+ });
195
+ }
196
+ // 2. Start the agent (blocks until herdr detects it ready for input).
197
+ const started = await runner.exec(`herdr agent start ${name} --kind ${options.kind} --pane ${paneId} --timeout ${startTimeoutMs}${extraArgs ? ` -- ${extraArgs}` : ""}`);
198
+ if (started.exitCode !== 0) {
199
+ return finish({
200
+ error: `herdr agent start (${options.kind}) failed: ${herdrErrorDetail(started.stderr, started.stdout)}`,
201
+ });
202
+ }
203
+ // 3. Prompt and wait for a settled state (idle | done | blocked).
204
+ const prompted = await runner.exec(`herdr agent prompt ${name} ${quote(prompt)} --wait --timeout ${timeoutMs}`);
205
+ if (prompted.exitCode !== 0) {
206
+ const detail = herdrErrorDetail(prompted.stderr, prompted.stdout);
207
+ return finish({ error: `herdr agent prompt failed (likely timeout): ${detail}` });
208
+ }
209
+ const state = agentState(parseHerdrJson(prompted.stdout)?.result);
210
+ if (state === "blocked") {
211
+ return finish({
212
+ error: `herdr agent ${agent.id} is blocked (approval/question UI) — it never produced a votable answer. Attach with \`herdr\` to inspect.`,
213
+ });
214
+ }
215
+ // 4. Harvest the ANSI-stripped terminal output.
216
+ const read = await runner.exec(`herdr agent read ${name} --source recent-unwrapped --lines ${readLines}`);
217
+ if (read.exitCode !== 0) {
218
+ return finish({ error: `herdr agent read failed: ${herdrErrorDetail(read.stderr, read.stdout)}` });
219
+ }
220
+ // The terminal echoes the submitted prompt: strip the charter's literal
221
+ // vote template so the tally can never parse the echo as a vote.
222
+ return finish({ content: stripEchoedVoteTemplates(read.stdout.replace(/\n+$/, "\n")) });
223
+ }
224
+ catch (error) {
225
+ return finish({ error: error instanceof Error ? error.message : String(error) });
226
+ }
227
+ finally {
228
+ // 5. Cleanup — unless the operator wants to inspect the workspace.
229
+ if (!keepPanes && workspaceId) {
230
+ await runner.exec(`herdr workspace close ${workspaceId}`).catch(() => undefined);
231
+ }
232
+ }
233
+ };
234
+ return {
235
+ hostId: "herdr",
236
+ spawnAgent: async ({ agent, proposal, systemPrompt, timeoutMs }) => harvest(proposal, agent, systemPrompt, Math.min(timeoutMs ?? defaultTimeoutMs, 300_000), Date.now()),
237
+ spawnAgents: async ({ agents, proposal, maxConcurrent }) => {
238
+ const outputs = [];
239
+ for (let i = 0; i < agents.length; i += Math.max(1, maxConcurrent)) {
240
+ const batch = agents.slice(i, i + Math.max(1, maxConcurrent));
241
+ const startedAt = Date.now();
242
+ const results = await Promise.all(batch.map((agent) => harvest(proposal, agent, agent.systemPrompt, defaultTimeoutMs, startedAt)));
243
+ outputs.push(...results);
244
+ }
245
+ return outputs;
246
+ },
247
+ log: async ({ level, message }) => {
248
+ const line = `[herdr:${level}] ${message}`;
249
+ await fs.appendFile(path.join(options.workDir, ".dao", "herdr.log"), `${line}\n`, "utf8").catch(() => undefined);
250
+ },
251
+ getWorkingDirectory: () => options.workDir,
252
+ readFile: async (file) => fs.readFile(await containedPath(file), "utf8"),
253
+ writeFile: async (file, content) => fs.writeFile(await containedPath(file), content, "utf8"),
254
+ exec: (command, execOptions) => runner.exec(command, execOptions),
255
+ hasCapability: (capability) => capability === "parallel-spawn",
256
+ };
257
+ }
258
+ const quote = (value) => `'${value.replace(/'/g, `'\\''`)}'`;
259
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { HerdrAdapterOptions, HerdrRunner } from "./adapter.js";
2
+ export { createHerdrHostAdapter, sanitizeHerdrName } from "./adapter.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { createHerdrHostAdapter, sanitizeHerdrName } from "./adapter.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@guyghost/swarm-dao-herdr-adapter",
3
+ "version": "0.2.0",
4
+ "description": "Swarm DAO herdr host — each deliberation agent runs as a real coding agent in a herdr workspace",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "sideEffects": false,
9
+ "files": [
10
+ "dist",
11
+ "README.md"
12
+ ],
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
+ }
18
+ },
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "test": "bun test",
22
+ "lint": "biome check .",
23
+ "typecheck": "tsc --noEmit",
24
+ "prepublishOnly": "bun run build"
25
+ },
26
+ "dependencies": {
27
+ "@guyghost/swarm-dao-core": "^0.6.0"
28
+ },
29
+ "devDependencies": {
30
+ "@types/bun": "1.3.14",
31
+ "@types/node": "^26.0.1"
32
+ },
33
+ "keywords": [
34
+ "swarm-dao",
35
+ "herdr",
36
+ "dao",
37
+ "governance",
38
+ "multi-agent",
39
+ "deliberation",
40
+ "ai-agents",
41
+ "terminal"
42
+ ],
43
+ "author": "guyghost",
44
+ "license": "MIT",
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "git+https://github.com/guyghost/swarm-dao.git",
48
+ "directory": "packages/herdr-adapter"
49
+ },
50
+ "bugs": {
51
+ "url": "https://github.com/guyghost/swarm-dao/issues"
52
+ },
53
+ "homepage": "https://github.com/guyghost/swarm-dao#readme",
54
+ "publishConfig": {
55
+ "access": "public"
56
+ }
57
+ }