{"_id":"@darkdepot/tatami","_rev":"2-f0993636f8e8ea790262f98842c4963f","name":"@darkdepot/tatami","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@darkdepot/tatami","version":"0.1.0","license":"MIT","_id":"@darkdepot/tatami@0.1.0","maintainers":[{"name":"darkdepot","email":"sasha@darkdepot.io"}],"homepage":"https://github.com/darkdepot/tatami#readme","bugs":{"url":"https://github.com/darkdepot/tatami/issues"},"dist":{"shasum":"cd476c0f9af0b9be639c181510d6865ad3ff2d90","tarball":"https://registry.npmjs.org/@darkdepot/tatami/-/tatami-0.1.0.tgz","fileCount":5,"integrity":"sha512-kT3ljHdx4zkCYLF7uoUrGOdLivkyUterwnStOSZ30wm2KwKDKH4T0zl+LqSCAgTN8P3LdKSFUI3/6+PxQ0AESQ==","signatures":[{"sig":"MEQCIGUlrKUh01Z8ImO9VbivXMHKIS+HzrnmDWnQ2DueijIGAiA/cBCaNgErqqWrxf/SSaNb9k9x7pGD8cXVJfuDJlTr1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12894},"main":"src/index.ts","type":"module","engines":{"node":">=22"},"scripts":{"smoke":"node --experimental-strip-types scripts/smoke.ts","typecheck":"tsc --noEmit","ship:preflight":"npm run typecheck && npm run smoke","ship:report:check":"node --experimental-strip-types scripts/ship-report-check.ts"},"_npmUser":{"name":"darkdepot","email":"sasha@darkdepot.io"},"repository":{"url":"git+https://github.com/darkdepot/tatami.git","type":"git"},"_npmVersion":"10.9.3","description":"Context layer plugin for OpenClaw","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.14"},"_npmOperationalInternal":{"tmp":"tmp/tatami_0.1.0_1773062012930_0.8349233842939672","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@darkdepot/tatami","version":"0.1.1","description":"Context layer plugin for OpenClaw","type":"module","main":"src/index.ts","openclaw":{"extensions":["./src/index.ts"]},"engines":{"node":">=22"},"scripts":{"typecheck":"tsc --noEmit","smoke":"node --experimental-strip-types scripts/smoke.ts","ship:preflight":"npm run typecheck && npm run smoke","ship:report:check":"node --experimental-strip-types scripts/ship-report-check.ts"},"repository":{"type":"git","url":"git+https://github.com/darkdepot/tatami.git"},"publishConfig":{"access":"public"},"license":"MIT","devDependencies":{"@types/node":"^22.13.14","typescript":"^5.8.2"},"_id":"@darkdepot/tatami@0.1.1","bugs":{"url":"https://github.com/darkdepot/tatami/issues"},"homepage":"https://github.com/darkdepot/tatami#readme","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-8q2dvLa/hD04fGPfsLd/nzuIpq1uLKy4Z1mDjSwIuY/EJQYuPcLAJEaYbqZoFrsdZGGZ+xj5GecCBDajj0KWhg==","shasum":"04fff128517acff7bd0f403f46b2301c8204d75a","tarball":"https://registry.npmjs.org/@darkdepot/tatami/-/tatami-0.1.1.tgz","fileCount":5,"unpackedSize":13239,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDJHUkNwW+MGTPrdaJAANeHqtKTwlEjjQarlcgCsARJIAiAxN6/u/kRrPdm1Bvp3Wv7rO2l/7z8f7KC6nQiiZgOekw=="}]},"_npmUser":{"name":"darkdepot","email":"sasha@darkdepot.io"},"directories":{},"maintainers":[{"name":"darkdepot","email":"sasha@darkdepot.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tatami_0.1.1_1773078544224_0.9312274299394481"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-09T13:13:32.797Z","modified":"2026-03-09T17:49:04.462Z","0.1.0":"2026-03-09T13:13:33.068Z","0.1.1":"2026-03-09T17:49:04.369Z"},"bugs":{"url":"https://github.com/darkdepot/tatami/issues"},"license":"MIT","homepage":"https://github.com/darkdepot/tatami#readme","repository":{"type":"git","url":"git+https://github.com/darkdepot/tatami.git"},"description":"Context layer plugin for OpenClaw","maintainers":[{"name":"darkdepot","email":"sasha@darkdepot.io"}],"readme":"# Tatami\n\nTatami is a generic OpenClaw plugin that appends extra workspace context to the\nagent system prompt on every `before_prompt_build` run.\n\nIt replaces two legacy workspace hooks:\n\n- `inject-context` for `context/*.md`\n- `session-context` for per-session docs in `docs/<project>/`\n\n## What It Injects\n\nTatami loads two context sources in this order:\n\n1. All `*.md` files from `workspace/context/` (or the configured `contextDir`)\n2. Project docs for the current session, resolved from\n   `context/session-settings.json` into `workspace/docs/<project>/`\n\nThe plugin appends content through `appendSystemContext`, so it extends the\ncore OpenClaw workspace context instead of replacing it.\n\n## Install\n\n```bash\n# Standard install from npm\nopenclaw plugins install @darkdepot/tatami\n\n# Update later from npm\nopenclaw plugins update tatami\n\n# Local development link\nopenclaw plugins install -l ./path/to/tatami\n\n# Local tarball or release artifact\nopenclaw plugins install ./darkdepot-tatami-0.1.1.tgz\n```\n\nVerify installation:\n\n```bash\nopenclaw plugins list\nopenclaw plugins doctor\n```\n\n## Configuration\n\nConfigure Tatami in `openclaw.json`:\n\n```json5\n{\n  plugins: {\n    entries: {\n      tatami: {\n        enabled: true,\n        config: {\n          contextDir: \"context\",\n          docsDir: \"docs\",\n          maxCharsPerFile: 20000,\n          maxCharsTotal: 100000\n        }\n      }\n    }\n  }\n}\n```\n\nConfiguration keys:\n\n- `contextDir`: workspace-relative directory for shared markdown context files\n- `docsDir`: workspace-relative directory for project documentation\n- `maxCharsPerFile`: truncates each loaded file to this many characters\n- `maxCharsTotal`: stops appending more files after this total content budget\n\n## Session Settings Contract\n\nTatami reads `context/session-settings.json` and resolves the current project by\nexact `sessionKey`.\n\n```json\n{\n  \"agent:iris:s-42a532b8\": {\n    \"projectId\": \"session-context\",\n    \"projectName\": \"Session Context\"\n  }\n}\n```\n\n- `projectId` is the directory name under `docs/`\n- `_project.md` is loaded first, then the remaining markdown files are sorted\n  alphabetically\n- project paths are checked so a `projectId` cannot escape the configured\n  `docsDir`\n\nFor long-lived installs, prefer the npm package. Local `-l` installs are best\nfor development.\n\n## Development Notes\n\n- Node.js 22+\n- TypeScript is loaded directly by OpenClaw via jiti\n- No build step is required\n- Local validation: `npm install && npm run ship:preflight`\n- Ship report: `npm run ship:report:check`\n- Release sanity check: `npm pack --dry-run`\n","readmeFilename":"README.md"}