{"_id":"@buresmi7/agent-doc-rules-docs-duplicates","_rev":"7-3731220021d99638bb13a75cf5a2c50e","name":"@buresmi7/agent-doc-rules-docs-duplicates","dist-tags":{"latest":"0.12.0"},"versions":{"0.8.2":{"name":"@buresmi7/agent-doc-rules-docs-duplicates","version":"0.8.2","license":"MIT","_id":"@buresmi7/agent-doc-rules-docs-duplicates@0.8.2","maintainers":[{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"}],"bin":{"agent-doc-rules-docs-duplicates":"bin/agent-doc-rules-docs-duplicates.mjs"},"dist":{"shasum":"9411aa630916209a29072aa84f2520ee6d48b403","tarball":"https://registry.npmjs.org/@buresmi7/agent-doc-rules-docs-duplicates/-/agent-doc-rules-docs-duplicates-0.8.2.tgz","fileCount":11,"integrity":"sha512-v5Z/k6eLCryS5PRC5R9PFK63f6hosC/ykJfxHiJ4nluMKuef4Gt2kKRr/XAV6Zjyt0NBPHXzKonsJPrAFMcf7A==","signatures":[{"sig":"MEUCIQDepWusf08tkjg5pk86VHw6P6ccgk7npzADhqHWIj9EvgIgHZ+8mhlHm8SNh72z4+dN0lG2X5Bl7Ycd/BUOX10Sygs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35963},"type":"module","gitHead":"f2bdefa0b13237038cd5ec10a23a48542c61222d","private":false,"scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"},"_npmVersion":"10.9.7","description":"Semantic documentation duplicate checker powered by Codex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"unified":"^11.0.5","fast-glob":"^3.3.3","remark-parse":"^11.0.0","@openai/codex":"^0.142.0","unist-util-visit":"^5.0.0","sentence-splitter":"^5.0.1","mdast-util-to-string":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-doc-rules-docs-duplicates_0.8.2_1782682982526_0.2978178977338717","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Retired: install @buresmi7/agent-doc-rules-skill and use @buresmi7/agent-doc-rules-docs-validator for deterministic candidates."},"0.9.0":{"name":"@buresmi7/agent-doc-rules-docs-duplicates","version":"0.9.0","license":"MIT","_id":"@buresmi7/agent-doc-rules-docs-duplicates@0.9.0","maintainers":[{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"}],"bin":{"agent-doc-rules-docs-duplicates":"bin/agent-doc-rules-docs-duplicates.mjs"},"dist":{"shasum":"5645a3358ef5ddc3c09ae01be02f2e9c04deae48","tarball":"https://registry.npmjs.org/@buresmi7/agent-doc-rules-docs-duplicates/-/agent-doc-rules-docs-duplicates-0.9.0.tgz","fileCount":11,"integrity":"sha512-pbshtey/vYUixpW75wZxX/Sa0NbH43zkPZF3PvN2/f1rr9gNaSHm/c1KUnY+wAhFY7PKGQN6IHd85Mo3aKNUXA==","signatures":[{"sig":"MEQCIBJHqQsWXssuXPRxye5etr7lOrrLDajfsoWTnnWhIdJqAiAUn8Ep7WYowDmDDHzgJyWgKjex6VBzYkkmbV9g65LPSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36277},"type":"module","gitHead":"35fd571859fdf28fc1cacfbf779969b85c563451","private":false,"scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"},"_npmVersion":"10.9.8","description":"Semantic documentation duplicate checker powered by Codex","directories":{},"_nodeVersion":"22.23.1","dependencies":{"unified":"^11.0.5","fast-glob":"^3.3.3","remark-parse":"^11.0.0","@openai/codex":"^0.142.0","unist-util-visit":"^5.0.0","sentence-splitter":"^5.0.1","mdast-util-to-string":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-doc-rules-docs-duplicates_0.9.0_1784097942782_0.35743567068887905","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Retired: install @buresmi7/agent-doc-rules-skill and use @buresmi7/agent-doc-rules-docs-validator for deterministic candidates."},"0.10.0":{"name":"@buresmi7/agent-doc-rules-docs-duplicates","version":"0.10.0","license":"MIT","_id":"@buresmi7/agent-doc-rules-docs-duplicates@0.10.0","maintainers":[{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"}],"bin":{"agent-doc-rules-docs-duplicates":"bin/agent-doc-rules-docs-duplicates.mjs"},"dist":{"shasum":"d56051f083d5a4596aa64d0bc30ef154dd1a2557","tarball":"https://registry.npmjs.org/@buresmi7/agent-doc-rules-docs-duplicates/-/agent-doc-rules-docs-duplicates-0.10.0.tgz","fileCount":11,"integrity":"sha512-HDKD2GEcacBWCIkbDN305imjaJVUujCx6ACXICv5j5BwGJEsey6JVChsXG/o2Mtb1YMn84sTdQeb8ksNUk+F/Q==","signatures":[{"sig":"MEUCIFdQoVO+KcDIWDNHLwAi9FREiwv3ukDhM0TVTsgEWxU2AiEA3kcoIK7zh5+yMzcnXHQYy2aCuI0bvXtHmf5ZzaMps5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36278},"type":"module","gitHead":"733f55f3649dde4d26a1c8a67dffefe6c93d4822","private":false,"scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"},"_npmVersion":"10.9.8","description":"Semantic documentation duplicate checker powered by Codex","directories":{},"_nodeVersion":"22.23.1","dependencies":{"unified":"^11.0.5","fast-glob":"^3.3.3","remark-parse":"^11.0.0","@openai/codex":"^0.142.0","unist-util-visit":"^5.0.0","sentence-splitter":"^5.0.1","mdast-util-to-string":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-doc-rules-docs-duplicates_0.10.0_1784806412981_0.530509008738693","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Retired: install @buresmi7/agent-doc-rules-skill and use @buresmi7/agent-doc-rules-docs-validator for deterministic candidates."},"0.11.0":{"name":"@buresmi7/agent-doc-rules-docs-duplicates","version":"0.11.0","license":"MIT","_id":"@buresmi7/agent-doc-rules-docs-duplicates@0.11.0","maintainers":[{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"}],"bin":{"agent-doc-rules-docs-duplicates":"bin/agent-doc-rules-docs-duplicates.mjs"},"dist":{"shasum":"2dc2c5df0c648e23166eb7463e812b5f2d3a0dba","tarball":"https://registry.npmjs.org/@buresmi7/agent-doc-rules-docs-duplicates/-/agent-doc-rules-docs-duplicates-0.11.0.tgz","fileCount":11,"integrity":"sha512-hKqVlNNfHpyUj+Ap4iBwWI/kUguq52u9W1iFYK2FNaqXZhwUc23C4g1PRkwHKisF96hRBlSWp2RXBRxYZN/LVg==","signatures":[{"sig":"MEYCIQC3/0ZJB45K9FbUYzW6gwRmEp+8Oh4tmepr4FXphJortAIhAJ0T7L0H9QoiIB8DLS1Evt0vlSMhMr4oDrxrmaEH3voQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36278},"type":"module","gitHead":"cea09c3bb9e0f519be26e639abb337755b7015e7","private":false,"scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"},"_npmVersion":"10.9.8","description":"Semantic documentation duplicate checker powered by Codex","directories":{},"_nodeVersion":"22.23.1","dependencies":{"unified":"^11.0.5","fast-glob":"^3.3.3","remark-parse":"^11.0.0","@openai/codex":"^0.142.0","unist-util-visit":"^5.0.0","sentence-splitter":"^5.0.1","mdast-util-to-string":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-doc-rules-docs-duplicates_0.11.0_1784885901418_0.9006317131846806","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Retired: install @buresmi7/agent-doc-rules-skill and use @buresmi7/agent-doc-rules-docs-validator for deterministic candidates."},"0.11.1":{"name":"@buresmi7/agent-doc-rules-docs-duplicates","version":"0.11.1","license":"MIT","_id":"@buresmi7/agent-doc-rules-docs-duplicates@0.11.1","maintainers":[{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"}],"homepage":"https://github.com/buresmi7/agent-doc-rules/tree/master/packages/docs-duplicates#readme","bugs":{"url":"https://github.com/buresmi7/agent-doc-rules/issues"},"bin":{"agent-doc-rules-docs-duplicates":"bin/agent-doc-rules-docs-duplicates.mjs"},"dist":{"shasum":"bf9e5d6003eb4c8d90e516b31d4c88a90c8a2cbe","tarball":"https://registry.npmjs.org/@buresmi7/agent-doc-rules-docs-duplicates/-/agent-doc-rules-docs-duplicates-0.11.1.tgz","fileCount":11,"integrity":"sha512-Z+/YQyK7aW1tEfd3V20J9JxghXyECJeHW1DpStGCjZRoy4BTZbu7dFcoTvHXeEzz3xt2lt3aVCTn2YYEOKq1Bg==","signatures":[{"sig":"MEQCIAnaeWRE5I5JsxtrqFd8+0tgrSAeBXGkEXNeRbIXr5j5AiBN9nraLm2S+NMUG6cNaNDFu4WlxLXWkYKOGuAE3/djhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36616},"type":"module","gitHead":"50f28d67ca619291e035d5fb794378936011b623","private":false,"scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"},"repository":{"url":"git+https://github.com/buresmi7/agent-doc-rules.git","type":"git","directory":"packages/docs-duplicates"},"_npmVersion":"10.9.8","description":"Semantic documentation duplicate checker powered by Codex","directories":{},"_nodeVersion":"22.23.1","dependencies":{"unified":"^11.0.5","fast-glob":"^3.3.3","remark-parse":"^11.0.0","@openai/codex":"^0.142.0","unist-util-visit":"^5.0.0","sentence-splitter":"^5.0.1","mdast-util-to-string":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-doc-rules-docs-duplicates_0.11.1_1785418461778_0.7886073952552055","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Retired: install @buresmi7/agent-doc-rules-skill and use @buresmi7/agent-doc-rules-docs-validator for deterministic candidates."},"0.12.0":{"name":"@buresmi7/agent-doc-rules-docs-duplicates","version":"0.12.0","license":"MIT","_id":"@buresmi7/agent-doc-rules-docs-duplicates@0.12.0","maintainers":[{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"}],"homepage":"https://github.com/buresmi7/agent-doc-rules/tree/master/packages/docs-duplicates#readme","bugs":{"url":"https://github.com/buresmi7/agent-doc-rules/issues"},"bin":{"agent-doc-rules-docs-duplicates":"bin/agent-doc-rules-docs-duplicates.mjs"},"dist":{"shasum":"a5220e81e924af2c0f4eaa7ebdcb363301e26aa2","tarball":"https://registry.npmjs.org/@buresmi7/agent-doc-rules-docs-duplicates/-/agent-doc-rules-docs-duplicates-0.12.0.tgz","fileCount":12,"integrity":"sha512-mB2yB62qFde9KskoRMSitgHbzxX1LNGzNrPogSoVugQFQqlDNWgHPBLQ4f49EeDyRJshk+WsF2uKO/G4IgCTpQ==","signatures":[{"sig":"MEYCIQDFySv1nVs48MhwWBEsOCY8XGohWIezVPIiQ73uLjRLjgIhAJFcGfd4WYPQzRgIGNU+9twLusKLlvmpyQgh9Uy4X4wA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45938},"type":"module","_from":"file:/tmp/agent-doc-rules-release-46A9PI/publish-artifacts/buresmi7-agent-doc-rules-docs-duplicates-0.12.0.tgz","private":false,"scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"},"_resolved":"/tmp/agent-doc-rules-release-46A9PI/publish-artifacts/buresmi7-agent-doc-rules-docs-duplicates-0.12.0.tgz","_integrity":"sha512-mB2yB62qFde9KskoRMSitgHbzxX1LNGzNrPogSoVugQFQqlDNWgHPBLQ4f49EeDyRJshk+WsF2uKO/G4IgCTpQ==","repository":{"url":"git+https://github.com/buresmi7/agent-doc-rules.git","type":"git","directory":"packages/docs-duplicates"},"_npmVersion":"10.9.8","description":"Semantic documentation duplicate checker powered by Codex","directories":{},"_nodeVersion":"22.23.2","dependencies":{"unified":"^11.0.5","fast-glob":"^3.3.3","cross-spawn":"^7.0.6","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","sentence-splitter":"^5.0.1","mdast-util-to-string":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-doc-rules-docs-duplicates_0.12.0_1786743066801_0.3850491772456712","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Retired: install @buresmi7/agent-doc-rules-skill and use @buresmi7/agent-doc-rules-docs-validator for deterministic candidates."}},"time":{"created":"2026-06-28T21:43:02.389Z","modified":"2026-08-17T10:53:14.694Z","0.8.2":"2026-06-28T21:43:02.657Z","0.9.0":"2026-07-15T06:45:42.948Z","0.10.0":"2026-07-23T11:33:33.110Z","0.11.0":"2026-07-24T09:38:21.565Z","0.11.1":"2026-07-30T13:34:21.922Z","0.12.0":"2026-08-14T21:31:06.955Z"},"bugs":{"url":"https://github.com/buresmi7/agent-doc-rules/issues"},"license":"MIT","homepage":"https://github.com/buresmi7/agent-doc-rules/tree/master/packages/docs-duplicates#readme","repository":{"url":"git+https://github.com/buresmi7/agent-doc-rules.git","type":"git","directory":"packages/docs-duplicates"},"description":"Semantic documentation duplicate checker powered by Codex","maintainers":[{"name":"michal-buresmi7","email":"michal.ezop@gmail.com"}],"readme":"# Docs AI Review\n\n`@buresmi7/agent-doc-rules-docs-duplicates` provides Codex-backed documentation review.\nIt checks likely semantic duplicates and can review Markdown sentences for\nstyle issues.\n\n## Install\n\n```bash\npnpm add -D @buresmi7/agent-doc-rules-docs-duplicates\n```\n\n## Command\n\n```bash\nagent-doc-rules-docs-duplicates check\nagent-doc-rules-docs-duplicates style\n```\n\n`check` and `duplicates` run semantic duplicate review. `style` runs AI review\nfor Markdown sentences.\n\n## Codex CLI Requirement\n\n`check` and `style` require Codex CLI 0.142.0 or later. The selected executable\nmust report a compatible version through `codex --version`. This package does\nnot install Codex by default or download an executable at runtime.\n\nThe command selects an executable in this order:\n\n1. An explicit `--codex-bin`, `docs.duplicates.codexBin`, or\n   `docs.style.codexBin` value. The CLI flag overrides the matching config\n   value.\n2. A compatible `codex` executable from `PATH`.\n3. A compatible project-local `@openai/codex` installation.\n\nInstall Codex on `PATH`:\n\n```bash\nnpm install --global @openai/codex\n```\n\nRun the same command to update an existing npm installation. To opt into the\nproject-local fallback instead, install Codex in the project that runs the\nreview:\n\n```bash\npnpm add -D @openai/codex\n```\n\nAuthenticate the selected CLI before running a review, then check its status.\nThese commands assume that the executable is on `PATH`:\n\n```bash\ncodex login\ncodex login status\n```\n\nFor the project-local fallback, replace `codex` with `pnpm exec codex`. For an\nexplicit executable path, run the same subcommands through that executable.\n\nCodex also supports API-key authentication. See the\n[Codex authentication documentation](https://developers.openai.com/codex/auth)\nfor the supported sign-in methods.\n\nThe authenticated account must have access to the configured model. Both\nreview commands require outbound access to the configured model provider,\nconsume model usage, and can incur API charges.\n\nBoth commands invoke `codex exec` with a read-only sandbox and an ephemeral\nsession. This keeps agent actions read-only and avoids persisted session files;\nit does not remove the model-provider network requirement.\n\nDefault model settings for both AI checks:\n\n- model: `gpt-5-nano`\n- reasoning effort: `low`\n\n`gpt-5-nano` is the default because duplicate review is a classification task\nand OpenAI positions the nano GPT-5 variant as the fastest, lowest-cost GPT-5\noption for tasks such as summarization and classification.\n\nUse `--model <model>` or `agent-doc-rules.config.json` when your Codex account\ndoes not expose the default model.\n\n## Flow\n\n1. Parse Markdown prose into text units.\n2. Skip code blocks, short noise, and `references/` directories by default.\n3. Build candidates with normalized exact matching, shingle overlap, word\n   overlap, and string similarity.\n4. Remove candidates that match configured `ignorePairs`.\n5. Send only candidate pairs to Codex.\n6. Map structured Codex JSON to `fail`, `warn`, and `ok`.\n\n`fail` returns a non-zero exit code. Warning-only results return zero.\n\n## Style Review\n\nStyle review parses Markdown into sentence units, sends only those units to\nCodex, and asks for `fail` or `warn` findings. It is meant for judgment calls\nsuch as unclear workflow names, vague AI-like phrasing, long sentences, or\nsentences that are understandable but need a maintainer rewrite.\n\nUse deterministic wording checks for known banned terms. Use AI style review\nwhen the question depends on the sentence.\n\n## Config\n\nDuplicate settings live under `docs.duplicates` in the root\n`agent-doc-rules.config.json`. Command-line flags take precedence.\n\n```json\n{\n  \"docs\": {\n    \"duplicates\": {\n      \"includeReferences\": false,\n      \"ignorePairs\": [\n        {\n          \"left\": \"^e2e/\",\n          \"right\": \"^e2e/\",\n          \"reason\": \"E2E fixtures intentionally repeat scenario facts.\"\n        }\n      ],\n      \"warnScore\": 0.78,\n      \"failScore\": 0.92,\n      \"model\": \"gpt-5-nano\",\n      \"reasoningEffort\": \"low\"\n    },\n    \"style\": {\n      \"includeReferences\": false,\n      \"maxUnits\": 80,\n      \"model\": \"gpt-5-nano\",\n      \"reasoningEffort\": \"low\"\n    }\n  }\n}\n```\n\nSee the skill package [Config Reference](../agent-doc-rules-skill/docs/config-reference.md)\nfor `ignorePairs` fields and shared include, exclude, wording, and AI style\nsettings.\n\nThe duplicate-review workflow is derived from the earlier `meta-work`\ndocumentation maintenance workflow, where deterministic duplicate candidates\nwere reviewed separately from Markdown and link checks.\n","readmeFilename":"README.md"}