Dave
e0bc4bdc90
feat(story-62): add permission request prompts to web UI
...
When Claude Code requires user approval before executing a tool (file
writes, commits, etc.) the agent sends a permission_request message
over the WebSocket. The web UI now intercepts that message, surfaces a
modal dialog showing the tool name and input, and lets the user approve
or deny. The decision is sent back as a permission_response, allowing
the agent to continue or adjust its approach.
Backend changes:
- claude_code.rs: parse "permission_request" NDJSON events from the PTY,
block the PTY thread via a sync channel, and write the user's decision
back to the PTY stdin as a JSON permission_response.
- chat.rs: thread an optional UnboundedSender<PermissionReqMsg> through
to the provider.
- ws.rs: create a permission-request channel, forward requests to the
client, collect responses via a pending-perms map, and interleave all
of this with the active chat session using tokio::select!.
Frontend changes:
- client.ts: add permission_request to WsResponse, permission_response
to WsRequest, onPermissionRequest handler to ChatWebSocket.connect(),
and sendPermissionResponse() method.
- types.ts: mirror the same type additions.
- Chat.tsx: add permissionRequest state, wire onPermissionRequest
callback, and render an approval modal with tool name, input context,
Approve and Deny buttons.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-23 15:56:01 +00:00
Dave
5e33a0c0b3
story-kit: create 62_story_allow_frontend_ui_to_accept_permissions_requests
2026-02-23 15:34:34 +00:00
Dave
42d520fc80
story-kit: remove 58_story_live_agent_panel_updates
2026-02-23 15:30:37 +00:00
Dave
e8153eabfa
story-kit: start 80_story_remove_model_apikey_and_rate_limit_notifications_from_chat_ui
2026-02-23 15:26:34 +00:00
Dave
90936173ce
story-kit: create 80_story_remove_model_apikey_and_rate_limit_notifications_from_chat_ui
2026-02-23 15:26:20 +00:00
Dave
7e8d0573ce
story-kit: remove 76_story_story_with_colon_testing_the_fix
2026-02-23 15:20:13 +00:00
Dave
4e418f806c
story-kit: start 79_story_agents_panel_skips_archived_work_on_startup
2026-02-23 15:19:29 +00:00
Dave
2c1ccebbf1
story-kit: create 79_story_agents_panel_skips_archived_work_on_startup
2026-02-23 15:17:06 +00:00
Dave
1f5a384cbb
story-kit: create 78_story_create_spike_mcp_tool
2026-02-23 14:49:40 +00:00
Dave
7fd9388b69
story-kit: remove 75_story_test_story_with_colon
2026-02-23 14:47:41 +00:00
Dave
f51c2e0268
story-kit: start 77_bug_create_bug_file_writes_no_yaml_front_matter
2026-02-23 14:47:10 +00:00
Dave
31be646cc7
story-kit: create 77_bug_create_bug_file_writes_no_yaml_front_matter
2026-02-23 14:46:50 +00:00
Dave
ef1591dbd7
story-kit: create 77_bug_create_bug_file_writes_no_yaml_front_matter
2026-02-23 14:46:39 +00:00
Dave
e2dc56fc96
story-kit: create 76_story_story_with_colon_testing_the_fix
2026-02-23 14:46:16 +00:00
Dave
3109282b3b
story-kit: start 74_story_agent_lozenges_float_across_ui_during_assignment
2026-02-23 14:45:23 +00:00
Dave
a649d08fbe
story-kit: create 75_story_test_story_with_colon
2026-02-23 14:28:30 +00:00
Dave
6297d1643e
story-kit: start 72_bug_story_creation_does_not_quote_yaml_special_characters_in_name
2026-02-23 14:26:52 +00:00
Dave
38e564aaef
story-kit: create 72_bug_story_creation_does_not_quote_yaml_special_characters_in_name
2026-02-23 14:25:38 +00:00
Dave
e994a1c738
story-kit: remove 51_story_deterministic_spike_lifecycle_management
2026-02-23 14:13:12 +00:00
Dave
2eddff6642
story-kit: remove 29_story_directory_based_workflow_coordination
2026-02-23 14:09:27 +00:00
Dave
bc2b9f860b
story-kit: create 74_story_agent_lozenges_float_across_ui_during_assignment
2026-02-23 14:07:11 +00:00
Dave
ce21aba1d3
story-kit: start 71_bug_server_health_endpoint_missing
2026-02-23 14:05:40 +00:00
Dave
9f6b17bafb
story-kit: start 73_story_fade_out_completed_agents
2026-02-23 14:05:06 +00:00
Dave
23caeb78c0
story-kit: create 73_story_fade_out_completed_agents
2026-02-23 14:04:53 +00:00
Dave
a6b091ece1
story-kit: create 73_story_fade_out_completed_agents
2026-02-23 14:04:52 +00:00
Dave
959090106b
story-kit: create 74_story_agent_lozenges_float_across_ui_during_assignment
2026-02-23 14:02:43 +00:00
Dave
0a9beb3114
story-kit: create 73_story_fade_out_completed_agents
2026-02-23 14:00:58 +00:00
Dave
5fd6cf9c95
story-kit: create 70_story_fade_out_completed_agents
2026-02-23 13:59:40 +00:00
Dave
04402274fb
story-kit: start 72_bug_story_creation_does_not_quote_yaml_special_characters_in_name
2026-02-23 13:57:17 +00:00
Dave
82b02171df
story-kit: create 72_bug_story_creation_does_not_quote_yaml_special_characters_in_name
2026-02-23 13:57:11 +00:00
Dave
9379807504
story-kit: create 72_bug_story_creation_does_not_quote_yaml_special_characters_in_name
2026-02-23 13:56:58 +00:00
Dave
594f816cbf
story-kit: start 72_bug_story_creation_does_not_quote_yaml_special_characters_in_name
2026-02-23 13:54:44 +00:00
Dave
17feb44899
story-kit: create 72_bug_story_creation_does_not_quote_yaml_special_characters_in_name
2026-02-23 13:54:05 +00:00
Dave
c6b30d2052
story-kit: create 71_bug_server_health_endpoint_missing
2026-02-23 13:52:10 +00:00
Dave
c63baa79da
story-kit: start 70_story_server_owned_agent_completion_remove_report_completion_dependency
2026-02-23 13:51:32 +00:00
Dave
8b54dc305d
story-kit: create 70_story_server_owned_agent_completion_remove_report_completion_dependency
2026-02-23 13:49:02 +00:00
Dave
4d73194b14
story-kit: start 69_story_test_coverage_qa_gate
2026-02-23 13:17:26 +00:00
Dave
91eb4526e3
story-kit: start 68_story_frontend_pipeline_state_stale_after_server_restart
2026-02-23 13:16:42 +00:00
Dave
682c8f9b36
story-kit: create 69_story_test_coverage_qa_gate
2026-02-23 13:08:09 +00:00
Dave
8dd0c92a89
story-kit: start 59_story_current_work_panel
2026-02-23 13:03:15 +00:00
Dave
b2fd6ccb1e
story-kit: start 67_story_server_drives_pipeline_as_state_machine
2026-02-23 13:01:14 +00:00
Dave
216ca9ea2f
story-kit: create 59_story_current_work_panel
2026-02-23 12:58:39 +00:00
Dave
c9ac9cd8a6
story-kit: create 68_story_frontend_pipeline_state_stale_after_server_restart
2026-02-23 12:53:14 +00:00
Dave
bd0de4caee
story-kit: start 65_story_standardised_script_test_entry_point_for_all_projects
2026-02-23 12:49:21 +00:00
Dave
15a8278d43
story-kit: create 67_story_server_drives_pipeline_as_state_machine
2026-02-23 12:48:21 +00:00
Dave
07fe5c2026
story-kit: create 67_story_server_drives_pipeline_as_state_machine
2026-02-23 12:48:13 +00:00
Dave
1fe9ea2015
story-kit: create 67_story_server_drives_pipeline_as_state_machine
2026-02-23 12:45:01 +00:00
Dave
cc5855bbd2
story-kit: create 66_spike_pipeline_stage_state_machine
2026-02-23 12:44:49 +00:00
Dave
0530aec8f4
story-kit: create 66_story_pipeline_stage_state_machine_spike
2026-02-23 12:44:43 +00:00
Dave
4f74947cb9
story-kit: create 65_story_standardised_script_test_entry_point_for_all_projects
2026-02-23 12:26:01 +00:00