{"_id":"@cubicler/cubicagent-openai","_rev":"14-9814ba0a4fb816499a680268ee081689","name":"@cubicler/cubicagent-openai","dist-tags":{"latest":"2.6.5"},"versions":{"2.3.1":{"name":"@cubicler/cubicagent-openai","version":"2.3.1","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.3.1","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"0c8a8151163f7475d519858c0a52e6b648eb1b22","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.3.1.tgz","fileCount":95,"integrity":"sha512-DD4ABVgA0NvYRshjg5hJktjlCMgNvfvFHeoxRr/GhYC9mLOlWHVsB0U0S78Vfy3I2JAzmB2DmexKvv4gb4v5Cg==","signatures":[{"sig":"MEUCIQDqnDYnVBlgJP1i9+Gp9AwGN/mb7DOq3YqLGMQJ5gNrxgIgMBhApUWs8OOc6d57kpfKJ+lOmJr3FdfQMJatm9oCl64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197296},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3cf8fd094187e4c6a06b0134c054c3ad6ad0c707","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests/unit","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.3.0 using CubicAgentKit 2.3.1","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.3.1_1754270548481_0.8859277640572294","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"@cubicler/cubicagent-openai","version":"2.3.2","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.3.2","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"e776c6fed89c3de1cd348a2a8a109520f75bf137","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.3.2.tgz","fileCount":95,"integrity":"sha512-Zn5nqLppJacsQeF4RRvYfoJnTSgKnjrEY7ATrKTOJMWycQt+ziXMNTYX7DA4V0syI/jWuH2SVnR7QTlOi9bkiw==","signatures":[{"sig":"MEUCIQCHCNDlMhrggosXqvc8qK1GhoXh8tUigNxzOj9gNhIB9gIgVniWcXloaCJKW/qZuW0yX2b5PFbdzdj8HT7CXXSNh/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196543},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4288fbf191edc8d438a02df9be0db262b52e728d","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests/unit","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.3.0 using CubicAgentKit 2.3.2","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.3.2_1754406105164_0.4259756951543834","host":"s3://npm-registry-packages-npm-production"}},"2.3.4":{"name":"@cubicler/cubicagent-openai","version":"2.3.4","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.3.4","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"3fc20df9c6eb76ab9915af3e28108df757f14038","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.3.4.tgz","fileCount":95,"integrity":"sha512-EWEtzYAVdzDnq6bPeUQJZeW6OREO8BhgT1ybb+2E1BS2gOcvNmdfKg9l4wIfbcWrSI75ZSDCyeokJj3Y7Lr4xA==","signatures":[{"sig":"MEQCIHviBRCC8BFjoktQm/KYoTCGzKBtm4R+/rxmn/I4rC9vAiB0FuFfyyphDi+YCPCUdyq9X/wgityvwyJtyfYaxJIzHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214363},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ae403185633d73bf3e208650931424d96857e369","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests/unit","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.3.0 using CubicAgentKit 2.3.3","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.3.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.3.4_1754418636135_0.9650082204515791","host":"s3://npm-registry-packages-npm-production"}},"2.3.5":{"name":"@cubicler/cubicagent-openai","version":"2.3.5","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.3.5","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"8436423e76ecf1df439081234aff3ecaa565fae6","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.3.5.tgz","fileCount":95,"integrity":"sha512-Bp1PvWu7rhjM8yCzEsgcvJkv03x4If8uqfjBsyJl7CfXopikVnOHcHqGFS3LoJCQ57tOwLtLENvaAuWlgu+3kA==","signatures":[{"sig":"MEUCIQDT3oJVMA+kwVrKsDgHLhkJwc2xGWzYBAYV+iNPIBT2RQIgAiHyCgOHJ1FniFtjUeoXkGukeTvSFRy1oCkgpDYpNR4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219305},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dff1c1fd1b94a68f9a29cfb3171f42dac0559c24","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests/unit","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.3.0 using CubicAgentKit 2.3.4","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.3.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.3.5_1754466720742_0.35872058148133745","host":"s3://npm-registry-packages-npm-production"}},"2.3.6":{"name":"@cubicler/cubicagent-openai","version":"2.3.6","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.3.6","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"473d20f20949f11d5efdbb8e8fd6e8fcd84a125b","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.3.6.tgz","fileCount":99,"integrity":"sha512-GvvTZ30lMQMWkv0L8Cz3YIBy2DhOxkDa7JJITLRPIY7mI3RFGrIWbXl9yvy/6n7gG4JgBqVKHlwdHnZjAF7J/g==","signatures":[{"sig":"MEYCIQDsOy7wsolmnUjXxLcmzuMEB9/kv6MMP86dQDMVKHgqywIhAIQcFVkwh+839rZu7JMXV9mtpkJKJulQoicOwnA9PH9l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246772},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9a19bad77fdeec33273d3b057449b104709ca442","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests/unit","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.3.0 using CubicAgentKit 2.3.4","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.3.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.3.6_1754480208290_0.9948458986044986","host":"s3://npm-registry-packages-npm-production"}},"2.3.7":{"name":"@cubicler/cubicagent-openai","version":"2.3.7","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.3.7","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"c5823b82632a97d3977a6296334304149b60c387","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.3.7.tgz","fileCount":107,"integrity":"sha512-XEgL+pYrkUbo3josBN9Glzv2bVU8+yyvdGtcOOegGLQtB2vJskuVPCiqWN5kLtvRnwtgNaMZYRA02syId2SUFw==","signatures":[{"sig":"MEUCIQDw8Vmgz+tsj5fIpowtpBQn5XV6S2+eod8NiEzFvwmq8AIgN0owUdRg473IBPV/RzbalO4o8QIsqr95Qi/AtnHBrHo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268558},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"59f718935a832038eb18c09672f4ab8933e25421","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests/unit","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.3.0 using CubicAgentKit 2.3.4","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.3.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.3.7_1754492365308_0.6035986574970216","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@cubicler/cubicagent-openai","version":"2.4.0","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.4.0","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"2e99985ce96c2fa56e37971ca69d244ac63c0bde","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.4.0.tgz","fileCount":123,"integrity":"sha512-x6zuaUWTCedlXoTDg7PFKsZYcZz43obj9+8C/n1cY1F+8BbG7BmHeFGbW4ANx0rXeww+L5EgLhC/vnODezcsbw==","signatures":[{"sig":"MEUCIET0s5hdY2HiAuoLE0zBwj6equRyTpWHohb7FkaoM4YjAiEAhs2BWJePnRvqQ48X9XFwO3OSbycFtuW+yEadwwMp6Jo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278910},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6786226eb20c45b2a5eebe475458912910d7e1a3","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.4.x using CubicAgentKit 2.4.0","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.4.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.4.0_1754650105522_0.5980952691669259","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@cubicler/cubicagent-openai","version":"2.5.0","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.5.0","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"2358f3e3be78f5ddf6388e67b891ef57dad289a2","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.5.0.tgz","fileCount":131,"integrity":"sha512-Ikhb9haaqOY7GPJ1DGy1lJ4bHtytlm+0xKjpzw15MuXL/aDAxynqpYtdUd6SqmjMh2t5C1HB4E0bgmN1gRAWVQ==","signatures":[{"sig":"MEQCIGlK/Bwu5wy9f1ijEFXp9CUsZbflM2fjOwRcdXKG1zzDAiBOl9gMn5fDMSEIK8O4mmdlFeBzl6q1+nVSM+Fj5H4SCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296493},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ce5015453d6d5f7c5a41a920fd322790a7f97057","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.5.x using CubicAgentKit 2.5.0","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.5.0_1754677405272_0.36845355008652847","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@cubicler/cubicagent-openai","version":"2.6.0","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.6.0","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"ddce9f31bdb217a9d48ebf4be365b46a41d78208","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.6.0.tgz","fileCount":135,"integrity":"sha512-DM93pwc94Ns5wW90KqvMg+ZTC78LUV6507p5+/7PD6+zk+6lsrfZ8p2xHu9r3yp9qXPqP04X9RzovJNJsQ+eSQ==","signatures":[{"sig":"MEUCIQDghKx1fox68bR25GAm8wJWr115vhZrxi9L3zePiO4BBAIgKHBpuPZ8djrr8gln0X812oLz7p75vIGH7mL8SGesvII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":299282},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7e7ba49813f699ed674dd2ee0d9eaca93ef02e93","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.6.x using CubicAgentKit 2.6.0","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.6.0_1754685388489_0.27281888119089026","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"@cubicler/cubicagent-openai","version":"2.6.1","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.6.1","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"f8102afb94291f6c3bc87d2a5cacc7b2f1291bc6","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.6.1.tgz","fileCount":143,"integrity":"sha512-Lq+fMlcWsF/rafWWZEtOBzMZd8w0W4Y8vChBc6vsuyQE8Pl3VhJGXGspEJqLLcHjdarfPUC6Jm2PJL88sWwNCQ==","signatures":[{"sig":"MEQCIB1YhQz9xfiYrgKo6GiCHbcNYHHOleC0ZsWmAGdz9D0QAiBVI3q1kxXjTCDNzLZ2S0sJzTVInfOH8jprxMKvCjbeCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321240},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"154e034086c9c277f3deea0422ea8c7d477c05ce","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.6.x using CubicAgentKit 2.6.1","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","pino":"^9.3.2","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.6.1_1754718344429_0.35974494971786","host":"s3://npm-registry-packages-npm-production"}},"2.6.2":{"name":"@cubicler/cubicagent-openai","version":"2.6.2","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.6.2","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"cb77372e9381cb5f2a97eced7636bc7af3d42eac","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.6.2.tgz","fileCount":143,"integrity":"sha512-YbqVF88lnG1Z3HHqhY94RuLTMSxm2XFhKGKsCsrsAae5JQ80H3qXGvGP6MRHcU4uyEKZY7IkF1SkPTTwGio4UA==","signatures":[{"sig":"MEYCIQCCfXIJ54COq6lGPg7P1LWJ8kTeMF9/BQ+0UetqlBOIPwIhAMOvjs5tIF4pbdeD36dusqQytIhSmjhnL5IJf9opVBDY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321308},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"74f30a39f6afab9fd45066c19159382e25030776","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.6.x using CubicAgentKit 2.6.1","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","pino":"^9.3.2","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.6.2_1754732969561_0.8898873975436197","host":"s3://npm-registry-packages-npm-production"}},"2.6.3":{"name":"@cubicler/cubicagent-openai","version":"2.6.3","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.6.3","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"afd8907ca18e5dcca2142005fcf44e6641eb6283","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.6.3.tgz","fileCount":143,"integrity":"sha512-Gcjniv1fT7KeRRCaYtFQNW4W/HpUkRpB6m4YYaV91dN8Dpgf9IeBms9TqxuWegpBxIJrEcBCPgslobBQtRgpKw==","signatures":[{"sig":"MEYCIQCim9A/dj9AJNfz/gnaRDvH5fPNIWCUVnPpGgGe5HXfnAIhAPHXZpP87yzqevReAmS0cWSyURCV9J8lrSXoKsmUdgAD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321308},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b20d38d00a18f6f3917557af718a9f5143f32df0","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","test:unit":"vitest --run tests","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.6.x using CubicAgentKit 2.6.2","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","pino":"^9.8.0","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.6.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.6.3_1754746763106_0.4224531884067466","host":"s3://npm-registry-packages-npm-production"}},"2.6.4":{"name":"@cubicler/cubicagent-openai","version":"2.6.4","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","_id":"@cubicler/cubicagent-openai@2.6.4","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"bin":{"cubicagent-openai":"dist/index.js"},"dist":{"shasum":"052c974e98e42e09e8ee6a1fd85673614e1d8780","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.6.4.tgz","fileCount":143,"integrity":"sha512-OxONdxv+BBkinXn23JscmQDbnfV4A6sUn/4iVuQtaXxW0gxI8rO/2b6uNqWIFzsUm8E1hVFO7il4zqyFDlfWIA==","signatures":[{"sig":"MEUCIQDt1tricxvWpP48B0UIuQAodIPEWMMEAoqCAXr0Hy+62QIgC1Tuxv1e2S4JQFXaWDEN2CfCkhxyXtcIdUJGHcBoyMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322340},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a2bb6627ab7f80973385f523c60fb1997993f204","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","prebuild":"npm run clean","prestart":"npm run build","postbuild":"chmod +x dist/index.js","test:unit":"vitest --run tests","test:watch":"vitest --watch","test:coverage":"vitest --coverage","publish:manual":"npm run build && npm publish --access public","test:integration":"vitest --run tests/integration"},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"repository":{"url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git","type":"git"},"_npmVersion":"10.8.2","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.6.x using CubicAgentKit 2.6.2","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.23.8","pino":"^9.8.0","dotenv":"^16.4.5","openai":"^4.63.0","@cubicler/cubicagentkit":"^2.6.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.5","eslint":"^9.9.0","vitest":"^2.0.5","@eslint/js":"^9.9.0","typescript":"^5.5.4","@types/node":"^20.14.15","@vitest/coverage-v8":"^2.0.5","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cubicagent-openai_2.6.4_1754748495717_0.7205580240482172","host":"s3://npm-registry-packages-npm-production"}},"2.6.5":{"name":"@cubicler/cubicagent-openai","version":"2.6.5","description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.6.x using CubicAgentKit 2.6.2","type":"module","main":"dist/index.js","bin":{"cubicagent-openai":"dist/index.js"},"scripts":{"build":"tsc","postbuild":"chmod +x dist/index.js","dev":"tsx watch src/index.ts","start":"node dist/index.js","test":"vitest run","test:watch":"vitest --watch","test:integration":"vitest --run tests/integration","test:unit":"vitest --run tests","test:coverage":"vitest --coverage","lint":"eslint src/**/*.ts","lint:fix":"eslint src/**/*.ts --fix","clean":"rm -rf dist","prebuild":"npm run clean","prestart":"npm run build","publish:manual":"npm run build && npm publish --access public"},"keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"author":{"name":"Cubicler"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git"},"dependencies":{"@cubicler/cubicagentkit":"^2.6.3","dotenv":"^16.4.5","openai":"^4.63.0","pino":"^9.8.0","zod":"^3.23.8"},"devDependencies":{"@eslint/js":"^9.9.0","@types/node":"^20.14.15","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@vitest/coverage-v8":"^2.0.5","eslint":"^9.9.0","tsx":"^4.16.5","typescript":"^5.5.4","vitest":"^2.0.5"},"engines":{"node":">=18.0.0"},"_id":"@cubicler/cubicagent-openai@2.6.5","gitHead":"28419695eebe13b7157c65c36f6232395846f70f","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","_nodeVersion":"20.19.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-VrGmcumr8LwgYdSpprPdo6KK3UX9ootebmAS2o5hYvqp2PlOjE5/Osxzv2i39mseoxabsOMdQb8TI19uP0Z3Zg==","shasum":"a374d5bf2cb2daede839739a7fd47eae5b6d91a2","tarball":"https://registry.npmjs.org/@cubicler/cubicagent-openai/-/cubicagent-openai-2.6.5.tgz","fileCount":143,"unpackedSize":312750,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCGCq3gfiXM8oLIfthNlQ/7izuzzcVOPI5QIkDwyHU6ywIgPAL6TwJA6NsiXTNqeYXMzcnowj2S63HmFvokrN+5Xz0="}]},"_npmUser":{"name":"hainayanda","email":"hainayanda@gmail.com"},"directories":{},"maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cubicagent-openai_2.6.5_1754810802231_0.22929719304145402"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-04T01:22:28.391Z","modified":"2025-08-10T07:26:42.634Z","2.3.1":"2025-08-04T01:22:28.658Z","2.3.2":"2025-08-05T15:01:45.383Z","2.3.4":"2025-08-05T18:30:36.364Z","2.3.5":"2025-08-06T07:52:00.929Z","2.3.6":"2025-08-06T11:36:48.519Z","2.3.7":"2025-08-06T14:59:25.546Z","2.4.0":"2025-08-08T10:48:25.714Z","2.5.0":"2025-08-08T18:23:25.488Z","2.6.0":"2025-08-08T20:36:28.685Z","2.6.1":"2025-08-09T05:45:44.620Z","2.6.2":"2025-08-09T09:49:29.776Z","2.6.3":"2025-08-09T13:39:23.312Z","2.6.4":"2025-08-09T14:08:15.931Z","2.6.5":"2025-08-10T07:26:42.418Z"},"bugs":{"url":"https://github.com/Cubicler/CubicAgent-OpenAI/issues"},"author":{"name":"Cubicler"},"license":"MIT","homepage":"https://github.com/Cubicler/CubicAgent-OpenAI#readme","keywords":["openai","agent","cubicler","mcp","chatgpt","gpt-4","function-calling","deployment"],"repository":{"type":"git","url":"git+https://github.com/Cubicler/CubicAgent-OpenAI.git"},"description":"Ready-to-deploy OpenAI agent application that integrates OpenAI's language models with Cubicler 2.6.x using CubicAgentKit 2.6.2","maintainers":[{"name":"hainayanda","email":"hainayanda@gmail.com"}],"readme":"# CubicAgent-OpenAI 🤖\n\nA **ready-to-deploy OpenAI agent application and npm library** that integrates OpenAI's language models (GPT-4, GPT-4o, GPT-3.5-turbo) with [Cubicler 2.6](https://github.com/hainayanda/Cubicler) using [`@cubicler/cubicagentkit@^2.6.0`](https://www.npmjs.com/package/@cubicler/cubicagentkit) as the foundation library.\n\n## 🎯 Overview\n\nCubicAgent-OpenAI is both a **deployable agent application** and a **reusable npm library** that:\n\n- ✅ **NPM Package** - Available as `@cubicler/cubicagent-openai` with CLI and library exports\n- ✅ **Multiple transport modes** - HTTP, SSE (Server-Sent Events), and stdio communication support\n- ✅ **JWT Authentication** - Full OAuth and static token support for secure communications\n- ✅ **CubicAgent injection** - Can be used as internal agent within Cubicler\n- ✅ **Memory integration** - Optional sentence-based memory with SQLite or in-memory storage\n- ✅ **Lazy initialization** - Only connects to Cubicler on first dispatch request\n- ✅ **Multi-turn conversations** - Handles iterative function calling with session limits\n- ✅ **OpenAI integration** - Supports GPT-4o, GPT-4, GPT-4-turbo, GPT-3.5-turbo\n- ✅ **MCP tool mapping** - Converts Cubicler tools to OpenAI function calling format\n- ✅ **Retry logic** - Robust MCP communication with exponential backoff\n- ✅ **TypeScript support** - Full type definitions and modern ES modules\n- ✅ **Zero-code deployment** - Just configure `.env` and run\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Node.js 18+\n- OpenAI API key\n- Running Cubicler 2.6 instance (connects automatically on first request)\n\n### Installation\n\n#### Option 1: npm Package (Recommended)\n\n```bash\n# Install as a dependency in your project\nnpm install @cubicler/cubicagent-openai\n\n# Or install globally for CLI usage\nnpm install -g @cubicler/cubicagent-openai\n```\n\n#### Option 2: Clone and Build\n\n```bash\n# Clone the repository\ngit clone https://github.com/Cubicler/CubicAgent-OpenAI.git\ncd CubicAgent-OpenAI\n\n# Install dependencies\nnpm install\n\n# Copy environment template\ncp .env.example .env\n\n# Edit .env with your configuration\nnano .env\n```\n\n### Configuration\n\nCreate a `.env` file with the following variables:\n\n```env\n# Required Configuration\nOPENAI_API_KEY=your-openai-api-key-here\n\n# OpenAI Configuration (with defaults)\nOPENAI_MODEL=gpt-4o\nOPENAI_TEMPERATURE=0.7\nOPENAI_SESSION_MAX_TOKENS=4096\n\n# Optional OpenAI Configuration\n# OPENAI_ORG_ID=org-your-organization-id\n# OPENAI_PROJECT_ID=proj_your-project-id  \n# OPENAI_BASE_URL=https://api.openai.com/v1\n# OPENAI_TIMEOUT=600000\n# OPENAI_MAX_RETRIES=2\n\n# Transport Configuration\nTRANSPORT_MODE=http\n# For HTTP transport (default):\nCUBICLER_URL=http://localhost:8080\n# For SSE transport (real-time):\n# SSE_URL=http://localhost:8080\n# SSE_AGENT_ID=my-unique-agent-id\n# For stdio transport:\n# STDIO_COMMAND=npx\n# STDIO_ARGS=cubicler,--server\n# STDIO_CWD=/path/to/cubicler\n\n# Memory Configuration (optional)\nMEMORY_ENABLED=false\nMEMORY_TYPE=memory\nMEMORY_DB_PATH=./memories.db\nMEMORY_MAX_TOKENS=2000\nMEMORY_DEFAULT_IMPORTANCE=0.5\n\n# Dispatch Configuration (with defaults)\nDISPATCH_TIMEOUT=30000\nMCP_MAX_RETRIES=3\nMCP_CALL_TIMEOUT=10000\nDISPATCH_SESSION_MAX_ITERATION=10\nDISPATCH_ENDPOINT=/\nAGENT_PORT=3000\n```\n\n### Running the Service\n\n#### Using npm Package\n\n```bash\n# Run directly with npx (recommended)\nnpx @cubicler/cubicagent-openai\n\n# Or if installed globally\ncubicagent-openai\n\n# With environment file\nnpx @cubicler/cubicagent-openai --env-file .env\n```\n\n#### Using Source Code\n\n```bash\n# Development mode\nnpm run dev\n\n# Production mode\nnpm run build\nnpm start\n```\n\nThe service will be available at `http://localhost:3000` with:\n\n- **Lazy initialization** - Server starts immediately, connects to Cubicler on first request\n- **Agent endpoint** - Default `/` (configurable via `DISPATCH_ENDPOINT`)\n- **Health checks** - Built into CubicAgentKit for monitoring\n\n## 🏗️ Usage Patterns\n\n### As a Standalone Application\n\n```bash\n# Using npm global installation\nnpx @cubicler/cubicagent-openai\n\n# Or using local clone\nnpm run dev\n```\n\n### As a Library in Your Project\n\n#### Using the Factory (Recommended)\n\n```typescript\nimport { createOpenAIServiceFromEnv } from '@cubicler/cubicagent-openai';\n\n// Create service from environment variables (automatically handles all configuration)\nconst service = await createOpenAIServiceFromEnv();\n\n// Start the service\nawait service.start();\n```\n\n#### New: Extended Factory Options\n\nFor advanced integration scenarios the library now provides multiple factory helpers:\n\n```typescript\nimport {\n  createOpenAIServiceFromEnv,          // Load everything from process.env\n  createOpenAIServiceFromConfig,       // Provide a validated config object\n  createOpenAIServiceWithMemory,       // Supply your own client/server + custom MemoryRepository\n  createOpenAIServiceBasic             // Supply your own client/server (no memory)\n} from '@cubicler/cubicagent-openai';\n\nimport { HttpAgentClient, HttpAgentServer, createDefaultMemoryRepository } from '@cubicler/cubicagentkit';\nimport { loadConfig } from '@cubicler/cubicagent-openai/config'; // or build your own config object\n\n// 1. From explicit config (you may reuse environment.ts schema in your app)\nconst fullConfig = loadConfig();\nconst serviceFromConfig = await createOpenAIServiceFromConfig(fullConfig);\nawait serviceFromConfig.start();\n\n// 2. With custom client/server + memory (e.g., embedding in existing infra)\nconst openaiConfig = fullConfig.openai;           // Pick from your own config system\nconst dispatchConfig = fullConfig.dispatch;       // Required for internal loop behavior\nconst client = new HttpAgentClient('http://cubicler.local:8080');\nconst server = new HttpAgentServer(4000, '/agent');\nconst memory = await createDefaultMemoryRepository(2000, 0.5);\nconst serviceWithMemory = createOpenAIServiceWithMemory(client, server, memory, openaiConfig, dispatchConfig);\nawait serviceWithMemory.start();\n\n// 3. Basic (no memory) supplying only transport primitives\nconst basicClient = new HttpAgentClient('http://cubicler.local:8080');\nconst basicServer = new HttpAgentServer(3001, '/');\nconst basicService = createOpenAIServiceBasic(basicClient, basicServer, openaiConfig, dispatchConfig);\nawait basicService.start();\n\n// 4. Still available – auto env loader\nconst envService = await createOpenAIServiceFromEnv();\nawait envService.start();\n```\n\nChoose the minimal factory that matches your control needs:\n\n- `createOpenAIServiceFromEnv`: Easiest; zero manual wiring.\n- `createOpenAIServiceFromConfig`: If you already centralize configuration and want deterministic instantiation.\n- `createOpenAIServiceWithMemory`: Inject custom memory implementation (e.g., distributed DB) plus your own transport wiring.\n- `createOpenAIServiceBasic`: Full control of transport, opt out of memory tools completely.\n\n#### Direct Service Construction (Advanced)\n\n```typescript\nimport { CubicAgent, HttpAgentClient, HttpAgentServer } from '@cubicler/cubicagentkit';\nimport { OpenAIService } from '@cubicler/cubicagent-openai';\n\n// Create CubicAgent with HTTP transport\nconst client = new HttpAgentClient('http://localhost:8080');\nconst server = new HttpAgentServer(3000);\nconst cubicAgent = new CubicAgent(client, server);\n\n// Create OpenAI configuration\nconst openaiConfig = {\n  apiKey: process.env.OPENAI_API_KEY!,\n  model: 'gpt-4o' as const,\n  temperature: 0.7,\n  sessionMaxTokens: 4096\n};\n\nconst dispatchConfig = {\n  timeout: 30000,\n  mcpMaxRetries: 3,\n  sessionMaxIteration: 10,\n  endpoint: '/',\n  agentPort: 3000,\n  mcpCallTimeout: 10000\n};\n\n// Initialize service\nconst service = new OpenAIService(cubicAgent, openaiConfig, dispatchConfig);\nawait service.start();\n```\n\n#### SSE Transport (Real-time)\n\n```typescript\nimport { CubicAgent, HttpAgentClient, SSEAgentServer } from '@cubicler/cubicagentkit';\nimport { OpenAIService } from '@cubicler/cubicagent-openai';\n\n// Create CubicAgent with SSE transport for real-time communication\nconst client = new HttpAgentClient('http://localhost:8080');\nconst server = new SSEAgentServer('http://localhost:8080', 'my-agent-id');\nconst cubicAgent = new CubicAgent(client, server);\n\n// Initialize service with SSE\nconst service = new OpenAIService(cubicAgent, openaiConfig, dispatchConfig);\nawait service.start();\n```\n\n#### Using with Memory Integration\n\n```typescript\nimport { createOpenAIServiceFromEnv } from '@cubicler/cubicagent-openai';\n\n// Set memory environment variables\nprocess.env.MEMORY_ENABLED = 'true';\nprocess.env.MEMORY_TYPE = 'sqlite';\nprocess.env.MEMORY_DB_PATH = './agent-memory.db';\n\n// Service automatically includes memory tools\nconst service = await createOpenAIServiceFromEnv();\nawait service.start();\n```\n\n#### Processing Individual Requests (Injected Agent)\n\n```typescript\nimport { OpenAIService } from '@cubicler/cubicagent-openai';\nimport type { AgentRequest, AgentClient } from '@cubicler/cubicagentkit';\n\n// Use existing CubicAgent instance (for injection scenarios)\nconst service = new OpenAIService(existingCubicAgent, openaiConfig, dispatchConfig);\n\n// Process a single request using the new dispatch method\nconst response = await service.dispatch(request);\n```\n\n#### Stdio Transport\n\n```typescript\nconst service = new OpenAIService(\n  openaiConfig,\n  dispatchConfig,\n  { mode: 'stdio', command: 'npx', args: ['cubicler', '--server'] }\n);\nawait service.start();\n```\n\n## � NPM Package Features\n\n### Installation Options\n\n```bash\n# Install as project dependency\nnpm install @cubicler/cubicagent-openai\n\n# Install globally for CLI usage\nnpm install -g @cubicler/cubicagent-openai\n\n# Use without installation\nnpx @cubicler/cubicagent-openai\n```\n\n### Library Exports\n\nThe npm package provides clean exports for integration:\n\n```typescript\n// Main service and factory\nimport { OpenAIService, createOpenAIServiceFromEnv } from '@cubicler/cubicagent-openai';\n\n// Utility functions\nimport { \n  buildSystemMessage, \n  buildOpenAIMessages,\n  cleanFinalResponse \n} from '@cubicler/cubicagent-openai/utils';\n```\n\n### CLI Usage\n\nWhen installed globally or used with npx:\n\n```bash\n# Start with default configuration\nnpx @cubicler/cubicagent-openai\n\n# With command-line options (stdio by default)\nnpx @cubicler/cubicagent-openai --model gpt-4o --temperature 0.3\nnpx @cubicler/cubicagent-openai --memory-db-path ./memories.db\nnpx @cubicler/cubicagent-openai --transport http --cubicler-url http://localhost:8080\n\n# Show help and all available options\nnpx @cubicler/cubicagent-openai --help\n\n# Show version\nnpx @cubicler/cubicagent-openai --version\n```\n\n#### MCP-Style Usage for Stdio Agent\n\nTo use as a stdio agent that can be spawned by Cubicler (similar to MCP servers):\n\n**Cubicler agents.json configuration:**\n\n```json\n{\n  \"agents\": {\n    \"openai-agent\": {\n      \"name\": \"OpenAI Agent\",\n      \"transport\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"@cubicler/cubicagent-openai\", \"--model\", \"gpt-4o\", \"--memory-db-path\", \"./openai-agent-memory.db\"],\n      \"description\": \"OpenAI agent with function calling\",\n      \"env\": {\n        \"OPENAI_API_KEY\": \"sk-your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n**Available CLI Options:**\n\n- `--model <model>` - OpenAI model (gpt-4o, gpt-4, gpt-3.5-turbo, etc.)\n- `--temperature <temp>` - Response temperature (0.0-2.0)\n- `--transport <mode>` - Transport mode (http, stdio, sse) - default: stdio\n- `--memory-db-path <path>` - Enable memory system with SQLite database path\n- See `--help` for complete list\n\n## �🐳 Docker Deployment\n\n### Quick Docker Run\n\n```bash\n# Build and run locally\ndocker build -t cubicagent-openai .\ndocker run -p 3000:3000 --env-file .env cubicagent-openai\n```\n\n### Docker Compose\n\nThe project includes a `docker-compose.yml` file for easy deployment:\n\n```bash\n# Using environment file\ndocker-compose --env-file .env up --build\n\n# Or with inline environment variables\nOPENAI_API_KEY=your-api-key CUBICLER_URL=http://localhost:8080 docker-compose up --build\n```\n\nExample `docker-compose.yml`:\n\n```yaml\nservices:\n  cubicagent-openai:\n    build: .\n    ports:\n      - \"${AGENT_PORT:-3000}:${AGENT_PORT:-3000}\"\n    environment:\n      # Required\n      - CUBICLER_URL=${CUBICLER_URL}\n      - OPENAI_API_KEY=${OPENAI_API_KEY}\n      \n      # OpenAI Configuration\n      - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n      - OPENAI_TEMPERATURE=${OPENAI_TEMPERATURE:-0.7}\n      - OPENAI_SESSION_MAX_TOKENS=${OPENAI_SESSION_MAX_TOKENS:-4096}\n      \n      # Dispatch Configuration\n      - AGENT_PORT=${AGENT_PORT:-3000}\n      - DISPATCH_TIMEOUT=${DISPATCH_TIMEOUT:-30000}\n      - MCP_MAX_RETRIES=${MCP_MAX_RETRIES:-3}\n      - MCP_CALL_TIMEOUT=${MCP_CALL_TIMEOUT:-10000}\n      - DISPATCH_SESSION_MAX_ITERATION=${DISPATCH_SESSION_MAX_ITERATION:-10}\n      - DISPATCH_ENDPOINT=${DISPATCH_ENDPOINT:-/}\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:${AGENT_PORT:-3000}/health\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 40s\n    restart: unless-stopped\n    networks:\n      - cubicagent-network\n\nnetworks:\n  cubicagent-network:\n    driver: bridge\n```\n\n## 🔧 API Reference\n\n### Session Flow\n\n1. **Lazy Connection** - Agent starts without connecting to Cubicler\n2. **First Request** - CubicAgentKit automatically initializes connection\n3. **Tool Discovery** - Agent fetches available tools via MCP\n4. **Iterative Execution** - OpenAI calls tools, agent executes, continues conversation\n5. **Session Limits** - Respects `DISPATCH_SESSION_MAX_ITERATION` and token limits\n\n### Request Format (handled by CubicAgentKit)\n\n```typescript\ninterface AgentRequest {\n  messages: Message[];      // Conversation history\n  // Additional CubicAgentKit fields handled automatically\n}\n\ninterface Message {\n  role: string;            // Message sender role\n  content: string;         // Message content\n}\n```\n\n### Response Format\n\nThe agent returns the final OpenAI response after processing any tool calls within the session iteration limit.\n\n## � Summarizer Tools (New)\n\nCubicAgent-OpenAI includes an optional **AI-powered summarizer feature** that automatically creates summarizer variants of all available MCP tools. This allows you to get focused, intelligent summaries of tool results tailored to your specific needs.\n\n### How It Works\n\nWhen enabled, the summarizer feature:\n\n1. **Automatically wraps MCP tools** - Creates `summarize_toolName` variants for each discovered tool\n2. **Dynamic registration** - Summarizer tools are added when new MCP tools are fetched\n3. **AI-powered analysis** - Uses a dedicated OpenAI model to generate focused summaries\n4. **Parameter passthrough** - All original tool parameters work exactly the same\n5. **Custom prompting** - Uses `_prompt` parameter for summarization instructions\n\n### Summarizer Configuration\n\nAdd the following environment variable to enable summarizer tools:\n\n```env\n# Enable summarizer feature with dedicated model\nOPENAI_SUMMARIZER_MODEL=gpt-4o-mini\n```\n\n**Benefits of using `gpt-4o-mini` for summarization:**\n\n- ✅ **Cost-effective** - Lower cost per token than main models\n- ✅ **Fast** - Optimized for quick processing\n- ✅ **Focused** - Perfect for analysis and summarization tasks\n- ✅ **Separate quota** - Doesn't consume main model tokens\n\n### Usage Examples\n\n#### Basic Summarization\n\n```json\n{\n  \"name\": \"summarize_getLogs\",\n  \"arguments\": {\n    \"_prompt\": \"Focus on errors only\",\n    \"userId\": 123,\n    \"timeRange\": \"24h\"\n  }\n}\n```\n\nThis will:\n\n1. Execute `getLogs` with `userId: 123` and `timeRange: \"24h\"`\n2. Pass the results to `gpt-4o-mini` with the prompt \"Focus on errors only\"\n3. Return both the original results and the AI-generated summary\n\n#### Advanced Summarization\n\n```json\n{\n  \"name\": \"summarize_searchDocuments\",\n  \"arguments\": {\n    \"_prompt\": \"Extract the 3 most relevant findings and highlight any security concerns\",\n    \"query\": \"authentication vulnerabilities\",\n    \"limit\": 50,\n    \"includeMetadata\": true\n  }\n}\n```\n\n#### Common Summarization Prompts\n\n```json\n// Focus on specific aspects\n\"_prompt\": \"Highlight any errors or warnings\"\n\"_prompt\": \"Extract key metrics and performance indicators\"\n\"_prompt\": \"Summarize main findings in bullet points\"\n\"_prompt\": \"Focus on recent changes or updates\"\n\n// Analysis and insights\n\"_prompt\": \"Identify patterns and trends in the data\"\n\"_prompt\": \"Highlight anomalies or unexpected results\"\n\"_prompt\": \"Extract actionable items and recommendations\"\n\"_prompt\": \"Compare current vs expected values\"\n\n// Format-specific requests\n\"_prompt\": \"Provide a technical summary for developers\"\n\"_prompt\": \"Create an executive summary for stakeholders\"\n\"_prompt\": \"List the top 5 most important items\"\n\"_prompt\": \"Explain the results in simple terms\"\n```\n\n### Tool Response Format\n\nSummarizer tools return enhanced responses with token usage tracking:\n\n```typescript\n{\n  success: true,\n  message: \"Tool executed and summarized successfully\",\n  originalTool: \"getLogs\",           // Original tool name\n  originalResult: { /* raw data */ }, // Complete original results\n  summary: \"AI-generated summary...\", // Focused summary based on _prompt\n  tokensUsed: 45                     // Tokens consumed by summarization\n}\n```\n\n**Token Usage Benefits:**\n\n- 📊 **Cost tracking** - Monitor summarization costs separately from main model\n- 📈 **Usage analytics** - Track which tools generate the most summarization overhead\n- 💰 **Budget control** - Set limits and alerts based on summarization token usage\n- 🔍 **Optimization insights** - Identify opportunities to improve prompt efficiency\n\n### Automatic Documentation\n\nWhen summarizer tools are available, they're automatically documented in the system prompt:\n\n```text\n## Summarizer Tools Available\nYou have access to 5 summarizer tools that can execute other tools and provide AI-powered summaries of their results.\n\n**Available Summarizer Tools:**\n- summarize_getLogs: Execute getLogs and summarize results based on your prompt\n- summarize_fetchUser: Execute fetchUser and summarize results based on your prompt\n- summarize_searchDocs: Execute searchDocs and summarize results based on your prompt\n\n**How to use summarizer tools:**\n- Include a \"_prompt\" parameter with specific instructions for summarization\n- Example: \"Focus on errors only\", \"Highlight key metrics\", \"Extract main findings\"\n- All other parameters are passed directly to the original tool\n- The summarizer will execute the tool and provide a focused, relevant summary\n\n**When to use summarizers:**\n- When you need a focused view of tool results\n- To extract specific information from large datasets\n- To get insights tailored to the user's current question\n- To reduce information overload from verbose tool outputs\n```\n\n### Benefits\n\n✅ **Intelligent filtering** - Extract only relevant information from large datasets  \n✅ **Cost-effective** - Use cheaper models for summarization while keeping premium models for reasoning  \n✅ **Contextual insights** - Get summaries tailored to your specific questions  \n✅ **Reduced cognitive load** - Process large tool outputs more efficiently  \n✅ **Custom perspectives** - Same data, different viewpoints based on prompts  \n✅ **Automatic integration** - No manual configuration needed, works with any MCP tool  \n\n### Parameter Safety\n\nThe `_prompt` parameter uses an underscore prefix to prevent collisions with real tool parameters:\n\n- ✅ **Collision-safe** - `_prompt` is very unlikely to conflict with existing parameters\n- ✅ **OpenAI compatible** - Underscore-prefixed parameters are fully supported\n- ✅ **Clear indication** - Underscore prefix clearly marks internal parameters\n- ✅ **JSON Schema compliant** - Follows standard parameter naming conventions\n\n### Architecture\n\n```text\nUser Request → summarize_toolName(params + _prompt)\n                        ↓\n            Execute original tool with params\n                        ↓\n               Get raw tool results\n                        ↓\n          Send to OPENAI_SUMMARIZER_MODEL with _prompt\n                        ↓\n        Return both original results + AI summary\n```\n\nThis approach ensures you always have access to both the complete data and the focused insights you need.\n\nThe project uses **Vitest** as the testing framework with comprehensive test coverage.\n\n### Unit Tests (Default)\n\nRun fast unit tests that mock external dependencies:\n\n```bash\n# Run unit tests (default - fast, no API key required)\nnpm test\n\n# Run tests in watch mode\nnpm run test:watch\n\n# Run tests with coverage\nnpm run test:coverage\n```\n\n**Features:**\n\n- ✅ **Fast execution** - No external API calls\n- ✅ **No OpenAI API key required** - Uses mocks and fixtures\n- ✅ **Comprehensive coverage** - Tests all core functionality\n- ✅ **Configuration validation** - Environment variable edge cases\n\n### Integration Tests (Separate)\n\nRun integration tests with real OpenAI API calls:\n\n```bash\n# Run integration tests (requires valid OpenAI API key)\nnpm run test:integration\n```\n\n**Features:**\n\n- ✅ **Real OpenAI API testing** - Validates actual ChatGPT responses\n- ✅ **Function calling validation** - Tests tool execution flow\n- ✅ **Session iteration testing** - Multi-turn conversation scenarios\n- ⚠️ **Requires `OPENAI_API_KEY`** in environment\n\n## 📁 Project Structure\n\n### Source Code Structure\n\n```text\nsrc/\n├── index.ts                         # Application entry point with CLI and library exports\n├── config/\n│   ├── environment.ts               # Environment variable validation with Zod\n│   └── types.ts                     # Configuration type definitions\n├── core/\n│   ├── agent-memory-handler.ts      # Memory integration with MCP tool handling\n│   └── openai-service.ts            # OpenAI API integration with iterative function calling\n├── models/\n│   └── types.ts                     # Core type definitions and interfaces\n└── utils/\n    └── message-helper.ts            # Message format conversion utilities\ntests/\n├── setup.ts                         # Test configuration and setup\n├── integration/\n│   └── openai-service.integration.test.ts # Integration tests with OpenAI API\n└── unit/\n    ├── config/\n    │   └── environment.test.ts      # Configuration validation tests\n    ├── core/\n    │   ├── agent-memory-handler.test.ts # Memory handler unit tests\n    │   └── openai-service.test.ts   # Unit tests for OpenAI service\n    └── utils/\n        └── message-helper.test.ts   # Message helper unit tests\n```\n\n### NPM Package Structure\n\n```text\ndist/                                # Compiled JavaScript output\n├── index.js                         # Main entry point and CLI binary\n├── config/                          # Configuration exports\n├── core/                            # Core service classes\n├── models/                          # Type definitions\n└── utils/                           # Utility functions\n\npackage.json                         # NPM package metadata with binary entry\n├── \"main\": \"dist/index.js\"         # Library entry point\n├── \"bin\": { \"cubicagent-openai\": \"dist/index.js\" } # CLI binary\n├── \"type\": \"module\"                 # ES modules support\n└── \"exports\": { ... }               # Clean import paths\n\nREADME.md                            # This documentation\nLICENSE                              # Apache 2.0 license\n.env.example                         # Example environment configuration\nDockerfile                           # Docker build configuration\ndocker-compose.yml                   # Docker compose for local development\nvitest.config.ts                     # Vitest test configuration\neslint.config.js                     # ESLint configuration\ntsconfig.json                        # TypeScript configuration\n```\n\n## 🛠️ Development\n\n### Key Components\n\n- **OpenAIService**: Main service class handling OpenAI API integration and iterative function calling\n- **CubicAgent**: Core orchestrator from CubicAgentKit 2.6.0 with lazy initialization\n- **Message Helper**: Utilities for converting between Cubicler and OpenAI message formats\n- **Environment Configuration**: Zod-based validation for all environment variables\n- **Lazy Initialization**: Automatic connection to Cubicler on first dispatch request\n\n### Architecture Benefits\n\n- **Fast Startup**: Application starts immediately without waiting for Cubicler connection\n- **Fault Tolerance**: Can start even if Cubicler is temporarily unavailable\n- **Resource Efficiency**: Only establishes connection when needed\n- **Automatic Retry**: Built-in exponential backoff for MCP communication failures\n- **Session Management**: Handles multi-turn conversations with iteration limits\n\n### Environment Variables\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `OPENAI_API_KEY` | **Yes** | - | OpenAI API key |\n| `TRANSPORT_MODE` | No | `http` | Transport mode: `http`, `sse`, or `stdio` |\n| `CUBICLER_URL` | **Yes*** | - | Cubicler instance URL for HTTP/MCP communication |\n| `SSE_URL` | **Yes*** | - | SSE server URL for real-time communication (SSE mode only) |\n| `SSE_AGENT_ID` | **Yes*** | - | Unique agent identifier for SSE connection (SSE mode only) |\n| `STDIO_COMMAND` | **Yes*** | - | Command for stdio transport (stdio mode only) |\n| `STDIO_ARGS` | No | - | Arguments for stdio command (stdio mode only) |\n| `STDIO_CWD` | No | - | Working directory for stdio process (optional) |\n| `OPENAI_MODEL` | No | `gpt-4o` | OpenAI model: gpt-4o, gpt-4, gpt-4-turbo, gpt-3.5-turbo |\n| `OPENAI_TEMPERATURE` | No | `0.7` | Response creativity (0.0-2.0) |\n| `OPENAI_SESSION_MAX_TOKENS` | No | `4096` | Maximum tokens per session/response |\n| `OPENAI_ORG_ID` | No | - | OpenAI organization ID (optional) |\n| `OPENAI_PROJECT_ID` | No | - | OpenAI project ID (optional) |\n| `OPENAI_BASE_URL` | No | - | Custom API base URL (optional) |\n| `OPENAI_TIMEOUT` | No | `600000` | API timeout in milliseconds |\n| `OPENAI_MAX_RETRIES` | No | `2` | Max retry attempts for OpenAI API |\n| `OPENAI_SUMMARIZER_MODEL` | No | - | Model for AI-powered summarization (enables summarizer tools) |\n| `DISPATCH_TIMEOUT` | No | `30000` | Overall request timeout (ms) |\n| `MCP_MAX_RETRIES` | No | `3` | Max retry attempts for MCP communication |\n| `MCP_CALL_TIMEOUT` | No | `10000` | Individual MCP call timeout (ms) |\n| `DISPATCH_SESSION_MAX_ITERATION` | No | `10` | Max iterations per conversation session |\n| `DISPATCH_ENDPOINT` | No | `/` | Agent endpoint path (HTTP mode only) |\n| `AGENT_PORT` | No | `3000` | HTTP server port (HTTP mode only) |\n\n*Required based on transport mode: `CUBICLER_URL` for HTTP, `SSE_URL` and `SSE_AGENT_ID` for SSE, `STDIO_COMMAND` for stdio.\n\n#### JWT Authentication (New in 2.3.3)\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `JWT_ENABLED` | No | `false` | Enable JWT authentication |\n| `JWT_TYPE` | No | `static` | JWT type: `static` or `oauth` |\n| `JWT_TOKEN` | No | - | Static JWT token (required if type=static) |\n| `JWT_CLIENT_ID` | No | - | OAuth client ID (required if type=oauth) |\n| `JWT_CLIENT_SECRET` | No | - | OAuth client secret (required if type=oauth) |\n| `JWT_TOKEN_ENDPOINT` | No | - | OAuth token endpoint URL (required if type=oauth) |\n| `JWT_SCOPE` | No | - | OAuth scope (optional) |\n| `JWT_GRANT_TYPE` | No | `client_credentials` | OAuth grant type |\n| `JWT_REFRESH_TOKEN` | No | - | OAuth refresh token (optional) |\n| `JWT_VERIFICATION_SECRET` | No | - | JWT verification secret for server (optional) |\n| `JWT_VERIFICATION_PUBLIC_KEY` | No | - | JWT verification public key for server (optional) |\n| `JWT_ALGORITHMS` | No | `HS256` | JWT verification algorithms (comma-separated) |\n| `JWT_ISSUER` | No | - | JWT issuer validation (optional) |\n| `JWT_AUDIENCE` | No | - | JWT audience validation (optional) |\n| `JWT_IGNORE_EXPIRATION` | No | `false` | Ignore JWT expiration during verification |\n\n#### Memory Configuration\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `MEMORY_ENABLED` | No | `false` | Enable sentence-based memory system |\n| `MEMORY_TYPE` | No | `memory` | Memory storage: `memory` or `sqlite` |\n| `MEMORY_DB_PATH` | No | `./memories.db` | SQLite database path (if type=sqlite) |\n| `MEMORY_MAX_TOKENS` | No | `2000` | Short-term memory token limit |\n| `MEMORY_DEFAULT_IMPORTANCE` | No | `0.5` | Default importance score (0-1) |\n\n### Error Handling\n\nThe service handles common error scenarios:\n\n- ❌ **Missing required environment variables** - `CUBICLER_URL` or `OPENAI_API_KEY`\n- ❌ **OpenAI API failures** - Rate limits, network issues, context length exceeded\n- ❌ **MCP communication errors** - Connection failures, timeout, retry exhaustion\n- ❌ **Session limits** - Iteration limits, token limits, timeout exceeded\n- ❌ **Configuration errors** - Invalid environment variable values\n\nAll errors are handled gracefully with structured logging and appropriate HTTP status codes.\n\n## 🤝 Integration with Cubicler\n\nThis agent integrates with Cubicler 2.6 using the lazy initialization pattern:\n\n1. **Application Startup**: Agent starts HTTP server immediately without connecting to Cubicler\n2. **Lazy Connection**: CubicAgentKit 2.6.0 automatically connects on first dispatch request\n3. **Tool Discovery**: Agent fetches available MCP tools from Cubicler\n4. **Function Calling**: OpenAI can call tools, agent executes via MCP, continues conversation\n5. **Session Management**: Handles multi-turn conversations with iteration and token limits\n6. **Retry Logic**: Automatic retry for MCP communication failures with exponential backoff\n\n## 📝 License\n\nApache License 2.0 - see [LICENSE](LICENSE) file for details.\n\n## 🔗 Related Projects\n\n- [Cubicler](https://github.com/hainayanda/Cubicler) - AI Orchestration Framework 2.6\n- [@cubicler/cubicagentkit](https://www.npmjs.com/package/@cubicler/cubicagentkit) - Agent SDK 2.6.0\n- [@cubicler/cubicagent-openai](https://www.npmjs.com/package/@cubicler/cubicagent-openai) - This package on npm\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n**Agent won't start:**\n\n- Check that `OPENAI_API_KEY` is set correctly\n- Verify `CUBICLER_URL` points to a valid Cubicler 2.6 instance\n- Ensure port 3000 (or configured `AGENT_PORT`) is available\n- Verify Node.js version is 18+\n\n**OpenAI API errors:**\n\n- Verify API key has sufficient credits and correct permissions\n- Check rate limits and quotas in OpenAI dashboard\n- Ensure the specified model (`OPENAI_MODEL`) is available\n- Review token limits (`OPENAI_SESSION_MAX_TOKENS`) for context length\n\n**Lazy initialization issues:**\n\n- Agent starts successfully but connection happens on first request\n- Check Cubicler 2.6 is running and accessible at `CUBICLER_URL`\n- Review `MCP_CALL_TIMEOUT` and `MCP_MAX_RETRIES` for network issues\n- Verify firewall and network connectivity between services\n\n**Session and iteration problems:**\n\n- Adjust `DISPATCH_SESSION_MAX_ITERATION` for complex multi-turn conversations\n- Increase `DISPATCH_TIMEOUT` for longer-running sessions\n- Monitor token usage against `OPENAI_SESSION_MAX_TOKENS` limits\n","readmeFilename":"README.md"}