Commit graph

262 commits

Author SHA1 Message Date
Virgil
b2116cc896 feat(openapi): omit auth errors on public routes
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:46:06 +00:00
Virgil
2fd17a432c fix(provider): handle invalid proxy upstreams safely
Avoid panicking when a ProxyProvider is constructed with a malformed upstream URL. The provider now records the configuration error and returns a standard 500 envelope when mounted.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:42:04 +00:00
Virgil
475027d716 refactor(api): wrap ToolBridge errors
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:36:58 +00:00
Virgil
2d1ed133f2 refactor(api): align OpenAPI client with AX principles
Use core-style error wrapping in the OpenAPI client, replace direct spec reads with streamed file I/O, and add compile-time interface assertions for ToolBridge.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:32:21 +00:00
Virgil
867221cbb8 fix(api): snapshot tool bridge iterators
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:27:19 +00:00
Virgil
e0bdca7889 fix(api): snapshot engine iterator views
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:23:19 +00:00
Virgil
4ce697189a fix(client): promote declared query params on all methods
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:19:45 +00:00
Virgil
db9daadbce fix(api): return engine groups by copy
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:16:10 +00:00
Virgil
f62933f570 feat(openapi): document example-only request bodies
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:12:14 +00:00
Virgil
b0adb53dec fix(openapi): snapshot describable groups once
Prepare route descriptions once per group before building paths and tags so iterator-backed DescribeIter implementations are consumed safely and deterministically.

Adds a regression test covering a one-shot iterator-backed group.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:07:04 +00:00
Virgil
cb726000a9 feat(api): add iterator for spec registry
Adds RegisteredSpecGroupsIter so CLI consumers can range over a snapshot of the package-level spec registry without copying the slice manually.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 21:03:15 +00:00
Virgil
f2f262a4c2 refactor(api): standardise unauthorised wording
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:59:55 +00:00
Virgil
eceda4e5c1 feat(openapi): support iterator-backed route descriptions
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:55:33 +00:00
Virgil
7e4d8eb179 feat(openapi): add route examples to spec
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:51:02 +00:00
Virgil
bb7d88f3ce feat(openapi): add external docs metadata
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:47:38 +00:00
Virgil
4d7f3a9f99 feat(openapi): add terms of service metadata
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:44:01 +00:00
Virgil
071de51bb5 feat(openapi): mark deprecated operations in spec
Expose route-level deprecation in generated OpenAPI operations and cover it with a regression test.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:40:53 +00:00
Virgil
a589d3bac6 feat(api): add OpenAPI contact metadata
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:35:08 +00:00
Virgil
d45ee6598e feat(api): expose swagger licence metadata in CLI 2026-04-01 20:30:02 +00:00
Virgil
b2d3c96ed7 feat(api): expose swagger licence metadata
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:26:55 +00:00
Virgil
0ed1cfa1b1 docs(api): add AX examples to public APIs
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:23:41 +00:00
Virgil
d3737974ce feat(openapi): add info license metadata
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:21:06 +00:00
Virgil
b341b4b860 docs(api): add AX usage examples
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:17:46 +00:00
Virgil
e2935ce79e feat(api): dedupe PHP OpenAPI operation IDs
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:13:28 +00:00
Virgil
c9627729b5 fix(provider): harden proxy path stripping
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:08:55 +00:00
Virgil
cd4e24d15f feat(api): document custom success statuses 2026-04-01 20:04:34 +00:00
Virgil
6017ac7132 feat(api): collapse equivalent OpenAPI servers
Normalise server metadata so trailing-slash variants deduplicate to a single entry.

Adds a regression test covering both absolute and relative server URLs.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:01:34 +00:00
Virgil
6034579c00 feat(openapi): fall back to group tags
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:57:10 +00:00
Virgil
408a709a43 feat(openapi): allow route-level security overrides
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:54:13 +00:00
Virgil
ebad4c397d feat(client): support header and cookie parameters
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:50:41 +00:00
Virgil
7c3e8e7ba6 feat(openapi): support gin-style path params
Normalise Gin colon and wildcard route segments into OpenAPI template parameters so documented paths match the framework's route syntax.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:46:07 +00:00
Virgil
13cc93f4f4 fix(openapi): skip blank tags in generated specs
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:35:36 +00:00
Virgil
3f010b855e feat(api): declare explicit OpenAPI tags 2026-04-01 19:27:04 +00:00
Virgil
ea94081231 feat(api): normalise OpenAPI path joins
Normalise the concatenation of BasePath() and RouteDescription paths so trailing or missing slashes do not produce malformed OpenAPI entries.

Add a regression test for mixed slash formatting.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:21:46 +00:00
Virgil
a055781d5d feat(i18n): add locale message fallback
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:17:26 +00:00
Virgil
0ed72c4952 feat(api): document explicit route parameters
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:12:51 +00:00
Virgil
862604dc22 feat(api): expose SDK spec metadata flags
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:09:59 +00:00
Virgil
0144244ccd feat(api): dedupe registered spec groups
Prevent duplicate RouteGroup registrations from appearing multiple times in CLI-generated OpenAPI output. This keeps spec generation stable when packages register the same group more than once during init or tests.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:06:03 +00:00
Virgil
69beb451b5 feat(api): expose webhook secret routes
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:32:39 +00:00
Virgil
3b26a15048 feat(api): register CLI spec groups 2026-04-01 18:29:45 +00:00
Virgil
edb1cf0c1e feat(openapi): document path parameters
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:25:00 +00:00
Virgil
2f8f8f805e fix(api): scope rate limiting by key
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:22:17 +00:00
Virgil
5da281c431 feat(bridge): support schema composition keywords
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:19:15 +00:00
Virgil
6e878778dc feat(api-docs): document MCP tool call body
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:12:30 +00:00
Virgil
cdef85dcc9 feat(graphql): normalise custom mount paths
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:08:27 +00:00
Virgil
ee83aabca0 fix(api): pass MCP tool version through execution
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 18:03:26 +00:00
Virgil
db787a799b feat(api): document SEO and MCP query parameters
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 17:59:54 +00:00
Virgil
aff54403c6 fix(api): compose swagger server metadata
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 17:57:16 +00:00
Virgil
164a1d4f0e feat(api): document cache hits in OpenAPI
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 17:52:14 +00:00
Virgil
f6349145bc feat(api): validate openapi client requests and responses
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 17:48:49 +00:00