{"_id":"@aquiles-ai/ishikawa-toolkit","_rev":"18-f1f2ac269e0376f169bc597647245846","name":"@aquiles-ai/ishikawa-toolkit","dist-tags":{"latest":"2.5.0"},"versions":{"1.0.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.0.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.0.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"26ff08647b1684a24916160e53b860786ea7df66","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.0.0.tgz","fileCount":14,"integrity":"sha512-c9If4YF9oYqi2o+BArYiGZXoklu4bjGsfk6jW3wWjSRLV35+L8qTdZNAjTDiI2xGR039RypVaAXmQGd5B7EIEw==","signatures":[{"sig":"MEYCIQDHX3hKxPLJaWJjvSMSIt+cDSxzN5GqtTRWjBas/d7guQIhAKKMmagRbYcqtn4fdv1hi9GQyL4QtsMznoDaL1j3mb72","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16811},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"e8db48b61d18d80f5b5ebb5a423ed9b125d4f1f2","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.0.0_1767842616156_0.4872764366334228","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.1.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.1.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"a2c3d95072d11958c87c646a54bdb3258087a078","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.1.0.tgz","fileCount":15,"integrity":"sha512-hn+IbA5wwbBt/m5tlU5NKl0xXy2YZElHXE5TpADp/kk9yPaJzqUMbRPw7I7Co1gk2qmD6D7pELM49zeKjtj0iQ==","signatures":[{"sig":"MEUCIQDAcORbEYBaW4GEzUG2PIAFZ+d6AiOdtSa9JfBGGnMfawIgI97T9CRCQr+eUAgU3TZm0nekXRBz/UbLeqklBZkdOHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30171},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"384f5dcbbe5524ecad555eed06af79555201ea93","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.1.0_1767843412518_0.7938103479741809","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.2.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.2.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"7ed996f215eef90a1308ba7d384f47a2b5453de4","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.2.0.tgz","fileCount":15,"integrity":"sha512-bSbN7ZKtNE2GXpjz6K01PcVKzI3EtAKvxJDykot5qnRaZD6T6sgghzLqOI2+x6HupD3MRbFkYPGI2WGn7G2IDA==","signatures":[{"sig":"MEQCIBpovUX8lV15/T81TJsZSjYJprNDQJ7VN1FlZEIslzJuAiBNEcI5BwdVqSeLlpJL6KSn7eAXUBJ1WwHqPRYOSx6x2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30528},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"d1bf08bc33c044caf8da89867eff02c316be47e2","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.2.0_1767909990971_0.477560466415214","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.3.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.3.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"22a742149e54d4f3e46d6111f4392e09a968ebf7","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.3.0.tgz","fileCount":15,"integrity":"sha512-j7E2wa6yVSfAFZy+w8maZLnFJ36VW5qyia5wqAl0IEbCxvYJutqO12TigNtCZv9L9h0lusZZwBGIMWnz8a/4HA==","signatures":[{"sig":"MEUCIQCcLeVzwLRpxSlZYgBANiOL+DB0QgZN0sOlYHVHuWXcqgIgBzX6JuFfZdf8HtLM3xujqUihJQKQ2oRM9hoO0CR5oFI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30881},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"0e87b500a23d46ce2153e9d05d00325f1fbc3ff9","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.3.0_1767911713392_0.3641215874598256","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.4.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.4.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"d40000345606c5f5d6b7d258e7d048023efd2fb2","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.4.0.tgz","fileCount":15,"integrity":"sha512-0o4Cw/CCShNezg9mN+9zGq0SowRvwwWy3m7OsFDq7Lmrps8AzqGRTF50P2ZPqqn8bwQkpW/RND82jj2bS0Q35Q==","signatures":[{"sig":"MEUCIDCLRyQeP9Ll5VsHeSceyheSvJ0dsoVEK9KRrQeA0V2WAiEA8jtVQWHIilHnUf6+74T3SI04gBT8Z0qhSfZfD7hwv5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34913},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"6a97aef5a3f341a7736100653e5d8bf36de77451","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.4.0_1767929299606_0.6988993306700559","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.5.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.5.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"bb3ee39e8f6c9051891c9aeeacede984422b24fd","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.5.0.tgz","fileCount":15,"integrity":"sha512-OaZkwY3iE7hyRjp5XzrhQ099lyTindUPTfWAX106oLRezKqWyVkt8TT0QR4BKE7wR5OvxxbjU7h+qsPsZ4g/8w==","signatures":[{"sig":"MEQCIF8VdBaX+6uThVTQPiVtFDSwjEsyv0/umHiAhj/Z4q0RAiBQ49j8nF4Qsiwe4gJZJ3+sbmFcSzsSqtdJn6kys0KkeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37059},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"e41914eb083a963ad47c4543bf0593635c1a8420","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.5.0_1768619620604_0.8443161123901266","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.6.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.6.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"28babb5a8c34752af9f22e5047bb1e89abdfd0cf","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.6.0.tgz","fileCount":15,"integrity":"sha512-9nvTbjHZTCpgE59zTLPi6h1363yEbfFb6F21pFHPod1El2pYT4REaA+X8sYsmORQuVsK7vjFXSPX0s67yKPQyw==","signatures":[{"sig":"MEUCIEYB3HScRl/kG+pivpugKk6OZA0U9v3eoi+H4KFM5y7wAiEAl6xbqBlPseBzki+8kPG8bgDXxPhfN99ANGqGJS2mAjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38615},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"27e8680267469b73b2ee261974661a370cdf2875","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.6.0_1768620972087_0.1234689893003551","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.7.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.7.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"5338e63bc7893322930c72f9f741031df1dd8096","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.7.0.tgz","fileCount":15,"integrity":"sha512-Y9DKxM2quZtgd/3/vM8PMg37yIu9I2YykUaBTFTfDYP6i7S9azHdTSmLVm94k9s27wlqTV0d6g4EQtj47l7KLQ==","signatures":[{"sig":"MEYCIQDPhlSpJkQsEq7MPEMmcT+5XkJIMNVAmHEnNwbCCRWdlgIhANMLD9quTRDRX6S/RYoWNdImVqnvpSyG6y1KMKlb2N+I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38733},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"bd3a23ddc04f1dc85071e53e81fd388f53e1f1d9","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.7.0_1768762568269_0.6263617186773305","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.8.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.8.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"d008e131c34c3f656985f341b8a33bab920958a2","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.8.0.tgz","fileCount":15,"integrity":"sha512-EzdamXBLE4zgIFA7/idgLWlitZ+J41+gp+6XpWSPF+Yeytm08p3QMcrj7T+mqwjzg4V4Ir0WBmlyLS7ln2/D2g==","signatures":[{"sig":"MEUCIQCgmiO5vIM6swZ0HZHXh10F3TNfO29iMZ4H4L4ugklirwIge+iZwh1/1wmwakHEBXEl80JkFAaSRuPiFp11gnAH/5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40912},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"54087fc50c2f95c6a8e98dc8cc552574f8e6ed99","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","dependencies":{"dotenv":"^17.2.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.8.0_1769100142076_0.710671398785137","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.8.1","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.8.1","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"dist":{"shasum":"b48188954cd787b26a63addf526d8fec6c5f0315","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.8.1.tgz","fileCount":19,"integrity":"sha512-kJ5yxGqXhtFrMb1Zqei46K7GP+g5VOVmBaUNRD6SBog/JtMd7uvPpNZCclbYe/CZOiEbNXEgeaQ+ITR18E2O7w==","signatures":[{"sig":"MEQCIEPSfm6QkJz3bk1JnfvO2rqqF7R3ICAiCUtABWQ7LimKAiAHz/1VFGXhQPOTa9GA+Tls1kcyDX7kkCO3WQ2YK12Iaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43446},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"82d43cd609c9fa9efa636aa53cd7e1b1bc221893","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.8.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.3.6","dotenv":"^17.2.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.8.1_1771986281640_0.22616216080920593","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.8.2","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.8.2","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"bin":{"ishikawa":"dist/cli.js"},"dist":{"shasum":"0953b6a4f28373bf2fae6a951fab026f1c8f23ee","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.8.2.tgz","fileCount":23,"integrity":"sha512-579xBr4b3AKafSIF2turbzFoaIhzacWxFp2nPMOW0ptx+eRs5IGxO1A0bjzcotiImjFfy57sWIT84qWoKPpQWw==","signatures":[{"sig":"MEQCIFDA6ZDacwFSbHqX1teq6ltWh79TE1j/5OONxqb55soiAiBItnHEV6FARJIeW7+zmGHDWEmPhQsO84V/lPBN1tGKLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49052},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"f46bb9740c756c6c6ad105d5bb132b4c1fa42920","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.8.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","commander":"^14.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.8.2_1772072935009_0.5905776485635297","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"@aquiles-ai/ishikawa-toolkit","version":"1.8.3","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@1.8.3","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"bin":{"ishikawa":"dist/cli.js"},"dist":{"shasum":"eedfde207781b6a57cef7a34f149e72ae7a3b762","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-1.8.3.tgz","fileCount":23,"integrity":"sha512-Xk+Bwq0/+uWsUjJKHCWUL/T6y0vVi7TMm+plix0llzl4j9eDsmID3d39PNX/qi4Ifm4HC7FWTZzyk0xN9Bky/Q==","signatures":[{"sig":"MEUCIH7tF3q2hkM6XrpT1jmlOAPpyWpu+Btl+SualQwgRl0tAiEA9mDE4QhX7Iq6b1zHJt0FgBCHOYwsosj4CvVV76cwHco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49093},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"f46bb9740c756c6c6ad105d5bb132b4c1fa42920","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.8.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","commander":"^14.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_1.8.3_1772073177749_0.5850952443469499","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"2.0.0","keywords":["ai","function_calling"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@2.0.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"bin":{"ishikawa":"dist/cli.js"},"dist":{"shasum":"0c09bc98471baf5ec066de2ee2e399e9ccb7b95b","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-2.0.0.tgz","fileCount":23,"integrity":"sha512-65f2ui0DDfpEmQPr5Z8yxvL0TfvG5ifychBm5ohyaBj8w5kwo2QrgzJQv1Le+7LyLZCf1PuxhUj7xbdHkRmU7g==","signatures":[{"sig":"MEYCIQDAdkudhRByQ5StjtNlbeEZI7/G8lK1Tc6z0wI0kquysQIhAJWsUebywe7ZWf6bTC8T5SjIkKCpee+9kE+7fIP4ZKxw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49093},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"9591d470e107ba1a06b485cd121254a775e0db3b","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.8.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","commander":"^14.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_2.0.0_1772073411739_0.11690484930477951","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@aquiles-ai/ishikawa-toolkit","version":"2.0.1","keywords":["ai","llm","function-calling","tool-calling","ai-tools","ai-agent","agent","typescript","zod","json-schema","openai","vllm","anthropic","ollama","local-llm","tool-manager","dependency-isolation","agentic","generative-ai","mcp","framework"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@2.0.1","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"bin":{"ishikawa":"dist/cli.js"},"dist":{"shasum":"9cf154cd8c68073f248dd09980a5e51b754d2481","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-2.0.1.tgz","fileCount":23,"integrity":"sha512-q+iIHGA6J21DyQYIpmwGypkLjx7WMpHiOqHPqcsSpbLlVsyCLOKLmK53DOPieU7GGQU27sthrHLIquDhZGuy+Q==","signatures":[{"sig":"MEYCIQCVDatYmL95DjXL44Pcq7dgAN94tyk2K60EatpXaN8VZgIhAKylyoILcV9YbpJx98eRUx4ov7b4x56DcefkHxEc+4US","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49403},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"9591d470e107ba1a06b485cd121254a775e0db3b","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.8.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","commander":"^14.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_2.0.1_1772139763859_0.6965759889622587","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"2.1.0","keywords":["ai","llm","function-calling","tool-calling","ai-tools","ai-agent","agent","typescript","zod","json-schema","openai","vllm","anthropic","ollama","local-llm","tool-manager","dependency-isolation","agentic","generative-ai","mcp","framework"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@2.1.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"bin":{"ishikawa":"dist/cli.js"},"dist":{"shasum":"858427f738302236ee535ad423d5ee597eb4d80f","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-2.1.0.tgz","fileCount":23,"integrity":"sha512-UP7BTJwxC5fi5SBCkJXrdr8jbIAdq7OnVN+tlagmXCmldj+hHNT10lfMrjyqlgZkyGIgwFG8HJVXxuftdcSMFw==","signatures":[{"sig":"MEUCIDrmoHbn8hnBH7fLT3ksDzFgjJG9niTE3mZ8scwqDqTEAiEAt9fI1gTxLE94JObC15gx7dgs0SjzLWm3JMTgsCsNDAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49935},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"3cf734e3e54924f2ca2aa06f68f15f894594fb84","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.8.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","commander":"^14.0.3","env-paths":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_2.1.0_1772416654477_0.8892549383376374","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"2.2.0","keywords":["ai","llm","function-calling","tool-calling","ai-tools","ai-agent","agent","typescript","zod","json-schema","openai","vllm","anthropic","ollama","local-llm","tool-manager","dependency-isolation","agentic","generative-ai","mcp","framework"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@2.2.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"bin":{"ishikawa":"dist/cli.js"},"dist":{"shasum":"7c3f20faa0dd4bb2f5e8ca5b40b195a8467713c1","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-2.2.0.tgz","fileCount":23,"integrity":"sha512-GK1cUWYxIYCVLHjuQ+QyHipoxiEZYcOzEfSm5dJXKbLisY11kexrRUVSj6TebKBgb+Xod2RJ0oew3pt/FZrcPA==","signatures":[{"sig":"MEQCICTn/KhuFUClhwh1z85dsw9bxTCbN2Njz2DY7sFTysm9AiBjnpZBrp1DxP+MDvfUkil4OwB1x3xmjEq6+qRfhjauUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49918},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"57ff278ea98cc506e1999f6ff16924ab9c099217","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.8.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","commander":"^14.0.3","env-paths":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_2.2.0_1772417352350_0.4858613659576605","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"2.3.0","keywords":["ai","llm","function-calling","tool-calling","ai-tools","ai-agent","agent","typescript","zod","json-schema","openai","vllm","anthropic","ollama","local-llm","tool-manager","dependency-isolation","agentic","generative-ai","mcp","framework"],"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","_id":"@aquiles-ai/ishikawa-toolkit@2.3.0","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"bin":{"ishikawa":"dist/cli.js"},"dist":{"shasum":"c9420c3240a2dac775bd0273b5a49c7a3e0765c9","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-2.3.0.tgz","fileCount":23,"integrity":"sha512-Bu9JWTutrbVjHPHYBdnZyEHuqRJFwHcI00+YPoqwcxUynXVtTnko1QrnmlSA8F5xIoMMpMz2Vwlvi9qBM+Fy1g==","signatures":[{"sig":"MEQCICDbGGjoYCWxbgdaT2lGCdu71O7xFzhXH0Max88zO8UgAiBE63fideUZ6RzretNuLU1PfhIEloxAV2Z2WbEvFJ4/KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50089},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"b547dee9ba143ccb495fe19ec12d6f19646ba572","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"repository":{"url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git","type":"git"},"_npmVersion":"11.8.0","description":"Extensible framework for creating and managing LLM function calling","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.3.6","dotenv":"^17.3.1","commander":"^14.0.3","env-paths":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ishikawa-toolkit_2.3.0_1772417815162_0.5755942952711357","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@aquiles-ai/ishikawa-toolkit","version":"2.5.0","description":"Extensible framework for creating and managing LLM function calling","main":"./dist/index.js","types":"./dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git"},"keywords":["ai","llm","function-calling","tool-calling","ai-tools","ai-agent","agent","typescript","zod","json-schema","openai","vllm","anthropic","ollama","local-llm","tool-manager","dependency-isolation","agentic","generative-ai","mcp","framework"],"scripts":{"build":"tsc","prepublishOnly":"npm run build"},"bin":{"ishikawa":"dist/cli.js"},"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","type":"module","bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","devDependencies":{"@types/node":"^25.0.3","tsx":"^4.21.0","typescript":"^5.9.3"},"dependencies":{"commander":"^14.0.3","dotenv":"^17.3.1","env-paths":"^4.0.0","zod":"^4.3.6"},"gitHead":"a3e39bbe71dcc03a2d7452607e29b42a4f87e0e7","_id":"@aquiles-ai/ishikawa-toolkit@2.5.0","_nodeVersion":"22.15.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-9ytIXITNb+an15w0HX/Hnr5hSoG/57DmcVlwQh+4B/9MTOCqABe3qLUBD1sqFCJW43+fR50JU3xu6rqCyYySNw==","shasum":"f122e1e93555615f32718f1e77ef027819efb65f","tarball":"https://registry.npmjs.org/@aquiles-ai/ishikawa-toolkit/-/ishikawa-toolkit-2.5.0.tgz","fileCount":23,"unpackedSize":50089,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAtvMLnWB5ZDBkNeMIxMXtSYr2405A2yewonTVaqnTLYAiA31vviGQN6+rJCSBrjBqW27yXKqqH6Q2P641+rLXeAvQ=="}]},"_npmUser":{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"},"directories":{},"maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ishikawa-toolkit_2.5.0_1772419926893_0.3051805041936353"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-08T03:23:36.055Z","modified":"2026-03-02T02:52:07.196Z","1.0.0":"2026-01-08T03:23:36.392Z","1.1.0":"2026-01-08T03:36:52.685Z","1.2.0":"2026-01-08T22:06:31.103Z","1.3.0":"2026-01-08T22:35:13.577Z","1.4.0":"2026-01-09T03:28:19.752Z","1.5.0":"2026-01-17T03:13:40.745Z","1.6.0":"2026-01-17T03:36:12.221Z","1.7.0":"2026-01-18T18:56:08.419Z","1.8.0":"2026-01-22T16:42:22.212Z","1.8.1":"2026-02-25T02:24:41.786Z","1.8.2":"2026-02-26T02:28:55.152Z","1.8.3":"2026-02-26T02:32:57.894Z","2.0.0":"2026-02-26T02:36:51.914Z","2.0.1":"2026-02-26T21:02:44.012Z","2.1.0":"2026-03-02T01:57:34.622Z","2.2.0":"2026-03-02T02:09:12.493Z","2.3.0":"2026-03-02T02:16:55.327Z","2.5.0":"2026-03-02T02:52:07.057Z"},"bugs":{"url":"https://github.com/Aquiles-ai/Ishikawa-Toolkit/issues"},"author":{"name":"Aquiles-ai / Fredy Rivera"},"license":"Apache-2.0","homepage":"https://github.com/Aquiles-ai/Ishikawa-Toolkit#readme","keywords":["ai","llm","function-calling","tool-calling","ai-tools","ai-agent","agent","typescript","zod","json-schema","openai","vllm","anthropic","ollama","local-llm","tool-manager","dependency-isolation","agentic","generative-ai","mcp","framework"],"repository":{"type":"git","url":"git+https://github.com/Aquiles-ai/Ishikawa-Toolkit.git"},"description":"Extensible framework for creating and managing LLM function calling","maintainers":[{"name":"f4k3r22","email":"fredyriveraacevedo13@gmail.com"}],"readme":"<div align=\"center\">\n\n# Ishikawa-Toolkit\n\n<img src=\"https://res.cloudinary.com/dmtomxyvm/image/upload/v1767669134/ishikawa_toolkit_lrztkl.png\" alt=\"Ishikawa-Toolkit\" width=\"800\"/>\n\nExtensible framework for creating and managing LLM function calling. Build custom TypeScript tools with isolated dependencies and automatic metadata for integration with any language model.\n</div>\n\n## Installation\n\n```bash\nnpm i @aquiles-ai/ishikawa-toolkit\n```\n\n## Quick Start\n\n### 1. Create your tool function\n\nCreate a file `calculator.ts`:\n\n```typescript\nexport default function calculator({a, b, operation}: {a: number; b: number; operation: string}) {\n    switch(operation) {\n        case 'add': return a + b;\n        case 'subtract': return a - b;\n        case 'multiply': return a * b;\n        case 'divide': return a / b;\n        default: throw new Error('Invalid operation');\n    }\n}\n```\n\n> **Important:** The `name` in the schema must match the exported function name in your `.ts` file. In this case, the file exports `function calculator` so the schema name must be `\"calculator\"`.\n\n### 2. Define the schema\n\n**Option A — Using `zodToJsonSchema()`**\n\nDefine the schema in code using Zod. No separate file needed.\n\n```typescript\nimport { zodToJsonSchema } from '@aquiles-ai/ishikawa-toolkit';\nimport * as z from 'zod';\n\nconst schema = z.object({\n    a: z.number().meta({ description: 'First number' }),\n    b: z.number().meta({ description: 'Second number' }),\n    operation: z.enum(['add', 'subtract', 'multiply', 'divide'])\n        .meta({ description: 'Operation to perform' })\n});\n\nconst metadata = zodToJsonSchema('calculator', 'Performs basic mathematical operations', schema, {\n    'mathjs': '^12.0.0' // optional dependencies\n});\n```\n\n**Option B — Raw JSON Schema file**\n\nCreate `calculator-metadata.json`:\n\n```json\n{\n    \"type\": \"function\",\n    \"name\": \"calculator\",\n    \"description\": \"Performs basic mathematical operations\",\n    \"parameters\": {\n        \"type\": \"object\",\n        \"properties\": {\n            \"a\": { \"type\": \"number\", \"description\": \"First number\" },\n            \"b\": { \"type\": \"number\", \"description\": \"Second number\" },\n            \"operation\": { \n                \"type\": \"string\", \n                \"enum\": [\"add\", \"subtract\", \"multiply\", \"divide\"],\n                \"description\": \"Operation to perform\"\n            }\n        },\n        \"required\": [\"a\", \"b\", \"operation\"]\n    },\n    \"dependencies\": {\n        \"mathjs\": \"^12.0.0\"\n    }\n}\n```\n\n### 3. Register and use the tool\n\n```typescript\nimport { ToolManager } from '@aquiles-ai/ishikawa-toolkit';\n\nconst manager = new ToolManager();\n\n// Option A — register with zodToJsonSchema output\nawait manager.register('./calculator.ts', metadata);\n\n// Option B — register with a path to JSON file\nawait manager.register('./calculator.ts', './calculator-metadata.json');\n\n// Load and execute\nconst tool = await manager.getTool('calculator');\n\n// Access metadata\nconsole.log(tool.metadata.description);\n// Output: \"Performs basic mathematical operations\"\n\n// Execute the tool\nconst result = await tool.execute({a: 10, b: 5, operation: 'add'});\nconsole.log(result); // Output: 15\n\n// Or use shortcut\nconst result2 = await manager.executeTool('calculator', {a: 20, b: 4, operation: 'divide'});\nconsole.log(result2); // Output: 5\n\n// List all registered tools\nconst tools = await manager.list();\nconsole.log(tools); // Output: ['calculator', ...]\n```\n\n## Environment Variables (Optional)\n\nIf your tool requires environment variables, you can provide a `.env` file during registration. This parameter is optional and accepts either a file path or direct content.\n\n**Important:** The toolkit automatically loads the `.env` file for each tool before execution. You **do not need** to call `dotenv.config()` in your tool code - just access `process.env` directly.\n\n### Complete Example with Environment Variables\n\n**1. Create your tool that uses environment variables**\n\nCreate `api-client.ts`:\n```typescript\n// NO need to import or call dotenv.config() - env vars are loaded automatically!\n\nexport default async function apiClient({endpoint}: {endpoint: string}) {\n    const apiKey = process.env.API_KEY;\n    const baseUrl = process.env.API_URL;\n    \n    if (!apiKey) {\n        throw new Error('API_KEY not found in environment');\n    }\n    \n    const response = await fetch(`${baseUrl}${endpoint}`, {\n        headers: {\n            'Authorization': `Bearer ${apiKey}`\n        }\n    });\n    \n    return await response.json();\n}\n```\n\n**2. Define the schema**\n\n```typescript\nimport { zodToJsonSchema } from '@aquiles-ai/ishikawa-toolkit';\nimport * as z from 'zod';\n\nconst metadata = zodToJsonSchema(\n    'apiClient',\n    'Makes authenticated API requests',\n    z.object({\n        endpoint: z.string().meta({ description: 'API endpoint to call' })\n    })\n);\n```\n\n**3. Register with environment variables**\n\nUsing a `.env` file path:\n```typescript\nawait manager.register('./api-client.ts', metadata, './config/.env');\n```\n\nOr using direct `.env` content:\n```typescript\nawait manager.register(\n    './api-client.ts',\n    metadata,\n    'API_KEY=your-key-here\\nAPI_URL=https://api.example.com'\n);\n```\n\nThe same works with a JSON path:\n```typescript\nawait manager.register('./api-client.ts', './api-metadata.json', './config/.env');\n```\n\n**4. Use the tool**\n```typescript\nconst result = await manager.executeTool('api-client', {\n    endpoint: '/users/123'\n});\n```\n\n### How Environment Variables Work\n\n- Each tool gets its **own isolated** `.env` file in its execution directory\n- Environment variables are loaded **automatically** before the tool executes\n- After execution, the environment is restored to prevent pollution between tools\n- You simply access variables via `process.env.VARIABLE_NAME` - no manual configuration needed\n\n## How Isolation Works\n\nEach registered tool lives in its own directory under the toolkit's data path:\n\n```\nTOOLS_BASE_DIR/\n└── tools/\n    ├── calculator/\n    │   ├── index.ts\n    │   ├── function.json\n    │   ├── package.json\n    │   └── dist/\n    │       ├── index.js\n    │       └── node_modules/   ← mathjs@12 isolated here\n    └── data-processor/\n        └── dist/\n            └── node_modules/   ← mathjs@11 isolated here\n```\n\nWhen a tool is loaded, it is imported via `import(fileURL)` from its own directory. Node.js resolves dependencies relative to the imported file's location, so each tool loads its own versions of packages with zero conflicts no workers or separate processes needed.\n\n## CLI\n\nList all tools currently registered in the system:\n\n```bash\nnpx ishikawa list\n```\n\nExample output:\n\n```\ncalculator\napi-client\n```\n\n## Using with Local LLMs\n\nIshikawa-toolkit works seamlessly with local LLM servers like vLLM. Here's how to set up function calling with a local model:\n\n### 1. Start vLLM Server\n\nStart your vLLM server with tool calling enabled:\n```bash\nvllm serve openai/gpt-oss-20b \\\n    --served-model-name gpt-oss-20b \\\n    --host 0.0.0.0 \\\n    --port 8000 \\\n    --async-scheduling \\\n    --enable-auto-tool-choice \\\n    --tool-call-parser openai \\\n    --api-key dummyapikey\n```\n\n### 2. Implement the Agent Loop\n\nHere's a complete example using the `calculator` tool from the Quick Start section:\n\n```typescript\nimport OpenAI from \"openai\";\nimport { ToolManager } from \"@aquiles-ai/ishikawa-toolkit\";\n\nconst client = new OpenAI({ \n    baseURL: \"http://localhost:8000/v1\", \n    apiKey: \"dummyapikey\"\n});\n\nconst tools = new ToolManager();\nconst namesTools = await tools.listTools();\n\nconst allToolsMetadata = await Promise.all(\n    namesTools.map(async (toolName) => {\n        try {\n            return await tools.getMetadataTool(toolName);\n        } catch (error) {\n            console.error(`X Error loading ${toolName}:`, error);\n            return null;\n        }\n    })\n);\n\nconst toolsMetadata = allToolsMetadata.filter(m => m !== null).map(m => ({\n    type: m.type,\n    name: m.name,\n    description: m.description,\n    parameters: m.parameters\n}));\n\nlet input = [\n    { \n        role: \"user\", \n        content: \"Can you validate the basic operations using the tool (The tool you need to use is the 'calculator', always use it)?\" \n    },\n];\n\nlet response = await client.responses.create({\n    model: \"gpt-oss-20b\",\n    tools: toolsMetadata,\n    input: input,\n});\n\nfor (const item of response.output) {\n    if (item.type == \"function_call\") {\n        const cleanName = item.name.split('<|')[0].trim();\n        \n        if (namesTools.includes(cleanName)) {\n            console.log(\"Running the tool: \" + cleanName);\n            \n            let parsedArgs = {};\n            try {\n                parsedArgs = typeof item.arguments === \"string\" \n                    ? JSON.parse(item.arguments) \n                    : item.arguments ?? {};\n            } catch (e) {\n                console.error(\"X Error parsing function arguments:\", e);\n            }\n\n            try {\n                const result = await tools.executeTool(cleanName, parsedArgs);\n                console.log(`Result: ${result}`);\n\n                input.push({\n                    ...item,\n                    name: cleanName\n                });\n                \n                input.push({\n                    type: \"function_call_output\",\n                    call_id: item.call_id,\n                    output: String(result), \n                });\n            } catch (err) {\n                console.error(\"X Tool execution error:\", err);\n                input.push(item);\n                input.push({\n                    type: \"function_call_output\",\n                    call_id: item.call_id,\n                    output: JSON.stringify({ error: String(err) }),\n                });\n            }\n        }\n    }\n}\n\nconst response2 = await client.responses.create({\n    model: \"gpt-oss-20b\",\n    instructions: \"Answer based on the results obtained from the tool. What inputs did you provide and what output did you obtain?\",\n    tools: toolsMetadata,\n    input: input,\n});\n\nconsole.log(\"Final output:\");\nconsole.log(response2.output_text);\n```\n\nFor more models and parser options, see the [vLLM documentation](https://docs.vllm.ai/en/latest/features/tool_calling/).","readmeFilename":"README.md"}