{"_id":"@bosun-sh/chest","_rev":"3-d98171fe824af3979b5800fe84f4ab0f","name":"@bosun-sh/chest","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.1":{"name":"@bosun-sh/chest","version":"0.0.1","keywords":["ai","governance","mcp","ohtools","workflow","yaml"],"author":{"name":"bosun.sh"},"license":"Apache-2.0","_id":"@bosun-sh/chest@0.0.1","maintainers":[{"name":"ggofri","email":"ignaciojulianramirez@gmail.com"}],"homepage":"https://github.com/bosun-sh/chest#readme","bugs":{"url":"https://github.com/bosun-sh/chest/issues"},"dist":{"shasum":"362b2d97278d35b45f42bd16fe7d2161010a6354","tarball":"https://registry.npmjs.org/@bosun-sh/chest/-/chest-0.0.1.tgz","fileCount":139,"integrity":"sha512-PEgc752xC1gMf4//YPBe8fERhzAKcjxZ+CqKMauqzuELuLFb173ujxDak+xMUf9/84Y+J+6oYlcpYBRGckEBdQ==","signatures":[{"sig":"MEYCIQC2Nm8c6NH0uS5lIQXH279cJ7h6qGoaR6o7t4MyP/L6oQIhAKCMLHCOAG+erDWywYs2BCcyOIxzOMp+IxWy44/X+ba1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127014},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3.9"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/workspace/cli-adapter.d.ts","default":"./dist/workspace/cli-adapter.js"},"./mcp":{"types":"./dist/workspace/mcp-server.d.ts","default":"./dist/workspace/mcp-server.js"},"./ohtools":{"types":"./dist/ohtools.d.ts","default":"./dist/ohtools.js"}},"scripts":{"test":"bun test","build":"bunx tsc -p tsconfig.build.json","check":"biome check .","ci:lint":"bun run check && bun run typecheck","ci:test":"bun test","prepack":"env TMPDIR=$(node -e \"process.stdout.write(require('node:os').tmpdir())\") XDG_CACHE_HOME=$(node -e \"process.stdout.write(require('node:os').tmpdir())\") BUN_INSTALL_CACHE_DIR=$(node -e \"process.stdout.write(require('node:os').tmpdir() + '/bun-cache')\") bun run build","prepare":"husky","publish":"bun run ci:premerge && npm publish --ignore-scripts","ci:build":"bun run build && node scripts/npm-pack-dry-run.mjs","test:e2e":"bun test tests/e2e","test:unit":"bun test tests/unit/","typecheck":"tsc --noEmit","ci:prepush":"bun run ci:premerge","pack:check":"node scripts/npm-pack-dry-run.mjs","ci:premerge":"bun run ci:lint && bun run ci:test && bun run ci:build","ci:precommit":"bun run ci:lint && bun run test:unit","ohtools:docs":"bunx ohtools --app ./src/ohtools.ts docs","ohtools:list":"bunx ohtools --app ./src/ohtools.ts list","smoke:packed":"bun test tests/e2e/packed-artifact.test.ts","ohtools:graph":"bunx ohtools --app ./src/ohtools.ts graph","release:check":"bun run ci:premerge","prepublishOnly":"bun run ci:premerge","release:dry-run":"bun run ci:premerge"},"_npmUser":{"name":"ggofri","email":"ignaciojulianramirez@gmail.com"},"repository":{"url":"git+https://github.com/bosun-sh/chest.git","type":"git"},"_npmVersion":"11.12.1","description":"Local governance store for AI agent workflows.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"effect":"^3.13.10","@bosun-sh/ohtools":"^0.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","typescript":"^6.0.3","@biomejs/biome":"^2.4.15"},"_npmOperationalInternal":{"tmp":"tmp/chest_0.0.1_1780530649050_0.11243487270154051","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@bosun-sh/chest","version":"0.1.0","keywords":["ai","governance","mcp","ohtools","workflow","yaml"],"author":{"name":"bosun.sh"},"license":"Apache-2.0","_id":"@bosun-sh/chest@0.1.0","maintainers":[{"name":"ggofri","email":"ignaciojulianramirez@gmail.com"}],"homepage":"https://github.com/bosun-sh/chest#readme","bugs":{"url":"https://github.com/bosun-sh/chest/issues"},"dist":{"shasum":"dd322af727928efa026386c8b963bbd8f90d0621","tarball":"https://registry.npmjs.org/@bosun-sh/chest/-/chest-0.1.0.tgz","fileCount":140,"integrity":"sha512-+S7xLeI9z0a03wxvFvxTRePQwf6+P3HgmePY8IhpVVA4aRZQkeW4xNYjkODOwF2rARUKNz820+tktk6ea/prsg==","signatures":[{"sig":"MEUCIHa3YJfqzGF19h2dJQiPD0OboGT7UQBY8tUrWuYQ2RzUAiEAvaIdcGdim3kVf9q7n+Ah+LIaBJScEb7oZgEdW5pxa/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128431},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3.9"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"types":"./dist/workspace/cli-adapter.d.ts","default":"./dist/workspace/cli-adapter.js"},"./mcp":{"types":"./dist/workspace/mcp-server.d.ts","default":"./dist/workspace/mcp-server.js"},"./ohtools":{"types":"./dist/ohtools.d.ts","default":"./dist/ohtools.js"}},"gitHead":"176571356b461905e8f4b9cda97db8d71f0b34bd","scripts":{"test":"bun test","build":"bunx tsc -p tsconfig.build.json","check":"biome check .","ci:lint":"bun run check && bun run typecheck","ci:test":"bun test","prepack":"env TMPDIR=$(node -e \"process.stdout.write(require('node:os').tmpdir())\") XDG_CACHE_HOME=$(node -e \"process.stdout.write(require('node:os').tmpdir())\") BUN_INSTALL_CACHE_DIR=$(node -e \"process.stdout.write(require('node:os').tmpdir() + '/bun-cache')\") bun run build","prepare":"husky","publish":"bun run ci:premerge && npm publish --ignore-scripts","ci:build":"bun run build && node scripts/npm-pack-dry-run.mjs","test:e2e":"bun test tests/e2e","test:unit":"bun test tests/unit/","typecheck":"tsc --noEmit","ci:prepush":"bun run ci:premerge","pack:check":"node scripts/npm-pack-dry-run.mjs","ci:premerge":"bun run ci:lint && bun run ci:test && bun run ci:build","publish:npm":"npm publish --access public","ci:precommit":"bun run ci:lint && bun run test:unit","ohtools:docs":"bunx ohtools --app ./src/ohtools.ts docs","ohtools:list":"bunx ohtools --app ./src/ohtools.ts list","smoke:packed":"bun test tests/e2e/packed-artifact.test.ts","ohtools:graph":"bunx ohtools --app ./src/ohtools.ts graph","release:check":"bun run ci:premerge","prepublishOnly":"bun run ci:premerge","release:dry-run":"bun run ci:premerge"},"_npmUser":{"name":"ggofri","email":"ignaciojulianramirez@gmail.com"},"repository":{"url":"git+https://github.com/bosun-sh/chest.git","type":"git"},"_npmVersion":"11.12.1","description":"Local governance store for AI agent workflows.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"effect":"^3.13.10","@bosun-sh/ohtools":"^0.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","typescript":"^6.0.3","@biomejs/biome":"^2.4.15"},"_npmOperationalInternal":{"tmp":"tmp/chest_0.1.0_1782688976374_0.11139034163384842","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bosun-sh/chest","version":"0.2.0","description":"Local governance store for AI agent workflows.","license":"Apache-2.0","author":{"name":"bosun.sh"},"repository":{"type":"git","url":"git+https://github.com/bosun-sh/chest.git"},"bugs":{"url":"https://github.com/bosun-sh/chest/issues"},"homepage":"https://github.com/bosun-sh/chest#readme","keywords":["ai","governance","mcp","ohtools","workflow","yaml"],"engines":{"bun":">=1.3.9"},"publishConfig":{"access":"public"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ohtools":{"types":"./dist/ohtools.d.ts","default":"./dist/ohtools.js"},"./cli":{"types":"./dist/workspace/cli-adapter.d.ts","default":"./dist/workspace/cli-adapter.js"},"./mcp":{"types":"./dist/workspace/mcp-server.d.ts","default":"./dist/workspace/mcp-server.js"}},"scripts":{"check":"biome check .","typecheck":"tsc --noEmit","test":"bun test","test:unit":"bun test tests/unit/","test:e2e":"bun test tests/e2e","build":"bunx tsc -p tsconfig.build.json","ci:lint":"bun run check && bun run typecheck","ci:build":"bun run build && node scripts/npm-pack-dry-run.mjs","ci:test":"bun test","ci:precommit":"bun run ci:lint && bun run test:unit","ci:premerge":"bun run ci:lint && bun run ci:test && bun run ci:build","ci:prepush":"bun run ci:premerge","pack:check":"node scripts/npm-pack-dry-run.mjs","smoke:packed":"bun test tests/e2e/packed-artifact.test.ts","release:check":"bun run ci:premerge","release:dry-run":"bun run ci:premerge","prepublishOnly":"bun run ci:premerge","publish":"bun run ci:premerge && npm publish --ignore-scripts","publish:npm":"npm publish --access public","prepare":"husky","prepack":"env TMPDIR=$(node -e \"process.stdout.write(require('node:os').tmpdir())\") XDG_CACHE_HOME=$(node -e \"process.stdout.write(require('node:os').tmpdir())\") BUN_INSTALL_CACHE_DIR=$(node -e \"process.stdout.write(require('node:os').tmpdir() + '/bun-cache')\") bun run build","ohtools:list":"bunx ohtools --app ./src/ohtools.ts list","ohtools:docs":"bunx ohtools --app ./src/ohtools.ts docs","ohtools:graph":"bunx ohtools --app ./src/ohtools.ts graph"},"dependencies":{"@bosun-sh/ohtools":"^0.2.0","@modelcontextprotocol/sdk":"^1.29.0","effect":"^3.13.10"},"devDependencies":{"@biomejs/biome":"^2.4.15","husky":"^9.1.7","typescript":"^6.0.3"},"gitHead":"4958af4b0f12403689fedb975b05a6820c55341e","_id":"@bosun-sh/chest@0.2.0","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-NFc97vn9c1q/sc767vz7O4Z/EBz0hug1d6/+zdtro1fqii/k/acnfIBKrMqI8LLNlILlXobIzwWV5smXc8Mi8A==","shasum":"4a7fd38a3e77bff969bf34e6676d0e08afd8bd87","tarball":"https://registry.npmjs.org/@bosun-sh/chest/-/chest-0.2.0.tgz","fileCount":140,"unpackedSize":128498,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDje95QFDRLrYziYbnnt4xsUhnLmKJkTNmf26Ok0SE0EgIhAI/gFS0UGNByLmqz797wEpHdaGxrqhNwU3ooB1qGFsVQ"}]},"_npmUser":{"name":"ggofri","email":"ignaciojulianramirez@gmail.com"},"directories":{},"maintainers":[{"name":"ggofri","email":"ignaciojulianramirez@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chest_0.2.0_1782690077776_0.27130839632714876"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-03T23:50:48.873Z","modified":"2026-06-28T23:41:18.079Z","0.0.1":"2026-06-03T23:50:49.184Z","0.1.0":"2026-06-28T23:22:56.512Z","0.2.0":"2026-06-28T23:41:17.932Z"},"bugs":{"url":"https://github.com/bosun-sh/chest/issues"},"author":{"name":"bosun.sh"},"license":"Apache-2.0","homepage":"https://github.com/bosun-sh/chest#readme","keywords":["ai","governance","mcp","ohtools","workflow","yaml"],"repository":{"type":"git","url":"git+https://github.com/bosun-sh/chest.git"},"description":"Local governance store for AI agent workflows.","maintainers":[{"name":"ggofri","email":"ignaciojulianramirez@gmail.com"}],"readme":"# Chest\n\n[![CI](https://github.com/bosun-sh/chest/actions/workflows/ci.yml/badge.svg)](https://github.com/bosun-sh/chest/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/@bosun-sh/chest)](https://www.npmjs.com/package/@bosun-sh/chest)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)\n\nChest is an open-source self-governance store for AI agent workflows.\n\nIt keeps project governance criteria in local, versioned files so agents can\nplan, execute, and validate work against explicit goals without turning every\ndecision into a human checkpoint.\n\n## Install\n\n```sh\nbun add @bosun-sh/chest\n```\n\nThe package is published as a normal npm artifact and exposes:\n\n- `@bosun-sh/chest` for the core registry and tool IDs\n- `@bosun-sh/chest/ohtools` for the default prewired Ohtools app\n- `@bosun-sh/chest/cli` for the CLI-attached app\n- `@bosun-sh/chest/mcp` for the stdio MCP app\n\n## Use\n\nIf you want to embed Chest in your own launcher, import the registry or one of\nthe ready-made app entrypoints:\n\n```ts\nimport { createChestApp, chestCliApp, chestMcpApp, chestToolIds } from \"@bosun-sh/chest\";\nimport chestApp from \"@bosun-sh/chest/ohtools\";\n\nconsole.log(chestToolIds.length);\nconsole.log(chestApp.build().adapters.has(\"mcp\"));\nconsole.log(chestCliApp.build().adapters.has(\"cli\"));\nconsole.log(chestMcpApp.build().adapters.has(\"mcp\"));\n\nconst registry = createChestApp().build();\nconsole.log([...registry.tools.keys()]);\n```\n\nTo launch Chest through `ohtools`, create a tiny local wrapper and point the CLI\nat it:\n\n```ts\n// chest-app.ts\nimport chestApp from \"@bosun-sh/chest/ohtools\";\n\nexport default chestApp;\n```\n\n```sh\nbunx ohtools --app ./chest-app.ts list\n```\n\n## What It Solves\n\nAI-assisted workflows often need governance, but repeated checkpoints can turn\ninto a throughput bottleneck. Chest is designed for projects where the agent\ncan evaluate most decisions against machine-verifiable criteria instead of\nstopping for approval every time.\n\nChest organizes that governance around:\n\n1. OKRs\n2. KPIs\n3. Definition of Ready\n4. Definition of Done\n\nThe project is based on the intervention-penalty problem described in:\n[The Intervention Penalty: A Simulation Study of Human Checkpoint Costs in AI Coding Governance](https://zenodo.org/records/19457265).\n\n## Storage\n\nChest stores its local state under `.chest/` by default:\n\n- `.chest/okrs.yaml`\n- `.chest/kpis.yaml`\n- `.chest/definition-of-ready.yaml`\n- `.chest/definition-of-done.yaml`\n- `.chest/reports/*.yaml`\n\nSet `CHEST_HOME` to redirect the store to another location.\n\n## Current State\n\nChest is implemented as a real `@bosun-sh/ohtools` registry with 20 Chest tool\nIDs exposed through the CLI and MCP surfaces. The checked-in implementation\nincludes:\n\n1. `src/ohtools.ts` as the registry composition root used by `bunx ohtools`.\n2. `src/workspace/cli-adapter.ts` for CLI attachment.\n3. `src/workspace/mcp-server.ts` as the stdio MCP bridge used by the e2e parity\n   test.\n4. YAML-backed OKR, KPI, DoR, DoD, validation, judge, and report workflows.\n5. Validation and report tools that persist report files under `.chest/reports/`.\n\n## Development\n\nThe repo uses the same commands locally and in CI:\n\n```sh\nbun run lint\nbun run test:unit\nbun run test:e2e\nbun run build\nbun run pack:check\nbun run smoke:packed\n```\n\nGit hooks are managed with Husky:\n\n- `pre-commit` runs `lint` and `test:unit`\n- `pre-push` runs `test:e2e` and `build`\n\nCLI error envelopes are JSON and exit nonzero; capture the error stream when\nparsing failures such as `OHTOOLS_VALIDATION_ERROR`.\n\n## Repository Layout\n\n- `src/` contains the Chest registry, adapters, domain slices, ports, and workspace helpers.\n- `tests/` contains unit, integration, and e2e coverage.\n- `docs/` contains the contract specs for the implemented v1 feature slices.\n- `.github/workflows/ci.yml` defines the GitHub Actions pipeline.\n\n## Contributing\n\nIssues and pull requests are welcome.\n\nIf you plan to change behavior, keep the docs, tests, and public tool surface\naligned with the implementation. The repo is intended to stay easy for agents\nand humans to navigate.\n\n## License\n\nApache-2.0. See [`LICENSE`](LICENSE) and [`package.json`](package.json) for the current license declaration.\n","readmeFilename":"README.md"}