{"_id":"@cogineai/dearharness","_rev":"3-b52ae6719d5425f55d46a9e21210b28f","name":"@cogineai/dearharness","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@cogineai/dearharness","version":"0.1.0","keywords":["dearharness","dearclaw","openclaw","harness","cli","daemon"],"license":"MIT","_id":"@cogineai/dearharness@0.1.0","maintainers":[{"name":"lc708","email":"kiedis@foxmail.com"}],"homepage":"https://github.com/cogine-ai/dearharness-cli#readme","bugs":{"url":"https://github.com/cogine-ai/dearharness-cli/issues"},"bin":{"dearharness":"dist/index.js"},"dist":{"shasum":"750b4bcb579d70918febded9dcddc0aabe3fbe29","tarball":"https://registry.npmjs.org/@cogineai/dearharness/-/dearharness-0.1.0.tgz","fileCount":56,"integrity":"sha512-OxaFGD73o+iugg40j/WerBcd/MVojsjUETeTwrarhEv14YsOvgoMPXuZZNbcBKmjXSpjjIE3zEc9dAMoUWlkVg==","signatures":[{"sig":"MEQCIEqHiI10GO4IuY8BRTOZLQaFSMirfRJA8hWukH+AliewAiBCAfrWMUuiXs2D6kw1g6sOuNeAMa3c1/moUjApjJ9hsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175392},"type":"module","engines":{"node":">=20"},"gitHead":"248eb4d860d56f8ce34dce6e92d679db70053737","scripts":{"dev":"tsx src/index.ts","test":"node --test --import tsx \"src/**/*.test.ts\"","build":"tsc -p tsconfig.json","start":"node dist/index.js"},"_npmUser":{"name":"lc708","email":"kiedis@foxmail.com"},"repository":{"url":"git+https://github.com/cogine-ai/dearharness-cli.git","type":"git"},"_npmVersion":"10.9.2","description":"OpenClaw Harness operator CLI and instance-side daemon prototype.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"fflate":"^0.8.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","typescript":"^5.9.2","@types/node":"^24.5.2"},"_npmOperationalInternal":{"tmp":"tmp/dearharness_0.1.0_1778490216438_0.9727677954560454","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cogineai/dearharness","version":"0.1.1","keywords":["dearharness","dearclaw","openclaw","harness","cli","daemon"],"license":"MIT","_id":"@cogineai/dearharness@0.1.1","maintainers":[{"name":"lc708","email":"kiedis@foxmail.com"}],"homepage":"https://github.com/cogine-ai/dearharness-cli#readme","bugs":{"url":"https://github.com/cogine-ai/dearharness-cli/issues"},"bin":{"dearharness":"dist/index.js"},"dist":{"shasum":"ed8a6717fe7685404c186d5070ae8495266cf4a1","tarball":"https://registry.npmjs.org/@cogineai/dearharness/-/dearharness-0.1.1.tgz","fileCount":55,"integrity":"sha512-XCAC1J0xrMjatFfyCrX66FjCuvKi3Vt9lBUIyOQUIua/XiKJhf8Q1GMK8apW+75nFUvNj5CcRZ6lwcbUD8eDYA==","signatures":[{"sig":"MEYCIQD8ghWZXmIfwp2+JpfzEpLD36dSbRlBV/GafqA9UEwatAIhAJtfDVedf+04AfH/VgR+5MzEjz7trL2MevgrvBf/yDyO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184310},"type":"module","engines":{"node":">=20"},"gitHead":"593ad329146103382c95178084e8ef0493d86260","scripts":{"dev":"tsx src/index.ts","test":"node --test --import tsx \"src/**/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","start":"node dist/index.js","prepack":"npm run build"},"_npmUser":{"name":"lc708","email":"kiedis@foxmail.com"},"repository":{"url":"git+https://github.com/cogine-ai/dearharness-cli.git","type":"git"},"_npmVersion":"10.9.2","description":"OpenClaw Harness operator CLI and instance-side daemon prototype.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"fflate":"^0.8.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","typescript":"^5.9.2","@types/node":"^24.5.2"},"_npmOperationalInternal":{"tmp":"tmp/dearharness_0.1.1_1781430776073_0.1070296915884581","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cogineai/dearharness","version":"0.1.2","description":"OpenClaw Harness operator CLI and instance-side daemon prototype.","type":"module","license":"MIT","publishConfig":{"access":"public"},"homepage":"https://github.com/cogine-ai/dearharness-cli#readme","repository":{"type":"git","url":"git+https://github.com/cogine-ai/dearharness-cli.git"},"bugs":{"url":"https://github.com/cogine-ai/dearharness-cli/issues"},"keywords":["dearharness","dearclaw","openclaw","harness","cli","daemon"],"bin":{"dearharness":"dist/index.js"},"engines":{"node":">=20"},"scripts":{"clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","build":"npm run clean && tsc -p tsconfig.json","prepack":"npm run build","start":"node dist/index.js","dev":"tsx src/index.ts","test":"node --test --import tsx \"src/**/*.test.ts\""},"dependencies":{"fflate":"^0.8.2"},"devDependencies":{"@types/node":"^24.5.2","tsx":"^4.20.5","typescript":"^5.9.2"},"_id":"@cogineai/dearharness@0.1.2","gitHead":"4155ef151b420853307e3c81ab7a6e01a5a800ca","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-XjfthjXhzqPgU6JnDwx6/d5PHE97zuszqIq3YnrQIb3WD7P8Iap6+mcbPh9LU8RA9xminxVfp9Y/K9HkZTNYFQ==","shasum":"529fc475f55b17d8c6ded0e495bf7302a9e7356c","tarball":"https://registry.npmjs.org/@cogineai/dearharness/-/dearharness-0.1.2.tgz","fileCount":55,"unpackedSize":189529,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFwbt8qX1HvliInuIs5xrak5bA6TJwBAzqW1wLJ6lehyAiEA5FHjAnUuavYcI9oVWoheDFM48J3LQ3y3t5oLIasWl2Q="}]},"_npmUser":{"name":"lc708","email":"kiedis@foxmail.com"},"directories":{},"maintainers":[{"name":"lc708","email":"kiedis@foxmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dearharness_0.1.2_1783332575623_0.9098317637476112"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-11T09:03:36.342Z","modified":"2026-07-06T10:09:35.876Z","0.1.0":"2026-05-11T09:03:36.591Z","0.1.1":"2026-06-14T09:52:56.210Z","0.1.2":"2026-07-06T10:09:35.758Z"},"bugs":{"url":"https://github.com/cogine-ai/dearharness-cli/issues"},"license":"MIT","homepage":"https://github.com/cogine-ai/dearharness-cli#readme","keywords":["dearharness","dearclaw","openclaw","harness","cli","daemon"],"repository":{"type":"git","url":"git+https://github.com/cogine-ai/dearharness-cli.git"},"description":"OpenClaw Harness operator CLI and instance-side daemon prototype.","maintainers":[{"name":"lc708","email":"kiedis@foxmail.com"}],"readme":"# DearHarness\n\nDearHarness is an OpenClaw Harness operator CLI and instance-side daemon prototype.\n\nIt is derived from `cogine-ai/cliq-agent`, but it is not a generic coding agent. Cliq provides useful runtime substrate ideas; DearHarness focuses on Harness inspection, validation, installation, maintenance, packing, publishing, and platform-callable daemon tasks.\n\n## Current Status\n\nThis repository is a standalone prototype. The main DearClaw platform repository may later consume or import stable pieces from it.\n\nThe current npm package version is `@cogineai/dearharness@0.1.2`.\n\nImplemented baseline:\n\n- local CLI identity\n- OpenClaw workspace inspection\n- install-lock status reading\n- local Harness manifest validation\n- minimal private daemon task API\n- remote `.zip` and `.tar.gz` bundle source staging\n- dry-run install planning and conflict reporting\n- guarded file apply with rollback and post-apply verification\n- daemon `install_harness` tasks that use the same guarded install runner as the CLI\n\nDearHarness still does not claim full OpenClaw config mutation, DearStore registry or publish API integration, package signing, dependency solving, or OpenClaw plugin installation.\n\n## Quick Start\n\nRequirements: Node.js 20 or newer.\n\nRun the published CLI without installing it globally:\n\n```bash\nnpx -y @cogineai/dearharness help\n```\n\nOr install it globally:\n\n```bash\nnpm install -g @cogineai/dearharness\ndearharness help\n```\n\nFor local source development:\n\n```bash\nnpm install\nnpm run build\nnode dist/index.js help\n```\n\nThe examples below use the installed `dearharness` binary. In a source checkout, replace `dearharness` with `node dist/index.js`.\n\nInspect an OpenClaw-like workspace:\n\n```bash\ndearharness inspect --target-workspace ~/.openclaw/workspace\n```\n\nRead local install status:\n\n```bash\ndearharness status --target-workspace ~/.openclaw/workspace\n```\n\nValidate a Harness source directory:\n\n```bash\ndearharness validate ./my-harness\n```\n\nDownload and validate a remote Harness bundle without applying changes. The install runner accepts either a `.zip` or `.tar.gz` archive URL. Global scope installs under `$OPENCLAW_STATE_DIR/skills/`, falling back to `~/.openclaw/skills/` when `OPENCLAW_STATE_DIR` is unset:\n\n```bash\ndearharness install https://example.com/my-harness.zip --global --dry-run\ndearharness install https://example.com/my-harness.tar.gz --global --dry-run\n```\n\nAgent scope installs under the provided agent workspace:\n\n```bash\ndearharness install https://example.com/my-harness.zip --agent-workspace ~/.openclaw/workspace --dry-run\ndearharness install https://example.com/my-harness.tar.gz --agent-workspace ~/.openclaw/workspace --dry-run\n```\n\nApply a conflict-free plan explicitly:\n\n```bash\ndearharness install https://example.com/my-harness.zip --global --apply\ndearharness install https://example.com/my-harness.tar.gz --agent-workspace ~/.openclaw/workspace --apply\n```\n\nThe explicit `--scope global` and `--scope agent --agent-workspace <path>` forms are also accepted. The older `--target-workspace <path>` install flag remains available for compatibility.\n\nRun the private daemon:\n\n```bash\nDEARHARNESS_DAEMON_TOKEN=dev-token dearharness daemon --host 127.0.0.1 --port 18790\n```\n\nSubmit an inspect task:\n\n```bash\ncurl -sS \\\n  -H 'authorization: Bearer dev-token' \\\n  -H 'content-type: application/json' \\\n  -d '{\"type\":\"inspect_workspace\",\"targetWorkspace\":\"/workspace/openclaw\"}' \\\n  http://127.0.0.1:18790/tasks\n```\n\nSubmit a guarded install task to the daemon. The `source` field accepts either a `.zip` or `.tar.gz` archive URL:\n\n```bash\ncurl -sS \\\n  -H 'authorization: Bearer dev-token' \\\n  -H 'content-type: application/json' \\\n  -d '{\"type\":\"install_harness\",\"source\":\"https://example.com/my-harness.zip\",\"targetWorkspace\":\"/workspace/openclaw\",\"mode\":\"dry_run\"}' \\\n  http://127.0.0.1:18790/tasks\n\ncurl -sS \\\n  -H 'authorization: Bearer dev-token' \\\n  -H 'content-type: application/json' \\\n  -d '{\"type\":\"install_harness\",\"source\":\"https://example.com/my-harness.tar.gz\",\"targetWorkspace\":\"/workspace/openclaw\",\"mode\":\"dry_run\"}' \\\n  http://127.0.0.1:18790/tasks\n```\n\n## Repository Guide\n\nRead these first:\n\n- `AGENTS.md`\n- `docs/project.md`\n- `docs/architecture.md`\n- `docs/roadmap.md`\n- `docs/superpowers/plans/2026-04-30-dearharness-v0.md`\n\n## Relationship To DearClaw\n\nDearClaw owns platform policy, auth, catalog, publish review, audit, billing, and user-facing status.\n\nDearHarness owns local execution near OpenClaw:\n\n- inspect workspace/config\n- validate packages\n- apply deterministic install and maintenance tools\n- expose a private daemon for platform task execution\n\n## Relationship To Cliq\n\nThe `cliq-upstream` git remote may remain pointed at `https://github.com/cogine-ai/cliq-agent.git` for reference and selective runtime reuse. It should not be used as the DearHarness publishing remote.\n\nIf DearHarness needs a generally useful runtime capability, prefer opening an upstream Cliq issue instead of permanently hiding the change in this fork.\n\nExtensions are intentionally limited to hooks and instruction contributions. They do not register new model-callable top-level actions.\n\n## Daemon Task Types\n\nThe daemon currently accepts synchronous task requests:\n\n- `inspect_workspace`: `{ \"type\": \"inspect_workspace\", \"targetWorkspace\": \"/path\" }`\n- `read_status`: `{ \"type\": \"read_status\", \"targetWorkspace\": \"/path\" }`\n- `validate_harness`: `{ \"type\": \"validate_harness\", \"sourcePath\": \"/path\" }`\n- `install_harness`: `{ \"type\": \"install_harness\", \"source\": \"https://example.com/my-harness.zip\", \"targetWorkspace\": \"/path\", \"mode\": \"dry_run\" }`. The `source` field accepts an http(s) `.zip` or `.tar.gz` URL, and `mode` is either `dry_run` or `apply`.\n\nThese are deliberately narrow. Future agentic maintenance should choose from deterministic tools instead of relying on unrestricted shell execution.\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}