@duvoai/cli 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -28
- package/dist/bin/duvo.js +2770 -843
- package/dist/bin/duvo.js.map +4 -4
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -57,6 +57,11 @@ duvo --profile team-2 whoami # one-off override for a single command
|
|
|
57
57
|
| `duvo agents create` | Create a new agent |
|
|
58
58
|
| `duvo agents update <id>` | Update an agent's name or settings |
|
|
59
59
|
| `duvo agents schedules <agent-id>` | List schedules you own for an agent |
|
|
60
|
+
| `duvo agents case-triggers list <agent-id>` | List case triggers configured for an agent |
|
|
61
|
+
| `duvo agents case-triggers create <agent-id> --queue <id>` | Create a case trigger for an agent |
|
|
62
|
+
| `duvo agents case-triggers get <agent-id> <trigger-id>` | Get a case trigger by ID |
|
|
63
|
+
| `duvo agents case-triggers update <agent-id> <trigger-id>` | Update a case trigger |
|
|
64
|
+
| `duvo agents case-triggers delete <agent-id> <trigger-id>` | Delete a case trigger |
|
|
60
65
|
| `duvo agent-folders list` | List agent folders for your team |
|
|
61
66
|
| `duvo agent-folders create` | Create an agent folder |
|
|
62
67
|
| `duvo agent-folders update <id>` | Rename or move an agent folder |
|
|
@@ -102,8 +107,20 @@ duvo --profile team-2 whoami # one-off override for a single command
|
|
|
102
107
|
| `duvo revisions create --agent <id> --name <text>` | Create a new revision for an existing agent |
|
|
103
108
|
| `duvo revisions update <id>` | Update a revision's config (handover targets are derived from the SOP) |
|
|
104
109
|
| `duvo integrations list` | List the team's integration catalog |
|
|
110
|
+
| `duvo integrations custom create --name <n> --auth-method <m> --server-url <url>` | Create a custom integration type in your team's catalog |
|
|
111
|
+
| `duvo integrations custom delete <custom-integration-id>` | Delete a custom integration type (cascade-removes related connections) |
|
|
105
112
|
| `duvo connections list` | List your connections (filter with `--type`) |
|
|
106
113
|
| `duvo connections get <id>` | Get one of your connections by ID |
|
|
114
|
+
| `duvo connections create` | Create a user-provided connection (custom MCP server) |
|
|
115
|
+
| `duvo connections update <id>` | Update a connection (name, server URL, headers, sharing) |
|
|
116
|
+
| `duvo connections delete <id>` | Delete a connection and any triggers bound to it |
|
|
117
|
+
| `duvo connections credentials <id>` | List configured header keys (sensitive values redacted) |
|
|
118
|
+
| `duvo oauth native start <provider>` | Start a native OAuth connection (Gmail, Outlook, ...). Prints the authorization URL. |
|
|
119
|
+
| `duvo oauth composio start --auth-config <id> --callback-url <url>` | Start a Composio-backed OAuth connection. Returns a redirect URL and connected account. |
|
|
120
|
+
| `duvo oauth composio connect --app <slug> --name <n> --connected-account-id <id>` | Finalize a Composio-backed connection after the start step completes. |
|
|
121
|
+
| `duvo oauth mcp probe <url>` | Probe an MCP server URL and list tools it exposes (`--header KEY=VALUE` repeatable). |
|
|
122
|
+
| `duvo oauth mcp authorize --url <url> --name <n>` | Start an OAuth-based connection with a remote MCP server (DCR). Prints the auth URL. |
|
|
123
|
+
| `duvo oauth mcp check --url <url>` | Probe an MCP server URL for OAuth Dynamic Client Registration support. |
|
|
107
124
|
| `duvo revision-integrations list` | List integrations attached to a revision |
|
|
108
125
|
| `duvo revision-integrations attach` | Attach one or more integrations to a revision |
|
|
109
126
|
| `duvo revision-integrations remove <integration-id>` | Remove an integration slot from a revision |
|
|
@@ -118,41 +135,17 @@ duvo --profile team-2 whoami # one-off override for a single command
|
|
|
118
135
|
| `duvo queues delete <id>` | Delete a case queue (interrupts running jobs and removes all cases) |
|
|
119
136
|
| `duvo queues agents <queue-id>` | List producer/consumer agents bound to a queue |
|
|
120
137
|
| `duvo skills list [--system]` | List skills (or system skills only) |
|
|
138
|
+
| `duvo skills create --name <n> --description <d>` | Create a skill from Markdown content (`--content` or `--content-file`) |
|
|
139
|
+
| `duvo skills upload <file>` | Create or update a skill by uploading a SKILL.md file or a ZIP archive |
|
|
121
140
|
| `duvo skills delete <id>` | Delete a custom skill |
|
|
122
141
|
| `duvo skills files <id>` | List files in a skill |
|
|
123
142
|
| `duvo skills file-get <id> <path>` | Print the content of a file in a skill |
|
|
124
143
|
| `duvo skills file-update <id> <path>` | Update the content of a file in a skill |
|
|
144
|
+
| `duvo skills assignments <skill-id>` | List assignments whose live build references a skill |
|
|
125
145
|
| `duvo skills download <id>` | Download a custom skill as a ZIP |
|
|
126
146
|
| `duvo skills generate --prompt <text>` | Generate a SKILL.md from a prompt |
|
|
147
|
+
| `duvo team get [--team <id>]` | Get a team by ID (defaults to the team scoped to the API key) |
|
|
127
148
|
| `duvo team members [--team <id>]` | List members of a team (defaults to the team scoped to the API key) |
|
|
128
149
|
| `duvo api <method> <path>` | Make a raw authenticated API request |
|
|
129
150
|
|
|
130
151
|
Run `duvo <command> --help` for full flags on any command.
|
|
131
|
-
|
|
132
|
-
## Publishing
|
|
133
|
-
|
|
134
|
-
The CLI is published to npm as [`@duvoai/cli`](https://www.npmjs.com/package/@duvoai/cli) via the [`Publish @duvoai/cli`](../.github/workflows/publish-duvo-cli.yml) GitHub Actions workflow.
|
|
135
|
-
|
|
136
|
-
### How to publish a new version
|
|
137
|
-
|
|
138
|
-
1. Bump `version` in `duvo-cli/package.json` (follow SemVer) and merge to the default branch.
|
|
139
|
-
2. Open the **Actions** tab → **Publish @duvoai/cli** → **Run workflow** and dispatch it from the default branch.
|
|
140
|
-
3. The workflow reads the version from `package.json`, skips if that version is already on npm, otherwise builds the CLI with prod Auth0 config baked in and publishes to npm.
|
|
141
|
-
|
|
142
|
-
### How the workflow works
|
|
143
|
-
|
|
144
|
-
- **Trigger:** manual `workflow_dispatch` only. There is no automatic publish on push or tag.
|
|
145
|
-
- **Auth:** OIDC trusted publishing to npm — no `NPM_TOKEN` is stored in the repo. The npm registry has a Trusted Publisher configured for `@duvoai/cli` pointing at this repo + workflow file. See [npm Trusted Publishers](https://docs.npmjs.com/trusted-publishers).
|
|
146
|
-
- **Idempotent:** `npm view @duvoai/cli@<version>` runs first; if the version already exists the build/publish steps are skipped, so re-running the workflow on an unchanged version is a no-op.
|
|
147
|
-
- **Concurrency:** the job uses `concurrency.group: publish-duvo-cli-${{ github.ref }}` with `cancel-in-progress: false`, so two near-simultaneous dispatches serialize instead of racing past the version check.
|
|
148
|
-
- **Auth0 config baked at build time:** the publish step sets `DUVO_CLI_DOMAIN=login.duvo.ai`, `DUVO_CLI_AUDIENCE=https://api.duvo.ai`, and `DUVO_CLI_CLIENT_ID=${{ secrets.DUVO_CLI_PROD_CLIENT_ID }}` so the published artifact targets the prod Auth0 tenant regardless of who runs `duvo login` and where.
|
|
149
|
-
|
|
150
|
-
### Required secrets
|
|
151
|
-
|
|
152
|
-
| Secret | Purpose |
|
|
153
|
-
| ------------------------- | ----------------------------------------------------------------- |
|
|
154
|
-
| `DUVO_CLI_PROD_CLIENT_ID` | Auth0 prod-tenant Client ID for the "Duvo CLI" Native application |
|
|
155
|
-
|
|
156
|
-
### Yanking a bad release
|
|
157
|
-
|
|
158
|
-
`npm publish` is append-only. To pull a broken version use `npm deprecate @duvoai/cli@<version> "<reason>"` (or in extreme cases, `npm unpublish` within the 72-hour window). Then bump the version in `package.json` and re-run the workflow.
|