mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
* Add event-triggered routines and workflow skill templates * Add generic host-verified webhook ingress for tools * Migrate GitHub webhook normalization into github tool * Bump github tool registry version * Stabilize trace E2E test rig and approval behavior * Add reusable gateway workflow harness with mock LLM server (#762) * Add reusable gateway workflow test harness with mock LLM server * Fix clippy issues in workflow harness * Stabilize trace E2E test rig and approval behavior * Address PR review feedback on gateway workflow harness - Extract shared TestChannelHandle into test_channel.rs with name override support, eliminating ~55 lines of duplication between test_rig.rs and gateway_workflow_harness.rs - Remove redundant RoutineEngine creation that was immediately overwritten by Agent::run() - Replace flaky sleep(500ms) with polling loop for routine run count check - Use components.context_manager instead of creating a fresh ContextManager for job tools, ensuring agent and tools share the same instance Co-Authored-By: Claude Opus 4.6 <[email protected]> * Fix import ordering in gateway_workflow_harness Co-Authored-By: Claude Opus 4.6 <[email protected]> --------- Co-authored-by: Claude Opus 4.6 <[email protected]> * Address PR #758 review feedback - Fix header_value to use fully case-insensitive lookup (iterate with to_ascii_lowercase) instead of checking only exact/lower/upper variants - Change comment_id from u32 to u64 to handle GitHub's billion-range IDs - Remove handle_webhook from LLM-facing JSON schema to prevent direct invocation bypassing HMAC verification - Rename enrichment keys from repository/sender to repository_name/ sender_login to preserve original JSON objects in webhook payloads - Remove put_string_normalized helper (no longer needed) - Replace no-op tests (test_validate_event_in_create_pr_review, test_validate_merge_method) with test_header_value_case_insensitive - Add README docs for 6 undocumented actions (list_issue_comments, create_issue_comment, list_pull_request_comments, reply_pull_request_comment, get_pull_request_reviews, get_combined_status) - Add comment explaining max_tool_calls <= 8 bound in e2e test - Fix gateway workflow harness: add webhook_capability with secret auth to MockGithubWebhookTool, matching staging's hardened webhook security - Fix merge artifacts: remove duplicate test function, orphaned code fragment in e2e_routine_heartbeat [skip-regression-check] Co-Authored-By: Claude Opus 4.6 <[email protected]> * Fix formatting in gateway workflow harness Co-Authored-By: Claude Opus 4.6 <[email protected]> * Address Copilot review: filter keys, pr_number fallback, feature gate, version alignment - Update SKILL.md and workflow-routines.md templates to use `repository_name` and `sender_login` (matching enriched payload field names) - Mark webhook HMAC secret as required in SKILL.md prerequisites - Fall back to `/issue/number` for `pr_number` on issue_comment PR webhooks - Gate `gateway_workflow_harness` module behind `#[cfg(feature = "libsql")]` - Align tool version to 0.2.1 in Cargo.toml and capabilities.json Co-Authored-By: Claude Opus 4.6 <[email protected]> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
66 lines
1.5 KiB
JSON
66 lines
1.5 KiB
JSON
{
|
|
"version": "0.2.1",
|
|
"wit_version": "0.3.0",
|
|
"capabilities": {
|
|
"webhook": {
|
|
"hmac_secret_name": "github_webhook_secret",
|
|
"hmac_signature_header": "x-hub-signature-256",
|
|
"hmac_prefix": "sha256="
|
|
},
|
|
"http": {
|
|
"allowlist": [
|
|
{
|
|
"host": "api.github.com",
|
|
"path_prefix": "/",
|
|
"methods": [
|
|
"GET",
|
|
"POST",
|
|
"PUT"
|
|
]
|
|
}
|
|
],
|
|
"credentials": {
|
|
"github_token": {
|
|
"secret_name": "github_token",
|
|
"location": {
|
|
"type": "bearer"
|
|
},
|
|
"host_patterns": [
|
|
"api.github.com"
|
|
]
|
|
}
|
|
},
|
|
"rate_limit": {
|
|
"requests_per_minute": 60,
|
|
"requests_per_hour": 3600
|
|
}
|
|
},
|
|
"secrets": {
|
|
"allowed_names": [
|
|
"github_token",
|
|
"github_*"
|
|
]
|
|
}
|
|
},
|
|
"auth": {
|
|
"secret_name": "github_token",
|
|
"display_name": "GitHub",
|
|
"instructions": "Create a Personal Access Token at github.com/settings/tokens with repo scope, then paste it here.",
|
|
"setup_url": "https://github.com/settings/tokens",
|
|
"token_hint": "Starts with 'ghp_' or 'github_pat_'",
|
|
"env_var": "GITHUB_TOKEN"
|
|
},
|
|
"setup": {
|
|
"required_secrets": [
|
|
{
|
|
"name": "github_token",
|
|
"prompt": "GitHub Personal Access Token (create one at github.com/settings/tokens with 'repo' scope)"
|
|
}
|
|
]
|
|
},
|
|
"config": {
|
|
"default_limit": 30,
|
|
"max_limit": 100
|
|
}
|
|
}
|