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/ISSUE_TEMPLATE/adapter_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ body:
id: hook
attributes:
label: Available integration point
description: Shell hook, MCP, plugin API, editor extension, provider gateway, or other documented API.
description: Shell hook, plugin API, editor extension, provider gateway, or other documented API.
validations:
required: true
- type: textarea
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ body:
options:
- tool-gateway
- generic-shell adapter
- MCP server
- server
- context gateway
- output gateway
- state gateway
Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
scripts/check-release-version.js|scripts/npm-publish-plan.js|scripts/npm-dist-tag-check.js|scripts/release-config.js)
npm_required=true
;;
scripts/npm-preview-smoke.js|scripts/package-release.js|scripts/release-dry-run.sh)
scripts/npm-beta-smoke.js|scripts/npm-preview-smoke.js|scripts/package-release.js|scripts/release-dry-run.sh)
rust_required=true
npm_required=true
;;
Expand Down Expand Up @@ -197,7 +197,7 @@ jobs:
scripts/check-release-version.js|scripts/npm-publish-plan.js|scripts/npm-dist-tag-check.js|scripts/release-config.js)
npm_required=true
;;
scripts/npm-preview-smoke.js|scripts/package-release.js|scripts/release-dry-run.sh)
scripts/npm-beta-smoke.js|scripts/npm-preview-smoke.js|scripts/package-release.js|scripts/release-dry-run.sh)
rust_required=true
npm_required=true
;;
Expand Down Expand Up @@ -245,7 +245,7 @@ jobs:
assert_route 'release metadata helper edits' 'scripts/check-release-version.js' false 'workflow=false claim_docs=false rust=false npm=true'
assert_route 'claim validator edits' 'scripts/validate-command-support-matrix.js' false 'workflow=false claim_docs=true rust=false npm=false'
assert_route 'verify script edits' 'scripts/verify.sh' false 'workflow=false claim_docs=true rust=true npm=true'
assert_route 'script edits' 'scripts/npm-preview-smoke.js' false 'workflow=false claim_docs=false rust=true npm=true'
assert_route 'script edits' 'scripts/npm-beta-smoke.js' false 'workflow=false claim_docs=false rust=true npm=true'
assert_route 'unknown root image edits' 'image.svg' false 'workflow=false claim_docs=false rust=true npm=true'
assert_route 'uncertain new branch push' 'assets/brand/mascot.png' true 'workflow=false claim_docs=true rust=true npm=true'

Expand All @@ -266,8 +266,8 @@ jobs:
- name: Whitespace
run: git diff --check

npm-preview-smoke:
name: npm preview smoke (${{ matrix.os }})
npm-beta-smoke:
name: npm beta smoke (${{ matrix.os }})
runs-on: ${{ matrix.os }}
needs: changes
if: ${{ needs.changes.outputs.npm_required == 'true' }}
Expand All @@ -282,15 +282,15 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: NPM preview install smoke
run: node scripts/npm-preview-smoke.js
- name: NPM beta install smoke
run: node scripts/npm-beta-smoke.js

# If branch protection is enabled, require this aggregate job instead of
# optional heavy jobs that intentionally skip for docs/static asset changes.
ci-required:
runs-on: ubuntu-latest
if: ${{ always() }}
needs: [changes, docs-check, claim-docs-check, workflow-check, rust, npm-preview-smoke]
needs: [changes, docs-check, claim-docs-check, workflow-check, rust, npm-beta-smoke]
steps:
- name: Check required CI results
shell: bash
Expand All @@ -300,7 +300,7 @@ jobs:
CLAIM_DOCS_RESULT: ${{ needs.claim-docs-check.result }}
WORKFLOW_RESULT: ${{ needs.workflow-check.result }}
RUST_RESULT: ${{ needs.rust.result }}
NPM_RESULT: ${{ needs.npm-preview-smoke.result }}
NPM_RESULT: ${{ needs.npm-beta-smoke.result }}
CLAIM_DOCS_REQUIRED: ${{ needs.changes.outputs.claim_docs_required }}
WORKFLOW_REQUIRED: ${{ needs.changes.outputs.workflow_required }}
RUST_REQUIRED: ${{ needs.changes.outputs.rust_required }}
Expand Down Expand Up @@ -349,11 +349,11 @@ jobs:

if [ "$NPM_REQUIRED" = "true" ]; then
if [ "$NPM_RESULT" != "success" ]; then
echo "npm preview smoke required but result was $NPM_RESULT" >&2
echo "npm beta smoke required but result was $NPM_RESULT" >&2
exit 1
fi
elif [ "$NPM_RESULT" != "skipped" ]; then
echo "npm preview smoke should be skipped but result was $NPM_RESULT" >&2
echo "npm beta smoke should be skipped but result was $NPM_RESULT" >&2
exit 1
fi

Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@ on:
workflow_dispatch:
inputs:
version:
description: 'Release version: N.N.N for stable, N.N.N-preview.N for public-test'
description: 'Release version: N.N.N for stable, N.N.N-beta.N for beta'
required: true
type: string
channel:
description: 'Release channel'
required: true
type: choice
options:
- preview
- beta
- stable
source_ref:
description: 'Source ref. Defaults to develop for preview and main for stable.'
description: 'Source ref. Defaults to develop for beta and main for stable.'
required: false
type: string
dry_run:
Expand Down Expand Up @@ -75,12 +75,12 @@ jobs:
[ "$source_ref" = 'main' ] || { echo "stable releases must use source_ref=main" >&2; exit 1; }
[[ "$INPUT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "stable version must match N.N.N" >&2; exit 1; }
;;
preview)
case "$source_ref" in develop|release/*) ;; *) echo "preview releases must use source_ref=develop or release/*" >&2; exit 1 ;; esac
[[ "$INPUT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+-preview\.[0-9]+$ ]] || { echo "preview version must match N.N.N-preview.N" >&2; exit 1; }
beta)
case "$source_ref" in develop|release/*) ;; *) echo "beta releases must use source_ref=develop or release/*" >&2; exit 1 ;; esac
[[ "$INPUT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+-beta\.[0-9]+$ ]] || { echo "beta version must match N.N.N-beta.N" >&2; exit 1; }
;;
*)
echo "channel must be stable or preview" >&2
echo "channel must be stable or beta" >&2
exit 1
;;
esac
Expand Down Expand Up @@ -391,7 +391,7 @@ jobs:
--version "${{ needs.preflight.outputs.version }}"
--channel "${{ inputs.channel }}"
)
if [ "${{ inputs.channel }}" = 'preview' ]; then
args+=(--allow-prestable-preview-latest)
if [ "${{ inputs.channel }}" = 'beta' ]; then
args+=(--allow-prestable-prerelease-latest)
fi
"${args[@]}"
5 changes: 1 addition & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ TFY is a Rust-first token-saving middleware for AI-agent I/O boundaries. It shou
1. **Plain text by default** — model-facing command output must not default to JSON envelopes.
2. **No negative savings** — only summarize when the model-visible result is smaller than redacted public raw output.
3. **Raw evidence first** — exact stdout/stderr bytes must be stored locally before reduction, redaction, suppression, or summarization.
4. **Truthful adapter claims** — MCP support means host-routed MCP tool/resource integration. Do not claim private Codex hook interception, provider prompt mutation, or universal shell interception unless implemented and tested.
4. **Truthful adapter claims** — do not claim private Codex hook interception, provider prompt mutation, or universal shell interception unless implemented and tested.
5. **Preview-only output validation** — do not claim workspace apply authority until explicit authority/provenance gates and tests exist.

## Product routing rules
Expand All @@ -28,7 +28,6 @@ TFY is a Rust-first token-saving middleware for AI-agent I/O boundaries. It shou
- `crates/tfy-cli/src/main.rs` — CLI declaration and dispatch only.
- `crates/tfy-cli/src/gateways.rs` — Tool/Context/Output gateway execution.
- `crates/tfy-cli/src/adapter.rs` — generic-shell adapter install/run/report behavior.
- `crates/tfy-cli/src/mcp.rs` — stdio MCP JSON-RPC server and Codex MCP setup snippet.
- `crates/tfy-cli/src/util.rs` — small CLI helper functions only.
- `docs/` — durable architecture, protocol, harness, and contributor documentation.
- `.github/` — GitHub issue, PR, and CI scaffolding.
Expand Down Expand Up @@ -127,10 +126,8 @@ Useful focused checks:
```bash
cargo test -p tfy-cli --test tool_gateway
cargo test -p tfy-cli --test adapter_gateway
cargo test -p tfy-cli --test mcp_server
cargo run -q -p tfy-cli -- tool-gateway -- sh -c 'printf ok'
cargo run -q -p tfy-cli -- adapter capabilities
cargo run -q -p tfy-cli -- mcp capabilities
```

## Documentation placement
Expand Down
6 changes: 3 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ resolver = "2"

[workspace.package]
edition = "2021"
version = "0.1.0"
version = "0.1.1"
license = "MIT"
repository = "https://github.com/ium-team/tfy"

Expand Down
Loading
Loading