harnessed 3.9.9 → 3.9.11

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.9"};
3
+ version: "3.9.11"};
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,OA+Fb,CAAA;;;AC5FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"3.9.9\",\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 \"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.11\",\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"]}
@@ -23,7 +23,7 @@ spec:
23
23
  # per D2.1-5 (Windows symlink-safe + user-scope install).
24
24
  cmd: "npx --yes skills@latest add mattpocock/skills --copy --global"
25
25
  npm_version: ^1.5.7
26
- idempotent_check: "test -d ~/.claude/skills/mattpocock-skills"
26
+ idempotent_check: "test -d ~/.claude/skills/mattpocock-skills || test -d ~/.agents/skills/mattpocock-skills"
27
27
  verify:
28
28
  cmd: "test -f ~/.claude/skills/mattpocock-skills/diagnose.md"
29
29
  timeout_ms: 5000
@@ -0,0 +1,93 @@
1
+ {
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": " generated {{count}}/{{total}} command files",
9
+ "setup.step_a_render.warnings_header": " [A.5] warnings — some capability cmds could not be fully resolved:",
10
+ "setup.step_c.created": " [C] created {{path}} + enabled Agent Teams",
11
+ "setup.step_c.already_enabled": " [C] Agent Teams already enabled ({{path}})",
12
+ "setup.step_c.enabled_backup": " [C] enabled Agent Teams in {{path}} (backup saved → {{backupPath}})",
13
+ "setup.step_c.skipped": " [C] Agent Teams enable skipped: {{message}}",
14
+ "setup.step_d.created": " [D] created {{path}} + wrote env.HARNESSED_USER_LANG={{lang}}",
15
+ "setup.step_d.already_set": " [D] env.HARNESSED_USER_LANG={{lang}} already set in {{path}} — respecting user override",
16
+ "setup.step_d.enabled_backup": " [D] wrote env.HARNESSED_USER_LANG={{lang}} in {{path}} (backup saved → {{backupPath}})",
17
+ "setup.step_d.skipped": " [D] User language write skipped: {{message}}",
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 configured",
20
+ "setup.mcp_hint": "Run /mcp in Claude Code to verify MCP server connections.",
21
+ "setup.bundled_summary": "\nharnessed v3.0 — 23 workflows bundled (<packageRoot>/workflows/)",
22
+ "setup.bundled_location": "",
23
+ "setup.doctor_hint": "\nRun harnessed doctor to verify your environment.",
24
+
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
+
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
+
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
+
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
+
53
+ "doctor.summary.fail": "\nsome checks failed (see fix hints above)",
54
+ "doctor.summary.warn": "\nall checks ok (with warnings — see hints above)",
55
+ "doctor.summary.pass": "\nall checks passed",
56
+
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
+
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
+
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
+
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
+
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
+
83
+ "research.require_query": "error: --query <text> is required",
84
+
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
+
91
+ "resume.fail": "✗ {{error}}",
92
+ "resume.corrupt": "✗ {{error}}\n path: {{path}}"
93
+ }
@@ -0,0 +1,93 @@
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)。",
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",
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}}",
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 (预览)",
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 以真正删除)",
52
+
53
+ "doctor.summary.fail": "\n部分检查未通过 (见上方 fix 提示)",
54
+ "doctor.summary.warn": "\n所有检查通过 (含 warning — 见上方提示)",
55
+ "doctor.summary.pass": "\n所有检查通过",
56
+
57
+ "backup.no_backups": "未发现 backup ({{root}} 不存在)",
58
+ "backup.no_backups_empty": "未发现 backup ({{root}} 为空)",
59
+ "backup.total_snapshots": "\n共 {{count}} 个 snapshot",
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}} 个文件",
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: 空闲",
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 必须是正整数",
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。",
82
+
83
+ "research.require_query": "错误: --query <text> 必填",
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}}",
90
+
91
+ "resume.fail": "✗ {{error}}",
92
+ "resume.corrupt": "✗ {{error}}\n path: {{path}}"
93
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harnessed",
3
- "version": "3.9.9",
3
+ "version": "3.9.11",
4
4
  "description": "AI coding harness package manager + composition orchestrator",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -44,6 +44,7 @@
44
44
  "files": [
45
45
  "dist",
46
46
  "manifests",
47
+ "messages",
47
48
  "workflows",
48
49
  "routing",
49
50
  "config-templates",
@@ -72,16 +72,7 @@ rules:
72
72
  - design-led
73
73
  if_rejected_use: frontend-design
74
74
 
75
- # ─── content (2 rules) ───────────────────────────────────────
76
- - id: pptx-file-task
77
- priority: 80
78
- domain: content
79
- when:
80
- task_type: pptx-file-operation
81
- decision:
82
- primary_expert: anthropics-skills-pptx
83
- rationale: PowerPoint 文件操作 — anthropics 官方 skill
84
-
75
+ # ─── content (1 rule) ───────────────────────────────────────
85
76
  - id: chinese-content-deck
86
77
  priority: 70
87
78
  domain: content
@@ -1,46 +0,0 @@
1
- # yaml-language-server: $schema=../../schemas/manifest.v1.schema.json
2
- apiVersion: harnessed/v1
3
- kind: Manifest
4
- metadata:
5
- name: anthropics-skills-pptx
6
- display_name: Anthropic Skills — pptx
7
- description: PowerPoint deck generation skill from anthropics/skills upstream (English-first slide-deck output).
8
- upstream:
9
- source: github.com/anthropics/skills
10
- homepage: https://github.com/anthropics/skills/tree/main/skills/pptx
11
- repository: https://github.com/anthropics/skills.git
12
- license: anthropics-official
13
- notice: |
14
- Anthropic skills — pptx sub-skill from anthropics/skills (source-available; anthropics-official carve-out per .planning/research/v0.2.0-extensions.md § 2.1).
15
- content category — PowerPoint file generation; routed via decision_rules.yaml `pptx-file-task` (priority 80).
16
- spec:
17
- type: cc-skill-pack
18
- component_type: command
19
- category: content
20
- install_type: skill
21
- install:
22
- method: npx-skill-installer
23
- cmd: "npx --yes skills@1.5.7 add anthropics/skills/pptx --copy --global"
24
- npm_version: ^1.5.7
25
- idempotent_check: "test -f ~/.claude/skills/pptx/SKILL.md"
26
- verify:
27
- cmd: "test -f ~/.claude/skills/pptx/SKILL.md"
28
- timeout_ms: 5000
29
- expected_exit_code: 0
30
- uninstall:
31
- cmd: "rm -rf ~/.claude/skills/pptx"
32
- cleanup_paths:
33
- - ~/.claude/skills/pptx
34
- upstream_health:
35
- stability: stable
36
- last_check: "2026-05-16"
37
- last_known_good_version: "1.5.7"
38
- fallback_action: warn
39
- signed_by: easyinplay
40
- platforms:
41
- - linux
42
- - darwin
43
- - win32
44
- decision_rules:
45
- trigger: "user 请求生成 pptx / PowerPoint / slide deck (English)"
46
- default_expert: anthropics-skills-pptx
@@ -1,46 +0,0 @@
1
- # yaml-language-server: $schema=../../schemas/manifest.v1.schema.json
2
- apiVersion: harnessed/v1
3
- kind: Manifest
4
- metadata:
5
- name: anthropics-skills-slide-deck
6
- display_name: Anthropic Skills — slide-deck
7
- description: Slide-deck generation skill from anthropics/skills upstream (ZH-first 中文 PPT 演示稿). Complement to pptx.
8
- upstream:
9
- source: github.com/anthropics/skills
10
- homepage: https://github.com/anthropics/skills/tree/main/skills/slide-deck
11
- repository: https://github.com/anthropics/skills.git
12
- license: anthropics-official
13
- notice: |
14
- Anthropic skills — slide-deck sub-skill from anthropics/skills (source-available; anthropics-official carve-out per .planning/research/v0.2.0-extensions.md § 2.1).
15
- content category — 中文 slide-deck 演示场景; routed via decision_rules.yaml `chinese-content-deck` rule (priority 70).
16
- spec:
17
- type: cc-skill-pack
18
- component_type: command
19
- category: content
20
- install_type: skill
21
- install:
22
- method: npx-skill-installer
23
- cmd: "npx --yes skills@1.5.7 add anthropics/skills/slide-deck --copy --global"
24
- npm_version: ^1.5.7
25
- idempotent_check: "test -f ~/.claude/skills/slide-deck/SKILL.md"
26
- verify:
27
- cmd: "test -f ~/.claude/skills/slide-deck/SKILL.md"
28
- timeout_ms: 5000
29
- expected_exit_code: 0
30
- uninstall:
31
- cmd: "rm -rf ~/.claude/skills/slide-deck"
32
- cleanup_paths:
33
- - ~/.claude/skills/slide-deck
34
- upstream_health:
35
- stability: stable
36
- last_check: "2026-05-16"
37
- last_known_good_version: "1.5.7"
38
- fallback_action: warn
39
- signed_by: easyinplay
40
- platforms:
41
- - linux
42
- - darwin
43
- - win32
44
- decision_rules:
45
- trigger: "user 请求中文 slide / 中文 PPT 演示稿 / slide deck (Chinese)"
46
- default_expert: anthropics-skills-slide-deck