{"_id":"@things-factory/twin-ai","_rev":"32-0db2d4f303a3788cd8c9f668a62327f1","name":"@things-factory/twin-ai","dist-tags":{"latest":"10.1.7"},"versions":{"10.0.0-zeta.12":{"name":"@things-factory/twin-ai","version":"10.0.0-zeta.12","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.0-zeta.12","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"268391ab92d8281d1a3b2dba10f7c70603f22b55","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.0-zeta.12.tgz","fileCount":40,"integrity":"sha512-IqpNzfaNbepQ6zbTnRHLe6j8RwRoxcPyrypMLe1eh6G/ksAk+Tcn7KCV/4fRNS73QXAoYClRGElWfa9EYMPiAA==","signatures":[{"sig":"MEQCICGKJdJlFNvc53dkIh6z819wU0801ghE/iHQNu4NXhxqAiB/nYsVcD82GNjONVM8KpgE1rRR+9CbvmeS8lcEhILizQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564083},"main":"dist-server/index.js","gitHead":"97d4fea91a41bbe317e60f80bd6bcd7444d777e0","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.5","@things-factory/shell":"^10.0.0-zeta.10","@things-factory/headless-twin":"^10.0.0-zeta.12","@things-factory/ai-client-base":"^10.0.0-zeta.10"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.0-zeta.12_1784532422243_0.6343989381663686","host":"s3://npm-registry-packages-npm-production"}},"10.0.0-zeta.13":{"name":"@things-factory/twin-ai","version":"10.0.0-zeta.13","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.0-zeta.13","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"d92682f2de678bba1f604737db268da4908be164","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.0-zeta.13.tgz","fileCount":40,"integrity":"sha512-Sar12lYj2GZbr3BNIFPWAZ+zAK5ZgNrXjfDDFXsGieP4Bx0Z3/dyCHvsKtpOV9kOxvmPy5XyDTXIM9L032Fuuw==","signatures":[{"sig":"MEUCIDfGSxdkrcSweo1Wv1aLQoQ7kbnXFzdpxSqXT4maFATJAiEAwDfCfgW5aH0o/KDzTXpbgN4gCY4/rg2Cj564vt4qHx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":565540},"main":"dist-server/index.js","gitHead":"dd5e089c8a44d101cc09e78a2f38e91be771b8e3","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.5","@things-factory/shell":"^10.0.0-zeta.10","@things-factory/headless-twin":"^10.0.0-zeta.12","@things-factory/ai-client-base":"^10.0.0-zeta.10"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.0-zeta.13_1784546767941_0.9731090740015631","host":"s3://npm-registry-packages-npm-production"}},"10.0.0-zeta.15":{"name":"@things-factory/twin-ai","version":"10.0.0-zeta.15","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.0-zeta.15","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"3d552c443aab6851dcba425dffd0cd4640d53003","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.0-zeta.15.tgz","fileCount":40,"integrity":"sha512-c0o4NviG4BdzuGAlEL8oAAqbbL/96Fe4/Tjo50zb4YY+j4YxoW2rUeparoY5tyMddzPNUA3Lx+GQbdj3z3IlGw==","signatures":[{"sig":"MEUCIQDey1UKiJ7IUzOQUpN+CiDFVOg6BwflSgaaCdaCn+6rkAIgWosPveuUzvwrHhU02acSYQS4k6y91D6gTp9qgb5BdIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":565540},"main":"dist-server/index.js","gitHead":"1fafbabbecbb710b7a265025b9632019e2d1a564","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.6","@things-factory/shell":"^10.0.0-zeta.10","@things-factory/headless-twin":"^10.0.0-zeta.15","@things-factory/ai-client-base":"^10.0.0-zeta.10"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.0-zeta.15_1784737265396_0.015249117270766055","host":"s3://npm-registry-packages-npm-production"}},"10.0.0-zeta.16":{"name":"@things-factory/twin-ai","version":"10.0.0-zeta.16","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.0-zeta.16","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"e26f34fbfcf53d78650d7bbd983aaf442e643238","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.0-zeta.16.tgz","fileCount":40,"integrity":"sha512-/9XW7L2gkppKYR4OY5KIqTqzpqzM/FFOpZFAYgKQsJjkQcLJ5sjAm0y/XxSQAuaJ/i1b+cSnci2s9hyarJ27MA==","signatures":[{"sig":"MEUCIQD5cqQ/D5/CYxs00FD16jyOab9OKZPlRts3IHFjvikujwIgHFGVZ+r5Ow34sdi7QxdzwvIDcANPT5cngsNhMH+2GKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":565856},"main":"dist-server/index.js","gitHead":"2e7100207aa2d5a2cadfdd64bb634cf48e4eee00","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.6","@things-factory/shell":"^10.0.0-zeta.10","@things-factory/headless-twin":"^10.0.0-zeta.16","@things-factory/ai-client-base":"^10.0.0-zeta.10"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.0-zeta.16_1784865122224_0.202816659184756","host":"s3://npm-registry-packages-npm-production"}},"10.0.0-zeta.18":{"name":"@things-factory/twin-ai","version":"10.0.0-zeta.18","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.0-zeta.18","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"775fbd1d5073b689150154bed26122bbea35667c","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.0-zeta.18.tgz","fileCount":40,"integrity":"sha512-zw7GjEogjoNJeTZqgSQtlQzu94w1lQRzuK76WmC8hEEadkSyfhbAH++68TjMRMzgxSyx+Fmbn/soOfYwR2s0kA==","signatures":[{"sig":"MEUCIFFChKbkHK917ZU2Ucpu8kociKNle1V47KMlwIsQfd8+AiEAhVYxveOccld4ehQYH7yKB1Wau1Nf1PXXeRFJ19hqYYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":565856},"main":"dist-server/index.js","gitHead":"4cbdcc1fc5eb81e2a05ae3096483bcc76b0490f2","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.6","@things-factory/shell":"^10.0.0-zeta.10","@things-factory/headless-twin":"^10.0.0-zeta.18","@things-factory/ai-client-base":"^10.0.0-zeta.10"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.0-zeta.18_1784941308994_0.09765640641248186","host":"s3://npm-registry-packages-npm-production"}},"10.0.0-zeta.19":{"name":"@things-factory/twin-ai","version":"10.0.0-zeta.19","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.0-zeta.19","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"94a8e09f31c3be4fa5fa6810f810df9109351c5a","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.0-zeta.19.tgz","fileCount":40,"integrity":"sha512-Rc43HQTojpsI/n4eN/Ew7XWjxczaHgWFKxBQnhnqUFYeC3mY//6QH6mJFBzZmOQrr2NjqnrTwWv0coy0vb2bVw==","signatures":[{"sig":"MEUCIQCFObzD28btRHDfEqQ8xh80U2ATG6VbqO5JZrhnxdepSQIgB4kDEVnNd/qcutedU23e3Kh3VrhZ6jy65U8DdjB+p5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":565856},"main":"dist-server/index.js","gitHead":"7d320de9943dc929c2fa71cc44b2b78089288f76","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.6","@things-factory/shell":"^10.0.0-zeta.10","@things-factory/headless-twin":"^10.0.0-zeta.19","@things-factory/ai-client-base":"^10.0.0-zeta.10"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.0-zeta.19_1785056512278_0.0661465171463087","host":"s3://npm-registry-packages-npm-production"}},"10.0.0":{"name":"@things-factory/twin-ai","version":"10.0.0","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.0","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"1e8e586f9b2b29b8291c0a273e2d463b6760d37c","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.0.tgz","fileCount":50,"integrity":"sha512-px2AtCMU7dHqgM2GHzH05BbGeBIzvGZ1TpQapMVuDtUyHiuscjy1qWScYjguqkAKB4QnweoTYMMeFj1cdaRPQg==","signatures":[{"sig":"MEUCIBocn+V7zYZOKn30qWteljx7wrhJr3KHZSnGrHH6r++yAiEA/NP9DoVoCMbzTSPvUUnvx047DBfhYLj3o3ziXLazUL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":636286},"main":"dist-server/index.js","gitHead":"b20fa0816c33727f7ec327e0455687d3be620c58","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.6","@things-factory/shell":"^10.0.0","@things-factory/headless-twin":"^10.0.0","@things-factory/ai-client-base":"^10.0.0"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.0_1785330875212_0.27743977369561823","host":"s3://npm-registry-packages-npm-production"}},"10.0.2":{"name":"@things-factory/twin-ai","version":"10.0.2","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.2","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"c4c41f09205d81d216c053daa29ecc965d509707","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.2.tgz","fileCount":51,"integrity":"sha512-8ea/I7d19TEU2v/NSSA0yX48+li6agTMHOPszwwRFe0QKpio2Z9KYHFCZhgEgtkrfZmUQYbJXnvkRxs23wjsOQ==","signatures":[{"sig":"MEUCIQDVEx3Z7aGu/hN0c3wv2zNQ84Y3sgEYG+EBd9wA6NBu2QIgVLDSX185PSGY4+K3FR+HX2zwgpRHPA6xPhzKe+8VdOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":678567},"main":"dist-server/index.js","gitHead":"a69c3592a44e27bfa8212bc06268bff6140afc9a","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.6","@things-factory/shell":"^10.0.0","@things-factory/headless-twin":"^10.0.0","@things-factory/ai-client-base":"^10.0.2"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.2_1785347832690_0.4148445014759343","host":"s3://npm-registry-packages-npm-production"}},"10.0.3":{"name":"@things-factory/twin-ai","version":"10.0.3","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.3","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"3907e7c360b7d5d41819de2d4a913c1eb49a4c8c","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.3.tgz","fileCount":51,"integrity":"sha512-b0qnHnpxRAecHvXmOEJ/39AliAkc78xhpozPm7f9zEXCpln8Vz7g9yYFUwME7WpbIip6uX6inPn2M2NDT4lqJw==","signatures":[{"sig":"MEUCIQDzjHle4p/DHkLLAIy8ULVJK+CpVz3zsvt7hEGxg2qS9gIgWxKcRgSfDEQB9PtIS52ifhfsPO+xHDJHYrFMy7V5lZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":701589},"main":"dist-server/index.js","gitHead":"c7d253b722b6917e8911f6ef6e78e5fc2b295e82","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.6","@things-factory/shell":"^10.0.3","@things-factory/headless-twin":"^10.0.3","@things-factory/ai-client-base":"^10.0.3"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.3_1785410054809_0.10617687729121728","host":"s3://npm-registry-packages-npm-production"}},"10.0.4":{"name":"@things-factory/twin-ai","version":"10.0.4","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.4","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"74c8d599e3d4ec4d794fc63b1bfa803c8a8e5615","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.4.tgz","fileCount":51,"integrity":"sha512-W0pVX44fWCOWnWglD1lc2TN+TVr9dS4XuZ1W5/3UlKdwRV1moU8ptW0z+ZbfVJDEO21bZyzvtuT1yH3Rdb8P1Q==","signatures":[{"sig":"MEQCIEH8TMzSzmxSuNB5xpiR71IUdG/HpX0R12EQh/z9Y9kdAiAyzGIySzSsTH+BJEp8lMno0FwKRYmhu9ueCN93FZmVTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":701589},"main":"dist-server/index.js","gitHead":"c8f6dcfea3ffe7a9dd2a7195e83e2e4e201fd5ea","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.6","@things-factory/shell":"^10.0.4","@things-factory/headless-twin":"^10.0.4","@things-factory/ai-client-base":"^10.0.4"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.4_1785413182985_0.9853385426161863","host":"s3://npm-registry-packages-npm-production"}},"10.0.5":{"name":"@things-factory/twin-ai","version":"10.0.5","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.5","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"d3955faac26e167411a14871a12bbc4e98999471","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.5.tgz","fileCount":51,"integrity":"sha512-f+sYd5nZfolKcHEJFwlq/MaS+XVufjXBsf/cSZ4QiLGz6SpjyqQVdVihwBonVQp1yjyLwO4aeMMq83quKmpRPw==","signatures":[{"sig":"MEUCIQDvAFu1CauVVD+GrktKLzO8r6C7XPVH7MaOm7ayNdzDdQIgPqgRQeDMAvAlZp/yXRLsJ43G+cXSJWKMeDBAWfSZVcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":737666},"main":"dist-server/index.js","gitHead":"42240a9b6d504181850ea30188f215434b2dd55f","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.0.6","@things-factory/shell":"^10.0.5","@things-factory/headless-twin":"^10.0.5","@things-factory/ai-client-base":"^10.0.4"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.5_1785455682421_0.11415400042177315","host":"s3://npm-registry-packages-npm-production"}},"10.0.6":{"name":"@things-factory/twin-ai","version":"10.0.6","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.6","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"4970a6acf5122fe69f4b6293b95866756ce58620","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.6.tgz","fileCount":51,"integrity":"sha512-FKoJbyhBeMHzTrNnaanLw34sNERdkPn9c9i/TeA52bL89oDv3z9+QNsi8+dke8A061QyQFdLD5g/78B3mjkmoA==","signatures":[{"sig":"MEUCIGnA1Vr+JCTW8iXv75nl8w/otnBSK8tQkKRg7tr8X9RsAiEAyfIGtn98F+7T3awuIQyiTT4QaJQtyhVseV1J5SD2U84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":738205},"main":"dist-server/index.js","gitHead":"b929c16f83f70bfcc9a144ac6a50232efa56cd64","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.1.0","@things-factory/shell":"^10.0.6","@things-factory/headless-twin":"^10.0.6","@things-factory/ai-client-base":"^10.0.4"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.6_1785486793098_0.12781400958018918","host":"s3://npm-registry-packages-npm-production"}},"10.0.7":{"name":"@things-factory/twin-ai","version":"10.0.7","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.7","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"dd457767deed2c947c345fa7d1cc47b6f25f1ff9","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.7.tgz","fileCount":53,"integrity":"sha512-4w2Tu9gWa0iuIPxNxk5L5M5/AjYyxnn8X3cWXRFNsq3QsmDvxp0jaBp2+8KzpwEa08WgVaQAJYWocUaTrQbAoA==","signatures":[{"sig":"MEUCIEWkxAEMwdP9vr9ZG50XfbYl4jMEgSKQPlX9K1pF36c+AiEAsuImeU1w42xmDRbD2I6sCPgeUODK7qzWDbfpUxjVy44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":782482},"main":"dist-server/index.js","gitHead":"fffd94e886b67ed9019993a572a632054e812fa3","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.4.0","@things-factory/shell":"^10.0.7","@things-factory/headless-twin":"^10.0.7","@things-factory/ai-client-base":"^10.0.4"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.7_1785650371012_0.0018054566556313656","host":"s3://npm-registry-packages-npm-production"}},"10.0.8":{"name":"@things-factory/twin-ai","version":"10.0.8","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.8","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"c5dc57078666b14f972f53d16242720f6f96dd06","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.8.tgz","fileCount":53,"integrity":"sha512-Q9bzqtOIfhcg6ZcAxAlL7cveBFPk6yJSIX33bvbZgeKithLV9Xs4WxS+4tQR3K0/IVukPwMlJnedXnmaPyFhJg==","signatures":[{"sig":"MEQCIE6efApoYsZGy6VdfHEcLDzjdQ+nTadEySRDvugypmfHAiBNqWAlIYiNbX2AyT019oovcvmeXd8itTvSnyut3TG8bA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":782482},"main":"dist-server/index.js","gitHead":"4a5a29c9c4a8a3e04fd67a5e5a11a42f0131ad4b","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.4.0","@things-factory/shell":"^10.0.8","@things-factory/headless-twin":"^10.0.8","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.8_1785650826660_0.4086236799413918","host":"s3://npm-registry-packages-npm-production"}},"10.0.9":{"name":"@things-factory/twin-ai","version":"10.0.9","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.9","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"1a256d8190fef274b8679d8a03e1c965c6b986a0","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.9.tgz","fileCount":59,"integrity":"sha512-pyfQRxDonBxaBbiCR5AyyD1s52D1948FLeLTubG071KvvmbcaeZhTeaH7wYYEFEsL7pE4G0c6VMfeRImU2OOow==","signatures":[{"sig":"MEUCIGY+VuXpoxokBf+BmW1VtU2JI+GU4UKCM7Pw6Q6txfRwAiEA7XHwah3napg9O5aHodNaZslzxqpzf4q3g6lGf10TQns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":838911},"main":"dist-server/index.js","gitHead":"b7a6c48c213e7a504114397b752004a295c1df72","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.4.0","@things-factory/shell":"^10.0.9","@things-factory/headless-twin":"^10.0.9","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.9_1786027851618_0.9478956064655111","host":"s3://npm-registry-packages-npm-production"}},"10.0.10":{"name":"@things-factory/twin-ai","version":"10.0.10","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.10","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"312090cee224c721c6cf30548b59375a05dbcce5","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.10.tgz","fileCount":64,"integrity":"sha512-bTmr3n1gYmT17+9i5MA8VWuYopUbMJwfgdqOaVzpgFZAKmijx3Zu9EUOUiZmqBlHKIMZ8ehSLoTqTDMTe45KuQ==","signatures":[{"sig":"MEUCIB34AFXqGHi1NkB9UUh/h94+z2z/zdRg00hsgeMmsoioAiEA3GuPeGR11Fmw/LtdSyNpeKZA/yvFmO42JScvqAvCehU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":995819},"main":"dist-server/index.js","gitHead":"afb7bf76bb16e946c8e62d9e79199c3fa5e34174","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.7.30","@things-factory/shell":"^10.0.10","@things-factory/headless-twin":"^10.0.10","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.10_1787051203533_0.12053237839779762","host":"s3://npm-registry-packages-npm-production"}},"10.0.11":{"name":"@things-factory/twin-ai","version":"10.0.11","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.11","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"b5e25adb03b5c969ef53dc28d15c50bdae167a08","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.11.tgz","fileCount":64,"integrity":"sha512-YeddJmXudyBnYbv8hB1Zx+ABTH0HKSVhJwRKhntYpDMjyEcuLvBQ1z0owSG8yRfTO8VwdcCmJEdIj+JJYMKmhw==","signatures":[{"sig":"MEUCIQDx8ze5u4QKqXnY6XdDgJmEbnlHDak8f887zdNppwxTOgIgSTbHBygKpaXXzC24YuufQNFVwZvUsJtHEsTOHJSSadE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":995819},"main":"dist-server/index.js","gitHead":"3d26d911797ba51b29402bf26ff7888a46fccad4","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.7.30","@things-factory/shell":"^10.0.10","@things-factory/headless-twin":"^10.0.11","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.11_1787068277340_0.21522371731378764","host":"s3://npm-registry-packages-npm-production"}},"10.0.12":{"name":"@things-factory/twin-ai","version":"10.0.12","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.12","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"49d70924ba09f7d839d602b6472780a0b4228015","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.12.tgz","fileCount":64,"integrity":"sha512-7CpjToQZ5DlWILDTq3ABO/1sXPNHV4oNRH46zKoXdwg4Zlfcj73tKFKnL6H2rJLTJdOVlrQw3KcNvCr4kGWLaw==","signatures":[{"sig":"MEUCIAkjqMSNlMFSJ3dsarAHdBrx+4IPQbBLRqgsbWvl/d9MAiEAxW9MK6wLhnrLGCnYfx3T2jKLvQt35T8MsGBktSUuX5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1001275},"main":"dist-server/index.js","gitHead":"3cc678c07e9031a820662d43410f93b796ca012f","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.7.38","@things-factory/shell":"^10.0.10","@things-factory/headless-twin":"^10.0.12","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.12_1787151483484_0.041188445002765306","host":"s3://npm-registry-packages-npm-production"}},"10.0.13":{"name":"@things-factory/twin-ai","version":"10.0.13","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.13","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"5a5b3f2cbb481d01e1a9da922d3af802586fd5f7","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.13.tgz","fileCount":64,"integrity":"sha512-E4LhF25nkkEEa0Z1GfidlZ6Ri82gitk8pgWU1PE7J+sLMKPLdL1AFBsX7KtJluFbYcMLRN1pVYI2aeqGbdHvhA==","signatures":[{"sig":"MEYCIQDrVWbjbavXPF4anOyKYDvCJpcQ9UHBxIWNMzHVFddWdAIhAMTLdeXE0wY8BBnwmsGt/GWRQDQa8zxLmF660RxEauad","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1003568},"main":"dist-server/index.js","gitHead":"808b3b9e3bf15c058316ec4c73455108df7722aa","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.7.53","@things-factory/shell":"^10.0.13","@things-factory/headless-twin":"^10.0.13","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.13_1787484026142_0.9027521871859951","host":"s3://npm-registry-packages-npm-production"}},"10.0.14":{"name":"@things-factory/twin-ai","version":"10.0.14","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.14","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"ae98b2ee8964921f7af9e8e431e3f4f6b27977ab","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.14.tgz","fileCount":64,"integrity":"sha512-+Uia1woCbMZXtdUsDbdpiUMC+ZktOKYcuj8GlJgjKNqkbMnTW0BfxcmlS3scCc4VczZ2KXf65lXspHA6koExBw==","signatures":[{"sig":"MEUCIBW1pRoNr/uCk2Ofj7c5wPy3YFnvrI0xcbHlRz40TXjWAiEA7OrD/UgrmAYN4XbTSfjjrt4ynj4JDTV/Nf/il0aHCzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1003573},"main":"dist-server/index.js","gitHead":"539b63810538d7ce5428c2a2c581f6dcac3bb0b3","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.7.57","@things-factory/shell":"^10.0.13","@things-factory/headless-twin":"^10.0.14","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.14_1787555662159_0.6040056093803774","host":"s3://npm-registry-packages-npm-production"}},"10.0.15":{"name":"@things-factory/twin-ai","version":"10.0.15","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.15","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"abdd576d8525c72037687daeef1fa8383eb78223","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.15.tgz","fileCount":64,"integrity":"sha512-aVYDki6utMEl2ZRW7VO0VP+2RlEaOCfnX9+sVkduMaDKu4hqICHgc2Ea7SU+p1wRcvOYTy8mKUK/m4DCIxLgEQ==","signatures":[{"sig":"MEUCIQDNEHpxj0waiQTtTArDB1a25lfq1na8kJWGfDKH0YQNngIgXLJTbNwDJp9x1yAQgbjW2vnys7lw2zi7RGRaz4SBDCQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1003573},"main":"dist-server/index.js","gitHead":"18c7b66990821c6acda5d3c8e6149d518978e133","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.7.61","@things-factory/shell":"^10.0.13","@things-factory/headless-twin":"^10.0.15","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.15_1787600554117_0.9317567110320513","host":"s3://npm-registry-packages-npm-production"}},"10.0.17":{"name":"@things-factory/twin-ai","version":"10.0.17","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.17","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"4773c244493299bc9cf27b14026f7094fd7ac6b2","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.17.tgz","fileCount":64,"integrity":"sha512-cj/INdBu2wvL2RIV1UO1QJmW410PReeK9xZvCLJ+741Jsdwv/VBszgbAXFSXCV/6Te3ROAJmj1NS8JUj/Q7XpQ==","signatures":[{"sig":"MEYCIQDig/rX0P6y4D7qeMP0nWdIn8XAZlDIfgNfRfudSpXR8QIhAJ3XX/h0/Vl7wgkMCeIyM5zuMFbTcxewVFf5LdTepNsH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1004470},"main":"dist-server/index.js","gitHead":"07ed33dbe6530bef73afc4674bb36253b30ac849","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.7.67","@things-factory/shell":"^10.0.13","@things-factory/headless-twin":"^10.0.17","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.17_1787969214726_0.9304321483938114","host":"s3://npm-registry-packages-npm-production"}},"10.0.18":{"name":"@things-factory/twin-ai","version":"10.0.18","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.18","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"1a476864fd44c9fe6b3280d72e2ca530729d826c","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.18.tgz","fileCount":64,"integrity":"sha512-ZJ0miPP9Vnv+c/FbO7qJBtLU5OIxvhQbU7zjaYpoetpx/JlLBI+1YV/QCb3h8QIWu+3CfP1drUj3N2whSxuUKQ==","signatures":[{"sig":"MEYCIQDCbrOwXI6QJPuZ9JXPk7/1J5rBbUFxYZctjVmXa+cbDgIhAJX8oZLXVNGvynyKlqFTwW0UsILqUvbcXYpowfrOCPeG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1026066},"main":"dist-server/index.js","gitHead":"806c7af400517177f1323645df03558451587533","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.9.0","@operato/ops-contract":"^0.6.0","@things-factory/shell":"^10.0.18","@things-factory/headless-twin":"^10.0.18","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.18_1788103165088_0.08612506542747056","host":"s3://npm-registry-packages-npm-production"}},"10.0.19":{"name":"@things-factory/twin-ai","version":"10.0.19","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.0.19","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"0cc8b6badb953c849552e20fd14ed4fbf39e1bfb","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.0.19.tgz","fileCount":64,"integrity":"sha512-lDv+YBkIy5wTzEQCrmfNbOciB/JHFlw96dSBv2rFKDqDBiRLgKj1lvee21gC5wULOD43GpKoJdifgiLfl3DWyA==","signatures":[{"sig":"MEYCIQDYUYgA/h6qSc7HvUD1iyAzLTt5aVAaVDXz2UByY2puIQIhAKUb/pdMDDd8DQSwnAF+7yBUQ2hAbzrPycY164eKqEBO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1021429},"main":"dist-server/index.js","gitHead":"5c170a55152cfe906fe6dbc30e6bfe474ed64122","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.10.1","@operato/ops-contract":"^0.8.1","@things-factory/shell":"^10.0.19","@things-factory/headless-twin":"^10.0.19","@things-factory/ai-client-base":"^10.0.8"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.0.19_1788170835715_0.37006413805006844","host":"s3://npm-registry-packages-npm-production"}},"10.1.0":{"name":"@things-factory/twin-ai","version":"10.1.0","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.1.0","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"5808f3d3093e950fd2e12c1b78a715982a55e2e4","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.1.0.tgz","fileCount":64,"integrity":"sha512-c+WtEZBqva+yltolpXLYJ8G0XIddOl5MQL2WwRpL9H0A3XlvxElbHStLnhgrlpxW9Tnj/28qkgq9zxG+j8ZESw==","signatures":[{"sig":"MEUCIQCX/nhDMfK4tDxSIUnT5ehTgC77de9FLIQ55gAuux5G6QIgYTQi1fD9yEvBRVqBs9N4hpEI57VG3vYgeL+O5z2ErQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1027943},"main":"dist-server/index.js","gitHead":"8407b1e9d1f47f6676af144d4a33c8ac01cb49c4","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.11.7","@operato/ops-contract":"^0.9.12","@things-factory/shell":"^10.1.0","@things-factory/headless-twin":"^10.1.0","@things-factory/ai-client-base":"^10.1.0"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.1.0_1788788978677_0.04001995364066002","host":"s3://npm-registry-packages-npm-production"}},"10.1.1":{"name":"@things-factory/twin-ai","version":"10.1.1","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.1.1","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"42d5c85788a2a6a8901b55ce85566fef5a0374e8","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.1.1.tgz","fileCount":64,"integrity":"sha512-6cCRUdQaELz1hJXHEvAy9wn59yYq7sBpKRz6Uvc915WnozH5qI2jsqfxDn6RnPjLbcDscQTbc/S4J47yxrUKog==","signatures":[{"sig":"MEUCIQDJ6rrDsMEZcAMRz5I+WpAD0hXJLuJj3Cueo6K3VpbAtAIgKy3JOYqK6kGIs9Pl98oO2zVFdOPPLum8+zT+K3CjJGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1027943},"main":"dist-server/index.js","gitHead":"c8f13c30c39e006f932eb2903b27bd30587e7dc6","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.11.7","@operato/ops-contract":"^0.9.12","@things-factory/shell":"^10.1.1","@things-factory/headless-twin":"^10.1.1","@things-factory/ai-client-base":"^10.1.1"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.1.1_1788789133364_0.12634829717375284","host":"s3://npm-registry-packages-npm-production"}},"10.1.2":{"name":"@things-factory/twin-ai","version":"10.1.2","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.1.2","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"1c7b759d29add9a68e4cbc196ec894374b9d74db","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.1.2.tgz","fileCount":64,"integrity":"sha512-lo+6+sjpJpaaQ95OsuKZt3ZEs4bfkV8mTMEz9/5hEON/nXUCjo/pXa3OTPHTo4XIidRhh2g8x7WXbqpWEJh6zg==","signatures":[{"sig":"MEYCIQDuWpkU7GK54gp70e+GDOtvVHsSGvJ2fIvQRZWoc6G2KgIhAKOoxPEhHzAElDTuIL1INccZ1oq/35dq8PD/eBbUv32m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1027943},"main":"dist-server/index.js","gitHead":"679ef1d63953fb006afed9c2402dab57d7314f9a","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.11.7","@operato/ops-contract":"^0.9.12","@things-factory/shell":"^10.1.2","@things-factory/headless-twin":"^10.1.2","@things-factory/ai-client-base":"^10.1.2"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.1.2_1788789520799_0.36878186661684054","host":"s3://npm-registry-packages-npm-production"}},"10.1.3":{"name":"@things-factory/twin-ai","version":"10.1.3","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.1.3","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"f7e0a3109229a4849833c6c38f85daf66d1f703a","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.1.3.tgz","fileCount":64,"integrity":"sha512-1AaydP+RH1tR+lNt7Iu1OcH1Cak57SRpEhrebyl+89V/sSQLChBaFotMv59amvVjBcoExTJikGX1xmlVM/zwfQ==","signatures":[{"sig":"MEYCIQDOnb+nOzkvCLIgS0CRil5LpFq5MvW6gZL0SCR9FDkwkQIhAI79LysHA0OtuX7Hoi2W0ajbHenq7aqkQ+F4riPem43+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1027943},"main":"dist-server/index.js","gitHead":"406ecbf0d844099c41644531fe1a5ef5bddac84e","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.11.7","@operato/ops-contract":"^0.9.12","@things-factory/shell":"^10.1.3","@things-factory/headless-twin":"^10.1.3","@things-factory/ai-client-base":"^10.1.3"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.1.3_1788790103628_0.9678650084298153","host":"s3://npm-registry-packages-npm-production"}},"10.1.4":{"name":"@things-factory/twin-ai","version":"10.1.4","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.1.4","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"9ba1f476264c504b4430950a08d1339eb1507bcd","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.1.4.tgz","fileCount":64,"integrity":"sha512-HRhtzK88NW88LDk1LjA5fI4OmKOyPUy+VWIAGf+ehx6XdjyWJt38i8aRqvAohQmOaOC/i+gxUcvqYWWMalyrzw==","signatures":[{"sig":"MEUCIQC2RDpXrEbMb5QHz3Ieb9trhaC1bpDCzu9zhaMCM4xUMwIgf2/QesKd1+zrj3UBITxiJIHk1K0PPPCSF28SyeqVDYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1027718},"main":"dist-server/index.js","gitHead":"c653a2967daa76b3828f1eb7f4eb18934263d4b8","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.11.8","@operato/ops-contract":"^0.9.14","@things-factory/shell":"^10.1.4","@things-factory/headless-twin":"^10.1.4","@things-factory/ai-client-base":"^10.1.3"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.1.4_1788914029361_0.6881796178158455","host":"s3://npm-registry-packages-npm-production"}},"10.1.5":{"name":"@things-factory/twin-ai","version":"10.1.5","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.1.5","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"aa1c93db710a0c1b835076361d63ce80739f3f39","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.1.5.tgz","fileCount":62,"integrity":"sha512-RiF8XpTbxY8grIO1gc5+OfmjcTbIgvTvNdnDpSr3Xe4prYAxhOQvPe5ZqYBpVdQpw3kCzZ+4rkOwhJpbMEUlKg==","signatures":[{"sig":"MEYCIQCjkaMfHP3LYxEQ89cmvqdgh1BkXDZ7jQXwDc1SjvEnUAIhAN0WTB8HxeDcdzlCdbULGoPTNAX8WOIsSs++oM9ybpkl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1027425},"main":"dist-server/index.js","gitHead":"d7e60939822ef18e5311311746b2abd28f169173","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"nalshya113","email":"nalshya113@gmail.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v24.19.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@operato/twin-kernel":"^0.11.10","@operato/ops-contract":"^0.9.17","@things-factory/shell":"^10.1.4","@things-factory/headless-twin":"^10.1.5","@things-factory/ai-client-base":"^10.1.3"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.1.5_1788943748961_0.11330984838258518","host":"s3://npm-registry-packages-npm-production"}},"10.1.6":{"name":"@things-factory/twin-ai","version":"10.1.6","author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","_id":"@things-factory/twin-ai@10.1.6","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"dist":{"shasum":"f96c91bf3c03331d86535a918003338c0c7f2500","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.1.6.tgz","fileCount":64,"integrity":"sha512-OnrZz6rXQumY+UAHGv5MvP+Eb1Y6Z5iELQZuJJxljMXQ3WiSjaYQzbPLy701lyZlFuUePxlKGq2K3SyEaeBvzg==","signatures":[{"sig":"MEYCIQD5OytUR6T0qKCffhKgjWp0YZJX4gqOM56kkVRdnqU0AAIhAO9JppVsT04ackcI7wWZaM4Ky8egdEip8DYDYPQEurVa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1012344},"main":"dist-server/index.js","gitHead":"963aeb9ac470be5aea05bb5842a0a92afcab6036","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.11.10","@operato/ops-contract":"^0.9.17","@things-factory/shell":"^10.1.4","@things-factory/headless-twin":"^10.1.6","@things-factory/ai-client-base":"^10.1.6"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"tmp":"tmp/twin-ai_10.1.6_1789054529392_0.26535317127370117","host":"s3://npm-registry-packages-npm-production"}},"10.1.7":{"_id":"@things-factory/twin-ai@10.1.7","dist":{"shasum":"b5f8864261666e60ace1fe49ddb2b0d887a6dde6","tarball":"https://registry.npmjs.org/@things-factory/twin-ai/-/twin-ai-10.1.7.tgz","fileCount":64,"integrity":"sha512-vgKGRsj2mhxrJ4/h5Xv/YgF7DqQdgBkY1OCIuLoMdt5hg3m3MB6klc/Wgz5TAl8KXHHdxlXyNykoTkfIDPZtCA==","signatures":[{"sig":"MEQCIFH7AxBYGXX21wTfuqpAbqY2PVyuzv+pZ3nCTBtWBOVNAiBOB5rDtNh/MlHFbf8bEFQlINiI/MgVIdFes4gNRTzMTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGbrEiBtobrxBG8fiw9dTjgC9zQGCkDOAlL3FSQXR0RlAiBFjd7Mil8brqNi6BMzZNKpQGCXpTdVJ+J3ixkTX+TS+w=="}],"unpackedSize":1012847},"main":"dist-server/index.js","name":"@things-factory/twin-ai","author":"heartyoh <heartyoh@hatiolab.com>","gitHead":"9a036f83f5751f9e4af9180e9a0018f716a4ba27","license":"MIT","scripts":{"test":"node --test test/*.test.ts","build":"npm run clean:server && tsc","clean":"npm run clean:server","typecheck":"tsc --noEmit","verify:llm":"node scripts/verify-llm.ts","build:server":"npm run clean:server && tsc","clean:server":"rm -rf dist-server"},"version":"10.1.7","_npmUser":{"name":"heartyoh","email":"heartyoh@hatiolab.com"},"repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"_npmVersion":"lerna/8.2.4/node@v25.6.0+arm64 (darwin)","description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","directories":{},"maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"_nodeVersion":"25.6.0","dependencies":{"@operato/twin-kernel":"^0.11.10","@operato/ops-contract":"^0.9.17","@things-factory/shell":"^10.1.7","@things-factory/headless-twin":"^10.1.7","@things-factory/ai-client-base":"^10.1.7"},"publishConfig":{"access":"public","@things-factory:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"things-factory":true,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/twin-ai_10.1.7_1789144250342_0.20266751055865817"}}},"time":{"created":"2026-07-20T07:27:02.045Z","modified":"2026-09-11T16:30:50.642Z","10.0.0-zeta.12":"2026-07-20T07:27:02.410Z","10.0.0-zeta.13":"2026-07-20T11:26:08.108Z","10.0.0-zeta.15":"2026-07-22T16:21:05.512Z","10.0.0-zeta.16":"2026-07-24T03:52:02.376Z","10.0.0-zeta.18":"2026-07-25T01:01:49.242Z","10.0.0-zeta.19":"2026-07-26T09:01:52.450Z","10.0.0":"2026-07-29T13:14:35.390Z","10.0.2":"2026-07-29T17:57:12.908Z","10.0.3":"2026-07-30T11:14:14.993Z","10.0.4":"2026-07-30T12:06:23.127Z","10.0.5":"2026-07-30T23:54:42.706Z","10.0.6":"2026-07-31T08:33:13.258Z","10.0.7":"2026-08-02T05:59:31.169Z","10.0.8":"2026-08-02T06:07:06.800Z","10.0.9":"2026-08-06T14:50:51.844Z","10.0.10":"2026-08-18T11:06:43.682Z","10.0.11":"2026-08-18T15:51:17.505Z","10.0.12":"2026-08-19T14:58:03.645Z","10.0.13":"2026-08-23T11:20:26.292Z","10.0.14":"2026-08-24T07:14:22.376Z","10.0.15":"2026-08-24T19:42:34.267Z","10.0.17":"2026-08-29T02:06:54.891Z","10.0.18":"2026-08-30T15:19:26.273Z","10.0.19":"2026-08-31T10:07:15.858Z","10.1.0":"2026-09-07T13:49:38.817Z","10.1.1":"2026-09-07T13:52:13.529Z","10.1.2":"2026-09-07T13:58:40.937Z","10.1.3":"2026-09-07T14:08:23.823Z","10.1.4":"2026-09-09T00:33:49.518Z","10.1.5":"2026-09-09T08:49:09.142Z","10.1.6":"2026-09-10T15:35:29.563Z","10.1.7":"2026-09-11T16:30:50.457Z"},"author":"heartyoh <heartyoh@hatiolab.com>","license":"MIT","repository":{"url":"git+https://github.com/hatiolab/things-factory.git","type":"git","directory":"packages/twin-ai"},"description":"Twin AI assistant — grounded conversational Q&A over operato-twin (attentions/state) via ai-client-base. Reads twin data through canonical tools; never hallucinates.","maintainers":[{"name":"woo_ram","email":"wryang@hatiolab.com"},{"name":"jyp220","email":"jyp@hatiolab.com"},{"name":"heartyoh","email":"heartyoh@hatiolab.com"},{"name":"horwengliang95","email":"wliang@hatiolab.com"},{"name":"nalshya113","email":"nalshya113@gmail.com"},{"name":"shortstop","email":"shortstop@hatiolab.com"},{"name":"youngwook","email":"asdfghjklqwnm123@gmail.com"},{"name":"wengliang95","email":"horwengliang@gmail.com"}],"readme":"","readmeFilename":""}