{"_id":"@brawnen/agent-harness-cli","_rev":"3-4fc6b51aff556df4f519e73e69d23edf","name":"@brawnen/agent-harness-cli","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@brawnen/agent-harness-cli","version":"0.1.0","keywords":["agent","ai","workflow","task","codex","cli"],"license":"MIT","_id":"@brawnen/agent-harness-cli@0.1.0","maintainers":[{"name":"brawnen","email":"brawnen@qq.com"}],"homepage":"https://github.com/brawnen/agent-harness/tree/main/packages/cli","bugs":{"url":"https://github.com/brawnen/agent-harness/issues"},"bin":{"agent-harness":"bin/agent-harness.js"},"dist":{"shasum":"daa97ff21d62e60d00d5fc8d423954592090052d","tarball":"https://registry.npmjs.org/@brawnen/agent-harness-cli/-/agent-harness-cli-0.1.0.tgz","fileCount":24,"integrity":"sha512-2+JjjPjIf0dvXWdL2biDh6RyVwv+aHTq7W33D+xK7s88UirUC84Sy01k1xe/Bsq/8fYYnM2HYcYAQ0ocRlyhpw==","signatures":[{"sig":"MEUCIQCocR+y4oYo5ubLEPq80WjJCMoTWtxyM3W318W8EVoClgIgDxnIOIX3udX7hFiZSsW+ryl2Ml3ySCNNFRjEjXcTTyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176114},"type":"module","engines":{"node":">=18"},"gitHead":"b89c1fe1045ca2b38e0abe820e13e266f53eb1a8","scripts":{"start":"node ./bin/agent-harness.js --help"},"_npmUser":{"name":"brawnen","email":"brawnen@qq.com"},"repository":{"url":"git+https://github.com/brawnen/agent-harness.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.11.1","description":"CLI for task convergence, verification, reporting, and delivery in agent-harness projects.","directories":{},"_nodeVersion":"25.8.2","dependencies":{"@brawnen/agent-harness-protocol":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-harness-cli_0.1.0_1775440931517_0.4182969477255625","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@brawnen/agent-harness-cli","version":"0.1.1","keywords":["agent","ai","workflow","task","codex","cli"],"license":"MIT","_id":"@brawnen/agent-harness-cli@0.1.1","maintainers":[{"name":"brawnen","email":"brawnen@qq.com"}],"homepage":"https://github.com/brawnen/agent-harness/tree/main/packages/cli","bugs":{"url":"https://github.com/brawnen/agent-harness/issues"},"bin":{"agent-harness":"bin/agent-harness.js"},"dist":{"shasum":"40e7a84019f8d2126743284e23287accaf53411d","tarball":"https://registry.npmjs.org/@brawnen/agent-harness-cli/-/agent-harness-cli-0.1.1.tgz","fileCount":33,"integrity":"sha512-K8raFowuxtPEFVUcISGOqNIGgWiWWuJtlrWTDtapTNd+JNBD3oXfQzCeEpdKUf97Wn4XnRXwe2EQd47w9Vk1zQ==","signatures":[{"sig":"MEYCIQD0Aq+GqIHJqFPJ2/3/+EisjDI5mqlSTBbn8544d+fHmgIhAJMeIFmGgqbINcrPW7JrTXfXtSJyFrv0MTg2M0EATgld","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213649},"type":"module","engines":{"node":">=18"},"gitHead":"c35f6ccd222a39f0df647906bea1bac97e9ab57f","scripts":{"start":"node ./bin/agent-harness.js --help"},"_npmUser":{"name":"brawnen","email":"brawnen@qq.com"},"repository":{"url":"git+https://github.com/brawnen/agent-harness.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.11.1","description":"CLI for task convergence, verification, reporting, and delivery in agent-harness projects.","directories":{},"_nodeVersion":"25.8.2","dependencies":{"@brawnen/agent-harness-protocol":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-harness-cli_0.1.1_1775564120132_0.45771209858921","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@brawnen/agent-harness-cli","version":"0.1.2","description":"Compatibility CLI for bootstrap, status, and manual fallback in agent-harness projects.","license":"MIT","bin":{"agent-harness":"bin/agent-harness.js"},"exports":{"./runtime-host":"./src/runtime-host/index.js"},"type":"module","keywords":["agent","ai","workflow","task","codex","cli"],"repository":{"type":"git","url":"git+https://github.com/brawnen/agent-harness.git","directory":"packages/cli"},"bugs":{"url":"https://github.com/brawnen/agent-harness/issues"},"homepage":"https://github.com/brawnen/agent-harness/tree/main/packages/cli","publishConfig":{"access":"public"},"dependencies":{"@brawnen/agent-harness-protocol":"^0.1.2"},"scripts":{"start":"node ./bin/agent-harness.js --help","verify:codex-e2e":"node ./scripts/verify-codex-e2e.js","verify:host-hooks":"node ./scripts/verify-host-hooks-smoke.js","verify:init-status":"node ./scripts/verify-host-init-status.js","verify:status-compat":"node ./scripts/verify-sync-status-compat.js","verify:task-core":"node ./scripts/verify-task-core-classification.js"},"engines":{"node":">=18"},"_id":"@brawnen/agent-harness-cli@0.1.2","gitHead":"55f0178a3141275b1ac702e1ee1e73f340a9b2e3","_nodeVersion":"24.1.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-/7qmHbJuGLZ2iZRcrb/4G0zAZxNZ+0oliZ6qnAPpkuutlQqF95QOBIaeiAAPL6BLDMuNgttIuBSAyWopS/QmUg==","shasum":"cc4b240c8c4b944afc73ee5dbd3b1b7dd704fa06","tarball":"https://registry.npmjs.org/@brawnen/agent-harness-cli/-/agent-harness-cli-0.1.2.tgz","fileCount":36,"unpackedSize":267967,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCB2/MmbL7tljukAykew1yOWL8A5zbDqscDon+G9TL4ZAIgQm/Ey/tdtCs7i2lcAa5fpNcCx5EEqDoPGzdPe7tY7uk="}]},"_npmUser":{"name":"brawnen","email":"brawnen@qq.com"},"directories":{},"maintainers":[{"name":"brawnen","email":"brawnen@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-harness-cli_0.1.2_1775991690909_0.24887686825190292"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-06T02:02:11.408Z","modified":"2026-04-12T11:01:31.155Z","0.1.0":"2026-04-06T02:02:11.678Z","0.1.1":"2026-04-07T12:15:20.312Z","0.1.2":"2026-04-12T11:01:31.046Z"},"bugs":{"url":"https://github.com/brawnen/agent-harness/issues"},"license":"MIT","homepage":"https://github.com/brawnen/agent-harness/tree/main/packages/cli","keywords":["agent","ai","workflow","task","codex","cli"],"repository":{"type":"git","url":"git+https://github.com/brawnen/agent-harness.git","directory":"packages/cli"},"description":"Compatibility CLI for bootstrap, status, and manual fallback in agent-harness projects.","maintainers":[{"name":"brawnen","email":"brawnen@qq.com"}],"readme":"# @brawnen/agent-harness-cli\n\n[English](README.md)\n\n这是 `agent-harness` 的兼容 CLI。\n\n当前产品方向已经明确：宿主运行时逐步前移到 repo-local hooks，`CLI` 主要负责初始化、状态检查、人工 fallback 和显式交付动作。\n这个包现在已经进入维护态：保持可用、可发布、可诊断，但不再继续向长期主产品方向扩张。\n\n当前已完成：\n\n- 可执行入口\n- `task` MVP\n- `init` MVP\n- `status` MVP\n- `verify` MVP\n- `state` MVP\n- `report` MVP\n- `gate` MVP\n- `audit` MVP\n- `docs` MVP\n- `--dry-run`\n- `--protocol-only`\n- 宿主规则注入\n- 基础项目配置生成\n- `.codex/hooks.json` 最小方案\n\n当前边界：\n\n- 继续支持初始化、状态检查、验证、报告和人工 fallback\n- 接受必要的 bug fix、兼容修复和文档澄清\n- 不再继续扩大宿主专属 wrapper 行为\n\n`init` MVP 当前负责：\n\n- 检测项目类型\n- 检测宿主类型\n- 生成 `harness.yaml`\n- 复制协议任务模板到 `.harness/tasks/`\n- 注入 `CLAUDE.md` / `AGENTS.md` / `GEMINI.md` 规则块\n- 在非 `--protocol-only` 模式下生成运行时目录和 Claude Code hooks\n\n`task` MVP 当前负责：\n\n- `task intake \"<任务描述>\"`\n- `task confirm`\n- `task suspend-active`\n- 从自然语言生成最小 task draft\n- 将 task draft 闭合为 confirmed contract\n- 在可选 `--suspend-active` 时挂起旧任务\n- 为 Codex hook 提供可复用的 intake / suspend 内核\n\n当前不负责：\n\n- 完整状态管理迁移\n- 完整 gate / audit / report 迁移\n- 复杂升级与深度 merge\n\n`task-core` 当前已经补了最小分类回归样本，可在本地运行：\n\n```bash\nnpm --prefix packages/cli run verify:task-core\n```\n\n这组样本当前覆盖：\n\n- `matched_continue_keyword`\n- `matched_new_task_keyword`\n- `matched_active_goal_fragment`\n- `matched_active_scope`\n- `ambiguous_high_risk_prompt`\n- `fallback_new_task`\n- `inactive_active_task_state`\n- `no_active_task`\n\n`status` MVP 当前负责：\n\n- 检查 `harness.yaml`\n- 检查宿主规则块\n- 检查任务模板目录\n- 检查 Claude Code hooks\n- 检查运行时目录与 `.gitignore`\n- 用退出码区分完整、警告和不完整\n\n`verify` MVP 当前负责：\n\n- 读取 `.harness/state/index.json` 中的 active task，或显式 `--task-id`\n- 读取 `.harness/state/tasks/<task_id>.json`\n- 按最小验证矩阵检查 `intent / evidence / open_questions / acceptance`\n- 输出结构化 JSON 结果\n- 用退出码区分允许完成和阻止完成\n\n`state` MVP 当前负责：\n\n- `state init`\n- `state get`\n- `state update`\n- `state active`\n- 维护 `.harness/state/index.json`\n- 维护 `.harness/state/tasks/<task_id>.json`\n- 复用最小合法状态迁移表\n\n`report` MVP 当前负责：\n\n- 读取 active task 或显式 `--task-id`\n- 在生成报告前复用 `verify` 规则做完成门禁检查\n- 写入 `.harness/reports/<task_id>.json`\n- 将任务状态推进到 `close / done`\n- 根据 `output_policy` 校验 `CHANGELOG.md`、`design note`、`ADR` 等交付工件\n- 根据 `delivery_policy` 计算 `commit-ready / push-ready`，并把 `delivery_readiness` 写进报告\n\n`report` 额外支持：\n\n- `--changelog-file <path>`\n- `--design-note <path>`\n- `--adr <path>`\n\n`gate` MVP 当前负责：\n\n- `gate before-tool`\n- 基于 active task 或显式 `--task-id` 做确定性门禁判断\n- 检查写入工具的任务状态是否合法\n- 检查 `protected_paths`\n- 检查路径是否越过 path-like scope\n- 在高风险且未确认时返回 `require_confirmation`\n\n`audit` MVP 当前负责：\n\n- `audit append`\n- `audit read`\n- 写入 `.harness/audit/<task_id>.jsonl`\n- 让 `gate` 记录最小 `gate_violation`\n- 让 `report` 读取 `force_override/manual_confirmation` 作为 `overrides_used`\n\n`delivery_policy` 第一版当前负责：\n\n- 在 `status` 中展示 active task 的 `commit-ready / push-ready`\n- 在 `report` 中输出 `delivery_readiness`\n- 提供 `delivery ready`、`delivery request --action commit|push` 和 `delivery commit` 入口\n- `commit` 保留为 skill 化的显式动作\n- `push` 保留为人工动作，不作为 skill 默认能力\n- 当前只做 readiness 计算，不会自动执行 `git commit` 或 `git push`\n- `commit_exists` 会基于任务报告中的 `actual_scope + output_artifacts` 检查相关文件是否仍有未提交改动\n- 若任务相关文件已经干净，则视为该任务已完成本地 `commit`\n\n`delivery commit` 当前行为：\n\n- 先复用 `delivery request --action commit`\n- 读取任务报告中的 `actual_scope` 和 `output_artifacts`\n- 目录型 scope 只会展开为当前有变更的文件\n- 支持 `--dry-run` 先预览提交计划\n- 对明显过宽的目录 scope 默认阻断，需显式使用 `--force-wide-scope`\n- 自动执行本地 `git add` / `git commit`\n- 永远不会执行 `git push`\n\n`docs scaffold` 当前行为：\n\n- 提供 `docs scaffold --type design-note|adr`\n- 默认读取 active task，也支持 `--task-id`\n- 根据任务上下文生成最小 Markdown 骨架\n- 默认写入 `output_policy.design_note.directory` 或 `output_policy.adr.directory`\n- 支持 `--path` 自定义目标路径\n- 已存在文件默认阻止覆盖，需显式使用 `--force`\n\n当 `report` 因缺少 `design_note` 或 `adr` 被阻断时：\n\n- 会直接输出对应的 `docs scaffold` 建议命令\n- 并给出重新执行 `report` 时应补的 `--design-note` / `--adr` 参数\n\n`status` 当前也会对 active task 主动给出 output artifact 提示：\n\n- 若当前任务要求 `changelog / design_note / adr`\n- 会直接提示建议补齐的工件\n- 对 `design_note / adr` 会给出可直接执行的 `docs scaffold` 命令\n\nCodex 自动 evidence：\n\n- 当前仓库在 `Codex` 下已为 `Bash` 接入 `PostToolUse`\n- 常见 Bash 命令结果会自动追加到 active task 的 `evidence`\n- 若命令明显属于测试，或任务当前处于 `verify` 阶段，则会优先记录为 `test_result`\n- 在高风险任务上，`UserPromptSubmit` 会把显式确认语句自动记录为 `manual_confirmation`\n- `别问了直接做`、`跳过验证` 这类显式 override 语句会自动记录为 `force_override`\n\nCodex `PreToolUse` 当前行为：\n\n- 会在 `Write / Edit / NotebookEdit / Bash` 前调用 `gate before-tool`\n- `needs_clarification / draft / blocked / failed / done / suspended` 状态下的写入会被前置阻断\n- 会结合 task state 与 `harness.yaml risk_rules.path_matches` 动态判断高风险写入\n- 高风险写入且未确认时，会在工具执行前阻断并要求先确认\n- `Bash` 当前已支持最小高置信路径提取，例如：\n  - `echo ... > file`\n  - `cat <<EOF > file`\n  - `tee file`\n  - `printf ... | tee file`\n  - `mkdir -p dir`\n  - `touch file`\n  - `sed -i file`\n  - `perl -pi file`\n  - `chmod/chown/chgrp target`\n  - `rm file`\n  - `truncate -s ... file`\n  - `dd ... of=file`\n  - `mv src dst`\n  - `cp src dst`\n  - `install -d dir`\n  - `install -D/-m ... dst`\n  - `install -Dm644 src dst`\n  - `install src dst`\n  - `ln -s src dst`\n  - `rsync ... dst`\n- 无法高置信提取目标路径时，会保守降级为仅做状态级门禁\n\n本地验证提示：\n\n- 如果当前工作目录不是仓库根目录，调用 CLI 时应使用绝对路径，例如：\n\n```bash\nnode /abs/path/to/agent-harness/packages/cli/bin/agent-harness.js audit read --task-id <task-id>\n```\n\n- 不要在临时目录里直接运行相对路径 `node packages/cli/bin/agent-harness.js ...`，否则容易把路径错误误判成命令读取异常\n\nCodex E2E 回归：\n\n- 可执行 `npm --prefix packages/cli run verify:codex-e2e`\n- 可执行 `npm --prefix packages/cli run verify:host-hooks`\n- 可执行 `npm --prefix packages/cli run verify:init-status`\n- 可执行 `npm --prefix packages/cli run verify:status-compat`\n- 或在仓库根目录执行 `npm run codex:e2e`\n- 或在仓库根目录执行 `npm run runtime:host-hooks`\n- 或在仓库根目录执行 `npm run runtime:init-status`\n- 或在仓库根目录执行 `npm run runtime:p1:check`\n- 当前最小回归覆盖：新任务自动 intake、follow-up 不误切、高风险确认链路、hook 降级提示\n- 当前回归采用“真实 `codex exec` smoke + hook 主链路回归”混合方式，优先验证我们自己的接入链路\n- 当前脚本会在**当前 trusted 仓库**里执行真实 Codex 回归，并清理自己创建的 task/audit/report 文件\n- 运行前要求当前仓库没有 active task\n\n设计约束：\n\n- CLI 依赖 `@brawnen/agent-harness-protocol`\n- 从 npm 安装 `@brawnen/agent-harness-cli` 时，应自动带上 `@brawnen/agent-harness-protocol`\n- 默认 npm 入口是 `npx @brawnen/agent-harness-cli init`\n- 当前仓库将 Node.js CLI 视为 `Agent Harness Runtime` 的 compatibility layer\n- repo-local hooks 当前应通过 `@brawnen/agent-harness-cli/runtime-host` 这一稳定入口接入 runtime\n","readmeFilename":"README.zh-CN.md"}