2025-03-22 17:31:50 +00:00
< p align = "center" >
< a href = "https://agentic.so" >
< img alt = "Agentic" src = "https://raw.githubusercontent.com/transitive-bullshit/agentic/main/docs/media/agentic-header.jpg" width = "308" >
< / a >
< / p >
< p align = "center" >
2025-03-24 14:39:15 +00:00
< em > Generate an Agentic TypeScript client from an OpenAPI spec.< / em >
2025-03-22 17:31:50 +00:00
< / p >
< p align = "center" >
< a href = "https://github.com/transitive-bullshit/agentic/actions/workflows/main.yml" > < img alt = "Build Status" src = "https://github.com/transitive-bullshit/agentic/actions/workflows/main.yml/badge.svg" / > < / a >
< a href = "https://www.npmjs.com/package/@agentic/stdlib" > < img alt = "NPM" src = "https://img.shields.io/npm/v/@agentic/stdlib.svg" / > < / a >
< a href = "https://github.com/transitive-bullshit/agentic/blob/main/license" > < img alt = "MIT License" src = "https://img.shields.io/badge/license-MIT-blue" / > < / a >
< a href = "https://prettier.io" > < img alt = "Prettier Code Formatting" src = "https://img.shields.io/badge/code_style-prettier-brightgreen.svg" / > < / a >
< / p >
# Agentic
**See the [github repo ](https://github.com/transitive-bullshit/agentic ) or [docs ](https://agentic.so ) for more info.**
2025-03-24 14:39:15 +00:00
## Example Usage
```sh
# local development
tsx bin/openapi-to-ts.ts fixtures/openapi/3.0/notion.json -o fixtures/generated
# published version
npx @agentic/openapi -to-ts fixtures/openapi/3.0/notion.json -o fixtures/generated
# npm install -g version
npm install -g @agentic/openapi -to-ts
openapi-to-ts fixtures/openapi/3.0/notion.json -o fixtures/generated
```
Most OpenAPI specs should be supported, but I've made no attempt to maximize robustness. This tool is meant to generate Agentic TS clients which are 99% of the way there, but some tweaking may be necessary post-generation.
Some things you may want to tweak:
- simplifying the zod parameters accepted by `@aiFunction` input schemas since LLMs tend to do better with a few, key parameters
- removing unused API endpoints & associated types that you don't want to expose to LLMs
2025-03-22 20:24:45 +00:00
## TODO
2025-03-24 14:39:15 +00:00
- convert openapi parsing & utils to https://github.com/readmeio/oas
2025-03-23 06:56:17 +00:00
- support filters
- // match only the schema named `foo` and `GET` operation for the `/api/v1/foo` path
- include: '^(#/components/schemas/foo|#/paths/api/v1/foo/get)$',
2025-03-24 14:39:15 +00:00
- [ ] Convert HTML in descriptions to markdown
- [ ] Properly format multiline function comments
- [ ] Debug stripe schema issue
2025-03-22 20:24:45 +00:00
2025-03-22 17:31:50 +00:00
## License
MIT © [Travis Fischer ](https://x.com/transitive_bs )