Skip to content

Commit ace64f4

Browse files
committed
Merge origin/develop into codex-integration-by-hooks
Signed-off-by: Jin Ku <jin.ku@sendbird.com>
2 parents e633de6 + 9c1cf2f commit ace64f4

25 files changed

Lines changed: 3391 additions & 514 deletions

.github/workflows/ci.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,18 @@ env:
1414
jobs:
1515
# ─── Fast gates (fail early, save CI minutes) ───
1616

17+
check-test-presence:
18+
name: test presence
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
with:
23+
fetch-depth: 50
24+
- name: Check filter modules have tests
25+
run: |
26+
git fetch origin "${{ github.base_ref }}" --depth=1 || true
27+
bash scripts/check-test-presence.sh "origin/${{ github.base_ref }}"
28+
1729
fmt:
1830
name: fmt
1931
runs-on: ubuntu-latest

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ All notable changes to rtk (Rust Token Killer) will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [Unreleased]
9+
10+
### Features
11+
12+
* **aws:** expand CLI filters from 8 to 25 subcommands — CloudWatch Logs, CloudFormation events, Lambda, IAM, DynamoDB (with type unwrapping), ECS tasks, EC2 security groups, S3API objects, S3 sync/cp, EKS, SQS, Secrets Manager ([#885](https://github.com/rtk-ai/rtk/pull/885))
13+
* **aws:** add shared runner `run_aws_filtered()` eliminating per-handler boilerplate
14+
* **tee:** add `force_tee_hint()` — truncated output saves full data to file with recovery hint
15+
816
## [0.34.2](https://github.com/rtk-ai/rtk/compare/v0.34.1...v0.34.2) (2026-03-30)
917

1018

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,18 @@ rtk bundle install # Ruby gems (strip Using lines)
201201
rtk prisma generate # Schema generation (no ASCII art)
202202
```
203203

204+
### AWS
205+
```bash
206+
rtk aws sts get-caller-identity # One-line identity
207+
rtk aws ec2 describe-instances # Compact instance list
208+
rtk aws lambda list-functions # Name/runtime/memory (strips secrets)
209+
rtk aws logs get-log-events # Timestamped messages only
210+
rtk aws cloudformation describe-stack-events # Failures first
211+
rtk aws dynamodb scan # Unwraps type annotations
212+
rtk aws iam list-roles # Strips policy documents
213+
rtk aws s3 ls # Truncated with tee recovery
214+
```
215+
204216
### Containers
205217
```bash
206218
rtk docker ps # Compact container list
@@ -434,6 +446,7 @@ Blocked on upstream BeforeToolCallback support ([mistral-vibe#531](https://githu
434446
| `rspec` / `bundle exec rspec` | `rtk rspec` |
435447
| `rubocop` / `bundle exec rubocop` | `rtk rubocop` |
436448
| `bundle install/update` | `rtk bundle ...` |
449+
| `aws sts/ec2/lambda/...` | `rtk aws ...` |
437450
| `docker ps/images/logs` | `rtk docker ...` |
438451
| `kubectl get/logs` | `rtk kubectl ...` |
439452
| `curl` | `rtk curl` |

docs/maintainers/MAINTAINERS_APPLY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ To apply, you should have:
2222

2323
### ✍️ How to Apply
2424

25-
1. Open a discussion in [rtk-ai/rtk Maintainers Applications · Discussions · GitHub]() titled **Maintainer Application: [Your GitHub Handle]**
25+
1. Open a discussion in [rtk-ai/rtk Maintainers Applications · Discussions · GitHub](https://github.com/rtk-ai/rtk/discussions/categories/maintainers-applications) titled **Maintainer Application: [Your GitHub Handle]**
2626
2. In your application, include:
2727
- The ecosystem(s) you're interested in
2828
- Your experience with those ecosystems

scripts/check-test-presence.sh

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# check-test-presence.sh — CI guard: new/modified *_cmd.rs files must have #[cfg(test)]
5+
#
6+
# Usage:
7+
# bash scripts/check-test-presence.sh [BASE_BRANCH]
8+
# bash scripts/check-test-presence.sh --self-test
9+
#
10+
# BASE_BRANCH defaults to origin/develop
11+
12+
if [ "${1:-}" = "--self-test" ]; then
13+
# Self-test: create a tempfile without tests and verify the check catches it
14+
TMPFILE="src/cmds/system/_rtk_check_self_test_cmd.rs"
15+
echo "pub fn run() {}" > "$TMPFILE"
16+
trap 'rm -f "$TMPFILE"' EXIT
17+
18+
if grep -q '#\[cfg(test)\]' "$TMPFILE"; then
19+
echo "FAIL: self-test broken (false negative)"
20+
exit 1
21+
fi
22+
rm "$TMPFILE"
23+
trap - EXIT
24+
echo "PASS: --self-test detection works correctly"
25+
exit 0
26+
fi
27+
28+
BASE_BRANCH="${1:-origin/develop}"
29+
EXIT_CODE=0
30+
31+
# Find *_cmd.rs files that were added or modified in this PR
32+
CHANGED_FILES=$(git diff --name-only --diff-filter=AM --no-renames "$BASE_BRANCH"...HEAD \
33+
2>/dev/null | grep -E 'src/cmds/.+_cmd\.rs$' || true)
34+
35+
if [ -z "$CHANGED_FILES" ]; then
36+
echo "check-test-presence: no *_cmd.rs changes detected — OK"
37+
exit 0
38+
fi
39+
40+
echo "check-test-presence: checking $(echo "$CHANGED_FILES" | wc -l | tr -d ' ') filter module(s)..."
41+
echo ""
42+
43+
while IFS= read -r file; do
44+
if [ ! -f "$file" ]; then
45+
continue
46+
fi
47+
48+
if grep -q '#\[cfg(test)\]' "$file"; then
49+
echo " PASS $file"
50+
else
51+
echo " FAIL $file"
52+
echo " Missing #[cfg(test)] module."
53+
echo " Every *_cmd.rs filter must include inline unit tests."
54+
echo " Reference: src/cmds/cloud/aws_cmd.rs"
55+
echo ""
56+
EXIT_CODE=1
57+
fi
58+
done <<< "$CHANGED_FILES"
59+
60+
echo ""
61+
62+
if [ "$EXIT_CODE" -ne 0 ]; then
63+
echo "check-test-presence: FAILED — add tests before merging."
64+
echo "See .claude/rules/cli-testing.md for the testing guide."
65+
else
66+
echo "check-test-presence: all filter modules have tests — OK"
67+
fi
68+
69+
exit "$EXIT_CODE"

src/cmds/cloud/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
55
## Specifics
66

7-
- `aws_cmd.rs` forces `--output json` for structured parsing
7+
- `aws_cmd.rs` — 25 specialized filters covering STS, S3, EC2, ECS, RDS, CloudFormation, CloudWatch Logs, Lambda, IAM, DynamoDB, EKS, SQS, Secrets Manager. Forces `--output json` for structured parsing, uses `force_tee_hint()` for truncation recovery, strips Lambda secrets. Shared runner `run_aws_filtered()` handles boilerplate for JSON-based filters; text-based filters (S3 ls, S3 sync/cp) have dedicated runners
88
- `container.rs` handles both Docker and Kubernetes; `DockerCommands` and `KubectlCommands` sub-enums in `main.rs` route to `container::run()` -- uses passthrough for unknown subcommands
99
- `curl_cmd.rs` auto-detects JSON responses and shows schema (structure without values)
1010
- `wget_cmd.rs` wraps wget with output filtering

0 commit comments

Comments
 (0)