{"_id":"@bernierllc/ai-response-parser","_rev":"14-486c6fbc99919ee803a6698eb613edcd","name":"@bernierllc/ai-response-parser","dist-tags":{"latest":"1.6.1"},"versions":{"1.0.0":{"name":"@bernierllc/ai-response-parser","version":"1.0.0","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"425637b08e03353e2038ef04bc4bd2eaab0f13ea","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.0.0.tgz","fileCount":28,"integrity":"sha512-3idMjSJwCIi5DsgOLt9L6J3OcjYsa/2kUGRWhKjJs0IrfGO00BC96qiru7s7WYKDuPsnIrIYAfRcSJZil6o7+Q==","signatures":[{"sig":"MEQCIE56IhkiJelFzAgUyAF0Hwzt5m9jM/FLdzu7ELhqArK+AiA5bjMdEGihkuuT1LXV/+jLmKlsCN6TYjVfHTa0jKLeyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224026},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.0.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/6c0a6b677e232e6843035d60ebae391f/bernierllc-ai-response-parser-1.0.0.tgz","_integrity":"sha512-3idMjSJwCIi5DsgOLt9L6J3OcjYsa/2kUGRWhKjJs0IrfGO00BC96qiru7s7WYKDuPsnIrIYAfRcSJZil6o7+Q==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.6.0","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@bernierllc/logger":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.0.0_1762367764660_0.8998914372392612","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bernierllc/ai-response-parser","version":"1.0.1","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"25226de2ebf1de3f57264c31c13bf13d41944c7a","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.0.1.tgz","fileCount":28,"integrity":"sha512-L8ruXWbgIW7h3yfkomNP9iL+YnF6xh+PUKOY33nKrNlt2kNT8oIUiMoV2FgWnIVjBKAjVbp0bjVQKArU+LvqTA==","signatures":[{"sig":"MEUCIQCbouzacfBcyMUP1y0Iuc0zX4NtaojZkEcKv7wTZ9Lg9AIgUUY32m31gd4U6n0QTlibZW2YOmVGfCmeCwynPNcNOaU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224982},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.0.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/1c94a975c957f3b273aa1e8fa9ea77cf/bernierllc-ai-response-parser-1.0.1.tgz","_integrity":"sha512-L8ruXWbgIW7h3yfkomNP9iL+YnF6xh+PUKOY33nKrNlt2kNT8oIUiMoV2FgWnIVjBKAjVbp0bjVQKArU+LvqTA==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.6.2","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@bernierllc/logger":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.0.1_1764635868641_0.5236635346381928","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/ai-response-parser","version":"1.0.2","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"6a4a31794a695fbca95aa135d9c0b23fac3544db","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.0.2.tgz","fileCount":17,"integrity":"sha512-Ix8ky2bqnQgaseyLP2yJfeo8owFHraH20N6tsIL3XHqiCyjgOyXzGar21q6RhFaTYrjB5aDUrkCGUMTsiwRvdw==","signatures":[{"sig":"MEUCIDNrgqEYGKVpnDU9oNm/ahS/tHA+lHORtAXUNVAmJNOCAiEAxawqlTgQ1z9TWV3w77MX/gO2wEm8ZKl225W6GzDzzgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71759},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.0.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/tmp/596e151d01c8447562e731854760a156/bernierllc-ai-response-parser-1.0.2.tgz","_integrity":"sha512-Ix8ky2bqnQgaseyLP2yJfeo8owFHraH20N6tsIL3XHqiCyjgOyXzGar21q6RhFaTYrjB5aDUrkCGUMTsiwRvdw==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.7.0","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.0.2_1766437719423_0.3428429077563797","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/ai-response-parser","version":"1.0.3","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"e86f2afb518f4144645591de6ae4c93dc3c1f960","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.0.3.tgz","fileCount":17,"integrity":"sha512-TEA8+plug8x1Kqc+KRGXveYUz7+PrC3+0ge4QIOLLhrh+iAClOzxrDW1SaPsAu63haPfNcwooTgLm0OPht6mrA==","signatures":[{"sig":"MEQCIAmvWg4A6hKY1THXVFsbaQlFscCNAibngenGR79D9CAnAiA9SXjlAzVzbmE1vaQtOxF1d8uduJJXcOJ1IEhYHRx1PQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71941},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.0.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/tmp/d400d9e29f426b328aeee13caa06490d/bernierllc-ai-response-parser-1.0.3.tgz","_integrity":"sha512-TEA8+plug8x1Kqc+KRGXveYUz7+PrC3+0ge4QIOLLhrh+iAClOzxrDW1SaPsAu63haPfNcwooTgLm0OPht6mrA==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.7.0","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.0.3_1766454376952_0.39966107306045884","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/ai-response-parser","version":"1.2.0","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"bc8dff4eb540d55e3af2e8d8f14d466058311cc1","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.2.0.tgz","fileCount":17,"integrity":"sha512-ATFw7HxLm0KP0tgFZZGsyOYqcnUCgPA+kLjw4/hQTRPfzfmSrTwA7Bpz1MDxx09X3RHcqdC1s/VFDQ8MmnzE+Q==","signatures":[{"sig":"MEYCIQDVViyUNdwj24CN9BKnKZNz58PNXEj93qoQvP+UGZ2eEgIhANmm5S+lWCY0QLTBeX2wRmigcw1sK431t81G5V1U0vjH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74037},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/logger":"1.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.2.0_1767642428183_0.3205391572800711","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/ai-response-parser","version":"1.2.1","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"01fd03c6cd9858a868a9641b9bdc51e7fc0b595d","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.2.1.tgz","fileCount":17,"integrity":"sha512-zGdcIN5Eun+DI6NzRPHBHStv4xgJuKuhGrKBNctIzR+1VgctpLqFUHECNvj0O7ECXsqoSGaD9SMs0suUI7u4ig==","signatures":[{"sig":"MEYCIQDGlMkvRa49fbKjG6hJs7SzuwBGaDfocINSdPH3Q7LeowIhANIMPK+DFpDefRrf5xE3bdvu3leTUWcgr/EqjFTo5qXc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74201},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.2.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/tmp/5b120bf42ca097ad581574261032271c/bernierllc-ai-response-parser-1.2.1.tgz","_integrity":"sha512-zGdcIN5Eun+DI6NzRPHBHStv4xgJuKuhGrKBNctIzR+1VgctpLqFUHECNvj0O7ECXsqoSGaD9SMs0suUI7u4ig==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.11.0","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/logger":"1.3.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.2.1_1773078350966_0.7461798184513946","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/ai-response-parser","version":"1.2.2","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"d57b75cb64ddaee68a519f634f5ca95ab959f264","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.2.2.tgz","fileCount":17,"integrity":"sha512-xoEHISrXuTzdnH8kqmOLTX4vamxbm0gXkvl1NGwaWNoq9VxgXMByVJ8/1xQ7r8JD1P/tTo7MHUKazrGx/iYeNA==","signatures":[{"sig":"MEUCIDJ+udaoCRNbgnoy9TSZs/cbiInNnuhvm7845yfiOeUkAiEAzIdeuWJl2hbQJAdS8yhN9W2B+z9lcSgTSNQlJefolrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74423},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.2.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/home/runner/work/tools/tools/packages/core/ai-response-parser/bernierllc-ai-response-parser-1.2.2.tgz","_integrity":"sha512-xoEHISrXuTzdnH8kqmOLTX4vamxbm0gXkvl1NGwaWNoq9VxgXMByVJ8/1xQ7r8JD1P/tTo7MHUKazrGx/iYeNA==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.11.0","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/logger":"1.3.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.2.2_1773163010270_0.6822424405230265","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@bernierllc/ai-response-parser","version":"1.2.3","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.2.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"dcfb39a0a943142d7abfe7732fc7de9a6acee67d","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.2.3.tgz","fileCount":17,"integrity":"sha512-cJ/MAIzdShlSbkQT1eXYieCC5urYAUmD78yq71GWR6Rq/DNpJPVn/31zkJP5aJDVZbEpIP8HAzlgwx3iIpJuig==","signatures":[{"sig":"MEYCIQCtqCnaLU1tXF+dYDZYWxv/cg5wCVDQ7yn7aDoTj3vTDQIhAKySifklyhLxWnDRWfTVvN2iz3G8xJbvU7AK79EPMBk4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74645},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.2.3.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/home/runner/work/tools/tools/packages/core/ai-response-parser/bernierllc-ai-response-parser-1.2.3.tgz","_integrity":"sha512-cJ/MAIzdShlSbkQT1eXYieCC5urYAUmD78yq71GWR6Rq/DNpJPVn/31zkJP5aJDVZbEpIP8HAzlgwx3iIpJuig==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.14.1","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.2.3_1779133330212_0.07967106890860043","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@bernierllc/ai-response-parser","version":"1.2.4","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.2.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"56d1df8432bad130a3e9aa2f2b7d72ea34289b53","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.2.4.tgz","fileCount":17,"integrity":"sha512-zje7y9s8BUVGZ7ogaOJITRgpQ66jqmvh32B6w9SJJP3dDRzIMVzFJl4KO6m8itVwptikdlzmWMD/9ig0UkSJLA==","signatures":[{"sig":"MEYCIQD6YUYc0TTlXCZaY1Zaa6jS7HTQXtM7Q19Pw1CAyNUa4QIhANe74nlPSosH+AH1g/JYTRcAOGsN5McB37QekO2vgG36","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74867},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.2.4.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/home/runner/work/tools/tools/packages/core/ai-response-parser/bernierllc-ai-response-parser-1.2.4.tgz","_integrity":"sha512-zje7y9s8BUVGZ7ogaOJITRgpQ66jqmvh32B6w9SJJP3dDRzIMVzFJl4KO6m8itVwptikdlzmWMD/9ig0UkSJLA==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.14.1","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.2.4_1779157085872_0.19939263136689012","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@bernierllc/ai-response-parser","version":"1.2.5","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.2.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"5525cc0f079d214198d53ee28f2a60bd51794d52","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.2.5.tgz","fileCount":17,"integrity":"sha512-zyid+BC9Sm6QVgIevUBvgkuOi+92VM60f7oSxHeEeeZ/xN5xuI4EMmiATqtUPqnczuBRGJMKL7xea9eptG0pEA==","signatures":[{"sig":"MEUCIAxD1uThGGiUI0lfu8/j8Ytpyf1x+/baqANpKlszLcoqAiEA/O522pn6puYwOem7DpsBHho9MD5726bQXmOsTfbaWEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75089},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.2.5.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/home/runner/work/tools/tools/packages/core/ai-response-parser/bernierllc-ai-response-parser-1.2.5.tgz","_integrity":"sha512-zyid+BC9Sm6QVgIevUBvgkuOi+92VM60f7oSxHeEeeZ/xN5xuI4EMmiATqtUPqnczuBRGJMKL7xea9eptG0pEA==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.14.1","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.2.5_1779221184188_0.7917243525842965","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/ai-response-parser","version":"1.4.0","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"eb1ba79ca937d6bf5506263aefc1b296d97b5b72","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.4.0.tgz","fileCount":11,"integrity":"sha512-B4X65SEM8J1tN/bwyQWujkdiOG38EKWNyLllpjKlNxQbD3R0sXasQ+CpIzI87uLy6uTsgFGzuckakof3tE0/5g==","signatures":[{"sig":"MEUCIGoKIQhY0p3h9fBjoI3UJf8bC66td8D4oYxF2hfH/XkrAiEAqEXUURHx1xiKfctpbpmjmFA/Z6tRMwvzAPb1Zl5D0cU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33823},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.4.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/home/runner/work/tools/tools/packages/core/ai-response-parser/bernierllc-ai-response-parser-1.4.0.tgz","_integrity":"sha512-B4X65SEM8J1tN/bwyQWujkdiOG38EKWNyLllpjKlNxQbD3R0sXasQ+CpIzI87uLy6uTsgFGzuckakof3tE0/5g==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.14.1","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.4.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.4.0_1779233797850_0.00719646044901201","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/ai-response-parser","version":"1.5.0","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"7eeeae9d6020c93451688575a88d2cfae605e477","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.5.0.tgz","fileCount":11,"integrity":"sha512-ZGZAsm4BzspOYtZ3X420pranRRfKdjYWv2VMXZuHdZ1JAePKj91BgP8l0TrvyzcJQqSXcjzhsP7P9anMMBvxUw==","signatures":[{"sig":"MEUCIQCyKhpzfyfzfbF1c8yVzBkXPm+/PEEendWSF21sAKxgwQIgaaBZ8GykKvnOpFcMB3i/cMgdLgZz08XrW8JPrMNBgNg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33823},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.5.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/home/runner/work/tools/tools/packages/core/ai-response-parser/bernierllc-ai-response-parser-1.5.0.tgz","_integrity":"sha512-ZGZAsm4BzspOYtZ3X420pranRRfKdjYWv2VMXZuHdZ1JAePKj91BgP8l0TrvyzcJQqSXcjzhsP7P9anMMBvxUw==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.14.1","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.6.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.5.0_1779240905980_0.8459326063487282","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/ai-response-parser","version":"1.6.0","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/ai-response-parser@1.6.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"6bdaf8930d5a7029c537e311425e059ec1ad0785","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.6.0.tgz","fileCount":11,"integrity":"sha512-2w1j+wyFBcIWkZWS+lkQLigdMSIXYTU+P91PzOnR34BG8sA1j9wwJKBgBkW3qYsUveghdmNEbwRJDA0M1pUDfQ==","signatures":[{"sig":"MEQCIBH9U1EyiRIdLokDLbHA3i/PhdEjVBUi5/vSAZbrIBLyAiAgWx0WJ0VsQ+4oN5/uiycsd5iukK0UNLo5eTguRdEBNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33823},"main":"dist/index.js","_from":"file:bernierllc-ai-response-parser-1.6.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"_resolved":"/home/runner/work/tools/tools/packages/core/ai-response-parser/bernierllc-ai-response-parser-1.6.0.tgz","_integrity":"sha512-2w1j+wyFBcIWkZWS+lkQLigdMSIXYTU+P91PzOnR34BG8sA1j9wwJKBgBkW3qYsUveghdmNEbwRJDA0M1pUDfQ==","bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"_npmVersion":"11.14.1","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/logger":"1.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/ai-response-parser_1.6.0_1779249636984_0.3805143265789215","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@bernierllc/ai-response-parser","version":"1.6.1","description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","main":"dist/index.js","types":"dist/index.d.ts","keywords":["ai","parsing","validation","json","markdown","response-parser"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","dependencies":{"@bernierllc/logger":"1.7.1"},"devDependencies":{"@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/eslint-plugin":"^7.0.1","@typescript-eslint/parser":"^7.0.1","eslint":"^8.56.0","jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3"},"bernierllc":{"category":"core","integration":{"neverhub":"not-applicable"}},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","test":"jest --watch","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint src --ext .ts","clean":"rm -rf dist"},"_id":"@bernierllc/ai-response-parser@1.6.1","_integrity":"sha512-HKE0C+wZZO2UFawdRvZ/wNYbExCk+Sg2GuC9g/HBd+wobT5V+KSZ5s1lv4Zs265HzbqlRZy7yWY6i8BHuJU1VA==","_resolved":"/home/runner/work/tools/tools/packages/core/ai-response-parser/bernierllc-ai-response-parser-1.6.1.tgz","_from":"file:bernierllc-ai-response-parser-1.6.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-HKE0C+wZZO2UFawdRvZ/wNYbExCk+Sg2GuC9g/HBd+wobT5V+KSZ5s1lv4Zs265HzbqlRZy7yWY6i8BHuJU1VA==","shasum":"0224ed6ddd801aba7d7451aacca8be8346064ad4","tarball":"https://registry.npmjs.org/@bernierllc/ai-response-parser/-/ai-response-parser-1.6.1.tgz","fileCount":11,"unpackedSize":33823,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBV3HVVONjJiRKM7NVtISwMI7PaKbs2XUHpwx6u3KI+FAiAcS7qbYcz9scB97MiSqoVtQE6CSDuKIsD3ipk7/X05SA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0b0f7ab7-7a30-45af-a0e3-c084d7f694ff"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-response-parser_1.6.1_1784015495719_0.5294907234275159"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-05T18:36:04.565Z","modified":"2026-07-14T07:51:35.997Z","1.0.0":"2025-11-05T18:36:04.851Z","1.0.1":"2025-12-02T00:37:48.833Z","1.0.2":"2025-12-22T21:08:39.563Z","1.0.3":"2025-12-23T01:46:17.131Z","1.2.0":"2026-01-05T19:47:08.315Z","1.2.1":"2026-03-09T17:45:51.126Z","1.2.2":"2026-03-10T17:16:50.427Z","1.2.3":"2026-05-18T19:42:10.364Z","1.2.4":"2026-05-19T02:18:06.020Z","1.2.5":"2026-05-19T20:06:24.356Z","1.4.0":"2026-05-19T23:36:37.996Z","1.5.0":"2026-05-20T01:35:06.111Z","1.6.0":"2026-05-20T04:00:37.134Z","1.6.1":"2026-07-14T07:51:35.868Z"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","keywords":["ai","parsing","validation","json","markdown","response-parser"],"description":"Parse and validate AI model responses with JSON extraction, markdown parsing, and schema validation","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/ai-response-parser\n\nParse and validate AI model responses with JSON extraction, markdown parsing, and schema validation.\n\n## Installation\n\n```bash\nnpm install @bernierllc/ai-response-parser\n```\n\n## Features\n\n- **JSON Extraction**: Extract JSON from AI responses in various formats (code blocks, inline, etc.)\n- **Markdown Parsing**: Extract and sanitize markdown content\n- **Schema Validation**: Validate extracted data against JSON schemas\n- **Multiple Provider Support**: Handle responses from different AI providers\n- **Error Handling**: Graceful handling of malformed responses\n- **Security**: Built-in sanitization to prevent XSS attacks\n- **TypeScript**: Full type safety with strict mode\n\n## Usage\n\n### Basic JSON Parsing\n\n```typescript\nimport { AIResponseParser } from '@bernierllc/ai-response-parser';\n\nconst parser = new AIResponseParser();\n\n// Parse JSON from AI response\nconst response = `\nHere is the analysis result:\n\n\\`\\`\\`json\n{\n  \"score\": 95,\n  \"passed\": true,\n  \"feedback\": \"Excellent work!\"\n}\n\\`\\`\\`\n`;\n\nconst data = parser.parseJSON<{ score: number; passed: boolean; feedback: string }>(response);\n\nif (data) {\n  console.log(`Score: ${data.score}`);\n  console.log(`Passed: ${data.passed}`);\n  console.log(`Feedback: ${data.feedback}`);\n}\n```\n\n### JSON Extraction with Metadata\n\n```typescript\nconst extracted = parser.extractJSON(response);\n\nif (extracted.success) {\n  console.log('Data:', extracted.data);\n  console.log('Raw JSON:', extracted.raw);\n} else {\n  console.error('Error:', extracted.error);\n}\n```\n\n### Markdown Extraction\n\n```typescript\nconst markdown = parser.extractMarkdown(`\n# Analysis Report\n\nThis is the **main content** with some formatting.\n\n\\`\\`\\`typescript\nconst example = \"code\";\n\\`\\`\\`\n\nMore text here.\n`);\n\nconsole.log('Content:', markdown.content);\nconsole.log('Has markdown:', markdown.hasMarkdown);\nconsole.log('Code blocks:', markdown.codeBlocks.length);\n\nmarkdown.codeBlocks.forEach(block => {\n  console.log(`Language: ${block.language}`);\n  console.log(`Code: ${block.code}`);\n  console.log(`Lines: ${block.startLine}-${block.endLine}`);\n});\n```\n\n### Schema Validation\n\n```typescript\nimport { JSONSchema } from '@bernierllc/ai-response-parser';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    name: { type: 'string', minLength: 1 },\n    age: { type: 'number', minimum: 0, maximum: 150 },\n    email: {\n      type: 'string',\n      pattern: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$'\n    }\n  },\n  required: ['name', 'email'],\n  additionalProperties: false\n};\n\nconst response = `\n\\`\\`\\`json\n{\n  \"name\": \"John Doe\",\n  \"age\": 30,\n  \"email\": \"john@example.com\"\n}\n\\`\\`\\`\n`;\n\nconst result = parser.validate(response, schema);\n\nif (result.valid) {\n  console.log('Valid data:', result.data);\n} else {\n  console.error('Validation errors:');\n  result.errors?.forEach(error => {\n    console.error(`${error.path}: ${error.message}`);\n    if (error.expected) console.error(`Expected: ${error.expected}`);\n    if (error.received) console.error(`Received: ${error.received}`);\n  });\n}\n```\n\n### Complete Parsing\n\n```typescript\nconst parseResult = parser.parse(response);\n\nif (parseResult.success) {\n  console.log('JSON data:', parseResult.data);\n}\n\nif (parseResult.markdown) {\n  console.log('Markdown content:', parseResult.markdown.content);\n  console.log('Code blocks:', parseResult.markdown.codeBlocks);\n}\n\nif (parseResult.errors) {\n  console.error('Errors:', parseResult.errors);\n}\n```\n\n## Configuration\n\n```typescript\nconst parser = new AIResponseParser({\n  // Enable strict JSON parsing (default: true)\n  strictJSON: true,\n\n  // Maximum depth for nested objects (default: 10)\n  maxDepth: 10,\n\n  // Enable markdown sanitization (default: true)\n  sanitizeMarkdown: true,\n\n  // Custom JSON extraction patterns\n  jsonPatterns: [\n    /```json\\s*([\\s\\S]*?)\\s*```/g,\n    /```\\s*([\\s\\S]*?)\\s*```/g,\n    /\\{[\\s\\S]*\\}/g,\n    /\\[[\\s\\S]*\\]/g\n  ]\n});\n```\n\n## API Reference\n\n### `AIResponseParser`\n\nMain parser class for handling AI responses.\n\n#### Constructor\n\n```typescript\nconstructor(config?: ParserConfig)\n```\n\n#### Methods\n\n##### `parseJSON<T>(response: string): T | null`\n\nParse JSON from response, returning typed data or null if parsing fails.\n\n##### `extractJSON<T>(response: string): ExtractedJSON<T>`\n\nExtract JSON with detailed success/error information.\n\nReturns:\n```typescript\ninterface ExtractedJSON<T> {\n  success: boolean;\n  data?: T;\n  raw?: string;\n  error?: string;\n}\n```\n\n##### `extractMarkdown(response: string): ExtractedMarkdown`\n\nExtract markdown content and code blocks.\n\nReturns:\n```typescript\ninterface ExtractedMarkdown {\n  content: string;\n  codeBlocks: CodeBlock[];\n  hasMarkdown: boolean;\n}\n```\n\n##### `validate<T>(response: string, schema: JSONSchema): ValidationResult<T>`\n\nValidate response against JSON schema.\n\nReturns:\n```typescript\ninterface ValidationResult<T> {\n  valid: boolean;\n  data?: T;\n  errors?: ValidationError[];\n}\n```\n\n##### `parse<T>(response: string): ParseResult<T>`\n\nComplete parsing with both JSON and markdown extraction.\n\nReturns:\n```typescript\ninterface ParseResult<T> {\n  success: boolean;\n  data?: T;\n  markdown?: ExtractedMarkdown;\n  errors?: string[];\n}\n```\n\n## JSON Schema Support\n\nThe parser supports a subset of JSON Schema for validation:\n\n- **Types**: object, array, string, number, boolean, null\n- **Object**: properties, required, additionalProperties\n- **Array**: items, minItems, maxItems\n- **String**: pattern, minLength, maxLength, enum\n- **Number**: minimum, maximum, enum\n\nExample:\n\n```typescript\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    status: {\n      type: 'string',\n      enum: ['pending', 'active', 'completed']\n    },\n    items: {\n      type: 'array',\n      items: { type: 'string' },\n      minItems: 1,\n      maxItems: 10\n    },\n    metadata: {\n      type: 'object',\n      properties: {\n        createdAt: { type: 'string' },\n        score: { type: 'number', minimum: 0, maximum: 100 }\n      },\n      required: ['createdAt']\n    }\n  },\n  required: ['status', 'items']\n};\n```\n\n## Security\n\nThe parser includes built-in security features:\n\n- **HTML Sanitization**: Removes `<script>`, `<iframe>`, and event handlers\n- **Depth Limiting**: Prevents stack overflow from deeply nested objects\n- **Pattern Validation**: Validates string patterns for common formats\n\nTo disable sanitization (not recommended):\n\n```typescript\nconst parser = new AIResponseParser({ sanitizeMarkdown: false });\n```\n\n## Error Handling\n\nAll parsing methods handle errors gracefully:\n\n```typescript\n// parseJSON returns null on error\nconst data = parser.parseJSON(response);\nif (!data) {\n  console.error('Failed to parse JSON');\n}\n\n// extractJSON provides detailed error information\nconst extracted = parser.extractJSON(response);\nif (!extracted.success) {\n  console.error('Error:', extracted.error);\n}\n\n// validate provides validation errors\nconst validation = parser.validate(response, schema);\nif (!validation.valid) {\n  validation.errors?.forEach(err => {\n    console.error(`${err.path}: ${err.message}`);\n  });\n}\n```\n\n## Integration Status\n\n### Logger Integration\n**Status**: Integrated\n\n**Justification**: This package uses `@bernierllc/logger` for structured logging of parsing operations. Logs include parsing errors, validation failures, and performance metrics to help with debugging and monitoring AI response processing.\n\n**Pattern**: Direct integration - logger is a required dependency for this package.\n\n### NeverHub Integration\n**Status**: Not applicable\n\n**Justification**: This is a core utility package that performs AI response parsing. It does not participate in service discovery, event publishing, or service mesh operations. Response parsing is a stateless utility operation that doesn't require service registration or discovery.\n\n**Pattern**: Core utility - no service mesh integration needed.\n\n### Docs-Suite Integration\n**Status**: Ready\n\n**Format**: TypeDoc-compatible JSDoc comments are included throughout the source code. All public APIs are documented with examples and type information.\n\n## Common Patterns\n\n### Parsing AI Content Review Responses\n\n```typescript\ninterface ReviewResult {\n  grammarScore: number;\n  readabilityScore: number;\n  suggestions: string[];\n  approved: boolean;\n}\n\nconst response = await aiService.review(content);\nconst result = parser.parseJSON<ReviewResult>(response);\n\nif (result && result.approved) {\n  console.log('Content approved!');\n  console.log('Grammar:', result.grammarScore);\n  console.log('Readability:', result.readabilityScore);\n}\n```\n\n### Parsing Social Media Generation Responses\n\n```typescript\ninterface SocialPost {\n  platform: 'twitter' | 'linkedin' | 'instagram';\n  content: string;\n  hashtags: string[];\n  scheduledTime?: string;\n}\n\nconst aiResponse = await aiService.generatePost(prompt);\nconst posts = parser.parseJSON<SocialPost[]>(aiResponse);\n\nif (posts) {\n  for (const post of posts) {\n    await publishToSocialMedia(post);\n  }\n}\n```\n\n### Handling Mixed Content Responses\n\n```typescript\nconst response = `\nBased on my analysis:\n\n## Summary\nThe content is well-written.\n\n## Data\n\\`\\`\\`json\n{\n  \"score\": 92,\n  \"issues\": [\"Minor typo in paragraph 3\"]\n}\n\\`\\`\\`\n\n## Recommendations\n1. Fix the typo\n2. Consider adding examples\n`;\n\nconst result = parser.parse(response);\n\n// Access JSON data\nconsole.log('Score:', result.data?.score);\n\n// Access markdown content\nconsole.log('Summary:', result.markdown?.content);\n```\n\n## Testing\n\nThe package includes comprehensive tests with 90%+ coverage:\n\n```bash\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run tests once\nnpm run test:run\n```\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\n## See Also\n\n- [@bernierllc/logger](../logger) - Logging utilities\n- [@bernierllc/ai-content-reviewer](../ai-content-reviewer) - AI content review service\n- [@bernierllc/ai-social-generator](../ai-social-generator) - AI social media generation\n","readmeFilename":"README.md"}