Commit Graph
452 Commits
Author SHA1 Message Date
Jasper Van 8513b18a8e feat(oauth): expose workspace authorization catalog (#551)
* feat(oauth): expose workspace authorization catalog

* fix(oauth): verify catalog tokens against canonical audience

* fix(auth): normalize Workers preview requests

* Revert "fix(auth): normalize Workers preview requests"

This reverts commit 02009f098f.

* fix(oauth): refresh configured resource scopes
2026-08-02 21:00:20 -04:00
saltbo 58b88b427b fix(oauth): accept multi-workspace consent 2026-08-02 17:19:26 -04:00
saltbo 461becc3d3 fix(oauth): synchronize Realmroot client scopes 2026-08-02 17:15:17 -04:00
saltbo b818facdab fix(x402): report missing receiver as unavailable 2026-08-02 16:22:43 -04:00
saltbo fa158cb11e fix(oauth): log agent assertion verification failures 2026-08-02 15:43:01 -04:00
saltbo bc4a71f691 fix(api-keys): restore legacy Better Auth keys 2026-08-02 15:08:51 -04:00
Jasper Van 2657f82ef1 feat(auth): add contextual OAuth workspace grants (#550)
* feat(auth): add contextual OAuth workspace grants

* fix(auth): register RFC 9396 detail types

* fix(openapi): restore delegated CLI auth profile

* fix(store): recover paid capacity fulfillment

* fix(auth): close OAuth contract gaps

* fix(store): resume verified x402 settlements

* chore(deps): update zpan cloud sdk to 2.5.2

* test(store): cover verified settlement recovery

* fix(auth): localize standard consent scopes

* fix(docker): include dependency patches before install

* fix(store): harden x402 purchase responses

* test(auth): cover OAuth authorization boundaries

* docs: add PR 550 verification screenshots

* chore: remove temporary verification screenshots

* docs(openapi): document exhausted capacity response
2026-08-02 13:33:15 -04:00
Jasper Van 1caa4e580c refactor(oauth): replace agent access naming (#549) 2026-08-01 00:32:31 -04:00
Jasper Van d15ca86226 fix(store): recover interrupted capacity purchases (#548)
* fix(store): recover interrupted capacity purchases

* test(store): cover inactive x402 receiver
2026-07-31 16:25:05 -04:00
saltbo bde1bb4bc9 fix(auth): challenge invalid DPoP tokens 2026-07-31 11:34:20 -04:00
saltbo bb25161011 fix(auth): backfill Better Auth account issuers 2026-07-31 10:16:58 -04:00
saltbo 4027f0c7a6 fix(auth): trust official worker preview origins 2026-07-31 09:42:25 -04:00
saltbo 8402844b5e feat(store): add agent x402 capacity purchases 2026-07-31 09:27:24 -04:00
saltbo a968f85d7c fix(auth): persist delegated agent identity 2026-07-30 20:19:33 -04:00
saltbo e740529ced docs(openapi): describe storage selection override 2026-07-30 16:17:23 -04:00
saltbo 954aae5f9e test(auth): set OAuth issuer in CF fixtures 2026-07-30 10:53:52 -04:00
saltbo d7ba55b9da feat(auth): support external agent resources
Replace bundled agent profiles, API keys, plugin, and skill surfaces with dynamic OAuth client registration, delegated DPoP tokens, discoverable scopes, and Arazzo-backed direct upload workflows.

Refs realmroot/realmroot#115
2026-07-30 10:41:39 -04:00
saltbo 09fc8de901 refactor(auth): model workspace binding explicitly 2026-07-30 00:07:15 -04:00
Jasper Van a890e7bba2 refactor(auth): unify route authorization around scopes (#544) 2026-07-29 23:26:07 -04:00
e50c19051a docs: publish ZPan Agent Skill (#543)
* docs: publish zpan agent skill

Agent-Profile: https://agent-kanban.dev/agents/b0abe6cd7aeba133

* test: cover openapi auth route metadata

Agent-Profile: https://agent-kanban.dev/agents/b0abe6cd7aeba133

* fix: align zpan skill restish commands

Agent-Profile: https://agent-kanban.dev/agents/b0abe6cd7aeba133

* docs: clarify zpan skill release boundaries

* docs: align zpan upload profile examples

Agent-Profile: https://agent-kanban.dev/agents/b0abe6cd7aeba133

* fix: select upload plugin profile via environment

* fix: return zpan upload plugin help

Agent-Profile: https://agent-kanban.dev/agents/b0abe6cd7aeba133

---------

Co-authored-by: Noah Reed <noah-reed@mails.agent-kanban.dev>
Co-authored-by: saltbo <saltbo@foxmail.com>
2026-07-29 20:19:16 -04:00
360237d069 feat: add restish zpan upload plugin (#542)
* feat: add restish zpan upload plugin

Agent-Profile: https://agent-kanban.dev/agents/f68cfbce6456edb5

* fix: restore single upload resume for restish plugin

Agent-Profile: https://agent-kanban.dev/agents/f68cfbce6456edb5

* ci(release): publish restish-zpan plugin assets

* fix(restish-zpan): accept restish operation aliases

---------

Co-authored-by: Ethan Cole <ethan-cole@mails.agent-kanban.dev>
Co-authored-by: saltbo <saltbo@foxmail.com>
2026-07-29 16:55:52 -04:00
agent-kanban[bot]andIris Tan 88916f4f03 feat: add agent oauth consent management UI (#541)
* feat: add agent oauth consent management UI

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* test: cover agent oauth consent edge paths

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* fix: route agent oauth consent through rpc

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* test: cover agent oauth consent rpc on workers

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* test: cover agent oauth grant-use middleware

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

---------

Co-authored-by: Iris Tan <iris-tan@mails.agent-kanban.dev>
2026-07-29 16:52:17 -04:00
agent-kanban[bot]andMarina Zhou 00d298627c feat: publish Restish OpenAPI security bindings (#540)
Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

Co-authored-by: Marina Zhou <marina-zhou@mails.agent-kanban.dev>
2026-07-29 14:26:37 -04:00
d22227ed2f feat: add delegated agent OAuth provider (#539)
* feat: add delegated agent oauth provider

Agent-Profile: https://agent-kanban.dev/agents/e0a1ce35687e48ef

* test(auth): cover delegated OAuth configuration

* fix(auth): route OAuth metadata through worker

* fix(auth): advertise canonical OAuth issuer

* test: cover agent oauth provider integration

Agent-Profile: https://agent-kanban.dev/agents/e0a1ce35687e48ef

* test(auth): cover managed OAuth consent flow

---------

Co-authored-by: Ravi Shah <ravi-shah@mails.agent-kanban.dev>
Co-authored-by: saltbo <saltbo@foxmail.com>
2026-07-29 13:26:44 -04:00
agent-kanban[bot] f2aea1bedb feat: stabilize multipart upload protocol (#537)
Preserve legacy upload clients while adding explicit resumable parts, safe completion recovery, idempotent cleanup, and downloader-bound authorization.
2026-07-29 10:37:31 -04:00
agent-kanban[bot] 1b1b1db772 feat: add workspace agent API keys (#538)
Enforce owner/admin management, terminal expired/revoked lifecycle, explicit workspace scopes, current membership rechecks, and authenticated management UI.
2026-07-29 10:08:44 -04:00
agent-kanban[bot]andNoah Reed 4817afecdb feat: migrate content APIs to unified authorization (#534)
Agent-Profile: https://agent-kanban.dev/agents/b0abe6cd7aeba133

Co-authored-by: Noah Reed <noah-reed@mails.agent-kanban.dev>
2026-07-29 02:11:08 -04:00
agent-kanban[bot]andEthan Cole bba443817a fix: harden legacy downloader bootstrap (#536)
* fix: harden legacy downloader bootstrap

Agent-Profile: https://agent-kanban.dev/agents/f68cfbce6456edb5

* fix: cover downloader bootstrap hardening

Agent-Profile: https://agent-kanban.dev/agents/f68cfbce6456edb5

* fix: document downloader bootstrap auth policy

Agent-Profile: https://agent-kanban.dev/agents/f68cfbce6456edb5

---------

Co-authored-by: Ethan Cole <ethan-cole@mails.agent-kanban.dev>
2026-07-29 01:42:47 -04:00
agent-kanban[bot]andMarina Zhou da286e9db3 feat: declare explicit route authorization policies (#535)
Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

Co-authored-by: Marina Zhou <marina-zhou@mails.agent-kanban.dev>
2026-07-29 00:30:22 -04:00
038e23172b feat: establish unified authorization kernel (#533)
* feat: establish unified authorization kernel

Agent-Profile: https://agent-kanban.dev/agents/e0a1ce35687e48ef

* docs(v2.9): sync confirmed agent access plan

---------

Co-authored-by: Ravi Shah <ravi-shah@mails.agent-kanban.dev>
Co-authored-by: saltbo <saltbo@foxmail.com>
2026-07-28 21:34:11 -04:00
saltbo c66590a51b feat(image-hosting): gate custom domains and support origins 2026-07-28 14:48:53 -04:00
saltbo 808f8611e4 fix(events): rotate long-lived SSE connections 2026-07-28 10:53:21 -04:00
Jasper Van 20feaa6c91 fix(image-hosting): bypass auth on custom domains (#532)
* fix(image-hosting): bypass auth on custom domains

* test(image-hosting): cover traffic compensation
2026-07-28 10:03:47 -04:00
Jasper Van faea00d025 feat(image-hosting): improve custom-domain image links (#531) 2026-07-28 02:38:03 -04:00
Jasper Van 6ad1563acc feat(image-hosting): automate Cloudflare domain setup (#530) 2026-07-28 01:03:56 -04:00
Jasper Van 1d58d5b80d feat(image-hosting): add configurable custom domain providers (#529)
* feat(image-hosting): add custom domain providers

* test(image-hosting): cover custom domain provider flows
2026-07-27 22:52:18 -04:00
Jasper Van b2859ec944 refactor(storage): remove legacy custom host downloads (#528)
* refactor(storage): remove custom host downloads

* test(download): cover private signed URLs end to end
2026-07-27 20:00:43 -04:00
Jasper Van ece5f413be fix(download): force browser-downloadable files to save (#527)
* fix(download): force browser-downloadable files to save

* fix(storage): require signed upload CORS headers

* fix(storage): keep upload metadata out of signatures

* fix(storage): sign bare upload commands

* revert: keep upload metadata in signed commands
2026-07-27 18:47:52 -04:00
Jasper Van a5c281b26a refactor(api)!: make site routes RESTful (#526)
Move site configuration under settings, model analytics and licensing as resources, and isolate scheduler runs under the internal API.

BREAKING CHANGE: site email, branding, analytics, licensing, WebDAV verification, and scheduler endpoint paths have changed.

Refs #451
2026-07-27 15:22:28 -04:00
Jasper Van 5473db9be1 fix(downloads): separate list data from task details (#525)
* fix(downloads): separate list items from task details

* fix(downloads): scope task list to downloader

* fix(downloads): stabilize table data
2026-07-27 10:22:47 -04:00
Jasper Van ad0f21bb39 fix: unify list pagination and realtime updates (#524)
* fix!: unify pagination and realtime change delivery

Replace offset paging on affected unbounded collections with signed keyset tokens and infinite loading. Persist scoped resource changes so one global SSE connection can resume and invalidate query caches safely.

BREAKING CHANGE: migrated list APIs now accept pageToken and return nextPageToken instead of page and total fields.

Refs #450

* fix: keep page tokens at the HTTP boundary

Move signed page-token handling out of the pure domain layer so dependency-cruiser architecture checks pass without changing behavior.

* fix: route background job stats through usecase

Keep the HTTP boundary from reaching directly into repository ports and cover the new usecase wrapper.

* fix: align clients and checks with cursor pagination

* refactor: unify pagination boundaries and infinite loading
2026-07-27 02:02:53 -04:00
saltbo 7957295ac9 test(objects): remove invalid spec breadcrumbs 2026-07-26 22:05:32 -04:00
saltbo 321545dea1 perf(files): lazily load sidebar folder tree 2026-07-26 22:03:01 -04:00
saltbo a41d31a974 perf(webdav): reuse directory snapshots 2026-07-26 19:13:56 -04:00
saltbo 7fa8b0c277 perf(reads): collapse database round trips 2026-07-26 18:42:50 -04:00
saltbo 9b402c5413 fix(webdav): preserve single-query cold resolution 2026-07-26 17:38:16 -04:00
saltbo ed94193e2f perf(webdav): coalesce workspace route lookups 2026-07-26 17:34:40 -04:00
saltbo c0b979c750 perf(downloads): collapse metering writes 2026-07-26 17:30:46 -04:00
saltbo b719974ecc chore(webdav): trace download latency phases 2026-07-26 17:25:07 -04:00
saltbo a6a9b1ea0e fix(auth): keep API key writes out of Workers KV 2026-07-26 17:18:15 -04:00