{"_id":"@gram-ai/functions","_rev":"47-09b2f8b00deaf73248a673f243bfca17","name":"@gram-ai/functions","dist-tags":{"latest":"0.18.3"},"versions":{"0.0.0-empty":{"name":"@gram-ai/functions","version":"0.0.0-empty","keywords":[],"author":"","license":"ISC","_id":"@gram-ai/functions@0.0.0-empty","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"dist":{"shasum":"80eb285651034b2fb937d927753a00ca3123cbd3","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.0.0-empty.tgz","fileCount":2,"integrity":"sha512-xJiXSfZmSadZFhCZ+IQDoHyvHC8MXO5Brb7Z5HehL1unxCyQwPkJwSLrh/dy4cyAA3aMtq6mmUXixT1QMEQIug==","signatures":[{"sig":"MEUCIBNft19fLUo80H98c7xjhYN7xMIRNYwkHpnsikzgjRQtAiEAqzGpIcV/XTsx7sAmN2kBGkxelLW9VQRpTGVh7+YU9QE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/functions_0.0.0-empty_1760734467018_0.053507127681994726","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@gram-ai/functions","version":"0.1.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.1.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"dist":{"shasum":"4c8af5baf9599f44520a748eda1ae722fbaca0a1","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.1.0.tgz","fileCount":33,"integrity":"sha512-+S8q3dxzH3fUfRLu266IdlywYp02mjc4O0LtBEBHvu5HaOWs9d+90xGMZ3EWX0LwvMmosjNlM87CNbU6DyWKzQ==","signatures":[{"sig":"MEUCIQCpGpkEDAYxUoFkQR63tb5HmbBor5aePBcxuTBbmawEIgIgYdPS668+TmcEJeRwPzOBkC88RGpm9Ju4HLY6+MA1fxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":86652},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/67559d6c8b52ff2240986fb8e4148bcd/gram-ai-functions-0.1.0.tgz","_integrity":"sha512-+S8q3dxzH3fUfRLu266IdlywYp02mjc4O0LtBEBHvu5HaOWs9d+90xGMZ3EWX0LwvMmosjNlM87CNbU6DyWKzQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"esbuild":"^0.25.10","archiver":"^7.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"zod":"^4","@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.1.0_1760738603531_0.8164302186953643","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@gram-ai/functions","version":"0.2.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.2.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"dist":{"shasum":"8834cbeff0cc22febc7fae38f0773ea21665d207","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.2.0.tgz","fileCount":33,"integrity":"sha512-RKGYKzsKYN+PaTidjxoex7AfWIBFofwT0WOhVHXf5JKyLrN+Tah+i6aDVgIPd0PWwomtkntnuJi7YF2xEBaCsQ==","signatures":[{"sig":"MEUCIQCCqN9LXKck3ChYKmOrj3Ky/anGHbmGuBaKk9O6LKGgxQIgHNoWKo513KyJoa1i1Yhs/R2/bz6KrzPlkB9QPNPHshA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":86652},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/853cf4ee4dcd1f0047dfa2e97a9d50cb/gram-ai-functions-0.2.0.tgz","_integrity":"sha512-RKGYKzsKYN+PaTidjxoex7AfWIBFofwT0WOhVHXf5JKyLrN+Tah+i6aDVgIPd0PWwomtkntnuJi7YF2xEBaCsQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"esbuild":"^0.25.10","archiver":"^7.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"zod":"^4","@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.2.0_1760865760376_0.7450432200824564","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@gram-ai/functions","version":"0.2.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.2.1","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"dist":{"shasum":"6d18df77aab65cf94283faa09d7868dca49b4445","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.2.1.tgz","fileCount":33,"integrity":"sha512-+mlUv4P5jkuOnDiJFO0YmqgDlVqXAhvGDzBZmatFjkVoRtTJtncY96UzsUrBOv7iTnr4iyukKXa2vR9P6AVoQQ==","signatures":[{"sig":"MEYCIQDs8g2OFJz5zTnXcm8mZUux6TmbYhaHJphFh6yzMicEqgIhAMGTS4Zbx3zhTLp8JeiDSTTdcboMhNXUkgPDhDBKGi2J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":87637},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.2.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/d28f3fa14fb0db93a2121392b20a3d8b/gram-ai-functions-0.2.1.tgz","_integrity":"sha512-+mlUv4P5jkuOnDiJFO0YmqgDlVqXAhvGDzBZmatFjkVoRtTJtncY96UzsUrBOv7iTnr4iyukKXa2vR9P6AVoQQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"esbuild":"^0.25.10","archiver":"^7.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"zod":"^4","@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.2.1_1760980778709_0.5223206892901249","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@gram-ai/functions","version":"0.3.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.3.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"fb90846f355de14eaf08067612c5d48689af94d2","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.3.0.tgz","fileCount":43,"integrity":"sha512-H0EglWNRWKdq5ICrqwaNdbHEHC7ynKzVCcsGdAJfO6GopnIOtOIEcotNULc45EnZ+qYKMnJj05w+lrbo7GWQMQ==","signatures":[{"sig":"MEUCIQCGzp53soBEM8IPjgSV1PhlGKbTqRsMkxLHqktjd0D9BgIgBEgZIWHPunid0q5b18Mf5VCwi8IcdEt/654a8I217j8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122379},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.3.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/d1329783a14f001b94fc3ba7b6da40cf/gram-ai-functions-0.3.0.tgz","_integrity":"sha512-H0EglWNRWKdq5ICrqwaNdbHEHC7ynKzVCcsGdAJfO6GopnIOtOIEcotNULc45EnZ+qYKMnJj05w+lrbo7GWQMQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.3.0_1761258109596_0.8998489718330644","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@gram-ai/functions","version":"0.3.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.3.1","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"64a651f413fbe29ce896dd6e5a0dde6e59f495d6","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.3.1.tgz","fileCount":43,"integrity":"sha512-fxEbilPFKLuAV8yISLVzWSffIztximpboz5m6FsD8qAAKYq9i0SLiHXAvqDJ1+GGIFbSUfHG3ObqSTHLlMMm6Q==","signatures":[{"sig":"MEQCIC9JMAXApiqkI4rMMR4G7/rCTaX/BKkYOAFMgCn8zEmdAiALuOtDo0byIykU/lHN1Cll6wO4tbyb5UtrvtXI5u8Ung==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122403},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.3.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/bbc2f7612287b770ff7dcea0537f0a88/gram-ai-functions-0.3.1.tgz","_integrity":"sha512-fxEbilPFKLuAV8yISLVzWSffIztximpboz5m6FsD8qAAKYq9i0SLiHXAvqDJ1+GGIFbSUfHG3ObqSTHLlMMm6Q==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.3.1_1761305979446_0.22304222512693728","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@gram-ai/functions","version":"0.3.2","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.3.2","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"4508a4b06d9483d1814ab3c458f22c774ca49e4a","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.3.2.tgz","fileCount":43,"integrity":"sha512-ktA1rF28J4vrfGxDZ5ewkDjFxNUOqdYHGeOeLxPXW6flx5svNaz02w7HHqWaWZyjZBQ1oblcTPCDafl17By6QA==","signatures":[{"sig":"MEUCIQCjxuQcdM7gWjZ/UTxyqprRKBPRDRcsTYr18Ksr895PpgIgeBoUbh8LIuj07erhj8IBrIhKMQ7QNBvCs/FT1H/zmvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122447},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.3.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/4aef31acab9c90d239aad8ff9d277297/gram-ai-functions-0.3.2.tgz","_integrity":"sha512-ktA1rF28J4vrfGxDZ5ewkDjFxNUOqdYHGeOeLxPXW6flx5svNaz02w7HHqWaWZyjZBQ1oblcTPCDafl17By6QA==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.3.2_1761313185843_0.7627304067538374","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@gram-ai/functions","version":"0.4.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.4.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"bf19ecf91fddd1be50a4a6e6b201d1fb0219e192","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.4.0.tgz","fileCount":43,"integrity":"sha512-6/+YOBbg9rsZmfFRu+EsZME2ddg21VxUKOQZN0OzQeiJAzrhWHHe6b4PwEcnDlNwH6s4e54MLXlJIJOp/rQIVw==","signatures":[{"sig":"MEUCIBr5LbqCuBAaLPd5v7LI5KlcCMFKAGRSf1oFht4vmzMwAiEA96EnxPEM72Vt2Jg7EGSFbPSvszy8bwd1dtAfUuzEkF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":126215},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.4.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/92c9b2659854c45d4057a80d432316b4/gram-ai-functions-0.4.0.tgz","_integrity":"sha512-6/+YOBbg9rsZmfFRu+EsZME2ddg21VxUKOQZN0OzQeiJAzrhWHHe6b4PwEcnDlNwH6s4e54MLXlJIJOp/rQIVw==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.4.0_1761589256737_0.28713353675625397","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@gram-ai/functions","version":"0.5.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.5.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"01f133c8c950d9cfcd132e66be71b174a4e74ba5","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.5.0.tgz","fileCount":43,"integrity":"sha512-SRZ9qeKmOcwDkk4vGqfG71plp2cAfHjavXBtFGKAH+YlKWAfnpg6hBL+g7yIKBxHCl5YBVj3ykXHBYYuotyLhg==","signatures":[{"sig":"MEUCIHK4muEFpqXKGynv3DfSqsB2dCCZokrDUQRxJSj//mE1AiEAlhNc2X/6x83BT8VoT0yILcGzNyreEznGvEw5sigeP14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":126715},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.5.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/0025ac8cc85dbe47379b569236b86080/gram-ai-functions-0.5.0.tgz","_integrity":"sha512-SRZ9qeKmOcwDkk4vGqfG71plp2cAfHjavXBtFGKAH+YlKWAfnpg6hBL+g7yIKBxHCl5YBVj3ykXHBYYuotyLhg==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.5.0_1761597644015_0.13984611238408595","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@gram-ai/functions","version":"0.5.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.5.1","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"97dc1de2e5f10af9f9a458fbe59ea03a1ade1c21","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.5.1.tgz","fileCount":43,"integrity":"sha512-aUerHY/ozoNhyS2hMUYMKr6+L2Ocg/3ywokOSjkdPaFEC/n+J5hSVpngcg75FwCZpsOtE7mTwwpZfefdsqe29A==","signatures":[{"sig":"MEUCIQCp8nuGGMw2cGbiH7f2P2cNeVHlmnbxbEn8sSugSxzLVAIgeX26UCcBqEMZJG/Qnl6ilF3IzDzsOJ75sVQiChPvde4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127538},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.5.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/ecda872d49db7ac0dadea60390f3ea84/gram-ai-functions-0.5.1.tgz","_integrity":"sha512-aUerHY/ozoNhyS2hMUYMKr6+L2Ocg/3ywokOSjkdPaFEC/n+J5hSVpngcg75FwCZpsOtE7mTwwpZfefdsqe29A==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.5.1_1761747974356_0.41213096305944097","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@gram-ai/functions","version":"0.5.2","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.5.2","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"9081b68ce840aca5b585a0b4f391924197c9d2c3","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.5.2.tgz","fileCount":43,"integrity":"sha512-0FG9R+lwHIWeSCqEW2SnCc4cClmBqQQ8uHxTd3us9ncLiNxaFiw1YcoQbFoV0RuE008TsQotpVFqII0hpOwa/w==","signatures":[{"sig":"MEYCIQDiMMzwICKrJbDWuBasGzvUpf+sFUOKrujbpTphR/3C1gIhAP3+IlgAICziMFeujTwW8aUjT4MXzIAzLNcgUz0nCdKn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127628},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.5.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/873a0acd2e7dec417bffe8f2b1a58656/gram-ai-functions-0.5.2.tgz","_integrity":"sha512-0FG9R+lwHIWeSCqEW2SnCc4cClmBqQQ8uHxTd3us9ncLiNxaFiw1YcoQbFoV0RuE008TsQotpVFqII0hpOwa/w==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.5.2_1761755705878_0.9789878752064485","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@gram-ai/functions","version":"0.5.3","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.5.3","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"377b6abef983f6f41e8156733c8ecc5dc47b9d5c","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.5.3.tgz","fileCount":43,"integrity":"sha512-9aXgsnYarw5FOEYKeNcLdkenmRik4SzVVlLfDwLLDdS/txlrjcVD8k286dF9MwEbrKeVsILdvVX0zA1osgTmFQ==","signatures":[{"sig":"MEUCIBaj8izu0p2weNurcS2nVq1iuvcVSvm3lx2BNk3w6du5AiEA4bUM1GJp90fIEGTHsZ0oaqMmY4eB5M9YJdFdjIylMoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127406},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.5.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/5f3acdc1030245cfd15ebe329b3b40d5/gram-ai-functions-0.5.3.tgz","_integrity":"sha512-9aXgsnYarw5FOEYKeNcLdkenmRik4SzVVlLfDwLLDdS/txlrjcVD8k286dF9MwEbrKeVsILdvVX0zA1osgTmFQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.19.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.5.3_1761757064045_0.8340703246850749","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@gram-ai/functions","version":"0.6.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.6.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"b7ebf3d2915a0062193a02a7b483ad1fe30da249","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.6.0.tgz","fileCount":43,"integrity":"sha512-A7wiMs7T06wv0IGaDCm7cfWCoS2dlPhglRUmEGo69ltvYYiuXhM8OkU7PHRFGYUtytC7D8121tBU9QE1m0s2og==","signatures":[{"sig":"MEYCIQCzFgJveMmgK1cWN5/2Mn93kajSU7E1rVML1HYNny+1pAIhAMzonWyerOFKBEau2vV9w3zYyoVwgvehuVsQUVMAM81O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122697},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.6.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/07f66a1a92770438ecd54d6de4694bc9/gram-ai-functions-0.6.0.tgz","_integrity":"sha512-A7wiMs7T06wv0IGaDCm7cfWCoS2dlPhglRUmEGo69ltvYYiuXhM8OkU7PHRFGYUtytC7D8121tBU9QE1m0s2og==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.6.0_1761842089849_0.8832638292794397","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@gram-ai/functions","version":"0.6.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.6.1","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"afa5ea27acb1e631e5c45163d4c174dec4f293b8","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.6.1.tgz","fileCount":43,"integrity":"sha512-Q6mmAoDIrWeFe20NN8QziFoZV7yMkIbdXYaobPG9VdgvhjmInta6A60wzehitznycFAwrNrtc2ygxobsSAvChQ==","signatures":[{"sig":"MEYCIQCBsz/+YwEo8DF9ovK2g/1tbQ7es5F/OXHKkhJONQ5AdAIhALpWgezy9USLZAzPnkJJugQEbJu53/RQfk2ldU/v7Llw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122697},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.6.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/2c12cae59fdcec33d31625d7cb7b413d/gram-ai-functions-0.6.1.tgz","_integrity":"sha512-Q6mmAoDIrWeFe20NN8QziFoZV7yMkIbdXYaobPG9VdgvhjmInta6A60wzehitznycFAwrNrtc2ygxobsSAvChQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.6.1_1761844219526_0.46141212522230424","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@gram-ai/functions","version":"0.6.2","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.6.2","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gram-build":"dist/bin/build.js"},"dist":{"shasum":"c622ce0006e58e1773ee27d5df7721a3825dd88e","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.6.2.tgz","fileCount":43,"integrity":"sha512-nW3659F2NCkA/+mHMEg69y2WC6v/7vkM0csXk0x14uGd5LgR8m8VKVOsefTGBgoR+tLr8ltYTYOQFEHuRmOpZw==","signatures":[{"sig":"MEYCIQCMJhPf42rCbUOPihJ63IsQy+5HxtEdqE4Dg6DFR2jTHAIhAOsA+6jNmzXTAS4aTCsCRGUUmKv60b35YRroRSlsEcGz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":133134},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.6.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/352c2668ed79aa27beb84e19a7363cdd/gram-ai-functions-0.6.2.tgz","_integrity":"sha512-nW3659F2NCkA/+mHMEg69y2WC6v/7vkM0csXk0x14uGd5LgR8m8VKVOsefTGBgoR+tLr8ltYTYOQFEHuRmOpZw==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.6.2_1761870946116_0.6347891902706282","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@gram-ai/functions","version":"0.7.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.7.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"9d0d22c922603de07451796df4a63b0552a2700b","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.7.0.tgz","fileCount":53,"integrity":"sha512-oqOhd7gueiLpEY6GWpNxzha1ysgkbZugyrrJkTGG7YlPJTjQymO6JhAzAyW7/v2v8Rk5hj7n4x1r8VtIXCTpWA==","signatures":[{"sig":"MEUCIDuVLRJk2vWyZzz1VYxcm/2P93jzkXsyRmwoBAT/eGs4AiEAsFzx/ScWDwsAwJz8NaBNVveFqzIDfavNAzeLvMdZikA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142209},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.7.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/8bccf94ae5ea6a56c4441730602b7deb/gram-ai-functions-0.7.0.tgz","_integrity":"sha512-oqOhd7gueiLpEY6GWpNxzha1ysgkbZugyrrJkTGG7YlPJTjQymO6JhAzAyW7/v2v8Rk5hj7n4x1r8VtIXCTpWA==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@stricli/core":"^1.2.4","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.7.0_1761934640347_0.5873242372069323","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@gram-ai/functions","version":"0.8.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.8.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"9f14554732d8257e601fc95757e6797e989f2f68","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.8.0.tgz","fileCount":53,"integrity":"sha512-nX9L4pv21HEcaFAQNuJ1hVBw7CR0KczceBFl49abPU2H7ZxAM66YABWes5O99jevGokvK0yOQyQBSuMBQ0Sscw==","signatures":[{"sig":"MEQCIBMItlrXtihz9HprKJdMDvxsqcY3QfggSZcIc0uTBNcfAiAY62Pc/ejMnEwMBgC/0QeRU7wur95SN3+st7X7kMEGWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":150298},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.8.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/54decac92549a382b2c5ad641e8696e8/gram-ai-functions-0.8.0.tgz","_integrity":"sha512-nX9L4pv21HEcaFAQNuJ1hVBw7CR0KczceBFl49abPU2H7ZxAM66YABWes5O99jevGokvK0yOQyQBSuMBQ0Sscw==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@stricli/core":"^1.2.4","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.8.0_1762187304828_0.4988726974709874","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@gram-ai/functions","version":"0.8.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.8.1","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"a71dd4924d2c61732c64b7139402333de652f4c5","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.8.1.tgz","fileCount":53,"integrity":"sha512-Ml42J/QdO7cllCVZhCntyC3f56aVAXY/c+yx/Q6qT0Msl9cvwAwFxQl1dnrsN9qe+6CboLETcM20MKw0sXCS1A==","signatures":[{"sig":"MEQCIAvqTKT2ZhfHEqwVqBdxQ2o4dgpm6ceEiTQfugh4ZRYUAiAAlF4h6jo9WC4toDsNymrC1kZXz5Uy8qT2UKC+F4VqJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":150298},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.8.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/708b9b9e16d05fa2900fc73afc71df53/gram-ai-functions-0.8.1.tgz","_integrity":"sha512-Ml42J/QdO7cllCVZhCntyC3f56aVAXY/c+yx/Q6qT0Msl9cvwAwFxQl1dnrsN9qe+6CboLETcM20MKw0sXCS1A==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@stricli/core":"^1.2.4","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.8.1_1762192095147_0.31850090486040106","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@gram-ai/functions","version":"0.9.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.9.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"954a33f3990c706a243f91190e4df819983dfd79","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.9.0.tgz","fileCount":58,"integrity":"sha512-as80YfT+VmXZNLx9CLO6g5uhZVePUAQZApqg7TcBaiIubamxvtN2OV82bgWcp2xjqChSPWz4wmcW35DikrX5ug==","signatures":[{"sig":"MEYCIQCol8gioz20LR9m2nWc6NUogc1WXxblC61Nx24rQZupbQIhAM1n2BIxxG7GohUYHPn0BZQ+PjaDObwm//YBzCJO/i3A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157059},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.9.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/2386309f37a8f53fed8995eda6a6c692/gram-ai-functions-0.9.0.tgz","_integrity":"sha512-as80YfT+VmXZNLx9CLO6g5uhZVePUAQZApqg7TcBaiIubamxvtN2OV82bgWcp2xjqChSPWz4wmcW35DikrX5ug==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.9.0_1763057046979_0.1983563080180455","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@gram-ai/functions","version":"0.9.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.9.1","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"a00d1b58878c455b91d9d8a3d1162c045de8bb50","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.9.1.tgz","fileCount":58,"integrity":"sha512-dmtIrjYdLElkk6A8Ec1Hp5NTD0cJIM+A99nRd8408bxazQ+lRsoOzFiuWw8GWIj1UU7NIUWXORdCOCf9LQmGaA==","signatures":[{"sig":"MEQCIAVlJah73J1gP+RbbncfyqMVupNi+4jBffpSa0KPgouIAiASHvciOE07sbTtAfL+3j28xG0yyr8y7DXR2Odue+M1Jw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159202},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.9.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/10200a816ddd4e83c87807e317ef72b1/gram-ai-functions-0.9.1.tgz","_integrity":"sha512-dmtIrjYdLElkk6A8Ec1Hp5NTD0cJIM+A99nRd8408bxazQ+lRsoOzFiuWw8GWIj1UU7NIUWXORdCOCf9LQmGaA==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.9.1_1763387613519_0.041935166675353575","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@gram-ai/functions","version":"0.9.2","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.9.2","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"b4bd49a3303677146fd3a624a26d78d3736ffb19","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.9.2.tgz","fileCount":58,"integrity":"sha512-v1tSZolrfgRtz5rlBOJ6CFP4bsEb28Ok0tVA2pO6dpO98y8mP2i7aaWfQ01UNfFbrDK0+6tSvby/hB239EHxzw==","signatures":[{"sig":"MEUCIErYuhJu0hM8xMl64/QG10mTP3olashFxpbe8lwzC35FAiEAyPP9PeA5uIQWW0L+q2Q3Y1nb/9i01/Vcm6S6jjq3uUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":160777},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.9.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/3b9560f6001834877c4d65c7dcaefa94/gram-ai-functions-0.9.2.tgz","_integrity":"sha512-v1tSZolrfgRtz5rlBOJ6CFP4bsEb28Ok0tVA2pO6dpO98y8mP2i7aaWfQ01UNfFbrDK0+6tSvby/hB239EHxzw==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.9.2_1763415267555_0.28603712933193615","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@gram-ai/functions","version":"0.10.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.10.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"4fa03fef2ec330c61e7cb7de7a747f8901cb8f4b","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.10.0.tgz","fileCount":58,"integrity":"sha512-jOd2dUlzqPhhqIUew+VF3LrpjqQL1646Umi1ewc6II9C0qmBQ0wd/M44vr5XBSZqL5thhGBmmOEnch6ikNrndQ==","signatures":[{"sig":"MEUCIQDB/XMwbDJimdj/I95R9CfRfSzWmvq6zKxvunMCqrMPPQIgJom5heYLka7cjfUZ3r0e/ZsZFfvElZtphhzsXrNfWdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":188952},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.10.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/459de9aebcee4deaf4caf9757cc3581d/gram-ai-functions-0.10.0.tgz","_integrity":"sha512-jOd2dUlzqPhhqIUew+VF3LrpjqQL1646Umi1ewc6II9C0qmBQ0wd/M44vr5XBSZqL5thhGBmmOEnch6ikNrndQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.10.0_1763569223827_0.005694658862025026","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@gram-ai/functions","version":"0.11.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.11.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"4e404516630aee2ed47cd108440bad0c9e7319d0","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.11.0.tgz","fileCount":58,"integrity":"sha512-sk2tr3lTmunX9UQXl8jTwvN1RNlvYib0CJLGpT/GiX5GRq1+/YiU4Km/QJkoWhjB2Xt41oozTjcXTSWILPU2GQ==","signatures":[{"sig":"MEUCIQCnyxvUqsIk9kEVi6O8LgNiyNng3UYX0F+mUvHXkxPPbwIgGZ8rfrfVzrSW0AWzE7SB9Ho+Vk4Mfe182hN28bumafw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":189396},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.11.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/0131f72e7a193e876684e43613c8bea5/gram-ai-functions-0.11.0.tgz","_integrity":"sha512-sk2tr3lTmunX9UQXl8jTwvN1RNlvYib0CJLGpT/GiX5GRq1+/YiU4Km/QJkoWhjB2Xt41oozTjcXTSWILPU2GQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.11.0_1763676938117_0.9800064691574315","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@gram-ai/functions","version":"0.11.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.11.1","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"e32c121c14a24a6b293f724e246ec1428e357e8e","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.11.1.tgz","fileCount":58,"integrity":"sha512-3LMZANIEiTfUN7O2gDUeb6s3HEvYNJ7xMrDq8uXbeeXk6tUxpU1nGWahSpK0w5mHcthJhubYLrslRpN71CwNAg==","signatures":[{"sig":"MEUCIQCd/4GxBR9JFPm0vCZIn3GQiUGoYMmYwUhIbg71SaXT8AIgGutcaCry8wabrZ/PddYgk0XnziIzLp0llX56IjwCNbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":191651},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.11.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/b32183cc8e7c3e1cb323a1085dee2384/gram-ai-functions-0.11.1.tgz","_integrity":"sha512-3LMZANIEiTfUN7O2gDUeb6s3HEvYNJ7xMrDq8uXbeeXk6tUxpU1nGWahSpK0w5mHcthJhubYLrslRpN71CwNAg==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.4-lite","zod":"^4","esbuild":"^0.25.10","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.1.1","@logtape/logtape":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.11.1_1763756521652_0.2680730423481652","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"@gram-ai/functions","version":"0.11.2","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.11.2","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"9879c984ca5a47b1d7ea7db12b34199ac8292d66","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.11.2.tgz","fileCount":58,"integrity":"sha512-vUeNnLNfoqhVhkX4qpWwg1HGuDUHvbtnIP3QZnxlpQM8aIo/pdzc+IsZ+F3CdUjLHVS76g1pz96dQHlK3BWq3w==","signatures":[{"sig":"MEUCIQCGgGA/RzPQ7DFrRXi5F7VPvlLJcb8v04RLWbeyZ1F95QIgTdb/BYoAW3oeIN9uG52loBphg+etG82HoseL5k1nwSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":191651},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.11.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/a487a9eac3fd7c2eb1e6cdbff7e0903e/gram-ai-functions-0.11.2.tgz","_integrity":"sha512-vUeNnLNfoqhVhkX4qpWwg1HGuDUHvbtnIP3QZnxlpQM8aIo/pdzc+IsZ+F3CdUjLHVS76g1pz96dQHlK3BWq3w==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.11.2_1764608493520_0.8475415914219415","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@gram-ai/functions","version":"0.12.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.12.0","maintainers":[{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"8d132e1766f9b79858a3c094b0c9e9198403780d","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.12.0.tgz","fileCount":58,"integrity":"sha512-Tz9VLBheVtEp73A7li2WRI2UTLzyNzjsqraUqi+o6G7siHg13fxU9sCK96Y5viGrWYWlndb26sCs+T5omNueqQ==","signatures":[{"sig":"MEQCIAr+Ds1907QbUiYCzedTW9kIForO9cePMMkm0rDD7vVUAiBNWxeZl6dsKFyko6SRmV1wjkQtFTldfo9zWG17N+Ntqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":195568},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.12.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/9e19c01c583fee231e14674cf2a854ca/gram-ai-functions-0.12.0.tgz","_integrity":"sha512-Tz9VLBheVtEp73A7li2WRI2UTLzyNzjsqraUqi+o6G7siHg13fxU9sCK96Y5viGrWYWlndb26sCs+T5omNueqQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.12.0_1764704174283_0.09466404712725107","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@gram-ai/functions","version":"0.12.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.12.1","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"39a7ee9183768cd8eaeef4b5d3917a9f33a7b34c","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.12.1.tgz","fileCount":58,"integrity":"sha512-5jkFHPzYfJK2u5NVjFXfqaF8j/ue4MjNqCRfK9k5WxweAK6hGuiDxmkCHpsAyMLIpyqVjYmWy0y+rkq06S1ffQ==","signatures":[{"sig":"MEUCIHcB9S4SwQeO367N78X84BN+uTR0Uk9SC17F72SI4PhkAiEAzS81P8bhQoopiKEy5ggJDxFczED37sZNShhMA4LU4Qo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":195568},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.12.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/9d8e609c8318bbe1caffb62e2733dd19/gram-ai-functions-0.12.1.tgz","_integrity":"sha512-5jkFHPzYfJK2u5NVjFXfqaF8j/ue4MjNqCRfK9k5WxweAK6hGuiDxmkCHpsAyMLIpyqVjYmWy0y+rkq06S1ffQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.12.1_1767697415355_0.03451583590791629","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@gram-ai/functions","version":"0.12.2","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.12.2","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"f926d5298741db9d9abfc4992590bd026b14ed55","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.12.2.tgz","fileCount":58,"integrity":"sha512-fSU4iCxL0FvapRiG7nspu5UZRZXhATgwNIeAw+cY1T+h8Axd9SDNJKocQ4JN4ZRHcRHjs9AJymEq+nnIAS1j3w==","signatures":[{"sig":"MEQCIAafTIwBhb5Zy1VwBDtjm11BFg4C4mKYNjIMZ7yOWZ+FAiAU5/mFjq/yTHoYdG63KZYGstIFdwnbG76v9zLldmLAZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.12.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":195568},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.12.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/fae795f0589b4e27e7fe3004a2703f7d/gram-ai-functions-0.12.2.tgz","_integrity":"sha512-fSU4iCxL0FvapRiG7nspu5UZRZXhATgwNIeAw+cY1T+h8Axd9SDNJKocQ4JN4ZRHcRHjs9AJymEq+nnIAS1j3w==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.12.2_1769469037001_0.8698505436915847","host":"s3://npm-registry-packages-npm-production"}},"0.12.3":{"name":"@gram-ai/functions","version":"0.12.3","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.12.3","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"faf5cec1bca291a1b747d1e4ae72b09333aa1151","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.12.3.tgz","fileCount":58,"integrity":"sha512-le8x6NFQRjd2JBpVsLxeilbhWZFROTyXJGoEvOtR8dWzRRcN2cGYjUqScFFjnY0jBV9gbWjZycjFbND0x4y5vQ==","signatures":[{"sig":"MEUCIQDZDyyrdpqSN/NLEKgyarh46ORMuCW5jOjZKrOoRTfwigIgELQGYOLskMXL79SeQuxSBgMHJE6RRBPxwDsZ5zSmx5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.12.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":195738},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.12.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/84544b35e949b604445809740b57ba01/gram-ai-functions-0.12.3.tgz","_integrity":"sha512-le8x6NFQRjd2JBpVsLxeilbhWZFROTyXJGoEvOtR8dWzRRcN2cGYjUqScFFjnY0jBV9gbWjZycjFbND0x4y5vQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.12.3_1769473887753_0.6738228628634457","host":"s3://npm-registry-packages-npm-production"}},"0.12.4":{"name":"@gram-ai/functions","version":"0.12.4","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.12.4","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"7108c3d5f271addc60629a6dfc8413b26579ae6e","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.12.4.tgz","fileCount":58,"integrity":"sha512-g/6ZnPS5zCnQ2UjsE9SY6Dfmpq5oxGsaOMKc9Y5ZWqP0n8uriHtdzi5+PfmGye0IiCuDbtWzJAuc1gnhxWDaOA==","signatures":[{"sig":"MEUCIEg+oHUz2gblzz8g6plIJVSMW898Cu7G9H9xk6kPX/D3AiEAraBaJRWjqhGfqp4arw4/Oaed8rZh+XVAg8kAnD9zruw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.12.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":199394},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.12.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/31e73d514106cbd6d2c9d31979fe30a2/gram-ai-functions-0.12.4.tgz","_integrity":"sha512-g/6ZnPS5zCnQ2UjsE9SY6Dfmpq5oxGsaOMKc9Y5ZWqP0n8uriHtdzi5+PfmGye0IiCuDbtWzJAuc1gnhxWDaOA==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.6.1","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.20.1"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.12.4_1771288282372_0.28966380933643476","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@gram-ai/functions","version":"0.13.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.13.0","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"9c7c21b631cb5bbbd4dcabc4199c120d59c8390e","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.13.0.tgz","fileCount":58,"integrity":"sha512-nBLg+1hbI426JQPGJH4fbsJJ1WcwQUFNPdIw5LSXqyGkPF4Y0VECnlfnJpB+N6QietXmabz8UuLRfxYIrjnz2Q==","signatures":[{"sig":"MEUCIEQLp6RJjMmDDvtZqXeZEnZeGQkPNWkpMdl3Nnjw3An4AiEAs4QD5r0FiMGFPWMfWOkXapegnrxWyA6GSqAFpkekfqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":201395},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.13.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/cab507613be6ad3c8f208b4f2f44dbc4/gram-ai-functions-0.13.0.tgz","_integrity":"sha512-nBLg+1hbI426JQPGJH4fbsJJ1WcwQUFNPdIw5LSXqyGkPF4Y0VECnlfnJpB+N6QietXmabz8UuLRfxYIrjnz2Q==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.8.0","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.27.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.13.0_1772653022348_0.38578940275961204","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"@gram-ai/functions","version":"0.13.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.13.1","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"c2c1f7def21c28ac1af43edc8f99f05c61cb51db","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.13.1.tgz","fileCount":63,"integrity":"sha512-GdM5hHqW3iCQdJZ2kCv347RK/ZmePawTncg+k9XXwLORjW8qk/xH4yuUYUJZD3nTKrl9QSGJEKqUNyyL4NwRAw==","signatures":[{"sig":"MEUCIQCXfOM7P6wJDYUhk+44w8PUJd16AeYgv1XcOWUc6wPDGAIgVJDT+CUP+YRzJ3b+7MqScoeFAKxZEFZQQFqHNl7/ovM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":222788},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.13.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/1ca211c1d752ee2f3b34946a7a351dc7/gram-ai-functions-0.13.1.tgz","_integrity":"sha512-GdM5hHqW3iCQdJZ2kCv347RK/ZmePawTncg+k9XXwLORjW8qk/xH4yuUYUJZD3nTKrl9QSGJEKqUNyyL4NwRAw==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.8.0","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.27.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.13.1_1773447206142_0.37099455238213164","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@gram-ai/functions","version":"0.14.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.14.0","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"244dea99dc0553447779860517e3e5e35fe815f0","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.14.0.tgz","fileCount":63,"integrity":"sha512-DoLbTeyDqfSm9C3QcUeuNq3O2gGq4LJKRR+AMMepH8k2AeLoa7Zmhv7zIfNx07Ba6nwlP7PjB0Qu0OLoNwZ6Zg==","signatures":[{"sig":"MEUCIFlpCVPAorNeaPsir/SFM0nlU7VZm90ykBNjld7FSKreAiEA1GVNkDwEGueHO8K5kHepYvQIQWS+hDLCXktdE/tTaSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":257304},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.14.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/110388503f0e63848ec35d5d5b6be7a9/gram-ai-functions-0.14.0.tgz","_integrity":"sha512-DoLbTeyDqfSm9C3QcUeuNq3O2gGq4LJKRR+AMMepH8k2AeLoa7Zmhv7zIfNx07Ba6nwlP7PjB0Qu0OLoNwZ6Zg==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.8.0","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.27.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.14.0_1775247424740_0.6258050714687351","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"@gram-ai/functions","version":"0.14.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.14.1","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"src/bin/cli.ts"},"dist":{"shasum":"5a7d622e211a2b2d086f787266e6e2dfcf90c985","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.14.1.tgz","fileCount":63,"integrity":"sha512-WBwTEq/AJuv19WpkJJ5m2MMENLfnt7nqtWszsxiNvcCc+r6e1x9+wbOhzlc0Vdz9k0X0G9TemuOm2OdE2bRfMQ==","signatures":[{"sig":"MEYCIQC5LMSQdkI/3LiYqchdrKQ3/iRB+M/3Y/WsJJySpFKH+AIhAOxuTnyShPZXCaC/BO5Fs7KiBICqroTW1fAY6MDIvtdQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":257303},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.14.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/faa7866c8fb537b20ba6f821a6c8ae54/gram-ai-functions-0.14.1.tgz","_integrity":"sha512-WBwTEq/AJuv19WpkJJ5m2MMENLfnt7nqtWszsxiNvcCc+r6e1x9+wbOhzlc0Vdz9k0X0G9TemuOm2OdE2bRfMQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.8.0","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.27.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.14.1_1776616602749_0.7257431754504198","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@gram-ai/functions","version":"0.15.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.15.0","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"src/bin/cli.ts"},"dist":{"shasum":"eed3881dc59a024fd45436d9a099bd0305817d9f","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.15.0.tgz","fileCount":63,"integrity":"sha512-HQQObRrHPPj5+bWpt6O4m55+GKFF7BAbns7RPM8Uiz5FVPJW6W0ybxU+Xs6hBS8nE17zA3EtN0q1xj2L337rTw==","signatures":[{"sig":"MEQCIBPdyjAOENcyEIBlgvb95rJfMRdoxsB3E9Jhy87ejTwOAiBf9B1OLjlCtTfe8qDBk2ZlFPLZL9jo0vnxseRyvN+iEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":258949},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.15.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/b6af2baa4ae0612b2820238d61224d06/gram-ai-functions-0.15.0.tgz","_integrity":"sha512-HQQObRrHPPj5+bWpt6O4m55+GKFF7BAbns7RPM8Uiz5FVPJW6W0ybxU+Xs6hBS8nE17zA3EtN0q1xj2L337rTw==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.8.0","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.27.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.15.0_1777287558919_0.4269061120576767","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@gram-ai/functions","version":"0.15.1","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.15.1","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"daa1a3f531841ad57ef927b41ae92d2f170e1ef1","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.15.1.tgz","fileCount":63,"integrity":"sha512-UmnPBkgYfZgk/wYZjx3nKTyMGUfxx40K5vY6JRLDcpRlk3gUTlSxqld6r+UzSN2wVYr9u3gZ+FB0OL7uEtgnjg==","signatures":[{"sig":"MEYCIQD+wQYLZfsIku2FgHsk7vXFszm1w60LtuBSHKP9C/7U0gIhAM3dx129Gn64PfwfB98x2117qAWrWZy13du7suJ2VRp3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":258950},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.15.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/b2ac74ef7e3d103a074b4bc587c1b6a8/gram-ai-functions-0.15.1.tgz","_integrity":"sha512-UmnPBkgYfZgk/wYZjx3nKTyMGUfxx40K5vY6JRLDcpRlk3gUTlSxqld6r+UzSN2wVYr9u3gZ+FB0OL7uEtgnjg==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.8.0","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.27.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.15.1_1777289484162_0.5711242959395046","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@gram-ai/functions","version":"0.16.0","keywords":[],"author":{"name":"Georges Haidar","email":"georges@speakeasyapi.dev"},"license":"MIT","_id":"@gram-ai/functions@0.16.0","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bugs":{"url":"https://github.com/speakeasy-api/gram/issues"},"bin":{"gf":"dist/bin/cli.js"},"dist":{"shasum":"0158afb9ddcf40ac057d155f86bb1ffc2cc81229","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.16.0.tgz","fileCount":63,"integrity":"sha512-fkshv6yPXK+PeeIOEHBHGYmzsSiCXgkoGF9oISfbisX1uTWwIVIcasdgy3x2cJqf2OLN2BUOXSbEwX5uBE84tQ==","signatures":[{"sig":"MEQCIC3pSVjTrItrYRumuSxt1GKp47JF3tBw2x3eoI7PCtt4AiBp9pAUjh2jzaYdbj+HWsy5IQwRoQHYVHFliZSDazZzvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":265614},"main":"dist/index.js","type":"module","_from":"file:gram-ai-functions-0.16.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"_resolved":"/tmp/0a6b942bceb282501d47602542194e33/gram-ai-functions-0.16.0.tgz","_integrity":"sha512-fkshv6yPXK+PeeIOEHBHGYmzsSiCXgkoGF9oISfbisX1uTWwIVIcasdgy3x2cJqf2OLN2BUOXSbEwX5uBE84tQ==","repository":{"url":"git+https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"_npmVersion":"11.8.0","description":"Gram Functions are small pieces of code that represent LLM tools. They are deployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP servers.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.27.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.16.0_1779905622431_0.2766033839113382","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"@gram-ai/functions","version":"0.16.1","keywords":[],"author":"Georges Haidar <georges@speakeasyapi.dev>","license":"MIT","_id":"@gram-ai/functions@0.16.1","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bin":{"gf":"./dist/bin/cli.js"},"dist":{"shasum":"e729ee6b1dd42cf648a3be3e36a8ceb88ce65a65","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.16.1.tgz","fileCount":63,"integrity":"sha512-jng/pU8enZnowAVVPmcgx14+t2fISV131/ifpseIRVtpUwr0mFtDqSWzeH0uYARweVS0AIRkIjTJYgclXXqQ8A==","signatures":[{"sig":"MEYCIQDmida1hZaxAGzZbeIM3tKCsHIXCKFOSvz1Fetj7jIvZwIhAO3qU1yEmJLqaLGaPU/2M8PC0Eo2x+6HtkFzDBBhzjqq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":265614},"main":"dist/index.js","type":"module","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"repository":{"url":"https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"description":"","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.27.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.16.1_1780072588627_0.10483299292262971","host":"s3://npm-registry-packages-npm-production"}},"0.16.2":{"name":"@gram-ai/functions","version":"0.16.2","keywords":[],"author":"Georges Haidar <georges@speakeasyapi.dev>","license":"MIT","_id":"@gram-ai/functions@0.16.2","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bin":{"gf":"./dist/bin/cli.js"},"dist":{"shasum":"fe625f7e634edfcc13adbddadf93798db1d266c6","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.16.2.tgz","fileCount":63,"integrity":"sha512-7hxVbDQnzjWESY2VrHFU+cdL/gsSuAD47qxFew3XF1IEG7ndS7MsBuz6fY9kHtPtwdZqkNki9HqutKxuZhhquA==","signatures":[{"sig":"MEYCIQDa2jx+NCMcixlyF45iKYiVRzJcsHujYX6+gaurOUlQIwIhAM01HYCO1rWQbEZ9NqViyzysSjgnOBgDtnO14hxLBs6U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.16.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":278688},"main":"dist/index.js","type":"module","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"repository":{"url":"https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"description":"","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.0","archiver":"^7.0.1","@stricli/core":"^1.2.4","@clack/prompts":"^0.11.0","@logtape/pretty":"^1.2.0","@logtape/logtape":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.13","@types/archiver":"^6.0.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.27.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.16.2_1781599576075_0.4539402653326885","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@gram-ai/functions","version":"0.17.0","keywords":[],"author":"Georges Haidar <georges@speakeasyapi.dev>","license":"MIT","_id":"@gram-ai/functions@0.17.0","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bin":{"gf":"./dist/bin/cli.js"},"dist":{"shasum":"36dd851ffd92f4b089673e0ba06f9f0468715fa5","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.17.0.tgz","fileCount":63,"integrity":"sha512-DQGG7l8InxhxK40V/H7w5Yl3qwi6psPNwOlF7GKub8h8eyG8Z6H+PkSBpnI26MCr0DRe+O9BeRHX1JiDKoQ7Ig==","signatures":[{"sig":"MEUCIQCpzwm0D90taeExWRmgWxma/ph+nFysGhtVcQb5Su3PLwIgfFtEBd7xglRgIFuDCDxp3OZIXF6lsY1Zh55G+XIbtcg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":291191},"main":"dist/index.js","type":"module","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"repository":{"url":"https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"description":"","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.7","archiver":"^7.0.1","@stricli/core":"^1.2.8","@clack/prompts":"^0.11.0","@logtape/pretty":"^2.2.4","@logtape/logtape":"^2.2.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/archiver":"^6.0.4"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.17.0_1784321028493_0.14743463164753856","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"@gram-ai/functions","version":"0.17.1","keywords":[],"author":"Georges Haidar <georges@speakeasyapi.dev>","license":"MIT","_id":"@gram-ai/functions@0.17.1","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bin":{"gf":"./dist/bin/cli.js"},"dist":{"shasum":"390e00f1fc950985a70e1d1560aff8e2e0076069","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.17.1.tgz","fileCount":68,"integrity":"sha512-iSsjceWTJMV+XATUf+JZ2YSCx7XxKOHV2YU5KKSMGkSen0AW3NSRdkVXyniAAQJxjCYyE5gQgsoJnGL0c+DEFg==","signatures":[{"sig":"MEYCIQCuKua20AL215I5jMeyXE6qwkBZeCdfQHDk3yxnoziT7gIhAM0tyI0xmn8MbXjhUVZmxFXRQB/7P8Bz+GfEVQa3vkdQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":296979},"main":"dist/index.js","type":"module","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"repository":{"url":"https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"description":"","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.7","archiver":"^8.0.0","@stricli/core":"^1.2.9","@clack/prompts":"^1.7.0","@logtape/pretty":"^2.2.4","@logtape/logtape":"^2.2.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/archiver":"^8.0.0"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.17.1_1784818897194_0.5640673035550436","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@gram-ai/functions","version":"0.18.0","keywords":[],"author":"Georges Haidar <georges@speakeasyapi.dev>","license":"MIT","_id":"@gram-ai/functions@0.18.0","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bin":{"gf":"./dist/bin/cli.js"},"dist":{"shasum":"103b8a33c219359f0e528d2e0fe3be085fc53d41","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.18.0.tgz","fileCount":68,"integrity":"sha512-udhjPjb3CTxJKdpXJsbtiuHLgcXMGbsi2bvw3EloTaAMcP+wg2h/s5+6WUeAyUzgME8VYviPSp97ORSn05ThYg==","signatures":[{"sig":"MEUCIQCgvprWFNPRwySuQOUjWOoYpcy4dsxPXU9nSlDGFYHqmwIgAlIUBJbhmoNVtUgVusgteBYmri/tWMPOM8lAyg0Xa/Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":311587},"main":"dist/index.js","type":"module","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"repository":{"url":"https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"description":"","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.7","archiver":"^8.0.0","@stricli/core":"^1.2.9","@clack/prompts":"^1.7.0","@logtape/pretty":"^2.2.4","@logtape/logtape":"^2.2.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/archiver":"^8.0.0"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.29.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.18.0_1785470402243_0.900818834913589","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"@gram-ai/functions","version":"0.18.1","keywords":[],"author":"Georges Haidar <georges@speakeasyapi.dev>","license":"MIT","_id":"@gram-ai/functions@0.18.1","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bin":{"gf":"./dist/bin/cli.js"},"dist":{"shasum":"d6d0a555a099801ee08b507127ed32ef57e78bd8","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.18.1.tgz","fileCount":68,"integrity":"sha512-eO0jGvanQRKpDrJeC+ltIz+fRHEJ6Kp0J94tMnu0U6trrUxCaxBbKpTDJWZ4ajLLLyH6HhzI137h8CA22A9C1w==","signatures":[{"sig":"MEUCIByjqxK8PaJjmIahLdbn/8DBQX7mlWlZrJ7QNTZ9w3EYAiEA6sS8g2txssKklDeYIIa+IZMYgo/qh1yRYeWdXpvdCmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":311587},"main":"dist/index.js","type":"module","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"repository":{"url":"https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"description":"","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.27.7","archiver":"^8.0.0","@stricli/core":"^1.3.0","@clack/prompts":"^1.7.0","@logtape/pretty":"^2.3.0","@logtape/logtape":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/archiver":"^8.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.18.1_1787157442761_0.37708355439803776","host":"s3://npm-registry-packages-npm-production"}},"0.18.2":{"name":"@gram-ai/functions","version":"0.18.2","keywords":[],"author":"Georges Haidar <georges@speakeasyapi.dev>","license":"MIT","_id":"@gram-ai/functions@0.18.2","maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"homepage":"https://github.com/speakeasy-api/gram","bin":{"gf":"./dist/bin/cli.js"},"dist":{"shasum":"0af443976beae01768b615391765e3735f7692ab","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.18.2.tgz","fileCount":68,"integrity":"sha512-EocpvfVb94VfLD3SDD/8YK7MqxjgsEEZ9RWi+t5+L4YVQWRJxrI28DHNN4H4eYuVgz6dwYDUSt72zJLajE9QgA==","signatures":[{"sig":"MEUCIQD+rf4PkWn4R/VIpTC9/6V1IK+mG8TXswF0Qy2G8XuQrwIgZSgiwyvGlWskXxuDFvtgc+RsuJGZ9stQcvTp2ZpJEi0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.18.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":315474},"main":"dist/index.js","type":"module","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"repository":{"url":"https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"description":"","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.28.1","archiver":"^8.0.0","@stricli/core":"^1.3.0","@clack/prompts":"^1.7.0","@logtape/pretty":"^2.3.2","@logtape/logtape":"^2.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/archiver":"^8.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/functions_0.18.2_1789001880788_0.1334045107712123","host":"s3://npm-registry-packages-npm-production"}},"0.18.3":{"_id":"@gram-ai/functions@0.18.3","bin":{"gf":"./dist/bin/cli.js"},"dist":{"shasum":"d01ac451f939d9ea2d3b23998b586d62888ceecc","tarball":"https://registry.npmjs.org/@gram-ai/functions/-/functions-0.18.3.tgz","fileCount":68,"integrity":"sha512-ZLHEGSgBkqa0TPzh7/QeDPiDrxrNTVFQLvkBvpJZ9ONbBfV063V/c6FnuBvX60EGpu3n61O0yFPpCC1qIaS0Lg==","signatures":[{"sig":"MEQCICkesymRDHcY4qJTOJYEjlibmWJpQNwt/W8svDZdBup4AiA+IhPAcU/N5TyNIpDIzOhjtQ2vgJJlIlrv/vuOtq6MQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCg8im/TIKrrW/vjqKxry2ZP4Dw07wZBm2EaCZf0puxYwIhALhXGOQAg7TPwqYSCLlvyhpSiFdxax4wtQ9NR9ebNMEP"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gram-ai%2ffunctions@0.18.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":329963},"main":"dist/index.js","name":"@gram-ai/functions","type":"module","author":"Georges Haidar <georges@speakeasyapi.dev>","engines":{"node":">=22.18.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js"},"./build":{"types":"./dist/build/index.d.ts","import":"./dist/build/index.js"}},"license":"MIT","scripts":{"test":"vitest run","build":"tsc -p tsconfig.json"},"version":"0.18.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7a348e4a-f827-4889-839e-3e179383933d"}},"homepage":"https://github.com/speakeasy-api/gram","keywords":[],"repository":{"url":"https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"description":"","directories":{},"maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"_nodeVersion":"26.0.0","dependencies":{"zx":"8.8.5-lite","zod":"^4","esbuild":"^0.28.1","archiver":"^8.0.0","@stricli/core":"^1.3.0","@clack/prompts":"^1.7.0","@logtape/pretty":"^2.3.4","@logtape/logtape":"^2.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","typescript":"7.0.2","@types/archiver":"^8.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.30.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/functions_0.18.3_1790207704394_0.0541104769166183"}}},"time":{"created":"2025-10-17T20:54:26.959Z","modified":"2026-09-23T23:55:04.824Z","0.0.0-empty":"2025-10-17T20:54:27.207Z","0.1.0":"2025-10-17T22:03:23.721Z","0.2.0":"2025-10-19T09:22:40.599Z","0.2.1":"2025-10-20T17:19:38.878Z","0.3.0":"2025-10-23T22:21:49.889Z","0.3.1":"2025-10-24T11:39:39.643Z","0.3.2":"2025-10-24T13:39:46.062Z","0.4.0":"2025-10-27T18:20:56.939Z","0.5.0":"2025-10-27T20:40:44.231Z","0.5.1":"2025-10-29T14:26:14.539Z","0.5.2":"2025-10-29T16:35:06.102Z","0.5.3":"2025-10-29T16:57:44.287Z","0.6.0":"2025-10-30T16:34:50.052Z","0.6.1":"2025-10-30T17:10:19.731Z","0.6.2":"2025-10-31T00:35:46.291Z","0.7.0":"2025-10-31T18:17:20.561Z","0.8.0":"2025-11-03T16:28:25.090Z","0.8.1":"2025-11-03T17:48:15.358Z","0.9.0":"2025-11-13T18:04:07.179Z","0.9.1":"2025-11-17T13:53:33.714Z","0.9.2":"2025-11-17T21:34:27.745Z","0.10.0":"2025-11-19T16:20:24.041Z","0.11.0":"2025-11-20T22:15:38.312Z","0.11.1":"2025-11-21T20:22:01.831Z","0.11.2":"2025-12-01T17:01:33.725Z","0.12.0":"2025-12-02T19:36:14.476Z","0.12.1":"2026-01-06T11:03:35.496Z","0.12.2":"2026-01-26T23:10:37.213Z","0.12.3":"2026-01-27T00:31:27.906Z","0.12.4":"2026-02-17T00:31:22.551Z","0.13.0":"2026-03-04T19:37:02.566Z","0.13.1":"2026-03-14T00:13:26.358Z","0.14.0":"2026-04-03T20:17:04.937Z","0.14.1":"2026-04-19T16:36:42.886Z","0.15.0":"2026-04-27T10:59:19.056Z","0.15.1":"2026-04-27T11:31:24.331Z","0.16.0":"2026-05-27T18:13:42.589Z","0.16.1":"2026-05-29T16:36:28.766Z","0.16.2":"2026-06-16T08:46:16.219Z","0.17.0":"2026-07-17T20:43:48.642Z","0.17.1":"2026-07-23T15:01:37.374Z","0.18.0":"2026-07-31T04:00:02.409Z","0.18.1":"2026-08-19T16:37:22.915Z","0.18.2":"2026-09-10T00:58:00.926Z","0.18.3":"2026-09-23T23:55:04.476Z"},"author":"Georges Haidar <georges@speakeasyapi.dev>","license":"MIT","homepage":"https://github.com/speakeasy-api/gram","keywords":[],"repository":{"url":"https://github.com/speakeasy-api/gram.git","type":"git","directory":"ts-framework/functions"},"maintainers":[{"name":"speakeasy-quinn","email":"quinn@speakeasy.com"},{"name":"adam-speakeasy","email":"adam@speakeasy.com"},{"name":"ghaidar-speakeasy","email":"georges@speakeasyapi.dev"},{"name":"simplesagar","email":"sagar@speakeasyapi.dev"},{"name":"thomasrooneyspeakeasy","email":"thomas@speakeasyapi.dev"},{"name":"speakeasyapi","email":"ryan@speakeasy.com"}],"readme":"# Gram Functions for TypeScript\n\nGram Functions are small pieces of code that represent LLM tools. They are\ndeployed to [Gram](https://getgram.ai) and are then exposed to LLMs via MCP\nservers.\n\nThis library provides a small framework for authoring Gram Functions in\nTypeScript. The \"Hello, World!\" example is:\n\n```typescript\nimport { Gram } from \"@gram-ai/functions\";\nimport * as z from \"zod/mini\";\n\nconst gram = new Gram().tool({\n  name: \"greet\",\n  description: \"Greet someone special\",\n  inputSchema: { name: z.string() },\n  async execute(ctx, input) {\n    return ctx.json({ message: `Hello, ${input.name}!` });\n  },\n});\n\nexport default gram;\n```\n\n## Quickstart\n\nYou can use one of the following command to scaffold a new Gram Function project quickly:\n\n```\npnpm create @gram-ai/function@latest --template gram\n\n## Or one of the following:\n# bun create @gram-ai/function@latest --template gram\n# npm create @gram-ai/function@latest -- --template gram\n```\n\n## Installation\n\nUse one of the following commands to add the package to your project:\n\n```\npnpm add @gram-ai/functions\n\n## Or one of the following:\n# bun add @gram-ai/functions\n# npm add @gram-ai/functions\n```\n\n## Core Concepts\n\n### The Gram Instance\n\nThe `Gram` class is the main entry point for defining tools. You create an instance and chain `.tool()` calls to register multiple tools:\n\n```typescript\nimport { Gram } from \"@gram-ai/functions\";\nimport * as z from \"zod/mini\";\n\nconst gram = new Gram()\n  .tool({\n    name: \"add\",\n    description: \"Add two numbers\",\n    inputSchema: { a: z.number(), b: z.number() },\n    async execute(ctx, input) {\n      return ctx.json({ sum: input.a + input.b });\n    },\n  })\n  .tool({\n    name: \"multiply\",\n    description: \"Multiply two numbers\",\n    inputSchema: { a: z.number(), b: z.number() },\n    async execute(ctx, input) {\n      return ctx.json({ product: input.a * input.b });\n    },\n  });\n\nexport default gram;\n```\n\n### Composing Gram Instances\n\nYou can compose multiple Gram instances together using the `extend()` method,\nsimilar to Hono's route groups pattern. This is useful for organizing tools by\ndomain or functionality:\n\n```typescript\nimport { Gram } from \"@gram-ai/functions\";\nimport * as z from \"zod/mini\";\n\n// Math tools\nconst mathTools = new Gram()\n  .tool({\n    name: \"add\",\n    description: \"Add two numbers\",\n    inputSchema: { a: z.number(), b: z.number() },\n    async execute(ctx, input) {\n      return ctx.json({ sum: input.a + input.b });\n    },\n  })\n  .tool({\n    name: \"multiply\",\n    description: \"Multiply two numbers\",\n    inputSchema: { a: z.number(), b: z.number() },\n    async execute(ctx, input) {\n      return ctx.json({ product: input.a * input.b });\n    },\n  });\n\n// String tools\nconst stringTools = new Gram().tool({\n  name: \"uppercase\",\n  description: \"Convert string to uppercase\",\n  inputSchema: { text: z.string() },\n  async execute(ctx, input) {\n    return ctx.text(input.text.toUpperCase());\n  },\n});\n\n// Combine both\nconst gram = mathTools.extend(stringTools);\n\nexport default gram;\n```\n\nThe `extend()` method:\n\n- **Merges tools**: All tools from both instances are combined\n- **Override behavior**: If tool names collide, the extended instance's tools\n  override the original's\n- **Preserves context**: Each tool maintains its original Gram instance's\n  execution context (environment variables and lax validation settings)\n- **Mutates original**: Modifies and returns the original instance (not a copy)\n\n### Tool Definition\n\nEach tool requires:\n\n- **name**: A unique identifier for the tool\n- **description** (optional): Human-readable description of what the tool does\n- **inputSchema**: A Zod schema object defining the expected input parameters\n- **execute**: An async function that implements the tool logic\n\n### Tool Context\n\nThe `execute` function receives a `ctx` (context) object with helper methods:\n\n#### `ctx.json(data)`\n\nReturns a JSON response:\n\n```typescript\nasync execute(ctx, input) {\n  return ctx.json({ result: \"success\", value: 42 });\n}\n```\n\n#### `ctx.text(data)`\n\nReturns a plain text response:\n\n```typescript\nasync execute(ctx, input) {\n  return ctx.text(\"Operation completed successfully\");\n}\n```\n\n#### `ctx.markdown(data)`\n\nReturns a markdown response:\n\n```typescript\nasync execute(ctx, input) {\n  return ctx.markdown(\"# Heading\");\n}\n```\n\n#### `ctx.html(data)`\n\nReturns an HTML response:\n\n```typescript\nasync execute(ctx, input) {\n  return ctx.html(\"<h1>Hello, World!</h1>\");\n}\n```\n\n#### `ctx.fail(data, options?)`\n\nThrows an error response (never returns):\n\n```typescript\nasync execute(ctx, input) {\n  if (!input.value) {\n    ctx.fail({ error: \"value is required\" }, { status: 400 });\n  }\n  // ...\n}\n```\n\n#### `ctx.signal`\n\nAn `AbortSignal` for handling cancellation:\n\n```typescript\nasync execute(ctx, input) {\n  const response = await fetch(input.url, { signal: ctx.signal });\n  return ctx.json(await response.json());\n}\n```\n\n#### `ctx.env`\n\nAccess to parsed environment variables defined by the `Gram` instance:\n\n```typescript\nconst gram = new Gram({\n  envSchema: {\n    BASE_URL: z.string().transform((url) => new URL(url)),\n  },\n}).tool({\n  name: \"api_call\",\n  inputSchema: { endpoint: z.string() },\n  async execute(ctx, input) {\n    const baseURL = ctx.env.BASE_URL;\n    // Use baseURL...\n  },\n});\n```\n\n## Input Validation\n\nInput schemas are defined using [Zod](https://zod.dev/):\n\n```typescript\nimport { Gram } from \"@gram-ai/functions\";\nimport * as z from \"zod/mini\";\n\nconst gram = new Gram().tool({\n  name: \"create_user\",\n  inputSchema: {\n    email: z.string().check(z.email()),\n    age: z.number().check(z.min(18)),\n    name: z.optional(z.string()),\n  },\n  async execute(ctx, input) {\n    // input is fully typed based on the schema\n    return ctx.json({ userId: \"123\" });\n  },\n});\n```\n\n### Lax Mode\n\nBy default, the framework strictly validates input. You can enable lax mode to allow unvalidated input to pass through:\n\n```typescript\nconst gram = new Gram({ lax: true });\n```\n\n## Environment Variables\n\n### Defining Variables\n\nEnvironment variables that are used by tools must be defined when instantiating\nthe `Gram` class. This is done using a Zod v4 object schema:\n\n```typescript\nimport { Gram } from \"@gram-ai/functions\";\nimport * as z from \"zod/mini\";\n\nconst gram = new Gram({\n  envSchema: {\n    API_KEY: z.string().describe(\"API key for external service\"),\n    BASE_URL: z.string().check(z.url()).describe(\"Base URL for API requests\"),\n  },\n});\n```\n\nWhenever a tool wants to access a new environment variable, a definition must be\nadded to the `envSchema` if one does not exist. When this Gram Function is\ndeployed, end users will then be able to provide values for these variables when\ninstalling the corresponding MCP servers.\n\n### Runtime Environment\n\nEnvironment variables are read from `process.env` by default, but you can\noverride them when creating the `Gram` instance. This can be useful for testing\nor local development. Example:\n\n```typescript\nimport { Gram } from \"@gram-ai/functions\";\nimport * as z from \"zod/mini\";\n\nconst gram = new Gram({\n  env: {\n    API_KEY: \"secret-key\",\n    BASE_URL: \"https://api.example.com\",\n  },\n  envSchema: {\n    API_KEY: z.string().describe(\"API key for external service\"),\n    BASE_URL: z.string().check(z.url()).describe(\"Base URL for API requests\"),\n  },\n});\n```\n\nIf not provided, the framework falls back to `process.env`.\n\n## Authentication & Identity\n\n### OAuth Tokens\n\nIf your function needs to access external APIs on behalf of the user, you can\ndeclare an OAuth variable in `authInput`. Gram will handle the OAuth flow and\ninject the acquired token into the specified environment variable:\n\n```typescript\nconst gram = new Gram({\n  envSchema: {\n    OAUTH_TOKEN: z.optional(z.string()),\n  },\n  authInput: {\n    oauthVariable: \"OAUTH_TOKEN\",\n  },\n});\n```\n\n### User Identity\n\nWhen an authenticated Gram user invokes a tool, you can opt in to receiving\ntheir email address by setting `gramEmail: true` in `authInput`. The email will\nbe available as the `GRAM_USER_EMAIL` environment variable:\n\n```typescript\nconst gram = new Gram({\n  envSchema: {\n    OAUTH_TOKEN: z.optional(z.string()),\n    GRAM_USER_EMAIL: z.optional(z.string()),\n  },\n  authInput: {\n    oauthVariable: \"OAUTH_TOKEN\",\n    gramEmail: true,\n  },\n}).tool({\n  name: \"whoami\",\n  description: \"Returns the current user's email\",\n  inputSchema: {},\n  async execute(ctx) {\n    const email = ctx.env.GRAM_USER_EMAIL;\n    if (!email) {\n      return ctx.json({ authenticated: false });\n    }\n    return ctx.json({ authenticated: true, email });\n  },\n});\n```\n\n`GRAM_USER_EMAIL` will be empty when the request is unauthenticated.\n\n## Response Types\n\nThe framework supports multiple response types. All response methods return Web API `Response` objects.\n\n### JSON Response\n\n```typescript\nreturn ctx.json({\n  status: \"success\",\n  data: { id: 123, name: \"Example\" },\n});\n```\n\n### Text Response\n\n```typescript\nreturn ctx.text(\"Plain text response\");\n```\n\n### HTML Response\n\n```typescript\nreturn ctx.html(`\n  <!DOCTYPE html>\n  <html>\n    <body><h1>Hello</h1></body>\n  </html>\n`);\n```\n\n### Custom Response\n\nYou can also return a plain `Response` object:\n\n```typescript\nreturn new Response(data, {\n  status: 200,\n  headers: {\n    \"Content-Type\": \"application/xml\",\n    \"X-Custom-Header\": \"value\",\n  },\n});\n```\n\n## Error Handling\n\n### Using `ctx.fail()`\n\nUse `ctx.fail()` to throw error responses:\n\n```typescript\nasync execute(ctx, input) {\n  if (!input.userId) {\n    ctx.fail(\n      { error: \"userId is required\" },\n      { status: 400 }\n    );\n  }\n\n  const user = await fetchUser(input.userId);\n  if (!user) {\n    ctx.fail(\n      { error: \"User not found\" },\n      { status: 404 }\n    );\n  }\n\n  return ctx.json({ user });\n}\n```\n\nThe response body is exactly the data you pass — no stack trace is added, since\na deployed function is a minified bundle whose frames mean nothing to the tool's\ncaller and cost an MCP client context on every turn that follows.\n\nA tool call that fails input validation is reported the same way: `error` names\neach offending input and what was wrong with it on one line, alongside the\nstructured `issues` from Zod.\n\n```json\n{\n  \"error\": \"org_id: Invalid input: expected string, received undefined\",\n  \"issues\": [\n    {\n      \"expected\": \"string\",\n      \"code\": \"invalid_type\",\n      \"path\": [\"org_id\"],\n      \"message\": \"Invalid input: expected string, received undefined\"\n    }\n  ]\n}\n```\n\n### Using `assert()`\n\nThe `assert` function provides a convenient way to validate conditions and throw error responses:\n\n```typescript\nimport { assert } from \"@gram-ai/functions\";\n\nasync execute(ctx, input) {\n  assert(input.userId, { error: \"userId is required\" }, { status: 400 });\n\n  const user = await fetchUser(input.userId);\n  assert(user, { error: \"User not found\" }, { status: 404 });\n\n  return ctx.json({ user });\n}\n```\n\nThe `assert` function throws a `Response` object when the condition is false. The framework catches all thrown values, and if any happen to be a `Response` instance, they will be returned to the client.\n\nKey points about `assert`:\n\n- First parameter is the condition to check\n- Second parameter is the error data (must include an `error` field)\n- Third parameter is optional and can specify the status code (defaults to 500)\n- Serializes only the data you pass; no stack trace is added\n- Uses TypeScript's assertion type to narrow types when the assertion passes\n\n## Manifest Generation\n\nGenerate a manifest of all registered tools:\n\n```typescript\nimport { Gram } from \"@gram-ai/functions\";\n\nconst gram = new Gram().tool({/* ... */}).tool({/* ... */});\n\nconst manifest = g.manifest();\n// {\n//   version: \"0.0.0\",\n//   tools: [\n//     {\n//       name: \"tool1\",\n//       description: \"...\",\n//       inputSchema: \"...\", // JSON Schema string\n//       variables: { ... }\n//     },\n//     ...\n//   ]\n// }\n```\n\n## Handling Tool Calls\n\nExporting the Gram instance from your module as the default export will allow\nGram to handle tool calls automatically when deployed:\n\n```typescript\nimport { Gram } from \"@gram-ai/functions\";\n\nconst gram = new Gram().tool({/* ... */}).tool({/* ... */});\n\nexport default gram;\n```\n\nYou can also call tools programmatically:\n\n```typescript\nconst response = await gram.handleToolCall({\n  name: \"add\",\n  input: { a: 5, b: 3 },\n});\n\nconst data = await response.json();\nconsole.log(data); // { sum: 8 }\n```\n\nWith abort signal support:\n\n```typescript\nconst signal = AbortSignal.timeout(5000);\n\nconst response = await gram.handleToolCall(\n  { name: \"longRunning\", input: {} },\n  { signal },\n);\n```\n\n## Type Safety\n\nThe framework provides full TypeScript type inference:\n\n```typescript\nimport { Gram } from \"@gram-ai/functions\";\nimport * as z from \"zod/mini\";\n\nconst gram = new Gram().tool({\n  name: \"greet\",\n  inputSchema: { name: z.string() },\n  async execute(ctx, input) {\n    // input.name is typed as string\n    return ctx.json({ message: `Hello, ${input.name}` });\n  },\n});\n\n// Type-safe tool calls\nconst response = await g.handleToolCall({\n  name: \"greet\", // Only \"greet\" is valid\n  input: { name: \"World\" }, // input is typed correctly\n});\n\n// Response type is inferred\nconst data = await response.json(); // { message: string }\n```\n","readmeFilename":""}