Skip to content

feat: unify ai runtime authority - #47

Open
moshloop wants to merge 31 commits into
mainfrom
pr/oipa-ai-runtime-rebased
Open

feat: unify ai runtime authority#47
moshloop wants to merge 31 commits into
mainfrom
pr/oipa-ai-runtime-rebased

Conversation

@moshloop

@moshloop moshloop commented Aug 6, 2026

Copy link
Copy Markdown
Member

What

  • Adds authenticated caller-tool support for Claude and Codex runtimes, with request-scoped tool policy resolution, approval handling, and expiry/revocation wiring.
  • Unifies chat execution authority across tool approvals, prompt runs, turns, and model/tool call identity, with persistence and migration support.
  • Introduces runtime availability/capability reporting (/api/chat/runtimes), live refresh behavior, and prompt-runtime filtering/metadata consistency so clients show accurate selectable/unavailable entries.
  • Hardens transcript and event rendering by normalizing wrapped shell commands and canonicalizing live/streamed rows, while improving serve transport tracing and port/--dev behavior.
  • Adds cmux process inspection plus session-plan/tree rendering fixes and session context/cost plumbing updates across CLI, API, and webapp surfaces.

Why

  • Centralizes AI execution behavior around authoritative, auditable session state and capabilities rather than ad-hoc or stale paths.
  • Prevents stale model/tool selection and approval ambiguity by refreshing runtime state consistently and tying tool access to execution context.
  • Improves operational/debuggability with better diagnostics for processes, transcripts, and migration safety.

Notes

  • Includes breaking changes: read-only prompt updates now require Save As, captain serve --dev no longer supports --port 0, NewCodexAppServer config shape changed, and canonical session JSON no longer serializes Message.Raw.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 298 files, which is 198 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ab8abcec-ce94-4b85-a8cb-4bfdf215534a

📥 Commits

Reviewing files that changed from the base of the PR and between beff162 and 64c243a.

⛔ Files ignored due to path filters (4)
  • go.sum is excluded by !**/*.sum
  • pkg/cli/webapp/dist/.gitkeep is excluded by !**/dist/**
  • pkg/cli/webapp/dist/index.html is excluded by !**/dist/**
  • pkg/cli/webapp/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (298)
  • .github/workflows/test.yml
  • Procfile
  • README.md
  • cmd/captain/help.go
  • cmd/captain/help_test.go
  • cmd/captain/main.go
  • go.mod
  • migrations/02_merge_duplicate_sessions.sql
  • migrations/20_prompt_runs_and_plans.pg.hcl
  • migrations/30_execution.pg.hcl
  • migrations/31_execution_events.pg.hcl
  • migrations/32_execution_approvals.pg.hcl
  • migrations/60_view_session_overview.sql
  • migrations/62_view_session_turns.sql
  • migrations/63_view_session_agents.sql
  • migrations/67_view_session_costs.sql
  • migrations/74_turn_request_approval_identity.sql
  • migrations/75_model_call_provider_cost.sql
  • migrations/76_model_call_cost_backfill.sql
  • migrations/approval_identity_upgrade_integration_test.go
  • migrations/concurrency_integration_test.go
  • migrations/merge_duplicate_sessions_integration_test.go
  • migrations/migrations.go
  • migrations/migrations_test.go
  • migrations/schema.go
  • migrations/schema_ginkgo_test.go
  • pkg/ai/adapter_models.go
  • pkg/ai/adapters.go
  • pkg/ai/adapters_test.go
  • pkg/ai/agent.go
  • pkg/ai/agent/verify/workflow.go
  • pkg/ai/availability.go
  • pkg/ai/availability_test.go
  • pkg/ai/callertools/callertools_suite_test.go
  • pkg/ai/callertools/credential_ginkgo_test.go
  • pkg/ai/callertools/runtime.go
  • pkg/ai/callertools/runtime_ginkgo_test.go
  • pkg/ai/catalog.go
  • pkg/ai/catalog_disabled_ginkgo_test.go
  • pkg/ai/catalog_info.go
  • pkg/ai/catalog_resolve.go
  • pkg/ai/client.go
  • pkg/ai/fixture/stream.go
  • pkg/ai/fixture/stream_result_test.go
  • pkg/ai/history/codex_events.go
  • pkg/ai/history/codex_normalize.go
  • pkg/ai/history/codex_normalize_ginkgo_test.go
  • pkg/ai/history/types.go
  • pkg/ai/live_catalog.go
  • pkg/ai/live_catalog_test.go
  • pkg/ai/loop.go
  • pkg/ai/price_usage_ginkgo_test.go
  • pkg/ai/pricing/openrouter.go
  • pkg/ai/pricing/openrouter_test.go
  • pkg/ai/pricing/registry.go
  • pkg/ai/pricing_coverage_test.go
  • pkg/ai/provider/caller_tools_ginkgo_test.go
  • pkg/ai/provider/claudeagent/agent.ts
  • pkg/ai/provider/claudeagent/attachments_ginkgo_test.go
  • pkg/ai/provider/claudeagent/bridge_params.go
  • pkg/ai/provider/claudeagent/caller_tools.go
  • pkg/ai/provider/claudeagent/caller_tools_ginkgo_test.go
  • pkg/ai/provider/claudeagent/fake_agent_test.go
  • pkg/ai/provider/claudeagent/interrupt_ginkgo_test.go
  • pkg/ai/provider/claudeagent/process_env.go
  • pkg/ai/provider/claudeagent/protocol.ts
  • pkg/ai/provider/claudeagent/provider.go
  • pkg/ai/provider/claudeagent/provider_test.go
  • pkg/ai/provider/claudeagent/runner.go
  • pkg/ai/provider/claudeagent/runtime_status.go
  • pkg/ai/provider/claudeagent/runtime_status_test.go
  • pkg/ai/provider/claudeagent/turn.go
  • pkg/ai/provider/cmux/sessionstats.go
  • pkg/ai/provider/cmux/sessionstats_test.go
  • pkg/ai/provider/codex_appserver.go
  • pkg/ai/provider/codex_appserver_approval.go
  • pkg/ai/provider/codex_appserver_lifecycle_ginkgo_test.go
  • pkg/ai/provider/codex_appserver_params_test.go
  • pkg/ai/provider/codex_appserver_process.go
  • pkg/ai/provider/codex_appserver_protocol.go
  • pkg/ai/provider/codex_appserver_test.go
  • pkg/ai/provider/codex_appserver_turn.go
  • pkg/ai/provider/genkit/approval.go
  • pkg/ai/provider/genkit/approval_checkpoint.go
  • pkg/ai/provider/genkit/options.go
  • pkg/ai/provider/genkit/tool_approval_ginkgo_test.go
  • pkg/ai/provider/genkit/tools.go
  • pkg/ai/provider/init.go
  • pkg/ai/runtime_probe.go
  • pkg/ai/runtime_selector_test.go
  • pkg/ai/tools/definitions_ginkgo_test.go
  • pkg/ai/tools/tools.go
  • pkg/aichat/agent_prompt.go
  • pkg/aichat/aimock_lifecycle_integration_test.go
  • pkg/aichat/approval_execution.go
  • pkg/aichat/approval_http.go
  • pkg/aichat/approval_resume.go
  • pkg/aichat/approval_resume_ginkgo_test.go
  • pkg/aichat/database_threads.go
  • pkg/aichat/database_threads_integration_test.go
  • pkg/aichat/events.go
  • pkg/aichat/execution.go
  • pkg/aichat/execution_authority_ginkgo_test.go
  • pkg/aichat/execution_database.go
  • pkg/aichat/execution_database_authority.go
  • pkg/aichat/execution_database_correlation.go
  • pkg/aichat/execution_database_integration_test.go
  • pkg/aichat/interrupt.go
  • pkg/aichat/messages.go
  • pkg/aichat/persistence.go
  • pkg/aichat/provider_config.go
  • pkg/aichat/resolver.go
  • pkg/aichat/runtime_profile_ginkgo_test.go
  • pkg/aichat/runtime_settings.go
  • pkg/aichat/service.go
  • pkg/aichat/service_ginkgo_test.go
  • pkg/aichat/service_helpers_ginkgo_test.go
  • pkg/aichat/sse.go
  • pkg/aichat/stream_ginkgo_test.go
  • pkg/aichat/thread_costs.go
  • pkg/aichat/thread_costs_ginkgo_test.go
  • pkg/aichat/threads.go
  • pkg/aichat/threads_http.go
  • pkg/aichat/wire.go
  • pkg/aichat/wire_ginkgo_test.go
  • pkg/aimock/anthropicmock/anthropicmock_suite_test.go
  • pkg/aimock/anthropicmock/health_ginkgo_test.go
  • pkg/aimock/anthropicmock/respond.go
  • pkg/aimock/anthropicmock/server.go
  • pkg/aimock/anthropicmock/server_test.go
  • pkg/aimock/anthropicmock/stream.go
  • pkg/aimock/anthropicmock/wire.go
  • pkg/aimock/journal.go
  • pkg/aimock/openaimock/cancellation_test.go
  • pkg/aimock/openaimock/chat.go
  • pkg/aimock/openaimock/namespace_ginkgo_test.go
  • pkg/aimock/openaimock/openaimock_suite_test.go
  • pkg/aimock/openaimock/respond.go
  • pkg/aimock/openaimock/responses.go
  • pkg/aimock/openaimock/server.go
  • pkg/aimock/openaimock/wire.go
  • pkg/aimock/request.go
  • pkg/aimock/sse.go
  • pkg/aimock/testdata/scenarios/chat-agent-flows.yaml
  • pkg/aimock/testdata/scenarios/chat-api-flows.yaml
  • pkg/aimock/testdata/scenarios/hold-open.yaml
  • pkg/api/availability.go
  • pkg/api/registry/model.go
  • pkg/api/registry/provider.go
  • pkg/api/registry/providers.go
  • pkg/api/response_set.go
  • pkg/api/runtime_catalog.go
  • pkg/api/runtime_catalog_ginkgo_test.go
  • pkg/api/runtime_config.go
  • pkg/api/runtime_config_ginkgo_test.go
  • pkg/api/runtime_event.go
  • pkg/api/spec_layers.go
  • pkg/api/spec_layers_ginkgo_test.go
  • pkg/api/spec_merge_differential_test.go
  • pkg/api/tool_approval.go
  • pkg/bash/shell_transform.go
  • pkg/bash/shell_transform_ginkgo_test.go
  • pkg/claude/cost.go
  • pkg/claude/history.go
  • pkg/claude/session.go
  • pkg/claude/shell_transform_ginkgo_test.go
  • pkg/claude/tools/bash.go
  • pkg/claude/tools/bash_shell_ginkgo_test.go
  • pkg/claude/tools/generic.go
  • pkg/claude/tools/muted_styles_test.go
  • pkg/claude/tools/system.go
  • pkg/claude/tools/system_test.go
  • pkg/claude/tools/tool.go
  • pkg/claude/tooluse.go
  • pkg/cli/ai.go
  • pkg/cli/ai_agent.go
  • pkg/cli/ai_render_codex_test.go
  • pkg/cli/attachments_gc.go
  • pkg/cli/chat_thread_store.go
  • pkg/cli/chat_thread_store_test.go
  • pkg/cli/cmux_info.go
  • pkg/cli/cmux_info_ginkgo_test.go
  • pkg/cli/cmux_info_process.go
  • pkg/cli/cmux_info_render.go
  • pkg/cli/contexts.go
  • pkg/cli/cost.go
  • pkg/cli/database.go
  • pkg/cli/database_mode_ginkgo_test.go
  • pkg/cli/database_test.go
  • pkg/cli/db_context.go
  • pkg/cli/db_context_dsn.go
  • pkg/cli/db_context_dsn_ginkgo_test.go
  • pkg/cli/db_context_ginkgo_test.go
  • pkg/cli/db_context_http.go
  • pkg/cli/db_context_http_ginkgo_test.go
  • pkg/cli/db_context_registry.go
  • pkg/cli/db_context_registry_ginkgo_test.go
  • pkg/cli/db_context_stores.go
  • pkg/cli/event_renderer.go
  • pkg/cli/event_renderer_ginkgo_test.go
  • pkg/cli/gavel_dsn.go
  • pkg/cli/har_test.go
  • pkg/cli/history.go
  • pkg/cli/history_render.go
  • pkg/cli/history_render_test.go
  • pkg/cli/logging.go
  • pkg/cli/logging_test.go
  • pkg/cli/plan.go
  • pkg/cli/plan_identity_ginkgo_test.go
  • pkg/cli/plan_native_integration_test.go
  • pkg/cli/prompt_batch_session.go
  • pkg/cli/prompt_entity.go
  • pkg/cli/prompt_entity_test.go
  • pkg/cli/prompt_records.go
  • pkg/cli/prompt_run_events.go
  • pkg/cli/prompt_run_persist.go
  • pkg/cli/prompt_runtimes_ginkgo_test.go
  • pkg/cli/prompt_schema_build.go
  • pkg/cli/prompt_schema_test.go
  • pkg/cli/result_costs.go
  • pkg/cli/serve.go
  • pkg/cli/serve_chat.go
  • pkg/cli/serve_disabled_test.go
  • pkg/cli/serve_port.go
  • pkg/cli/serve_port_ginkgo_test.go
  • pkg/cli/serve_sessions.go
  • pkg/cli/serve_test.go
  • pkg/cli/session_get.go
  • pkg/cli/session_get_compact_test.go
  • pkg/cli/session_get_multi_test.go
  • pkg/cli/session_get_notice.go
  • pkg/cli/session_get_tree_ginkgo_test.go
  • pkg/cli/session_live.go
  • pkg/cli/sessions_test.go
  • pkg/cli/stdin_claude_command_test.go
  • pkg/cli/webapp/package.json
  • pkg/cli/webapp/pnpm-workspace.yaml
  • pkg/cli/webapp/src/AgentLauncher.tsx
  • pkg/cli/webapp/src/ChatLayer.tsx
  • pkg/cli/webapp/src/PromptRuntimeRows.test.tsx
  • pkg/cli/webapp/src/PromptRuntimeRows.tsx
  • pkg/cli/webapp/src/PromptWorkbench.test.ts
  • pkg/cli/webapp/src/PromptWorkbench.tsx
  • pkg/cli/webapp/src/PromptWriteModal.test.tsx
  • pkg/cli/webapp/src/PromptWriteModal.tsx
  • pkg/cli/webapp/src/WhoamiPage.test.tsx
  • pkg/cli/webapp/src/WhoamiPage.tsx
  • pkg/cli/webapp/src/dbContext.ts
  • pkg/cli/webapp/src/hooks/usePromptRunStream.test.tsx
  • pkg/cli/webapp/src/promptData.ts
  • pkg/cli/webapp/src/promptRuntimeRowsHelpers.ts
  • pkg/cli/webapp/src/promptWorkbenchHelpers.ts
  • pkg/cli/webapp/src/shell.tsx
  • pkg/cli/webapp/src/shellHelpers.test.ts
  • pkg/cli/webapp/src/shellHelpers.ts
  • pkg/cli/whoami.go
  • pkg/cli/whoami_ginkgo_test.go
  • pkg/cli/whoami_render.go
  • pkg/cmux/cmux_suite_test.go
  • pkg/cmux/top.go
  • pkg/cmux/top_ginkgo_test.go
  • pkg/database/caller_tool_store.go
  • pkg/database/caller_tool_store_integration_test.go
  • pkg/database/database.go
  • pkg/database/database_error.go
  • pkg/database/database_test.go
  • pkg/database/model_usage.go
  • pkg/database/options_ginkgo_test.go
  • pkg/database/prompt_run_operations.go
  • pkg/database/prompt_run_store.go
  • pkg/database/schema_scoped_integration_test.go
  • pkg/database/session_chat_store.go
  • pkg/database/session_hierarchy_ginkgo_test.go
  • pkg/database/session_ingest_store.go
  • pkg/database/session_list_store.go
  • pkg/database/session_message_ingest.go
  • pkg/database/session_prompt_store.go
  • pkg/database/session_read_store.go
  • pkg/database/session_thread_store.go
  • pkg/database/store_integration_test.go
  • pkg/session/build.go
  • pkg/session/build_codex.go
  • pkg/session/build_codex_cumulative_test.go
  • pkg/session/build_messages.go
  • pkg/session/cost.go
  • pkg/session/message.go
  • pkg/session/pretty.go
  • pkg/session/pretty_compact_test.go
  • pkg/session/render.go
  • pkg/session/request.go
  • pkg/session/response_costs_test.go
  • pkg/session/rows.go
  • pkg/session/session.go
  • pkg/session/shell_transform_ginkgo_test.go
  • pkg/session/transcript_pretty.go
  • pkg/session/transcript_row_ginkgo_test.go
  • pkg/session/turns.go
  • test.har

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


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@socket-security

socket-security Bot commented Aug 6, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedgolang/​github.com/​flanksource/​commons@​v1.54.0 ⏵ v1.55.072 +1100100100100
Updatedgolang/​github.com/​flanksource/​commons-db@​v0.1.26 ⏵ v0.1.27-0.20260806180738-8eb0bca0113273 +1100100100100

View full report

moshloop and others added 26 commits August 7, 2026 07:35
…ntly

Select an available Vite port by default while preserving strict behavior for explicit ports, and let Vite own browser opening in development. Resolve prompt setup through the shared shell configuration so working-directory semantics remain consistent.
… MCP

Add request-scoped, authenticated MCP capabilities for Claude and Codex agent providers, including shared tool policy resolution, schema validation, approvals, expiry, and revocation.
Propagate structured chat runtimes and agent prompts so new and resumed sessions receive consistent caller-owned tools, while disabled tool sets remain tool-free.
Advertise caller-tool support through model capabilities and catalogs.

BREAKING CHANGE: NewCodexAppServer now accepts ai.Config instead of a model string.
Add disabled-model filtering to whoami and expose exact backend/model runtime data for prompts.
Use canonical run requests for preview and execution, and require explicit Save as for read-only prompts to prevent implicit local forks.

BREAKING CHANGE: Updating a read-only prompt now fails; clients must use Save as/create to make an editable copy.
…-tool approvals

Persist chat execution identity, prompt runs, credential leases, and tool approval requests so caller tools are bound to the admitted session and can be revoked or revalidated throughout a run.
Route live approval resolutions through durable authority, recover approval state from stored thread messages, and propagate provider tool-use IDs through the Claude agent bridge.
BREAKING CHANGE: agent-backed caller tools now require an authoritative execution with MCP enabled
Keep runtime model metadata aligned with catalog capability defaults and verify disabled selections remain consistent under concurrent updates.
Expose process diagnostics for cmux surfaces, panes, workspaces, and individual PIDs. Report runtime, resource usage, listeners, process locations, and optional Go stacks for easier local debugging.

Claude-Session-Id: 019fc117-12df-7130-a435-2df0841694df
…ripts

Unwrap static sh/bash/zsh wrappers so rendered transcripts show the actual command while preserving shell flags and arguments. Centralize streaming and history output on canonical transcript rows, with safer tool-result handling and TTY redraw support. Preserve raw history serialization when explicitly requested.
Preserve one canonical transcript representation across Claude, Codex, and live agent events so wrapped shell commands display and serialize consistently.
Use stateful rendering with flush and error propagation for streamed output while avoiding duplicate rows across iterations.
BREAKING CHANGE: Message.Raw is no longer serialized in canonical session JSON
Claude-Session-Id: 019fc16e-32f2-7263-aeaa-d7cad6482315
Use the v0.0.54 action revision for lint and test jobs and align with its updated configuration interface.
Align the webapp's React and React DOM type packages with current React 19 declarations while keeping the runtime on React 18.
Expose cmux workspace, pane, and surface inspection through the CLI.
Resolve target process trees and present runtime, resource, listener, location, and optional Go stack details for easier debugging.
Replace credential-based approval identity with prompt-run, turn, model-call, and tool-call identity. Backfill only unambiguous legacy approvals, fail loudly on ambiguous or invalid records, and preserve persistence failures through the chat lifecycle.

Claude-Session-Id: 019fc6e7-5e07-7282-b87b-26c0d445dd1d
…l selection

Adds first-class API availability reporting for adapters, models, and runtime modes so clients can explain why a choice is not selectable and how to remediate it.
Propagates a shared refresh path (`--no-cache`) through model probing and OpenRouter pricing so whoami/catalog queries can request fully live state.
Introduces runtime probes (including claude-agent dependency/binary checks) and uses them to drive adapter readiness and catalog availability instead of only PATH checks.
Adds `/api/chat/runtimes` and enriches chat/model catalog wiring so the web UI and picker can show disabled/unavailable entries with reasons.
Tightens stream and persistence handling to terminalize outstanding tool calls consistently on provider errors/interruption so partially rendered tool rows do not linger.
Improves session transcript notices by attributing filter exclusion and window truncation separately for clearer user guidance.
Adds coverage for new availability, pricing refresh, runtime probe, tool rendering, catalog, resolver, service, and CLI transcript behavior.
Keep `serve` bound to an explicit `--port` (9020 by default) in all modes and reject `0`, replacing the previous dev-only ephemeral-port behavior.
Wire captain's HAR/HTTP tracing through the default transport with verbosity-mapped laddering, redaction, and explicit failure flush even when the command returns an error.
Make malformed `http.har.level` handling fail fast and surface the error immediately.
Surface runtime `-P`/`--no-color`/HAR knobs in root `--help`, and add regression tests for transport wrapping, redaction, and HAR capture.

BREAKING CHANGE: `captain serve --dev` can no longer be started on an ephemeral port, so scripts depending on `--port 0` must pass a concrete value.
Remap `captain_session_processes` entries to the surviving session during duplicate-session consolidation so related process records are not left tied to discarded session rows.
Add migration test coverage for new contract files and assert verification steps are run, and that the migration lock is always released even when verification fails.
Ensures ProbeAdapters now treats NoCache as a live refresh request for authenticated backends, preventing stale persisted model caches from being reused.
Adds a regression test that verifies no-cache flips ResolveOptions.Refresh and still returns resolved models in the response.
Registers the Claude tool role "System" in the tool factory so System tool calls resolve to the proper concrete tool.
Add read-only secondary database contexts with per-request selection and route database reads to the active context while keeping monitoring and writes on the default database. Persist provider-reported costs alongside list-price buckets, deduplicate transcript usage, and expose accurate cost breakdowns and context occupancy across CLI, API, and chat surfaces.

BREAKING CHANGE: Replace BindDatabaseURLFlag with BindDatabaseFlags, change RunCost to accept context, and update ThreadStore integrations to use request-scoped providers.

Claude-Session-Id: fa38bd74-0e81-4302-9a21-90eca363fb5b
Claude-Session-Id: fa38bd74-0e81-4302-9a21-90eca363fb5b
Resolve provider session IDs across all matching source rows so persisted plans take precedence and transcript recovery finds the correct session. Render parentless slices and cyclic session graphs without dropping sessions or recursing indefinitely.

Claude-Session-Id: ecda992b-ba22-451e-ac52-736cf1748169
@moshloop
moshloop force-pushed the pr/oipa-ai-runtime-rebased branch from 73a32f1 to f583d68 Compare August 7, 2026 04:36
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

Gavel crashed before producing results

Exit code: 1
Error: gavel exited 1 before writing results

Last lines of gavel.log

Error: unknown command "action-watchdog" for "gavel" Run 'gavel --help' for usage. unknown command "action-watchdog" for "gavel" 

Full gavel.log, JSON stub, and HTML stub are in the workflow artifact.

View full results

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

Gavel summary

Source Pass Fail Skip Duration

Totals: 0 passed · 0 failed · 0 skipped · -

View full results

Gavel-Issue-Id: 4b68a029-3baf-4dd1-89cf-0c1e06bb91a0
Claude-Session-Id: 019fd638-2969-7603-97cd-7314383b273c
Gavel-Issue-Id: 8e6a99ca-be32-4781-a4d2-17b2895e555f
Claude-Session-Id: 019fd638-2969-7603-97cd-7314383b273c
Gavel-Issue-Id: 4b68a029-3baf-4dd1-89cf-0c1e06bb91a0
Claude-Session-Id: 019fd638-2969-7603-97cd-7314383b273c
Gavel-Issue-Id: 8e6a99ca-be32-4781-a4d2-17b2895e555f
Claude-Session-Id: 019fd638-2969-7603-97cd-7314383b273c
Gavel-Issue-Id: 8e6a99ca-be32-4781-a4d2-17b2895e555f
Claude-Session-Id: 019fd638-2969-7603-97cd-7314383b273c
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