@cardor/agent-harness-kit 0.14.0 → 0.15.1

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 (136) hide show
  1. package/bin/ahk.js +1 -1
  2. package/dist/chunk-LQ7SDMK6.js +82 -0
  3. package/dist/chunk-LQ7SDMK6.js.map +1 -0
  4. package/dist/cli.js +1984 -109
  5. package/dist/cli.js.map +1 -1
  6. package/dist/index.js +6 -1
  7. package/dist/index.js.map +1 -1
  8. package/package.json +13 -6
  9. package/dist/cli.d.ts +0 -2
  10. package/dist/cli.d.ts.map +0 -1
  11. package/dist/commands/build.d.ts +0 -6
  12. package/dist/commands/build.d.ts.map +0 -1
  13. package/dist/commands/build.js +0 -39
  14. package/dist/commands/build.js.map +0 -1
  15. package/dist/commands/dashboard.d.ts +0 -7
  16. package/dist/commands/dashboard.d.ts.map +0 -1
  17. package/dist/commands/dashboard.js +0 -27
  18. package/dist/commands/dashboard.js.map +0 -1
  19. package/dist/commands/export.d.ts +0 -8
  20. package/dist/commands/export.d.ts.map +0 -1
  21. package/dist/commands/export.js +0 -33
  22. package/dist/commands/export.js.map +0 -1
  23. package/dist/commands/health.d.ts +0 -2
  24. package/dist/commands/health.d.ts.map +0 -1
  25. package/dist/commands/health.js +0 -78
  26. package/dist/commands/health.js.map +0 -1
  27. package/dist/commands/init-helpers.d.ts +0 -9
  28. package/dist/commands/init-helpers.d.ts.map +0 -1
  29. package/dist/commands/init-helpers.js +0 -40
  30. package/dist/commands/init-helpers.js.map +0 -1
  31. package/dist/commands/init.d.ts +0 -9
  32. package/dist/commands/init.d.ts.map +0 -1
  33. package/dist/commands/init.js +0 -192
  34. package/dist/commands/init.js.map +0 -1
  35. package/dist/commands/migrate.d.ts +0 -6
  36. package/dist/commands/migrate.d.ts.map +0 -1
  37. package/dist/commands/migrate.js +0 -45
  38. package/dist/commands/migrate.js.map +0 -1
  39. package/dist/commands/serve.d.ts +0 -6
  40. package/dist/commands/serve.d.ts.map +0 -1
  41. package/dist/commands/serve.js +0 -13
  42. package/dist/commands/serve.js.map +0 -1
  43. package/dist/commands/status.d.ts +0 -6
  44. package/dist/commands/status.d.ts.map +0 -1
  45. package/dist/commands/status.js +0 -71
  46. package/dist/commands/status.js.map +0 -1
  47. package/dist/commands/sync.d.ts +0 -7
  48. package/dist/commands/sync.d.ts.map +0 -1
  49. package/dist/commands/sync.js +0 -57
  50. package/dist/commands/sync.js.map +0 -1
  51. package/dist/commands/task/add.d.ts +0 -2
  52. package/dist/commands/task/add.d.ts.map +0 -1
  53. package/dist/commands/task/add.js +0 -53
  54. package/dist/commands/task/add.js.map +0 -1
  55. package/dist/commands/task/done.d.ts +0 -2
  56. package/dist/commands/task/done.d.ts.map +0 -1
  57. package/dist/commands/task/done.js +0 -45
  58. package/dist/commands/task/done.js.map +0 -1
  59. package/dist/commands/task/index.d.ts +0 -4
  60. package/dist/commands/task/index.d.ts.map +0 -1
  61. package/dist/commands/task/index.js +0 -4
  62. package/dist/commands/task/index.js.map +0 -1
  63. package/dist/commands/task/list.d.ts +0 -7
  64. package/dist/commands/task/list.d.ts.map +0 -1
  65. package/dist/commands/task/list.js +0 -42
  66. package/dist/commands/task/list.js.map +0 -1
  67. package/dist/core/config.d.ts +0 -5
  68. package/dist/core/config.d.ts.map +0 -1
  69. package/dist/core/config.js +0 -77
  70. package/dist/core/config.js.map +0 -1
  71. package/dist/core/dashboard-server.d.ts +0 -7
  72. package/dist/core/dashboard-server.d.ts.map +0 -1
  73. package/dist/core/dashboard-server.js +0 -223
  74. package/dist/core/dashboard-server.js.map +0 -1
  75. package/dist/core/db.d.ts +0 -57
  76. package/dist/core/db.d.ts.map +0 -1
  77. package/dist/core/db.js +0 -348
  78. package/dist/core/db.js.map +0 -1
  79. package/dist/core/materializer/agent-templates/test123.txt +0 -0
  80. package/dist/core/materializer/claude-code.d.ts +0 -8
  81. package/dist/core/materializer/claude-code.d.ts.map +0 -1
  82. package/dist/core/materializer/claude-code.js +0 -66
  83. package/dist/core/materializer/claude-code.js.map +0 -1
  84. package/dist/core/materializer/index.d.ts +0 -8
  85. package/dist/core/materializer/index.d.ts.map +0 -1
  86. package/dist/core/materializer/index.js +0 -13
  87. package/dist/core/materializer/index.js.map +0 -1
  88. package/dist/core/materializer/mcp-merge.d.ts +0 -3
  89. package/dist/core/materializer/mcp-merge.d.ts.map +0 -1
  90. package/dist/core/materializer/mcp-merge.js +0 -59
  91. package/dist/core/materializer/mcp-merge.js.map +0 -1
  92. package/dist/core/materializer/opencode.d.ts +0 -8
  93. package/dist/core/materializer/opencode.d.ts.map +0 -1
  94. package/dist/core/materializer/opencode.js +0 -59
  95. package/dist/core/materializer/opencode.js.map +0 -1
  96. package/dist/core/materializer/scaffold-utils.d.ts +0 -4
  97. package/dist/core/materializer/scaffold-utils.d.ts.map +0 -1
  98. package/dist/core/materializer/scaffold-utils.js +0 -28
  99. package/dist/core/materializer/scaffold-utils.js.map +0 -1
  100. package/dist/core/materializer/templates.d.ts +0 -33
  101. package/dist/core/materializer/templates.d.ts.map +0 -1
  102. package/dist/core/materializer/templates.js +0 -187
  103. package/dist/core/materializer/templates.js.map +0 -1
  104. package/dist/core/mcp-server.d.ts +0 -3
  105. package/dist/core/mcp-server.d.ts.map +0 -1
  106. package/dist/core/mcp-server.js +0 -264
  107. package/dist/core/mcp-server.js.map +0 -1
  108. package/dist/core/server-types.d.ts +0 -67
  109. package/dist/core/server-types.d.ts.map +0 -1
  110. package/dist/core/server-types.js +0 -3
  111. package/dist/core/server-types.js.map +0 -1
  112. package/dist/core/sqlite-adapter.d.ts +0 -14
  113. package/dist/core/sqlite-adapter.d.ts.map +0 -1
  114. package/dist/core/sqlite-adapter.js +0 -20
  115. package/dist/core/sqlite-adapter.js.map +0 -1
  116. package/dist/dashboard-dist/assets/index-Cdm4QZ8j.js +0 -9
  117. package/dist/dashboard-dist/assets/index-DJInh0UZ.js +0 -9
  118. package/dist/dashboard-dist/assets/index-TQMzdmXs.css +0 -1
  119. package/dist/index.d.ts +0 -3
  120. package/dist/index.d.ts.map +0 -1
  121. package/dist/tests/db.test.d.ts +0 -2
  122. package/dist/tests/db.test.d.ts.map +0 -1
  123. package/dist/tests/db.test.js +0 -172
  124. package/dist/tests/db.test.js.map +0 -1
  125. package/dist/tests/slugify.test.d.ts +0 -2
  126. package/dist/tests/slugify.test.d.ts.map +0 -1
  127. package/dist/tests/slugify.test.js +0 -19
  128. package/dist/tests/slugify.test.js.map +0 -1
  129. package/dist/tests/templates.test.d.ts +0 -2
  130. package/dist/tests/templates.test.d.ts.map +0 -1
  131. package/dist/tests/templates.test.js +0 -71
  132. package/dist/tests/templates.test.js.map +0 -1
  133. package/dist/types.d.ts +0 -141
  134. package/dist/types.d.ts.map +0 -1
  135. package/dist/types.js +0 -3
  136. package/dist/types.js.map +0 -1
@@ -1,78 +0,0 @@
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
- function checkLine(label, ok, message, indent = 0) {
7
- const prefix = label ? pc.cyan(`[${label}] `) : ' '.repeat(indent);
8
- const icon = ok ? pc.green('✓') : pc.red('✗');
9
- console.log(prefix + icon + ' ' + (ok ? pc.green(message) : pc.red(message)));
10
- }
11
- export async function runHealth(cwd) {
12
- let config;
13
- try {
14
- config = await loadConfig(cwd);
15
- }
16
- catch {
17
- console.error(pc.red('✗ No config found. Run: ahk init'));
18
- process.exit(1);
19
- }
20
- let allOk = true;
21
- // ─── [checking DB] ──────────────────────────────────────────────────────────
22
- const dbPath = resolve(cwd, config.storage.dbPath);
23
- const dbOk = existsSync(dbPath);
24
- checkLine('checking DB', dbOk, `${config.storage.dbPath} reachable`);
25
- if (!dbOk)
26
- allOk = false;
27
- // ─── [checking agents] ──────────────────────────────────────────────────────
28
- const agentsDir = config.provider === 'claude-code' ? '.claude/agents' : '.opencode/agents';
29
- const agentNames = ['lead', 'explorer', 'builder', 'reviewer'];
30
- const agentsLabelWidth = '[checking agents] '.length;
31
- for (let i = 0; i < agentNames.length; i++) {
32
- const name = agentNames[i];
33
- const agentPath = join(cwd, agentsDir, `${name}.md`);
34
- const ok = existsSync(agentPath);
35
- checkLine(i === 0 ? 'checking agents' : null, ok, `${name}.md present`, agentsLabelWidth);
36
- if (!ok)
37
- allOk = false;
38
- }
39
- // ─── [checking MCP] ─────────────────────────────────────────────────────────
40
- if (config.tools.mcp.enabled) {
41
- const mcpFile = config.provider === 'claude-code' ? '.claude/mcp.json' : 'opencode.json';
42
- const mcpPath = resolve(cwd, mcpFile);
43
- const mcpOk = existsSync(mcpPath);
44
- checkLine('checking MCP', mcpOk, `${mcpFile} valid`);
45
- if (!mcpOk)
46
- allOk = false;
47
- }
48
- if (!allOk) {
49
- console.log('');
50
- console.error(pc.red('✗ Harness checks failed — fix the above before running health.sh'));
51
- process.exit(1);
52
- }
53
- // ─── Run health.sh ──────────────────────────────────────────────────────────
54
- const scriptPath = resolve(cwd, config.health.scriptPath);
55
- if (!existsSync(scriptPath)) {
56
- console.error(pc.red(`✗ health.sh not found: ${scriptPath}`));
57
- console.error(' Run ahk init first.');
58
- process.exit(1);
59
- }
60
- const result = spawnSync('bash', [scriptPath], {
61
- cwd,
62
- stdio: 'inherit',
63
- encoding: 'utf8',
64
- });
65
- if (result.error) {
66
- console.error(pc.red(`✗ Failed to run health.sh: ${result.error.message}`));
67
- process.exit(1);
68
- }
69
- if (result.status === 0) {
70
- console.log(pc.green('✓ Health check passed'));
71
- process.exit(0);
72
- }
73
- else {
74
- console.error(pc.red(`✗ Health check failed (exit ${result.status ?? 'unknown'})`));
75
- process.exit(result.status ?? 1);
76
- }
77
- }
78
- //# sourceMappingURL=health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/commands/health.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,40 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,9 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,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,CA4K5E"}
@@ -1,192 +0,0 @@
1
- import * as p from '@clack/prompts';
2
- import pc from 'picocolors';
3
- import { mkdirSync, writeFileSync } from 'node:fs';
4
- import { join } from 'node:path';
5
- import { getMaterializer } from '../core/materializer/index.js';
6
- import { openDB } from '../core/db.js';
7
- import { configTs } from '../core/materializer/templates.js';
8
- import { slugify } from '../core/materializer/scaffold-utils.js';
9
- import { applyConfigDefaults } from './init-helpers.js';
10
- export async function runInit(cwd, flags) {
11
- p.intro(pc.bold('agent-harness-kit — harness scaffolding'));
12
- // ─── Project name ────────────────────────────────────────────────────────
13
- let name;
14
- if (flags.name) {
15
- name = flags.name;
16
- }
17
- else {
18
- const val = await p.text({
19
- message: 'Project name',
20
- placeholder: 'my-app',
21
- validate: (v) => (v.trim() ? undefined : 'Project name is required'),
22
- });
23
- if (p.isCancel(val)) {
24
- p.cancel('Cancelled.');
25
- process.exit(0);
26
- }
27
- name = val;
28
- }
29
- // ─── Description ─────────────────────────────────────────────────────────
30
- const descVal = await p.text({
31
- message: 'Short description (shown to agents as context)',
32
- placeholder: 'A REST API for managing notes',
33
- });
34
- if (p.isCancel(descVal)) {
35
- p.cancel('Cancelled.');
36
- process.exit(0);
37
- }
38
- const description = descVal.trim() || name;
39
- // ─── Provider ─────────────────────────────────────────────────────────────
40
- let provider;
41
- if (flags.provider && ['claude-code', 'opencode'].includes(flags.provider)) {
42
- provider = flags.provider;
43
- }
44
- else {
45
- const val = await p.select({
46
- message: 'AI provider',
47
- options: [
48
- { value: 'claude-code', label: 'Claude Code' },
49
- { value: 'opencode', label: 'OpenCode' },
50
- ],
51
- });
52
- if (p.isCancel(val)) {
53
- p.cancel('Cancelled.');
54
- process.exit(0);
55
- }
56
- provider = val;
57
- }
58
- // ─── Docs path ────────────────────────────────────────────────────────────
59
- let docsPath;
60
- if (flags.docs) {
61
- docsPath = flags.docs;
62
- }
63
- else {
64
- const val = await p.text({
65
- message: 'Docs folder path (agents will search here)',
66
- initialValue: './docs',
67
- });
68
- if (p.isCancel(val)) {
69
- p.cancel('Cancelled.');
70
- process.exit(0);
71
- }
72
- docsPath = val.trim() || './docs';
73
- }
74
- // ─── Task adapter ─────────────────────────────────────────────────────────
75
- let tasksAdapter;
76
- if (flags.tasks && ['local', 'jira', 'linear'].includes(flags.tasks)) {
77
- tasksAdapter = flags.tasks;
78
- }
79
- else {
80
- const val = await p.select({
81
- message: 'Task adapter',
82
- options: [
83
- { value: 'local', label: 'Local (feature_list.json)' },
84
- { value: 'jira', label: 'Jira (coming soon)' },
85
- { value: 'linear', label: 'Linear (coming soon)' },
86
- ],
87
- });
88
- if (p.isCancel(val)) {
89
- p.cancel('Cancelled.');
90
- process.exit(0);
91
- }
92
- tasksAdapter = val;
93
- }
94
- // ─── Optional first task ──────────────────────────────────────────────────
95
- const addFirstTask = await p.confirm({ message: 'Add your first task now?', initialValue: true });
96
- if (p.isCancel(addFirstTask)) {
97
- p.cancel('Cancelled.');
98
- process.exit(0);
99
- }
100
- let firstTask;
101
- if (addFirstTask) {
102
- const titleVal = await p.text({
103
- message: 'Task title',
104
- validate: (v) => (v.trim() ? undefined : 'Title is required'),
105
- });
106
- if (p.isCancel(titleVal)) {
107
- p.cancel('Cancelled.');
108
- process.exit(0);
109
- }
110
- const taskTitle = titleVal.trim();
111
- const taskDescVal = await p.text({
112
- message: 'Task description',
113
- placeholder: 'What and why',
114
- });
115
- if (p.isCancel(taskDescVal)) {
116
- p.cancel('Cancelled.');
117
- process.exit(0);
118
- }
119
- const taskDesc = taskDescVal.trim();
120
- const acceptance = [];
121
- p.log.info('Acceptance criteria — one per line, empty line to finish');
122
- while (true) {
123
- const criterionVal = await p.text({
124
- message: '>',
125
- placeholder: 'Criterion (or press Enter to finish)',
126
- });
127
- if (p.isCancel(criterionVal) || !criterionVal.trim())
128
- break;
129
- acceptance.push(criterionVal.trim());
130
- }
131
- firstTask = { title: taskTitle, description: taskDesc, acceptance };
132
- }
133
- // ─── Scaffold ─────────────────────────────────────────────────────────────
134
- const spinner = p.spinner();
135
- spinner.start('Scaffolding...');
136
- try {
137
- const config = applyConfigDefaults({ name, description, provider, docsPath, tasksAdapter });
138
- const materializer = getMaterializer(provider);
139
- // Write config file
140
- const configContent = configTs({
141
- name,
142
- description,
143
- provider,
144
- docsPath,
145
- tasksAdapter,
146
- port: config.tools.mcp.port,
147
- });
148
- writeFileSync(join(cwd, 'agent-harness-kit.config.ts'), configContent, 'utf8');
149
- // Create .harness dir
150
- mkdirSync(join(cwd, config.storage.dir), { recursive: true });
151
- // Initialize SQLite DB
152
- const db = openDB(config, cwd);
153
- // Scaffold provider-specific files
154
- await materializer.scaffold(config, { cwd, firstTask });
155
- // Seed first task into DB if provided
156
- if (firstTask) {
157
- const slug = slugify(firstTask.title);
158
- db.addTask({
159
- slug,
160
- title: firstTask.title,
161
- description: firstTask.description,
162
- acceptance: firstTask.acceptance,
163
- });
164
- }
165
- db.close();
166
- spinner.stop('');
167
- }
168
- catch (err) {
169
- spinner.stop('Failed');
170
- p.log.error(err instanceof Error ? err.message : String(err));
171
- process.exit(1);
172
- }
173
- // ─── Summary ──────────────────────────────────────────────────────────────
174
- const agentsDir = provider === 'claude-code' ? '.claude/agents/' : '.opencode/agents/';
175
- const mcpFile = provider === 'claude-code' ? '.claude/mcp.json' : './opencode/opencode.json';
176
- console.log('');
177
- console.log(pc.green('✓ agent-harness-kit.config.ts'));
178
- console.log(pc.green('✓ AGENTS.md'));
179
- console.log(pc.green('✓ health.sh'));
180
- console.log(pc.green('✓ .harness/harness.db'));
181
- console.log(pc.green('✓ .harness/current.md'));
182
- console.log(pc.green(`✓ ${agentsDir}lead.md`));
183
- console.log(pc.green(`✓ ${agentsDir}explorer.md`));
184
- console.log(pc.green(`✓ ${agentsDir}builder.md`));
185
- console.log(pc.green(`✓ ${agentsDir}reviewer.md`));
186
- console.log(pc.green(`✓ ${mcpFile}`));
187
- console.log(pc.green('✓ .gitignore entries added'));
188
- console.log('');
189
- console.log(pc.cyan('→') + ` Edit ${pc.cyan('health.sh')} with your project checks`);
190
- console.log(pc.cyan('→') + ` ${pc.cyan('ahk task add')} to queue work for agents`);
191
- }
192
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- interface MigrateOptions {
2
- to?: string;
3
- }
4
- export declare function runMigrate(cwd: string, opts: MigrateOptions): Promise<void>;
5
- export {};
6
- //# sourceMappingURL=migrate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAMA,UAAU,cAAc;IACtB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCjF"}
@@ -1,45 +0,0 @@
1
- import * as p from '@clack/prompts';
2
- import pc from 'picocolors';
3
- import { loadConfig } from '../core/config.js';
4
- import { getMaterializer } from '../core/materializer/index.js';
5
- export async function runMigrate(cwd, opts) {
6
- const config = await loadConfig(cwd);
7
- let target;
8
- if (opts.to && ['claude-code', 'opencode'].includes(opts.to)) {
9
- target = opts.to;
10
- }
11
- else {
12
- const val = await p.select({
13
- message: 'Migrate to provider',
14
- options: [
15
- { value: 'claude-code', label: 'Claude Code' },
16
- { value: 'opencode', label: 'OpenCode' },
17
- ],
18
- });
19
- if (p.isCancel(val)) {
20
- p.cancel('Cancelled.');
21
- process.exit(0);
22
- }
23
- target = val;
24
- }
25
- if (target === config.provider) {
26
- console.log(pc.dim(`Already on ${target} — nothing to migrate.`));
27
- return;
28
- }
29
- const spinner = p.spinner();
30
- spinner.start(`Migrating from ${config.provider} to ${target}...`);
31
- try {
32
- // Scaffold the new provider's files
33
- const targetMaterializer = getMaterializer(target);
34
- await targetMaterializer.build(config, cwd);
35
- spinner.stop(pc.green(`Migrated to ${target}`));
36
- p.log.warn(`Update agent-harness-kit.config.ts: set provider: '${target}'`);
37
- p.log.warn(`Then run: ahk build`);
38
- }
39
- catch (err) {
40
- spinner.stop(pc.red('Migration failed'));
41
- p.log.error(err instanceof Error ? err.message : String(err));
42
- process.exit(1);
43
- }
44
- }
45
- //# sourceMappingURL=migrate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AACnC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAO/D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAoB;IAChE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IAEpC,IAAI,MAAgB,CAAA;IACpB,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7D,MAAM,GAAG,IAAI,CAAC,EAAc,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;gBAC9C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;aACzC;SACF,CAAC,CAAA;QACF,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QAChE,MAAM,GAAG,GAAe,CAAA;IAC1B,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,MAAM,wBAAwB,CAAC,CAAC,CAAA;QACjE,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;IAC3B,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,QAAQ,OAAO,MAAM,KAAK,CAAC,CAAA;IAElE,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAE3C,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC,CAAA;QAC/C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sDAAsD,MAAM,GAAG,CAAC,CAAA;QAC3E,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;QACxC,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"}
@@ -1,6 +0,0 @@
1
- interface ServeOptions {
2
- port?: number;
3
- }
4
- export declare function runServe(cwd: string, opts: ServeOptions): Promise<void>;
5
- export {};
6
- //# sourceMappingURL=serve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAY7E"}
@@ -1,13 +0,0 @@
1
- import { loadConfig } from '../core/config.js';
2
- import { startMcpServer } from '../core/mcp-server.js';
3
- export async function runServe(cwd, opts) {
4
- const config = await loadConfig(cwd);
5
- if (opts.port) {
6
- config.tools.mcp.port = opts.port;
7
- }
8
- // MCP server runs on stdio — do not write to stdout after this point.
9
- // Stderr is used for diagnostics.
10
- process.stderr.write(`[agent-harness-kit] MCP server starting (stdio)\n`);
11
- await startMcpServer(config, cwd);
12
- }
13
- //# sourceMappingURL=serve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAMtD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAkB;IAC5D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;IAEpC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACnC,CAAC;IAED,sEAAsE;IACtE,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;IAEzE,MAAM,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AACnC,CAAC"}
@@ -1,6 +0,0 @@
1
- interface StatusOptions {
2
- json?: boolean;
3
- }
4
- export declare function runStatus(cwd: string, opts: StatusOptions): Promise<void>;
5
- export {};
6
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AASD,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE/E"}
@@ -1,71 +0,0 @@
1
- import Table from 'cli-table3';
2
- import pc from 'picocolors';
3
- import { loadConfig } from '../core/config.js';
4
- import { openDB } from '../core/db.js';
5
- const STATUS_COLOR = {
6
- pending: (s) => pc.dim(s),
7
- in_progress: (s) => pc.cyan(s),
8
- done: (s) => pc.green(s),
9
- blocked: (s) => pc.red(s),
10
- };
11
- export async function runStatus(cwd, opts) {
12
- const config = await loadConfig(cwd);
13
- const db = openDB(config, cwd);
14
- try {
15
- const tasks = db.getTasks();
16
- const summary = db.getStatusSummary();
17
- if (opts.json) {
18
- const actions = tasks.map((t) => ({
19
- ...t,
20
- actions: db.getActionsForTask(t.id),
21
- acceptance: db.getTaskAcceptance(t.id),
22
- }));
23
- console.log(JSON.stringify({ tasks: actions, summary }, null, 2));
24
- return;
25
- }
26
- if (tasks.length === 0) {
27
- console.log(pc.dim('No tasks yet. Run: ahk task add'));
28
- return;
29
- }
30
- const table = new Table({
31
- head: ['ID', 'Slug', 'Title', 'Status', 'Assigned', 'Started'].map((h) => pc.bold(h)),
32
- style: { head: [], border: [] },
33
- });
34
- for (const t of tasks) {
35
- const colorFn = STATUS_COLOR[t.status] ?? ((s) => s);
36
- table.push([
37
- String(t.id),
38
- t.slug,
39
- t.title.slice(0, 40),
40
- colorFn(t.status),
41
- t.assigned_to ?? '—',
42
- t.started_at ? t.started_at.slice(0, 10) : '—',
43
- ]);
44
- }
45
- console.log(table.toString());
46
- // Active actions
47
- const inProgress = tasks.filter((t) => t.status === 'in_progress');
48
- if (inProgress.length > 0) {
49
- console.log('');
50
- console.log(pc.bold('Active actions:'));
51
- for (const t of inProgress) {
52
- const actions = db.getActionsForTask(t.id);
53
- const active = actions.filter((a) => a.status === 'in_progress');
54
- for (const a of active) {
55
- console.log(` ${pc.cyan(a.agent.padEnd(10))} → task #${t.id} ${t.slug}`);
56
- }
57
- }
58
- }
59
- // Summary line
60
- console.log('');
61
- const parts = summary.map((s) => {
62
- const fn = STATUS_COLOR[s.status] ?? ((x) => x);
63
- return `${fn(s.status)}: ${s.total}`;
64
- });
65
- console.log(pc.dim('Tasks — ') + parts.join(pc.dim(' | ')));
66
- }
67
- finally {
68
- db.close();
69
- }
70
- }
71
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- interface SyncOptions {
2
- dryRun?: boolean;
3
- direction?: 'in' | 'out' | 'both';
4
- }
5
- export declare function runSync(cwd: string, opts: SyncOptions): Promise<void>;
6
- export {};
7
- //# sourceMappingURL=sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAA;CAClC;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB3E"}
@@ -1,57 +0,0 @@
1
- import pc from 'picocolors';
2
- import { existsSync, readFileSync } from 'node:fs';
3
- import { join, resolve } from 'node:path';
4
- import { loadConfig } from '../core/config.js';
5
- import { openDB } from '../core/db.js';
6
- export async function runSync(cwd, opts) {
7
- const config = await loadConfig(cwd);
8
- const direction = opts.direction ?? 'both';
9
- const featureListPath = resolve(join(cwd, config.storage.dir, 'feature_list.json'));
10
- const db = openDB(config, cwd);
11
- try {
12
- if (direction === 'in' || direction === 'both') {
13
- await syncIn(featureListPath, db, opts.dryRun ?? false);
14
- }
15
- if (direction === 'out' || direction === 'both') {
16
- syncOut(db, cwd, opts.dryRun ?? false);
17
- }
18
- }
19
- finally {
20
- db.close();
21
- }
22
- }
23
- async function syncIn(featureListPath, db, dryRun) {
24
- if (!existsSync(featureListPath)) {
25
- console.log(pc.dim(`feature_list.json not found at ${featureListPath} — skipping in-sync`));
26
- return;
27
- }
28
- let seeds;
29
- try {
30
- seeds = JSON.parse(readFileSync(featureListPath, 'utf8'));
31
- }
32
- catch (err) {
33
- console.error(pc.red(`Failed to parse feature_list.json: ${err}`));
34
- process.exit(1);
35
- }
36
- if (dryRun) {
37
- console.log(pc.bold('Dry run — in-sync (feature_list.json → SQLite):'));
38
- for (const t of seeds) {
39
- const existing = db.getTaskBySlug(t.slug);
40
- console.log(` ${existing ? pc.dim('skip') : pc.green('add ')} ${t.slug}`);
41
- }
42
- return;
43
- }
44
- const result = db.syncFromFeatureList(seeds);
45
- console.log(pc.green(`✓ In-sync: ${result.added} added, ${result.skipped} already existed`));
46
- }
47
- function syncOut(db, cwd, dryRun) {
48
- if (dryRun) {
49
- const tasks = db.getTasks();
50
- console.log(pc.bold('Dry run — out-sync (SQLite → feature_list.json):'));
51
- console.log(` ${tasks.length} tasks would be written`);
52
- return;
53
- }
54
- db.writeFeatureList(cwd);
55
- console.log(pc.green('✓ Out-sync: feature_list.json updated'));
56
- }
57
- //# sourceMappingURL=sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function runTaskAdd(cwd: string): Promise<void>;
2
- //# sourceMappingURL=add.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/task/add.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C3D"}