feat: Phase 5a CLI — gateway group, source management, connection deprecation notice#213
Draft
feat: Phase 5a CLI — gateway group, source management, connection deprecation notice#213
Conversation
Introduce hookdeck gateway namespace and connection update by ID.
Backward-compat: hookdeck connection * remains available at root.
New commands
------------
hookdeck gateway
----------------
Commands for managing Event Gateway sources, destinations, connections,
transformations, events, requests, and metrics.
The gateway command group provides full access to all Event Gateway resources.
Usage:
hookdeck gateway [command]
Available Commands:
connection Manage your connections [BETA]
Examples:
hookdeck gateway connection list
hookdeck gateway source create --name my-source --type WEBHOOK
hookdeck gateway metrics events --start 2026-01-01T00:00:00Z --end 2026-02-01T00:00:00Z
hookdeck gateway connection
----------------------------
Manage connections between sources and destinations.
A connection links a source to a destination and defines how webhooks are routed.
Usage:
hookdeck gateway connection [command]
Available Commands:
create Create a new connection
delete Delete a connection
disable Disable a connection
enable Enable a connection
get Get connection details
list List connections
pause Pause a connection temporarily
unpause Resume a paused connection
update Update a connection by ID
upsert Create or update a connection by name
hookdeck gateway connection update <connection-id>
-------------------------------------------------
Update an existing connection by its ID.
Unlike upsert (which uses name as identifier), update takes a connection ID
and allows changing any field including the connection name.
Usage:
hookdeck gateway connection update <connection-id> [flags]
Flags:
--name, --description, --source-id, --destination-id
--rules, --rules-file
--rule-retry-*, --rule-filter-*, --rule-transform-*, --rule-delay, --rule-deduplicate-*
--output (json)
Examples:
hookdeck gateway connection update web_abc123 --name "new-name"
hookdeck gateway connection update web_abc123 --rule-retry-strategy linear --rule-retry-count 5
Other changes
-------------
- Dual registration: addConnectionCmdTo(parent) registers connection tree under
gateway and at root (no arg rewriting).
- Shared rule flags: connectionRuleFlags + addConnectionRuleFlags + buildConnectionRules
in connection_common.go; create, update, and upsert use them.
- API: UpdateConnection (PUT /connections/{id}) in pkg/hookdeck/connections.go.
- Acceptance tests: gateway_test.go, connection_update_test.go; existing connection
tests use canonical path hookdeck gateway connection *; alias tests keep root path.
- Fix TestGatewayHelpShowsSubcommands to assert current gateway help text.
Phase 5a plan: .cursor/plans/phase_5a_cli_updates_bd801679.plan.md
Co-authored-by: Cursor <cursoragent@cursor.com>
## New command: gateway source
This change introduces a full **source management** command group under
`hookdeck gateway source`. Sources can be managed independently and then
referenced by connections via `--source-id` when creating connections.
- **Command group:** `hookdeck gateway source` with alias `sources` (same
convention as `connection`/`connections`, `project`/`projects`).
- **Subcommands:** list, get, create, upsert, update, delete, enable, disable, count.
### Help output
**gateway**
```
Commands for managing Event Gateway sources, destinations, connections,
transformations, events, requests, and metrics.
Usage:
hookdeck gateway [command]
Available Commands:
connection Manage your connections [BETA]
source Manage your sources
```
**gateway source**
```
Manage webhook and event sources.
Sources receive incoming webhooks and events. Create sources with a type
(e.g. WEBHOOK, STRIPE) and optional authentication config, then connect
them to destinations via connections.
Usage:
hookdeck gateway source [command]
Available Commands:
count Count sources
create Create a new source
delete Delete a source
disable Disable a source
enable Enable a source
get Get source details
list List sources
update Update a source by ID
upsert Create or update a source by name
```
**gateway source list**
```
List all sources or filter by name or type.
Examples:
hookdeck gateway source list
hookdeck gateway source list --name my-source
hookdeck gateway source list --type WEBHOOK
hookdeck gateway source list --disabled
hookdeck gateway source list --limit 10
Usage:
hookdeck gateway source list [flags]
Flags:
--disabled Include disabled sources
--limit int Limit number of results (default 100)
--name string Filter by source name
--output string Output format (json)
--type string Filter by source type (e.g. WEBHOOK, STRIPE)
```
**gateway source get**
```
Get detailed information about a specific source.
You can specify either a source ID (e.g. src_abc123) or name.
Usage:
hookdeck gateway source get <source-id-or-name> [flags]
Flags:
--include string Comma-separated fields to include (e.g. config.auth)
--output string Output format (json)
```
**gateway source create**
```
Create a new source.
Requires --name and --type. Use --config or --config-file for authentication.
Examples:
hookdeck gateway source create --name my-webhook --type WEBHOOK
hookdeck gateway source create --name stripe-prod --type STRIPE --config '{"webhook_secret":"whsec_xxx"}'
Usage:
hookdeck gateway source create [flags]
Flags:
--config string JSON object for source config (e.g. webhook_secret)
--config-file string Path to JSON file for source config
--description string Source description
--name string Source name (required)
--output string Output format (json)
--type string Source type (e.g. WEBHOOK, STRIPE) (required)
```
**gateway source upsert**
```
Create a new source or update an existing one by name (idempotent).
Examples:
hookdeck gateway source upsert my-webhook --type WEBHOOK
hookdeck gateway source upsert my-webhook --description "Updated" --dry-run
Usage:
hookdeck gateway source upsert <name> [flags]
Flags:
--config string JSON object for source config
--config-file string Path to JSON file for source config
--description string Source description
--dry-run Preview changes without applying
--output string Output format (json)
--type string Source type (e.g. WEBHOOK, STRIPE)
```
**gateway source update**
```
Update an existing source by its ID.
Usage:
hookdeck gateway source update <source-id> [flags]
Flags:
--config string JSON object for source config
--config-file string Path to JSON file for source config
--description string New source description
--name string New source name
--output string Output format (json)
--type string Source type (e.g. WEBHOOK, STRIPE)
```
**gateway source delete**
```
Delete a source.
Usage:
hookdeck gateway source delete <source-id> [flags]
Flags:
--force Force delete without confirmation
```
**gateway source enable**
```
Enable a disabled source.
Usage:
hookdeck gateway source enable <source-id> [flags]
```
**gateway source disable**
```
Disable an active source. It will stop receiving new events until re-enabled.
Usage:
hookdeck gateway source disable <source-id> [flags]
```
**gateway source count**
```
Count sources matching optional filters.
Examples:
hookdeck gateway source count
hookdeck gateway source count --type WEBHOOK
hookdeck gateway source count --disabled
Usage:
hookdeck gateway source count [flags]
Flags:
--disabled Count disabled sources only (when set with other filters)
--name string Filter by source name
--type string Filter by source type
```
Note on **source count**: The API exposes GET /sources/count, which returns
only the count (no list payload). Using `source count` is more efficient than
`source list` when you only need the number (e.g. for scripts or dashboards).
There is no **connection count** command; connections have list, get, create,
upsert, update, delete, enable, disable, pause, unpause only.
---
## Refactors and tests
- **API version constant:** Add `APIPathPrefix` ("/2025-07-01") in
pkg/hookdeck/client.go; use it for all versioned API paths in sources,
connections, destinations, events, ci, auth, session, projects, guest. Update
connections_test.go to use the constant.
- **Source types:** Document SourceCreateInput (nested/inline source in
connection payloads) vs SourceCreateRequest (standalone source API body) in
pkg/hookdeck/sources.go.
- **Shared source config:** Add buildSourceConfigFromFlags in
pkg/cmd/source_common.go; refactor source create, upsert, and update to use
it and remove duplicate buildConfig().
- **Acceptance test:** Add TestStandaloneSourceThenConnection: create
standalone source via `source create`, then create a connection using that
source via `connection create --source-id <id>`; assert connection source
matches; clean up connection then source.
Co-authored-by: Cursor <cursoragent@cursor.com>
Every resource command group must use singular as Use and plural as alias (source/sources, connection/connections, project/projects). Document in AGENTS.md § Resource command naming and plural alias; reference from plan. Co-authored-by: Cursor <cursoragent@cursor.com>
…ections Show notice to stderr when using root alias; suppress when --output json. Unit test TestShouldShowConnectionDeprecation. Use 'hookdeck gateway connection' as canonical. Co-authored-by: Cursor <cursoragent@cursor.com>
…auth, AGENTS.md, tests - Source create/upsert/update: shared sourceConfigFlags and buildSourceConfigFromIndividualFlags (unprefixed); connection create uses same with source- prefix - SourceCreateRequest (name required) vs SourceUpdateRequest (omitempty); update sends only changed fields; 'no updates specified' when no flags - validateSourceAuthFromSpec with sourceAuthFlags and flagPrefix; used by source create/upsert and connection create; optionalAuthSourceTypes (STRIPE optional) - Source get: --include-auth bool (mirror --include-destination-auth); addIncludeSourceAuthFlag in connection_include.go - AGENTS.md: validation philosophy, create vs update shapes, cached spec usage, testing (run tests, add tests, no skip), sandbox/TLS guidance - Unit tests: source_create_update_test (create requires name, update empty request); connection create refactored to use shared validation - Acceptance tests: source config flags, create-with-auth then get with --include-auth, update with no flags fails; removed STRIPE-required tests - pkg/hookdeck: SourceUpdateRequest, includeAuthParams reused for source get Co-authored-by: Cursor <cursoragent@cursor.com>
- Add pkg/cmd/helptext.go with ResourceSource/ResourceConnection and Short/Long helpers for get, list, delete, disable, enable, update, create, upsert - Switch source and connection commands to use shared Short and Long intro text; keep command-specific Examples and wording in command files - AGENTS.md: add helptext.go to Key Files, add 'Command help text (Short and Long)' under Documentation Standards Co-authored-by: Cursor <cursoragent@cursor.com>
- Add gateway destination command group (list, get, create, upsert, update, delete, enable, disable, count) with alias 'destinations' - Extend pkg/hookdeck/destinations.go with List, Create, Upsert, Update, Delete, Enable, Disable, Count; Get with include_auth param - Add destination_common.go for config from flags (HTTP/CLI/MOCK_API, auth: bearer, basic, api-key, custom-signature, hookdeck-signature, rate limiting) - Destination get: --include-auth to include config.auth in response - Destination upsert: when updating by name with only non-config flags (e.g. --description), fetch existing and merge config so API accepts PUT - Add ResourceDestination and shared helptext in helptext.go - Acceptance tests: CRUD, upsert, update, enable/disable, auth variants, count, include-auth (bearer, basic, API key) Co-authored-by: Cursor <cursoragent@cursor.com>
- Connection get: --include-source-auth and --include-destination-auth fetch source/destination with auth and embed in connection response - Add connection_include.go helpers: addIncludeSourceAuthFlagForConnection, addIncludeDestinationAuthFlag, addIncludeAuthFlagForDestination, addIncludeSourceAuthFlag (source get) - Source get: GetSource supports include_auth query param (sources.go) Co-authored-by: Cursor <cursoragent@cursor.com>
API requires config.auth_type when config.auth is present for HTTP sources. - source_common.go: ensureSourceConfigAuthTypeForHTTP sets auth_type (API_KEY, BASIC_AUTH, HMAC) from auth shape - connection_create.go: call it in buildSourceConfig for all code paths - source create/update/upsert: ensure auth_type after building config Co-authored-by: Cursor <cursoragent@cursor.com>
- Connection get: TestConnectionAuthenticationTypes asserts --include-source-auth and --include-destination-auth with auth_type for HTTP source (API key, basic) and all destination auth types - Source get: TestSourceCreateWithAuthThenGetWithInclude (STRIPE), TestSourceCreateWithAuthThenGetWithInclude_HTTP (config.auth_type API_KEY) - Destination get: basic and API key include-auth tests - Helpers: createTestDestinationWithAuth, deleteDestination - connection_source_config_test: ensureSourceConfigAuthTypeForHTTP cases Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Implement full CLI support for the transformations API (OpenAPI 2025-07-01):
- API client in pkg/hookdeck/transformations.go (List, Get, Create, Upsert, Update, Delete, Count, Run, ListExecutions, GetExecution)
- Command group "gateway transformation" with alias "transformations"
- CRUD: list, get, create, upsert, update, delete, count
- run: test transformation code with sample request (--code/--code-file or --id, --request/--request-file)
- executions: list, get
- Acceptance tests: 24 tests in test/acceptance/transformation_test.go; helpers createTestTransformation, deleteTransformation in helpers.go
Rename: --transformation-id to --id on "transformation run" (context is already transformation).
---
Help output for each command (Global Flags omitted after first)
---
hookdeck gateway transformation --help
Manage JavaScript transformations for request/response processing.
Transformations run custom code to modify event payloads. Create with --name and --code (or --code-file),
then attach to connections via rules. Use 'transformation run' to test code locally.
Usage:
hookdeck gateway transformation [command]
Aliases:
transformation, transformations
Available Commands:
count Count transformations
create Create a new transformation
delete Delete a transformation
executions List or get transformation executions
get Get transformation details
list List transformations
run Run transformation code (test)
update Update a transformation by ID
upsert Create or update a transformation by name
Flags:
-h, --help help for transformation
Global Flags: --color, --config, --device-name, --insecure, --log-level, -p/--profile
---
hookdeck gateway transformation list --help
List all transformations or filter by name or id.
Examples:
hookdeck gateway transformation list
hookdeck gateway transformation list --name my-transform
hookdeck gateway transformation list --order-by created_at --dir desc
hookdeck gateway transformation list --limit 10
Usage:
hookdeck gateway transformation list [flags]
Flags:
--dir string Sort direction (asc, desc)
--id string Filter by transformation ID(s)
--limit int Limit number of results (default 100)
--name string Filter by transformation name
--next string Pagination cursor for next page
--order-by string Sort key (name, created_at, updated_at)
--output string Output format (json)
--prev string Pagination cursor for previous page
---
hookdeck gateway transformation get --help
Get detailed information about a specific transformation.
You can specify either a transformation ID or name.
Usage:
hookdeck gateway transformation get <transformation-id-or-name> [flags]
Flags:
--output string Output format (json)
---
hookdeck gateway transformation create --help
Create a new transformation.
Requires --name and --code (or --code-file). Use --env for key-value environment variables.
Usage:
hookdeck gateway transformation create [flags]
Flags:
--code string JavaScript code string (required if --code-file not set)
--code-file string Path to JavaScript file (required if --code not set)
--env string Environment variables as KEY=value,KEY2=value2
--name string Transformation name (required)
--output string Output format (json)
---
hookdeck gateway transformation upsert --help
Create a new transformation or update an existing one by name (idempotent).
Usage:
hookdeck gateway transformation upsert <name> [flags]
Flags:
--code string JavaScript code string
--code-file string Path to JavaScript file
--dry-run Preview changes without applying
--env string Environment variables as KEY=value,KEY2=value2
--output string Output format (json)
---
hookdeck gateway transformation update --help
Update an existing transformation by its ID.
Usage:
hookdeck gateway transformation update <transformation-id-or-name> [flags]
Flags:
--code string New JavaScript code string
--code-file string Path to JavaScript file
--env string Environment variables as KEY=value,KEY2=value2
--name string New transformation name
--output string Output format (json)
---
hookdeck gateway transformation delete --help
Delete a transformation.
Usage:
hookdeck gateway transformation delete <transformation-id-or-name> [flags]
Flags:
--force Force delete without confirmation
---
hookdeck gateway transformation count --help
Count transformations matching optional filters.
Usage:
hookdeck gateway transformation count [flags]
Flags:
--name string Filter by transformation name
--output string Output format (json)
---
hookdeck gateway transformation run --help
Test run transformation code against a sample request.
Provide either inline --code/--code-file or --id to use an existing transformation.
The --request or --request-file must be JSON with at least "headers" (can be {}).
Usage:
hookdeck gateway transformation run [flags]
Flags:
--code string JavaScript code string to run
--code-file string Path to JavaScript file
--env string Environment variables as KEY=value,KEY2=value2
--id string Use existing transformation by ID
--output string Output format (json)
--request string Request JSON (must include headers, e.g. {"headers":{}})
--request-file string Path to request JSON file
--webhook-id string Connection (webhook) ID for execution context
---
hookdeck gateway transformation executions --help
List executions for a transformation, or get a single execution by ID.
Usage:
hookdeck gateway transformation executions [command]
Available Commands:
get Get a transformation execution
list List transformation executions
---
hookdeck gateway transformation executions list --help
List executions for a transformation.
Usage:
hookdeck gateway transformation executions list <transformation-id-or-name> [flags]
Flags:
--created-at string Filter by created_at (ISO date or operator)
--dir string Sort direction (asc, desc)
--issue-id string Filter by issue ID
--limit int Limit number of results (default 100)
--log-level string Filter by log level (debug, info, warn, error, fatal)
--next string Pagination cursor for next page
--order-by string Sort key (created_at)
--output string Output format (json)
--prev string Pagination cursor for previous page
--webhook-id string Filter by connection (webhook) ID
---
hookdeck gateway transformation executions get --help
Get a single execution by transformation ID and execution ID.
Usage:
hookdeck gateway transformation executions get <transformation-id-or-name> <execution-id> [flags]
Flags: --output string Output format (json)
Co-authored-by: Cursor <cursoragent@cursor.com>
…facing) - transformation run: --webhook-id → --connection-id, help 'Connection ID' - transformation executions list: --webhook-id → --connection-id, help 'Filter by connection ID' - REFERENCE.md: event list, bookmark list/create, bulk ops docs use --connection-id and 'connection ID' - API/JSON unchanged (webhook_id in request params); session/websocket unchanged - Aligns with plan: never refer to 'webhook ID' in user-facing text; use 'connection ID' Co-authored-by: Cursor <cursoragent@cursor.com>
Implementation (per phase_5a_d_inspection plan): - Events: list, get, raw-body, retry, cancel, mute; full list filters and pagination - Requests: list, get, raw-body, retry, events, ignored-events; list filters and --connection-ids for retry - Attempts: list (--event-id required), get; pagination and sort - Gateway: register event/request/attempt subcommands; helptext for resource names - Hookdeck client: events.go extended; new requests.go, attempts.go - Listen TUI: RetryEvent(ctx, id) signature Acceptance tests: full coverage for event/request/attempt list params and retry --connection-ids; pollForRequestsBySourceID and createConnectionAndTriggerEvent helpers (no skips). Docs: REFERENCE.md Events/Attempts/Requests in Current Functionality. .gitignore: temporary OpenAPI spec download excluded. --- Help output for new commands --- === hookdeck gateway event === List, get, retry, cancel, or mute events (processed webhook deliveries). Filter by connection ID (--connection-id), status, source, or destination. Usage: hookdeck gateway event [command] Aliases: event, events Available Commands: cancel Cancel an event get Get event details list List events mute Mute an event raw-body Get raw body of an event retry Retry an event === hookdeck gateway event list === List events (processed webhook deliveries). Filter by connection ID, source, destination, or status. Flags: --attempts, --body, --cli-id, --connection-id, --created-after, --created-before, --destination-id, --dir, --error-code, --headers, --id, --issue-id, --last-attempt-at-after, --last-attempt-at-before, --limit, --next, --order-by, --output, --parsed-query, --path, --prev, --response-status, --source-id, --status, --successful-at-after, --successful-at-before === hookdeck gateway event get === Get detailed information about an event by ID. hookdeck gateway event get <event-id> [--output json] === hookdeck gateway event raw-body === Output the raw request body of an event by ID. hookdeck gateway event raw-body <event-id> === hookdeck gateway event retry === Retry delivery for an event by ID. hookdeck gateway event retry <event-id> === hookdeck gateway event cancel === Cancel an event by ID. Cancelled events will not be retried. hookdeck gateway event cancel <event-id> === hookdeck gateway event mute === Mute an event by ID. Muted events will not trigger alerts or retries. hookdeck gateway event mute <event-id> === hookdeck gateway request === List, get, and retry requests (raw inbound webhooks). View events or ignored events for a request. Usage: hookdeck gateway request [command] Aliases: request, requests Available Commands: events List events for a request get Get request details ignored-events List ignored events for a request list List requests raw-body Get raw body of a request retry Retry a request === hookdeck gateway request list === List requests (raw inbound webhooks). Filter by source ID. Flags: --body, --created-after, --created-before, --dir, --headers, --id, --ingested-at-after, --ingested-at-before, --limit, --next, --order-by, --output, --parsed-query, --path, --prev, --rejection-cause, --source-id, --status, --verified === hookdeck gateway request get === Get detailed information about a request by ID. hookdeck gateway request get <request-id> [--output json] === hookdeck gateway request raw-body === Output the raw request body of a request by ID. hookdeck gateway request raw-body <request-id> === hookdeck gateway request retry === Retry a request by ID. By default retries on all connections. Use --connection-ids to retry only for specific connections. hookdeck gateway request retry <request-id> [--connection-ids web_1,web_2] Flags: --connection-ids Comma-separated connection IDs to retry (omit to retry all) === hookdeck gateway request events === List events (deliveries) created from a request. hookdeck gateway request events <request-id> [--limit, --next, --prev, --output] === hookdeck gateway request ignored-events === List ignored events for a request (e.g. filtered out or deduplicated). hookdeck gateway request ignored-events <request-id> [--limit, --next, --prev, --output] === hookdeck gateway attempt === List or get attempts (single delivery tries for an event). Use --event-id to list attempts for an event. Usage: hookdeck gateway attempt [command] Aliases: attempt, attempts Available Commands: get Get attempt details list List attempts === hookdeck gateway attempt list === List attempts for an event. Requires --event-id. hookdeck gateway attempt list --event-id evt_abc123 [--order-by, --dir, --limit, --next, --prev, --output] === hookdeck gateway attempt get === Get detailed information about an attempt by ID. hookdeck gateway attempt get <attempt-id> [--output json] Co-authored-by: Cursor <cursoragent@cursor.com>
- Update all transformation examples to addHandler() format - Fix transformation run API response model (TransformationExecutorOutput) - Add default content-type when request headers empty - Add TestTransformationRunModifiesRequest - README: Sources/destinations, Transformations, Requests/events/attempts sections - Add REFERENCE.md subsection links - Update .plans Co-authored-by: Cursor <cursoragent@cursor.com>
…ntual consistency) Add pollForAttemptsByEventID helper to handle API lag between event creation and attempt visibility. Fixes TestAttemptListJSON and TestAttemptGet failures in CI when attempts list returns empty before propagation completes. Co-authored-by: Cursor <cursoragent@cursor.com>
Replace dockers + docker_manifests with dockers_v2. The legacy flow failed with 'is a manifest list' because BuildKit produces OCI indexes for single-platform builds; docker manifest create expects plain images. dockers_v2 uses buildx to build multi-arch manifests in one step, avoiding that two-phase flow. Dockerfile updated to use TARGETPLATFORM for the binary copy path. Co-authored-by: Cursor <cursoragent@cursor.com>
dockers_v2 was added in v2.12; v2.10.2 does not support it. Co-authored-by: Cursor <cursoragent@cursor.com>
test.yml and test-npm-build.yml were still on v2.10.2, which does not support dockers_v2 in .goreleaser/linux.yml. Aligns with release.yml. Co-authored-by: Cursor <cursoragent@cursor.com>
…ation - Add Cobra Example to login, logout, version, whoami, completion, ci - Add Long to version (check for updates), completion (install context) - Add Annotations[cli.arguments] for listen positional args - Extend generate-reference: renderArgumentsTable, args before flags, backticks - Update listen Use for proper generated usage - Add Example to project list/use for generated docs - Update REFERENCE.md, REFERENCE.template.md, README per generator changes - Document cli.arguments and sandbox guidance in AGENTS.md - Remove accidental generate-reference binary Co-authored-by: Cursor <cursoragent@cursor.com>
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Phase 5a CLI updates: introduce the
hookdeck gatewaycommand group and add resource management under gateway. Completed: Phase 0 (gateway + connection update), Phase A (sources), Phase B (destinations), Phase C (transformations), Phase D (event/request/attempt inspection). User-facing terminology: use connection ID (and--connection-id) instead of "webhook ID"; root-levelhookdeck connection/connectionsshow a deprecation notice unless--output json.Commits
hookdeck gateway event,gateway request,gateway attemptwith list, get, retry, and related subcommands.Transformation examples use
addHandler("transform", ...); run pretty-prints output; README sections for sources, destinations, transformations, requests/events/attempts with REFERENCE.md links; generate-reference script/tooling.Add
pollForAttemptsByEventIDto handle API lag; fixes CI flakiness.What's in this branch
hookdeck gateway connection(create, list, get, upsert, update, delete, enable, disable, pause, unpause);hookdeck gateway source/sources;hookdeck gateway destination/destinations;hookdeck gateway transformation/transformations;hookdeck gateway event/request/attempt(list, get, retry, and related subcommands).--connection-id; API still useswebhook_idwhere applicable.hookdeck connection/connectionsstill work; deprecation notice printed (unless--output json).To-do (from Phase 5a plan)
Next recommended step: Phase E (metrics querying) or Phase F (agent-skills update).