@cardor/agent-harness-kit 0.1.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 (111) hide show
  1. package/README.md +218 -0
  2. package/bin/ahk.js +2 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +113 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/build.d.ts +6 -0
  8. package/dist/commands/build.d.ts.map +1 -0
  9. package/dist/commands/build.js +39 -0
  10. package/dist/commands/build.js.map +1 -0
  11. package/dist/commands/export.d.ts +8 -0
  12. package/dist/commands/export.d.ts.map +1 -0
  13. package/dist/commands/export.js +33 -0
  14. package/dist/commands/export.js.map +1 -0
  15. package/dist/commands/health.d.ts +2 -0
  16. package/dist/commands/health.d.ts.map +1 -0
  17. package/dist/commands/health.js +38 -0
  18. package/dist/commands/health.js.map +1 -0
  19. package/dist/commands/init-helpers.d.ts +9 -0
  20. package/dist/commands/init-helpers.d.ts.map +1 -0
  21. package/dist/commands/init-helpers.js +40 -0
  22. package/dist/commands/init-helpers.js.map +1 -0
  23. package/dist/commands/init.d.ts +9 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +202 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/migrate.d.ts +6 -0
  28. package/dist/commands/migrate.d.ts.map +1 -0
  29. package/dist/commands/migrate.js +45 -0
  30. package/dist/commands/migrate.js.map +1 -0
  31. package/dist/commands/serve.d.ts +6 -0
  32. package/dist/commands/serve.d.ts.map +1 -0
  33. package/dist/commands/serve.js +13 -0
  34. package/dist/commands/serve.js.map +1 -0
  35. package/dist/commands/status.d.ts +6 -0
  36. package/dist/commands/status.d.ts.map +1 -0
  37. package/dist/commands/status.js +71 -0
  38. package/dist/commands/status.js.map +1 -0
  39. package/dist/commands/sync.d.ts +7 -0
  40. package/dist/commands/sync.d.ts.map +1 -0
  41. package/dist/commands/sync.js +57 -0
  42. package/dist/commands/sync.js.map +1 -0
  43. package/dist/commands/task/add.d.ts +2 -0
  44. package/dist/commands/task/add.d.ts.map +1 -0
  45. package/dist/commands/task/add.js +59 -0
  46. package/dist/commands/task/add.js.map +1 -0
  47. package/dist/commands/task/done.d.ts +2 -0
  48. package/dist/commands/task/done.d.ts.map +1 -0
  49. package/dist/commands/task/done.js +45 -0
  50. package/dist/commands/task/done.js.map +1 -0
  51. package/dist/commands/task/index.d.ts +4 -0
  52. package/dist/commands/task/index.d.ts.map +1 -0
  53. package/dist/commands/task/index.js +4 -0
  54. package/dist/commands/task/index.js.map +1 -0
  55. package/dist/commands/task/list.d.ts +7 -0
  56. package/dist/commands/task/list.d.ts.map +1 -0
  57. package/dist/commands/task/list.js +42 -0
  58. package/dist/commands/task/list.js.map +1 -0
  59. package/dist/core/config.d.ts +5 -0
  60. package/dist/core/config.d.ts.map +1 -0
  61. package/dist/core/config.js +77 -0
  62. package/dist/core/config.js.map +1 -0
  63. package/dist/core/db.d.ts +56 -0
  64. package/dist/core/db.d.ts.map +1 -0
  65. package/dist/core/db.js +344 -0
  66. package/dist/core/db.js.map +1 -0
  67. package/dist/core/materializer/claude-code.d.ts +8 -0
  68. package/dist/core/materializer/claude-code.d.ts.map +1 -0
  69. package/dist/core/materializer/claude-code.js +83 -0
  70. package/dist/core/materializer/claude-code.js.map +1 -0
  71. package/dist/core/materializer/index.d.ts +8 -0
  72. package/dist/core/materializer/index.d.ts.map +1 -0
  73. package/dist/core/materializer/index.js +13 -0
  74. package/dist/core/materializer/index.js.map +1 -0
  75. package/dist/core/materializer/opencode.d.ts +8 -0
  76. package/dist/core/materializer/opencode.d.ts.map +1 -0
  77. package/dist/core/materializer/opencode.js +76 -0
  78. package/dist/core/materializer/opencode.js.map +1 -0
  79. package/dist/core/materializer/templates.d.ts +25 -0
  80. package/dist/core/materializer/templates.d.ts.map +1 -0
  81. package/dist/core/materializer/templates.js +319 -0
  82. package/dist/core/materializer/templates.js.map +1 -0
  83. package/dist/core/mcp-server.d.ts +3 -0
  84. package/dist/core/mcp-server.d.ts.map +1 -0
  85. package/dist/core/mcp-server.js +264 -0
  86. package/dist/core/mcp-server.js.map +1 -0
  87. package/dist/core/sqlite-adapter.d.ts +14 -0
  88. package/dist/core/sqlite-adapter.d.ts.map +1 -0
  89. package/dist/core/sqlite-adapter.js +20 -0
  90. package/dist/core/sqlite-adapter.js.map +1 -0
  91. package/dist/index.d.ts +3 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +2 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/tests/db.test.d.ts +2 -0
  96. package/dist/tests/db.test.d.ts.map +1 -0
  97. package/dist/tests/db.test.js +106 -0
  98. package/dist/tests/db.test.js.map +1 -0
  99. package/dist/tests/slugify.test.d.ts +2 -0
  100. package/dist/tests/slugify.test.d.ts.map +1 -0
  101. package/dist/tests/slugify.test.js +26 -0
  102. package/dist/tests/slugify.test.js.map +1 -0
  103. package/dist/tests/templates.test.d.ts +2 -0
  104. package/dist/tests/templates.test.d.ts.map +1 -0
  105. package/dist/tests/templates.test.js +64 -0
  106. package/dist/tests/templates.test.js.map +1 -0
  107. package/dist/types.d.ts +141 -0
  108. package/dist/types.d.ts.map +1 -0
  109. package/dist/types.js +3 -0
  110. package/dist/types.js.map +1 -0
  111. package/package.json +56 -0
package/README.md ADDED
@@ -0,0 +1,218 @@
1
+ # agent-harness-kit
2
+
3
+ CLI scaffolding for multi-agent harness systems.
4
+ Binary: `ahk` · Works with Claude Code, OpenCode, and any MCP-compatible AI tool.
5
+
6
+ ---
7
+
8
+ ## Requirements
9
+
10
+ - Node.js ≥ 22 **or** Bun (any recent version)
11
+ - npm ≥ 9
12
+
13
+ ---
14
+
15
+ ## Local development setup
16
+
17
+ ### 1. Clone and install dependencies
18
+
19
+ ```bash
20
+ git clone <repo-url>
21
+ cd agent-harness-kit
22
+ npm install
23
+ ```
24
+
25
+ ### 2. Build the TypeScript source
26
+
27
+ ```bash
28
+ npm run build
29
+ ```
30
+
31
+ This compiles `src/` → `dist/`. You must re-run this every time you change source files.
32
+
33
+ > Tip: run `npm run dev` in a separate terminal to watch for changes and rebuild automatically.
34
+
35
+ ### 3. Link the binary globally
36
+
37
+ ```bash
38
+ npm link
39
+ ```
40
+
41
+ This registers `ahk` as a global command on your machine by symlinking `bin/ahk.js` into your global `node_modules/.bin/`.
42
+
43
+ Verify it worked:
44
+
45
+ ```bash
46
+ ahk --version
47
+ # 0.1.0
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Testing from an external project folder
53
+
54
+ Once linked, you can use `ahk` from **any directory** — no need to be inside `agent-harness-kit/`.
55
+
56
+ ```bash
57
+ # Create a test project folder anywhere
58
+ mkdir ~/projects/my-test-app
59
+ cd ~/projects/my-test-app
60
+
61
+ # Run the interactive scaffold
62
+ ahk init
63
+ ```
64
+
65
+ Follow the prompts. After init, your folder will contain:
66
+
67
+ ```
68
+ my-test-app/
69
+ ├── agent-harness-kit.config.ts ← your harness config
70
+ ├── AGENTS.md ← navigation map for agents
71
+ ├── health.sh ← implement your health checks here
72
+ ├── .harness/
73
+ │ ├── harness.db ← SQLite source of truth
74
+ │ ├── current.md ← auto-generated session snapshot
75
+ │ └── feature_list.json ← human-editable task list
76
+ └── .claude/
77
+ ├── agents/
78
+ │ ├── lead.md
79
+ │ ├── explorer.md
80
+ │ ├── builder.md
81
+ │ └── reviewer.md
82
+ └── mcp.json ← Claude Code picks this up automatically
83
+ ```
84
+
85
+ ---
86
+
87
+ ## Development loop
88
+
89
+ ```
90
+ # Terminal 1 — watch and rebuild on save
91
+ cd agent-harness-kit
92
+ npm run dev
93
+
94
+ # Terminal 2 — test commands from your external project
95
+ cd ~/projects/my-test-app
96
+ ahk status
97
+ ahk task add
98
+ ahk health
99
+ ```
100
+
101
+ Because `npm link` creates a symlink (not a copy), every rebuild in terminal 1 is immediately available in terminal 2 — no re-linking needed.
102
+
103
+ ---
104
+
105
+ ## Available commands
106
+
107
+ ```
108
+ ahk init Interactive harness scaffold
109
+ ahk build Regenerate AGENTS.md + provider files from config
110
+ ahk build --watch Rebuild on config file changes
111
+ ahk health Run health.sh and report result
112
+ ahk status Show task table and active actions
113
+ ahk status --json Same, as JSON
114
+ ahk sync Sync feature_list.json ↔ SQLite
115
+ ahk sync --dry-run Preview changes without applying
116
+ ahk serve Start MCP server on stdio (used by Claude Code)
117
+ ahk task add Add a task interactively
118
+ ahk task list List all tasks
119
+ ahk task list --status pending|in_progress|done|blocked
120
+ ahk task done <id|slug> Mark a task as done (runs health check first)
121
+ ahk migrate --to <provider> Move provider files to claude-code or opencode
122
+ ahk export --json Export tasks + actions as JSON
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Remove the global link
128
+
129
+ When you no longer need the local link:
130
+
131
+ ```bash
132
+ npm unlink -g agent-harness-kit
133
+ ```
134
+
135
+ ---
136
+
137
+ ## MCP server
138
+
139
+ `ahk serve` starts the MCP server on stdio. You never need to call it manually — after `ahk init`, the generated `.claude/mcp.json` (Claude Code) or `opencode.json` (OpenCode) tells the AI tool to spawn it automatically when you open the project.
140
+
141
+ **Tools exposed to agents:**
142
+
143
+ | Tool | Description |
144
+ |------|-------------|
145
+ | `actions.start(taskId, agent)` | Start an action, returns `actionId` |
146
+ | `actions.write(actionId, section, content)` | Record a section (result, tools\_used, …) |
147
+ | `actions.complete(actionId, summary)` | Close the action |
148
+ | `actions.get(taskId)` | Full action history for a task |
149
+ | `tasks.get([status])` | List tasks, optionally filtered |
150
+ | `tasks.claim(id, agent)` | Atomically claim a pending task |
151
+ | `tasks.update(id, status)` | Change task status |
152
+ | `docs.search(query)` | Search the project docs folder |
153
+
154
+ ---
155
+
156
+ ## Runtime compatibility
157
+
158
+ | Runtime | Support |
159
+ |---------|---------|
160
+ | Node.js ≥ 22 | ✅ uses `node:sqlite` built-in |
161
+ | Bun (any) | ✅ uses `bun:sqlite` built-in |
162
+ | Node.js < 22 | ❌ `node:sqlite` not available |
163
+
164
+ ---
165
+
166
+ ## Running tests
167
+
168
+ Tests use the Node.js built-in test runner — no extra dependencies needed.
169
+
170
+ ```bash
171
+ npm run build
172
+ npm test
173
+ ```
174
+
175
+ ---
176
+
177
+ ## Publishing to npm
178
+
179
+ The package is published under the `@cardor` scope as `@cardor/agent-harness-kit`.
180
+
181
+ ### Prerequisites
182
+
183
+ 1. Be a member of the `@cardor` npm organization (or have publish access).
184
+ 2. Be logged in to npm:
185
+
186
+ ```bash
187
+ npm login
188
+ ```
189
+
190
+ ### Manual publish
191
+
192
+ ```bash
193
+ # 1. Bump the version (patch | minor | major)
194
+ npm version patch
195
+
196
+ # 2. Build, run tests, and publish (prepublishOnly does build + test automatically)
197
+ npm publish --access public
198
+ ```
199
+
200
+ > `--access public` is required for scoped packages on the free npm plan.
201
+
202
+ ### Check what will be packed before publishing
203
+
204
+ ```bash
205
+ npm pack --dry-run
206
+ ```
207
+
208
+ This lists every file that would be included in the tarball without actually uploading anything. Make sure `dist/` and `bin/` are listed, and that `src/`, `node_modules/`, and `.harness/` are **not**.
209
+
210
+ ### Patch release checklist
211
+
212
+ ```
213
+ [ ] git pull --rebase origin main
214
+ [ ] npm run build && npm test # must be green
215
+ [ ] npm version patch # bumps package.json + creates git tag
216
+ [ ] git push && git push --tags # CI will publish automatically (see below)
217
+ [ ] npm publish --access public # only if publishing manually
218
+ ```
package/bin/ahk.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import '../dist/cli.js'
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,113 @@
1
+ import { Command } from 'commander';
2
+ import { createRequire } from 'node:module';
3
+ import { runInit } from './commands/init.js';
4
+ import { runBuild } from './commands/build.js';
5
+ import { runHealth } from './commands/health.js';
6
+ import { runStatus } from './commands/status.js';
7
+ import { runSync } from './commands/sync.js';
8
+ import { runServe } from './commands/serve.js';
9
+ import { runMigrate } from './commands/migrate.js';
10
+ import { runExport } from './commands/export.js';
11
+ import { runTaskAdd, runTaskList, runTaskDone } from './commands/task/index.js';
12
+ const require = createRequire(import.meta.url);
13
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
14
+ const pkg = require('../package.json');
15
+ const cwd = process.cwd();
16
+ const program = new Command();
17
+ program
18
+ .name('ahk')
19
+ .description('agent-harness-kit — CLI scaffolding for multi-agent harness systems')
20
+ .version(pkg.version, '-v, --version');
21
+ // ─── init ─────────────────────────────────────────────────────────────────────
22
+ program
23
+ .command('init')
24
+ .description('Scaffold a harness interactively in the current directory')
25
+ .option('--name <name>', 'Project name (skip prompt)')
26
+ .option('--provider <provider>', 'AI provider: claude-code | opencode (skip prompt)')
27
+ .option('--docs <path>', 'Docs folder path (skip prompt)')
28
+ .option('--tasks <adapter>', 'Task adapter: local | jira | linear (skip prompt)')
29
+ .action(async (opts) => {
30
+ await runInit(cwd, opts);
31
+ });
32
+ // ─── build ────────────────────────────────────────────────────────────────────
33
+ program
34
+ .command('build')
35
+ .description('Regenerate AGENTS.md and provider files from agent-harness-kit.config.ts')
36
+ .option('--watch', 'Rebuild on config changes')
37
+ .action(async (opts) => {
38
+ await runBuild(cwd, opts);
39
+ });
40
+ // ─── health ───────────────────────────────────────────────────────────────────
41
+ program
42
+ .command('health')
43
+ .description('Run health.sh and report result')
44
+ .action(async () => {
45
+ await runHealth(cwd);
46
+ });
47
+ // ─── status ───────────────────────────────────────────────────────────────────
48
+ program
49
+ .command('status')
50
+ .description('Show task table and active actions')
51
+ .option('--json', 'Output as JSON')
52
+ .action(async (opts) => {
53
+ await runStatus(cwd, opts);
54
+ });
55
+ // ─── sync ─────────────────────────────────────────────────────────────────────
56
+ program
57
+ .command('sync')
58
+ .description('Sync feature_list.json ↔ SQLite')
59
+ .option('--dry-run', 'Show what would change without applying')
60
+ .option('--direction <direction>', 'in | out | both (default: both)')
61
+ .action(async (opts) => {
62
+ await runSync(cwd, { dryRun: opts['dry-run'], direction: opts.direction });
63
+ });
64
+ // ─── serve ────────────────────────────────────────────────────────────────────
65
+ program
66
+ .command('serve')
67
+ .description('Start the MCP server (stdio)')
68
+ .option('--port <port>', 'Port hint stored in config (default: 3742)', parseInt)
69
+ .action(async (opts) => {
70
+ await runServe(cwd, { port: opts.port });
71
+ });
72
+ // ─── task ─────────────────────────────────────────────────────────────────────
73
+ const task = program.command('task').description('Manage tasks');
74
+ task
75
+ .command('add')
76
+ .description('Add a task interactively')
77
+ .action(async () => {
78
+ await runTaskAdd(cwd);
79
+ });
80
+ task
81
+ .command('list')
82
+ .description('List tasks')
83
+ .option('--status <status>', 'Filter by status: pending | in_progress | done | blocked')
84
+ .option('--json', 'Output as JSON')
85
+ .action(async (opts) => {
86
+ await runTaskList(cwd, opts);
87
+ });
88
+ task
89
+ .command('done <id|slug>')
90
+ .description('Mark a task as done')
91
+ .action(async (idOrSlug) => {
92
+ await runTaskDone(cwd, idOrSlug);
93
+ });
94
+ // ─── migrate ──────────────────────────────────────────────────────────────────
95
+ program
96
+ .command('migrate')
97
+ .description('Migrate provider-specific files to a different provider')
98
+ .option('--to <provider>', 'Target provider: claude-code | opencode')
99
+ .action(async (opts) => {
100
+ await runMigrate(cwd, opts);
101
+ });
102
+ // ─── export ───────────────────────────────────────────────────────────────────
103
+ program
104
+ .command('export')
105
+ .description('Export the database')
106
+ .option('--sql', 'SQL dump')
107
+ .option('--json', 'JSON export of tasks and actions')
108
+ .option('--output <path>', 'Output file path (default: stdout)')
109
+ .action(async (opts) => {
110
+ await runExport(cwd, opts);
111
+ });
112
+ program.parse();
113
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface BuildOptions {
2
+ watch?: boolean;
3
+ }
4
+ export declare function runBuild(cwd: string, opts: BuildOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAc7E"}
@@ -0,0 +1,39 @@
1
+ import * as p from '@clack/prompts';
2
+ import pc from 'picocolors';
3
+ import { watch } from 'node:fs';
4
+ import { loadConfig } from '../core/config.js';
5
+ import { getMaterializer } from '../core/materializer/index.js';
6
+ export async function runBuild(cwd, opts) {
7
+ await buildOnce(cwd);
8
+ if (opts.watch) {
9
+ p.log.info(`Watching agent-harness-kit.config.ts for changes...`);
10
+ watch(cwd, { recursive: false }, async (_, filename) => {
11
+ if (filename?.startsWith('agent-harness-kit.config')) {
12
+ p.log.step('Config changed — rebuilding...');
13
+ await buildOnce(cwd);
14
+ }
15
+ });
16
+ // Keep process alive
17
+ await new Promise(() => { });
18
+ }
19
+ }
20
+ async function buildOnce(cwd) {
21
+ const spinner = p.spinner();
22
+ spinner.start('Loading config...');
23
+ try {
24
+ const config = await loadConfig(cwd);
25
+ spinner.message('Rebuilding files...');
26
+ const materializer = getMaterializer(config.provider);
27
+ await materializer.build(config, cwd);
28
+ spinner.stop(pc.green('Build complete'));
29
+ p.log.success('AGENTS.md');
30
+ p.log.success(`Agent definitions (${config.provider})`);
31
+ p.log.success('MCP config');
32
+ }
33
+ catch (err) {
34
+ spinner.stop(pc.red('Build failed'));
35
+ p.log.error(err instanceof Error ? err.message : String(err));
36
+ process.exit(1);
37
+ }
38
+ }
39
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AACnC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAM/D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAkB;IAC5D,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;IAEpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;QACjE,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YACrD,IAAI,QAAQ,EAAE,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC;gBACrD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;gBAC5C,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QACF,qBAAqB;QACrB,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;IAC3B,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACpC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;QACtC,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACrD,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAC1B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;QACvD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;QACpC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface ExportOptions {
2
+ sql?: boolean;
3
+ json?: boolean;
4
+ output?: string;
5
+ }
6
+ export declare function runExport(cwd: string, opts: ExportOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B/E"}
@@ -0,0 +1,33 @@
1
+ import pc from 'picocolors';
2
+ import { writeFileSync } from 'node:fs';
3
+ import { loadConfig } from '../core/config.js';
4
+ import { openDB } from '../core/db.js';
5
+ export async function runExport(cwd, opts) {
6
+ if (!opts.sql && !opts.json) {
7
+ console.error(pc.red('Specify --sql or --json'));
8
+ process.exit(1);
9
+ }
10
+ const config = await loadConfig(cwd);
11
+ const db = openDB(config, cwd);
12
+ try {
13
+ if (opts.json) {
14
+ const data = db.exportJson();
15
+ const out = JSON.stringify(data, null, 2) + '\n';
16
+ if (opts.output) {
17
+ writeFileSync(opts.output, out, 'utf8');
18
+ console.log(pc.green(`✓ Exported JSON → ${opts.output}`));
19
+ }
20
+ else {
21
+ process.stdout.write(out);
22
+ }
23
+ }
24
+ if (opts.sql) {
25
+ console.error(pc.dim('SQL dump requires direct SQLite access — use: sqlite3 .harness/harness.db .dump'));
26
+ process.exit(1);
27
+ }
28
+ }
29
+ finally {
30
+ db.close();
31
+ }
32
+ }
33
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAQtC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,IAAmB;IAC9D,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE9B,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,EAAE,CAAA;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;YAChD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;gBACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YAC3D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC,CAAA;YACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runHealth(cwd: string): Promise<void>;
2
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/commands/health.ts"],"names":[],"mappings":"AAMA,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC1D"}
@@ -0,0 +1,38 @@
1
+ import pc from 'picocolors';
2
+ import { spawnSync } from 'node:child_process';
3
+ import { existsSync } from 'node:fs';
4
+ import { join, resolve } from 'node:path';
5
+ import { loadConfig } from '../core/config.js';
6
+ export async function runHealth(cwd) {
7
+ let scriptPath;
8
+ try {
9
+ const config = await loadConfig(cwd);
10
+ scriptPath = resolve(cwd, config.health.scriptPath);
11
+ }
12
+ catch {
13
+ scriptPath = join(cwd, 'health.sh');
14
+ }
15
+ if (!existsSync(scriptPath)) {
16
+ console.error(pc.red(`✗ health.sh not found: ${scriptPath}`));
17
+ console.error(' Run ahk init first.');
18
+ process.exit(1);
19
+ }
20
+ const result = spawnSync('bash', [scriptPath], {
21
+ cwd,
22
+ stdio: 'inherit',
23
+ encoding: 'utf8',
24
+ });
25
+ if (result.error) {
26
+ console.error(pc.red(`✗ Failed to run health.sh: ${result.error.message}`));
27
+ process.exit(1);
28
+ }
29
+ if (result.status === 0) {
30
+ console.log(pc.green('✓ Health check passed'));
31
+ process.exit(0);
32
+ }
33
+ else {
34
+ console.error(pc.red(`✗ Health check failed (exit ${result.status ?? 'unknown'})`));
35
+ process.exit(result.status ?? 1);
36
+ }
37
+ }
38
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/commands/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,IAAI,UAAkB,CAAA;IAEtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACpC,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC,CAAA;QAC7D,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE;QAC7C,GAAG;QACH,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAA;IAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC,CAAA;QACnF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { HarnessConfig, Provider } from '../types.js';
2
+ export declare function applyConfigDefaults(params: {
3
+ name: string;
4
+ description: string;
5
+ provider: Provider;
6
+ docsPath: string;
7
+ tasksAdapter: string;
8
+ }): HarnessConfig;
9
+ //# sourceMappingURL=init-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-helpers.d.ts","sourceRoot":"","sources":["../../src/commands/init-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE1D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,aAAa,CAsChB"}
@@ -0,0 +1,40 @@
1
+ export function applyConfigDefaults(params) {
2
+ return {
3
+ provider: params.provider,
4
+ project: {
5
+ name: params.name,
6
+ description: params.description,
7
+ docsPath: params.docsPath,
8
+ agentsMd: './AGENTS.md',
9
+ },
10
+ agents: {
11
+ lead: { instructionsPath: null },
12
+ explorer: { instructionsPath: null, allowedPaths: [params.docsPath, './src'] },
13
+ builder: { instructionsPath: null, writablePaths: ['./src', './tests'] },
14
+ reviewer: { instructionsPath: null },
15
+ custom: [],
16
+ },
17
+ storage: {
18
+ dir: '.harness',
19
+ dbPath: '.harness/harness.db',
20
+ tasks: { adapter: params.tasksAdapter },
21
+ sections: {
22
+ toolsUsed: true,
23
+ filesModified: true,
24
+ result: true,
25
+ blockers: true,
26
+ nextSteps: false,
27
+ },
28
+ markdownFallback: { enabled: true, path: '.harness/current.md' },
29
+ },
30
+ health: {
31
+ scriptPath: './health.sh',
32
+ required: true,
33
+ },
34
+ tools: {
35
+ mcp: { enabled: true, port: 3742 },
36
+ scripts: { enabled: true, outputDir: './.harness/scripts' },
37
+ },
38
+ };
39
+ }
40
+ //# sourceMappingURL=init-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-helpers.js","sourceRoot":"","sources":["../../src/commands/init-helpers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,MAMnC;IACC,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,aAAa;SACxB;QACD,MAAM,EAAE;YACN,IAAI,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;YAChC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;YAC9E,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;YACxE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;YACpC,MAAM,EAAE,EAAE;SACX;QACD,OAAO,EAAE;YACP,GAAG,EAAE,UAAU;YACf,MAAM,EAAE,qBAAqB;YAC7B,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,YAAuB,EAAE;YAClD,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,KAAK;aACjB;YACD,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,EAAE;SACjE;QACD,MAAM,EAAE;YACN,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,IAAI;SACf;QACD,KAAK,EAAE;YACL,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YAClC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE;SAC5D;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ interface InitOptions {
2
+ name?: string;
3
+ provider?: string;
4
+ docs?: string;
5
+ tasks?: string;
6
+ }
7
+ export declare function runInit(cwd: string, flags: InitOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoL5E"}