{"_id":"@chrono-os/compliance-gate","_rev":"4-6d0052e28a323bc1021b15d9a5f87932","name":"@chrono-os/compliance-gate","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@chrono-os/compliance-gate","version":"0.1.0","keywords":["compliance","lint","copy","brand-voice","oab","deterministic","chrono-os"],"license":"MIT","_id":"@chrono-os/compliance-gate@0.1.0","maintainers":[{"name":"sugarhoneyicetea","email":"aquilaferraz@gmail.com"}],"homepage":"https://github.com/SugarHoneyIceTea/compliance-gate#readme","bugs":{"url":"https://github.com/SugarHoneyIceTea/compliance-gate/issues"},"dist":{"shasum":"d7bf7720891448cb7227b790f9191ad97379b1fe","tarball":"https://registry.npmjs.org/@chrono-os/compliance-gate/-/compliance-gate-0.1.0.tgz","fileCount":8,"integrity":"sha512-ChE7v4j7Tz1OqsMXHZS4UE4NWG1KNHv2sUCUMzvtRjSUSed7LNZa6LQcgJ97yzmPxaq+V0kAR2Hu8AZjeQMXVg==","signatures":[{"sig":"MEYCIQC/lXkHV0pzlqinYMZQhiEVaDyjZLzKsPZpb7Ojx0OiOgIhAIqyu53jkQEYFsPKy6sxrgP0rDibgbOaL+Ok78VH3r7P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73144},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"sugarhoneyicetea","email":"aquilaferraz@gmail.com"},"repository":{"url":"git+https://github.com/SugarHoneyIceTea/compliance-gate.git","type":"git"},"_npmVersion":"11.9.0","description":"Gate determinístico de compliance de copy — lint barato de texto por ruleset configurável por marca (forbid list + regex), zero deps de runtime. Rulesets seed: oab (publicidade advocatícia), brand-base (vícios universais de copy) e nina (tom do SobreViven","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^3","typescript":"^5.6.0","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/compliance-gate_0.1.0_1783845592624_0.5205688958650416","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@chrono-os/compliance-gate","version":"0.1.1","keywords":["compliance","lint","copy","brand-voice","oab","deterministic","chrono-os"],"license":"MIT","_id":"@chrono-os/compliance-gate@0.1.1","maintainers":[{"name":"sugarhoneyicetea","email":"aquilaferraz@gmail.com"}],"homepage":"https://github.com/SugarHoneyIceTea/compliance-gate#readme","bugs":{"url":"https://github.com/SugarHoneyIceTea/compliance-gate/issues"},"dist":{"shasum":"95e87b7c20ac3d93dead3bbc63399f984b0a2513","tarball":"https://registry.npmjs.org/@chrono-os/compliance-gate/-/compliance-gate-0.1.1.tgz","fileCount":8,"integrity":"sha512-EEtNbGmOh/q9PJgekoFSaq6rApWDIWxHYnHM17a0u9wJs9iTT4A2WR2L8A4XqODWji2xSfdXSiLWtsMK0ArPpQ==","signatures":[{"sig":"MEYCIQDDhuLCvCWOkirYrR1Rb+mMy9nfMPbBamdEowZLFxT9fwIhAJkibrrDLO2Jk/OZLRI0UJytp/RQ3at0oYvDuoA6mXwo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74904},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"5af2d43d3708649f9c32f90bc605058f1d1f6b16","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"sugarhoneyicetea","email":"aquilaferraz@gmail.com"},"repository":{"url":"git+https://github.com/SugarHoneyIceTea/compliance-gate.git","type":"git"},"_npmVersion":"11.9.0","description":"Gate determinístico de compliance de copy — lint barato de texto por ruleset configurável por marca (forbid list + regex), zero deps de runtime. Rulesets seed: oab (publicidade advocatícia), brand-base (vícios universais de copy) e nina (tom do SobreViven","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^3","typescript":"^5.6.0","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/compliance-gate_0.1.1_1784270792597_0.7700184690548195","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@chrono-os/compliance-gate","version":"0.1.2","keywords":["compliance","lint","copy","brand-voice","oab","deterministic","chrono-os"],"license":"MIT","_id":"@chrono-os/compliance-gate@0.1.2","maintainers":[{"name":"sugarhoneyicetea","email":"aquilaferraz@gmail.com"}],"homepage":"https://github.com/SugarHoneyIceTea/compliance-gate#readme","bugs":{"url":"https://github.com/SugarHoneyIceTea/compliance-gate/issues"},"dist":{"shasum":"7148a88f6125aa1bcb8bd7bbf6a3d52dc665f92f","tarball":"https://registry.npmjs.org/@chrono-os/compliance-gate/-/compliance-gate-0.1.2.tgz","fileCount":8,"integrity":"sha512-sdMWHAVQeIfRaj6D343gn1Vp7Wbr6BLSol9UJJRtPmUEycq/pO9PIN8gBpGrmSipv8+JRd0jW7RNusRdovCYVw==","signatures":[{"sig":"MEUCIQD67ppLMnFH/h6cpMeM0UfPZk3HdSXevVw98DWIQ9PgigIgCUG7XpU5hK2rlrXj/FF+LdPmd8LJMmImco75e+ECYVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75302},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"99b5d3eeb637358d38b3d4b8f63226b98e85fdc3","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"sugarhoneyicetea","email":"aquilaferraz@gmail.com"},"repository":{"url":"git+https://github.com/SugarHoneyIceTea/compliance-gate.git","type":"git"},"_npmVersion":"11.9.0","description":"Gate determinístico de compliance de copy — lint barato de texto por ruleset configurável por marca (forbid list + regex), zero deps de runtime. Rulesets seed: oab (publicidade advocatícia), brand-base (vícios universais de copy) e nina (tom do SobreViven","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^3","typescript":"^5.6.0","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/compliance-gate_0.1.2_1784272344588_0.5123502577997905","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"_id":"@chrono-os/compliance-gate@0.1.3","bugs":{"url":"https://github.com/SugarHoneyIceTea/compliance-gate/issues"},"dist":{"shasum":"2d724346404dbbe8d9b95e206003ed602f16f3da","tarball":"https://registry.npmjs.org/@chrono-os/compliance-gate/-/compliance-gate-0.1.3.tgz","fileCount":8,"integrity":"sha512-HEh2T/PWESouHamwebYzuiaCFLGtMldC5u/BRx+NK0DvSKsUNPzFSfFy94Ndcwd51bEkNFDnpkSoGtCPPHKF3w==","signatures":[{"sig":"MEUCIQCB01NfYLVGiFqKfDVH8vn+n5mpnRlmvkjA4HLP1FhHMAIgYUXTn+USP+206aCwz36ea6YYZn+XwctuKnybp4/jB4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDsAbJmxlMZ3Zxm/O68UUdsDLSoWZWhp62sF2xFENxwcAiATWn17Ukar0hTxViOUcMXSDM5Vg6ka/gzf0ycLyMjbLg=="}],"unpackedSize":75400},"main":"./dist/index.cjs","name":"@chrono-os/compliance-gate","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"6c9442e0c8130bc0ed728d5fbd8a48e1342f6a69","license":"MIT","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"version":"0.1.3","_npmUser":{"name":"sugarhoneyicetea","email":"aquilaferraz@gmail.com"},"homepage":"https://github.com/SugarHoneyIceTea/compliance-gate#readme","keywords":["compliance","lint","copy","brand-voice","oab","deterministic","chrono-os"],"repository":{"url":"git+https://github.com/SugarHoneyIceTea/compliance-gate.git","type":"git"},"_npmVersion":"11.9.0","description":"Gate determinístico de compliance de copy — lint barato de texto por ruleset configurável por marca (forbid list + regex), zero deps de runtime. Rulesets seed: oab (publicidade advocatícia), brand-base (vícios universais de copy) e nina (tom do SobreViven","directories":{},"maintainers":[{"name":"sugarhoneyicetea","email":"aquilaferraz@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^3","typescript":"5.9.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/compliance-gate_0.1.3_1789076834140_0.7754836640815028"}}},"time":{"created":"2026-07-12T08:39:52.524Z","modified":"2026-09-10T21:47:14.421Z","0.1.0":"2026-07-12T08:39:52.748Z","0.1.1":"2026-07-17T06:46:32.735Z","0.1.2":"2026-07-17T07:12:24.732Z","0.1.3":"2026-09-10T21:47:14.231Z"},"bugs":{"url":"https://github.com/SugarHoneyIceTea/compliance-gate/issues"},"license":"MIT","homepage":"https://github.com/SugarHoneyIceTea/compliance-gate#readme","keywords":["compliance","lint","copy","brand-voice","oab","deterministic","chrono-os"],"repository":{"url":"git+https://github.com/SugarHoneyIceTea/compliance-gate.git","type":"git"},"description":"Gate determinístico de compliance de copy — lint barato de texto por ruleset configurável por marca (forbid list + regex), zero deps de runtime. Rulesets seed: oab (publicidade advocatícia), brand-base (vícios universais de copy) e nina (tom do SobreViven","maintainers":[{"name":"sugarhoneyicetea","email":"aquilaferraz@gmail.com"}],"readme":"# @chrono-os/compliance-gate\n\nGate **determinístico** de compliance de copy — um lint barato e previsível de texto por ruleset configurável por marca (forbid list + regex). Zero dependências de runtime, função pura, sem I/O e sem LLM.\n\nÉ a **primeira barreira** antes de publicar: pega os vícios mecânicos (promessa de resultado, termo mercantil, urgência falsa, emoji demais…). A revisão profunda (humana ou agente especializado) roda depois, em outra camada.\n\n## Instalação\n\n```sh\nnpm i @chrono-os/compliance-gate\n```\n\n## Uso\n\n```ts\nimport { checkCompliance, formatViolations, builtinRulesets } from \"@chrono-os/compliance-gate\";\n\nconst result = checkCompliance(\"vitória garantida no seu processo!\", builtinRulesets.oab);\n// result.ok === false\n// result.violations: [{ rule, severity, match, hint }]\n\nif (!result.ok) console.error(formatViolations(result.violations));\n```\n\n`ok === true` ⇔ nenhuma violação com severity `error` (`warn` só sinaliza, não reprova).\n\n## Rulesets embutidos\n\n| Nome | Contexto | Regras |\n|---|---|---|\n| `oab` | Publicidade advocatícia (Provimento 205/2021 CFOAB, Código de Ética, art. 34 da Lei 8.906/94 — normas públicas) | `emoji`, `exclamacao`, `promessa-resultado`, `mercantil`, `sensacionalismo` |\n| `brand-base` | Vícios universais de copy (base neutra pra estender) | `urgencia-falsa`, `promessa-magica`, `clickbait`, `caps-lock` (warn) |\n| `nina` | Tom do SobreVivendo Adulto (estende `brand-base`) | `exclamacao-excesso` (3+), `nao-e-x-e-y` (a fórmula-clichê \"não é X, é Y\"), `promessa-financeira-absoluta`, `emoji-excesso` (2+), jargão de coach (`mindset` etc.) |\n\n## Ruleset customizado\n\n```ts\nimport { checkCompliance, brandBase, EMOJI_SOURCE, type Ruleset } from \"@chrono-os/compliance-gate\";\n\nconst minhaMarca: Ruleset = {\n  name: \"minha-marca\",\n  extends: [brandBase],                       // herda as regras da base\n  forbid: [\"sinergia\", { term: \"disruptivo\", severity: \"warn\", hint: \"jargão vazio\" }],\n  patterns: [\n    { rule: \"emoji\", pattern: EMOJI_SOURCE, flags: \"u\", maxAllowed: 2 }, // tolera 2\n  ],\n};\n\ncheckCompliance(texto, minhaMarca);\n```\n\n- `forbid`: termo literal, case-insensitive, por substring.\n- `patterns`: regex (`RegExp` ou string; flags default `iu`, `g` é garantida). `maxAllowed` tolera N ocorrências antes de violar.\n- `extends`: composição — as regras das bases rodam antes das locais; violações duplicadas (mesma regra na mesma posição) são deduplicadas.\n\n## API\n\n- `checkCompliance(text, ruleset)` → `{ ok, violations: [{ rule, severity, match, hint? }] }`\n- `formatViolations(violations)` → string legível, uma linha por violação\n- `builtinRulesets` — `{ oab, \"brand-base\": brandBase, nina }`\n- `EMOJI_SOURCE` — source de regex que casa uma sequência de emoji completa (ZWJ conta como 1; setas tipográficas ficam de fora)\n\n## Licença\n\nMIT\n","readmeFilename":"README.md"}