{"_id":"@slopus/happy-terminal","_rev":"5-31c845046a4a2b780f6fc31eed96b836","name":"@slopus/happy-terminal","dist-tags":{"placeholder":"0.3.0-beta.13","latest":"0.3.4"},"versions":{"0.3.0-beta.13":{"name":"@slopus/happy-terminal","version":"0.3.0-beta.13","keywords":["coding-agent","terminal"],"license":"MIT","_id":"@slopus/happy-terminal@0.3.0-beta.13","maintainers":[{"name":"steve.kite","email":"steve@korshakov.com"}],"homepage":"https://github.com/slopus/happy-agent#readme","bugs":{"url":"https://github.com/slopus/happy-agent/issues"},"bin":{"rig":"dist/main.js","happy-terminal":"dist/main.js"},"dist":{"shasum":"03e7db36bc1edf1ce868584ce93e09ce92e552a5","tarball":"https://registry.npmjs.org/@slopus/happy-terminal/-/happy-terminal-0.3.0-beta.13.tgz","fileCount":248,"integrity":"sha512-MIHClmQP7k2mdgrfhOHt1EN01KEkRkpV1TVAYiQdQLpO4IB5MWFulUhm33EmOQK1P+sTZkgC89pe8PrSIz7jlA==","signatures":[{"sig":"MEQCIAQVIbke1UPaLvzSjPonb+uAIzhQlh/B708fPpc7CofWAiBjU7GApALW3wLOqxLq6s8Lbj/FVy/GJScB1fK1ALqaDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1941619},"type":"module","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dist/main.js":"./dist/main.js","./package-version":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"},"./dist/readPackageVersion.js":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"}},"scripts":{"test":"vitest run --isolate=false","build":"TMPDIR=\"$PWD/../../.local\" tsx scripts/build.ts","check":"tsc --noEmit","start":"node dist/main.js","test:live":"HAPPY_TERMINAL_LIVE_TEST=1 vitest run -c vitest.live.config.ts","test:watch":"vitest"},"_npmUser":{"name":"steve.kite","email":"steve@korshakov.com"},"repository":{"url":"git+https://github.com/slopus/happy-agent.git","type":"git"},"_npmVersion":"11.11.0","description":"Happy Terminal, the embeddable terminal client for Happy Agent.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.21.1","pino":"^10.3.1","sharp":"^0.35.3","turndown":"^7.2.4","smol-toml":"^1.7.0","drizzle-orm":"^0.45.2","@noble/curves":"^1.9.7","@libsql/client":"^0.17.4","@noble/ciphers":"^1.3.0","@slopus/murmur":"0.4.4","@pydantic/monty":"0.0.18","@lydell/node-pty":"1.2.0-beta.15","socket.io-client":"^4.8.3","@ff-labs/fff-node":"^0.9.6","@sinclair/typebox":"^0.34.49","@opentelemetry/api":"^1.9.1","@steve.kite/stdlib":"0.0.12","@slopus/ghostty-web":"0.1.3","@paralleldrive/cuid2":"^3.3.0","@slopus/ghostty-wasm":"1.3.6","@earendil-works/pi-tui":"^0.80.3","@mariozechner/clipboard":"^0.3.9","@slopus/happy-providers":"0.0.11","@opentelemetry/resources":"^2.10.0","@slopus/happy-agent-client":"0.0.13","@opentelemetry/sdk-trace-base":"^2.10.0","@opentelemetry/sdk-trace-node":"^2.10.0","@opentelemetry/semantic-conventions":"^1.43.0","@opentelemetry/exporter-trace-otlp-http":"^0.221.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vitest":"^3.2.4","esbuild":"^0.28.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.0.10"},"_npmOperationalInternal":{"tmp":"tmp/happy-terminal_0.3.0-beta.13_1787348928715_0.8016637757995047","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@slopus/happy-terminal","version":"0.3.1","keywords":["coding-agent","terminal"],"license":"MIT","_id":"@slopus/happy-terminal@0.3.1","maintainers":[{"name":"steve.kite","email":"steve@korshakov.com"}],"homepage":"https://github.com/slopus/happy-agent#readme","bugs":{"url":"https://github.com/slopus/happy-agent/issues"},"bin":{"rig":"dist/main.js","happy-terminal":"dist/main.js"},"dist":{"shasum":"40ac6631a4c8a0a44e7678bacaaabf7a876bac02","tarball":"https://registry.npmjs.org/@slopus/happy-terminal/-/happy-terminal-0.3.1.tgz","fileCount":248,"integrity":"sha512-epukpIkjOQ/DCSGBNOSRqKpFqdsX1XdukzNbBylh8ZbrPOF0aBJk5EN2DztVuZ/9tZq65XouJDpPbV+oA2DTDA==","signatures":[{"sig":"MEUCIQDGCO0ZqA4JVvAy8S1s7J/YQJ7Qo2zH5TmBojwuY8TrnwIgaIJLhxfZysJLa2dEOpCEOj7esLpebvdn2NybGaTKuy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slopus%2fhappy-terminal@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1941262},"type":"module","_from":"file:/home/runner/work/happy-agent/happy-agent/release-assets/slopus-happy-terminal-0.3.1.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dist/main.js":"./dist/main.js","./package-version":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"},"./dist/readPackageVersion.js":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"}},"scripts":{"test":"vitest run --isolate=false","build":"TMPDIR=\"$PWD/../../.local\" tsx scripts/build.ts","check":"tsc --noEmit","start":"node dist/main.js","test:live":"HAPPY_TERMINAL_LIVE_TEST=1 vitest run -c vitest.live.config.ts","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7dedc6e-3638-4239-99de-760027420211"}},"_resolved":"/home/runner/work/happy-agent/happy-agent/release-assets/slopus-happy-terminal-0.3.1.tgz","_integrity":"sha512-epukpIkjOQ/DCSGBNOSRqKpFqdsX1XdukzNbBylh8ZbrPOF0aBJk5EN2DztVuZ/9tZq65XouJDpPbV+oA2DTDA==","repository":{"url":"git+https://github.com/slopus/happy-agent.git","type":"git"},"_npmVersion":"11.18.0","description":"Happy Terminal, the embeddable terminal client for Happy Agent.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","pino":"^10.3.1","sharp":"^0.35.3","turndown":"^7.2.4","smol-toml":"^1.7.0","drizzle-orm":"^0.45.2","@noble/curves":"^1.9.7","@libsql/client":"^0.17.4","@noble/ciphers":"^1.3.0","@slopus/murmur":"0.4.4","@pydantic/monty":"0.0.18","@lydell/node-pty":"1.2.0-beta.15","socket.io-client":"^4.8.3","@ff-labs/fff-node":"^0.9.6","@sinclair/typebox":"^0.34.49","@opentelemetry/api":"^1.9.1","@steve.kite/stdlib":"0.0.12","@slopus/ghostty-web":"0.1.3","@paralleldrive/cuid2":"^3.3.0","@slopus/ghostty-wasm":"1.3.6","@earendil-works/pi-tui":"^0.80.3","@mariozechner/clipboard":"^0.3.9","@slopus/happy-providers":"0.0.11","@opentelemetry/resources":"^2.10.0","@slopus/happy-agent-client":"0.0.13","@opentelemetry/sdk-trace-base":"^2.10.0","@opentelemetry/sdk-trace-node":"^2.10.0","@opentelemetry/semantic-conventions":"^1.43.0","@opentelemetry/exporter-trace-otlp-http":"^0.221.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vitest":"^3.2.4","esbuild":"^0.28.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.0.10"},"_npmOperationalInternal":{"tmp":"tmp/happy-terminal_0.3.1_1787350577919_0.38097115222908284","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@slopus/happy-terminal","version":"0.3.2","keywords":["coding-agent","terminal"],"license":"MIT","_id":"@slopus/happy-terminal@0.3.2","maintainers":[{"name":"steve.kite","email":"steve@korshakov.com"}],"homepage":"https://github.com/slopus/happy-agent#readme","bugs":{"url":"https://github.com/slopus/happy-agent/issues"},"bin":{"rig":"dist/main.js","happy-terminal":"dist/main.js"},"dist":{"shasum":"492d965e938b89d4eff2d59f3de8b7f6c4cf6879","tarball":"https://registry.npmjs.org/@slopus/happy-terminal/-/happy-terminal-0.3.2.tgz","fileCount":247,"integrity":"sha512-KH84AO3G0sDDi3CZi6fDoOzCL9ihd86ho5ZAZQrxJ456UWv5HMxjWjVHotpvPcZIMssMvrCTpd5NOB9LobP8FA==","signatures":[{"sig":"MEQCIE1uCK5o1bMrziQmA+2FDtmDy0DMOLlkDHzX7MVl8ij1AiAiUe098Qma2avOyY/T3lPyqk5lyNj+XTG8BOFD4pGm6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slopus%2fhappy-terminal@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1932283},"type":"module","_from":"file:/home/runner/work/happy-agent/happy-agent/release-assets/slopus-happy-terminal-0.3.2.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dist/main.js":"./dist/main.js","./package-version":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"},"./dist/readPackageVersion.js":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"}},"scripts":{"test":"vitest run --isolate=false","build":"TMPDIR=\"$PWD/../../.local\" tsx scripts/build.ts","check":"tsc --noEmit","start":"node dist/main.js","test:live":"HAPPY_TERMINAL_LIVE_TEST=1 vitest run -c vitest.live.config.ts","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7dedc6e-3638-4239-99de-760027420211"}},"_resolved":"/home/runner/work/happy-agent/happy-agent/release-assets/slopus-happy-terminal-0.3.2.tgz","_integrity":"sha512-KH84AO3G0sDDi3CZi6fDoOzCL9ihd86ho5ZAZQrxJ456UWv5HMxjWjVHotpvPcZIMssMvrCTpd5NOB9LobP8FA==","repository":{"url":"git+https://github.com/slopus/happy-agent.git","type":"git"},"_npmVersion":"11.18.0","description":"Happy Terminal, the embeddable terminal client for Happy Agent.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","pino":"^10.3.1","sharp":"^0.35.3","turndown":"^7.2.4","smol-toml":"^1.7.0","drizzle-orm":"^0.45.2","@noble/curves":"^1.9.7","@libsql/client":"^0.17.4","@noble/ciphers":"^1.3.0","@slopus/murmur":"0.4.4","@pydantic/monty":"0.0.18","@lydell/node-pty":"1.2.0-beta.15","socket.io-client":"^4.8.3","@ff-labs/fff-node":"^0.9.6","@sinclair/typebox":"^0.34.49","@opentelemetry/api":"^1.9.1","@steve.kite/stdlib":"0.0.12","@slopus/ghostty-web":"0.1.3","@paralleldrive/cuid2":"^3.3.0","@slopus/ghostty-wasm":"1.3.6","@earendil-works/pi-tui":"^0.80.3","@mariozechner/clipboard":"^0.3.9","@slopus/happy-providers":"0.0.11","@opentelemetry/resources":"^2.10.0","@slopus/happy-agent-client":"0.0.17","@opentelemetry/sdk-trace-base":"^2.10.0","@opentelemetry/sdk-trace-node":"^2.10.0","@opentelemetry/semantic-conventions":"^1.43.0","@opentelemetry/exporter-trace-otlp-http":"^0.221.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vitest":"^3.2.4","esbuild":"^0.28.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.0.10"},"_npmOperationalInternal":{"tmp":"tmp/happy-terminal_0.3.2_1787353151805_0.8520884223699408","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@slopus/happy-terminal","version":"0.3.3","keywords":["coding-agent","terminal"],"license":"MIT","_id":"@slopus/happy-terminal@0.3.3","maintainers":[{"name":"steve.kite","email":"steve@korshakov.com"}],"homepage":"https://github.com/slopus/happy-agent#readme","bugs":{"url":"https://github.com/slopus/happy-agent/issues"},"bin":{"rig":"dist/main.js","happy-terminal":"dist/main.js"},"dist":{"shasum":"6d49d5c7c18c572b43f8bb0031c7bb8cb3e3a198","tarball":"https://registry.npmjs.org/@slopus/happy-terminal/-/happy-terminal-0.3.3.tgz","fileCount":247,"integrity":"sha512-dOM0iUXnpZLpFLnDoopI5puFxNAa2EQuK7kklMBjAuEn6uJME+kviGrA/DHzfNRAYLfjSShB9vikV2n/R1alug==","signatures":[{"sig":"MEQCIBSjtEUPdt6vwiLL71hZR9lGMzxOIZquVLe1ZZ1HeXGgAiA8bmNUMG0U3Iye1h0U8nkTz1khVxWMN1dR7Egnot4Zmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slopus%2fhappy-terminal@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1933974},"type":"module","_from":"file:/home/runner/work/happy-agent/happy-agent/release-assets/slopus-happy-terminal-0.3.3.tgz","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./dist/main.js":"./dist/main.js","./package-version":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"},"./dist/readPackageVersion.js":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"}},"scripts":{"test":"vitest run --isolate=false","build":"TMPDIR=\"$PWD/../../.local\" tsx scripts/build.ts","check":"tsc --noEmit","start":"node dist/main.js","test:live":"HAPPY_TERMINAL_LIVE_TEST=1 vitest run -c vitest.live.config.ts","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7dedc6e-3638-4239-99de-760027420211"}},"_resolved":"/home/runner/work/happy-agent/happy-agent/release-assets/slopus-happy-terminal-0.3.3.tgz","_integrity":"sha512-dOM0iUXnpZLpFLnDoopI5puFxNAa2EQuK7kklMBjAuEn6uJME+kviGrA/DHzfNRAYLfjSShB9vikV2n/R1alug==","repository":{"url":"git+https://github.com/slopus/happy-agent.git","type":"git"},"_npmVersion":"11.18.0","description":"Happy Terminal, the embeddable terminal client for Happy Agent.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.1","pino":"^10.3.1","sharp":"^0.35.3","turndown":"^7.2.4","smol-toml":"^1.7.0","drizzle-orm":"^0.45.2","@noble/curves":"^1.9.7","@libsql/client":"^0.17.4","@noble/ciphers":"^1.3.0","@slopus/murmur":"0.4.4","@pydantic/monty":"0.0.18","@lydell/node-pty":"1.2.0-beta.15","socket.io-client":"^4.8.3","@ff-labs/fff-node":"^0.9.6","@sinclair/typebox":"^0.34.49","@opentelemetry/api":"^1.9.1","@steve.kite/stdlib":"0.0.12","@slopus/ghostty-web":"0.1.3","@paralleldrive/cuid2":"^3.3.0","@slopus/ghostty-wasm":"1.3.6","@earendil-works/pi-tui":"^0.80.3","@mariozechner/clipboard":"^0.3.9","@slopus/happy-providers":"0.0.11","@opentelemetry/resources":"^2.10.0","@slopus/happy-agent-client":"0.0.20","@opentelemetry/sdk-trace-base":"^2.10.0","@opentelemetry/sdk-trace-node":"^2.10.0","@opentelemetry/semantic-conventions":"^1.43.0","@opentelemetry/exporter-trace-otlp-http":"^0.221.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vitest":"^3.2.4","esbuild":"^0.28.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.0.10"},"_npmOperationalInternal":{"tmp":"tmp/happy-terminal_0.3.3_1787361577756_0.9877831837071445","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@slopus/happy-terminal","version":"0.3.4","description":"Happy Terminal, the embeddable terminal client for Happy Agent.","keywords":["coding-agent","terminal"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/slopus/happy-agent.git"},"bin":{"happy-terminal":"dist/main.js"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package-version":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"},"./dist/main.js":"./dist/main.js","./dist/readPackageVersion.js":{"types":"./dist/readPackageVersion.d.ts","import":"./dist/readPackageVersion.js","default":"./dist/readPackageVersion.js"}},"publishConfig":{"access":"public"},"dependencies":{"@earendil-works/pi-tui":"^0.80.3","@ff-labs/fff-node":"^0.9.6","@libsql/client":"^0.17.4","@lydell/node-pty":"1.2.0-beta.15","@mariozechner/clipboard":"^0.3.9","@noble/ciphers":"^1.3.0","@noble/curves":"^1.9.7","@opentelemetry/api":"^1.9.1","@opentelemetry/exporter-trace-otlp-http":"^0.221.0","@opentelemetry/resources":"^2.10.0","@opentelemetry/sdk-trace-base":"^2.10.0","@opentelemetry/sdk-trace-node":"^2.10.0","@opentelemetry/semantic-conventions":"^1.43.0","@paralleldrive/cuid2":"^3.3.0","@pydantic/monty":"0.0.18","@sinclair/typebox":"^0.34.49","@slopus/ghostty-wasm":"1.3.6","@slopus/ghostty-web":"0.1.3","@slopus/happy-agent-client":"0.0.27","@slopus/happy-providers":"0.0.16","@slopus/murmur":"0.4.4","@steve.kite/stdlib":"0.0.12","drizzle-orm":"^0.45.2","pino":"^10.3.1","sharp":"^0.35.3","smol-toml":"^1.7.0","socket.io-client":"^4.8.3","turndown":"^7.2.4","ws":"^8.21.1"},"devDependencies":{"@types/node":"^24.0.10","@types/ws":"^8.18.1","esbuild":"^0.28.1","tsx":"^4.23.0","typescript":"^5.8.3","vitest":"^3.2.4"},"engines":{"node":">=24"},"scripts":{"build":"TMPDIR=\"$PWD/../../.local\" tsx scripts/build.ts","check":"tsc --noEmit","start":"node dist/main.js","test":"vitest run --isolate=false","test:live":"HAPPY_TERMINAL_LIVE_TEST=1 vitest run -c vitest.live.config.ts","test:watch":"vitest"},"_id":"@slopus/happy-terminal@0.3.4","bugs":{"url":"https://github.com/slopus/happy-agent/issues"},"homepage":"https://github.com/slopus/happy-agent#readme","_integrity":"sha512-aZkNoXWyYRYSWEUUQFDAKnYzDBYE4qFtpHsNu3WiLV2ccvutx8GYEKEHSj0W/MlUStiyKdAy/oUCGkkNMVhIug==","_resolved":"/home/runner/work/happy-agent/happy-agent/release-assets/slopus-happy-terminal-0.3.4.tgz","_from":"file:/home/runner/work/happy-agent/happy-agent/release-assets/slopus-happy-terminal-0.3.4.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-aZkNoXWyYRYSWEUUQFDAKnYzDBYE4qFtpHsNu3WiLV2ccvutx8GYEKEHSj0W/MlUStiyKdAy/oUCGkkNMVhIug==","shasum":"38f5b166fd2c1dcf5c8773e9ebcd02c8b0b490d3","tarball":"https://registry.npmjs.org/@slopus/happy-terminal/-/happy-terminal-0.3.4.tgz","fileCount":251,"unpackedSize":1965573,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slopus%2fhappy-terminal@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDqnN9SLZA5G6bFcEEa85PVIHgi7VvAB5mRgDidkhUi6AiBC3upDAZDKuc5q5WWnvUdi8FPzQBGgV6mxGkvsRU/WpA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a7dedc6e-3638-4239-99de-760027420211"}},"directories":{},"maintainers":[{"name":"steve.kite","email":"steve@korshakov.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/happy-terminal_0.3.4_1787526628395_0.5099948455587844"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-21T21:48:48.563Z","modified":"2026-08-23T23:10:28.902Z","0.3.0-beta.13":"2026-08-21T21:48:48.890Z","0.3.1":"2026-08-21T22:16:18.136Z","0.3.2":"2026-08-21T22:59:11.996Z","0.3.3":"2026-08-22T01:19:37.921Z","0.3.4":"2026-08-23T23:10:28.562Z"},"bugs":{"url":"https://github.com/slopus/happy-agent/issues"},"license":"MIT","homepage":"https://github.com/slopus/happy-agent#readme","keywords":["coding-agent","terminal"],"repository":{"type":"git","url":"git+https://github.com/slopus/happy-agent.git"},"description":"Happy Terminal, the embeddable terminal client for Happy Agent.","maintainers":[{"name":"steve.kite","email":"steve@korshakov.com"}],"readme":"# Happy Terminal\n\nHappy Terminal is the terminal interface for Happy Agent. The published `@slopus/happy-terminal`\npackage can be installed as a command, embedded directly in another Node.js application, used by\nthe `happy` CLI, or hosted by Happy Desktop.\n\n## Command line\n\n```sh\npnpm add --global @slopus/happy-terminal\nhappy-terminal\n```\n\nThe separate Happy CLI also integrates Happy Terminal and exposes it through `happy`.\n\nReleased installations check for a newer Happy Agent in the background. When one is available,\nthe terminal shows the host command to run, such as `happy upgrade` or\n`happy-terminal upgrade`. The standalone command downloads and verifies the newest Agent release,\nselects it, and gracefully reloads the daemon onto it. A locally linked `0.0.0` Agent is offered\nthat same update; running it replaces the local Agent with the published release.\n\n## Embed in a Node.js application\n\n```ts\nimport { runHappyTerminal, upgradeHappyAgent } from \"@slopus/happy-terminal\";\n\nif (process.argv[2] === \"upgrade\") {\n    await upgradeHappyAgent();\n} else {\n    await runHappyTerminal({\n        commandName: \"my-command\",\n        cwd: process.cwd(),\n    });\n}\n```\n\n`runHappyTerminal()` uses the current process's stdin and stdout, takes over the terminal until the\nperson exits, restores terminal modes, and then resolves. It does not install the CLI's fatal-error\nhandlers and does not exit the host process. Startup failures reject the returned promise. A host\ncan observe non-fatal background failures with `onError`:\n\n```ts\nawait runHappyTerminal({\n    cwd: \"/path/to/project\",\n    onError: (error) => applicationLogger.error(error),\n});\n```\n\nEmbedded sessions use `happy` in resume instructions by default. A different host command can be\nprovided with `commandName`. An embedded host may also provide `version` to replace the installed\nHappy Terminal package version in the startup UI.\n\nRun only one inline terminal at a time because each instance owns the process terminal while it is\nactive. Happy Terminal requires Node.js 24 or newer.\n\nThe embedding options type is exported as `RunHappyTerminalOptions`. Happy Agent API types belong\nto `@slopus/happy-agent-client`; embedding the TUI does not create a second API contract. The\npackage version helper is available from `@slopus/happy-terminal/package-version`. Embedding hosts\nthat provide a custom `commandName` should route that command's `upgrade` entry point through\n`upgradeHappyAgent()` so the suggestion shown by the terminal is actionable.\n\n## Happy Agent daemon\n\nHappy Terminal connects to an already-running Happy Agent daemon first. Otherwise it starts the\nselected binary recorded under `~/.happy/dist/config.json`. A published installation downloads the\nlatest matching macOS or Linux release once when nothing is selected yet.\n","readmeFilename":"README.md"}