{"_id":"@asynkron/openagent","_rev":"10-712608fdc7b6f5af5b601e84c0672e78","name":"@asynkron/openagent","dist-tags":{"latest":"2.13.12"},"versions":{"2.13.2":{"name":"@asynkron/openagent","version":"2.13.2","keywords":[],"author":"","license":"MIT","_id":"@asynkron/openagent@2.13.2","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"homepage":"https://github.com/asynkron/OpenAgent#readme","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"bin":{"openagent":"bin/openagent.js"},"dist":{"shasum":"a527a90ae56a9561cec354c1138943eed7dae9dd","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.2.tgz","fileCount":192,"integrity":"sha512-5bXWvB2p3YTSe2CVzdGOHn3DlEZt9FOnfsGLJ/dcsSNMP++cl19aQKn6KHxMRb5fQvN/DjBwxu4Q8r7uVmFSkg==","signatures":[{"sig":"MEYCIQCfTQc56AMHggNr84QAO7m9UGw7l4SpMPo/MTUgZ3ty2QIhAJNMM5jZMvlrEXGuImXIMyAyWZBz9uu/5KTviCKq7nlD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":612278},"main":"index.js","type":"module","exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"bb571180f723ba5d871b559499cb181f7fa9580c","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node ./bin/openagent.js","format":"prettier --write .","format:check":"prettier --check .","release:verify-tag":"node ./scripts/verify-release-tag.js"},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"repository":{"url":"git+https://github.com/asynkron/OpenAgent.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple Node.JS based AI agent","directories":{},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.19.5","dependencies":{"ink":"^6.3.1","diff":"^8.0.2","chalk":"^4.1.2","react":"^19.2.0","dotenv":"^17.2.3","marked":"^12.0.2","openai":"^6.1.0","undici":"^6.22.0","inquirer":"^12.9.6","ink-spinner":"^5.0.0","marked-terminal":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^29.7.0","acorn":"^8.15.0","eslint":"^8.57.0","esprima":"^4.0.1","globals":"^16.4.0","prettier":"^3.2.5","@eslint/js":"^9.37.0","lint-staged":"^16.2.3","ink-testing-library":"^4.0.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/openagent_2.13.2_1760056312148_0.8633804343271478","host":"s3://npm-registry-packages-npm-production"}},"2.13.4":{"name":"@asynkron/openagent","version":"2.13.4","keywords":[],"author":"","license":"MIT","_id":"@asynkron/openagent@2.13.4","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"homepage":"https://github.com/asynkron/OpenAgent#readme","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"bin":{"openagent":"bin/openagent.js"},"dist":{"shasum":"3e9d5eb138334cd799920f0b7b1d2a7fe2e8c967","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.4.tgz","fileCount":187,"integrity":"sha512-iYyv+Z4gKMIxjP4GB4RKf1rOwMQaVy/FTxV2rbTwZsEqcEHtmLcDBlx4i3522Lw6AvTfljnq25Z3mFUnURTA/w==","signatures":[{"sig":"MEUCIQDULVH+qnseGk2AsSlJZU1N8ZI0CKuxuRJcIltCwpFOOAIgO5o/f9tKe88u8fkANedd4ddQjMRWvP7x9O5GM71SJJM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":617901},"main":"index.js","type":"module","exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"4e7d533ab68369b1fcc788aa7bb06714362709eb","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node ./bin/openagent.js","format":"prettier --write .","prelint":"node ./scripts/install-git-hooks.js","prepare":"node ./scripts/install-git-hooks.js","pretest":"node ./scripts/install-git-hooks.js","preformat":"node ./scripts/install-git-hooks.js","postinstall":"node ./scripts/install-git-hooks.js","format:check":"prettier --check .","preformat:check":"node ./scripts/install-git-hooks.js","release:verify-tag":"node ./scripts/verify-release-tag.js"},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"repository":{"url":"git+https://github.com/asynkron/OpenAgent.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple Node.JS based AI agent","directories":{},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.19.5","dependencies":{"ink":"^6.3.1","diff":"^8.0.2","chalk":"^4.1.2","react":"^19.2.0","dotenv":"^17.2.3","marked":"^12.0.2","openai":"^6.1.0","undici":"^6.22.0","inquirer":"^12.9.6","ink-spinner":"^5.0.0","marked-terminal":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^29.7.0","acorn":"^8.15.0","eslint":"^8.57.0","esprima":"^4.0.1","globals":"^16.4.0","prettier":"^3.2.5","@eslint/js":"^9.37.0","lint-staged":"^16.2.3","ink-testing-library":"^4.0.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/openagent_2.13.4_1760104225238_0.8019853855057899","host":"s3://npm-registry-packages-npm-production"}},"2.13.5":{"name":"@asynkron/openagent","version":"2.13.5","keywords":[],"author":"","license":"MIT","_id":"@asynkron/openagent@2.13.5","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"homepage":"https://github.com/asynkron/OpenAgent#readme","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"bin":{"openagent":"bin/openagent.js"},"dist":{"shasum":"c94092ff139b0278a7534178fafdc4faee8c796e","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.5.tgz","fileCount":187,"integrity":"sha512-SAp1ArEz16f02/E8Ae2xxG8Eb4p8HfF0hvhn4U8hjPq5+UBK7rHBVsgHOXWLxKxfzujV4f/qU7YbE3AWF1tDVw==","signatures":[{"sig":"MEUCIH1BtvFHqPugX5EKuMoIzPI/p1B3M5fqgW9c6HQmb/rZAiEAx71YqxsRBQd0BiN0+gxbGIrMWTAkV/9NsZFgrny5maY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":622803},"main":"index.js","type":"module","exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"69eb0a235c66601b617d82808b494ff0597493fc","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node ./bin/openagent.js","format":"prettier --write .","prelint":"node ./scripts/install-git-hooks.js","prepare":"node ./scripts/install-git-hooks.js","pretest":"node ./scripts/install-git-hooks.js","preformat":"node ./scripts/install-git-hooks.js","postinstall":"node ./scripts/install-git-hooks.js","format:check":"prettier --check .","preformat:check":"node ./scripts/install-git-hooks.js","release:verify-tag":"node ./scripts/verify-release-tag.js"},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"repository":{"url":"git+https://github.com/asynkron/OpenAgent.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple Node.JS based AI agent","directories":{},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.19.5","dependencies":{"ink":"^6.3.1","diff":"^8.0.2","chalk":"^4.1.2","react":"^19.2.0","dotenv":"^17.2.3","marked":"^12.0.2","openai":"^6.1.0","undici":"^6.22.0","inquirer":"^12.9.6","ink-spinner":"^5.0.0","marked-terminal":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^29.7.0","acorn":"^8.15.0","eslint":"^8.57.0","esprima":"^4.0.1","globals":"^16.4.0","prettier":"^3.2.5","@eslint/js":"^9.37.0","lint-staged":"^16.2.3","ink-testing-library":"^4.0.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/openagent_2.13.5_1760104426748_0.4446217102595291","host":"s3://npm-registry-packages-npm-production"}},"2.13.6":{"name":"@asynkron/openagent","version":"2.13.6","keywords":[],"author":"","license":"MIT","_id":"@asynkron/openagent@2.13.6","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"homepage":"https://github.com/asynkron/OpenAgent#readme","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"bin":{"openagent":"bin/openagent.js"},"dist":{"shasum":"135fccd173caa4bfd44f1c6c469ae5f084cec4af","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.6.tgz","fileCount":187,"integrity":"sha512-ApWnUjdrjfMQ1u7qTY15i9cKM3RqPimxxa0dK/+aurdOhu0j3s0ACqgqjKeBFW2dIubH31udHoIrD31XPLU3hA==","signatures":[{"sig":"MEUCIQDeyX7JQbQs4Vk6kdVOakI3NwPpM37bTSdshI+8rCBOngIgKAFZlsJ7eXuhrv7/QkJALbDq1qe7F0tTVtpsHTCAhaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":623741},"main":"index.js","type":"module","exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"5ed5e037eba5e06ff52d9e089cd239ab115ccfb1","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node ./bin/openagent.js","format":"prettier --write .","prelint":"node ./scripts/install-git-hooks.js","prepare":"node ./scripts/install-git-hooks.js","pretest":"node ./scripts/install-git-hooks.js","preformat":"node ./scripts/install-git-hooks.js","postinstall":"node ./scripts/install-git-hooks.js","format:check":"prettier --check .","preformat:check":"node ./scripts/install-git-hooks.js","release:verify-tag":"node ./scripts/verify-release-tag.js"},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"repository":{"url":"git+https://github.com/asynkron/OpenAgent.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple Node.JS based AI agent","directories":{},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.19.5","dependencies":{"ink":"^6.3.1","diff":"^8.0.2","chalk":"^4.1.2","react":"^19.2.0","dotenv":"^17.2.3","marked":"^12.0.2","openai":"^6.1.0","undici":"^6.22.0","inquirer":"^12.9.6","ink-spinner":"^5.0.0","marked-terminal":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^29.7.0","acorn":"^8.15.0","eslint":"^8.57.0","esprima":"^4.0.1","globals":"^16.4.0","prettier":"^3.2.5","@eslint/js":"^9.37.0","lint-staged":"^16.2.3","ink-testing-library":"^4.0.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/openagent_2.13.6_1760105104918_0.26916526563263043","host":"s3://npm-registry-packages-npm-production"}},"2.13.7":{"name":"@asynkron/openagent","version":"2.13.7","keywords":[],"author":"","license":"MIT","_id":"@asynkron/openagent@2.13.7","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"homepage":"https://github.com/asynkron/OpenAgent#readme","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"bin":{"openagent":"bin/openagent.js"},"dist":{"shasum":"52aaddc9bfd0429a28ef44cc94caa885d2c8c9cf","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.7.tgz","fileCount":187,"integrity":"sha512-AWtO89snu7xFyq28YKsgN0sse7oWwsPXdS2WpWFs00P7KhVBdlQ+Bpg41jbDwr6ihXzoLE1bW2izByepIl1+sw==","signatures":[{"sig":"MEUCIQCPzi1S2KpIuzkjeH3uqxL3ADglKoY0aztN2ubv+fyUAQIgJeUFqOunVt6Wje5ktjp+HmxSywJJSYQ9n7kQzvw1tEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":624440},"main":"index.js","type":"module","exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"12f2d8724d18393a4b230eaf62ecdb88c511c5e7","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node ./bin/openagent.js","format":"prettier --write .","prelint":"node ./scripts/install-git-hooks.js","prepare":"node ./scripts/install-git-hooks.js","pretest":"node ./scripts/install-git-hooks.js","preformat":"node ./scripts/install-git-hooks.js","postinstall":"node ./scripts/install-git-hooks.js","format:check":"prettier --check .","preformat:check":"node ./scripts/install-git-hooks.js","release:verify-tag":"node ./scripts/verify-release-tag.js"},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"repository":{"url":"git+https://github.com/asynkron/OpenAgent.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple Node.JS based AI agent","directories":{},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.19.5","dependencies":{"ink":"^6.3.1","diff":"^8.0.2","chalk":"^4.1.2","react":"^19.2.0","dotenv":"^17.2.3","marked":"^12.0.2","openai":"^6.1.0","undici":"^6.22.0","inquirer":"^12.9.6","ink-spinner":"^5.0.0","marked-terminal":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^29.7.0","acorn":"^8.15.0","eslint":"^8.57.0","esprima":"^4.0.1","globals":"^16.4.0","prettier":"^3.2.5","@eslint/js":"^9.37.0","lint-staged":"^16.2.3","ink-testing-library":"^4.0.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/openagent_2.13.7_1760105773079_0.7943982790488646","host":"s3://npm-registry-packages-npm-production"}},"2.13.8":{"name":"@asynkron/openagent","version":"2.13.8","keywords":[],"author":"","license":"MIT","_id":"@asynkron/openagent@2.13.8","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"homepage":"https://github.com/asynkron/OpenAgent#readme","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"bin":{"openagent":"bin/openagent.js"},"dist":{"shasum":"1bf4d8db3b296e0a658d0266056781922fcdb2af","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.8.tgz","fileCount":187,"integrity":"sha512-rvtdnssG8Y2vPBUzeC8s4hWV9rkoQiusLyBUYYnE4dKpMOccmyVjgeoATkoBbmsSVONzkJos2Nr6fbL5KYc3lA==","signatures":[{"sig":"MEYCIQC4AWdAQ4z6YQYITfF6svrwD/aEmxJOscymOPhL5vqmlAIhAJ8vhnH1LEqFPt97RcK+3+Cm40AZYUIM9n3xa8HXaPLk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":624506},"main":"index.js","type":"module","exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"1b3dcb74710cd3c4e235781ca7b659b788fd722b","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node ./bin/openagent.js","format":"prettier --write .","prelint":"node ./scripts/install-git-hooks.js","prepare":"node ./scripts/install-git-hooks.js","pretest":"node ./scripts/install-git-hooks.js","preformat":"node ./scripts/install-git-hooks.js","postinstall":"node ./scripts/install-git-hooks.js","format:check":"prettier --check .","preformat:check":"node ./scripts/install-git-hooks.js","release:verify-tag":"node ./scripts/verify-release-tag.js"},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"repository":{"url":"git+https://github.com/asynkron/OpenAgent.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple Node.JS based AI agent","directories":{},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.19.5","dependencies":{"ink":"^6.3.1","diff":"^8.0.2","chalk":"^4.1.2","react":"^19.2.0","dotenv":"^17.2.3","marked":"^12.0.2","openai":"^6.1.0","undici":"^6.22.0","inquirer":"^12.9.6","ink-spinner":"^5.0.0","marked-terminal":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^29.7.0","acorn":"^8.15.0","eslint":"^8.57.0","esprima":"^4.0.1","globals":"^16.4.0","prettier":"^3.2.5","@eslint/js":"^9.37.0","lint-staged":"^16.2.3","ink-testing-library":"^4.0.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/openagent_2.13.8_1760109542228_0.19373912422897743","host":"s3://npm-registry-packages-npm-production"}},"2.13.9":{"name":"@asynkron/openagent","version":"2.13.9","keywords":[],"author":"","license":"MIT","_id":"@asynkron/openagent@2.13.9","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"homepage":"https://github.com/asynkron/OpenAgent#readme","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"bin":{"openagent":"bin/openagent.js"},"dist":{"shasum":"e57182a9ce5e0810ab05f3e7bdb465c6d8dfa093","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.9.tgz","fileCount":187,"integrity":"sha512-6G1UAhw1Q0euW4ftR8YFf3I4SI5W0OzBRBKVufVmq7+dbihnxDT9BCuRzdO2tIi5Whbb3OTrM8TZdv0yeFdi0w==","signatures":[{"sig":"MEUCIQDUB3FJ9epbRckRxUo/NFz7Hrb1eF+HOUyLvWPyVOEkrwIgIRBamXJFPKjHFRWQVaIlNTUejakHqL7P/VciBRAhnZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":625313},"main":"index.js","type":"module","exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"5c924c3aff09612c6ba6883f3bbbaebd3e981fbc","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node ./bin/openagent.js","format":"prettier --write .","prelint":"node ./scripts/install-git-hooks.js","prepare":"node ./scripts/install-git-hooks.js","pretest":"node ./scripts/install-git-hooks.js","preformat":"node ./scripts/install-git-hooks.js","postinstall":"node ./scripts/install-git-hooks.js","format:check":"prettier --check .","preformat:check":"node ./scripts/install-git-hooks.js","release:verify-tag":"node ./scripts/verify-release-tag.js"},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"repository":{"url":"git+https://github.com/asynkron/OpenAgent.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple Node.JS based AI agent","directories":{},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.19.5","dependencies":{"ink":"^6.3.1","diff":"^8.0.2","chalk":"^4.1.2","react":"^19.2.0","dotenv":"^17.2.3","marked":"^12.0.2","openai":"^6.1.0","undici":"^6.22.0","inquirer":"^12.9.6","ink-spinner":"^5.0.0","marked-terminal":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^29.7.0","acorn":"^8.15.0","eslint":"^8.57.0","esprima":"^4.0.1","globals":"^16.4.0","prettier":"^3.2.5","@eslint/js":"^9.37.0","lint-staged":"^16.2.3","ink-testing-library":"^4.0.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/openagent_2.13.9_1760110526049_0.5371305220256171","host":"s3://npm-registry-packages-npm-production"}},"2.13.10":{"name":"@asynkron/openagent","version":"2.13.10","keywords":[],"author":"","license":"MIT","_id":"@asynkron/openagent@2.13.10","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"homepage":"https://github.com/asynkron/OpenAgent#readme","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"bin":{"openagent":"bin/openagent.js"},"dist":{"shasum":"3c87a59e5452ea406527fbca2c34de7d433cf8be","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.10.tgz","fileCount":187,"integrity":"sha512-fT/BKLNXxizCmAlLSsjEEp44ayxsr6M/I9Dx0aY2jgWS1pV+T109wjNqK3yY2yUtA3Zl5sZ5Z2ttXja8FP6lKw==","signatures":[{"sig":"MEUCIAkrgS9qrsr0H2UQ+Tdl86bwi5/zSNXqSl+o0wz8m2BvAiEA5FSStW3K8QtoeCgVDNNABy9LB6hg3kSLGq2wOcAAxvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":626523},"main":"index.js","type":"module","exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"d98cc129028e6bc69fb64fee0de385678230c4bc","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node ./bin/openagent.js","format":"prettier --write .","prelint":"node ./scripts/install-git-hooks.js","prepare":"node ./scripts/install-git-hooks.js","pretest":"node ./scripts/install-git-hooks.js","preformat":"node ./scripts/install-git-hooks.js","postinstall":"node ./scripts/install-git-hooks.js","format:check":"prettier --check .","preformat:check":"node ./scripts/install-git-hooks.js","release:verify-tag":"node ./scripts/verify-release-tag.js"},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"repository":{"url":"git+https://github.com/asynkron/OpenAgent.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple Node.JS based AI agent","directories":{},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.19.5","dependencies":{"ink":"^6.3.1","diff":"^8.0.2","chalk":"^4.1.2","react":"^19.2.0","dotenv":"^17.2.3","marked":"^12.0.2","openai":"^6.1.0","undici":"^6.22.0","inquirer":"^12.9.6","ink-spinner":"^5.0.0","marked-terminal":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^29.7.0","acorn":"^8.15.0","eslint":"^8.57.0","esprima":"^4.0.1","globals":"^16.4.0","prettier":"^3.2.5","@eslint/js":"^9.37.0","lint-staged":"^16.2.3","ink-testing-library":"^4.0.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/openagent_2.13.10_1760111169446_0.6028072177108486","host":"s3://npm-registry-packages-npm-production"}},"2.13.11":{"name":"@asynkron/openagent","version":"2.13.11","keywords":[],"author":"","license":"MIT","_id":"@asynkron/openagent@2.13.11","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"homepage":"https://github.com/asynkron/OpenAgent#readme","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"bin":{"openagent":"bin/openagent.js"},"dist":{"shasum":"c7b01623396993acd529a527533fbdb924093cc4","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.11.tgz","fileCount":188,"integrity":"sha512-Ntpxmi+RNSTVpG69s5PAkw7mhSARd0gTISzb6kAPeDCzeMjJOfUbcpt8JWDMBF2TXJP+cNgX/ysHoPKQdHciUg==","signatures":[{"sig":"MEUCIGKuRgYx2nA1F/mVGq0wYdMfHoS9Qj4T3YBn5gnKsM4NAiEA0qCQGJKaFTyxFMpqLPG0kwgR+LNSDd/UuuOqjPYBBOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":828639},"main":"index.js","type":"module","exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"gitHead":"f5aa8f7e4a88ffe7fa99416db21490a42d22bdab","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node ./bin/openagent.js","format":"prettier --write .","prelint":"node ./scripts/install-git-hooks.js","prepare":"node ./scripts/install-git-hooks.js","pretest":"node ./scripts/install-git-hooks.js","preformat":"node ./scripts/install-git-hooks.js","postinstall":"node ./scripts/install-git-hooks.js","format:check":"prettier --check .","preformat:check":"node ./scripts/install-git-hooks.js","release:verify-tag":"node ./scripts/verify-release-tag.js"},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"repository":{"url":"git+https://github.com/asynkron/OpenAgent.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple Node.JS based AI agent","directories":{},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.19.5","dependencies":{"ink":"^6.3.1","diff":"^8.0.2","chalk":"^4.1.2","react":"^19.2.0","dotenv":"^17.2.3","marked":"^12.0.2","openai":"^6.1.0","undici":"^6.22.0","inquirer":"^12.9.6","ink-spinner":"^5.0.0","marked-terminal":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^29.7.0","acorn":"^8.15.0","eslint":"^8.57.0","esprima":"^4.0.1","globals":"^16.4.0","prettier":"^3.2.5","@eslint/js":"^9.37.0","lint-staged":"^16.2.3","ink-testing-library":"^4.0.0","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/openagent_2.13.11_1760111961865_0.3229564672561529","host":"s3://npm-registry-packages-npm-production"}},"2.13.12":{"name":"@asynkron/openagent","version":"2.13.12","description":"Simple Node.JS based AI agent","type":"module","main":"index.js","repository":{"type":"git","url":"git+https://github.com/asynkron/OpenAgent.git"},"exports":{".":{"import":"./index.js","default":"./index.js"},"./package.json":"./package.json"},"bin":{"openagent":"bin/openagent.js"},"scripts":{"start":"node ./bin/openagent.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","lint":"eslint .","format":"prettier --write .","format:check":"prettier --check .","preformat":"node ./scripts/install-git-hooks.js","preformat:check":"node ./scripts/install-git-hooks.js","prelint":"node ./scripts/install-git-hooks.js","pretest":"node ./scripts/install-git-hooks.js","prepare":"node ./scripts/install-git-hooks.js","postinstall":"node ./scripts/install-git-hooks.js","release:verify-tag":"node ./scripts/verify-release-tag.js"},"keywords":[],"author":"","license":"MIT","dependencies":{"chalk":"^4.1.2","diff":"^8.0.2","dotenv":"^17.2.3","ink":"^6.3.1","ink-spinner":"^5.0.0","inquirer":"^12.9.6","marked":"^12.0.2","marked-terminal":"^7.1.0","openai":"^6.1.0","react":"^19.2.0","undici":"^6.22.0"},"devDependencies":{"@eslint/js":"^9.37.0","acorn":"^8.15.0","ajv":"^8.17.1","eslint":"^8.57.0","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.29.1","eslint-plugin-prettier":"^5.1.3","esprima":"^4.0.1","globals":"^16.4.0","ink-testing-library":"^4.0.0","jest":"^29.7.0","lint-staged":"^16.2.3","prettier":"^3.2.5"},"lint-staged":{"*.{js,mjs,cjs}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"_id":"@asynkron/openagent@2.13.12","gitHead":"989393d9ba57a599fbce9f2921367c5cd4ca1039","bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"homepage":"https://github.com/asynkron/OpenAgent#readme","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-vMKJ1z+99R2H8jxrfBVOqcmIuQX3Z2prH8JEF6yEuGTddzzSD16SqG6pob27ri33L5uPTQ6x8xV9zwIUh/PZJA==","shasum":"ddc8d9401764094a1aacf7b7d2a1441a72576835","tarball":"https://registry.npmjs.org/@asynkron/openagent/-/openagent-2.13.12.tgz","fileCount":188,"unpackedSize":829431,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asynkron%2fopenagent@2.13.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE7p/m6jjFBnNyHVnRwsI6vODo3IvXrnKJlV3w9wTGTwAiEAv/vgOXTQ4MR84vF0FR1/Sec4tXhw6D4tdgv0pIqtCe4="}]},"_npmUser":{"name":"asynkron","email":"roger@asynkron.se"},"directories":{},"maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openagent_2.13.12_1760114849277_0.19656368082390707"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-10T00:31:52.088Z","modified":"2025-10-10T16:47:29.944Z","2.13.2":"2025-10-10T00:31:52.466Z","2.13.4":"2025-10-10T13:50:25.465Z","2.13.5":"2025-10-10T13:53:46.966Z","2.13.6":"2025-10-10T14:05:05.259Z","2.13.7":"2025-10-10T14:16:13.284Z","2.13.8":"2025-10-10T15:19:02.453Z","2.13.9":"2025-10-10T15:35:26.271Z","2.13.10":"2025-10-10T15:46:09.726Z","2.13.11":"2025-10-10T15:59:22.076Z","2.13.12":"2025-10-10T16:47:29.528Z"},"bugs":{"url":"https://github.com/asynkron/OpenAgent/issues"},"license":"MIT","homepage":"https://github.com/asynkron/OpenAgent#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/asynkron/OpenAgent.git"},"description":"Simple Node.JS based AI agent","maintainers":[{"name":"asynkron","email":"roger@asynkron.se"}],"readme":"![Screenshot](./screenshot.png)\n\n# OpenAgent\n\nOpenAgent is a Node.js-based CLI agent that communicates with an LLM using a structured JSON protocol. It safely executes shell commands with human-in-the-loop approval, live progress tracking, and output controls.\n\n> _Demonstration note: this line was added using the `TODO: update docs` command._\n\nIf you want the very slim, no extra fluff version, check this early commit:\nhttps://github.com/asynkron/OpenAgent/tree/9073a48225ddc2c2afc6f701af48d6ec4c04e477 - 400 LoC\n\n## Example chat\n\n```\nPlan ______________\n✔ Step 1 - Review brain directory guidance\n✔ Step 2 - Inspect relevant CLI modules for human-interaction flow\n✔ Step 3 - Draft TODO plan for implementing --nohuman flag\n▶ Step 4 - Implement --nohuman flag behavior in CLI\n• Step 5 - Run syntax/tests and verify behavior\n• Step 6 - Summarize changes and next steps\n\nCommand ______________\nShell: bash\nDirectory: /Users/rogerjohansson/git/asynkron/OpenAgent\nTimeout: 60s\nAuto-approved by CLI flag (--auto-approve)\n\nCommand Result ______________\nExit Code: 0\nRuntime: 3ms\nStatus: COMPLETED\n\nSTDOUT ______________\n  Edited src/agent/loop.js\n  \"use strict\";\n\n  /**\n   * Implements the interactive agent loop that powers the CLI experience.\n   *\n   * Responsibilities:\n   * - Maintain the conversation history with OpenAI responses.\n   * - Render assistant output, prompt the human for approvals, and execute commands.\n   * - Feed execution results back to the model to continue the workflow.\n   *\n   * Consumers:\n   * - Library entry `src/lib/index.js` creates a configured loop via `createAgentLoop()` and exposes it as `agentLoop`.\n   * - Integration tests re-export the same function to run mocked scenarios.\n   */\n\n  import chalk from 'chalk';\n\n  import { SYSTEM_PROMPT } from '../config/systemPrompt.js';\n  import { getOpenAIClient, MODEL } from '../openai/client.js';\n  …\n\n\n\nSending request to AI\nReceived response from AI\n\nCommand ______________\nShell: bash\nDirectory: /Users/rogerjohansson/git/asynkron/OpenAgent\nTimeout: 60s\n\n  sed -n '200,300p' src/agent/loop.js\n\n\nAuto-approved by allowlist (approved_commands.json)\n```\n\n## Table of Contents\n\n- [Features](#features)\n- [Getting Started](#getting-started)\n- [Configuration](#configuration)\n- [Usage](#usage)\n- [JSON Protocol](#json-protocol)\n- [Templates & Shortcuts](#templates--shortcuts)\n- [Safety](#safety)\n- [License](#license)\n\n## Features\n\n- **Structured JSON Protocol** for deterministic LLM↔agent communication\n- **Command Execution with Timeouts** and interactive approval\n- **Plan Visualization** showing task progress as a checklist\n- **Output Filtering** via regex and tail limits\n- **Conversation History** persisted across steps for context retention\n\n## Getting Started\n\n1. Clone the repository:\n   ```bash\n   git clone <your-fork-url>\n   cd openagent\n   ```\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Copy the environment template and add your OpenAI API key:\n   ```bash\n   cp .env.example .env\n   ```\n\n### Quality tooling\n\n- `npm run lint` — runs ESLint with the shared configuration.\n- `npm run format` — formats the repository with Prettier.\n- `npm run format:check` — verifies committed files already match the Prettier style.\n\n## Configuration\n\nEdit `.env` to include the required secrets:\n\n```\nOPENAI_API_KEY=sk-...\n# Optional: override the default model (defaults to gpt-5-codex)\n# OPENAI_MODEL=gpt-4.1-mini\n# Optional: override the assumed model context window (tokens, defaults to 256000)\n# OPENAI_CONTEXT_WINDOW=256000\n# Optional: set reasoning effort for reasoning-enabled models (one of low, medium, high)\n# OPENAI_REASONING_EFFORT=medium\n# Optional: enforce a request timeout (milliseconds)\n# OPENAI_TIMEOUT_MS=60000\n# Optional: configure automatic retry attempts for transient API errors\n# OPENAI_MAX_RETRIES=2\n# Optional: point at a custom Responses API endpoint (must be the API root, not a completions URL)\n# OPENAI_BASE_URL=https://api.openai.com/v1\n```\n\nThe client validates that the configured model supports the Responses API and that any custom base URL targets the API root, so misconfigurations fail fast.\n\n## Usage\n\nStart the CLI agent:\n\n```bash\nnpm start\n```\n\nInteraction loop:\n\n1. Type a task and press **Enter**\n2. Review the agent’s explanation and plan\n3. Inspect proposed commands (they won’t run without approval)\n4. Press **Enter** to execute, or type `skip`\n5. View results; repeat until the task completes\n\nTo exit, type `exit` or `quit` at any prompt.\n\n## JSON Protocol\n\n**LLM → Agent** messages look like:\n\n```json\n{\n  \"message\": \"status update\",\n  \"plan\": [{ \"step\": 1, \"title\": \"Describe goal\", \"status\": \"running\" }],\n  \"command\": {\n    \"shell\": \"bash\",\n    \"run\": \"ls -a\",\n    \"cwd\": \".\",\n    \"timeout_sec\": 60,\n    \"filter_regex\": \"error|warning\",\n    \"tail_lines\": 200\n  }\n}\n```\n\n**Agent → LLM** observations:\n\n```json\n{\n  \"observation_for_llm\": {\n    \"stdout\": \"output\",\n    \"stderr\": \"\",\n    \"exit_code\": 0,\n    \"truncated\": false\n  },\n  \"observation_metadata\": {\n    \"runtime_ms\": 120,\n    \"killed\": false,\n    \"timestamp\": \"2025-02-01T12:00:00Z\"\n  }\n}\n```\n\n## Templates & Shortcuts\n\n- **Command templates** in `templates/command-templates.json`:\n  - List: `npx openagent templates list` (or `node ./bin/openagent.js templates list`)\n  - Show: `npx openagent templates show <id>`\n  - Render: `npx openagent templates render <id> '{\"var\":\"value\"}'`\n- **Shortcuts** in `shortcuts/shortcuts.json`:\n  - List: `npx openagent shortcuts list`\n  - Show: `npx openagent shortcuts show <id>`\n  - Run (prints command): `npx openagent shortcuts run <id>`\n\n## Safety\n\n- Every command has a configurable timeout\n- Execution always requires explicit user confirmation\n- Outputs can be limited or filtered to avoid flooding\n- Errors are captured and surfaced cleanly\n\n## License\n\nThis project is released under the [MIT License](LICENSE).\n","readmeFilename":"README.md"}