Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
- name: Install agctl with all client extras and test deps
run: |
python -m pip install --upgrade pip
pip install -e ".[dev,http,jq,kafka,db,logs]"
pip install -e ".[dev,http,jq,kafka,db,logs,grpc]"

- name: Run tests
run: pytest
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,9 @@ uv.lock

# agctl test-runbook results (ephemeral per-run reports)
*.results.md

# agctl mock daemon runtime state (pidfiles + logs; default state-dir ./.agctl/)
.agctl/

# superpowers SDD scratch (task briefs/reports, review packages, progress ledger)
.superpowers/
113 changes: 0 additions & 113 deletions .superpowers/sdd/task-10-report.md

This file was deleted.

40 changes: 38 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,10 @@ pip install -e ".[http]" # http call / request / ping / check ready
pip install -e ".[jq]" # jq flags: http --match/--jq-path, mock match.jq
pip install -e ".[kafka]" # kafka produce / consume / assert
pip install -e ".[db]" # db query / assert
pip install -e ".[grpc]" # grpc call / healthcheck (includes grpcio, protobuf, jq)
pip install -e ".[logs]" # logs query / assert / tail (includes jq)
pip install -e ".[http,kafka,db]" # everything except logs (typical — bundles jq)
pip install -e ".[http,kafka,db,logs]" # everything
pip install -e ".[http,kafka,db]" # everything except logs/grpc (typical — bundles jq)
pip install -e ".[http,kafka,db,grpc,logs]" # everything
```

Verify the install — both binary names work:
Expand Down Expand Up @@ -111,6 +112,8 @@ auto-discovered from the current directory upward).
| | `assert` | Fail (exit 1) unless a matching message arrives within `--timeout`. Modes: `--contains`, `--match <jq>`, `--pattern <name>` (combinable) |
| **`db`** | `query` | Run `--template` or free-form `--sql`; return all rows |
| | `assert` | Assert `--expect-rows N`, or `--expect-value --path <jq> --equals <v>` on the first row |
| **`grpc`** | `call <template>` | Execute a named gRPC template (unary, client-stream, server-stream, bidi) |
| | `healthcheck` | gRPC health check via grpc.health.v1.Health |
| **`logs`** | `query` | Scan log sources; filter by `--since`, `--match` (jq), `--level` |
| | `assert` | Assert logs match/nmatch a condition within `--timeout` (one-shot or poll) |
| | `tail` | Stream log entries as NDJSON (with `--duration` or `--until-stopped`) |
Expand Down Expand Up @@ -345,6 +348,39 @@ defaults:
timeout_seconds: 10
database_connection: main-db

# --- grpc: gRPC service targets and templates -------------------------------
grpc:
# targets: named gRPC server addresses
targets:
order-service:
address: "localhost:50051"
use_tls: false # optional; defaults to false (plaintext)
reflection: auto # auto (default) | on | off
# tls: # optional TLS settings (when use_tls: true)
# override_authority: "" # optional; override the TLS server name

# descriptors: fallback proto descriptor sets when reflection is unavailable.
# Each entry sets exactly one of `descriptor_set` (a compiled FileDescriptorSet
# .pb file) or `proto` (a .proto glob compiled at load via protoc; pair with
# `include_paths`).
descriptors:
- descriptor_set: "protos/order-service.desc"
# - proto: "protos/orders/v1/*.proto"
# include_paths: ["protos"]

# templates: named gRPC request templates
templates:
create-order:
description: "Create a new order via gRPC"
target: order-service
service: "orders.OrderService"
method: "CreateOrder"
message:
customer_id: "{customer_id}"
items:
- sku: "{sku}"
quantity: 1

# --- logs: log file sources for tailing and searching ------------------------
logs:
sources:
Expand Down
Loading
Loading