Conversation
feat: Go kernel rewrite + 9-squad swarm org
Add 10 new transitive script patterns covering Node.js fs.*, fs/promises, Python pathlib/os/shutil file write operations that were missing from the transitive-effect-analysis invariant. Add new script-execution-tracking invariant (#23) that detects when a shell command executes a file written earlier in the same session, closing the write-then-execute indirection bypass vector. Closes #862 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…pass Closes #862 — critical governance bypass fix
Phase 6 (Reference Monitor Hardening) and KE-3 (Governance Event Envelope) both completed. KE Sprint up from 20% to 37%. PR queue drained 8→0. Risk score 23→10 (ELEVATED→NORMAL). Critical path: KE-2 → v3.0. Milestone: #880 | Report: #881 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…gent-20260325-130504
…rmal Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements #857 - Create stranger test protocol spec (spec/stranger-test-protocol.md) with 8-step validation flow, success criteria, and friction point taxonomy - Fix wrong GitHub URL in generated policy comments (agent-guard → agentguard) in both postinstall.ts and claude-init.ts - Fix invariant count in claude-init wizard (21 → 22) - Add npx alternative to README Quick Start for users who prefer npx over global install - Align postinstall starter policy mode with wizard default (monitor → guide) - Update tests to match corrected policy mode and add URL regression test Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…857f feat(issue-857): stranger test protocol and install fixes
…gent-20260325-140506 Auto-merge: all CI green, recovery controller status report.
PRs #869 and #870 both merged this cycle. New PR #888 (fix/npx-scoped-package-name) open with lint CI failure — assigned to senior-coder. No P0/P1 issues. Health: yellow. https://claude.ai/code/session_018LQYdGroNHJMB7pmDbUJBW Co-authored-by: Claude <noreply@anthropic.com>
…loses #848) Update all user-facing references to the CLI from 'npx agentguard' (which fails with HTTP 404 because no unscoped package is registered) to the correct scoped form 'npx @red-codes/agentguard'. Changes: - apps/cli/src/postinstall.ts: post-install wizard hints - apps/cli/src/commands/demo.ts: get-started output - apps/cli/tests/cli-demo.test.ts: update test expectation to match - CLAUDE.md: Quick Start code examples Note: generated hook commands continue to use 'npx --no-install agentguard' (which resolves the local binary via node_modules/.bin without registry fallback) — this is intentional and tested separately. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Prettier formatting applied to apps/cli/src/postinstall.ts to fix CI format check failure on run 23547828259. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Thin wrapper package that depends on @red-codes/agentguard. Allows `npx agentguard` to work without the scoped name. Both `npx agentguard` and `npx @red-codes/agentguard` work identically. Closes #848 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace mutable tag references with immutable SHA-pinned digests across all 6 workflow files to prevent supply chain attacks via compromised upstream actions. Original tags preserved as inline comments. Actions pinned: - actions/checkout@v6 - actions/setup-node@v6 - pnpm/action-setup@v5 - actions/upload-artifact@v7 - github/codeql-action/init@v4 - github/codeql-action/analyze@v4 - actions/upload-pages-artifact@v4 - actions/deploy-pages@v4 - dtolnay/rust-toolchain@stable - Swatinem/rust-cache@v2 Closes #829 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Version bump: 2.5.0 → 2.6.0 Supply chain hardening: all 10 GitHub Actions pinned to verified SHA digests across 6 workflow files. Closes #829. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The agentguard-unscoped package depends on @red-codes/agentguard which doesn't exist in the lockfile (it's the published package). Moving to npm-wrapper/ excludes it from the pnpm workspace glob. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Publishes both @red-codes/agentguard and the unscoped agentguard wrapper package on GitHub release. Tolerates "already published" for the wrapper since its version tracks the CLI. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
npm rejects "agentguard" as too similar to existing "agent-guard" package. Canonical install path is `npx @red-codes/agentguard`. Removes npm-wrapper/ and the publish step. Closes #848 as won't-fix. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
npx aiguard → delegates to @red-codes/agentguard. Added to publish workflow for automated releases. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
npx aguard → delegates to @red-codes/agentguard. Replaces aiguard attempt. Added to publish workflow. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…atrix Code-level audit of AgentGuard kernel (22 invariants, 27 action types, 95+ command patterns) against all 10 OWASP Agentic Top 10 categories. Includes per-category mechanism mapping, gap analysis, Microsoft AGT comparison, and prioritized roadmap to close gaps before May 6 conference. Closes #49 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Health: GREEN. Previous blockers resolved. Go kernel landed, v2.6.0 released. 10 PRs merged since last cycle. 1 open PR (#888) CI green, awaiting review. Sprint goal updated to post-release stabilization. Co-authored-by: Jared <jared@agentguard.dev> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Auto-merged by kernel EM — CI green, squad report
All 4065 tests passing across 18 packages, 0 failures. No regressions since last QA run. No open PRs to review. Health: green. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…stripping (closes #639) - Add ANTHROPIC_API_KEY, OPENAI_API_KEY, OPENAI_ORG_ID, GOOGLE_API_KEY - Add KUBECONFIG, KUBERNETES_SERVICE_TOKEN, VAULT_TOKEN, VAULT_ADDR - Add DATABRICKS_TOKEN - Add DEFAULT_STRIPPED_CREDENTIAL_PATTERNS with wildcard suffixes (*_API_KEY, *_SECRET, *_TOKEN, *_PASSWORD, *_PROXY) for future-proof credential catching - Update sanitizeEnvironment() to apply wildcard suffix matching after the explicit list pass, with preserve override support - Add comprehensive tests for all new patterns and wildcard behaviour Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…5004 Auto-merged: low-risk chore/docs PR, CI green.
…ing-ai-keys fix(adapters): add missing AI/k8s/vault credential patterns to shell stripping
…th (#1249) PR #1245 incorrectly changed URLs from the dashboard deployment (agentguard-cloud-dashboard.vercel.app) to the telemetry API server (agentguard-cloud.vercel.app). The API server has no UI — returns 401. Also fixes /signup → /onboarding (the dashboard has no /signup route, the onboarding page is at /onboarding). Correct URLs: - Dashboard: agentguard-cloud-dashboard.vercel.app - Telemetry API: agentguard-cloud.vercel.app (no UI) - Signup/onboarding: agentguard-cloud-dashboard.vercel.app/onboarding Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ell exec closure (#1250) TypeScript does not narrow `let` variables captured in closures, so after the RTK rewrite block reassigned `command`, the exec() call saw `string | undefined` instead of `string`, causing TS2769 (no overload matches) and TS7006 (implicit any callback parameters). Introduced in #509 when `command` was changed from const to let. Fix: snapshot the final value into a typed `const execCommand` before the Promise closure so TypeScript can guarantee the type at closure capture time. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore: remove Rust kernel source — aab.rs * chore: remove Rust kernel source — actions.rs * chore: remove Rust kernel source — data.rs * chore: remove Rust kernel source — hash.rs * chore: remove Rust kernel source — lib.rs * chore: remove Rust kernel source — policy.rs * chore: remove Rust kernel source — types.rs * chore: remove Rust kernel — Cargo.toml * chore: remove Rust kernel — Cargo.lock * chore: remove rust-kernel CI job from size-check workflow
* chore(kernel-em): EM report 2026-03-28T17:30Z — yellow, sprint #1202 KE-2 unstarted (#1232) - Version drift resolved: cloud + analytics both on 2.9.0 - Issue #1182 (identity bridge invariant) closed - PR #1226 (stale EM report v2.8.5) closed as superseded - New HIGH: issue #1202 (AAB normalization — 3,825+ unintended blocks) - P0 swarm health (#1186) persists — human intervention required - KE-2 (#917) unstarted for 3rd consecutive cycle — sprint goal at risk - PRs #1224 + #1233 awaiting review (all checks green) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(invariants): strip heredoc body before governance path scan (closes #1208) When a shell heredoc writes to /tmp but its body mentions governance filenames as documentation (e.g. agentguard.yaml in a markdown table), the no-governance-self-modification invariant incorrectly blocked the write. Add stripHeredocBody() to extract only the command header before scanning for protected path strings. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ge (#1251) * test(studio): schema cross-validation + execution profile test coverage - Add cross-validation tests that load the default template YAML files and validate them against their JSON schemas (validateSwarmConfig, validateSquadManifest). Catches template/schema drift at test time. - Fix squad-manifest.default.yaml: all 4 squads were missing required `name` field, violating the SQUAD_MANIFEST_SCHEMA (caught by the new tests). - Extend cli-init.test.ts to cover all 6 execution profiles (ci-safe and enterprise were absent from the "all templates" test). Closes sprint goal: "Formalize swarm template schema (JSON Schema validation)" Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(studio): update senior assignment — #1251 schema cross-validation complete Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…g shell.exec (#1256) * chore(kernel-em): EM report 2026-03-28T23:30Z — yellow, #1238 rebase escalated - #1209 CLOSED: PR #1243 merged (MCP prefix match fix in AAB normalizeIntent) - PR #1238 still BEHIND main (2nd run) — escalated to director per policy - Senior flagged: #1202 (KE-2 AAB normalization) unstarted for 3 cycles - Sprint completion 33%: #1202 + #1139 remain unstarted - Dogfood: rtk git/gh commands still hitting AAB unknown-action-type until #1202 merges Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(policy): wildcard action "*" must match all action types including shell.exec (#1253) The destructive command detection in authorizeIntent() was short-circuiting before the policy evaluator, causing wildcard allow rules (action: "*") to be silently ignored for destructive shell commands. Now, when intent.destructive is true, the policy evaluator runs first. If a wildcard ("*") allow rule explicitly matches, the operator's intent to allow everything is respected. Specific action allow rules (e.g., action: "shell.exec") still do NOT override the destructive safety gate — only the catch-all wildcard does. Also adds: - Go engine: namespace wildcard support (git.* matches git.push) - Go types: UnmarshalJSON for StringOrSlice (handles JSON string + array) - Tests: wildcard matching across TS evaluator, Go engine, kernel pipeline Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore: bump version to 2.9.1 * chore: bump aguard wrapper to 2.9.1
#1264) Implements #1086 - Add optional EventBus field to KernelConfig; Propose() emits ActionRequested + ActionAllowed/Denied/Escalated events with KE-3 compatible payloads (actionType, target, reason/capability) - Add Bus() accessor; Close() emits RunEnded with session stats - Telemetry failures are silently swallowed (recover in publishEvent) to guarantee enforcement is never blocked by observer code - Add telemetry_test.go: 10 tests covering KE-3 payload schema, panic isolation, concurrent correctness, and RunEnded on Close - Add kernel_bench_test.go: 8 benchmarks validating sub-ms target; BenchmarkPropose_SubMsValidation confirms 721ns p50 (< 1ms SLO) Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…v2.9.x sprint (#1261) - PR #1258: 10 stale stats fixed in site/index.html (invariants 24, patterns 93, event kinds 47) - Issues #1259, #1260 filed: swarm audit + v2.9.x announcement - Sprint updated: v2.9.x announcement + swarm audit as primary goals - Content agent blocker (#995) entering 5th cycle — escalation warning set - Dogfood: clean run, 0 governance denials Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…print near-complete (#1263) * chore(marketing-em): EM report 2026-03-28T20:15Z — site stats fixed, v2.9.x sprint - PR #1258: 10 stale stats fixed in site/index.html (invariants 24, patterns 93, event kinds 47) - Issues #1259, #1260 filed: swarm audit + v2.9.x announcement - Sprint updated: v2.9.x announcement + swarm audit as primary goals - Content agent blocker (#995) entering 5th cycle — escalation warning set - Dogfood: clean run, 0 governance denials Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(studio-em): EM report 2026-03-29T02:15Z — #1202 resolved, #199/#200 merged, #179 P0 4th cycle - Removed kernel-aab-normalization blocker: kernel #1202 CLOSED (rtk-prefix fix landed in #1252) - Merged workspace PRs #200 (README fix), #199 (schema+profiles — 2 sprint goals delivered), #195 (prev EM report); closed #198 (superseded) - Senior #1251 delivered: schema cross-validation tests + fixed real bug in squad-manifest.default.yaml - Triaged #201 (P1: real quota metrics), #202/#203 (P2: research, defer to April) - #179 (Option A default-deny, April 4 P0) unassigned for 4th consecutive cycle — HUMAN ESCALATION Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(hq-em): EM report 2026-03-28T21:30Z — v2.9.1 released, kernel sprint near-complete Actions this cycle: - Closed #1229 (v2.9.0 npm publish race — superseded by v2.9.1 success) - Identified PR #1258 MERGEABLE pending review (site stats sync, all green) - Identified PR #1255 blocked by CodeQL failure (safe-subshell allowlist) - Added new P1 dogfood #1254 to sprint tracking Escalations: - P0: Swarm health #1186 (4th cycle, human required) - P0: KE-2 #917 unstarted 4th cycle (director/kernel-sr) - P1: kernel squad — invariant false positive #1254 scope fix - P2: cloud squad — upgrade 2.9.0→2.9.1, human reviewer for PR #1258 Dogfood: No-Governance-Self-Modification blocks both gh issue --body (analytics agents) and EM squad state writes to .agentguard/squads/ — invariant scope too broad. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds 13 unit tests for the `agentguard init studio` interactive wizard
path in cli-init.test.ts — previously zero coverage for this code path.
Tests cover: non-interactive default flow, development profile selection,
ci-safe profile auto-detection when GitHub Actions is present, monorepo vs
non-monorepo swarm preset selection (full vs minimal), swarm scaffold failure
resilience, agentguard.yaml overwrite in non-interactive mode, Claude Code
hooks branch suppression, summary output, custom --dir support, and help
text inclusion.
Adds top-level vi.mock('@red-codes/swarm') to intercept the dynamic
import('@red-codes/swarm') call inside initStudio — demonstrates vitest's
hoisted mock interception of dynamic imports.
Closes studio sprint item: Implement agentguard init studio interactive wizard
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ves (closes #1139) (#1274) * fix(matchers): add safe-subshell allowlist to prevent $(date) false positives (closes #1139) Adds `stripSafeSubshells()` preprocessing step in `CommandScanner.scanDestructive()` that strips known read-only, side-effect-free subshell expressions before destructive pattern scanning. The dogfood case: agents embedding `$(date -u +%Y-%m-%dT%H:%M:%SZ)` in `gh pr comment --body` arguments were blocked by governance. The `date` command is a pure clock read with no side effects; its substitution form should not trigger pattern scans. Allowlisted safe subshells: date, pwd, whoami, hostname, uname, id, arch, uptime, git rev-parse / git describe. Security constraint: `[^)(]*` in the argument slot rejects nested subshells (e.g. `$(date $(rm -rf /))`), preventing bypass. Destructive commands that happen to contain safe subshells are still detected: `rm -rf /tmp/backup-$(date +%Y%m%d)` → strips date → `rm -rf /tmp/backup-` → blocked ✓ ReDoS-safe: patterns use `[^)(]*` directly instead of `(?:\s+[^)(]*)?\s*` which creates polynomial backtracking risk via ambiguous whitespace overlap (CodeQL fix vs PR #1255 which had this issue). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(kernel-sr): update senior state — #1139 PR #1274 created, #1202 confirmed closed - #1202 was already merged via PR #1252 (confirmed in this run) - #1139 implemented: PR #1274 open, supersedes #1255 (CodeQL/ReDoS fix) - Closed stale PR #1255 - Health updated to green (all sprint issues have active PRs) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Missed in version bump — publish workflow requires wrapper version to match CLI version. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… (#1279) When a shell.exec command doesn't match any known git/github/destructive pattern, tag it as unknownCommand in AAB metadata and emit an UnknownCommandWarn event. The action is still allowed — this is telemetry for the cloud dashboard, not a hard deny. - core/types.ts: add UnknownCommandWarn to EventKind union - events/schema.ts: add UNKNOWN_COMMAND_WARN event kind + schema - kernel/aab.ts: tag unknown shell.exec commands in normalizeIntent - kernel/kernel.ts: emit UnknownCommandWarn after ACTION_ALLOWED Closes AgentGuardHQ/agentguard-workspace#179 Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…-modification (#1280) gh issue create / gh pr create make GitHub API calls and cannot modify local governance files. Governance terminology in --body argument values was triggering a false positive. Reuses extractBaseCommand to detect gh commands and skip the command-text scan, consistent with the stripHeredocBody approach from #1208. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…smatch escalation (#1269) ## Findings - **PR #1258** (invariants/patterns/event kinds fix): verified correct, but blocked by CI/branch-protection mismatch — site/** excluded from size-check.yml but lint+test-and-build are required checks. Filed as #1267 (P0-infra escalation). - **New drifts found this cycle**: - CLI commands: site shows 29, codebase is 32 → filed #1265 - Action types: site shows "27 across 9 classes", codebase is 41 across 10 → filed #1266 - **Ongoing from prior cycle**: swarm topology (#1259), v2.9.x announcement (#1260) ## Sprint Goal Updated "Unblock site PR pipeline + comprehensive stats sync" ## Escalations - P0: #1267 — all site PRs unmergeable without admin action Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Extract resolveBinary() into apps/cli/src/resolve-binary.ts — all init commands (claude-init, copilot-init, deepagents-init, goose-init) now use the same resolution logic: 1. Dev repo: apps/cli/dist/bin.js → "node apps/cli/dist/bin.js" 2. npm install: node_modules/.bin/agentguard → relative path 3. npm alias: node_modules/.bin/aguard → relative path 4. Global: bare "agentguard" (PATH) Also fixes the claude-init workspace resolver: uses $HOME fallback instead of git rev-parse (which breaks when cwd is a subrepo). New: goose-init command for Block's Goose CLI — registers AgentGuard as an MCP governance extension in ~/.config/goose/config.yaml. - apps/cli/src/resolve-binary.ts: shared binary resolution - apps/cli/src/commands/goose-init.ts: new Goose driver init - apps/cli/src/commands/claude-init.ts: use shared resolver + hookCmd() - apps/cli/src/commands/copilot-init.ts: use shared resolver - apps/cli/src/commands/deepagents-init.ts: use shared resolver - apps/cli/src/commands/auto-setup.ts: also runs goose-init - apps/cli/src/bin.ts: register goose-init command + help text Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Shared binary resolver, goose-init, unknown command warn, governance self-modification fix for gh commands. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(kernel/issue-918): KE-4 plane separation — Evaluator / Emitter / Shipper Implements #918 Decouples the enforcement pipeline from telemetry persistence by introducing three failure-isolated planes: - **Emitter** (`packages/kernel/src/emitter.ts`): Bounded non-blocking buffer. `enqueue()` never throws, never blocks the Evaluator. Drops events with a counter if capacity is exhausted. - **Shipper** (`packages/kernel/src/shipper.ts`): Persistence plane that drains the Emitter buffer into EventSink/DecisionSink backends. All sink calls are wrapped in try/catch at the plane boundary — failures are silenced and never propagate to the Evaluator. - **Evaluator** (kernel.ts): Replaces direct `sinkEvent`/`sinkDecision` calls with `shipper.ship()` / `shipper.shipDecision()`. The Evaluator now returns its governance decision before the Shipper writes to any backend. `getEventCount()` and `shutdown()` delegate to the Shipper. Backward compatible: existing tests that check sink contents after `propose()` continue to work because the Shipper drains synchronously (Phase 1). The drain strategy can be swapped for `setImmediate`-based batching in Phase 2 without changing the public API. Tests: 935 kernel tests pass (41 suites). New test suites for Emitter (11 cases) and Shipper (13 cases) validate buffering, capacity limits, FIFO ordering, multi-sink delivery, and failure isolation. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * style(kernel/issue-918): apply prettier formatting to KE-4 new files Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * style(kernel/issue-918): apply prettier formatting to kernel.ts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add writeCodexHooks() and writeGeminiHooks() to postinstall — detects .codex/ and .gemini/ dirs and writes governance hooks (same idempotency guarantees as Claude/Copilot writers) - Add detectVersionUpgrade() — compares current version against the persisted value in ~/.agentguard/telemetry.json; on upgrade, postinstall prints the auto-setup reinit prompt - Update reportInstallTelemetry() to persist the version into the identity file so upgrade detection works on the next npm install - Update printSummary() to show all 4 drivers with not-detected/skipped/created states - Update auto-setup.ts: detectExistingHooks() now checks Codex and Gemini hook files; autoSetup() adds --driver flag (claude|copilot|codex|gemini) to target a specific driver; Codex/Gemini always run on full auto-setup - Add 21 new tests covering writeCodexHooks, writeGeminiHooks, and detectVersionUpgrade (58 total, all passing) Closes #1281 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rivers-1281 feat(postinstall): detect and configure all 4 AI coding drivers (#1281)
…gents (#1299) Completes the KE-2 Canonical Action Normalization feature by adding copilotToActionContext and deepAgentsToActionContext test coverage to match the existing Claude Code adapter tests, and marks all KE-2 ROADMAP checkboxes as done. - Add 6 copilotToActionContext tests to copilot-cli-adapter.test.ts - Add 6 deepAgentsToActionContext tests to deepagents-adapter.test.ts - Update ROADMAP.md: KE-2 complete with file references for all sub-tasks - Check v3.0 KE-2 ActionContext milestone as shipped Closes #917 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Go kernel complete — full TS hook parity, 145x faster evaluation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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
🤖 Generated with Claude Code