Skip to content

feat: multisig_execute + simulation panel - #34

Merged
iamasx merged 5 commits into
mainfrom
feature/dashboard_revamp
May 4, 2026
Merged

feat: multisig_execute + simulation panel#34
iamasx merged 5 commits into
mainfrom
feature/dashboard_revamp

Conversation

@iamasx

@iamasx iamasx commented May 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • multisig_execute instruction — new on-chain instruction that verifies a Squads proposal is approved, then executes the transfer directly from the policy PDA. Funds never leave the guardrails layer.
  • Escalation pipeline fixes — POST /api/escalations/report endpoint (Helius can't parse failed txns), proper escalation poller using @sqds/multisig SDK, reconstructed instruction support.
  • Transaction simulation panel — slide-out panel on agent detail page where users paste their agent's secret key and run real guarded_execute transactions (honest/attack/custom modes) to test guardrails in real-time.

Test plan

  • Deployed updated program to devnet
  • Sent 1.1 SOL escalation → reported → created Squads proposal → approved → executed via multisig_execute → verified 1.1 SOL transferred from policy PDA
  • Simulation panel: tested with labonko agent secret key, transactions visible in real-time via SSE
  • Run anchor test --skip-local-validator --skip-deploy

🤖 Generated with Claude Code

Dheeraj-Manwani and others added 5 commits April 30, 2026 17:21
- New on-chain `multisig_execute` instruction that verifies a Squads
  proposal is approved, then executes the transfer directly from the
  policy PDA. Funds never leave the guardrails layer — all policy
  checks (allowlist, max_tx, daily budget, session expiry) still apply,
  only the escalation threshold is skipped.

- Extract shared helpers (parse_verified_amount, snapshot_balance) from
  guarded_execute into instructions/shared.rs for reuse.

- Add POST /api/escalations/report endpoint so clients can report
  escalations directly (Helius cannot parse failed transactions).

- Implement proper escalation poller using @sqds/multisig SDK to sync
  on-chain proposal status (was a stub returning null).

- Update dashboard Execute button to call multisig_execute on the
  guardrails program instead of Squads vaultTransactionExecute.

- Add webhook receipt logging, reconstructed instruction support for
  client-reported escalations, and resolve-escalation pipeline stage.
Slide-out panel on the agent detail page where users can paste
their agent's secret key and run real guarded_execute transactions
to test guardrails in real-time. Supports honest, attack, and
custom simulation modes. Key never leaves the browser.
@coderabbitai

coderabbitai Bot commented May 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 152 files, which is 2 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 23de6450-976b-44b8-a855-dd8523c4e959

📥 Commits

Reviewing files that changed from the base of the PR and between e35ccd9 and 3c99b5c.

⛔ Files ignored due to path filters (10)
  • dashboard/package-lock.json is excluded by !**/package-lock.json
  • dashboard/public/android-chrome-192x192.png is excluded by !**/*.png
  • dashboard/public/android-chrome-512x512.png is excluded by !**/*.png
  • dashboard/public/apple-touch-icon.png is excluded by !**/*.png
  • dashboard/public/favicon-16x16.png is excluded by !**/*.png
  • dashboard/public/favicon-32x32.png is excluded by !**/*.png
  • dashboard/public/favicon.ico is excluded by !**/*.ico
  • dashboard/public/logo.png is excluded by !**/*.png
  • server/package-lock.json is excluded by !**/package-lock.json
  • server/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (152)
  • dashboard/__tests__/api-client.test.ts
  • dashboard/__tests__/dashboard-ui.test.tsx
  • dashboard/__tests__/providers-auth.test.ts
  • dashboard/__tests__/query-keys.test.ts
  • dashboard/__tests__/routes-smoke.test.tsx
  • dashboard/__tests__/sse-cache-updaters.test.ts
  • dashboard/app/(auth)/signin/page.tsx
  • dashboard/app/activity/activity-view.tsx
  • dashboard/app/agents/[pubkey]/agent-detail-view.tsx
  • dashboard/app/agents/[pubkey]/proposals/proposals-view.tsx
  • dashboard/app/agents/agents-overview.tsx
  • dashboard/app/agents/agents-page-client.tsx
  • dashboard/app/agents/page.tsx
  • dashboard/app/audit/audit-view.tsx
  • dashboard/app/audit/page.tsx
  • dashboard/app/escalations/[id]/escalation-detail-view.tsx
  • dashboard/app/escalations/[id]/page.tsx
  • dashboard/app/globals.css
  • dashboard/app/home/fleet-dashboard.tsx
  • dashboard/app/home/page.tsx
  • dashboard/app/incidents/[id]/incident-detail-view.tsx
  • dashboard/app/incidents/incidents-view.tsx
  • dashboard/app/layout.tsx
  • dashboard/app/page.tsx
  • dashboard/app/playground/page.tsx
  • dashboard/app/playground/playground-view.tsx
  • dashboard/app/settings/page.tsx
  • dashboard/app/settings/settings-view.tsx
  • dashboard/app/transactions/[sig]/page.tsx
  • dashboard/app/transactions/[sig]/transaction-detail-view.tsx
  • dashboard/components.json
  • dashboard/components/EmptyState.tsx
  • dashboard/components/PageErrorBoundary.tsx
  • dashboard/components/auth/require-session.tsx
  • dashboard/components/auth/siws-sign-in.tsx
  • dashboard/components/close-policy-button.tsx
  • dashboard/components/create-policy-wizard/CreatePolicyWizard.tsx
  • dashboard/components/create-policy-wizard/wizard-step-panels.tsx
  • dashboard/components/dashboard-ui.tsx
  • dashboard/components/dashboard-ui/anomaly-risk-label.tsx
  • dashboard/components/dashboard-ui/app-shell.tsx
  • dashboard/components/dashboard-ui/incident-table.tsx
  • dashboard/components/dashboard-ui/incident-timeline.tsx
  • dashboard/components/dashboard-ui/metric.tsx
  • dashboard/components/dashboard-ui/policy-card.tsx
  • dashboard/components/dashboard-ui/spend-gauge.tsx
  • dashboard/components/dashboard-ui/status-chip.tsx
  • dashboard/components/dashboard-ui/transaction-row.tsx
  • dashboard/components/edit-policy-form.tsx
  • dashboard/components/fund-agent-button.tsx
  • dashboard/components/kill-switch-button.tsx
  • dashboard/components/landing-auth-screen.tsx
  • dashboard/components/landing-connect-wallet-button.tsx
  • dashboard/components/playground/attack-simulator.tsx
  • dashboard/components/playground/danger-gauge.tsx
  • dashboard/components/playground/kill-switch-demo.tsx
  • dashboard/components/playground/policy-sandbox.tsx
  • dashboard/components/playground/progress-bar.tsx
  • dashboard/components/playground/signal-inspector.tsx
  • dashboard/components/playground/transaction-crafter.tsx
  • dashboard/components/playground/verdict-panel.tsx
  • dashboard/components/proposal-card.tsx
  • dashboard/components/providers.tsx
  • dashboard/components/query-states.tsx
  • dashboard/components/report-markdown.tsx
  • dashboard/components/rotate-agent-key-button.tsx
  • dashboard/components/shell-navbar-actions.tsx
  • dashboard/components/simulate-panel.tsx
  • dashboard/components/skeletons/activity-view-skeleton.tsx
  • dashboard/components/skeletons/agent-detail-skeleton.tsx
  • dashboard/components/skeletons/agents-overview-skeleton.tsx
  • dashboard/components/skeletons/edit-policy-form-skeleton.tsx
  • dashboard/components/skeletons/fleet-dashboard-skeleton.tsx
  • dashboard/components/skeletons/incident-detail-skeleton.tsx
  • dashboard/components/skeletons/incidents-view-skeleton.tsx
  • dashboard/components/skeletons/index.ts
  • dashboard/components/skeletons/primitives.tsx
  • dashboard/components/skeletons/proposals-view-skeleton.tsx
  • dashboard/components/skeletons/skeleton-block.tsx
  • dashboard/components/ui/button.tsx
  • dashboard/components/ui/select.tsx
  • dashboard/components/wallet-controls.tsx
  • dashboard/hooks/use-simulation-runner.ts
  • dashboard/lib/api/client.ts
  • dashboard/lib/api/query-keys.ts
  • dashboard/lib/api/use-audit-log-query.ts
  • dashboard/lib/api/use-escalation-query.ts
  • dashboard/lib/api/use-fleet-summary-query.ts
  • dashboard/lib/api/use-incident-query.ts
  • dashboard/lib/api/use-incidents-query.ts
  • dashboard/lib/api/use-llm-settings-query.ts
  • dashboard/lib/api/use-operator-session-query.ts
  • dashboard/lib/api/use-policies-query.ts
  • dashboard/lib/api/use-policy-query.ts
  • dashboard/lib/api/use-recent-incidents-query.ts
  • dashboard/lib/api/use-spend-trackers-query.ts
  • dashboard/lib/api/use-transaction-query.ts
  • dashboard/lib/api/use-webhook-status-query.ts
  • dashboard/lib/auth/siws-session.ts
  • dashboard/lib/playground/constants.ts
  • dashboard/lib/playground/engine.ts
  • dashboard/lib/playground/scenarios.ts
  • dashboard/lib/playground/types.ts
  • dashboard/lib/sdk/client.ts
  • dashboard/lib/sdk/idl/guardrails.json
  • dashboard/lib/simulation/build-transfer-ix-data.ts
  • dashboard/lib/squads/create-proposal.ts
  • dashboard/lib/sse/query-cache-helpers.ts
  • dashboard/lib/sse/useSSE.ts
  • dashboard/lib/stores/playground.ts
  • dashboard/lib/stores/simulation.ts
  • dashboard/lib/stores/sse-event-log.ts
  • dashboard/lib/types/dashboard.ts
  • dashboard/lib/utils.ts
  • dashboard/lib/utils/escalation-display.ts
  • dashboard/lib/utils/format.ts
  • dashboard/lib/utils/time.ts
  • dashboard/package.json
  • dashboard/public/site.webmanifest
  • dashboard/tailwind.config.ts
  • program/programs/guardrails/src/errors.rs
  • program/programs/guardrails/src/events.rs
  • program/programs/guardrails/src/instructions/guarded_execute.rs
  • program/programs/guardrails/src/instructions/mod.rs
  • program/programs/guardrails/src/instructions/multisig_execute.rs
  • program/programs/guardrails/src/instructions/shared.rs
  • program/programs/guardrails/src/lib.rs
  • sdk/client.ts
  • sdk/idl/guardrails.json
  • server/package.json
  • server/src/__tests__/api/routes/fleet-spend-trackers.test.ts
  • server/src/__tests__/api/routes/transactions.test.ts
  • server/src/api/index.ts
  • server/src/api/routes/audit.ts
  • server/src/api/routes/auth.ts
  • server/src/api/routes/escalations.ts
  • server/src/api/routes/fleet.ts
  • server/src/api/routes/session.ts
  • server/src/api/routes/settings.ts
  • server/src/api/routes/spend-trackers.ts
  • server/src/api/routes/transactions.ts
  • server/src/config/env.ts
  • server/src/config/llm.ts
  • server/src/sdk/client.ts
  • server/src/sdk/idl/guardrails.json
  • server/src/worker/pipeline/escalation-poller.ts
  • server/src/worker/pipeline/ingest.ts
  • server/src/worker/pipeline/process-transaction.ts
  • server/src/worker/pipeline/reconstruct-instruction.ts
  • server/src/worker/pipeline/resolve-escalation.ts
  • server/src/worker/routes/webhook.ts
  • server/src/worker/webhook-metrics.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/dashboard_revamp

Comment @coderabbitai help to get the list of available commands and usage tips.

@iamasx
iamasx merged commit 6e26cbd into main May 4, 2026
8 of 13 checks passed
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.

2 participants