Repository navigation
Conversation
Introduced `cadderctl`, a command-line interface for non-interactive inspection and control of the Cadder daemon. This addition allows users to perform state queries, log retrieval, and manage entrypoints and domains without launching the TUI. Updated documentation to reflect the new CLI capabilities and its integration into the Cadder architecture.
Add a new local stdio cadder-mcp server with bounded inspect and management tools, MCP-specific redaction, and contract tests for unavailable-daemon behavior, action routing, and log safety. Extract a shared cadder-operator layer from cadderctl so CLI and MCP reuse daemon attach, query, toggle, and error-mapping logic, and update packaging and documentation to ship and explain the new MCP surface.
Add OpenSpec project rules and a reset-cadder-architecture change covering proposal, design, capability specs, and implementation tasks. This establishes the target daemon-owned runtime model before implementation cleanup.
Remove obsolete Backlog and unsupported product-surface artifacts in favor of OpenSpec-driven planning. Reshape the workspace around the daemon, shim, cadder operator client, shared protocol, docs, and xtask validation. Add runtime locking, IPC discovery and security policy, storage/history, autostart, IIS handoff, release docs validation, and focused contract tests.
Cover raw IPC registration history and fake IIS provider binding queries through daemon IPC. Add the explicit caddy shim command policy table, unsupported command rejection, and docs. Mark OpenSpec tasks 3.6 and 4.1 complete.
Remove the real Caddy fallback from managed caddy run recovery so the shim only registers through cadderd. Update shim tests and docs to reflect daemon-owned recovery, and mark OpenSpec task 4.2 complete.
Warn when read-only caddy shim commands delegate to real Caddy without a reachable cadderd backend. Document the distinction between real-Caddy inspection and Cadder runtime state, and mark OpenSpec task 4.3 complete.
Exercise CADDER_CADDY_SHIM_PATH through the RealCaddyResolver path lookup so PATH prefers a later real Caddy binary over the shim. Mark OpenSpec task 4.4 complete.
Use runner paths only in step contexts and verify Unix owner access to an elevated runtime and denial for a different account.
Keep TypeScript checkout line endings stable and run the outsider fixture from a shared temporary executable instead of the private macOS tool cache.
Provide read-only Sandbox inputs and explicit client privilege assertions while recording the passing native CI matrix separately from pending interactive UAC evidence.
Keep the released Rust 1.0.5 runtime, security fixes and release tooling as the operational migration baseline. Preserve the TypeScript runtime foundation and approved equal npm/SEA target, and scope Node source checks away from legacy release scripts.
Define requirement deltas, ordered migration tasks and acceptance gates for the TypeScript/Node replacement with equal npm and SEA distributions. Preserve the released CLI/TUI and eight-operation IPC scope instead of restoring history, IIS, autostart or machine output. Keep runtime acceptance and Rust removal evidence-gated.
Normalize the Node primary token default owner only after safe journal preflight and before SQLite admission. Keep strict existing-path checks and verify native readback without changing privileges or ACLs. Cover fail-closed ordering with regressions and record the real Windows Sandbox SQLite/Caddy lifecycle proof. Final Node check passes 812 tests with 96.16 percent own-source line coverage; completed-product and distribution gates remain open.
Connect durable state and project sessions to the daemon, CLI, TUI and shim. Add compiled npm and standalone SEA candidates with shared native acceptance, retaining the Rust baseline until platform and privilege gates pass.
Use physical fixture paths and distinct executable directories, drain fake-Caddy output before exit, and serialize Windows native fixtures. Add the actual-product Sandbox privilege procedure while keeping its interactive acceptance open.
Retain the OS cause when owned-group observation fails and report direct lsof probes when the native listener check cannot find its owner.
Read valid lsof output when one requested protocol has no matches, and cover real TCP and UDP owners. Include shared setup assets in npm and SEA packages and verify actual Caddy rollback after a SQLite write refusal.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Validation
cargo fmt --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspacemise run check: Rust, strict OpenSpec validation, documentation, existing npm package contracts and generated release workflow checks pass locally on Windows.mise run docs-buildnub run check: typecheck, lint, formatting and all 29 tests pass; own-code line coverage is 90.30%, including runtime modules.git diff --check; released Rust code and legacy packaging match master, with no generated Node JS committed.The previous Node runtime matrix passed on Windows x64, Linux x64 and macOS arm64 at
1670f35, including real same-owner root-daemon contact and different-account denial on Unix. CI for the conflict-resolution headf850418is separate and has been triggered; those earlier results do not substitute for its checks.Notes
http-cache-semantics; dependency remediation is outside this conflict-resolution change.