harnessed 3.9.12 → 3.9.14

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/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  // package.json
2
2
  var package_default = {
3
- version: "3.9.12"};
3
+ version: "3.9.14"};
4
4
 
5
5
  // src/index.ts
6
6
  var VERSION = package_default.version;
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,QAgGb,CAAA;;;AC7FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"3.9.12\",\n \"description\": \"AI coding harness package manager + composition orchestrator\",\n \"type\": \"module\",\n \"license\": \"Apache-2.0\",\n \"author\": \"easyinplay\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/easyinplay/harnessed.git\"\n },\n \"homepage\": \"https://github.com/easyinplay/harnessed#readme\",\n \"bugs\": \"https://github.com/easyinplay/harnessed/issues\",\n \"keywords\": [\n \"claude-code\",\n \"ai-harness\",\n \"package-manager\",\n \"composition\",\n \"skill-pack\",\n \"mcp\",\n \"orchestrator\"\n ],\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"packageManager\": \"pnpm@10.12.0\",\n \"bin\": {\n \"harnessed\": \"./dist/cli.mjs\"\n },\n \"main\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./schemas\": {\n \"types\": \"./dist/schemas/index.d.ts\",\n \"import\": \"./dist/schemas/index.mjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"manifests\",\n \"messages\",\n \"workflows\",\n \"routing\",\n \"config-templates\",\n \"schemas\",\n \"README.md\",\n \"LICENSE\",\n \"NOTICE\",\n \"THIRD-PARTY-NOTICES.md\"\n ],\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"build\": \"tsc --noEmit && tsup\",\n \"build:schema\": \"node ./scripts/build-schema.mjs\",\n \"validate:schema\": \"node ./scripts/validate-schema.mjs\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run --passWithNoTests\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage --passWithNoTests\",\n \"bench\": \"vitest bench --run\",\n \"lint\": \"biome check .\",\n \"lint:fix\": \"biome check --write .\",\n \"format\": \"biome format --write .\"\n },\n \"dependencies\": {\n \"@anthropic-ai/claude-agent-sdk\": \"0.3.142\",\n \"@clack/prompts\": \"^0.10.1\",\n \"@sinclair/typebox\": \"^0.34.49\",\n \"ajv\": \"^8.20.0\",\n \"ajv-errors\": \"^3.0.0\",\n \"ajv-formats\": \"^3.0.1\",\n \"commander\": \"^13.0.0\",\n \"diff\": \"^9.0.0\",\n \"expr-eval\": \"^2.0.2\",\n \"picocolors\": \"^1.1.1\",\n \"proper-lockfile\": \"^4.1.2\",\n \"yaml\": \"^2.9.0\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"^2.0.0\",\n \"@types/node\": \"^22.10.0\",\n \"@types/proper-lockfile\": \"^4.1.4\",\n \"@vitest/coverage-v8\": \"^4.0.0\",\n \"tsup\": \"^8.3.0\",\n \"typescript\": \"^5.6.0\",\n \"vitest\": \"^4.0.0\"\n },\n \"pnpm\": {\n \"onlyBuiltDependencies\": [\n \"esbuild\"\n ]\n }\n}\n","// Main library entry — re-exports public APIs.\n// phase 1.1 batch 1: skeleton only; schema validator wired in batch 2 (T3+).\n\nimport pkg from '../package.json' with { type: 'json' }\n\nexport const VERSION = pkg.version\n"]}
1
+ {"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,QAgGb,CAAA;;;AC7FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"3.9.14\",\n \"description\": \"AI coding harness package manager + composition orchestrator\",\n \"type\": \"module\",\n \"license\": \"Apache-2.0\",\n \"author\": \"easyinplay\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/easyinplay/harnessed.git\"\n },\n \"homepage\": \"https://github.com/easyinplay/harnessed#readme\",\n \"bugs\": \"https://github.com/easyinplay/harnessed/issues\",\n \"keywords\": [\n \"claude-code\",\n \"ai-harness\",\n \"package-manager\",\n \"composition\",\n \"skill-pack\",\n \"mcp\",\n \"orchestrator\"\n ],\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"packageManager\": \"pnpm@10.12.0\",\n \"bin\": {\n \"harnessed\": \"./dist/cli.mjs\"\n },\n \"main\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./schemas\": {\n \"types\": \"./dist/schemas/index.d.ts\",\n \"import\": \"./dist/schemas/index.mjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"manifests\",\n \"messages\",\n \"workflows\",\n \"routing\",\n \"config-templates\",\n \"schemas\",\n \"README.md\",\n \"LICENSE\",\n \"NOTICE\",\n \"THIRD-PARTY-NOTICES.md\"\n ],\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"build\": \"tsc --noEmit && tsup\",\n \"build:schema\": \"node ./scripts/build-schema.mjs\",\n \"validate:schema\": \"node ./scripts/validate-schema.mjs\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run --passWithNoTests\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage --passWithNoTests\",\n \"bench\": \"vitest bench --run\",\n \"lint\": \"biome check .\",\n \"lint:fix\": \"biome check --write .\",\n \"format\": \"biome format --write .\"\n },\n \"dependencies\": {\n \"@anthropic-ai/claude-agent-sdk\": \"0.3.142\",\n \"@clack/prompts\": \"^0.10.1\",\n \"@sinclair/typebox\": \"^0.34.49\",\n \"ajv\": \"^8.20.0\",\n \"ajv-errors\": \"^3.0.0\",\n \"ajv-formats\": \"^3.0.1\",\n \"commander\": \"^13.0.0\",\n \"diff\": \"^9.0.0\",\n \"expr-eval\": \"^2.0.2\",\n \"picocolors\": \"^1.1.1\",\n \"proper-lockfile\": \"^4.1.2\",\n \"yaml\": \"^2.9.0\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"^2.0.0\",\n \"@types/node\": \"^22.10.0\",\n \"@types/proper-lockfile\": \"^4.1.4\",\n \"@vitest/coverage-v8\": \"^4.0.0\",\n \"tsup\": \"^8.3.0\",\n \"typescript\": \"^5.6.0\",\n \"vitest\": \"^4.0.0\"\n },\n \"pnpm\": {\n \"onlyBuiltDependencies\": [\n \"esbuild\"\n ]\n }\n}\n","// Main library entry — re-exports public APIs.\n// phase 1.1 batch 1: skeleton only; schema validator wired in batch 2 (T3+).\n\nimport pkg from '../package.json' with { type: 'json' }\n\nexport const VERSION = pkg.version\n"]}
@@ -1,92 +1,92 @@
1
1
  {
2
- "setup.workflows_not_found": "错误: 未在 {{path}} 找到 workflows 目录",
3
- "setup.nothing_to_install": "setup: 未发现带 SKILL.md workflow 目录 无内容可安装",
4
- "setup.dry_run.header": "[dry-run] setup 将向 {{path}} 安装 {{count}} 个 workflow:",
5
- "setup.dry_run.run_hint": " 去掉 --dry-run 以真正执行",
6
- "setup.copy_failed": " 错误: 复制 {{name}} 失败: {{message}}",
7
- "setup.step_a_complete": "\nStep A 完成: {{count}} workflow skill 已安装到 {{path}}",
8
- "setup.step_a_render.complete": " [A.5] 已在 {{count}}/{{total}} 个 SKILL.md 中渲染 capability 占位符",
9
- "setup.step_a_render.warnings_header": " [A.5] 警告 部分 capability cmd 未完全 resolve:",
10
- "setup.step_c.created": " [C] 已创建 {{path}} 并启用 Agent Teams",
11
- "setup.step_c.already_enabled": " [C] Agent Teams 已启用 ({{path}})",
12
- "setup.step_c.enabled_backup": " [C] 已在 {{path}} 启用 Agent Teams (备份保存到 → {{backupPath}})",
13
- "setup.step_c.skipped": " [C] Agent Teams 启用跳过: {{message}}",
14
- "setup.step_d.created": " [D] 已创建 {{path}} 并写入 env.HARNESSED_USER_LANG={{lang}}",
15
- "setup.step_d.already_set": " [D] {{path}} 中 env.HARNESSED_USER_LANG={{lang}} 已存在 — 保留 user 覆盖值",
16
- "setup.step_d.enabled_backup": " [D] 已在 {{path}} 写入 env.HARNESSED_USER_LANG={{lang}} (备份保存到 → {{backupPath}})",
17
- "setup.step_d.skipped": " [D] 用户语言写入跳过: {{message}}",
18
- "setup.step_b_complete": "Step B 完成: {{installed}} manifest 已安装 / {{already}} 已存在 / {{skipped}} 跳过 (用户取消 prompt) / {{failed}} 失败 [parallel {{seconds}}s]",
19
- "setup.complete": "\nsetup 完成: {{skills}} workflow skill + {{manifests}} base manifest 已配置",
20
- "setup.mcp_hint": "\nMCP server 已配置。在 Claude Code 里跑 `/mcp` 验证各 server 连接状态。如显示 disconnected,重启 Claude Code 或检查 MCP 命令规范。",
21
- "setup.bundled_summary": "\n✓ harnessed v3.0 三层栈方法论 bundled — 23 workflows (4 master + 18 sub + 1 standalone) + 6 disciplines + 10 judgments + ~83 capabilities 就绪",
22
- "setup.bundled_location": " workflows 位于 <packageRoot>/workflows/ (Pure bundled, 不走 user-dir override per D-01)",
23
- "setup.doctor_hint": "\n💡 跑 `harnessed doctor` 验证环境配置 (12 项预检: Node 版本 / MCP scope / jq / bash flavor / origin URL / gstack 前缀 / deprecations / token budget / Agent Teams env / planning-with-files plugin / mattpocock-skills / MCP availability)。",
2
+ "setup.workflows_not_found": "error: workflows directory not found at {{path}}",
3
+ "setup.nothing_to_install": "setup: no workflow directories with SKILL.md found nothing to install",
4
+ "setup.dry_run.header": "[dry-run] setup would install {{count}} workflow(s) to {{path}}:",
5
+ "setup.dry_run.run_hint": " run without --dry-run to execute",
6
+ "setup.copy_failed": " error: failed to copy {{name}}: {{message}}",
7
+ "setup.step_a_complete": "Step A: {{count}} workflows installed to {{path}}",
8
+ "setup.step_a_render.complete": "",
9
+ "setup.step_a_render.warnings_header": " warningssome capability cmds could not be fully resolved:",
10
+ "setup.step_c.created": "",
11
+ "setup.step_c.already_enabled": "",
12
+ "setup.step_c.enabled_backup": "",
13
+ "setup.step_c.skipped": "",
14
+ "setup.step_d.created": "",
15
+ "setup.step_d.already_set": "",
16
+ "setup.step_d.enabled_backup": "",
17
+ "setup.step_d.skipped": "",
18
+ "setup.step_b_complete": "Upstream components: {{installed}} installed / {{already}} already-installed / {{skipped}} skipped / {{failed}} failed [{{seconds}}s]",
19
+ "setup.complete": "setup complete {{skills}} workflows + {{manifests}} base manifests",
20
+ "setup.mcp_hint": "Run /mcp in Claude Code to verify MCP server connections.",
21
+ "setup.bundled_summary": "harnessed v3.0 — 23 workflows bundled (<packageRoot>/workflows/)",
22
+ "setup.bundled_location": "",
23
+ "setup.doctor_hint": "Run harnessed doctor to verify your environment.",
24
24
 
25
- "agent_teams.missing_header": "\n⚠️ Agent Teams 未启用 — parallelism-gate 升级路径不可用",
26
- "agent_teams.missing_fix": " 修复: claude config set env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS 1",
27
- "agent_teams.missing_explanation": " 说明: harnessed v3.0 三层栈方法论 parallelism-gate 升级路径需 CC 2.1.133+ Agent Teams enable",
28
- "agent_teams.missing_nonblocking": " 不阻塞 setup,后续 parallelism-gate workflow phase 触发时自动降级 subagent fan-out\n",
25
+ "agent_teams.missing_header": "\n⚠️ Agent Teams not enabled — parallelism upgrade path unavailable",
26
+ "agent_teams.missing_fix": " fix: claude config set env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS 1",
27
+ "agent_teams.missing_explanation": " harnessed v3.0 task parallelism uses Subagent or Agent Teams (CC 2.1.133+)",
28
+ "agent_teams.missing_nonblocking": " non-blocking auto-degrades to subagent fan-out\n",
29
29
 
30
- "install.manifest_not_found": "错误: manifest '{{name}}' 未找到",
31
- "install.manifest_not_found.fix": " 修复: 确保 manifests/tools/{{name}}.yaml manifests/skill-packs/{{name}}.yaml 存在",
32
- "install.audit_hint": " 修复: 'harnessed audit' 检查 manifest 问题",
33
- "install.success": "已安装 {{name}}",
34
- "install.success_with_version": "已安装 {{name}}@{{version}}",
35
- "install.aborted": "已中止: {{reason}}",
30
+ "install.manifest_not_found": "error: manifest '{{name}}' not found",
31
+ "install.manifest_not_found.fix": " fix: ensure manifests/tools/{{name}}.yaml or manifests/skill-packs/{{name}}.yaml exists",
32
+ "install.audit_hint": " fix: run 'harnessed audit' to inspect manifest issues",
33
+ "install.success": "installed {{name}}",
34
+ "install.success_with_version": "installed {{name}}@{{version}}",
35
+ "install.aborted": "aborted: {{reason}}",
36
36
 
37
- "uninstall.dry_run.preview": "[dry-run] 将通过方法 '{{method}}' 卸载 '{{name}}'",
38
- "uninstall.dry_run.run_hint": " 去掉 --dry-run 以真正执行",
39
- "uninstall.confirm.prompt": "卸载 '{{name}}'? 此操作不可撤销。",
40
- "uninstall.cancelled": "已中止: 用户取消",
41
- "uninstall.completed": "已卸载 {{name}}",
42
- "uninstall.yes_dryrun_conflict": "错误: --yes 不能与 --dry-run 同用 (dry-run 不会变更状态)",
43
- "uninstall.yes_dryrun_conflict.fix": " 修复: harnessed uninstall {{name}} --yes (立即执行) harnessed uninstall {{name}} --dry-run (预览)",
37
+ "uninstall.dry_run.preview": "[dry-run] would uninstall '{{name}}' via method '{{method}}'",
38
+ "uninstall.dry_run.run_hint": " run without --dry-run to execute",
39
+ "uninstall.confirm.prompt": "Uninstall '{{name}}'? This cannot be undone.",
40
+ "uninstall.cancelled": "aborted: user cancelled",
41
+ "uninstall.completed": "uninstalled {{name}}",
42
+ "uninstall.yes_dryrun_conflict": "error: --yes is incompatible with --dry-run (dry-run does not mutate)",
43
+ "uninstall.yes_dryrun_conflict.fix": " fix: harnessed uninstall {{name}} --yes (immediate) OR harnessed uninstall {{name}} --dry-run (preview)",
44
44
 
45
- "gc.invalid_duration": "错误: --older-than '{{value}}' 格式无效",
46
- "gc.invalid_duration.fix": " 修复: 使用 <N>{d|h|m|w} 格式 30d / 24h / 60m / 4w",
47
- "gc.no_backups": "未发现 backup ({{root}} 不存在) — 无需 gc",
48
- "gc.no_old_snapshots": "没有早于 {{cutoff}} 的 snapshot (保留最近 {{keptCount}} )",
49
- "gc.summary_will_delete": "将删除 {{count}} snapshot,总计 ~{{sizeKb}} KB:",
50
- "gc.summary_deleting": "正在删除 {{count}} snapshot,总计 ~{{sizeKb}} KB:",
51
- "gc.dry_run_rerun_hint": "\n(dry-run — 去掉 --dry-run 以真正删除)",
45
+ "gc.invalid_duration": "error: invalid --older-than '{{value}}'",
46
+ "gc.invalid_duration.fix": " fix: use format <N>{d|h|m|w} e.g. 30d / 24h / 60m / 4w",
47
+ "gc.no_backups": "no backups found ({{root}} absent) — nothing to gc",
48
+ "gc.no_old_snapshots": "no snapshots older than {{cutoff}} (kept {{keptCount}} most-recent)",
49
+ "gc.summary_will_delete": "would delete {{count}} snapshot(s), ~{{sizeKb}} KB total:",
50
+ "gc.summary_deleting": "deleting {{count}} snapshot(s), ~{{sizeKb}} KB total:",
51
+ "gc.dry_run_rerun_hint": "\n(dry-run — re-run without --dry-run to actually delete)",
52
52
 
53
- "doctor.summary.fail": "\n部分检查未通过 (见上方 fix 提示)",
54
- "doctor.summary.warn": "\n所有检查通过 ( warning见上方提示)",
55
- "doctor.summary.pass": "\n所有检查通过",
53
+ "doctor.summary.fail": "\nsome checks failed (see fix hints above)",
54
+ "doctor.summary.warn": "\nall checks ok (with warningssee hints above)",
55
+ "doctor.summary.pass": "\nall checks passed",
56
56
 
57
- "backup.no_backups": "未发现 backup ({{root}} 不存在)",
58
- "backup.no_backups_empty": "未发现 backup ({{root}} 为空)",
59
- "backup.total_snapshots": "\n{{count}} snapshot",
57
+ "backup.no_backups": "no backups found ({{root}} absent)",
58
+ "backup.no_backups_empty": "no backups found ({{root}} empty)",
59
+ "backup.total_snapshots": "\n{{count}} snapshot(s) total",
60
60
 
61
- "rollback.metadata_unreadable": "错误: 无法读取 {{path}}: {{message}}",
62
- "rollback.metadata_unreadable.fix": " 修复: 'harnessed backup list' 查看可用 timestamp",
63
- "rollback.checksum_mismatch": "错误: {{target}} 的 backup checksum 不匹配 (期望 {{expected}},实际 {{actual}})",
64
- "rollback.restored": "已从 {{timestamp}} 恢复 {{count}} 个文件",
61
+ "rollback.metadata_unreadable": "error: cannot read {{path}}: {{message}}",
62
+ "rollback.metadata_unreadable.fix": " fix: run 'harnessed backup list' to see available timestamps",
63
+ "rollback.checksum_mismatch": "error: backup checksum mismatch for {{target}} (expected {{expected}}, got {{actual}})",
64
+ "rollback.restored": "restored {{count}} file(s) from {{timestamp}}",
65
65
 
66
- "status.no_installs": "未记录任何 install ({{path}} 不存在或为空)",
67
- "status.summary_installs": "\n共记录 {{count}} install",
68
- "status.lock_held": "\nlock: 占用中 ( {{since}}){{staleSuffix}}",
69
- "status.lock_held.stale_suffix": " — 已过期",
70
- "status.lock_release_hint": " 释放方式: 等待 process 结束 或删除 {{path}}",
71
- "status.lock_free": "\nlock: 空闲",
66
+ "status.no_installs": "no installs recorded ({{path}} absent or empty)",
67
+ "status.summary_installs": "\n{{count}} install(s) recorded",
68
+ "status.lock_held": "\nlock: held (since {{since}}){{staleSuffix}}",
69
+ "status.lock_held.stale_suffix": " — STALE",
70
+ "status.lock_release_hint": " to release: wait for process to finish or delete {{path}}",
71
+ "status.lock_free": "\nlock: free",
72
72
 
73
- "audit_log.no_records_file": "未发现 audit 记录 ({{path}} 不存在)",
74
- "audit_log.no_records_empty": "未发现 audit 记录 (audit.log 为空)",
75
- "audit_log.jq_missing": "✗ PATH 中找不到 jq跑: harnessed doctor",
76
- "audit_log.tail_invalid": "✗ --tail 必须是正整数",
77
- "audit_log.head_invalid": "✗ --head 必须是正整数",
73
+ "audit_log.no_records_file": "no audit records found ({{path}} does not exist)",
74
+ "audit_log.no_records_empty": "no audit records found (audit.log is empty)",
75
+ "audit_log.jq_missing": "✗ jq not found in PATH run: harnessed doctor",
76
+ "audit_log.tail_invalid": "✗ --tail must be a positive integer",
77
+ "audit_log.head_invalid": "✗ --head must be a positive integer",
78
78
 
79
- "execute_task.require_task": "错误: --task <text> 必填",
80
- "execute_task.load_phases_failed": "错误: 加载 workflows/{{workflow}}/phases.yaml 失败 — {{message}}",
81
- "execute_task.precommit_skipped": "⚠️ before-commit 预检跳过 ({{message}}); subagent 会在 commit 时再跑一次 biome-check",
79
+ "execute_task.require_task": "error: --task <text> is required",
80
+ "execute_task.load_phases_failed": "error: failed to load workflows/{{workflow}}/phases.yaml — {{message}}",
81
+ "execute_task.precommit_skipped": "⚠️ before-commit pre-flight skipped ({{message}}); subagent will biome-check at commit time.",
82
82
 
83
- "research.require_query": "错误: --query <text> 必填",
83
+ "research.require_query": "error: --query <text> is required",
84
84
 
85
- "manifest_add.non_interactive_warn": "[ee-5-gate] WARN: --non-interactive 会跳过 5 prompt (D-03 dry-run-only)plan-phase hard reject 仍生效。",
86
- "manifest_add.dry_run_preview": "[manifest-add] dry-run 预览 upstream: {{upstream}} → {{path}}",
87
- "manifest_add.empty_answer": "错误: EE-5 gate 要求非空答复",
88
- "manifest_add.gate_passed_wrote": "[manifest-add] EE-5 gate 通过; 已写入 {{path}}",
89
- "manifest_add.gate_passed_dry_run": "[manifest-add] EE-5 gate 通过 (dry-run); 将写入 {{path}}",
85
+ "manifest_add.non_interactive_warn": "[ee-5-gate] WARN: --non-interactive skips 5-question prompt (D-03 dry-run-only). plan-phase hard reject still applies.",
86
+ "manifest_add.dry_run_preview": "[manifest-add] dry-run preview for upstream: {{upstream}} → {{path}}",
87
+ "manifest_add.empty_answer": "error: EE-5 gate requires non-empty answer",
88
+ "manifest_add.gate_passed_wrote": "[manifest-add] EE-5 gate passed; wrote {{path}}",
89
+ "manifest_add.gate_passed_dry_run": "[manifest-add] EE-5 gate passed (dry-run); would write {{path}}",
90
90
 
91
91
  "resume.fail": "✗ {{error}}",
92
92
  "resume.corrupt": "✗ {{error}}\n path: {{path}}"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harnessed",
3
- "version": "3.9.12",
3
+ "version": "3.9.14",
4
4
  "description": "AI coding harness package manager + composition orchestrator",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",