{"_id":"@agenntic/agenntic","_rev":"9-30e6249e1b3e248d1020b247c0610f48","name":"@agenntic/agenntic","dist-tags":{"latest":"1.1.3"},"versions":{"1.0.0":{"name":"@agenntic/agenntic","version":"1.0.0","keywords":["AI","agent","workflow","typescript"],"_id":"@agenntic/agenntic@1.0.0","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"homepage":"https://github.com/agenntic/agenntic/#readme","bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"dist":{"shasum":"e7ddab2bfc163d6dd8bc9518efdf018d84a74798","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.0.0.tgz","fileCount":41,"integrity":"sha512-fjBcYqz0lD5LSsaqGmrsBhE44vjvScuKFc5lLoKbATj7ksrBzO2tQRuhy+Rxf/X7GMNLdds/MAn+bpXbJ62fNQ==","signatures":[{"sig":"MEQCIARTi3vQ7VoRxjaJKBELj0EwPHLUsL3F0SIqqEgC7SQPAiBmfLQhzA8mqdJQaVLVxTdpTjy5Lrao+4U2MvBKryKy5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90014},"main":"/dist/index.js","types":"/dist/index.d.ts","module":"dist/index.js","engines":{"node":">=14.0.0"},"gitHead":"b1973028b585bf05f1069a58e1172b03d34d6780","scripts":{"dev":"tsc -w","test":"jest","build":"tsc","publish":"npm run test && npm run build && npm publish --access public"},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"repository":{"url":"git+https://github.com/agenntic/agenntic.git","type":"git"},"_npmVersion":"8.19.2","description":"A TypeScript framework for building AI agent workflows.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4","@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/agenntic_1.0.0_1728453079196_0.4983101200050468","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@agenntic/agenntic","version":"1.0.1","keywords":["AI","agent","workflow","typescript"],"_id":"@agenntic/agenntic@1.0.1","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"homepage":"https://github.com/agenntic/agenntic/#readme","bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"dist":{"shasum":"aec31d3d914a53d416260151d7110d5dcbc9b353","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.0.1.tgz","fileCount":35,"integrity":"sha512-BmQe5hu597f0cpl9e1eiD1SkRK1287ksro0T7URggJ4qWDrbkKGorc7V7q7gji34L3CLDPbqMIXivCOG990bYw==","signatures":[{"sig":"MEYCIQCYMkFrDAy/tmYYGeSo1mhDswIdFtmdldqkApFWwAmTPwIhAJ2/p9GkkZBa9KI/ysdk6Aoi8ZuMzluJkp4228tj/KKW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":74731},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"f7877944387ea97e18cbf09a069ec96a0be83e47","scripts":{"dev":"tsc -w","test":"jest","build":"tsc","publish-package":"npm run test && npm run build && npm publish --access public"},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"repository":{"url":"git+https://github.com/agenntic/agenntic.git","type":"git"},"_npmVersion":"8.19.2","description":"A TypeScript framework for building AI agent workflows.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4","@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/agenntic_1.0.1_1728484518948_0.24903356132404864","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@agenntic/agenntic","version":"1.0.2","keywords":["AI","agent","workflow","typescript"],"_id":"@agenntic/agenntic@1.0.2","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"homepage":"https://github.com/agenntic/agenntic/#readme","bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"dist":{"shasum":"c0e1ab39cc96101ccccadd09663d56016bb9b10e","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.0.2.tgz","fileCount":35,"integrity":"sha512-IJ1SG1vdl1nrtnLjHdokKQ1t7bpmjx+Z5ClwnRrzeIjg7eF3/7u6dH/Dlx7rwtk1ZV5+Rj8ydqde1eBDqaHVxA==","signatures":[{"sig":"MEQCIAxagDlRuXj39/PWyHS3lHqSVtqzRYUPBBcFZZsRRKbOAiBd4rUp1FHECvAVpyiciCRM2293eVfHP8s2pb1JZaz49Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":85339},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"249489e18f185c52ccfece9eccf1f49c2020dcb3","scripts":{"dev":"tsc -w","test":"jest","build":"tsc","publish-package":"npm run test && npm run build && npm publish --access public"},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"repository":{"url":"git+https://github.com/agenntic/agenntic.git","type":"git"},"_npmVersion":"8.19.2","description":"A TypeScript framework for building AI agent workflows.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4","@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/agenntic_1.0.2_1729572807452_0.8999072114323305","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@agenntic/agenntic","version":"1.0.3","keywords":["AI","agent","workflow","typescript"],"_id":"@agenntic/agenntic@1.0.3","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"homepage":"https://github.com/agenntic/agenntic/#readme","bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"dist":{"shasum":"547794c830ff74fa3a54f9b056bed3ca55ed7846","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.0.3.tgz","fileCount":35,"integrity":"sha512-Nk2qjnItJWkdMtq1sZ8AS0447bQA0/jdFa22s5oqL2L1ogw4iqWWJ0WDsUFb8uglpt68yfl1GuFP/jzfqQDTLg==","signatures":[{"sig":"MEYCIQC5lKWw+YSXjvpYcbvNZh2G/8+3zxQFDZRtxG6kMiHUOQIhAMKnW5dCxh9uA2hHdhyJJRU3AkPaxqW5KTCE+b648ZTv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":85339},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"df4620e53d2fc984c499d8f2441ae1542947d8b7","scripts":{"dev":"tsc -w","test":"jest","build":"tsc","publish-package":"npm run test && npm run build && npm publish --access public"},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"repository":{"url":"git+https://github.com/agenntic/agenntic.git","type":"git"},"_npmVersion":"8.19.2","description":"A TypeScript framework for building AI agent workflows.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4","@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/agenntic_1.0.3_1730515982622_0.8990728117000246","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@agenntic/agenntic","version":"1.0.4","keywords":["AI","agent","workflow","typescript"],"_id":"@agenntic/agenntic@1.0.4","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"homepage":"https://github.com/agenntic/agenntic/#readme","bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"dist":{"shasum":"bd0ddecba8ece879fd67b9bc32eee924e154764d","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.0.4.tgz","fileCount":35,"integrity":"sha512-tL3uPkZ88V/bPEB+avJidNDpKzBN+z0mmI2V3fi/le79JkIbAS4kg4EJkY9nD/bO4/zlnh/XhWRUHtmgI39bVA==","signatures":[{"sig":"MEQCIBW42zrMPwldf/U2B4sTeiHSzFmkX6AqhO+0VveR+325AiBiyF0EXOX7288MmefboUIaJ6R0cbonAvX9P5tAYIaNeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":85775},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"fb0a43ed0ee03bdbff8b143aaf3e901c610485a5","scripts":{"dev":"tsc -w","test":"jest","build":"tsc","publish-package":"npm run test && npm run build && npm publish --access public"},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"repository":{"url":"git+https://github.com/agenntic/agenntic.git","type":"git"},"_npmVersion":"8.19.2","description":"A TypeScript framework for building AI agent workflows.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4","@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/agenntic_1.0.4_1730516224443_0.9623242488051618","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"@agenntic/agenntic","version":"1.0.5","keywords":["AI","agent","workflow","typescript"],"_id":"@agenntic/agenntic@1.0.5","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"homepage":"https://github.com/agenntic/agenntic/#readme","bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"dist":{"shasum":"81694cf2052a784345acf3b332a9c9e89ef93208","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.0.5.tgz","fileCount":35,"integrity":"sha512-TPDNtipsCe4wyhfJ4PW+XV48Es/YqGMXST9tsbC9Sfz4nRnKgE8huV5vFT28YHUWFfMJCcvYWdqqUl5Xm+0CsA==","signatures":[{"sig":"MEYCIQCPcVUxlUinMBNqEVMOoBDaqCjuITPYLyK2zhbxifCHLAIhALsFFMWaqC4YTeZNYVUx+XERGFDSMvsznuQfzdB0A2xj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":85903},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"7bf6266dff0b926edc2968e16c2f5b01586bb07c","scripts":{"dev":"tsc -w","test":"jest","build":"tsc","publish-package":"npm run test && npm run build && npm publish --access public"},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"repository":{"url":"git+https://github.com/agenntic/agenntic.git","type":"git"},"_npmVersion":"8.19.2","description":"A TypeScript framework for building AI agent workflows.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4","@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/agenntic_1.0.5_1730521253813_0.8476239728058967","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@agenntic/agenntic","version":"1.1.0","keywords":["AI","agent","workflow","typescript"],"_id":"@agenntic/agenntic@1.1.0","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"homepage":"https://github.com/agenntic/agenntic/#readme","bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"dist":{"shasum":"70a0b89e5c1fe7e8ff39f844f4f2cc665d3cc47a","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.1.0.tgz","fileCount":39,"integrity":"sha512-CTTkZ66Kvvl/D5vXPMNluhE2pCkFNwk8eUbyHbXjtJpDIJBJrf3k6EM26TVUh47ukviotKRSuVxPC2G0DPNYgw==","signatures":[{"sig":"MEYCIQC8WJ3mH3RKzfistrDPo/kRoQ9fVjNlMXQkx+Er+OrvlgIhAL+fqIBXg8QXFiaCl43RdU8UNeiqHUxUhJLaLJAWhe1A","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":88362},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"fcf2c524f847b614eb20a4af2985d15bd934f8d6","scripts":{"dev":"tsc -w","test":"jest","build":"tsc","publish-package":"npm run test && npm run build && npm publish --access public"},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"repository":{"url":"git+https://github.com/agenntic/agenntic.git","type":"git"},"_npmVersion":"8.19.2","description":"A TypeScript framework for building AI agent workflows.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4","@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/agenntic_1.1.0_1730652355794_0.8230218238683022","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@agenntic/agenntic","version":"1.1.1","keywords":["AI","agent","workflow","typescript"],"_id":"@agenntic/agenntic@1.1.1","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"homepage":"https://github.com/agenntic/agenntic/#readme","bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"dist":{"shasum":"2c51dcd1b12166859240363bb7b87cf376f68b65","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.1.1.tgz","fileCount":39,"integrity":"sha512-phvGSPCBocl1J45uAnI71dWWOoWnC47zDyczNgMZSDlqw2wpgGL7l0fymlgYWCXbcG16EOBjZr8PWc72+TmnOw==","signatures":[{"sig":"MEUCIQCvrQODcEoaKbIMkgP2TgLWj/PpzCFKMDknYUfGBx9yTgIgTI6QWbq/K4H1kzoRU9PI7qSP/UMq4t2tKc9I/3xGWRQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90014},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"270be2f7d907d3d06d2a549ceb2a50a8e3bc4ada","scripts":{"dev":"tsc -w","test":"jest","build":"tsc","publish-package":"npm run test && npm run build && npm publish --access public"},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"repository":{"url":"git+https://github.com/agenntic/agenntic.git","type":"git"},"_npmVersion":"8.19.2","description":"A TypeScript framework for building AI agent workflows.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4","@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/agenntic_1.1.1_1730737385667_0.8367063596140993","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@agenntic/agenntic","version":"1.1.2","keywords":["AI","agent","workflow","typescript"],"_id":"@agenntic/agenntic@1.1.2","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"homepage":"https://github.com/agenntic/agenntic/#readme","bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"dist":{"shasum":"7f48b7645182358b7ef14c9446eb3d145e0177f3","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.1.2.tgz","fileCount":39,"integrity":"sha512-T5uelYz5wcu/CEZDb6p1cOX5XzP4VuwdD6IbGpftslk9dyKz7KWd1ZS6iMWSk60Ys1bmuAU0f3CB8krr00bmUQ==","signatures":[{"sig":"MEQCIFGcKLhYG89mxZbVCPUPEAIfsqFTucwmYRQy6AvS0D4aAiBhls8W4r037oxWqhSYhh9sg/Op6XkluNaMUHHIHTCpQw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90094},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"40a89736b13bf85759607ece96df3b22411997d1","scripts":{"dev":"tsc -w","test":"jest","build":"tsc","publish-package":"npm run test && npm run build && npm publish --access public"},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"repository":{"url":"git+https://github.com/agenntic/agenntic.git","type":"git"},"_npmVersion":"8.19.2","description":"A TypeScript framework for building AI agent workflows.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4","@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/agenntic_1.1.2_1730772966169_0.7093794802030688","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"@agenntic/agenntic","version":"1.1.3","description":"A TypeScript framework for building AI agent workflows.","keywords":["AI","agent","workflow","typescript"],"repository":{"type":"git","url":"git+https://github.com/agenntic/agenntic.git"},"bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"homepage":"https://github.com/agenntic/agenntic/#readme","main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"devDependencies":{"@types/jest":"^29.5.12","conditional-type-checks":"^1.0.6","jest":"^29.7.0","ts-jest":"^29.2.4","typescript":"^5.5.4"},"dependencies":{"dotenv":"^16.4.5","openai":"^4.61.1"},"scripts":{"test":"jest","dev":"tsc -w","build":"tsc","publish-package":"npm run test && npm run build && npm publish --access public"},"engines":{"node":">=14.0.0"},"gitHead":"0b1a442197e50c6830c0c12be4368301582089fb","_id":"@agenntic/agenntic@1.1.3","_nodeVersion":"20.11.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-JkzA0zzyo2MGHqocuyVNhPPwTFHaqldbRlNMcXl+GD7phJZZ9C8/uAkmmNW1+p3ALzgLsPUKQ8/KllGK4DtWFQ==","shasum":"592e9dbf28e0c77ec443d274fd390531fad51695","tarball":"https://registry.npmjs.org/@agenntic/agenntic/-/agenntic-1.1.3.tgz","fileCount":39,"unpackedSize":90755,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAGdZ/Q0nWPUzun8qhqJeeJRxpIaP4EJgwWdbP8j0sb5AiEA91Rje/GnCAd5hS7v2IMDwtCXzH2PYZ0MLu3ZoJHG0Ew="}]},"_npmUser":{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"},"directories":{},"maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/agenntic_1.1.3_1730795981825_0.9095693760579362"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-09T05:51:19.094Z","modified":"2024-11-05T08:39:42.201Z","1.0.0":"2024-10-09T05:51:19.401Z","1.0.1":"2024-10-09T14:35:19.161Z","1.0.2":"2024-10-22T04:53:27.618Z","1.0.3":"2024-11-02T02:53:02.872Z","1.0.4":"2024-11-02T02:57:04.607Z","1.0.5":"2024-11-02T04:20:54.071Z","1.1.0":"2024-11-03T16:45:56.038Z","1.1.1":"2024-11-04T16:23:05.839Z","1.1.2":"2024-11-05T02:16:06.384Z","1.1.3":"2024-11-05T08:39:42.027Z"},"bugs":{"url":"https://github.com/agenntic/agenntic/issues"},"homepage":"https://github.com/agenntic/agenntic/#readme","keywords":["AI","agent","workflow","typescript"],"repository":{"type":"git","url":"git+https://github.com/agenntic/agenntic.git"},"description":"A TypeScript framework for building AI agent workflows.","maintainers":[{"name":"alejandrofc","email":"fuentescletoalejandro@gmail.com"}],"readme":"# Agenntic Framework for Agentic Workflows\r\n\r\n## Overview\r\n\r\nAgenntic is a versatile framework for building agentic workflows using TypeScript. It allows developers to create agents, tasks, and workflows to accomplish specific goals by leveraging Large Language Models (LLMs) such as OpenAI's GPT-4. The framework is designed to be type-safe, customizable, and easy to use, enabling the automation of complex workflows involving multiple agents and tasks.\r\n\r\n## Features\r\n\r\n- **Agents & Tasks**: Define agents with unique roles, goals, and personalities to execute tasks within workflows.\r\n- **Workflow Management**: Create workflows consisting of multiple tasks assigned to agents, and manage their execution and interdependencies.\r\n- **Type Safety**: TypeScript's powerful type system is used to provide type safety for roles, goals, tasks, and placeholders within workflows.\r\n- **Modular Design**: The framework is easily extendable with custom LLM implementations. The default implementation uses OpenAI's models, but developers can integrate other models as needed.\r\n- **Detailed Logging**: Every step of the execution is logged for better traceability and debugging.\r\n- **Dynamic Data Handling**: Use variables in agent and task definitions to create flexible, reusable workflows.\r\n\r\n## Why Use Agenntic? 🤔\r\n\r\nI created Agenntic with several key motivations in mind:\r\n\r\n- **Type-Safe Workflows** 🛡️: I wanted a type-safe way to create agentic workflows, ensuring that every aspect of the workflow is checked at compile time for errors, reducing runtime issues.\r\n- **Simplicity and Minimalism** ✨: The goal was to build a framework that is simple, minimal, and easy to understand, making it accessible for developers of all levels.\r\n- **Quick Setup** ⚡: I wanted a solution that allows you to have a running workflow in just a few minutes, minimizing the setup time and allowing developers to focus on building solutions.\r\n- **Inspired by Crew AI** 🚀: Agenntic was inspired by the [Crew AI](https://crewai.com/) framework, aiming to bring similar capabilities to the TypeScript ecosystem, with the added benefit of strong type safety.\r\n\r\n## Installation\r\n\r\nRun the following command:\r\n\r\n```bash\r\nnpm install @agenntic/agenntic\r\n```\r\n\r\n## Configuration\r\n\r\nTo use the default model (OpenAI's GPT-4), you need to set the environment variable OPENAI_API_KEY in a .env file. Create a .env file in the root of your project with the following content:\r\n\r\n```bash\r\nOPENAI_API_KEY=your_openai_api_key_here\r\n```\r\n\r\nReplace your_openai_api_key_here with your actual OpenAI API key.\r\n\r\n## Basic Usage\r\n\r\n### Create an Agent\r\n\r\nAn agent is responsible for executing tasks. You can define an agent by specifying its role, goal, and background:\r\n\r\n```typescript\r\nimport { Agent } from \"@agenntic/agenntic\";\r\n\r\nconst agent = new Agent({\r\n  role: \"Content Writer for {topic}\",\r\n  goal: \"Write an engaging article about {topic}\",\r\n  background: \"You are an expert in {topic} with years of experience.\",\r\n});\r\n```\r\n\r\n### Create a Task\r\n\r\nTasks are the basic units of a workflow. They represent specific pieces of work assigned to an agent.\r\n\r\n```typescript\r\nimport { Task } from \"@agenntic/agenntic\";\r\n\r\nconst task = new Task({\r\n  agent: agent,\r\n  description: \"Draft a {word-count}-word article on the topic of {topic}\",\r\n  expectedOutput: \"An informative {word-count}-word article about {topic}.\",\r\n});\r\n```\r\n\r\n### Using the JSON Util for expectedOutput\r\n\r\nWhen defining a task in your workflow, you can use the `JSON` function as the value of the `expectedOutput` field. This utility helps to ensure that the expected output is properly structured as a JSON object.\r\n\r\n#### Example\r\n\r\nHere is an example of how to use the `JSON` util in a task definition:\r\n\r\n```typescript\r\nimport {\r\n  JSON as AgennticJSON,\r\n  Task,\r\n  Workflow,\r\n  Agent,\r\n} from \"@agenntic/agenntic\";\r\n\r\nconst agent = new Agent({\r\n  name: \"Actionable Extractor\",\r\n  description:\r\n    \"You are an expert in analyzing transcripts and identifying actionable items.\",\r\n});\r\n\r\nconst expectedOutput = AgennticJSON(\r\n  // An example of the JSON object.\r\n  [\r\n    {\r\n      title: \"Brief summary of the task\",\r\n      description:\r\n        \"Detailed explanation including any relevant context, deadlines, or specifics.\",\r\n    },\r\n  ],\r\n  // A description of the expected JSON object\r\n  \"An array containing actionable tasks. Each object should have a title and description field.\"\r\n);\r\n\r\nconst transcript = \"Your transcript...\";\r\nconst task = new Task({\r\n  agent: actionableExtractorAgent,\r\n  description: \"Analyze the transcript and extract actionable tasks.\",\r\n  expectedOutput: expectedOutput,\r\n  context: transcript,\r\n});\r\n\r\nconst workflow = new Workflow({\r\n  tasks: [task],\r\n  agents: [agent],\r\n});\r\n\r\nworkflow\r\n  .initiate({})\r\n  .then((output) => {\r\n    console.log(\"Workflow output:\", output);\r\n    console.log(\"JSON\", JSON.parse(output));\r\n  })\r\n  .catch((error) => {\r\n    console.error(\"Workflow execution failed:\", error);\r\n  });\r\n```\r\n\r\n### Create a Workflow\r\n\r\nA workflow is a sequence of tasks executed by different agents. You can define dependencies between tasks to ensure proper order of execution.\r\n\r\n```typescript\r\nimport { Workflow } from \"@agenntic/agenntic\";\r\n\r\nconst workflow = new Workflow({\r\n  tasks: [task],\r\n  agents: [agent],\r\n});\r\n\r\nconst inputValues = { topic: \"Quantum Computing\", \"word-count\": 1000 };\r\nworkflow\r\n  .initiate({ input: inputValues })\r\n  .then((output) => {\r\n    console.log(\"Workflow output:\", output);\r\n  })\r\n  .catch((error) => {\r\n    console.error(\"Workflow execution failed:\", error);\r\n  });\r\n```\r\n\r\n## Using Variables in Workflows\r\n\r\nAgenntic allows you to create dynamic workflows by using variables in agent and task definitions. You can set variables by wrapping the variable name in curly braces `{}` in the following fields:\r\n\r\n- Agent: `role`, `goal`, `background`\r\n- Task: `description`, `expectedOutput`\r\n\r\nThis feature enables you to create flexible, reusable workflows that can adapt to different inputs.\r\n\r\n### Best Practices for Variables\r\n\r\n- Use lowercase letters and hyphens for variable names (e.g., `{my-variable}`)\r\n- Choose descriptive names that clearly indicate the variable's purpose\r\n- Be consistent with naming conventions across your workflow\r\n- Avoid using spaces or special characters in variable names\r\n\r\nExample of good variable usage:\r\n\r\n```typescript\r\nimport { Agent, Task, Workflow } from \"@agenntic/agenntic\";\r\n\r\n// Define the agent\r\nconst agent = new Agent({\r\n  role: \"Financial Analyst for {company-name}\",\r\n  goal: \"Analyze {financial-report-type} for {fiscal-year}\",\r\n  background: \"You are an expert in {industry} financial analysis.\",\r\n});\r\n\r\n// Define the task\r\nconst task = new Task({\r\n  agent: agent,\r\n  description:\r\n    \"Review {financial-report-type} and prepare a {report-length} summary\",\r\n  expectedOutput:\r\n    \"A comprehensive {report-length} summary of {company-name}'s {financial-report-type} for {fiscal-year}.\",\r\n});\r\n\r\n// Create the workflow\r\nconst workflow = new Workflow({\r\n  tasks: [task],\r\n  agents: [agent],\r\n});\r\n\r\n// Define the input values\r\nconst inputValues = {\r\n  \"company-name\": \"TechCorp\",\r\n  \"financial-report-type\": \"annual report\",\r\n  \"fiscal-year\": \"2023\",\r\n  industry: \"technology\",\r\n  \"report-length\": \"5-page\",\r\n};\r\n\r\n// Initiate the workflow\r\nworkflow\r\n  .initiate({ input: inputValues })\r\n  .then((output) => {\r\n    console.log(\"Workflow output:\", output);\r\n  })\r\n  .catch((error) => {\r\n    console.error(\"Workflow execution failed:\", error);\r\n  });\r\n```\r\n\r\nBy following these practices, you can create clear, maintainable, and reusable workflows that can easily adapt to different scenarios and inputs.\r\n\r\n### Customizing the LLM\r\n\r\nBy default, the `Agent` uses OpenAI's GPT-4 model, but you can provide a custom implementation:\r\n\r\n```typescript\r\nimport { LargeLanguageModel } from \"@agenntic/agenntic\";\r\n\r\nclass CustomModel extends LargeLanguageModel {\r\n  async generateResponse(input: string) {\r\n    return {\r\n      choices: [\r\n        { message: { content: `Custom model response for input: ${input}` } },\r\n      ],\r\n      usage: { prompt_tokens: 50, completion_tokens: 50 },\r\n    };\r\n  }\r\n}\r\n\r\nconst customAgent = new Agent({\r\n  role: \"Custom Agent\",\r\n  goal: \"Demonstrate custom model usage\",\r\n  background: \"Uses a custom language model.\",\r\n  llmModel: new CustomModel(),\r\n});\r\n```\r\n\r\n## Logging\r\n\r\nThe framework includes a logger that records every step of the workflow execution. Logs are saved in the `logs` folder by default. You can customize the log folder and file name by providing options to the `Logger` class.\r\n\r\n## Testing\r\n\r\nThe framework comes with a set of unit tests to verify its functionality. To run the tests, execute:\r\n\r\n```bash\r\nnpm run test\r\n```\r\n\r\nThe tests cover various scenarios, including task retries, workflows with dependencies, and custom LLM integrations.\r\n\r\n## Example Workflows\r\n\r\n### Single-Agent, Single-Task Workflow\r\n\r\nThis is the simplest workflow scenario, where a single agent is responsible for executing a single task.\r\n\r\n```typescript\r\nconst agent = new Agent({\r\n  role: \"Content Writer\",\r\n  goal: \"Write an article about {topic}\",\r\n  background: \"You are an expert in writing engaging content.\",\r\n});\r\n\r\nconst task = new Task({\r\n  agent: agent,\r\n  description: \"Draft an article on the topic of {topic}\",\r\n  expectedOutput: \"An informative article about {topic}.\",\r\n});\r\n\r\nconst workflow = new Workflow({\r\n  tasks: [task],\r\n  agents: [agent],\r\n});\r\n\r\nworkflow\r\n  .initiate({ input: { topic: \"Artificial Intelligence\" } })\r\n  .then((output) => {\r\n    console.log(\"Workflow output:\", output);\r\n  });\r\n```\r\n\r\n### Multiple Agents, Sequential Tasks\r\n\r\nIn this example, multiple agents collaborate on a sequence of tasks. One agent researches the topic, and another agent writes an article based on the research.\r\n\r\n```typescript\r\nconst researcher = new Agent({\r\n  role: \"Researcher\",\r\n  goal: \"Gather information about {topic}\",\r\n  background: \"You are skilled at conducting thorough research.\",\r\n});\r\n\r\nconst writer = new Agent({\r\n  role: \"Content Writer\",\r\n  goal: \"Write an article based on research findings\",\r\n  background: \"You are an expert in writing engaging content.\",\r\n});\r\n\r\nconst researchTask = new Task({\r\n  agent: researcher,\r\n  description: \"Research the topic {topic}\",\r\n  expectedOutput: \"A comprehensive summary of information about {topic}.\",\r\n});\r\n\r\nconst writingTask = new Task({\r\n  agent: writer,\r\n  description: \"Draft an article based on the research about {topic}\",\r\n  expectedOutput: \"An engaging article about {topic}.\",\r\n  dependencyTasks: [researchTask],\r\n});\r\n\r\nconst workflow = new Workflow({\r\n  tasks: [researchTask, writingTask],\r\n  agents: [researcher, writer],\r\n});\r\n\r\nworkflow.initiate({ input: { topic: \"Climate Change\" } }).then((output) => {\r\n  console.log(\"Workflow output:\", output);\r\n});\r\n```\r\n\r\n### Parallel Tasks with Shared Context\r\n\r\nIn this example, multiple tasks are executed in parallel, and their results are used in a final summary task. Each agent is responsible for a different aspect of the topic.\r\n\r\n```typescript\r\nconst agent1 = new Agent({\r\n  role: \"Data Collector\",\r\n  goal: \"Collect data on {topic}\",\r\n  background: \"You are an expert in data collection.\",\r\n});\r\n\r\nconst agent2 = new Agent({\r\n  role: \"Expert Analyst\",\r\n  goal: \"Analyze collected data on {topic}\",\r\n  background: \"You specialize in data analysis.\",\r\n});\r\n\r\nconst dataCollectionTask = new Task({\r\n  agent: agent1,\r\n  description: \"Collect relevant data about {topic}\",\r\n  expectedOutput: \"A detailed dataset about {topic}.\",\r\n});\r\n\r\nconst analysisTask = new Task({\r\n  agent: agent2,\r\n  description: \"Analyze the collected data on {topic}\",\r\n  expectedOutput: \"A detailed analysis of the data on {topic}.\",\r\n});\r\n\r\nconst summaryAgent = new Agent({\r\n  role: \"Summarizer\",\r\n  goal: \"Summarize the findings on {topic}\",\r\n  background: \"You are skilled in summarizing complex information.\",\r\n});\r\n\r\nconst summaryTask = new Task({\r\n  agent: summaryAgent,\r\n  description: \"Summarize the data and analysis on {topic}\",\r\n  expectedOutput: \"A concise summary of the findings on {topic}.\",\r\n  dependencyTasks: [dataCollectionTask, analysisTask],\r\n});\r\n\r\nconst workflow = new Workflow({\r\n  tasks: [dataCollectionTask, analysisTask, summaryTask],\r\n  agents: [agent1, agent2, summaryAgent],\r\n});\r\n\r\nworkflow.initiate({ input: { topic: \"Renewable Energy\" } }).then((output) => {\r\n  console.log(\"Workflow output:\", output);\r\n});\r\n```\r\n\r\n### Error Handling with Retries\r\n\r\nIn this workflow, an agent may fail to complete a task, and the framework will retry the task up to three times before giving up.\r\n\r\n```typescript\r\nconst faultyAgent = new Agent({\r\n  role: \"Faulty Agent\",\r\n  goal: \"Attempt to execute a task that might fail\",\r\n  background: \"This agent is designed to potentially fail.\",\r\n});\r\n\r\nconst riskyTask = new Task({\r\n  agent: faultyAgent,\r\n  description: \"Perform a risky operation\",\r\n  expectedOutput: \"A successful execution of the risky operation.\",\r\n});\r\n\r\nconst workflow = new Workflow({\r\n  tasks: [riskyTask],\r\n  agents: [faultyAgent],\r\n});\r\n\r\nworkflow.initiate({}).catch((error) => {\r\n  console.error(\"Workflow execution failed after retries:\", error);\r\n});\r\n```\r\n\r\n### Mixed Task Types with Custom Models\r\n\r\nThis example demonstrates using a custom model to execute tasks in a workflow. One agent uses OpenAI's model, while the other uses a custom language model.\r\n\r\n```typescript\r\nconst openAIAgent = new Agent({\r\n  role: \"Content Generator\",\r\n  goal: \"Generate content using OpenAI\",\r\n  background: \"You use OpenAI's GPT-4 to generate content.\",\r\n});\r\n\r\nconst customModel = new CustomModel({\r\n  apiKey: \"your-api-key\",\r\n  model: \"custom-model\",\r\n});\r\n\r\nconst customAgent = new Agent({\r\n  role: \"Custom Content Generator\",\r\n  goal: \"Generate content using a custom model\",\r\n  background: \"You use a custom model to generate content.\",\r\n  llmModel: customModel,\r\n});\r\n\r\nconst task1 = new Task({\r\n  agent: openAIAgent,\r\n  description: \"Create an introduction about {topic}\",\r\n  expectedOutput: \"A well-written introduction about {topic}.\",\r\n});\r\n\r\nconst task2 = new Task({\r\n  agent: customAgent,\r\n  description: \"Write a conclusion using custom model for {topic}\",\r\n  expectedOutput: \"A thoughtful conclusion about {topic}.\",\r\n});\r\n\r\nconst workflow = new Workflow({\r\n  tasks: [task1, task2],\r\n  agents: [openAIAgent, customAgent],\r\n});\r\n\r\nworkflow\r\n  .initiate({ input: { topic: \"Blockchain Technology\" } })\r\n  .then((output) => {\r\n    console.log(\"Workflow output:\", output);\r\n  });\r\n```\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License.\r\n\r\n## Contributing\r\n\r\nContributions are welcome! If you encounter issues or have suggestions for improvements, please create an issue or submit a pull request.\r\n\r\n## Contact\r\n\r\nFor questions or further details, feel free to reach out to us through GitHub.\r\n","readmeFilename":"README.md"}