[pull] main from oomol-lab:main - #11
Merged
Merged
Conversation
## Summary - add a locally executable Mux provider using Token ID and Token Secret Basic Auth - add asset create, list, retrieve, delete, and playback ID actions - validate credentials through Mux `whoami` and expose environment identity and granted permissions - validate remote media inputs as public HTTP(S) URLs and route all provider egress through the guarded fetcher ## Why Mux Video asset workflows were not available through the open-source connector. This adds the smallest useful asset lifecycle while preserving Mux pagination, async processing status, playback policies, and API error details. ## Impact Users can configure their own Mux access token and manage on-demand video assets locally. The create action accepts a provider-fetchable media URL; video bytes do not pass through the connector runtime. ## Validation - `npm run generate:catalog` - `npm run fix-check` - Mux runtime smoke checks covering request mapping, Basic Auth, pagination, deletion, playback IDs, credential validation, and SSRF rejection - `npm test` (56 test files, 516 tests) --------- Co-authored-by: CheerChen <meetcheerego@gmail.com>
Closes #181 ## Summary Adds a new provider, `agent_qq`, for Tencent Agent Mail (`https://agent.qq.com`). It uses the public `https://api.agent.qq.com/v1` REST API. ### Actions | Action | Method | Path | |---|---|---| | `list_aliases` | GET | `/v1/me` | | `list_messages` | GET | `/v1/aliases/{alias_id}/messages` | | `read_message` | GET | `/v1/aliases/{alias_id}/messages/{message_id}` | | `send_message` | POST | `/v1/aliases/{alias_id}/messages/send` | | `delete_message` | DELETE | `/v1/aliases/{alias_id}/messages/{message_id}` | - Auth is modeled as `api_key` (the AgentMail OAuth access token) and sent as `Authorization: Bearer <token>`. Users get a token by running `agently-cli auth login` or completing the OAuth device flow. - `list_messages` falls back to the search endpoint when `q` is provided, and supports filtering by `dir`, `is_read`/`is_unread`, `before`/`after`, `has_attachments`, and cursor pagination. - `send_message` implements the two-phase confirmation flow automatically: the first POST may return `confirmation_required` + `confirmation_token`, and the executor immediately retries with the token. - All network egress goes through `context.fetcher` with `providerUserAgent`. The new service id is `agent_qq` because the existing `agent_mail` provider is already tied to `agentmail.to`. `npm run fix-check` passes, and the actions have been exercised live: `list_aliases` returns the account aliases while `list_messages` returns the inbox. --------- Co-authored-by: CheerChen <meetcheerego@gmail.com>
## Summary - Close an authentication gap where `POST /v1/actions/*` treated a **missing** `OOMOL_CONNECT_ADMIN_TOKEN` as always-allowed admin elevation. - After runtime tokens exist (so `GET /v1/*` correctly returns 401 without a bearer), unauthenticated action runs could still succeed through the admin fallback path. - Admin elevation for action runs now requires a **configured** admin token that is actually presented on the request. ## Problem `canUseAdminAuth` allows `POST /v1/actions/:actionId` to fall back to admin scope. When no admin token is configured, `hasValidToken(..., "admin")` returned `true` unconditionally. Combined with stored runtime tokens enforcing runtime auth on GETs, this left action execution open without credentials. ## Changes - Only attempt admin elevation for action runs when `OOMOL_CONNECT_ADMIN_TOKEN` is set. - Regression tests for unauthenticated `POST /v1/actions/*` when runtime tokens exist, and for configured admin elevation. ## Test plan - [x] `npm test -- src/server/api/auth.test.ts` - [x] `npm test -- src/server/connect-server.test.ts -t "runtime token"` - [ ] Manual: create a runtime token without admin env, confirm unauthenticated action POST is 401
## Summary - Map missing or invalid `connectionName` on `GET /api/actions/:id/agent.md` to structured 4xx JSON. - Previously uncaught `ConnectionError` became a 500 internal error via the global handler. ## Test plan - [x] `npm test -- src/server/connect-server.test.ts -t "returns connection errors for action agent"`
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )