Initial commit
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
external_agents:
|
||||
preferred_order:
|
||||
- claude_code
|
||||
- codex
|
||||
- cursor
|
||||
- opencode
|
||||
|
||||
# model_flag, new_session_flag, resume_session_flag depend on your CLI version.
|
||||
# Leave empty for CLI defaults, or set explicitly for deterministic behavior.
|
||||
|
||||
codex:
|
||||
enabled: true
|
||||
command: codex
|
||||
model: ""
|
||||
model_flag: "--model"
|
||||
session_mode: auto
|
||||
session_id: ""
|
||||
new_session_flag: ""
|
||||
resume_session_flag: ""
|
||||
run_mode: interactive
|
||||
interactive_timeout_seconds: 21600
|
||||
approval_mode: auto
|
||||
extra_args: []
|
||||
|
||||
cursor:
|
||||
enabled: true
|
||||
command: cursor-agent
|
||||
model: ""
|
||||
model_flag: ""
|
||||
session_mode: auto
|
||||
session_id: ""
|
||||
new_session_flag: ""
|
||||
resume_session_flag: ""
|
||||
run_mode: interactive
|
||||
interactive_timeout_seconds: 21600
|
||||
approval_mode: full-auto
|
||||
extra_args: []
|
||||
|
||||
claude_code:
|
||||
enabled: true
|
||||
command: claude
|
||||
model: ""
|
||||
model_flag: "--model"
|
||||
session_mode: auto
|
||||
session_id: ""
|
||||
new_session_flag: ""
|
||||
resume_session_flag: ""
|
||||
run_mode: interactive
|
||||
interactive_timeout_seconds: 21600
|
||||
approval_mode: full-auto
|
||||
extra_args: []
|
||||
|
||||
opencode:
|
||||
enabled: true
|
||||
command: opencode
|
||||
model: ""
|
||||
model_flag: "--model"
|
||||
show_thinking: true
|
||||
session_mode: auto
|
||||
session_id: ""
|
||||
new_session_flag: ""
|
||||
resume_session_flag: ""
|
||||
run_mode: interactive
|
||||
interactive_timeout_seconds: 21600
|
||||
approval_mode: full-auto
|
||||
extra_args: []
|
||||
|
||||
native_subagents:
|
||||
general:
|
||||
enabled: true
|
||||
model: ""
|
||||
max_iterations: 24
|
||||
default_isolation: shared
|
||||
background: false
|
||||
allowed_tools: []
|
||||
explore:
|
||||
enabled: true
|
||||
model: ""
|
||||
max_iterations: 16
|
||||
default_isolation: shared
|
||||
background: false
|
||||
allowed_tools: []
|
||||
plan:
|
||||
enabled: true
|
||||
model: ""
|
||||
max_iterations: 16
|
||||
default_isolation: shared
|
||||
background: false
|
||||
allowed_tools: []
|
||||
implement:
|
||||
enabled: true
|
||||
model: ""
|
||||
max_iterations: 24
|
||||
default_isolation: worktree
|
||||
background: false
|
||||
allowed_tools: []
|
||||
verify:
|
||||
enabled: true
|
||||
model: ""
|
||||
max_iterations: 24
|
||||
default_isolation: worktree
|
||||
background: true
|
||||
allowed_tools: []
|
||||
@@ -0,0 +1,130 @@
|
||||
# Built-in channel runtime template.
|
||||
# Empty `allow_from` means deny-by-default. Use `["*"]` only if you want to allow all senders.
|
||||
# Install provider extras with `pip install -e .[channels-<provider>]`.
|
||||
# Bridge providers:
|
||||
# - whatsapp: requires a companion bridge reachable at `bridge_url`
|
||||
# - mochat: requires Mochat service endpoints plus `claw_token`
|
||||
channels:
|
||||
send_progress: true
|
||||
send_tool_hints: false
|
||||
telegram:
|
||||
enabled: false
|
||||
# Required: token
|
||||
token: ""
|
||||
proxy: null
|
||||
reply_to_message: false
|
||||
allow_from: []
|
||||
whatsapp:
|
||||
enabled: false
|
||||
# Required: bridge_url
|
||||
bridge_url: ws://localhost:3001
|
||||
bridge_token: ""
|
||||
allow_from: []
|
||||
discord:
|
||||
enabled: false
|
||||
# Required: token
|
||||
token: ""
|
||||
gateway_url: wss://gateway.discord.gg/?v=10&encoding=json
|
||||
intents: 37377
|
||||
group_policy: mention
|
||||
allow_from: []
|
||||
feishu:
|
||||
enabled: false
|
||||
# Required: app_id, app_secret
|
||||
app_id: ""
|
||||
app_secret: ""
|
||||
encrypt_key: ""
|
||||
verification_token: ""
|
||||
react_emoji: THUMBSUP
|
||||
allow_from: []
|
||||
mochat:
|
||||
enabled: false
|
||||
# Required: base_url, claw_token, agent_user_id
|
||||
base_url: https://mochat.io
|
||||
socket_url: ""
|
||||
socket_path: /socket.io
|
||||
socket_disable_msgpack: false
|
||||
socket_reconnect_delay_ms: 1000
|
||||
socket_max_reconnect_delay_ms: 10000
|
||||
socket_connect_timeout_ms: 10000
|
||||
refresh_interval_ms: 30000
|
||||
watch_timeout_ms: 25000
|
||||
watch_limit: 100
|
||||
retry_delay_ms: 500
|
||||
max_retry_attempts: 0
|
||||
claw_token: ""
|
||||
agent_user_id: ""
|
||||
sessions: []
|
||||
panels: []
|
||||
mention:
|
||||
require_in_groups: false
|
||||
groups: {}
|
||||
reply_delay_mode: non-mention
|
||||
reply_delay_ms: 120000
|
||||
allow_from: []
|
||||
dingtalk:
|
||||
enabled: false
|
||||
# Required: client_id, client_secret
|
||||
client_id: ""
|
||||
client_secret: ""
|
||||
allow_from: []
|
||||
email:
|
||||
enabled: false
|
||||
# Required before runtime use: consent_granted plus IMAP/SMTP credentials
|
||||
consent_granted: false
|
||||
imap_host: ""
|
||||
imap_port: 993
|
||||
imap_username: ""
|
||||
imap_password: ""
|
||||
imap_mailbox: INBOX
|
||||
imap_use_ssl: true
|
||||
smtp_host: ""
|
||||
smtp_port: 587
|
||||
smtp_username: ""
|
||||
smtp_password: ""
|
||||
smtp_use_tls: true
|
||||
smtp_use_ssl: false
|
||||
from_address: ""
|
||||
auto_reply_enabled: true
|
||||
poll_interval_seconds: 30
|
||||
mark_seen: true
|
||||
max_body_chars: 12000
|
||||
subject_prefix: "Re: "
|
||||
allow_from: []
|
||||
slack:
|
||||
enabled: false
|
||||
# Required: bot_token, app_token
|
||||
mode: socket
|
||||
webhook_path: /slack/events
|
||||
bot_token: ""
|
||||
app_token: ""
|
||||
user_token_read_only: true
|
||||
reply_in_thread: true
|
||||
react_emoji: eyes
|
||||
group_policy: mention
|
||||
group_allow_from: []
|
||||
dm:
|
||||
enabled: true
|
||||
policy: open
|
||||
allow_from: []
|
||||
allow_from: []
|
||||
qq:
|
||||
enabled: false
|
||||
# Required: app_id, secret
|
||||
app_id: ""
|
||||
secret: ""
|
||||
allow_from: []
|
||||
matrix:
|
||||
enabled: false
|
||||
# Required: homeserver, access_token, user_id
|
||||
homeserver: https://matrix.org
|
||||
access_token: ""
|
||||
user_id: ""
|
||||
device_id: ""
|
||||
e2ee_enabled: true
|
||||
sync_stop_grace_seconds: 2
|
||||
max_media_bytes: 20971520
|
||||
group_policy: open
|
||||
group_allow_from: []
|
||||
allow_room_mentions: false
|
||||
allow_from: []
|
||||
@@ -0,0 +1,248 @@
|
||||
company:
|
||||
company_profile: ''
|
||||
company_profiles:
|
||||
- corporate
|
||||
- custom
|
||||
final_decider_role_id: null
|
||||
name: Team Runtime Co
|
||||
topology: Corporate Structure
|
||||
employees:
|
||||
- category: engineering
|
||||
description: Expert DevOps engineer specializing in infrastructure automation, CI/CD
|
||||
pipeline development, and cloud operations
|
||||
domains: []
|
||||
employee_id: devops_engineer-engineering-engineering-devops-automator
|
||||
metadata:
|
||||
source_path: engineering/engineering-devops-automator.md
|
||||
source_repo: /data2/bjdwhzzh/project-hku/agency-agents
|
||||
source_revision: local
|
||||
talent_template_category: engineering
|
||||
talent_template_name: DevOps Automator
|
||||
name: DevOps Automator
|
||||
preferred_external_agent: codex
|
||||
prompt_refs:
|
||||
- prompts/talent/engineering-engineering-devops-automator.md
|
||||
role_id: devops_engineer
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags:
|
||||
- engineering
|
||||
- devops
|
||||
- automator
|
||||
- engineering-devops-automator
|
||||
template_id: engineering-engineering-devops-automator
|
||||
- category: engineering
|
||||
description: Expert technical writer specializing in developer documentation, API
|
||||
references, README files, and tutorials. Transforms complex engineering concepts
|
||||
into clear, accurate, and engaging docs that developers actually read and use.
|
||||
domains: []
|
||||
employee_id: content_specialist-engineering-engineering-technical-writer
|
||||
metadata:
|
||||
source_path: engineering/engineering-technical-writer.md
|
||||
source_repo: /data2/bjdwhzzh/project-hku/agency-agents
|
||||
source_revision: local
|
||||
talent_template_category: engineering
|
||||
talent_template_name: Technical Writer
|
||||
name: Technical Writer
|
||||
preferred_external_agent: codex
|
||||
prompt_refs:
|
||||
- prompts/talent/engineering-engineering-technical-writer.md
|
||||
role_id: content_specialist
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags:
|
||||
- engineering
|
||||
- technical
|
||||
- writer
|
||||
- engineering-technical-writer
|
||||
template_id: engineering-engineering-technical-writer
|
||||
- category: design
|
||||
description: Expert UI designer specializing in visual design systems, component
|
||||
libraries, and pixel-perfect interface creation. Creates beautiful, consistent,
|
||||
accessible user interfaces that enhance UX and reflect brand identity
|
||||
domains: []
|
||||
employee_id: designer-design-design-ui-designer
|
||||
metadata:
|
||||
source_path: design/design-ui-designer.md
|
||||
source_repo: /data2/bjdwhzzh/project-hku/agency-agents
|
||||
source_revision: local
|
||||
talent_template_category: design
|
||||
talent_template_name: UI Designer
|
||||
name: UI Designer
|
||||
preferred_external_agent: codex
|
||||
prompt_refs:
|
||||
- prompts/talent/design-design-ui-designer.md
|
||||
role_id: designer
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags:
|
||||
- design
|
||||
- designer
|
||||
- design-ui-designer
|
||||
template_id: design-design-ui-designer
|
||||
- category: engineering
|
||||
description: Expert application security engineer specializing in threat modeling,
|
||||
vulnerability assessment, secure code review, security architecture design, and
|
||||
incident response for modern web, API, and cloud-native applications.
|
||||
domains: []
|
||||
employee_id: qa_analyst-engineering-engineering-security-engineer
|
||||
metadata:
|
||||
source_path: engineering/engineering-security-engineer.md
|
||||
source_repo: /data2/bjdwhzzh/project-hku/agency-agents
|
||||
source_revision: local
|
||||
talent_template_category: engineering
|
||||
talent_template_name: Security Engineer
|
||||
name: Security Engineer
|
||||
preferred_external_agent: codex
|
||||
prompt_refs:
|
||||
- prompts/talent/engineering-engineering-security-engineer.md
|
||||
role_id: qa_analyst
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags:
|
||||
- engineering
|
||||
- security
|
||||
- engineer
|
||||
- engineering-security-engineer
|
||||
template_id: engineering-engineering-security-engineer
|
||||
- category: fallback
|
||||
description: Empty placeholder employee for the CEO role when recruitment found
|
||||
no credible fit. Add prompt_refs in YAML to customize fallback execution.
|
||||
domains: []
|
||||
employee_id: ceo-fallback-empty-employee
|
||||
metadata:
|
||||
auto_created_for_role: ceo
|
||||
employee_origin: recruitment_fallback
|
||||
is_fallback_employee: true
|
||||
name: CEO Fallback Empty Employee
|
||||
preferred_external_agent: null
|
||||
prompt_refs: []
|
||||
role_id: ceo
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags: []
|
||||
template_id: fallback-empty-employee
|
||||
- category: fallback
|
||||
description: Empty placeholder employee for the CTO role when recruitment found
|
||||
no credible fit. Add prompt_refs in YAML to customize fallback execution.
|
||||
domains: []
|
||||
employee_id: cto-fallback-empty-employee
|
||||
metadata:
|
||||
auto_created_for_role: cto
|
||||
employee_origin: recruitment_fallback
|
||||
is_fallback_employee: true
|
||||
name: CTO Fallback Empty Employee
|
||||
preferred_external_agent: null
|
||||
prompt_refs: []
|
||||
role_id: cto
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags: []
|
||||
template_id: fallback-empty-employee
|
||||
- category: fallback
|
||||
description: Empty placeholder employee for the COO role when recruitment found
|
||||
no credible fit. Add prompt_refs in YAML to customize fallback execution.
|
||||
domains: []
|
||||
employee_id: coo-fallback-empty-employee
|
||||
metadata:
|
||||
auto_created_for_role: coo
|
||||
employee_origin: recruitment_fallback
|
||||
is_fallback_employee: true
|
||||
name: COO Fallback Empty Employee
|
||||
preferred_external_agent: null
|
||||
prompt_refs: []
|
||||
role_id: coo
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags: []
|
||||
template_id: fallback-empty-employee
|
||||
- category: fallback
|
||||
description: Empty placeholder employee for the Acquisition Specialist role when
|
||||
recruitment found no credible fit. Add prompt_refs in YAML to customize fallback
|
||||
execution.
|
||||
domains: []
|
||||
employee_id: acquisition_specialist-fallback-empty-employee
|
||||
metadata:
|
||||
auto_created_for_role: acquisition_specialist
|
||||
employee_origin: recruitment_fallback
|
||||
is_fallback_employee: true
|
||||
name: Acquisition Specialist Fallback Empty Employee
|
||||
preferred_external_agent: claude_code
|
||||
prompt_refs: []
|
||||
role_id: acquisition_specialist
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags: []
|
||||
template_id: fallback-empty-employee
|
||||
- category: fallback
|
||||
description: Empty placeholder employee for the Senior Engineer role when recruitment
|
||||
found no credible fit. Add prompt_refs in YAML to customize fallback execution.
|
||||
domains: []
|
||||
employee_id: senior_engineer-fallback-empty-employee
|
||||
metadata:
|
||||
auto_created_for_role: senior_engineer
|
||||
employee_origin: recruitment_fallback
|
||||
is_fallback_employee: true
|
||||
name: Senior Engineer Fallback Empty Employee
|
||||
preferred_external_agent: codex
|
||||
prompt_refs: []
|
||||
role_id: senior_engineer
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags: []
|
||||
template_id: fallback-empty-employee
|
||||
- category: fallback
|
||||
description: Empty placeholder employee for the Environment Engineer role when recruitment
|
||||
found no credible fit. Add prompt_refs in YAML to customize fallback execution.
|
||||
domains: []
|
||||
employee_id: env_engineer-fallback-empty-employee
|
||||
metadata:
|
||||
auto_created_for_role: env_engineer
|
||||
employee_origin: recruitment_fallback
|
||||
is_fallback_employee: true
|
||||
name: Environment Engineer Fallback Empty Employee
|
||||
preferred_external_agent: null
|
||||
prompt_refs: []
|
||||
role_id: env_engineer
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags: []
|
||||
template_id: fallback-empty-employee
|
||||
- category: design
|
||||
description: Expert UI designer specializing in visual design systems, component
|
||||
libraries, and pixel-perfect interface creation. Creates beautiful, consistent,
|
||||
accessible user interfaces that enhance UX and reflect brand identity
|
||||
domains: []
|
||||
employee_id: cmo-design-design-ui-designer
|
||||
metadata:
|
||||
source_path: design/design-ui-designer.md
|
||||
source_repo: /data2/bjdwhzzh/project-hku/agency-agents
|
||||
source_revision: local
|
||||
talent_template_category: design
|
||||
talent_template_name: UI Designer
|
||||
name: UI Designer
|
||||
preferred_external_agent: codex
|
||||
prompt_refs:
|
||||
- prompts/talent/design-design-ui-designer.md
|
||||
role_id: cmo
|
||||
seniority: junior
|
||||
skill_refs: []
|
||||
status: active
|
||||
tags:
|
||||
- design
|
||||
- designer
|
||||
- design-ui-designer
|
||||
template_id: design-design-ui-designer
|
||||
escalation_rules: []
|
||||
roles: []
|
||||
schema_version: 1
|
||||
@@ -0,0 +1,23 @@
|
||||
# LLM config template: no API keys committed. Set api_key or api_key_env after opc init.
|
||||
llm:
|
||||
default_model: "openai/gpt-5.4"
|
||||
api_base: "https://openrouter.ai/api/v1"
|
||||
api_key: ""
|
||||
# api_key_env: "OPENROUTER_API_KEY"
|
||||
|
||||
temperature: 1
|
||||
max_tokens: 32768
|
||||
routing: {}
|
||||
fallback: {}
|
||||
|
||||
# Optional: total input context window, used as the denominator for the
|
||||
# context-usage ring and to trigger auto-summarization. You normally do NOT
|
||||
# need this — for models litellm can map (most OpenAI / Anthropic models) the
|
||||
# window is resolved automatically. Only set it when your model is served
|
||||
# through a proxy / self-hosted endpoint that litellm cannot map, so the ring
|
||||
# has no denominator. Scalar applies to the default model:
|
||||
# context_window: 200000
|
||||
# Or per-model (wins over the scalar); keys are matched by model name:
|
||||
# context_window_overrides:
|
||||
# gpt-5.4: 400000
|
||||
# claude-sonnet-4.5: 200000
|
||||
@@ -0,0 +1,313 @@
|
||||
system:
|
||||
auto_approve_below_cost: 10.0
|
||||
context_compression_threshold: 0.85
|
||||
default_channel: cli
|
||||
escalation_timeout_seconds: 300
|
||||
log_level: INFO
|
||||
max_agent_iterations: 50
|
||||
opc_home: ''
|
||||
browser:
|
||||
mode: embedded
|
||||
headless: true
|
||||
chrome_channel: chrome
|
||||
chrome_executable_path: ''
|
||||
user_data_dir: ''
|
||||
args: []
|
||||
native_runtime:
|
||||
enabled: true
|
||||
stream_llm: true
|
||||
emit_runtime_events: true
|
||||
event_protocol_version: v2
|
||||
enable_tool_hooks: true
|
||||
converge_on_parallel_failure: true
|
||||
max_parallel_read_tools: 6
|
||||
tool_result_budget_chars: 20000
|
||||
microcompact_chars: 8000
|
||||
history_snip_trigger_messages: 40
|
||||
subagent_max_depth: 3
|
||||
auto_extract_durable_memory: false
|
||||
durable_memory_extract_min_messages: 4
|
||||
durable_memory_max_input_chars: 12000
|
||||
prompt_prefix_stability:
|
||||
enabled: true
|
||||
separate_dynamic_context: true
|
||||
emit_cache_fingerprint_events: true
|
||||
prompt_harness:
|
||||
enabled: true
|
||||
split_static_dynamic: true
|
||||
emit_delta_messages: true
|
||||
cache_static_prefix_only: true
|
||||
artifact_messages_enabled: true
|
||||
section_dedup_enabled: true
|
||||
reinject_after_compaction: true
|
||||
reactive_compaction:
|
||||
enabled: true
|
||||
max_overflow_retries: 2
|
||||
circuit_breaker_failures: 2
|
||||
context_usage_reporting:
|
||||
enabled: true
|
||||
emit_runtime_events: true
|
||||
verification_policy:
|
||||
# Native self-verification gate (spawns a `verify` subagent to re-check a
|
||||
# finished turn). Disabled by default: it adds latency/cost and is low
|
||||
# value for non-code work; company mode already has the manager-review
|
||||
# gate as the quality check. Set to true to re-enable for both task and
|
||||
# company mode. See opc/layer3_agent/runtime_v2/runtime.py.
|
||||
enabled: false
|
||||
min_todos_for_verification: 3
|
||||
require_on_code_edits: true
|
||||
require_on_risky_tools: true
|
||||
verifier_profile: verify
|
||||
skip_metadata_key: skip_verification
|
||||
background_session_memory:
|
||||
enabled: true
|
||||
update_interval_messages: 4
|
||||
max_input_chars: 6000
|
||||
prefetch:
|
||||
enabled: true
|
||||
session_memory: true
|
||||
focused_memory: true
|
||||
skills_summary: true
|
||||
project_memory_candidates: true
|
||||
max_chars: 4000
|
||||
tool_aware_microcompact:
|
||||
enabled: true
|
||||
preserve_recent_messages: 8
|
||||
tool_result_char_budget: 4000
|
||||
assistant_char_budget: 3000
|
||||
preserve_failure_outputs: true
|
||||
artifact_compaction:
|
||||
enabled: true
|
||||
session_memory_fast_path: true
|
||||
reinject_tool_surface_delta: true
|
||||
reinject_skills_delta: true
|
||||
reinject_active_subagents: true
|
||||
reinject_verification_state: true
|
||||
reinject_permission_state: true
|
||||
prompt_too_long_retry: true
|
||||
max_prompt_too_long_retries: 3
|
||||
artifact_char_budget: 12000
|
||||
task_ledger:
|
||||
enabled: true
|
||||
max_items: 24
|
||||
persist_to_runtime_session: true
|
||||
persist_to_task_metadata: true
|
||||
emit_runtime_events: true
|
||||
streaming_tool_start:
|
||||
enabled: true
|
||||
safe_read_only_only: true
|
||||
require_allow_prediction: true
|
||||
verification_contract:
|
||||
enabled: true
|
||||
append_status_to_final: true
|
||||
require_explicit_status: true
|
||||
execution_environment:
|
||||
worktree_venv:
|
||||
enabled: true
|
||||
provider: auto
|
||||
venv_dir: .opc-venv
|
||||
editable_project: true
|
||||
requirements_files: []
|
||||
auto_detect_requirements: true
|
||||
system_site_packages: false
|
||||
fail_if_prepare_fails: false
|
||||
sandbox:
|
||||
enabled: true
|
||||
default_mode: workspace-write
|
||||
fail_if_unavailable: false
|
||||
allow_direct_fallback: true
|
||||
allow_network: true
|
||||
windows:
|
||||
mode: elevated
|
||||
wrapper: none
|
||||
linux:
|
||||
mode: workspace-write
|
||||
wrapper: auto
|
||||
macos:
|
||||
mode: workspace-write
|
||||
wrapper: auto
|
||||
task_mode:
|
||||
sub_agent_timeout_sec: 86400
|
||||
require_confirmation:
|
||||
- deploy to production
|
||||
- send external emails
|
||||
- modify database schema
|
||||
|
||||
autonomy:
|
||||
enabled: true
|
||||
mode: bounded
|
||||
approval_model: ''
|
||||
approval_confidence_threshold: 0.7
|
||||
learned_policy_threshold: 0.8
|
||||
max_auto_approve_risk: medium
|
||||
allow_native_tool_auto_approval: true
|
||||
allow_external_agent_auto_approval: true
|
||||
learn_from_feedback: true
|
||||
save_external_sessions: true
|
||||
tool_first_use_approval: true
|
||||
tool_approval_exemptions:
|
||||
- read_inbox
|
||||
- send_dm
|
||||
- ask_peer_and_wait
|
||||
- reply_message
|
||||
- broadcast_issue
|
||||
- annotate_task
|
||||
- start_meeting
|
||||
- respond_meeting
|
||||
- ack_handoff
|
||||
- review_handoff
|
||||
- propose_task_adjustment
|
||||
- propose_runtime_replan
|
||||
- request_user_input
|
||||
- todo_read
|
||||
- todo_write
|
||||
command_review_window: 20
|
||||
sensitive_keywords:
|
||||
- token
|
||||
- password
|
||||
- secret
|
||||
- api key
|
||||
- credential
|
||||
- private key
|
||||
- payment
|
||||
- database schema
|
||||
- drop table
|
||||
- rm -rf
|
||||
- terraform destroy
|
||||
- deploy to production
|
||||
- send email
|
||||
safe_command_prefixes:
|
||||
- ls
|
||||
- pwd
|
||||
- echo
|
||||
- rg
|
||||
- git status
|
||||
- git diff
|
||||
- curl
|
||||
- wget
|
||||
- yt-dlp
|
||||
- aria2c
|
||||
- ffmpeg
|
||||
permissions_v2:
|
||||
enabled: true
|
||||
fail_closed: true
|
||||
classifier_enabled: true
|
||||
shell_ast_validation: true
|
||||
llm_classifier_model: ''
|
||||
classifier_thresholds:
|
||||
allow: 0.2
|
||||
ask: 0.5
|
||||
deny: 0.8
|
||||
denial_memory:
|
||||
enabled: true
|
||||
repeat_threshold: 2
|
||||
sandbox_policy:
|
||||
treat_network_as_risky: true
|
||||
treat_external_paths_as_high_risk: true
|
||||
explicit_prefix_allowlist: []
|
||||
candidate_extractors:
|
||||
- path
|
||||
- file_path
|
||||
- directory
|
||||
- working_directory
|
||||
- target_output_dir
|
||||
- workspace_path
|
||||
- command
|
||||
- cmd
|
||||
- url
|
||||
default_scope: once
|
||||
allow_scopes:
|
||||
- once
|
||||
- session
|
||||
- project
|
||||
- global
|
||||
allow_tools: []
|
||||
deny_tools: []
|
||||
allowed_paths: []
|
||||
denied_paths: []
|
||||
safe_shell_prefixes:
|
||||
- ls
|
||||
- pwd
|
||||
- echo
|
||||
- rg
|
||||
- git status
|
||||
- git diff
|
||||
- curl
|
||||
- wget
|
||||
- yt-dlp
|
||||
- aria2c
|
||||
- ffmpeg
|
||||
- python -V
|
||||
- python3 -V
|
||||
- node -v
|
||||
- npm -v
|
||||
ask_shell_prefixes:
|
||||
- git commit
|
||||
- git push
|
||||
- npm install
|
||||
- pip install
|
||||
- pnpm install
|
||||
- cargo test
|
||||
- pytest
|
||||
dangerous_shell_patterns:
|
||||
- \brm\s+-rf\b
|
||||
- \bdrop\s+table\b
|
||||
- \btruncate\b
|
||||
- \bterraform\s+destroy\b
|
||||
- \bgit\s+push\s+--force\b
|
||||
|
||||
mcp_servers:
|
||||
# ── Local MCP servers (stdio) ──────────────────────────────────────
|
||||
# Native Python Playwright browser tools are enabled by default.
|
||||
# Leave this browser MCP entry disabled unless you explicitly want the external MCP server.
|
||||
- name: browser
|
||||
type: local
|
||||
command: ["npx", "@playwright/mcp@latest", "--headless"]
|
||||
enabled: false
|
||||
env: {}
|
||||
tools_filter: []
|
||||
startup_timeout: 30.0
|
||||
|
||||
# Example: GitHub MCP server (uncomment and set GITHUB_TOKEN)
|
||||
# - name: github
|
||||
# type: local
|
||||
# command: ["npx", "-y", "@modelcontextprotocol/server-github"]
|
||||
# enabled: true
|
||||
# env:
|
||||
# GITHUB_TOKEN: "your-github-token"
|
||||
# tools_filter: []
|
||||
# startup_timeout: 30.0
|
||||
|
||||
# Example: filesystem MCP server
|
||||
# - name: filesystem
|
||||
# type: local
|
||||
# command: ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
|
||||
# enabled: true
|
||||
|
||||
# ── Remote MCP servers (StreamableHTTP / SSE) ──────────────────────
|
||||
# Example: remote MCP server with custom headers
|
||||
# - name: remote-api
|
||||
# type: remote
|
||||
# url: "https://mcp.example.com/sse"
|
||||
# enabled: true
|
||||
# headers:
|
||||
# Authorization: "Bearer your-token"
|
||||
# startup_timeout: 30.0
|
||||
|
||||
capabilities:
|
||||
enable_recovery: true
|
||||
local_first: true
|
||||
attach_remote_skill_summaries: true
|
||||
promote_remote_skills: true
|
||||
remote_skill_source: skillhub
|
||||
max_remote_skill_results: 5
|
||||
tool_failure_threshold: 2
|
||||
skillhub:
|
||||
enabled: false
|
||||
api_base: https://www.skillhub.club/api/v1
|
||||
api_key: ''
|
||||
api_key_env: SKILLHUB_API_KEY
|
||||
search_limit: 5
|
||||
method: hybrid
|
||||
cache_remote_skills: true
|
||||
promote_after_successes: 2
|
||||
Reference in New Issue
Block a user