Skip to content

Experimental: integrate dcg-core permission-modes API#317

Open
quangdang46 wants to merge 1 commit into
masterfrom
experiment/dcg-permission-modes
Open

Experimental: integrate dcg-core permission-modes API#317
quangdang46 wants to merge 1 commit into
masterfrom
experiment/dcg-permission-modes

Conversation

@quangdang46
Copy link
Copy Markdown
Owner

Summary

Integrate jcode's SafetySystem.classify() with dcg-core's permission-modes API via a new dcg_bridge module, replacing the legacy hard-coded AUTO_ALLOWED string table.

Changes

  • New src/dcg_bridge.rs (355 lines): bridges jcode's high-level action vocabulary to dcg-core::Engine::evaluate. Includes action-to-ToolCall mapping, BridgeDecision enum, global Mode/Engine/Session singletons, and 6 unit tests.
  • --permission-mode CLI flag: supports plan | accept-edits | bypass-permissions | dont-ask | auto | default, mirroring Claude Code's API.
  • Startup wiring: mode set from CLI flag or JCODE_PERMISSION_MODE env var.
  • SafetySystem::classify() now delegates to dcg_bridge::classify(), collapsing BridgeDecision::Allow → ActionTier::AutoAllowed.
  • Cargo.toml: adds dcg-core as local path dep (../destructive_command_guard/crates/dcg-core).

Test plan

  • cargo test -p jcode --lib — dcg_bridge + safety tests pass
  • cargo check -p jcode — compiles clean
  • cargo fmt --check — formatting clean

🤖 Generated with Claude Code

Wire jcode's SafetySystem.classify() through a new dcg_bridge module that
delegates to dcg_core::Engine::evaluate, replacing the legacy
AUTO_ALLOWED hard-coded string table.

Changes:
- Add src/dcg_bridge.rs (355 lines): action-to-ToolCall mapping,
  BridgeDecision enum, global Mode/Engine/Session singletons,
  6 unit tests.
- Add --permission-mode CLI flag (plan | accept-edits | bypass-permissions |
  don-t-ask | auto | default) mirroring Claude Code's API.
- Wire mode from CLI flag + JCODE_PERMISSION_MODE env var at startup.
- Map SafetySystem.classify() → dcg_bridge.classify(), collapsing
  BridgeDecision::Allow → ActionTier::AutoAllowed.
- Add dcg-core = { path = "../destructive_command_guard/crates/dcg-core" }
  as local path dep (Phase A: Mode + Effect + Engine + Session only;
  pack-rule evaluation lands in Phase 2).

All tests pass (6 dcg_bridge, 9 safety, cargo check/fmt clean).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant