{"id":48821518,"url":"https://github.com/selfradiance/agentgate-bonded-file-transform","last_synced_at":"2026-04-14T15:02:17.699Z","repository":{"id":343830501,"uuid":"1179309788","full_name":"selfradiance/agentgate-bonded-file-transform","owner":"selfradiance","description":"A bonded file-transform agent governed by AgentGate's bond-and-slash model","archived":false,"fork":false,"pushed_at":"2026-04-06T19:34:59.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T21:23:32.689Z","etag":null,"topics":["agentgate","ai-agents","bonded-execution","file-transform","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/selfradiance/agentgate","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/selfradiance.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-11T22:45:52.000Z","updated_at":"2026-04-06T19:35:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/selfradiance/agentgate-bonded-file-transform","commit_stats":null,"previous_names":["selfradiance/agent-001-file-transform","selfradiance/agentgate-bonded-file-transform"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/selfradiance/agentgate-bonded-file-transform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfradiance%2Fagentgate-bonded-file-transform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfradiance%2Fagentgate-bonded-file-transform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfradiance%2Fagentgate-bonded-file-transform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfradiance%2Fagentgate-bonded-file-transform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selfradiance","download_url":"https://codeload.github.com/selfradiance/agentgate-bonded-file-transform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfradiance%2Fagentgate-bonded-file-transform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31801629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T11:13:53.975Z","status":"ssl_error","status_checked_at":"2026-04-14T11:13:53.299Z","response_time":153,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentgate","ai-agents","bonded-execution","file-transform","typescript"],"created_at":"2026-04-14T15:02:15.729Z","updated_at":"2026-04-14T15:02:17.690Z","avatar_url":"https://github.com/selfradiance.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Agent 001: Bonded File Transform\n\nA bonded file-transform agent governed by AgentGate's bond-and-slash model. The agent accepts a task contract (JSON), executes a CSV-to-JSON transformation, verifies the result against a SHA-256 hash, and resolves through AgentGate. Pass = bond released. Fail = bond slashed.\n\n## Why This Exists\n\nAI agents today can fail silently, hallucinate outputs, or produce garbage — and nothing happens. There's no cost to doing a bad job. Agent 001 proves a different model: the agent posts collateral before it acts, the result is verified deterministically, and the bond is settled based on the outcome.\n\nThis is the first agent in the AgentGate ecosystem. It proves the simplest verification regime: machine checks machine.\n\n## How It Relates to AgentGate\n\n[AgentGate](https://github.com/selfradiance/agentgate) is the enforcement substrate. Agent 001 calls AgentGate's API to register an identity, lock a bond, execute a bonded action, and resolve the outcome. AgentGate handles all bonding, signing, and settlement logic. Agent 001 handles the transformation and verification.\n\nAgentGate must be running for Agent 001 to work.\n\n## What's Implemented\n\n- CLI that accepts a JSON task contract specifying input file, output file, bond amount, TTL, and expected output hash\n- CSV-to-JSON transformation with allowed-directory restriction and symlink rejection\n- SHA-256 hash verification — deterministic pass/fail\n- Full AgentGate lifecycle: identity → bond → execute → resolve\n- Ed25519 signed requests matching AgentGate's format\n- Path traversal protection (allowlist-based, not blocklist)\n- Quoted-field detection in CSV (rejects instead of silently corrupting)\n- CLI verifies server-side resolution result, not just local hash\n- GitHub Actions CI\n\n## Quick Start\n\n```bash\n# 1. Start AgentGate\ncd ~/Desktop/projects/agentgate \u0026\u0026 npm run restart\n\n# 2. Run Agent 001\ncd ~/Desktop/projects/agent-001-file-transform\ncp .env.example .env  # add your AGENTGATE_REST_KEY\nnpm install\nnpx tsx src/cli.ts examples/sample-contract.json\n```\n\n## Example\n\n```json\n{\n  \"task\": \"file-transform\",\n  \"transform_type\": \"csv-to-json\",\n  \"input_file\": \"examples/sample-input.csv\",\n  \"output_file\": \"examples/sample-output.json\",\n  \"bond_amount_cents\": 100,\n  \"ttl_seconds\": 300,\n  \"expected_output_hash\": \"sha256:2d02509c...\"\n}\n```\n\nThe agent reads the contract, posts a bond on AgentGate, transforms the CSV to JSON, computes the SHA-256 hash of the output, compares it to the expected hash, and resolves the bond accordingly.\n\n## Scope / Non-Goals\n\n- CLI only — no web server, no API\n- CSV-to-JSON only — no other transform types\n- Local files only — no uploads or downloads\n- New identity every run — no persistence across invocations\n- No automated integration tests against live AgentGate (manual verification only)\n\n## Tests\n\n60 tests across 3 files covering transformation, verification, contract validation, path traversal attacks, adversarial edge cases (empty files, malformed CSV, garbage contracts, unicode), and client signing logic.\n\n```bash\nnpm test\n```\n\n## Related Projects\n\n- [AgentGate](https://github.com/selfradiance/agentgate) — the core execution engine\n- [Agent 002: File Guardian](https://github.com/selfradiance/agentgate-bonded-file-guardian) — command-based verification\n- [Agent 003: Email Rewriter](https://github.com/selfradiance/agentgate-bonded-email-rewriter) — human judgment in the loop\n\n## Status\n\nComplete — v0.1.1 shipped. Triple-audited (Claude Code 8-round + Codex cold-eyes + adversarial edge cases). 60 tests.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselfradiance%2Fagentgate-bonded-file-transform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselfradiance%2Fagentgate-bonded-file-transform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselfradiance%2Fagentgate-bonded-file-transform/lists"}