{"_id":"@denizokcu/haze","_rev":"20-d5a952b75a89119b9bbcfbf22f3cf876","name":"@denizokcu/haze","dist-tags":{"latest":"1.4.0"},"versions":{"0.0.1":{"name":"@denizokcu/haze","version":"0.0.1","license":"MIT","_id":"@denizokcu/haze@0.0.1","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"b119084e5419820d6bf90a76979b21596d3df3ee","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.0.1.tgz","fileCount":69,"integrity":"sha512-Y0MMbY32iqH/pmD/Ojt6nknWaDIDcbnmk/9AQXvTGhz8JiBo9IoJDlRnMhLni8qm9Hit7er2wwPkp7pyRdIU2A==","signatures":[{"sig":"MEUCIQCy9B5AHo0ohE+G0doidkLxIFl+jWUzte/zaR+zhYP9RgIgVHsxGvRHXdTCaPDabgXcgjl90N1xyhEg4eHLISejlwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83489},"type":"module","engines":{"node":">=20"},"gitHead":"d7110be001be4d5164e3d44239b759b8898f3063","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.16.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ai":"6.0.193","ink":"7.0.5","zod":"4.4.3","yaml":"2.9.0","react":"19.2.6","marked":"18.0.4","fs-extra":"11.3.5","commander":"15.0.0","strip-ansi":"7.2.0","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.67","@inquirer/prompts":"8.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.3","eslint":"^10.4.1","vitest":"^4.1.7","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"25.9.1","@types/react":"19.2.15","@types/fs-extra":"11.0.4","typescript-eslint":"^8.60.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.0.1_1780241502987_0.7527942105232812","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@denizokcu/haze","version":"0.0.2","license":"MIT","_id":"@denizokcu/haze@0.0.2","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"84ec77e4e35738a5d22bdcf1e3642fab62e2a23a","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.0.2.tgz","fileCount":61,"integrity":"sha512-Z6f4p2BGcJQY7EvpLgyWm10GR+9/+nyW1UnVyskG0ocGbJTmmfTGdkRfJdPjT48QY7krNtDNVC5L+wGMHQGDmg==","signatures":[{"sig":"MEYCIQDhPVeyGrrC1tQDOqTWEL196M/GhE5cYvZn4LHbqIaw1QIhAO3oQjyTn+//Eeopy4bUuklc0C9PreJ9DWKPHTBg8IPz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144213},"type":"module","engines":{"node":">=20"},"gitHead":"f7af11bb6bc77a80741661b0f84173722ffda461","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.16.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ai":"6.0.193","ink":"7.0.5","zod":"4.4.3","yaml":"2.9.0","react":"19.2.6","marked":"18.0.4","fs-extra":"11.3.5","commander":"15.0.0","strip-ansi":"7.2.0","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.67","@inquirer/prompts":"8.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.3","eslint":"^10.4.1","vitest":"^4.1.7","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"25.9.1","@types/react":"19.2.15","@types/fs-extra":"11.0.4","typescript-eslint":"^8.60.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.0.2_1780358673907_0.8117898523151386","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@denizokcu/haze","version":"0.0.3","license":"MIT","_id":"@denizokcu/haze@0.0.3","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"d1c3072e5c3adf4e6dd333a1f9a207e9d147387f","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.0.3.tgz","fileCount":77,"integrity":"sha512-uDEQYB9ve0k8kq/i/DKXfW2hnbzMN8ulOuGuerjRypQmle9v2BBnL8G2Fo2LsG2WtNxGqOCdeaKL+NyNYbwLwg==","signatures":[{"sig":"MEQCICKyX4ohSjKX1h+Vxj2rdYslE7D8xxM8CCHtiTI3y7IdAiA0aDAVma52IwQIv4o/Q6z2B/OgfvDh74TueMYp1GMcRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228027},"type":"module","engines":{"node":">=20"},"gitHead":"beffff9ae7b8ebfa43a9c33765765027ee9414f1","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.16.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ai":"6.0.194","ink":"7.0.5","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.4","fs-extra":"11.3.5","commander":"15.0.0","strip-ansi":"7.2.0","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.67","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"25.9.1","@types/react":"19.2.16","@types/fs-extra":"11.0.4","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.0.3_1780730339629_0.7697500074456585","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@denizokcu/haze","version":"0.1.0","license":"MIT","_id":"@denizokcu/haze@0.1.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"2fbda24242b4c14a1552332c5725a3977a350428","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.1.0.tgz","fileCount":79,"integrity":"sha512-MOAvgcfq9Pb5F5pEMv6ISIaLFuGW8lv+QOv1VhuSMulXD3dW6leeyH2BAwRYQo8oJW9jeWd2oDdphPMr5b7Bqw==","signatures":[{"sig":"MEUCIQDlugefidkyAt41up82zLZxqnbUU28Is+EEZbh/pMUHPQIgFjdysTgYzllgNnGbMmUfcifChsq8eI1Anr8ktRkRkYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260476},"type":"module","engines":{"node":">=20"},"gitHead":"9c0a8eef33c8c1b44f00e94354c0a54293974ee8","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.16.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ai":"6.0.194","ink":"7.0.5","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.4","fs-extra":"11.3.5","commander":"15.0.0","strip-ansi":"7.2.0","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.67","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"25.9.1","@types/react":"19.2.16","@types/fs-extra":"11.0.4","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.1.0_1780847183962_0.8160486061375809","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@denizokcu/haze","version":"0.1.1","license":"MIT","_id":"@denizokcu/haze@0.1.1","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"db79603a73e4709bccc3c3b9024c42cb8c2ae18e","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.1.1.tgz","fileCount":79,"integrity":"sha512-COyEYxtGqbhKJcCvM/sVp3iGKBRBPUvBw+CqI3PuHTOSCN7KH4kx5VGT52MWgpTCCspRSeoMQuuEGDuTctakGg==","signatures":[{"sig":"MEUCIHxrY5u/PF5zqQWYsqvxdGP0ZgopbAEHQbQh4tEQMbkRAiEA/PaErPWv2Ju6O3e/8XdDzoo2+A6pZ5/VwjTCGcV5QuQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260848},"type":"module","engines":{"node":">=20"},"gitHead":"f4c2c93379f1a966a04e3c4c2b42c3a223928276","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.16.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ai":"6.0.194","ink":"7.0.5","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.4","fs-extra":"11.3.5","commander":"15.0.0","strip-ansi":"7.2.0","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.67","@vscode/ripgrep":"1.18.0","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"25.9.1","@types/react":"19.2.16","@types/fs-extra":"11.0.4","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.1.1_1780848687124_0.37199503340137663","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@denizokcu/haze","version":"0.2.0","license":"MIT","_id":"@denizokcu/haze@0.2.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"fdf2ce5c9654ebdfc335137370667aba6b875042","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.2.0.tgz","fileCount":85,"integrity":"sha512-pJ80Z35UuVx4p3usssVnjYPrD7F1S/JSTgw0JpYPoofgFVHoO22VksfPn6xS/NHKJRN+X4XshTJshUOWFipRuQ==","signatures":[{"sig":"MEUCIDGVdhqL67RXCKxd3Bt/FmOFsBJjK0tbJnYyKlQb8kGLAiEAnG6l0kf4pdowK79bzOd00Ozh6aNA1V0B6P2ANW0sGd4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":286042},"type":"module","engines":{"node":">=20"},"gitHead":"b32044f8e39ee069f7c631a3f02775a9ef28a703","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.16.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ai":"6.0.194","ink":"7.0.5","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.4","fs-extra":"11.3.5","commander":"15.0.0","strip-ansi":"7.2.0","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.67","@vscode/ripgrep":"1.18.0","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"25.9.1","@types/react":"19.2.16","@types/fs-extra":"11.0.4","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.2.0_1780864063190_0.9725940949347645","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@denizokcu/haze","version":"0.3.0","license":"MIT","_id":"@denizokcu/haze@0.3.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"5336692f490e2465a4fe4409eae093d7e69e6c4d","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.3.0.tgz","fileCount":89,"integrity":"sha512-EmF31+Lpxa684TfWOuUx8tDaE3BIJNuukuzYpS3escrVasbaaCvB4cpAdD7Y7/oPB9LJBjSVO4VnAm4V+fjO9A==","signatures":[{"sig":"MEUCIHuMcYfprTz4CjPrijubgFNEb59H5Kdo8c7ox9ZXp1djAiEAxwxVig3j2MN/YcptM00vIgqiVoAcLvPaZTdoCo2qXqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322221},"type":"module","engines":{"node":">=20"},"gitHead":"469dd7b5ccb6db578c007eb55ec09511e82e73af","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.16.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ai":"6.0.194","ink":"7.0.5","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.4","fs-extra":"11.3.5","commander":"15.0.0","strip-ansi":"7.2.0","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.67","@vscode/ripgrep":"1.18.0","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"25.9.1","@types/react":"19.2.16","@types/fs-extra":"11.0.4","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.3.0_1781043096039_0.9371148936949667","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@denizokcu/haze","version":"0.4.0","license":"MIT","_id":"@denizokcu/haze@0.4.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"03b5be26b420b26a2943580a611b4426fd178d6f","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.4.0.tgz","fileCount":101,"integrity":"sha512-Z0qPoVTYVYA9SCbuVP2aBk2FluDclNkQDd3byV5aCgsmsaE166nNxRgWKMeYx4jbgjdHMgIKKjS+kwrRBLrNLA==","signatures":[{"sig":"MEYCIQD87vpJUgy8xoHaj111+kOwdbOwHlMPgM0d3WV9H1XGZAIhAMWb51n+ppmzVNNvBzAhQ/WPGPEQmb0hYi1VVoCRbsKw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":382515},"type":"module","engines":{"node":">=20"},"gitHead":"9e8a52ce74ab96cc081a3c3c894b9715415c4164","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.17.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ai":"6.0.194","ink":"7.0.5","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.4","fs-extra":"11.3.5","commander":"15.0.0","strip-ansi":"7.2.0","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.67","@vscode/ripgrep":"1.18.0","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"25.9.1","@types/react":"19.2.16","@types/fs-extra":"11.0.4","typescript-eslint":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.4.0_1781476378318_0.8165493229939016","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@denizokcu/haze","version":"0.5.0","license":"MIT","_id":"@denizokcu/haze@0.5.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"07f1fe4a966ed94b9393d601b461f9dfba783b31","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.5.0.tgz","fileCount":125,"integrity":"sha512-6Dk4x0tZcvwx5GXZLWmcoPrDpad0MDGRSYDDR+b3j4JeXwPJsyTtykpcYNMq+BrcK5TIXOaYuvKur9qzw7wSww==","signatures":[{"sig":"MEQCIG+6m+uRoVJR+tnLIW4OmQMiE1qOjZbTHtIVGePyEe0HAiBjBH/MTHHDdQ8DrxVs7SEyLXTh3u1HweEX44a7e8WGNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":483140},"type":"module","engines":{"node":">=20"},"gitHead":"95bfa835d42d9efbba57eab1eab26240fe3e7ce7","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.17.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":true},"dependencies":{"ai":"6.0.208","ink":"7.1.0","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.5","defuddle":"^0.19.0","fs-extra":"11.3.5","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"15.0.0","strip-ansi":"7.2.0","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.73","@vscode/ripgrep":"1.18.0","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.5.0","vitest":"^4.1.9","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.0.0","@types/react":"19.2.17","@types/fs-extra":"11.0.4","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.5.0_1781899128391_0.2654676077736091","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@denizokcu/haze","version":"0.6.0","license":"MIT","_id":"@denizokcu/haze@0.6.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"d268d25724bbfe5593edbdc9379d4df83cd184dc","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.6.0.tgz","fileCount":141,"integrity":"sha512-yINNHSv2B9N2vMTzqt4i6zKu0OFmnVuvT0TXJNyQAvA02xm+KPjAL7JjRHwht0kawLlACBH9F6XwYzeFM+Q3Xw==","signatures":[{"sig":"MEUCIF9iUradi4DD8MKH8q3eUt9uXkGOQgd3Ql8sQpkP3wvQAiEAut0pAuNgJ2evYm5xvHBVJnQpQDbkoXZsQu/wV231ouI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":543509},"type":"module","engines":{"node":">=20"},"gitHead":"827a23ba41ba4283c847d7a78bff561df677e5ce","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.17.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":true},"dependencies":{"ai":"6.0.208","ink":"7.1.0","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.5","defuddle":"^0.19.0","fs-extra":"11.3.5","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"15.0.0","strip-ansi":"7.2.0","@ai-sdk/mcp":"^1.0.52","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.73","@vscode/ripgrep":"1.18.0","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.5.0","vitest":"^4.1.9","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.0.0","@types/react":"19.2.17","@types/fs-extra":"11.0.4","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.6.0_1782074820372_0.8963229835608832","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@denizokcu/haze","version":"0.7.0","license":"MIT","_id":"@denizokcu/haze@0.7.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"14eec9f46ee503adfd9632f60aa46cbd9ab57d32","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.7.0.tgz","fileCount":235,"integrity":"sha512-KjLI3JFscUcv0BtzOKqeB82Ag8Walw7u8Z+fPDlFJ912qK9IJanTtKXaPxd0DVkSHGLZIkcE0o+qlZfQSAMB9g==","signatures":[{"sig":"MEQCICTw44cigvDIGxu6B/+H+7Yw3/8PFujoT1rWXyU6uru1AiA7FX3y1q3VTY381TnOdabKSxDSjKGRtmazexfkWs0TtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654234},"type":"module","engines":{"node":">=20"},"gitHead":"255f668b6f83643dedb6f5cb7de5719ea8786bac","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"11.17.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.2.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":true},"dependencies":{"ai":"6.0.208","ink":"7.1.0","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.5","defuddle":"^0.19.0","fs-extra":"11.3.5","linkedom":"^0.18.12","turndown":"^7.2.4","commander":"15.0.0","strip-ansi":"7.2.0","@ai-sdk/mcp":"^1.0.52","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"3.0.73","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.5.0","vitest":"^4.1.9","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.0.0","@types/react":"19.2.17","@types/fs-extra":"11.0.4","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.7.0_1782773153161_0.11985450584507151","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@denizokcu/haze","version":"0.8.0","license":"MIT","_id":"@denizokcu/haze@0.8.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"5a30dfa78d58637196d9d1832ce50245187f391a","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.8.0.tgz","fileCount":237,"integrity":"sha512-qMRcpEpihHj9cOCbZSk10pXTSh3jCXUyPood/iXZdtp809SMg5q7ll3+hUkt/27oVhwKApiMiKo+5xtJdy2uCA==","signatures":[{"sig":"MEUCIFuY8idJUPLA15/aXOIVc65u1Y6gJypB3u7fBwIJpDJEAiEAgA5bKjCKx/ScGQWuqscbq63VTi/INheJmbJA2v5v/m0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1121652},"type":"module","engines":{"node":">=22"},"gitHead":"844cf6cec675a9e60b55c361449090a259f92e62","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"12.0.0","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.5.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":true},"dependencies":{"ai":"7.0.19","ink":"7.1.0","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.6","defuddle":"^0.19.1","fs-extra":"11.3.6","linkedom":"^0.18.13","turndown":"^7.2.4","commander":"15.0.0","strip-ansi":"7.2.0","@ai-sdk/mcp":"^2.0.10","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"4.0.10","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","eslint":"^10.6.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.1.1","@types/react":"19.2.17","@types/fs-extra":"11.0.4","typescript-eslint":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.8.0_1783633342788_0.9440317608812534","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@denizokcu/haze","version":"0.9.0","license":"MIT","_id":"@denizokcu/haze@0.9.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"3c11d23a9f83db12529f834f821b0f17711d4e9e","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.9.0.tgz","fileCount":255,"integrity":"sha512-35C5CES/+atmC8RX3kaoxN1HZcLHWGgys6E18l4Cib4e9Yipu0seBQOeRGt3ETiTfI3K3nS2pzouthzEWhKlNQ==","signatures":[{"sig":"MEUCIQC+1f5nfn46g/k/fDWHvzVDXy0eShn8Hm3hF0QGrMD36gIgbwsIHUYER/b7ANY+A75wPKJN4bHGbr3TP8ZBQxKY12k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1187575},"type":"module","engines":{"node":">=22"},"gitHead":"ae66efbc552dddf89cfe5e828c25e7fd84900f49","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"12.0.1","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.5.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":true},"dependencies":{"ai":"7.0.19","ink":"7.1.0","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.6","defuddle":"^0.19.1","fs-extra":"11.3.6","linkedom":"^0.18.13","turndown":"^7.2.4","commander":"15.0.0","strip-ansi":"7.2.0","@ai-sdk/mcp":"^2.0.10","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"4.0.10","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","eslint":"^10.6.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.1.1","@types/react":"19.2.17","@types/fs-extra":"11.0.4","typescript-eslint":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.9.0_1784976852124_0.9745280131942033","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@denizokcu/haze","version":"0.10.0","license":"MIT","_id":"@denizokcu/haze@0.10.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"053fe0107f19a05cbbe1970984878b4c1b7f0da0","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.10.0.tgz","fileCount":299,"integrity":"sha512-EHIX4KmOwrq39hEA5UDkV25SrWEoh26y4o/yOgL4T0txVehDcdMqqH3z2/Ce6NAgiV4qZN7aVfXJuWw11RZ5ww==","signatures":[{"sig":"MEYCIQDNgqzdB3qbe8Lrs3xbZp7rrsGh0a+31IVMMcwKXW/mrwIhALdWlODVXS/Z9yjsPXUv2GfoMaYMJ1HqBQGGy+dMZhQ/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1512744},"type":"module","engines":{"node":">=22"},"gitHead":"3607a5e861683db1da809ec9c18384789a46a336","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"12.0.2","description":"A pragmatic agentic CLI for building apps from the terminal.","directories":{},"_nodeVersion":"26.5.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":true},"dependencies":{"ai":"7.0.19","ink":"7.1.0","zod":"4.4.3","yaml":"2.9.0","react":"19.2.7","marked":"18.0.6","defuddle":"^0.19.1","fs-extra":"11.3.6","linkedom":"^0.18.13","turndown":"^7.2.4","commander":"15.0.0","strip-ansi":"7.2.0","@ai-sdk/mcp":"^2.0.10","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"4.0.10","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","eslint":"^10.6.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.1.1","@types/react":"19.2.17","@types/fs-extra":"11.0.4","typescript-eslint":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.10.0_1785796516977_0.9015924684788705","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@denizokcu/haze","version":"0.11.0","license":"MIT","_id":"@denizokcu/haze@0.11.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"db682591b88cb717b134b7f22551bc8e999bf612","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-0.11.0.tgz","fileCount":345,"integrity":"sha512-mHakHnIQ89RuWw4Mg1R3i2N4nLPbnLihDPM6Mcvd66I357B89nMxoqBnDpEN8ughltOxUC1bVn8DdxnFMWMKJQ==","signatures":[{"sig":"MEUCIQD6MUP+qEtdWYAHKa9Of6PoEYKow1pJUxbqtc0bzSZTUgIgV+kDAS188EfUN7/T+XoZaPeAE2kLuey3zrmQkzJU2JI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2000425},"type":"module","engines":{"node":">=22"},"gitHead":"8b5a89c1496ac0e81191de39e6d9fdb1cec9490c","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc && node scripts/write-build-info.mjs","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","dev:link":"node scripts/dev-link.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm test && npm run lint && npm run build && npm audit --audit-level=high && npm run release:verify","release:verify":"node scripts/verify-release-metadata.mjs"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"12.0.2","description":"A minimal LLM harness for your terminal.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"esbuild@0.28.2":true,"fsevents@2.3.3":true},"dependencies":{"ai":"7.0.64","ink":"7.1.1","zod":"4.4.3","yaml":"2.9.0","react":"19.2.8","marked":"18.0.9","defuddle":"^0.19.2","fs-extra":"11.4.0","linkedom":"^0.18.13","turndown":"^7.2.4","commander":"15.0.0","wrap-ansi":"10.0.0","strip-ansi":"7.2.0","@ai-sdk/mcp":"^2.0.31","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"4.0.41","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.12","eslint":"^10.8.1","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.2.0","@types/react":"19.2.18","@types/fs-extra":"11.0.4","typescript-eslint":"^8.67.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_0.11.0_1786805483385_0.4595709318136929","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@denizokcu/haze","version":"1.0.0","license":"MIT","_id":"@denizokcu/haze@1.0.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"d3511beda7caaa590ab3bbb0b7f59f672d3bd37e","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-1.0.0.tgz","fileCount":329,"integrity":"sha512-LVyHgAMPtUq8h8k3f9qMsscCX8YNRKmvjYPfq0vvar0wDp6A1FinVcExoy/pCSvhbMNH8SPl1pt9r5YbGbvl9w==","signatures":[{"sig":"MEYCIQD95U2ZHRwDFl7uukd1GrHRQFVq1PyPigJookQFJKZF1QIhAPyuEAG/2NP2a9hFWjsgoeIUI+lL8/P1bZyip4XyPWAl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2200390},"type":"module","engines":{"node":">=22"},"gitHead":"85e798e5d4b65f08889f2f780c3f9b0f2fe6ac07","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc && node scripts/write-build-info.mjs","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","dev:link":"node scripts/dev-link.mjs","lint:fix":"eslint src/ --fix","lint:knip":"knip","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm test && npm run lint && npm run build && npm audit --audit-level=high && npm run release:verify","release:verify":"node scripts/verify-release-metadata.mjs"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"12.0.2","description":"A minimal LLM harness for your terminal.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"esbuild@0.28.2":true,"fsevents@2.3.3":true},"dependencies":{"ai":"7.0.64","ink":"7.1.1","zod":"4.4.3","yaml":"2.9.0","react":"19.2.8","ignore":"^7.0.6","marked":"18.0.9","defuddle":"^0.19.2","fs-extra":"11.4.0","linkedom":"^0.18.13","turndown":"^7.2.4","commander":"15.0.0","wrap-ansi":"10.0.0","strip-ansi":"7.2.0","@ai-sdk/mcp":"^2.0.31","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"4.0.41","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.12","knip":"5.88.1","eslint":"^10.8.1","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.2.0","@types/react":"19.2.18","@types/fs-extra":"11.0.4","typescript-eslint":"^8.67.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_1.0.0_1786920055165_0.6690064941834724","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@denizokcu/haze","version":"1.1.0","license":"MIT","_id":"@denizokcu/haze@1.1.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"a24d98bcaf54f22efcde51391b526ed53a5418a3","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-1.1.0.tgz","fileCount":365,"integrity":"sha512-VviKSziR9mRdiNgPnRWNrKKXM1Lq5ondNKl/P6oaCbT+iVrVezBzfua49QpzKrq224Zd694filxldDzKyXG5rA==","signatures":[{"sig":"MEUCIHjwoOxcCP6uoC50a1YY2eLulLdN2hdASC3aqjwiJNX9AiEA7rQ2KxWA1zLsTiC1gv4Uj6Z4c4MC0tIXalULUzTJJag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2259600},"type":"module","engines":{"node":">=22"},"gitHead":"7bc6e5378787d1d1b8f2bc8ea803ed8b1da86a13","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc && node scripts/write-build-info.mjs","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","dev:link":"node scripts/dev-link.mjs","lint:fix":"eslint src/ --fix","lint:knip":"knip","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm test && npm run lint && npm run build && npm audit --audit-level=high && npm run release:verify","release:verify":"node scripts/verify-release-metadata.mjs"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"12.0.2","description":"A minimal LLM harness for your terminal.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"esbuild@0.28.2":true,"fsevents@2.3.3":true},"dependencies":{"ai":"7.0.64","ink":"7.1.1","zod":"4.4.3","yaml":"2.9.0","react":"19.2.8","ignore":"^7.0.6","marked":"18.0.9","defuddle":"^0.19.2","fs-extra":"11.4.0","linkedom":"^0.18.13","turndown":"^7.2.4","commander":"15.0.0","wrap-ansi":"10.0.0","strip-ansi":"7.2.0","@ai-sdk/mcp":"^2.0.31","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"4.0.41","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.12","knip":"5.88.1","eslint":"^10.8.1","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.2.0","@types/react":"19.2.18","@types/fs-extra":"11.0.4","typescript-eslint":"^8.67.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_1.1.0_1787118326516_0.5395110538101979","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@denizokcu/haze","version":"1.1.1","license":"MIT","_id":"@denizokcu/haze@1.1.1","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"7df884f3035f7ba7cacff9b9b43382c3ca277ed4","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-1.1.1.tgz","fileCount":371,"integrity":"sha512-/exozw/0KZSYvQQ9B+2nxDo2vF6aWGhQUmV0TP6I8KjHdFdJeGzHat1SpiuWJ8rpufrfnYqLc0IJI5EXa4zLQA==","signatures":[{"sig":"MEQCIDWZg5J2w7V35tCeN7Z55SEm48JWzbB/WmXZr9bpQYdoAiAe0lVYVaU0nltp0jyaEJNBqzTyTTt0Yl5aluVj1TBMvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2290998},"type":"module","engines":{"node":">=22"},"gitHead":"26906fadb2553848b273fc254f2e0f57ba27cd0c","scripts":{"dev":"tsx src/cli/index.ts","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc && node scripts/write-build-info.mjs","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","dev:link":"node scripts/dev-link.mjs","lint:fix":"eslint src/ --fix","lint:knip":"knip","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm test && npm run lint && npm run build && npm audit --audit-level=high && npm run release:verify","release:verify":"node scripts/verify-release-metadata.mjs"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"12.0.2","description":"A minimal LLM harness for your terminal.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"esbuild@0.28.2":true,"fsevents@2.3.3":true},"dependencies":{"ai":"7.0.64","ink":"7.1.1","zod":"4.4.3","yaml":"2.9.0","react":"19.2.8","ignore":"^7.0.6","marked":"18.0.9","defuddle":"^0.19.2","fs-extra":"11.4.0","linkedom":"^0.18.13","turndown":"^7.2.4","commander":"15.0.0","wrap-ansi":"10.0.0","strip-ansi":"7.2.0","@ai-sdk/mcp":"^2.0.31","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"4.0.41","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.12","knip":"5.88.1","eslint":"^10.8.1","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.2.0","@types/react":"19.2.18","@types/fs-extra":"11.0.4","typescript-eslint":"^8.67.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_1.1.1_1787764395256_0.8350057526605894","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@denizokcu/haze","version":"1.2.0","license":"MIT","_id":"@denizokcu/haze@1.2.0","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"homepage":"https://github.com/DenizOkcu/haze#readme","bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"bin":{"haze":"bin/haze.js"},"dist":{"shasum":"cedd16ec969d57df60d10636377d9cd7f68dab5d","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-1.2.0.tgz","fileCount":375,"integrity":"sha512-Qbf99d0AcQTDZSycZCye1MRdt7n0BYq2JO3KSXHo8m1LU4ovb50xtZDlQuB5nZBkGwz7gL9+VpGBfGiGe7TFeQ==","signatures":[{"sig":"MEYCIQCCMKQdYUpHQN02d1Sv3tfhksR2SjF0TzzTgCb6rjAR8gIhAOZUYxCXZSVHMNz+TauQzjU+jyf8tv1wzqc6Lmt0jH0Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2368492},"type":"module","engines":{"node":">=22"},"gitHead":"667c1c325d41e1f9811d9de0d19361e95a969d0e","scripts":{"dev":"tsx src/cli/index.ts","eval":"node scripts/run-evals.mjs","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc && node scripts/write-build-info.mjs","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","dev:link":"node scripts/dev-link.mjs","lint:fix":"eslint src/ --fix","lint:knip":"knip","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm test && npm run lint && npm run build && npm audit --audit-level=high && npm run release:verify","release:verify":"node scripts/verify-release-metadata.mjs"},"_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"12.0.2","description":"A minimal LLM harness for your terminal.","directories":{},"_nodeVersion":"26.7.0","allowScripts":{"esbuild@0.28.2":true,"fsevents@2.3.3":true},"dependencies":{"ai":"7.0.85","ink":"7.1.1","zod":"4.5.4","yaml":"2.9.0","react":"19.2.8","ignore":"^7.0.8","marked":"18.0.11","defuddle":"^0.19.3","fs-extra":"11.4.0","linkedom":"^0.18.13","turndown":"^7.2.4","commander":"15.0.0","wrap-ansi":"10.0.1","strip-ansi":"7.2.0","@ai-sdk/mcp":"^2.0.41","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"4.0.52","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","knip":"6.33.0","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.4.0","@types/react":"19.2.18","@types/fs-extra":"11.0.4","typescript-eslint":"^8.69.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/haze_1.2.0_1788213694025_0.6273422111176112","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"_id":"@denizokcu/haze@1.4.0","bin":{"haze":"bin/haze.js"},"bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"dist":{"shasum":"002e81edfbf36640a16c1f01603e3340e3657e2a","tarball":"https://registry.npmjs.org/@denizokcu/haze/-/haze-1.4.0.tgz","fileCount":385,"integrity":"sha512-9vNED6EXFhyfduIl140P7mQnaSidPeqTRF3vtLsUXIO6PSsSs3URwCT83sO4kuxc11eKXoaA0SxCxAEoFq2vIA==","signatures":[{"sig":"MEYCIQDfwrjZDVAkVVWQSlgiayrvRtB58bnDXSZU8CtiLu1GsAIhAIdmZqHMJOPV8377ZlW1ei1h4b/iKc+V1iNqzutmZLCs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGB4Bb5RnJeT0d+1V+Ndg36X5MRExhfTQF70Wsu5WsqaAiBrZMgeFpiZliMlDAH06Hgqk/FHpipY7hmnlAWCissdJQ=="}],"unpackedSize":2738526},"name":"@denizokcu/haze","type":"module","engines":{"node":">=22"},"gitHead":"a2f3d3e568b4d07ba6a33f6fa2218e24e11bad9c","license":"MIT","scripts":{"dev":"tsx src/cli/index.ts","eval":"node scripts/run-evals.mjs","haze":"tsx src/cli/index.ts","lint":"eslint src/","test":"vitest run","build":"npm run clean && tsc && node scripts/write-build-info.mjs","clean":"node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"","start":"node dist/cli/index.js","dev:link":"node scripts/dev-link.mjs","lint:fix":"eslint src/ --fix","lint:knip":"knip","typecheck":"tsc --noEmit","test:watch":"vitest","context:report":"node --import tsx src/cli/contextReport.ts","prepublishOnly":"npm run typecheck && npm test && npm run lint && npm run build && npm audit --audit-level=high && npm run release:verify","release:verify":"node scripts/verify-release-metadata.mjs"},"version":"1.4.0","_npmUser":{"name":"denizokcu","email":"deniz.okcu@mailbox.org"},"homepage":"https://github.com/DenizOkcu/haze#readme","repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"_npmVersion":"12.0.2","description":"A minimal LLM harness for your terminal.","directories":{},"maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"_nodeVersion":"26.7.0","allowScripts":{"esbuild@0.28.2":true,"fsevents@2.3.3":true},"dependencies":{"ai":"7.0.112","ink":"7.1.1","zod":"4.6.5","yaml":"2.9.1","react":"19.3.0","ignore":"^7.0.10","marked":"18.0.14","defuddle":"^0.19.4","fs-extra":"11.4.1","linkedom":"^0.18.13","turndown":"^7.2.4","commander":"15.0.0","wrap-ansi":"10.0.2","strip-ansi":"7.2.0","@ai-sdk/mcp":"^2.0.56","ink-spinner":"5.0.0","cli-highlight":"2.1.11","@ai-sdk/openai":"4.0.73","@vscode/ripgrep":"1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.15","knip":"6.38.0","eslint":"^10.11.0","vitest":"^5.0.1","@eslint/js":"^10.0.1","typescript":"6.0.3","@types/node":"26.6.2","@types/react":"19.3.0","@types/fs-extra":"11.0.4","typescript-eslint":"^8.70.1","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/haze_1.4.0_1790284009822_0.14820771928764032"}}},"time":{"created":"2026-05-31T15:31:42.851Z","modified":"2026-09-24T21:06:50.095Z","0.0.1":"2026-05-31T15:31:43.121Z","0.0.2":"2026-06-02T00:04:34.063Z","0.0.3":"2026-06-06T07:18:59.767Z","0.1.0":"2026-06-07T15:46:24.172Z","0.1.1":"2026-06-07T16:11:27.271Z","0.2.0":"2026-06-07T20:27:43.317Z","0.3.0":"2026-06-09T22:11:36.187Z","0.4.0":"2026-06-14T22:32:58.491Z","0.5.0":"2026-06-19T19:58:48.530Z","0.6.0":"2026-06-21T20:47:00.533Z","0.7.0":"2026-06-29T22:45:53.336Z","0.8.0":"2026-07-09T21:42:22.971Z","0.9.0":"2026-07-25T10:54:12.311Z","0.10.0":"2026-08-03T22:35:17.144Z","0.11.0":"2026-08-15T14:51:23.565Z","1.0.0":"2026-08-16T22:40:55.334Z","1.1.0":"2026-08-19T05:45:26.677Z","1.1.1":"2026-08-26T17:13:15.424Z","1.2.0":"2026-08-31T22:01:34.295Z","1.4.0":"2026-09-24T21:06:49.911Z"},"bugs":{"url":"https://github.com/DenizOkcu/haze/issues"},"license":"MIT","homepage":"https://github.com/DenizOkcu/haze#readme","repository":{"url":"git+https://github.com/DenizOkcu/haze.git","type":"git"},"description":"A minimal LLM harness for your terminal.","maintainers":[{"name":"denizokcu","email":"deniz.okcu@mailbox.org"}],"readme":"# haze\n\nA minimal LLM harness for your terminal.\n\n## What's new in 1.4.0\n\nhaze 1.4.0 adds per-run reasoning control (`--reasoning <level>` for headless runs and a live status-bar indicator) on top of the 1.3.0 hardening pass: consistent secret and file boundaries across every tool path, truthful validation and mutation evidence that survives failed exits and crashes, durable session lifecycle fixes, credential-safe provider discovery, and honest output reduction.\n\n- Uniform safety boundaries: `replaceInFiles` scans, grep traversal, and skill bodies/references all share one secret-file policy; bulk-edit and LSP edits preflight every file before the first write; task storage refuses symlinked escapes.\n- Evidence that survives exits: validation evidence records in execution order, one shared mutation-effects projection feeds work state and worker capsules, and structured completion obligations ride every checkpoint — including `context_exhausted` and headless relaunches.\n- Durable sessions: a `context_exhausted` checkpoint keeps its goal frontier across a crash resume, `/clear` stays cleared after restore, and manual compaction can no longer overwrite newer conversation state.\n- Honest output: semantic reducers apply only to unambiguous single foreground commands, so mixed-command output is never misread as a clean git status or passing test run.\n- Credential-safe discovery: provider model discovery validates the endpoint transport before sending any key and re-checks redirects before credential forwarding.\n- Reasoning control: `haze -p \"…\" --reasoning <level>` (or `--reasoning unset|off` for the provider default) steers thinking effort per run; the chat status bar shows the active level next to the model name.\n\nPrevious releases:\n\n- `1.2.1`: edit-recovery instructs instead of restricting — the model is told which path to read and why, while the execution-time gate enforces the fresh read.\n- `1.2.0`: provider-usage context accounting, recoverable compact-and-retry overflow handling, model-written split-turn-aware compaction, `pipefail` validation truthfulness, and a configurable retry pool.\n- `1.1.1`: durable goal ledgers and crash-resume frontiers; headless `--until-done` relaunches with bounded notices and a no-progress guard; proportional task/validation completion gates; and smaller orchestration internals.\n- `1.1.0`: terminal theming with 14 built-in palettes and live `/themes` switching; hard secret-file protection across every file tool, including symlink, read-blessing, ignore-override, and grep-traversal defenses.\n- `1.0.0`: first stable release — the CLI flags, settings schema, `stream-json` event contract, session format, skill layout, and structured tool-result shape under the 1.x compatibility promise; a configurable model-retry pool; and four benchmark-driven reliability fixes (validated with the Harbor differential benchmark: 17/17 verifier tests, fewest input tokens of the reporting harnesses, zero stalls).\n- `0.11.0`: goal-level autonomy across physical-turn budgets (logical-goal supervisor, evidence-gated completion, `goal_*` stream events, cumulative goal envelope), runtime provenance and `haze doctor` (embedded build info, stale-build refusal, session build headers), model-aware context budgeting (per-preset limits, live discovery, 128K fallback, self-healing context overflow), headless `--timeout` with per-tool deadlines and abort-cause typing, performance work (batched ignore checks, LSP reuse, coalesced/vacuumed sessions, memoized estimates, incremental streaming, viewport-clamped live region), and model-written `/compact` summaries with a heuristic fallback.\n- `0.10.1`: OpenAI Subscription OAuth preset, SECURITY.md and the attended-use threat model, bounded completion recovery, compact colorized diffs, prompt-injection framing, hardened fetch/stdin/sessions, and a multi-page docs site.\n\n- `0.10.0`: image input, read-only path blessings, isolated fleet workers, managed background processes, session browsing and forking, model discovery, project skills, and rotating tips.\n- `0.9.0`: private home-state storage, authoritative turn status, collection-time byte bounds, hardened process teardown, stronger real-path and network boundaries, and ordered persistence.\n- `0.8.0`: AI SDK v7 runtime, live status with model, elapsed time, and tool labels; bounded bash output processing; lowercase `haze` naming.\n- `0.7.0`: headless `-p`, `--output json`, and `--output stream-json`; pinned-connection `fetch` safety; scoped instruction refresh; smaller sessions; startup context visibility.\n- `0.6.0`: AI SDK-native ToolLoopAgent core, optional LSP navigation, MCP support, unified configuration pickers, cleaner transcripts, `/context`, and startup update checks.\n- `0.5.0`: SSRF-protected public URL fetching, no provider environment variables, debug-only LLM logs, command-aware output reduction, CLI Markdown rendering, scoped nested context files, and automatic cleanup of completed tasks.\n- `0.4.0`: three-step skill wizard, language-agnostic skill intent extraction, model-managed tasks, a smaller command surface, and docs site additions.\n- `0.3.0`: redesigned docs site, a relocated task bar, and automatic task cleanup between sessions.\n- `0.2.0`: more reliable recovery from failed edits and validation, structured bash classification, parsed validation summaries, and multiline input with vertical cursor movement.\n- `0.1.0`: bundled ripgrep, subagent delegation, and inline diffs.\n- `0.0.3`: durable sessions, context compaction, and provider management.\n- `0.0.2`: Markdown skills, autocomplete, and `listFiles` pagination.\n- `0.0.1`: initial release.\n\nhaze works with OpenAI-compatible providers, including OpenRouter and local endpoints. Use `/provider` to choose or add one, then `/model` to select a model.\n\n```txt\n  _\n | |\n | |__   __ _ _______\n | '_ \\ / _` |_  / _ \\\n | | | | (_| |/ /  __/\n |_| |_|\\__,_/___\\___|\n```\n\nhaze keeps guardrails light. The LLM can work from the terminal with access close to yours while staying scoped to the current project where possible. It is for developers who would rather supervise tool calls than work through a stack of permission dialogs. Keep an eye on what it does.\n\n### Supervision model\n\nThere is **no sandbox and no permission layer**: the shell tool runs unsupervised in your login shell (its classification is informational only), and only the file tools are confined to the workspace. Claude Code gates tools behind permissions, plan mode, and hooks; Codex CLI runs in an OS sandbox with approval modes; haze, like pi, replaces those mechanisms with your supervision. That trade-off is deliberate and keeps the agent fast and transparent, but it also means haze is **not an unattended automation runtime** — run it where you would run a shell session yourself. If a CI job runs haze headless, treat the job the way you would treat any script with shell access. SECURITY.md documents the attended-use threat model in full.\n\n## Getting started\n\nhaze runs on macOS and Linux with Node.js 22 or newer. Windows is not yet a supported platform (the toolchain assumes a POSIX shell); it is on the 1.x roadmap.\n\nInstall haze:\n\n```bash\nnpm install -g @denizokcu/haze\n```\n\nOpen haze from your project:\n\n```bash\n$ haze\n```\n\nOn first run, create or choose a provider, then choose your first model:\n\n```txt\n/provider\n/model\n```\n\n`/provider` sets up any OpenAI-compatible endpoint, such as OpenRouter, OpenAI, LM Studio, Ollama, or a proxy. haze asks for a provider name, base URL, optional API key, and model names. The **OpenAI API Key** preset uses platform API billing. The **OpenAI Subscription** preset instead opens a ChatGPT browser login and uses the Codex Responses endpoint; no pasted session token is required. Its sign-in callback listens on a fixed localhost port (1455) required by the registered client, so a lingering process holding that port blocks sign-in until it exits; retry after freeing the port.\n\n`/model` selects the model haze should use. The picker also offers `add models`, which fetches a provider's model list from its OpenAI-compatible `/models` endpoint so you can pick instead of typing; if the endpoint is unavailable you can still type model names. You can also set one directly:\n\n```txt\n/model anthropic/claude-sonnet-4.6\n/model local:llama3.1\n```\n\n### MCP servers\n\nUse `/mcp` to connect [Model Context Protocol](https://modelcontextprotocol.io) servers and give the agent more tools. The interactive picker works like `/provider`: enable, disable, or remove a server; set its API key; or add one from a preset or custom configuration. The built-in Context7 preset provides current library documentation.\n\n```txt\n/mcp            # opens the server picker\n# add server -> context7                       (preset)\n# add server -> custom -> name -> http -> url  (custom remote)\n# add server -> custom -> name -> stdio -> cmd (custom local)\n```\n\nAPI keys for HTTP/SSE servers are entered in a masked prompt and sent as `Authorization: Bearer <value>`. Stdio authentication belongs in the command or wrapper; haze does not attach HTTP headers to stdio. Servers persist in `~/.haze/settings.json` under `mcpServers`. Discovery and cleanup have bounded deadlines, failures are isolated, and MCP tools never shadow built-ins.\n\nSaved settings live in `~/.haze/settings.json`. ChatGPT OAuth credentials live separately in `~/.haze/auth.json`; both files use private permissions. Provider keys and MCP headers require HTTPS unless the endpoint uses loopback HTTP (`localhost`, `*.localhost`, `127/8`, or `::1`). Keyless HTTP remains available, and local OpenAI-compatible providers do not need a key. If a settings or authentication file is malformed, haze shows an actionable error instead of treating it as empty. Configure everything inside haze with `/provider`, `/model`, and `/settings`; there are no environment variables to set. Provider presets carry curated per-model metadata (context window and output cap from the models.dev catalog) which the wizard writes into `modelLimits`.\n\nSwitch the interface palette with `/themes`. The picker lists every built-in theme — light palettes and oh-my-zsh ports like `robbyrussell`, `af-magic`, and `solarized-dark` — and applies the choice immediately; `/themes <name>` sets one directly. The selection persists as `theme` in `~/.haze/settings.json`, and text already on screen keeps its old colors.\n\nControl reasoning effort with `/reasoning`. The picker (or `/reasoning <level>`) sets one of `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`; the default is `high` when nothing is saved. `/reasoning unset` returns to the provider default (no reasoning parameter is sent) and `/reasoning status` shows the current level. The level is sent as the AI SDK's portable reasoning parameter (the standard `reasoning_effort` field on OpenAI-compatible endpoints) and applies from the next turn. Endpoints without native support ignore it. The selection persists as `reasoning` in `~/.haze/settings.json`; the current level is shown in the bottom status bar next to the model name.\n\nhaze focuses on chat, local tools, context files, sessions, and Markdown skills. Use `/skills` for workflows outside that core. Its interactive picker can generate a skill from a description, then enable, disable, validate, or remove it. For reviews, release prep, deploy checks, debugging routines, or a team-specific checklist, ask haze to create a skill and edit the resulting Markdown as needed.\n\n## Start using haze\n\nOpen a project and ask for work:\n\n```txt\ncreate a calculator in calc-app in ruby with add subtract multiply divide\n```\n\nhaze can inspect and edit files, fetch public URLs, and run commands. Tool activity stays compact in the transcript. Completed transcript entries render once as static terminal output, which keeps live model and spinner updates from repainting the full history. During a streamed answer, completed root-level Markdown blocks move into that static history while the unfinished block stays plain and live. Small edits show a colorized diff with one line of context on either side; large diffs get a short summary instead. Shell output is capped while the command runs, then filtered according to the command type. Validation failures keep the useful diagnostics. Raw output handles have per-entry and total memory limits, and tell you how many bytes were dropped. Sessions are saved after their first resumable message, so you can pick up the latest workspace conversation with `haze --continue` or `/resume` without accumulating empty session files.\n\nThe agent can start up to five dev servers or watchers as registered background processes. Their rolling output is capped at 256 KB and remains available through `readToolOutput`; the `process` tool lists, reads, and kills them. The status bar shows the live count. Starting a new session or exiting haze terminates every registered process tree, while aborting an individual turn leaves background work running. Background processes are unavailable inside fleet workers and never survive haze itself.\n\nUse `/` to discover commands and skills. Type `@` to browse workspace files; `Tab` completes the top suggestion.\n\nUseful starters:\n\n```txt\n/init\n/skills        # then add skill: name + a description like:\n                # \"review my current branch against main like a senior engineer\"\n                # \"prepare clean git commits from my uncommitted changes\"\n                # \"implement small features with tests and a concise summary\"\n```\n\n`/init` creates or updates `AGENTS.md` so future sessions understand the project.\n\n## Attach images\n\nReference an image in your prompt to attach it, and haze sends it to the model alongside your text:\n\n```txt\n@docs/screenshot.png the button in this shot is misaligned — fix it\n```\n\nImage input is opt-in per provider. Mark a provider image-capable in `/provider` before attaching, and haze shows which providers accept images in `/settings`. Attachments are limited to png, jpeg, gif, and webp files, up to 5 MB and 4 per message. Explicit user-typed paths may point outside the workspace; this exception is read-only and never expands mutation access. A non-capable provider, an invalid image path, or an oversized file fails with a clear message before any model call. Resumed sessions keep a short placeholder instead of the image bytes.\n\n## Skills that grow with your workflow\n\nSkills are Markdown workflows that haze creates with `/skills`. Choose **this project** to store a team workflow in `.haze/skills`, or **global** to store a personal workflow in `~/.haze/skills`. Project skills override same-named global skills in that workspace; `/skills` always shows each skill's provenance.\n\nIf you do something for the second time, build a skill for it:\n\n```txt\n/skills\n# Picker → add skill\n# Name: branch-diff-review\n# Description: review the diff between my current branch and main, focusing on bugs, tests, DRY and KISS\n```\n\nhaze uses the model to create the skill file for you at the explicitly selected scope:\n\n```txt\n.haze/skills/<skill-name>/SKILL.md       # project\n~/.haze/skills/<skill-name>/SKILL.md     # global\n```\n\nA skill is just Markdown with frontmatter, a role, a focused prompt, and a small output template:\n\n```md\n---\nname: code-review-diff-main\ndescription: Use when the user asks for a code review of the current branch against main.\n---\n\n# Role\n\nYou are a focused code reviewer.\n\n# Focused prompt\n\nReview the actual change and return useful, evidence-based feedback.\n\n# Procedure\n\nInspect branch state, changed files, staged and unstaged diffs, then review incrementally.\n\n# Output template\n\n## Summary\n- <scope and result>\n\n## Findings\n- <prioritized findings, or \"No issues found\">\n\n## Evidence inspected\n- <commands/files used>\n```\n\nInstalled skills appear as slash commands like:\n\n```txt\n/code-review-diff-main\n```\n\nThey are also available through one `skill` catalog tool. haze loads one workflow body first and fetches large references only when needed. Skills provide instructions; they do not execute code.\n\nWhen you catch yourself repeating the same instructions, put them in a skill. The workflow stays in a Markdown file that you can read and edit.\n\n## Commands\n\n```txt\n/help\n/provider\n/model\n/model <name-or-provider:name>\n/model list\n/settings\n/settings open\n/themes\n/themes <name>\n/reasoning [level|unset|status]\n/logs [id]\n/lsp\n/mcp\n/init\n/context\n/session\n/resume [id]\n/new\n/compact [instructions]\n/clear\n/exit\n\n/skills\n/tips\n/fleet [--review] [--profile <name>] [--workers <provider:model>] [--concurrency <n>] <prompt>\n```\n\nSkill management is a single interactive picker, mirroring `/provider`, `/lsp`, and `/mcp`: generate a custom skill from a description, then show info, enable/disable, validate, or remove. Disabled skills drop out of the model catalog and the `/<name>` command list until re-enabled.\n\nCLI flags:\n\n```bash\nhaze --debug         # show model/tool debug logs and write detailed JSONL logs to ~/.haze/logs\nhaze --continue      # resume the latest saved session for this workspace\nhaze --resume <id>   # resume an exact session id for this workspace\nhaze --no-session    # run without durable session storage\n```\n\nNon-interactive / print mode:\n\n```bash\nhaze -p \"refactor utils.ts to remove the unused export\"\nhaze -p \"summarize this repo\" --model openai:gpt-4o-mini\nhaze --resume <id> -p \"continue the investigation\"\nhaze -p \"list the top 3 bugs in src/api.ts\" --output json\nhaze -p \"audit src/auth.ts\" --output stream-json   # live NDJSON events, then the result envelope\nhaze -p \"migrate the config loader\" --until-done --timeout 2h   # relaunch through transient provider failures\necho \"what does this project do?\" | haze\n```\n\n`-p` and `--prompt` run one agentic turn with the full tool set and print the final assistant text. `--model` accepts a bare model name or `provider:name` and overrides the active model for that run without changing `~/.haze/settings.json`. The model must already be registered under a provider's `models`; add it once with `/provider`. Unknown or ambiguous selectors print a specific error to stderr and exit nonzero.\n\nIf you pipe stdin without `-p`, haze reads the prompt from stdin. Piped prompts are limited to 256 KiB; for larger input, pass a file path and ask haze to read it. One-shot runs do not create or update durable sessions, and they ignore `--continue`; `--resume <id>` can load an exact saved context for the turn without changing the original session. On a provider context overflow they compact the loaded conversation and retry at a progressively smaller message budget (up to twice), like the interactive path; if the window stays full the run ends failed with a resumable `context_exhausted` checkpoint, and when compaction is unavailable the error says so explicitly. Add `--debug` to write a detailed JSONL log under `~/.haze/logs/`.\n\n`--output` controls the result format: `text` is the default, `json` prints one final envelope, and `stream-json` writes live NDJSON events followed by the same envelope.\n\n`--output json` prints a single-line envelope instead of plain text:\n\n```json\n{\n  \"type\": \"result\",\n  \"status\": \"complete\",            // \"complete\" (exit 0) | \"aborted\" | \"failed\" (both exit non-zero)\n  \"result\": \"the final assistant text\",\n  \"usage\": {\n    \"inputTokens\": 0,\n    \"outputTokens\": 0,\n    \"cacheReadTokens\": 0,\n    \"cacheWriteTokens\": 0,\n    \"reasoningTokens\": 0\n  }\n}\n```\n\nThe `status` field is authoritative (driven by the agent's terminal state, not by parsing `result`), and the exit code mirrors it: `0` only for `complete`. A run that ends without a substantive final answer, after an unresolved final tool failure, or with declared tasks or required validation still unfinished is `failed` even if the provider returned normally; the evidence envelope carries the task counts and validation outcome that gated it. For fixes, red→green evidence is opportunistic: haze does not require a pre-edit failing repro, but if a recognized validation fails before the first mutation, that same command must pass after the fix. Long tool loops use one bounded Vercel AI SDK step at a time, releasing request-local SDK state while appending the exact provider message prefix for prompt-cache reuse. Per-turn step/tool budgets are safety boundaries, not completion: haze automatically continues the logical goal in fresh turns while measurable progress remains, so a budget boundary alone never fails a run. `--timeout` bounds the entire logical goal (not each internal turn), and `--until-done` additionally relaunches the goal after transient provider failures (exponential backoff, `goal_resume` events, a three-strike no-progress guard) until it structurally completes or the deadline hits — without granting any extra authority. The result envelope additionally carries a `goal` object (physical turns used, stop reason, total mutations, final validation outcome and task counts) when goal-level continuation was involved, and a bounded `notices` array with the gate decisions the run made (such as pause reasons) so scripts can see why a goal continued or stopped — the same decisions stream live as `goal_notice` events in `--output stream-json`.\n\n`--output stream-json` writes progress as the run happens. Each public event is one newline-delimited JSON object on stdout. The last line uses the same `{ type: \"result\", status, result, usage }` envelope as `--output json`, so consumers can display progress and parse the final result in the same way:\n\n```jsonc\n{\"type\":\"turn_start\",\"request\":\"audit src/auth.ts\",\"at\":\"2026-06-27T22:00:00.000Z\"}\n{\"type\":\"message_start\",\"id\":\"a1\",\"role\":\"assistant\",\"at\":\"...\"}\n{\"type\":\"message_update\",\"id\":\"a1\",\"text\":\"Reading the auth module…\",\"at\":\"...\"}\n{\"type\":\"tool_start\",\"id\":\"t1\",\"name\":\"readFile\",\"at\":\"...\"}\n{\"type\":\"tool_end\",\"id\":\"t1\",\"name\":\"readFile\",\"success\":true,\"durationMs\":12,\"at\":\"...\"}\n{\"type\":\"message_end\",\"id\":\"a1\",\"text\":\"Here are the findings…\",\"at\":\"...\"}\n{\"type\":\"turn_end\",\"request\":\"audit src/auth.ts\",\"status\":\"complete\",\"at\":\"...\"}\n{\"type\":\"result\",\"status\":\"complete\",\"result\":\"Here are the findings…\",\"usage\":{\"inputTokens\":0,\"outputTokens\":0,\"cacheReadTokens\":0,\"cacheWriteTokens\":0,\"reasoningTokens\":0}}\n```\n\nEach line is valid JSON and can be piped through `jq -c .`. Event types include `turn_start`, `message_start` / `message_update` / `message_end`, `tool_start` / `tool_end`, `resource_rollover`, `retry`, `context_overflow`, `compaction_start` / `compaction_end`, and `turn_end`. `resource_rollover` reports bounded SDK-step transitions and whether the provider prefix was preserved, without exposing prompts or tool output. Every event has an ISO-8601 `at` timestamp. Tool events omit raw inputs and outputs because CI and harness logs often capture stdout; use `--debug` for detailed local JSONL logs.\n\nThis mode is intended for harnesses that run haze without a person at the terminal. A supervisor can watch stdout for progress, stalls, or loops. The final `result` envelope contains the authoritative status, text, and usage. The `text` and `json` formats are unchanged.\n\nBy default, haze does not write detailed LLM logs under `~/.haze/logs/`; those files contain full prompts, messages, and tool I/O. Run `haze --debug` to enable file logging and the on-screen debug panel. Use `/logs` to review saved logs.\n\n## Agent tools\n\nhaze has a small built-in toolset:\n\n- `listFiles` handles structured discovery and recursive listings, with cursor pagination when needed.\n- `readFile` returns numbered UTF-8 lines in bounded pages, with `nextOffset` when more remain. It keeps a small, signature-checked index of line offsets so later pages do not start from the top of the file. File contents are not cached.\n- `grep` runs structured ripgrep searches with a global result cap and compacts long lines and result sets. It rejects directly named ignored roots unless `includeIgnored` is set.\n- `editFile` makes unique text replacements, tolerates accidental line-number prefixes, and returns a structured diff.\n- `replaceInFiles` previews or applies guarded literal/regex changes across files using stable occurrence IDs, globs, and expected-count checks.\n- `replaceLines` edits line ranges when exact replacements are awkward, clamps ranges that extend slightly past EOF, and returns a structured diff.\n- `writeFile` creates, overwrites, or appends files and parent directories, returning a diff for each successful content change.\n- `shell` runs tests, builds, git and gh commands, scripts, installs, and other command-line work in your configured login shell. Set `HAZE_SHELL` to an explicit executable for deterministic CI or service accounts. Its schema identifies the active shell dialect. Output is trimmed according to the command type while preserving useful failure details. A timeout or abort kills the process tree, escalates if necessary, and returns even when an escaped child keeps stdout or stderr open.\n- `readToolOutput` pages through retained raw output omitted from oversized or reduced results, subject to in-memory budgets.\n- `fetch` reads public `http(s)` URLs as Markdown, formatted JSON, or text. It rejects non-HTTP schemes, private and loopback addresses, metadata hosts, and malformed IPv6-like hosts. Bounded output remains available through `readToolOutput`.\n- `writeTasks` replaces the task list at meaningful phase changes. Completed lists clear on the next user turn.\n- `skill` loads an installed Markdown workflow or one of its references.\n- Optional LSP tools provide hierarchical symbol/body retrieval, definitions, enriched references, implementations, symbol-scoped diagnostics, semantic rename, and checked safe delete. They appear only when an enabled server command is installed.\n\nTool calls are grouped in the transcript so you can see what happened without reading a novella. Every successful `editFile`, `replaceInFiles`, `replaceLines`, `writeFile`, and mutating LSP content change shows colored additions and removals with line numbers and context. Large diffs keep an eight-row preview—the first four and last four rows, separated by an omission marker—and expose the complete retained diff through `readToolOutput`; no-op mutations are labeled explicitly. File-tool failures include a reason code and a recovery hint; protected secret files (SSH keys, shell histories, `.env` files, credentials) are refused outright with `secret_file_protected` and show as `blocked: protected secret file` in the transcript. Large shell, search, and fetch results stay behind an in-memory handle. Later model calls see a compact summary tailored to validation, git, search, diffs, JSON, logs, or the head and tail of the output.\n\n### Optional LSP navigation\n\nhaze can use stdio Language Server Protocol servers for semantic code navigation and refactoring. Open `/lsp` to add a preset or custom command, then enable, disable, or remove it. The presets cover TypeScript, Rust, Python, Go, and PHP. You install the server yourself. haze only exposes LSP tools when an enabled server command is on `PATH`; otherwise it uses `grep`, `listFiles`, and `readFile`. Warm servers are refreshed after external file changes, bounded indexing progress is respected, and a terminated server is restarted for one retry. Returned locations and workspace edits remain confined to the workspace. When haze closes a server or rejects malformed protocol output, it terminates the server's process tree and forces it to exit if necessary.\n\nExample TypeScript setup:\n\n```bash\nnpm install -g typescript typescript-language-server\n```\n\n```txt\n/lsp\n# -> add server -> typescript\n```\n\n## Subagents\n\nA subagent is a disposable worker with its own context. It is useful for a repository survey, log diagnosis, documentation search, or noisy validation run that would swamp the main conversation. The point is to isolate context, not merely to run things in parallel.\n\nThe worker receives a bounded description of its objective, deliverable, mode, and scope. It does not see the main conversation or sibling conversations, and it loads the relevant `AGENTS.md` or `CLAUDE.md` files itself. Only its compact result returns to the parent model. Tool logs, timings, usage, and estimated context savings stay out of that context.\n\nThe available modes are `inspect` (read-only), `research` (read-only with public fetch), `implement` (file changes and coordinated shell access), and `validate` (reads and coordinated shell access). Read-only modes cannot change files. Workers that can make changes are serialized with each other and with changes from the main turn. This coordination is not a shell sandbox.\n\nTool-call budgets apply to each execution, including calls submitted together. At the deadline, haze returns a terminal result and aborts the worker. If the underlying code ignores the abort, haze quarantines it and keeps its actual concurrency and mutation slot occupied until it settles. Retries stay within the same turn scope. Result handles exist only in the current process and are not durable, so each compact deliverable must stand on its own.\n\n`/fleet` remains parallel-only model decomposition over the same worker primitive. Its control guidance is ephemeral and sessions retain only the original invocation, task/result capsules, and final answer. Supported one-run flags are:\n\n```text\n/fleet --review <prompt>\n/fleet --profile local-safe <prompt>\n/fleet --workers provider:model <prompt>\n/fleet --concurrency 2 <prompt>\n/fleet -- --prompt-that-starts-with-a-flag\n```\n\nBuilt-in profiles are `local-safe`, `local-throughput`, `cloud-balanced`, and `cloud-fast`. haze never infers a profile from a provider name or endpoint URL. If no profile is selected, it uses a provider-neutral compatibility baseline. If no worker model is set, it reuses the explicitly selected active model. An invalid worker model or profile blocks execution instead of falling back. Settings can select or customize profiles:\n\n```json\n{\n  \"subagents\": {\n    \"workerModel\": \"local:qwen3-coder\",\n    \"defaultProfile\": \"local-safe\",\n    \"profiles\": {\"local-safe\": {\"maxConcurrency\": 1, \"deadlineMs\": 300000}}\n  }\n}\n```\n\nKeep trivial, conversation-coupled, sequential, user-interactive, or uncertain shared-mutation work in the main thread.\n\n## Context files\n\nhaze saves durable workspace sessions in `~/.haze/sessions`. It writes a session after the first resumable message, so empty sessions do not create files or appear under `/resume`. Settings, history, sessions, and debug logs use private POSIX directory/file permissions (`0700`/`0600`) and ordered, flushable writes. Use `/session` to see the current file, `/new` to start fresh, and `/resume` to browse workspace sessions, resume one, or fork its latest snapshot into a new session. `/resume <id>` and `haze --resume <id>` select an exact session. Use `/compact` to condense older model context: by default the active model writes a continuity summary of the older history (set `manualCompaction: \"heuristic\"` in settings to keep the model-free bounded excerpt instead); automatic mid-turn compaction also prefers a model-written summary once the older history is large, keeping the bounded excerpt for small trims and as the fallback when summarization fails. Sessions also persist compact structured work state: the active goal, touched files, validation evidence, blockers, and next action.\n\nSnapshots are written at turn boundaries, not per tool call. If haze crashes or is killed mid-turn, the session resumes from the last completed turn: work already on disk (file edits, command side effects) is not reflected in the session record, so after a crash verify the working tree (`git status`, `git diff`) before continuing. To keep long sessions from growing quadratically — every turn appends the full history again — session files are automatically compacted once superseded snapshots dominate the file: only the newest conversation and work-state snapshots are kept and the file is rewritten atomically.\n\nSession files are optimized for resume and audit, not token-by-token playback: completed user/assistant messages, tool lifecycle events, conversation snapshots, and work-state snapshots are persisted, but streaming `message_update` events are skipped. Large persisted tool outputs are replaced with previews and byte counts so a resumed model can reread current files instead of carrying stale megabytes forward.\n\nLong turns use bounded tool slices. Older successful tool results are compacted while failures and recent evidence remain verbatim, synthetic haze control nudges are not persisted as user requests, and token-pressure compaction preserves the structured work state.\n\nhaze loads project instructions from:\n\n- `~/.claude/CLAUDE.md`\n- `~/.haze/AGENTS.md`\n- `CLAUDE.md` / `AGENTS.md` files from filesystem root to the current workspace\n\nAt the same scope, `AGENTS.md` overrides `CLAUDE.md`; global haze guidance in `~/.haze/AGENTS.md` overrides global Claude guidance in `~/.claude/CLAUDE.md`. Nested `CLAUDE.md` / `AGENTS.md` files below the workspace are scoped: haze surfaces them only when file tools operate inside that directory or its subdirectories, injects newly discovered scoped guidance into the next model step, and mutating tools stop once so the model can review it before editing. Scoped context files are tracked by signature, so changed nested guidance can be read again later in the same session.\n\nUse `AGENTS.md` for project conventions, commands, architecture notes, and anything you do not want to explain again. Because context files are added to every request, `/init` keeps its discovery pass small, preserves useful existing guidance, and asks for a compact file.\n\n## Optional settings\n\nMost haze behaviour needs no configuration; a few optional keys in `~/.haze/settings.json` tune reliability and context handling. All are validated loudly — malformed values fail with a clear settings error instead of being silently ignored.\n\n- `modelRetries` (integer 0–10, default 2): size of the shared bounded retry pool for transient model errors and idle-stream stalls. Raise it for providers that terminate long streams aggressively; `0` disables automatic retries (a stalled stream pauses with the goal preserved for a one-key resume). The effective value is reported in `timeout` and `retry` stream events as `maxRetries`.\n- `retryBaseDelayMs` (integer 250–60000, default 1000): base delay for the shared retry pool's exponential backoff (`base × 2^attempt`, capped at 4× the base). The pool resets whenever a failed attempt completed steps since the previous retry, so intermittent blips on a long turn never exhaust it.\n- `contextWindowFallbackTokens` / `localContextWindowFallbackTokens` (default 128K hosted / 32K local): context-window guess for models without limits metadata or a curated catalog entry. Every turn emits a `context_budget` event naming the window and its source, and the interactive warning fires once per model per session when the built-in default was used.\n- `manualCompaction` (`\"llm-summary\"` default, or `\"heuristic\"`): whether manual `/compact` asks the active model for a continuity summary or keeps the model-free bounded excerpt.\n- `theme` (string, default `purple`): name of a built-in palette (`/themes` lists and sets them, with `light` and oh-my-zsh ports like `robbyrussell` included). Unknown names fail loudly at startup with the valid names listed.\n- `reasoning` (`\"none\"` | `\"minimal\"` | `\"low\"` | `\"medium\"` | `\"high\"` | `\"xhigh\"` | `\"provider-default\"`, default `high`): reasoning-effort level sent as the portable reasoning parameter. An absent key means `high`; the `provider-default` sentinel means no parameter is sent. `/reasoning` lists, sets, and clears it.\n\n## Safety model\n\nhaze is designed for attended use by an experienced developer on a single-user machine. It trusts the user and their global `~/.haze` configuration. Repository contents, project skills and instructions, fetched pages, MCP and LSP output, and model output are untrusted. A local attacker who already has access as the same operating-system user is outside this threat model.\n\nOrdinary file and tool output is data, not instructions. The system prompt says that fetched content, MCP/LSP output, and files outside the workspace cannot override its rules. Project context files and project skills are the exceptions: haze loads them as designated instruction sources, labels them as repository-provided content, and keeps them below system and user instructions in priority. Prompt injection cannot be eliminated by labeling alone, so user supervision remains part of the security boundary.\n\nShell classification is informational. haze does not ask for confirmation before running commands, including commands that can mutate or delete data. This is an intentional trade-off for attended expert use, not a sandbox or permission boundary.\n\n- Model-selected file tools are restricted to the current workspace and follow `.gitignore` by default.\n- Secret files are hard-blocked in every file tool, always: SSH keys (`~/.ssh/**` and `id_*` private keys), shell history files, `.env`/`.envrc` files, `*.pem`/`*.key`, and common home credential stores. Reads, edits, and writes are refused before any filesystem access with a terminal `secret_file_protected` result — no user-granted read exception, ignore override, or symlink form bypasses it — and grep traversal skips those names. Documentation variants (`.env.example`, `.env.sample`, `.env.template`, `id_*.pub`) stay readable. The transcript marks these attempts as `blocked: protected secret file`. The `shell` tool is not command-filtered; secret avoidance there is instructed through the system prompt, so shell remains inside your supervision boundary, not a sandbox.\n- A path explicitly typed by the user with `@path` or as a slash-containing bare path may grant read-only access for that turn, including outside the workspace. It never grants mutation access.\n- Ignored workspace files require an explicit override unless covered by that user-granted read exception. If Git cannot run at all, mutation tools refuse with `ignore_check_unavailable` (the safe direction for writes) — reads still proceed.\n- The `fetch` tool only reads public `http(s)` URLs. It rejects other schemes along with private, loopback, link-local, cloud-metadata, and malformed IPv6-like hosts. On every redirect, haze connects to the public IP it already validated, which closes the DNS-rebinding gap.\n- Project skills under `.haze/skills` are real-path-confined to the workspace and visibly labeled as untrusted repository content. Review them before using an unfamiliar repository.\n\nWith `--debug`, haze writes full request and message payloads to `~/.haze/logs/`. The files use private `0600` permissions on POSIX, but they can contain secrets and file contents. Do not share debug logs without reviewing and redacting them.\n\nSee [SECURITY.md](SECURITY.md) for supported versions and private vulnerability reporting.\n\n## Local development\n\n```bash\nnpm install\nnpm run dev\nnpm run typecheck\nnpm test\nnpm run lint\nnpm run build\nnpm run context:report\n```\n\n`npm run context:report` prints estimated system, project-context, and tool-schema tokens without reading `~/.haze`. Pass explicit context-file paths, or use `npm run context:report -- --trace tests/fixtures/agent-traces/long-workflow.json` for offline trace accounting.\n\n### Running the checkout instead of a global install\n\nA globally installed haze keeps serving its own code even while you work in a checkout — the exact failure mode where a fix lands locally but sessions keep running the old runtime. Two supported ways to run the checkout:\n\n```bash\nnpm run haze -- <arguments>   # run the source checkout directly, no global install touched\nnpm run dev:link              # build, link globally, and verify `haze` on PATH resolves to this checkout\n```\n\n`npm run dev:link` builds the checkout, runs `npm link`, resolves `command -v haze`, and fails loudly unless the linked binary reports this checkout's version and commit. Restart any running haze process afterward — a live process never hot-swaps its code.\n\n### Runtime provenance and diagnostics\n\nEvery build embeds a manifest (`dist/buildInfo.json`: version, commit, build time). The launcher verifies it before starting and refuses incomplete or stale builds with a rebuild hint instead of running partially outdated code.\n\n```bash\nhaze --version --verbose   # version, commit, runtime/executable paths, goal-supervisor state\nhaze doctor                # provenance, artifact/manifest checks, capability registry, checkout-mismatch warning\n```\n\nSession headers record the executing build (version + commit + build time), so a saved failure can be tied to the code that actually ran. When haze starts inside or below a checkout whose version/commit diverges from the running binary, it prints a startup warning naming both — it never switches runtimes silently.\n\nPackage check:\n\n```bash\nnpm pack --dry-run\n```\n\nThe npm package ships `bin`, `dist`, README, SECURITY.md, license, and changelog.\n\n## Release\n\nThe documentation site is committed as static HTML under `docs/`; there is no in-repository generator. Before a release, update the version stamps in every `docs/*.html` page and manually reconcile `index.html`, `quickstart.html`, `commands.html`, and `tools.html` with the README and changelog.\n\n```bash\nnpm ci\nnpm run typecheck\nnpm test\nnpm run lint\nnpm run build\nnpm audit\nnpm pack --dry-run\ngit tag vX.Y.Z\ngit push origin main --tags\nnpm publish --access public --provenance\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}