metaharness 0.4.16 → 0.4.19

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 (58) hide show
  1. package/assets/generated-mcp.mjs +69 -0
  2. package/dist/bin.js +0 -0
  3. package/dist/generated-runtime.d.ts +4 -0
  4. package/dist/generated-runtime.d.ts.map +1 -0
  5. package/dist/generated-runtime.js +75 -0
  6. package/dist/generated-runtime.js.map +1 -0
  7. package/dist/genome-scorers.d.ts.map +1 -1
  8. package/dist/genome-scorers.js +14 -2
  9. package/dist/genome-scorers.js.map +1 -1
  10. package/dist/harness-bin.js +0 -0
  11. package/dist/host-config.d.ts.map +1 -1
  12. package/dist/host-config.js +6 -5
  13. package/dist/host-config.js.map +1 -1
  14. package/dist/index.d.ts +12 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +170 -15
  17. package/dist/index.js.map +1 -1
  18. package/dist/learn.d.ts +12 -0
  19. package/dist/learn.d.ts.map +1 -1
  20. package/dist/learn.js +31 -3
  21. package/dist/learn.js.map +1 -1
  22. package/dist/manifest.d.ts +5 -0
  23. package/dist/manifest.d.ts.map +1 -1
  24. package/dist/manifest.js.map +1 -1
  25. package/dist/mcp-scan.d.ts +4 -0
  26. package/dist/mcp-scan.d.ts.map +1 -1
  27. package/dist/mcp-scan.js +100 -2
  28. package/dist/mcp-scan.js.map +1 -1
  29. package/dist/oia-manifest.d.ts.map +1 -1
  30. package/dist/oia-manifest.js +10 -1
  31. package/dist/oia-manifest.js.map +1 -1
  32. package/dist/plugin-init-cmd.d.ts.map +1 -1
  33. package/dist/plugin-init-cmd.js +1 -0
  34. package/dist/plugin-init-cmd.js.map +1 -1
  35. package/dist/repo-scorecard.d.ts.map +1 -1
  36. package/dist/repo-scorecard.js +22 -2
  37. package/dist/repo-scorecard.js.map +1 -1
  38. package/dist/score.d.ts.map +1 -1
  39. package/dist/score.js +59 -8
  40. package/dist/score.js.map +1 -1
  41. package/dist/subcommands.d.ts.map +1 -1
  42. package/dist/subcommands.js +8 -4
  43. package/dist/subcommands.js.map +1 -1
  44. package/dist/threat-model.d.ts.map +1 -1
  45. package/dist/threat-model.js +16 -5
  46. package/dist/threat-model.js.map +1 -1
  47. package/dist/upgrade-cmd.d.ts.map +1 -1
  48. package/dist/upgrade-cmd.js +28 -18
  49. package/dist/upgrade-cmd.js.map +1 -1
  50. package/dist/upgrade.d.ts +2 -0
  51. package/dist/upgrade.d.ts.map +1 -1
  52. package/dist/upgrade.js +85 -10
  53. package/dist/upgrade.js.map +1 -1
  54. package/dist/writer.d.ts.map +1 -1
  55. package/dist/writer.js +43 -1
  56. package/dist/writer.js.map +1 -1
  57. package/genomes/README.md +1 -1
  58. package/package.json +6 -5
@@ -0,0 +1,69 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Read-only scaffold metadata over MCP stdio. No arbitrary paths, shell or network.
3
+ import { readFileSync, realpathSync } from 'node:fs';
4
+ const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
5
+ const protocols = ['2025-11-25', '2025-06-18', '2025-03-26', '2024-11-05'];
6
+ const tool = { name: 'harness_info', description: 'Read this generated harness name, version and description.',
7
+ inputSchema: { type: 'object', properties: {}, additionalProperties: false },
8
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false } };
9
+
10
+ export function startMcp() {
11
+ let buffer = '';
12
+ let initialized = false;
13
+ const send = message => process.stdout.write(JSON.stringify(message) + '\n');
14
+ const error = (id, code, message) => send({jsonrpc: '2.0', id, error: {code, message}});
15
+ function handle(line) {
16
+ let request;
17
+ try { request = JSON.parse(line); } catch { error(null, -32700, 'Parse error'); return; }
18
+ if (!request || Array.isArray(request) || request.jsonrpc !== '2.0' || typeof request.method !== 'string' ||
19
+ ('id' in request && typeof request.id !== 'string' && typeof request.id !== 'number')) {
20
+ error(null, -32600, 'Invalid request'); return;
21
+ }
22
+ // Notifications have no response, including notifications/initialized.
23
+ if (!('id' in request)) return;
24
+ const {id, method, params} = request;
25
+ let result;
26
+ if (method === 'initialize') {
27
+ if (!params || typeof params.protocolVersion !== 'string' || !params.clientInfo || !params.capabilities) {
28
+ error(id, -32602, 'Invalid initialize parameters'); return;
29
+ }
30
+ initialized = true;
31
+ result = {protocolVersion: protocols.includes(params.protocolVersion) ? params.protocolVersion : protocols[0],
32
+ capabilities: {tools: {}}, serverInfo: {name: pkg.name, version: pkg.version}};
33
+ } else if (method === 'ping') result = {};
34
+ else if (!initialized) { error(id, -32000, 'Initialize first'); return; }
35
+ else if (method === 'tools/list') result = {tools: [tool]};
36
+ else if (method === 'tools/call') {
37
+ const args = params?.arguments === undefined ? {} : params.arguments;
38
+ if (params?.name !== tool.name || !args || typeof args !== 'object' || Array.isArray(args) || Object.keys(args).length) {
39
+ error(id, -32602, 'Only harness_info with empty arguments is supported'); return;
40
+ }
41
+ result = {content: [{type: 'text', text: JSON.stringify({name: pkg.name, version: pkg.version, description: pkg.description})}], isError: false};
42
+ } else { error(id, -32601, 'Method not found'); return; }
43
+ send({jsonrpc: '2.0', id, result});
44
+ }
45
+ process.stdin.setEncoding('utf8');
46
+ process.stdin.on('data', chunk => {
47
+ buffer += chunk;
48
+ // Bound both incomplete and complete messages before JSON parsing.
49
+ while (buffer.includes('\n')) {
50
+ const index = buffer.indexOf('\n');
51
+ if (Buffer.byteLength(buffer.slice(0, index), 'utf8') > 65536) { process.stderr.write('MCP message exceeds 64 KiB\n'); process.exitCode = 1; process.stdin.destroy(); return; }
52
+ const line = buffer.slice(0, index); buffer = buffer.slice(index + 1);
53
+ if (line.trim()) handle(line);
54
+ }
55
+ if (Buffer.byteLength(buffer, 'utf8') > 65536) { process.stderr.write('MCP message exceeds 64 KiB\n'); process.exitCode = 1; process.stdin.destroy(); }
56
+ });
57
+ }
58
+
59
+ // Also launch directly from host configuration; importing from the CLI is inert.
60
+ import { fileURLToPath } from 'node:url';
61
+ const invokedDirectly = (() => {
62
+ if (!process.argv[1]) return false;
63
+ try {
64
+ // Node resolves module symlinks; argv may retain /var rather than
65
+ // /private/var on macOS, or an explicitly symlinked harness directory.
66
+ return realpathSync(process.argv[1]) === realpathSync(fileURLToPath(import.meta.url));
67
+ } catch { return false; }
68
+ })();
69
+ if (invokedDirectly) startMcp();
package/dist/bin.js CHANGED
File without changes
@@ -0,0 +1,4 @@
1
+ import type { RenderedFile } from './walker.js';
2
+ /** Shared creation/upgrade overlay. Preserve project files; also emit plugin-root files. */
3
+ export declare function integrateGeneratedRuntime(files: RenderedFile[], name: string, claude: boolean): void;
4
+ //# sourceMappingURL=generated-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-runtime.d.ts","sourceRoot":"","sources":["../src/generated-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,4FAA4F;AAC5F,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAkEpG"}
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: MIT
2
+ import { readFileSync } from 'node:fs';
3
+ /** Shared creation/upgrade overlay. Preserve project files; also emit plugin-root files. */
4
+ export function integrateGeneratedRuntime(files, name, claude) {
5
+ const put = (path, content) => {
6
+ const old = files.find(f => f.path === path);
7
+ if (old)
8
+ old.content = content;
9
+ else
10
+ files.push({ path, content, rendered: false, unresolved: [] });
11
+ };
12
+ const pkgFile = files.find(f => f.path === 'package.json');
13
+ const pkg = JSON.parse(pkgFile.content);
14
+ // All scaffolds get an executable metadata server, never an npm-name placeholder.
15
+ put('bin/mcp.js', readFileSync(new URL('../assets/generated-mcp.mjs', import.meta.url), 'utf8'));
16
+ const cli = files.find(f => f.path === 'bin/cli.js');
17
+ if (!cli || !cli.content.includes('switch (cmd) {')) {
18
+ throw new Error('Generated CLI is missing its command dispatcher');
19
+ }
20
+ cli.content = cli.content.replace("switch (cmd) {", `switch (cmd) {
21
+ case 'mcp': {
22
+ if (!['start', 'index'].includes(argv[1]) || argv.length !== 2) {
23
+ console.error('Usage: ${name} mcp start'); return 2;
24
+ }
25
+ const { startMcp } = await import('./mcp.js'); startMcp(); return undefined;
26
+ }`)
27
+ // An active stdio server must retain stdin; process.exit would close it immediately.
28
+ .replace('.then((code) => process.exit(code))', '.then((code) => { if (code !== undefined) process.exitCode = code; })')
29
+ .replace(' init boot', ' mcp start serve read-only harness metadata over stdio\\n init boot');
30
+ if (claude) {
31
+ const pluginFile = files.find(f => f.path === '.claude-plugin/plugin.json');
32
+ const plugin = JSON.parse(pluginFile.content);
33
+ plugin.author = { ...plugin.author, name: plugin.author?.name ?? plugin.author?.displayName ?? 'Generated by metaharness' };
34
+ plugin.mcpServers = { [name]: { command: 'node', args: ['${CLAUDE_PLUGIN_ROOT}/bin/mcp.js'] } };
35
+ put('.claude-plugin/plugin.json', JSON.stringify(plugin, null, 2) + '\n');
36
+ // Plugin discovery uses these root directories; .claude/* remains project context.
37
+ for (const file of [...files]) {
38
+ if (/^\.claude\/(commands|skills)\//.test(file.path))
39
+ put(file.path.slice('.claude/'.length), file.content);
40
+ const match = /^src\/agents\/([a-z0-9-]+)\.ts$/.exec(file.path);
41
+ const prompt = /export const SYSTEM_PROMPT = `([\s\S]*?)`/.exec(file.content)?.[1];
42
+ if (match && prompt)
43
+ put(`agents/${match[1]}.md`, `---\nname: ${match[1]}\ndescription: ${JSON.stringify(`Project ${match[1]} for ${name}`)}\n---\n\n${prompt}\n`);
44
+ }
45
+ // Resolve relative commands from the project working directory for project mode.
46
+ const settingsFile = files.find(f => f.path === '.claude/settings.json');
47
+ if (settingsFile) {
48
+ const settings = JSON.parse(settingsFile.content);
49
+ const removedAliases = [];
50
+ for (const [key, server] of Object.entries(settings.mcpServers ?? {})) {
51
+ const entry = server;
52
+ if (entry.command === 'npx' && entry.args?.includes(`${name}@latest`)) {
53
+ if (key === name)
54
+ settings.mcpServers[key] = { command: 'node', args: ['./bin/mcp.js'] };
55
+ else {
56
+ // Templates named nonexistent indexing/alerting services. Do not
57
+ // register the metadata server under names suggesting those tools.
58
+ delete settings.mcpServers[key];
59
+ removedAliases.push(key);
60
+ }
61
+ }
62
+ }
63
+ if (Array.isArray(settings.permissions?.allow)) {
64
+ settings.permissions.allow = settings.permissions.allow.filter((rule) => !removedAliases.some(alias => rule.startsWith(`mcp__${alias}__`)));
65
+ }
66
+ put('.claude/settings.json', JSON.stringify(settings, null, 2) + '\n');
67
+ }
68
+ }
69
+ // Package only generated metadata, never mutable claims, sessions or key material.
70
+ pkg.files = [...new Set([...(pkg.files ?? []), 'bin/**', '.claude-plugin/**',
71
+ 'commands/**', 'skills/**', 'agents/**', '.harness/manifest.json',
72
+ '.harness/manifest.sha256', '.harness/mcp-policy.json'])];
73
+ pkgFile.content = JSON.stringify(pkg, null, 2) + '\n';
74
+ }
75
+ //# sourceMappingURL=generated-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-runtime.js","sourceRoot":"","sources":["../src/generated-runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"genome-scorers.d.ts","sourceRoot":"","sources":["../src/genome-scorers.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIlE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAcvD;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAWtF;AAID,MAAM,MAAM,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEtF,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAQ7E;AAID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAMhE;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAgBrF"}
1
+ {"version":3,"file":"genome-scorers.d.ts","sourceRoot":"","sources":["../src/genome-scorers.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIlE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAcvD;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAuBtF;AAID,MAAM,MAAM,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEtF,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAQ7E;AAID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAMhE;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAgBrF"}
@@ -50,8 +50,20 @@ export function resolveAgentTopology(profile, plan) {
50
50
  const out = new Set();
51
51
  // Maintainer is the floor — every repo gets one.
52
52
  out.add('maintainer');
53
- // Tester if the repo has any test signal (commands or pre-existing CI).
54
- if (profile.testCommands.length > 0 || profile.hasCi)
53
+ // Tester if the repo has REAL test-file evidence or pre-existing CI — not
54
+ // just `testCommands`, which analyze-repo.ts populates from language
55
+ // detection alone (any rust or python repo gets 'cargo test'/'pytest'
56
+ // pushed unconditionally, regardless of whether test files exist; see
57
+ // hasVerifiedTestFiles's doc comment on scoreTestConfidence below, fixed
58
+ // for that sibling scorer by Dream Cycle 2026-08-25 (#229) but left open
59
+ // here until tonight).
60
+ // `npm test` is the one testCommands entry that is NOT language-inferred: it is
61
+ // only pushed when package.json declares a `scripts.test`, i.e. an authored
62
+ // test entry point. Keep trusting it so JS/TS repos with colocated
63
+ // `*.test.ts` files (no top-level test dir, which hasVerifiedTestFiles cannot
64
+ // see) still get a tester.
65
+ const authoredTestScript = profile.testCommands.includes('npm test');
66
+ if (profile.hasVerifiedTestFiles || profile.hasCi || authoredTestScript)
55
67
  out.add('tester');
56
68
  // Security if MCP is enabled or the plan picks a default-deny MCP mode.
57
69
  if (profile.hasMcp || plan.mcp === 'local' || plan.mcp === 'remote')
@@ -1 +1 @@
1
- {"version":3,"file":"genome-scorers.js","sourceRoot":"","sources":["../src/genome-scorers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genome-scorers.js","sourceRoot":"","sources":["../src/genome-scorers.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,2EAA2E;AAC3E,6BAA6B;AAC7B,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,wFAAwF;AACxF,uDAAuD;AACvD,kDAAkD;AAClD,kDAAkD;AAIlD,6EAA6E;AAE7E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAc;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,2EAA2E;IAC3E,mDAAmD;IACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAoB,EAAE,IAAiB;IAC1E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,iDAAiD;IACjD,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACtB,0EAA0E;IAC1E,qEAAqE;IACrE,sEAAsE;IACtE,sEAAsE;IACtE,yEAAyE;IACzE,yEAAyE;IACzE,uBAAuB;IACvB,gFAAgF;IAChF,4EAA4E;IAC5E,mEAAmE;IACnE,8EAA8E;IAC9E,2BAA2B;IAC3B,MAAM,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,KAAK,IAAI,kBAAkB;QAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3F,wEAAwE;IACxE,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ;QAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzF,6DAA6D;IAC7D,IAAI,OAAO,CAAC,KAAK;QAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAWD,MAAM,UAAU,YAAY,CAAC,OAAoB,EAAE,IAAiB;IAClE,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACtE,uBAAuB;IACvB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IACxF,IAAI,UAAU;QAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAoB;IACtD,IAAI,CAAC,OAAO,CAAC,oBAAoB;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,GAAG,GAAG,CAAC;IACZ,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC;QAAE,CAAC,IAAI,GAAG,CAAC;IAC/C,IAAI,OAAO,CAAC,KAAK;QAAE,CAAC,IAAI,GAAG,CAAC;IAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAoB,EAAE,IAAiB;IAC3E,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,gEAAgE;IAChE,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,gEAAgE;IAChE,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,CAAC,IAAI,GAAG,CAAC;IAC3C,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,CAAC,IAAI,GAAG,CAAC,CAAC,YAAY;IAC5D,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW;IAC3D,IAAI,OAAO,CAAC,KAAK;QAAE,CAAC,IAAI,GAAG,CAAC,CAAC,kBAAkB;IAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW;QAAE,CAAC,IAAI,IAAI,CAAC,CAAC,gBAAgB;IACxD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC"}
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"host-config.d.ts","sourceRoot":"","sources":["../src/host-config.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,GAAG,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IAChC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAyDD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,QAAQ,EAAE,CA6J9E"}
1
+ {"version":3,"file":"host-config.d.ts","sourceRoot":"","sources":["../src/host-config.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,GAAG,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IAChC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAyDD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,QAAQ,EAAE,CA8J9E"}
@@ -36,7 +36,7 @@ function mcpServerEntry(cfg) {
36
36
  if (cfg.mcp === 'remote') {
37
37
  return { type: 'http', url: 'https://localhost:8787/mcp', headers: { Authorization: 'Bearer ${HARNESS_MCP_TOKEN}' } };
38
38
  }
39
- return { command: 'npx', args: ['-y', `${cfg.name}@latest`, 'mcp', 'start'] };
39
+ return { command: 'node', args: ['./bin/mcp.js'] };
40
40
  }
41
41
  /** Derive a Claude-Code-style allow/deny posture (mirrors the web UI). */
42
42
  function policyLists(cfg) {
@@ -97,7 +97,7 @@ export function hostConfigFiles(host, cfg) {
97
97
  ? `# ${cfg.name} — MCP disabled at scaffold time.\n`
98
98
  : cfg.mcp === 'remote'
99
99
  ? `[mcp_servers.${cfg.name}]\ntype = "http"\nurl = "https://localhost:8787/mcp"\n`
100
- : `[mcp_servers.${cfg.name}]\ncommand = "npx"\nargs = ["-y", "${cfg.name}@latest", "mcp", "start"]\n`;
100
+ : `[mcp_servers.${cfg.name}]\ncommand = "node"\nargs = ["./bin/mcp.js"]\n`;
101
101
  return [
102
102
  { path: '.codex/config.toml', content: toml },
103
103
  { path: 'AGENTS.md', content: `# ${cfg.name}\n\n${cfg.description}\n\n## Behavioral rules\n\n- Use the harness's MCP tools (\`mcp__${cfg.name}__*\`) for orchestration.\n- Defer destructive operations to the user.\n` },
@@ -114,17 +114,18 @@ export function hostConfigFiles(host, cfg) {
114
114
  // `model:` + `agent.personalities` schema; no name/description/scrub keys.
115
115
  const persona = (cfg.description || `You are ${cfg.name}.`).replace(/[\r\n]+/g, ' ');
116
116
  const files = [
117
- { path: 'cli-config.yaml', content: `# Hermes Agent config for ${cfg.name} — subset of cli-config.yaml.example.\nmodel:\n provider: "auto"\nagent:\n personalities:\n ${yamlKey(cfg.name)}: ${JSON.stringify(persona)}\n` },
117
+ { path: 'cli-config.yaml', content: `# Hermes Agent config for ${cfg.name} — subset of cli-config.yaml.example.\nmodel:\n provider: "auto"\nagent:\n personalities:\n ${yamlKey(cfg.name)}: ${JSON.stringify(persona)}\n${server ? `mcp_servers:\n ${yamlKey(cfg.name)}: ${JSON.stringify(server)}\n` : ''}` },
118
118
  ];
119
119
  if (server)
120
120
  files.push({ path: `optional-mcps/${cfg.name}.json`, content: JSON.stringify({ [cfg.name]: server }, null, 2) + '\n' });
121
+ files.push({ path: 'install-hermes.md', content: `# Installing ${cfg.name} into Hermes\n\nHermes reads \`$HERMES_HOME/config.yaml\` (normally \`~/.hermes/config.yaml\`), not this folder automatically. Copy \`cli-config.yaml\` into a new isolated profile as \`config.yaml\`, or review and merge its personality and \`mcp_servers\` entries into your existing configuration. Preserve existing configuration and credentials. Start Hermes from this harness directory so relative stdio paths resolve; use an absolute server path when launching elsewhere. The optional-mcps export alone does not enable the server.\n` });
121
122
  return files;
122
123
  }
123
124
  case 'openclaw': {
124
125
  // ADR-046 — verified against real openclaw 2026.6.8: MCP nests under
125
126
  // `mcp.servers` with an `enabled` flag (NOT top-level `mcp_servers`);
126
127
  // no top-level allow/deny permissions concept.
127
- const servers = server ? { [cfg.name]: { enabled: true, command: 'npx', args: ['-y', `${cfg.name}@latest`, 'mcp', 'start'] } } : {};
128
+ const servers = server ? { [cfg.name]: { enabled: true, ...server } } : {};
128
129
  return [{ path: '.openclaw/openclaw.json', content: JSON.stringify({ mcp: { servers } }, null, 2) + '\n' }];
129
130
  }
130
131
  case 'rvm': {
@@ -153,7 +154,7 @@ export function hostConfigFiles(host, cfg) {
153
154
  return [
154
155
  { path: '.opencode/opencode.json', content: JSON.stringify({
155
156
  $schema: 'https://opencode.ai/schema/opencode.json',
156
- mcp: server ? { [cfg.name]: { type: 'local', command: ['npx', '-y', `${cfg.name}@latest`, 'mcp', 'start'], enabled: true } } : {},
157
+ mcp: server ? { [cfg.name]: { type: 'local', command: ['node', './bin/mcp.js'], enabled: true } } : {},
157
158
  permission: { edit: cfg.allowFileWrite ? 'allow' : 'ask', bash: { '*': cfg.allowShell ? 'allow' : 'ask', 'rm *': 'deny', 'git push *': 'deny' }, webfetch: 'ask' },
158
159
  }, null, 2) + '\n' },
159
160
  { path: 'install.md', content: `# Installing ${cfg.name} into OpenCode\n\n1. \`opencode auth login\` to set a model provider.\n2. \`cd\` here and run \`opencode\` — the TUI reads \`.opencode/opencode.json\`.\n3. Inside the TUI run \`/mcp\` to verify \`${cfg.name}\` is registered.\n` },
@@ -1 +1 @@
1
- {"version":3,"file":"host-config.js","sourceRoot":"","sources":["../src/host-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-config.js","sourceRoot":"","sources":["../src/host-config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export declare const HOSTS: readonly ["claude-code", "codex", "pi-dev", "hermes", "openclaw", "rvm", "copilot", "opencode", "github-actions", "prime-agent"];
2
2
  export type Host = (typeof HOSTS)[number];
3
+ export declare const METAHARNESS_VERBS: readonly ["analyze", "genome", "score", "weight-eft", "learn", "redblue", "flywheel", "turn-credit", "avo", "proxy"];
4
+ export declare const RESERVED_LOOKS_LIKE_A_COMMAND: Set<string>;
3
5
  export declare const TEMPLATES: readonly ["minimal", "vertical:devops", "vertical:support", "vertical:trading", "vertical:legal", "vertical:research", "vertical:coding", "vertical:business", "vertical:crm", "vertical:marketing", "vertical:advertising", "vertical:ai", "vertical:agentics", "vertical:ruview", "vertical:health", "vertical:education", "vertical:sales", "vertical:gaming", "vertical:repo-maintainer", "vertical:exotic"];
4
6
  export type TemplateId = (typeof TEMPLATES)[number];
5
7
  export interface CatalogEntry {
@@ -85,6 +87,16 @@ export interface ScaffoldResult {
85
87
  manifestPath: string;
86
88
  unresolved: string[];
87
89
  }
90
+ /** Render the same host and security overlays for creation and upgrade. */
91
+ export declare function renderScaffold(opts: ScaffoldOptions): Promise<{
92
+ rendered: import("./walker.js").RenderedFile[];
93
+ vars: {
94
+ name: string;
95
+ description: string;
96
+ host: "claude-code" | "codex" | "pi-dev" | "hermes" | "openclaw" | "rvm" | "copilot" | "opencode" | "github-actions" | "prime-agent";
97
+ };
98
+ hostSet: ("claude-code" | "codex" | "pi-dev" | "hermes" | "openclaw" | "rvm" | "copilot" | "opencode" | "github-actions" | "prime-agent")[];
99
+ }>;
88
100
  export declare function scaffold(opts: ScaffoldOptions): Promise<ScaffoldResult>;
89
101
  /** Try to detect an existing ruflo project at the given path. */
90
102
  export declare function detectRufloProject(dir: string): {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}