@zergai/ztc 0.4.0-beta.1 → 0.5.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +398 -45
- package/RUST_THIRD_PARTY_LICENSES.txt +1080 -822
- package/THIRD_PARTY_NOTICES.md +273 -12
- package/bin/zmux-darwin-arm64 +0 -0
- package/bin/ztc-audio-darwin-arm64 +0 -0
- package/bin/ztc-capture-darwin-arm64 +0 -0
- package/bin/ztc-computer-darwin-arm64 +0 -0
- package/bin/ztc-llm-darwin-arm64 +0 -0
- package/bin/ztc-tts-darwin-arm64 +0 -0
- package/bin/ztc-tui-darwin-arm64 +0 -0
- package/bin/ztc-zlicky-overlay-darwin-arm64 +0 -0
- package/bin/zterm-darwin-arm64 +0 -0
- package/dist/App.js +1206 -209
- package/dist/agent/agent.d.ts +74 -8
- package/dist/agent/agent.js +1073 -184
- package/dist/agent/backends/account_rotation.d.ts +4 -0
- package/dist/agent/backends/account_rotation.js +8 -2
- package/dist/agent/backends/anthropic.d.ts +13 -0
- package/dist/agent/backends/anthropic.js +169 -28
- package/dist/agent/backends/claude_cli.js +18 -8
- package/dist/agent/backends/codex_app_server.d.ts +1 -0
- package/dist/agent/backends/codex_app_server.js +55 -3
- package/dist/agent/backends/codex_auth.d.ts +1 -0
- package/dist/agent/backends/codex_auth.js +67 -13
- package/dist/agent/backends/codex_buffered_recovery.d.ts +27 -0
- package/dist/agent/backends/codex_buffered_recovery.js +293 -0
- package/dist/agent/backends/gemini.js +3 -1
- package/dist/agent/backends/http_error.d.ts +26 -0
- package/dist/agent/backends/http_error.js +221 -0
- package/dist/agent/backends/index.d.ts +9 -2
- package/dist/agent/backends/index.js +22 -2
- package/dist/agent/backends/openai.d.ts +0 -6
- package/dist/agent/backends/openai.js +5 -2
- package/dist/agent/backends/openai_compatible.d.ts +5 -4
- package/dist/agent/backends/openai_compatible.js +26 -19
- package/dist/agent/backends/openai_responses.d.ts +8 -3
- package/dist/agent/backends/openai_responses.js +77 -33
- package/dist/agent/backends/provider_ids.d.ts +1 -0
- package/dist/agent/backends/provider_ids.js +4 -0
- package/dist/agent/backends/request_metrics.js +12 -2
- package/dist/agent/backends/types.d.ts +109 -6
- package/dist/agent/backends/types.js +5 -1
- package/dist/agent/backends/zrouter_stream.d.ts +6 -1
- package/dist/agent/backends/zrouter_stream.js +160 -42
- package/dist/agent/background_registry.d.ts +2 -0
- package/dist/agent/background_registry.js +1 -0
- package/dist/agent/claim_observation.d.ts +6 -0
- package/dist/agent/claim_observation.js +54 -0
- package/dist/agent/commands/accounts.js +46 -177
- package/dist/agent/commands/attention.d.ts +2 -0
- package/dist/agent/commands/attention.js +67 -0
- package/dist/agent/commands/auth.js +18 -2
- package/dist/agent/commands/board.d.ts +2 -0
- package/dist/agent/commands/board.js +169 -0
- package/dist/agent/commands/clipboard.js +50 -1
- package/dist/agent/commands/compact.js +21 -13
- package/dist/agent/commands/config.js +4 -1
- package/dist/agent/commands/context.js +6 -1
- package/dist/agent/commands/desktop.d.ts +2 -0
- package/dist/agent/commands/desktop.js +29 -0
- package/dist/agent/commands/effort.js +14 -6
- package/dist/agent/commands/environment.d.ts +3 -0
- package/dist/agent/commands/environment.js +109 -0
- package/dist/agent/commands/evidence.d.ts +2 -0
- package/dist/agent/commands/evidence.js +9 -0
- package/dist/agent/commands/fork.js +4 -3
- package/dist/agent/commands/goal.d.ts +33 -1
- package/dist/agent/commands/goal.js +174 -14
- package/dist/agent/commands/goal_exit.d.ts +36 -0
- package/dist/agent/commands/goal_exit.js +120 -0
- package/dist/agent/commands/help.js +3 -1
- package/dist/agent/commands/history.js +3 -1
- package/dist/agent/commands/inbox.d.ts +2 -0
- package/dist/agent/commands/inbox.js +148 -0
- package/dist/agent/commands/index.js +16 -1
- package/dist/agent/commands/input_mode.js +8 -6
- package/dist/agent/commands/job.d.ts +2 -0
- package/dist/agent/commands/job.js +93 -0
- package/dist/agent/commands/keybindings.js +4 -1
- package/dist/agent/commands/label.d.ts +2 -0
- package/dist/agent/commands/label.js +77 -0
- package/dist/agent/commands/layout.d.ts +2 -0
- package/dist/agent/commands/layout.js +20 -0
- package/dist/agent/commands/mirror.js +16 -1
- package/dist/agent/commands/model.js +12 -2
- package/dist/agent/commands/permissions.d.ts +3 -1
- package/dist/agent/commands/permissions.js +79 -89
- package/dist/agent/commands/plan.js +5 -15
- package/dist/agent/commands/profile.js +21 -2
- package/dist/agent/commands/provider_selection.js +20 -1
- package/dist/agent/commands/rename.js +1 -1
- package/dist/agent/commands/resources.d.ts +2 -0
- package/dist/agent/commands/resources.js +67 -0
- package/dist/agent/commands/rewind.d.ts +3 -0
- package/dist/agent/commands/rewind.js +16 -0
- package/dist/agent/commands/runbooks.d.ts +2 -0
- package/dist/agent/commands/runbooks.js +73 -0
- package/dist/agent/commands/runbooks_lazy.d.ts +2 -0
- package/dist/agent/commands/runbooks_lazy.js +8 -0
- package/dist/agent/commands/sessions.d.ts +1 -1
- package/dist/agent/commands/sessions.js +33 -5
- package/dist/agent/commands/settings.js +185 -39
- package/dist/agent/commands/setup.d.ts +2 -0
- package/dist/agent/commands/setup.js +78 -0
- package/dist/agent/commands/share.d.ts +2 -0
- package/dist/agent/commands/share.js +64 -0
- package/dist/agent/commands/status.js +14 -2
- package/dist/agent/commands/types.d.ts +99 -6
- package/dist/agent/commands/update.js +8 -0
- package/dist/agent/commands/usage.d.ts +2 -0
- package/dist/agent/commands/usage.js +8 -0
- package/dist/agent/factory.d.ts +11 -0
- package/dist/agent/factory.js +113 -88
- package/dist/agent/loop_policy.d.ts +6 -3
- package/dist/agent/loop_policy.js +12 -3
- package/dist/agent/measurement_guidance.d.ts +2 -0
- package/dist/agent/measurement_guidance.js +5 -0
- package/dist/agent/request_encoder.d.ts +8 -1
- package/dist/agent/request_encoder.js +95 -23
- package/dist/agent/runtime/benchmark_comparison.d.ts +30 -0
- package/dist/agent/runtime/benchmark_comparison.js +94 -0
- package/dist/agent/runtime/benchmark_contract.d.ts +48 -0
- package/dist/agent/runtime/benchmark_contract.js +90 -0
- package/dist/agent/runtime/checked_commands.d.ts +32 -0
- package/dist/agent/runtime/checked_commands.js +119 -0
- package/dist/agent/runtime/command_execution_policy.d.ts +26 -0
- package/dist/agent/runtime/command_execution_policy.js +91 -0
- package/dist/agent/runtime/command_jobs.d.ts +36 -18
- package/dist/agent/runtime/command_jobs.js +151 -13
- package/dist/agent/runtime/command_panes.d.ts +59 -0
- package/dist/agent/runtime/command_panes.js +398 -0
- package/dist/agent/runtime/command_wait.d.ts +19 -0
- package/dist/agent/runtime/command_wait.js +167 -0
- package/dist/agent/runtime/cpu_benchmark.d.ts +30 -0
- package/dist/agent/runtime/cpu_benchmark.js +126 -0
- package/dist/agent/runtime/delegated_evidence.d.ts +26 -0
- package/dist/agent/runtime/delegated_evidence.js +80 -0
- package/dist/agent/runtime/evidence.d.ts +127 -0
- package/dist/agent/runtime/evidence.js +468 -0
- package/dist/agent/runtime/execution_context.d.ts +7 -0
- package/dist/agent/runtime/execution_context.js +39 -3
- package/dist/agent/runtime/json_verifier_recipe.d.ts +8 -0
- package/dist/agent/runtime/json_verifier_recipe.js +66 -0
- package/dist/agent/runtime/measurements.d.ts +110 -0
- package/dist/agent/runtime/measurements.js +317 -0
- package/dist/agent/runtime/policy.d.ts +4 -0
- package/dist/agent/runtime/policy.js +31 -20
- package/dist/agent/runtime/provider_native_evidence.d.ts +20 -0
- package/dist/agent/runtime/provider_native_evidence.js +86 -0
- package/dist/agent/runtime/recovery.d.ts +2 -0
- package/dist/agent/runtime/recovery.js +45 -2
- package/dist/agent/runtime/remote_broker_transport.d.ts +10 -0
- package/dist/agent/runtime/remote_broker_transport.js +84 -0
- package/dist/agent/runtime/remote_deletion_receipts.d.ts +3 -0
- package/dist/agent/runtime/remote_deletion_receipts.js +43 -0
- package/dist/agent/runtime/remote_journal_replay.d.ts +13 -0
- package/dist/agent/runtime/remote_journal_replay.js +233 -0
- package/dist/agent/runtime/remote_mutation_journal.d.ts +25 -0
- package/dist/agent/runtime/remote_mutation_journal.js +208 -0
- package/dist/agent/runtime/remote_resource_endpoint.d.ts +7 -0
- package/dist/agent/runtime/remote_resource_endpoint.js +6 -0
- package/dist/agent/runtime/remote_resource_errors.d.ts +5 -0
- package/dist/agent/runtime/remote_resource_errors.js +9 -0
- package/dist/agent/runtime/remote_resource_script.d.ts +2 -0
- package/dist/agent/runtime/remote_resource_script.js +1009 -0
- package/dist/agent/runtime/remote_resources.d.ts +29 -0
- package/dist/agent/runtime/remote_resources.js +160 -0
- package/dist/agent/runtime/source_verification.d.ts +12 -0
- package/dist/agent/runtime/source_verification.js +210 -0
- package/dist/agent/runtime/source_verification_contract.d.ts +75 -0
- package/dist/agent/runtime/source_verification_contract.js +203 -0
- package/dist/agent/runtime/tool_checkpoints.d.ts +11 -0
- package/dist/agent/runtime/tool_checkpoints.js +26 -0
- package/dist/agent/runtime/tool_effects.d.ts +5 -0
- package/dist/agent/runtime/tool_progress.d.ts +12 -0
- package/dist/agent/runtime/tool_progress.js +76 -0
- package/dist/agent/runtime/tool_runtime.d.ts +16 -1
- package/dist/agent/runtime/tool_runtime.js +204 -10
- package/dist/agent/runtime/tracing.d.ts +1 -1
- package/dist/agent/runtime/verifier_capture.d.ts +9 -0
- package/dist/agent/runtime/verifier_capture.js +100 -0
- package/dist/agent/runtime/verifier_contract.d.ts +24 -0
- package/dist/agent/runtime/verifier_contract.js +41 -0
- package/dist/agent/subagent.d.ts +20 -10
- package/dist/agent/subagent.js +266 -29
- package/dist/agent/tool_response_directory.d.ts +24 -0
- package/dist/agent/tool_response_directory.js +61 -0
- package/dist/agent/tool_response_source.d.ts +8 -0
- package/dist/agent/tool_response_source.js +49 -0
- package/dist/agent/tool_response_store.d.ts +75 -4
- package/dist/agent/tool_response_store.js +583 -64
- package/dist/agent/tools/ask_user.d.ts +3 -1
- package/dist/agent/tools/ask_user.js +30 -11
- package/dist/agent/tools/background.js +1 -0
- package/dist/agent/tools/benchmark_cpu.d.ts +2 -0
- package/dist/agent/tools/benchmark_cpu.js +102 -0
- package/dist/agent/tools/compare_benchmarks.d.ts +2 -0
- package/dist/agent/tools/compare_benchmarks.js +53 -0
- package/dist/agent/tools/deferred.js +1 -0
- package/dist/agent/tools/delegate.js +18 -2
- package/dist/agent/tools/helper_requirements.d.ts +7 -0
- package/dist/agent/tools/helper_requirements.js +19 -0
- package/dist/agent/tools/index.d.ts +1 -0
- package/dist/agent/tools/index.js +3 -0
- package/dist/agent/tools/measurement_report.d.ts +22 -0
- package/dist/agent/tools/measurement_report.js +190 -0
- package/dist/agent/tools/pane.d.ts +0 -7
- package/dist/agent/tools/pane.js +5 -4
- package/dist/agent/tools/project_context.d.ts +3 -0
- package/dist/agent/tools/project_context.js +45 -0
- package/dist/agent/tools/recall_tool_response.d.ts +3 -5
- package/dist/agent/tools/recall_tool_response.js +19 -29
- package/dist/agent/tools/registry.d.ts +1 -0
- package/dist/agent/tools/registry.js +23 -0
- package/dist/agent/tools/related_sessions.d.ts +2 -0
- package/dist/agent/tools/related_sessions.js +156 -0
- package/dist/agent/tools/routine.js +13 -3
- package/dist/agent/tools/session_evidence.d.ts +3 -0
- package/dist/agent/tools/session_evidence.js +72 -0
- package/dist/agent/tools/shell.d.ts +4 -3
- package/dist/agent/tools/shell.js +174 -47
- package/dist/agent/tools/tool_search.js +3 -2
- package/dist/agent/tools/types.d.ts +28 -0
- package/dist/agent/tools/verify_artifact.d.ts +2 -0
- package/dist/agent/tools/verify_artifact.js +60 -0
- package/dist/agent/tools/workflow.js +1 -0
- package/dist/app/activity.d.ts +6 -1
- package/dist/app/activity.js +81 -12
- package/dist/app/agent_runner.d.ts +6 -1
- package/dist/app/agent_runner.js +34 -19
- package/dist/app/command_context.js +106 -10
- package/dist/app/controller.d.ts +15 -4
- package/dist/app/controller.js +29 -3
- package/dist/app/escape_stop.d.ts +11 -0
- package/dist/app/escape_stop.js +15 -0
- package/dist/app/liveness.d.ts +6 -4
- package/dist/app/liveness.js +13 -3
- package/dist/app/model_catalog_cache.d.ts +5 -0
- package/dist/app/model_catalog_cache.js +138 -0
- package/dist/app/ordered_transcript.js +43 -4
- package/dist/app/prompt_turn.d.ts +14 -0
- package/dist/app/prompt_turn.js +53 -0
- package/dist/app/recap.d.ts +3 -0
- package/dist/app/recap.js +9 -3
- package/dist/app/restart.d.ts +3 -2
- package/dist/app/restart.js +22 -7
- package/dist/app/rewind.d.ts +3 -3
- package/dist/app/rewind.js +3 -3
- package/dist/app/selection_completion.d.ts +17 -2
- package/dist/app/selection_completion.js +84 -9
- package/dist/app/session_manager.d.ts +38 -6
- package/dist/app/session_manager.js +263 -60
- package/dist/app/session_messages.d.ts +3 -0
- package/dist/app/session_messages.js +60 -0
- package/dist/app/task_scope_router.d.ts +20 -0
- package/dist/app/task_scope_router.js +173 -0
- package/dist/app/transcript_window.d.ts +2 -0
- package/dist/app/transcript_window.js +4 -0
- package/dist/app/workspace_admission_details.d.ts +3 -0
- package/dist/app/workspace_admission_details.js +26 -0
- package/dist/app/workspace_layout_controller.d.ts +11 -0
- package/dist/app/workspace_layout_controller.js +88 -0
- package/dist/app/workspace_monitor.d.ts +1 -0
- package/dist/app/workspace_monitor.js +216 -0
- package/dist/app/workspace_presets.d.ts +29 -0
- package/dist/app/workspace_presets.js +192 -0
- package/dist/attention/queue.d.ts +37 -0
- package/dist/attention/queue.js +183 -0
- package/dist/bench/rf_shared.d.ts +2 -0
- package/dist/board/binding.d.ts +42 -0
- package/dist/board/binding.js +38 -0
- package/dist/board/client.d.ts +42 -0
- package/dist/board/client.js +60 -0
- package/dist/cli.js +1 -1
- package/dist/cli_args.js +19 -17
- package/dist/cli_main.js +110 -13
- package/dist/cli_ratatui.d.ts +183 -16
- package/dist/cli_ratatui.js +3989 -1255
- package/dist/components/ActivityLine.d.ts +3 -2
- package/dist/components/ActivityLine.js +2 -2
- package/dist/components/InputArea.d.ts +19 -1
- package/dist/components/InputArea.js +264 -190
- package/dist/components/MessageList.d.ts +2 -0
- package/dist/components/MessageList.js +3 -1
- package/dist/components/SingleMessage.d.ts +2 -0
- package/dist/components/SingleMessage.js +4 -2
- package/dist/components/StatusBar.d.ts +4 -2
- package/dist/components/StatusBar.js +3 -1
- package/dist/conductor_branch.js +3 -0
- package/dist/config/api_retry.d.ts +6 -1
- package/dist/config/api_retry.js +19 -1
- package/dist/config/defaults.d.ts +2 -1
- package/dist/config/defaults.js +9 -2
- package/dist/config/message_display.d.ts +1 -0
- package/dist/config/message_display.js +17 -2
- package/dist/config/permissions.d.ts +21 -0
- package/dist/config/permissions.js +89 -0
- package/dist/config/resolved.d.ts +2 -2
- package/dist/config/types.d.ts +32 -5
- package/dist/config.d.ts +38 -4
- package/dist/config.js +290 -42
- package/dist/context/project_intelligence.d.ts +44 -0
- package/dist/context/project_intelligence.js +246 -0
- package/dist/desktop/cli_launch.d.ts +8 -0
- package/dist/desktop/cli_launch.js +6 -0
- package/dist/desktop/cli_shim.d.ts +8 -0
- package/dist/desktop/cli_shim.js +120 -0
- package/dist/desktop/runtime.d.ts +16 -0
- package/dist/desktop/runtime.js +161 -0
- package/dist/desktop/worker_launch.d.ts +7 -0
- package/dist/desktop/worker_launch.js +7 -0
- package/dist/diagnostics/cargo_mutants_selection.d.ts +27 -0
- package/dist/diagnostics/cargo_mutants_selection.js +48 -0
- package/dist/diagnostics/native_terminal_benchmark.d.ts +58 -0
- package/dist/diagnostics/native_terminal_benchmark.js +1247 -0
- package/dist/diagnostics/session_evidence_package.d.ts +40 -0
- package/dist/diagnostics/session_evidence_package.js +234 -0
- package/dist/diagnostics/session_export.d.ts +93 -0
- package/dist/diagnostics/session_export.js +634 -0
- package/dist/emulation/tool_adapters.js +48 -18
- package/dist/emulation/ztc_addendum.d.ts +1 -0
- package/dist/emulation/ztc_addendum.js +13 -12
- package/dist/environment/service_runner.d.ts +1 -0
- package/dist/environment/service_runner.js +68 -0
- package/dist/environment/store.d.ts +120 -0
- package/dist/environment/store.js +387 -0
- package/dist/events.d.ts +40 -1
- package/dist/events.js +10 -17
- package/dist/goal_contract.d.ts +25 -0
- package/dist/goal_contract.js +44 -0
- package/dist/headless.d.ts +31 -0
- package/dist/headless.js +578 -70
- package/dist/headless_cli.js +8 -0
- package/dist/headless_cli_args.d.ts +1 -0
- package/dist/headless_cli_args.js +1 -0
- package/dist/intake/cli.d.ts +1 -0
- package/dist/intake/cli.js +33 -0
- package/dist/intake/format.d.ts +2 -0
- package/dist/intake/format.js +14 -0
- package/dist/intake/notifications.d.ts +16 -0
- package/dist/intake/notifications.js +132 -0
- package/dist/intake/store.d.ts +56 -0
- package/dist/intake/store.js +238 -0
- package/dist/library.d.ts +8 -0
- package/dist/library.js +19 -10
- package/dist/mcp/client.d.ts +1 -0
- package/dist/mcp/client.js +20 -0
- package/dist/modes/builtin/plan.yaml +2 -2
- package/dist/modes/handlers.js +1 -1
- package/dist/onboarding/first_run.d.ts +3 -0
- package/dist/onboarding/first_run.js +33 -25
- package/dist/onboarding/setup.d.ts +32 -0
- package/dist/onboarding/setup.js +133 -0
- package/dist/onboarding/setup_agent_health.d.ts +17 -0
- package/dist/onboarding/setup_agent_health.js +79 -0
- package/dist/onboarding/setup_environment.d.ts +66 -0
- package/dist/onboarding/setup_environment.js +219 -0
- package/dist/onboarding/setup_workspace.d.ts +17 -0
- package/dist/onboarding/setup_workspace.js +129 -0
- package/dist/optimize/adapters/index.d.ts +4 -1
- package/dist/optimize/adapters/index.js +7 -0
- package/dist/optimize/adapters/kernelbench.js +14 -5
- package/dist/optimize/adapters/popcorn.js +3 -2
- package/dist/optimize/adapters/profile_benchmark.js +13 -7
- package/dist/optimize/adapters/rfbench.js +25 -14
- package/dist/optimize/adapters/types.d.ts +3 -0
- package/dist/optimize/adapters/zergpod.js +5 -2
- package/dist/optimize/baseline.js +10 -21
- package/dist/optimize/branch.js +9 -12
- package/dist/optimize/combine.js +2 -3
- package/dist/optimize/executor.js +34 -48
- package/dist/optimize/measurements.d.ts +55 -0
- package/dist/optimize/measurements.js +173 -0
- package/dist/optimize/results.d.ts +1 -0
- package/dist/optimize/results.js +11 -33
- package/dist/optimize/tge.js +2 -1
- package/dist/panes/initial_input.d.ts +19 -0
- package/dist/panes/initial_input.js +206 -0
- package/dist/panes/labels.d.ts +16 -0
- package/dist/panes/labels.js +42 -0
- package/dist/panes/model_catalog.d.ts +3 -3
- package/dist/panes/model_catalog.js +28 -4
- package/dist/panes/pane_registry.js +6 -2
- package/dist/panes/types.d.ts +3 -0
- package/dist/panes/ztc_launch.js +19 -0
- package/dist/plugin/optimization.d.ts +2 -0
- package/dist/plugin/optimization.js +1 -0
- package/dist/plugin/runtime.d.ts +2 -0
- package/dist/plugin/simulation.d.ts +6 -1
- package/dist/plugin/simulation_contract.d.ts +836 -1
- package/dist/plugin/simulation_documents.d.ts +22 -0
- package/dist/plugin/simulation_documents.js +1 -0
- package/dist/plugin/simulation_interventions.d.ts +103 -0
- package/dist/plugin/simulation_interventions.js +1 -0
- package/dist/plugin/simulation_living.d.ts +1 -0
- package/dist/plugin/simulation_living.js +3 -0
- package/dist/plugin/simulation_meetings.d.ts +121 -0
- package/dist/plugin/simulation_meetings.js +1 -0
- package/dist/plugin/simulation_story_review.d.ts +111 -0
- package/dist/plugin/simulation_story_review.js +1 -0
- package/dist/plugin/simulation_storyteller.d.ts +91 -0
- package/dist/plugin/simulation_storyteller.js +1 -0
- package/dist/plugin/simulation_structured.d.ts +2 -0
- package/dist/plugin/simulation_structured.js +2 -0
- package/dist/plugin/simulation_toolkit.d.ts +21 -0
- package/dist/plugin/simulation_toolkit.js +24 -0
- package/dist/prompts/tool_delegate_task.j2 +1 -1
- package/dist/remote-broker/Dockerfile +10 -0
- package/dist/remote-broker/archive.py +1227 -0
- package/dist/remote-broker/cutover.py +761 -0
- package/dist/remote-broker/requirements.txt +5 -0
- package/dist/remote-broker/resources.json +6 -0
- package/dist/remote-broker/resources.write-staging.example.json +18 -0
- package/dist/remote-broker/retained.py +686 -0
- package/dist/remote-broker/retained_cleanup.py +550 -0
- package/dist/remote-broker/server.py +648 -0
- package/dist/remote-broker/worker.py +1007 -0
- package/dist/router_auth.d.ts +31 -0
- package/dist/router_auth.js +155 -9
- package/dist/runbooks/catalog.d.ts +3 -0
- package/dist/runbooks/catalog.js +26 -0
- package/dist/runbooks/library.d.ts +11 -0
- package/dist/runbooks/library.js +95 -0
- package/dist/runbooks/package.d.ts +43 -0
- package/dist/runbooks/package.js +102 -0
- package/dist/session.d.ts +65 -13
- package/dist/session.js +548 -43
- package/dist/session_handoff.d.ts +25 -0
- package/dist/session_handoff.js +322 -0
- package/dist/session_handoff_contract.d.ts +89 -0
- package/dist/session_handoff_contract.js +179 -0
- package/dist/session_media.d.ts +41 -0
- package/dist/session_media.js +357 -0
- package/dist/session_ownership.d.ts +16 -0
- package/dist/session_ownership.js +221 -0
- package/dist/session_public.d.ts +10 -2
- package/dist/session_public.js +6 -1
- package/dist/simulation/dynamic_history.d.ts +42 -0
- package/dist/simulation/dynamic_history.js +173 -0
- package/dist/simulation/engines/swarm/pane_manager.js +7 -6
- package/dist/simulation/inference.d.ts +3 -1
- package/dist/simulation/inference.js +19 -1
- package/dist/simulation/intervention_generation.d.ts +27 -0
- package/dist/simulation/intervention_generation.js +246 -0
- package/dist/simulation/intervention_material.d.ts +4 -0
- package/dist/simulation/intervention_material.js +81 -0
- package/dist/simulation/living/context.d.ts +3130 -0
- package/dist/simulation/living/context.js +944 -0
- package/dist/simulation/living/definer.d.ts +12 -0
- package/dist/simulation/living/definer.js +223 -0
- package/dist/simulation/living/definition.d.ts +257 -0
- package/dist/simulation/living/definition.js +341 -0
- package/dist/simulation/living/frame.d.ts +259 -0
- package/dist/simulation/living/frame.js +223 -0
- package/dist/simulation/living/identifiers.d.ts +2 -0
- package/dist/simulation/living/identifiers.js +12 -0
- package/dist/simulation/living/index.d.ts +15 -0
- package/dist/simulation/living/index.js +15 -0
- package/dist/simulation/living/inference.d.ts +219 -0
- package/dist/simulation/living/inference.js +576 -0
- package/dist/simulation/living/mechanics.d.ts +54 -0
- package/dist/simulation/living/mechanics.js +588 -0
- package/dist/simulation/living/model-input.d.ts +25 -0
- package/dist/simulation/living/model-input.js +215 -0
- package/dist/simulation/living/open-world.d.ts +257 -0
- package/dist/simulation/living/open-world.js +102 -0
- package/dist/simulation/living/projection.d.ts +7 -0
- package/dist/simulation/living/projection.js +31 -0
- package/dist/simulation/living/recall.d.ts +17 -0
- package/dist/simulation/living/recall.js +25 -0
- package/dist/simulation/living/reduce.d.ts +15 -0
- package/dist/simulation/living/reduce.js +1853 -0
- package/dist/simulation/living/replay.d.ts +6 -0
- package/dist/simulation/living/replay.js +22 -0
- package/dist/simulation/living/runtime.d.ts +140 -0
- package/dist/simulation/living/runtime.js +3020 -0
- package/dist/simulation/living/shared-kinds.d.ts +24 -0
- package/dist/simulation/living/shared-kinds.js +96 -0
- package/dist/simulation/living/types.d.ts +2785 -0
- package/dist/simulation/living/types.js +669 -0
- package/dist/simulation/llm.d.ts +3 -1
- package/dist/simulation/llm.js +90 -30
- package/dist/simulation/memory/embedding.d.ts +1 -1
- package/dist/simulation/memory/embedding.js +9 -3
- package/dist/simulation/memory/filesystem.d.ts +2 -0
- package/dist/simulation/memory/filesystem.js +5 -1
- package/dist/simulation/memory/filesystem_file_tree.d.ts +4 -1
- package/dist/simulation/memory/filesystem_file_tree.js +41 -10
- package/dist/simulation/memory/filesystem_invariants.js +1 -2
- package/dist/simulation/memory/filesystem_types.d.ts +1 -0
- package/dist/simulation/memory/memory.d.ts +2 -0
- package/dist/simulation/memory/memory.js +5 -1
- package/dist/simulation/orchestration/intent.js +0 -2
- package/dist/simulation/orchestration/lifecycle.js +0 -2
- package/dist/simulation/plugin_host.d.ts +25 -1
- package/dist/simulation/plugin_host.js +334 -17
- package/dist/simulation/session_documents.d.ts +20 -0
- package/dist/simulation/session_documents.js +62 -0
- package/dist/simulation/session_input_validation.d.ts +43 -0
- package/dist/simulation/session_input_validation.js +364 -0
- package/dist/simulation/session_inputs.d.ts +32 -0
- package/dist/simulation/session_inputs.js +154 -0
- package/dist/simulation/telemetry.d.ts +11 -14
- package/dist/simulation/telemetry.js +177 -54
- package/dist/simulation/toolkit/bounded_turns.d.ts +13 -0
- package/dist/simulation/toolkit/bounded_turns.js +80 -0
- package/dist/simulation/toolkit/dynamic_agents.d.ts +25 -0
- package/dist/simulation/toolkit/dynamic_agents.js +218 -0
- package/dist/simulation/toolkit/dynamic_digest.d.ts +1 -0
- package/dist/simulation/toolkit/dynamic_digest.js +8 -0
- package/dist/simulation/toolkit/dynamic_documents.d.ts +7 -0
- package/dist/simulation/toolkit/dynamic_documents.js +71 -0
- package/dist/simulation/toolkit/dynamic_driver.d.ts +8 -0
- package/dist/simulation/toolkit/dynamic_driver.js +269 -0
- package/dist/simulation/toolkit/dynamic_game.d.ts +53 -0
- package/dist/simulation/toolkit/dynamic_game.js +805 -0
- package/dist/simulation/toolkit/dynamic_knowledge.d.ts +15 -0
- package/dist/simulation/toolkit/dynamic_knowledge.js +91 -0
- package/dist/simulation/toolkit/dynamic_mechanics.d.ts +22 -0
- package/dist/simulation/toolkit/dynamic_mechanics.js +910 -0
- package/dist/simulation/toolkit/dynamic_meetings.d.ts +239 -0
- package/dist/simulation/toolkit/dynamic_meetings.js +350 -0
- package/dist/simulation/toolkit/dynamic_progress.d.ts +131 -0
- package/dist/simulation/toolkit/dynamic_progress.js +214 -0
- package/dist/simulation/toolkit/dynamic_projection.d.ts +9 -0
- package/dist/simulation/toolkit/dynamic_projection.js +219 -0
- package/dist/simulation/toolkit/dynamic_runtime.d.ts +412 -0
- package/dist/simulation/toolkit/dynamic_runtime.js +6536 -0
- package/dist/simulation/toolkit/dynamic_state.d.ts +111 -0
- package/dist/simulation/toolkit/dynamic_state.js +1967 -0
- package/dist/simulation/toolkit/dynamic_story_review.d.ts +508 -0
- package/dist/simulation/toolkit/dynamic_story_review.js +333 -0
- package/dist/simulation/toolkit/dynamic_storyteller.d.ts +77 -0
- package/dist/simulation/toolkit/dynamic_storyteller.js +114 -0
- package/dist/simulation/toolkit/dynamic_storyteller_runtime.d.ts +26 -0
- package/dist/simulation/toolkit/dynamic_storyteller_runtime.js +126 -0
- package/dist/simulation/toolkit/dynamic_world.d.ts +22 -0
- package/dist/simulation/toolkit/dynamic_world.js +377 -0
- package/dist/simulation/toolkit/structured_output.d.ts +5 -0
- package/dist/simulation/toolkit/structured_output.js +321 -0
- package/dist/simulation/types/world.d.ts +2 -0
- package/dist/simulation/world/artifact_store.js +1 -1
- package/dist/simulation/world/memory_manager.d.ts +5 -0
- package/dist/simulation/world/memory_manager.js +17 -2
- package/dist/simulation/world/state.d.ts +3 -2
- package/dist/simulation/world/state.js +15 -5
- package/dist/skills/bundled/measurement-validation/SKILL.md +144 -0
- package/dist/terminal_attach.d.ts +1 -0
- package/dist/terminal_attach.js +113 -0
- package/dist/tool_progress.d.ts +3 -0
- package/dist/tool_progress.js +27 -0
- package/dist/types.d.ts +145 -10
- package/dist/types.js +3 -0
- package/dist/ui/core/input.d.ts +3 -0
- package/dist/ui/core/input_segments.d.ts +18 -1
- package/dist/ui/core/input_segments.js +131 -47
- package/dist/ui/core/input_state.d.ts +12 -0
- package/dist/ui/core/layout_yoga.d.ts +1 -1
- package/dist/ui/core/turn_metadata.d.ts +5 -0
- package/dist/ui/core/turn_metadata.js +22 -0
- package/dist/ui/ink/render.d.ts +2 -1
- package/dist/ui/ink/render.js +6 -5
- package/dist/ui/ratatui/headless_pane_manager.d.ts +14 -1
- package/dist/ui/ratatui/headless_pane_manager.js +293 -104
- package/dist/ui/ratatui/index.d.ts +1 -0
- package/dist/ui/ratatui/input.d.ts +4 -0
- package/dist/ui/ratatui/input.js +15 -0
- package/dist/ui/ratatui/ipc_path.d.ts +2 -0
- package/dist/ui/ratatui/ipc_path.js +29 -1
- package/dist/ui/ratatui/mux_persistence.d.ts +3 -1
- package/dist/ui/ratatui/mux_persistence.js +139 -1
- package/dist/ui/ratatui/pane_relay.d.ts +1 -1
- package/dist/ui/ratatui/pane_relay.js +55 -27
- package/dist/ui/ratatui/process.d.ts +17 -1
- package/dist/ui/ratatui/process.js +80 -7
- package/dist/ui/ratatui/protocol.d.ts +236 -1
- package/dist/ui/ratatui/protocol.js +90 -0
- package/dist/ui/scrollback.d.ts +2 -1
- package/dist/ui/scrollback.js +9 -4
- package/dist/ui/stream_typewriter.d.ts +8 -3
- package/dist/ui/stream_typewriter.js +30 -1
- package/dist/ui/streaming_scrollback.d.ts +1 -0
- package/dist/ui/streaming_scrollback.js +1 -1
- package/dist/ui/transcript_render_cache.js +10 -0
- package/dist/ui/views/activity_line.d.ts +5 -3
- package/dist/ui/views/activity_line.js +65 -7
- package/dist/ui/views/app.d.ts +6 -3
- package/dist/ui/views/app.js +17 -6
- package/dist/ui/views/completion_menu.js +10 -5
- package/dist/ui/views/input_area.d.ts +7 -3
- package/dist/ui/views/input_area.js +15 -9
- package/dist/ui/views/message_list.d.ts +4 -1
- package/dist/ui/views/message_list.js +89 -19
- package/dist/ui/views/queue_panel.d.ts +3 -1
- package/dist/ui/views/queue_panel.js +9 -2
- package/dist/ui/views/status_bar.d.ts +4 -2
- package/dist/ui/views/status_bar.js +28 -13
- package/dist/ui/views/theme.d.ts +2 -0
- package/dist/ui/views/theme.js +2 -0
- package/dist/ui/widgets/color_panel.js +18 -0
- package/dist/ui/widgets/form.js +8 -0
- package/dist/ui/widgets/log_view.js +7 -0
- package/dist/ui/widgets/navigator_panel.js +8 -0
- package/dist/ui/widgets/prompt_viewer.js +2 -0
- package/dist/ui/widgets/questionnaire.d.ts +2 -0
- package/dist/ui/widgets/questionnaire.js +79 -16
- package/dist/ui/widgets/resume_panel.d.ts +2 -0
- package/dist/ui/widgets/resume_panel.js +26 -15
- package/dist/ui/widgets/rewind_panel.d.ts +2 -2
- package/dist/ui/widgets/rewind_panel.js +4 -2
- package/dist/ui/widgets/select.js +16 -27
- package/dist/ui/widgets/settings_panel.js +16 -0
- package/dist/ui/widgets/status_line_panel.d.ts +1 -0
- package/dist/ui/widgets/status_line_panel.js +30 -4
- package/dist/ui/widgets/text_input.d.ts +2 -0
- package/dist/ui/widgets/text_input.js +15 -1
- package/dist/ui/widgets/types.d.ts +2 -0
- package/dist/usage_projection.d.ts +24 -0
- package/dist/usage_projection.js +130 -0
- package/dist/usage_snapshot.d.ts +36 -0
- package/dist/usage_snapshot.js +131 -0
- package/dist/utils/assistant_message.d.ts +2 -0
- package/dist/utils/assistant_message.js +5 -0
- package/dist/utils/atomic_write.d.ts +6 -2
- package/dist/utils/atomic_write.js +29 -4
- package/dist/utils/checked_shell.d.ts +25 -0
- package/dist/utils/checked_shell.js +107 -0
- package/dist/utils/compaction.d.ts +4 -1
- package/dist/utils/compaction.js +31 -7
- package/dist/utils/context.d.ts +4 -4
- package/dist/utils/context.js +14 -12
- package/dist/utils/deepseek.d.ts +2 -2
- package/dist/utils/deepseek.js +13 -5
- package/dist/utils/ephemeral.js +4 -0
- package/dist/utils/ephemeral_tools.d.ts +18 -0
- package/dist/utils/ephemeral_tools.js +97 -0
- package/dist/utils/jev_client.d.ts +4 -0
- package/dist/utils/jev_client.js +15 -0
- package/dist/utils/model_cache.d.ts +15 -0
- package/dist/utils/model_cache.js +143 -0
- package/dist/utils/models.d.ts +4 -2
- package/dist/utils/models.js +12 -16
- package/dist/utils/reasoning.d.ts +8 -1
- package/dist/utils/reasoning.js +31 -11
- package/dist/utils/router_catalog.d.ts +49 -0
- package/dist/utils/router_catalog.js +271 -0
- package/dist/utils/sandbox.d.ts +9 -0
- package/dist/utils/sandbox.js +118 -15
- package/dist/utils/shell.d.ts +7 -0
- package/dist/utils/shell.js +98 -34
- package/dist/utils/subprocess_env.d.ts +3 -0
- package/dist/utils/subprocess_env.js +27 -1
- package/dist/web/accounts_mirror.d.ts +3 -1
- package/dist/web/accounts_mirror.js +13 -9
- package/dist/web/child_publication.d.ts +17 -0
- package/dist/web/child_publication.js +45 -0
- package/dist/web/mirror_authenticator.d.ts +31 -11
- package/dist/web/mirror_authenticator.js +67 -17
- package/dist/web/mirror_client.d.ts +31 -4
- package/dist/web/mirror_client.js +189 -23
- package/dist/web/mirror_stream.d.ts +84 -22
- package/dist/web/mirror_stream.js +676 -95
- package/dist/web/observer_query_redaction.d.ts +6 -0
- package/dist/web/observer_query_redaction.js +58 -0
- package/dist/web/pane_registry.d.ts +2 -0
- package/dist/web/pane_registry.js +86 -22
- package/dist/web/tool_image.d.ts +6 -0
- package/dist/web/tool_image.js +17 -0
- package/dist/web/view_plugin.d.ts +14 -0
- package/dist/web/view_plugin.js +23 -1
- package/dist/worker/executor.js +31 -12
- package/dist/worker/index.d.ts +1 -0
- package/dist/worker/toolsets.js +3 -1
- package/dist/worker/types.d.ts +12 -1
- package/dist/workflows/registry.js +1 -0
- package/dist/workflows/registry_handle.d.ts +2 -0
- package/dist/workflows/runtime.d.ts +2 -0
- package/dist/workflows/runtime.js +1 -0
- package/dist/workspace_agent.d.ts +7 -0
- package/dist/workspace_agent.js +36 -0
- package/dist/workspace_collision.d.ts +76 -0
- package/dist/workspace_collision.js +688 -0
- package/dist/workspace_layout.d.ts +18 -0
- package/dist/workspace_layout.js +121 -0
- package/dist/workspace_runtime.d.ts +44 -0
- package/dist/workspace_runtime.js +82 -0
- package/dist/workspace_session_context.d.ts +62 -0
- package/dist/workspace_session_context.js +160 -0
- package/dist/zlm-embed.mjs +32518 -9615
- package/dist/zlm.js +1 -0
- package/node_modules/@zerg/model-contracts/LICENSE.md +375 -0
- package/node_modules/@zerg/model-contracts/README.md +90 -0
- package/node_modules/@zerg/model-contracts/index.d.ts +20 -0
- package/node_modules/@zerg/model-contracts/index.js +223 -0
- package/node_modules/@zerg/model-contracts/package.json +8 -0
- package/node_modules/glob/node_modules/brace-expansion/index.js +78 -22
- package/node_modules/glob/node_modules/brace-expansion/package.json +1 -1
- package/node_modules/readdir-glob/node_modules/brace-expansion/index.js +78 -22
- package/node_modules/readdir-glob/node_modules/brace-expansion/package.json +1 -1
- package/package.json +45 -24
- package/packages/model-contracts/LICENSE.md +375 -0
- package/packages/model-contracts/README.md +90 -0
- package/packages/model-contracts/index.d.ts +20 -0
- package/packages/model-contracts/index.js +223 -0
- package/packages/model-contracts/package.json +8 -0
- package/remote-broker/Dockerfile +10 -0
- package/remote-broker/README.md +308 -0
- package/remote-broker/archive.py +1227 -0
- package/remote-broker/cutover.py +761 -0
- package/remote-broker/requirements.txt +5 -0
- package/remote-broker/resources.example.json +6 -0
- package/remote-broker/resources.write-staging.example.json +18 -0
- package/remote-broker/retained.py +686 -0
- package/remote-broker/retained_cleanup.py +550 -0
- package/remote-broker/server.py +648 -0
- package/scripts/build-remote-broker.mjs +13 -0
- package/scripts/ensure-local-packages.mjs +6 -0
- package/scripts/node-pty-helpers.mjs +103 -0
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useRef, useMemo } from 'react';
|
|
3
3
|
import { InkNode } from '../ui/ink/index.js';
|
|
4
4
|
import { buildMessageListView } from '../ui/views/message_list.js';
|
|
5
|
-
export const MessageList = ({ messages, height, maxMessages = 50, debug = false, expandToolOutputs = false, scrollback = false, externalTranscript = false, showThinking = true, }) => {
|
|
5
|
+
export const MessageList = ({ messages, height, maxMessages = 50, debug = false, expandToolOutputs = false, scrollback = false, externalTranscript = false, showThinking = true, showTurnMetadata = true, cols = process.stdout.columns || 80, }) => {
|
|
6
6
|
// In scrollback mode, track which messages have been rendered to avoid duplication
|
|
7
7
|
const renderedIdsRef = useRef(new Set());
|
|
8
8
|
// Filter to only new, complete messages in scrollback mode
|
|
@@ -46,6 +46,8 @@ export const MessageList = ({ messages, height, maxMessages = 50, debug = false,
|
|
|
46
46
|
scrollback,
|
|
47
47
|
externalTranscript,
|
|
48
48
|
showThinking,
|
|
49
|
+
showTurnMetadata,
|
|
50
|
+
cols,
|
|
49
51
|
});
|
|
50
52
|
return _jsx(InkNode, { node: node });
|
|
51
53
|
};
|
|
@@ -3,6 +3,8 @@ import { Message } from '../types.js';
|
|
|
3
3
|
interface SingleMessageProps {
|
|
4
4
|
message: Message;
|
|
5
5
|
expandToolOutputs?: boolean;
|
|
6
|
+
showTurnMetadata?: boolean;
|
|
7
|
+
cols?: number;
|
|
6
8
|
}
|
|
7
9
|
export declare const SingleMessage: React.FC<SingleMessageProps>;
|
|
8
10
|
export default SingleMessage;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
|
+
import { messageHeaderSuffix } from '../ui/core/turn_metadata.js';
|
|
4
|
+
import { displayWidth } from '../ui/core/text_width.js';
|
|
3
5
|
// Box-drawing characters for tables
|
|
4
6
|
const BOX = {
|
|
5
7
|
topLeft: '╭',
|
|
@@ -152,7 +154,7 @@ const ContentRenderer = ({ content, diffLines, isToolTrace }) => {
|
|
|
152
154
|
return _jsx(Text, { children: line }, lineIdx);
|
|
153
155
|
}) }, segIdx))) }));
|
|
154
156
|
};
|
|
155
|
-
export const SingleMessage = ({ message, expandToolOutputs = false }) => {
|
|
157
|
+
export const SingleMessage = ({ message, expandToolOutputs = false, showTurnMetadata = true, cols = process.stdout.columns || 80, }) => {
|
|
156
158
|
const config = roleConfigs[message.role] || roleConfigs.system;
|
|
157
159
|
const metadata = message.metadata;
|
|
158
160
|
const toolOutput = metadata?.toolOutput;
|
|
@@ -173,6 +175,6 @@ export const SingleMessage = ({ message, expandToolOutputs = false }) => {
|
|
|
173
175
|
if (isToolTrace) {
|
|
174
176
|
return (_jsx(Box, { flexDirection: "column", marginY: 0, paddingX: 1, children: _jsx(Box, { flexDirection: "column", marginLeft: 1, children: _jsx(ContentRenderer, { content: content, diffLines: diffLines, isToolTrace: true }) }) }));
|
|
175
177
|
}
|
|
176
|
-
return (_jsxs(Box, { flexDirection: "column", marginY: 1, paddingX: 1, children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: config.color, bold: true, children: [config.icon, " ", config.label] }), _jsxs(Text, { color: "gray", dimColor: true, children: [" \u2022 ", formatTime(message.timestamp)] }), message.isStreaming && _jsx(Text, { color: "yellow", bold: true, children: " \u258C" })] }), _jsx(Box, { flexDirection: "column", marginLeft: 2, children: _jsx(ContentRenderer, { content: content, diffLines: diffLines, isToolTrace: false }) })] }));
|
|
178
|
+
return (_jsxs(Box, { flexDirection: "column", marginY: 1, paddingX: 1, children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: config.color, bold: true, children: [config.icon, " ", config.label] }), _jsxs(Text, { color: "gray", dimColor: true, children: [" \u2022 ", formatTime(message.timestamp), messageHeaderSuffix(message, cols, displayWidth(`${config.icon} ${config.label} • ${formatTime(message.timestamp)}${message.isStreaming ? ' ▌' : ''}`), showTurnMetadata)] }), message.isStreaming && _jsx(Text, { color: "yellow", bold: true, children: " \u258C" })] }), _jsx(Box, { flexDirection: "column", marginLeft: 2, children: _jsx(ContentRenderer, { content: content, diffLines: diffLines, isToolTrace: false }) })] }));
|
|
177
179
|
};
|
|
178
180
|
export default SingleMessage;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { AgentState } from '../types.js';
|
|
2
|
+
import type { AgentState, InputMode } from '../types.js';
|
|
3
3
|
import { ContextStatus } from '../utils/context.js';
|
|
4
4
|
import type { AgentMode } from '../app/modes.js';
|
|
5
5
|
import type { CodexReasoningEffort } from '../config/types.js';
|
|
@@ -7,6 +7,7 @@ import type { StatusLineSettings } from '../ui/status_line_config.js';
|
|
|
7
7
|
interface StatusBarProps {
|
|
8
8
|
state: AgentState;
|
|
9
9
|
sessionId?: string;
|
|
10
|
+
sessionName?: string;
|
|
10
11
|
version?: string;
|
|
11
12
|
connectionStatus?: 'connected' | 'disconnected' | 'connecting';
|
|
12
13
|
contextLength?: number;
|
|
@@ -17,7 +18,8 @@ interface StatusBarProps {
|
|
|
17
18
|
emulationId?: string;
|
|
18
19
|
/** Effort in effect for the active model; undefined follows the provider. */
|
|
19
20
|
effort?: CodexReasoningEffort;
|
|
20
|
-
inputMode?:
|
|
21
|
+
inputMode?: InputMode;
|
|
22
|
+
escapeHint?: string;
|
|
21
23
|
toast?: string | null;
|
|
22
24
|
spinnerLabel?: string | null;
|
|
23
25
|
debug?: boolean;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { InkNode } from '../ui/ink/index.js';
|
|
3
3
|
import { buildStatusBarView } from '../ui/views/status_bar.js';
|
|
4
|
-
export const StatusBar = ({ state, sessionId, version = '0.1.0', connectionStatus = 'connected', contextLength, contextEstimated, contextStatus, provider, model, emulationId, effort, inputMode, toast, spinnerLabel, debug = false, mode, cols, statusLine, }) => {
|
|
4
|
+
export const StatusBar = ({ state, sessionId, sessionName, version = '0.1.0', connectionStatus = 'connected', contextLength, contextEstimated, contextStatus, provider, model, emulationId, effort, inputMode = 'steer', escapeHint, toast, spinnerLabel, debug = false, mode, cols, statusLine, }) => {
|
|
5
5
|
const node = buildStatusBarView({
|
|
6
6
|
state,
|
|
7
7
|
sessionId,
|
|
8
|
+
sessionName,
|
|
8
9
|
version,
|
|
9
10
|
connectionStatus,
|
|
10
11
|
contextLength,
|
|
@@ -15,6 +16,7 @@ export const StatusBar = ({ state, sessionId, version = '0.1.0', connectionStatu
|
|
|
15
16
|
emulationId,
|
|
16
17
|
effort,
|
|
17
18
|
inputMode,
|
|
19
|
+
escapeHint,
|
|
18
20
|
toast,
|
|
19
21
|
spinnerLabel,
|
|
20
22
|
debug,
|
package/dist/conductor_branch.js
CHANGED
|
@@ -57,6 +57,9 @@ export function resolveConductorWorkspace(branch, env = process.env) {
|
|
|
57
57
|
}
|
|
58
58
|
export function buildConductorBranchLaunch(branch, ztcArgs, options = {}) {
|
|
59
59
|
const env = options.env || process.env;
|
|
60
|
+
if (env.ZTC_DESKTOP_RUNTIME_MANIFEST) {
|
|
61
|
+
throw new Error('The bundled ZTC runtime does not support --branch; use a source or npm CLI to run branch-local code.');
|
|
62
|
+
}
|
|
60
63
|
const callerCwd = options.callerCwd || process.cwd();
|
|
61
64
|
const workspacePath = resolveConductorWorkspace(branch, env);
|
|
62
65
|
if (!existsSync(workspacePath) || !statSync(workspacePath).isDirectory()) {
|
|
@@ -22,7 +22,7 @@ export declare const MIN_API_RETRY_ATTEMPTS = 1;
|
|
|
22
22
|
* How many times to retry, and how long to wait, are the user's decisions. A
|
|
23
23
|
* long outage may be worth riding out with more attempts than a fixed menu
|
|
24
24
|
* offers, and a local endpoint may want a 10 ms backoff where a hosted one wants
|
|
25
|
-
* seconds.
|
|
25
|
+
* seconds. The configurable delay cap limits each wait, not the attempt count.
|
|
26
26
|
*/
|
|
27
27
|
export declare const MAX_API_RETRY_ATTEMPTS: number;
|
|
28
28
|
export declare const MIN_API_RETRY_BASE_DELAY_MS = 0;
|
|
@@ -39,6 +39,11 @@ export declare const DEFAULT_API_RETRY: Required<ApiRetrySettings>;
|
|
|
39
39
|
export declare function parseApiRetryAttempts(value: unknown): number | null;
|
|
40
40
|
export declare function parseApiRetryBaseDelayMs(value: unknown): number | null;
|
|
41
41
|
export declare function parseApiRetryTimeoutMs(value: unknown): number | null;
|
|
42
|
+
export declare function parseApiRetryMaxDelayMs(value: unknown): number | null;
|
|
43
|
+
/** null is continuous recovery; undefined denotes an invalid setting. */
|
|
44
|
+
export declare function parseApiRecoveryWindowMs(value: unknown): number | null | undefined;
|
|
45
|
+
/** Capped equal jitter avoids synchronized retry waves and timer overflow. */
|
|
46
|
+
export declare function apiRetryDelayMs(attempt: number, policy: Required<ApiRetrySettings>): number;
|
|
42
47
|
/**
|
|
43
48
|
* Fill in defaults for missing or unusable fields.
|
|
44
49
|
*
|
package/dist/config/api_retry.js
CHANGED
|
@@ -21,7 +21,7 @@ export const MIN_API_RETRY_ATTEMPTS = 1;
|
|
|
21
21
|
* How many times to retry, and how long to wait, are the user's decisions. A
|
|
22
22
|
* long outage may be worth riding out with more attempts than a fixed menu
|
|
23
23
|
* offers, and a local endpoint may want a 10 ms backoff where a hosted one wants
|
|
24
|
-
* seconds.
|
|
24
|
+
* seconds. The configurable delay cap limits each wait, not the attempt count.
|
|
25
25
|
*/
|
|
26
26
|
export const MAX_API_RETRY_ATTEMPTS = Number.MAX_SAFE_INTEGER;
|
|
27
27
|
export const MIN_API_RETRY_BASE_DELAY_MS = 0;
|
|
@@ -38,6 +38,8 @@ export const DEFAULT_API_RETRY = {
|
|
|
38
38
|
maxAttempts: 3,
|
|
39
39
|
baseDelayMs: 2_000,
|
|
40
40
|
requestTimeoutMs: 120_000,
|
|
41
|
+
maxDelayMs: 30_000,
|
|
42
|
+
recoveryWindowMs: null,
|
|
41
43
|
};
|
|
42
44
|
function parseBoundedInteger(value, min, max) {
|
|
43
45
|
if (value === undefined || value === null || value === '')
|
|
@@ -56,6 +58,20 @@ export function parseApiRetryBaseDelayMs(value) {
|
|
|
56
58
|
export function parseApiRetryTimeoutMs(value) {
|
|
57
59
|
return parseBoundedInteger(value, MIN_API_RETRY_TIMEOUT_MS, MAX_API_RETRY_TIMEOUT_MS);
|
|
58
60
|
}
|
|
61
|
+
export function parseApiRetryMaxDelayMs(value) {
|
|
62
|
+
return parseBoundedInteger(value, 1, MAX_TIMER_DELAY_MS);
|
|
63
|
+
}
|
|
64
|
+
/** null is continuous recovery; undefined denotes an invalid setting. */
|
|
65
|
+
export function parseApiRecoveryWindowMs(value) {
|
|
66
|
+
if (value === null || value === 'continuous')
|
|
67
|
+
return null;
|
|
68
|
+
return parseBoundedInteger(value, 0, Number.MAX_SAFE_INTEGER) ?? undefined;
|
|
69
|
+
}
|
|
70
|
+
/** Capped equal jitter avoids synchronized retry waves and timer overflow. */
|
|
71
|
+
export function apiRetryDelayMs(attempt, policy) {
|
|
72
|
+
const cap = Math.min(policy.maxDelayMs, policy.baseDelayMs * 2 ** Math.min(attempt - 1, 1023));
|
|
73
|
+
return Math.floor(cap * (0.5 + Math.random() * 0.5));
|
|
74
|
+
}
|
|
59
75
|
/**
|
|
60
76
|
* Fill in defaults for missing or unusable fields.
|
|
61
77
|
*
|
|
@@ -69,5 +85,7 @@ export function resolveApiRetrySettings(config) {
|
|
|
69
85
|
baseDelayMs: parseApiRetryBaseDelayMs(config.apiRetry?.baseDelayMs) ?? DEFAULT_API_RETRY.baseDelayMs,
|
|
70
86
|
requestTimeoutMs: parseApiRetryTimeoutMs(config.apiRetry?.requestTimeoutMs)
|
|
71
87
|
?? DEFAULT_API_RETRY.requestTimeoutMs,
|
|
88
|
+
maxDelayMs: parseApiRetryMaxDelayMs(config.apiRetry?.maxDelayMs) ?? DEFAULT_API_RETRY.maxDelayMs,
|
|
89
|
+
recoveryWindowMs: parseApiRecoveryWindowMs(config.apiRetry?.recoveryWindowMs) ?? DEFAULT_API_RETRY.recoveryWindowMs,
|
|
72
90
|
};
|
|
73
91
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReasoningWireSurface } from '@zerg/model-contracts';
|
|
1
2
|
import type { CodexReasoningEffort, ZTCConfig } from './types.js';
|
|
2
3
|
export declare const DEFAULT_OPENAI_MODEL = "gpt-5.4-nano";
|
|
3
4
|
export declare const DEFAULT_CODEX_MODEL = "gpt-5.6-sol";
|
|
@@ -14,7 +15,7 @@ export declare const DEFAULT_CLARIFAI_MODEL = "https://clarifai.com/openai/chat-
|
|
|
14
15
|
* undefined (use the provider default). Used both when building an agent
|
|
15
16
|
* (factory) and to display the active effort in the model picker.
|
|
16
17
|
*/
|
|
17
|
-
export declare function resolveCodexEffort(config: ZTCConfig, provider?: string, model?: string): CodexReasoningEffort | undefined;
|
|
18
|
+
export declare function resolveCodexEffort(config: ZTCConfig, provider?: string, model?: string, contract?: ReasoningWireSurface | import('../utils/router_catalog.js').RouterModelCapabilities): CodexReasoningEffort | undefined;
|
|
18
19
|
/**
|
|
19
20
|
* The highest-priority saved effort when the active model rejects it, so the
|
|
20
21
|
* UI can say the choice is not applied instead of silently falling back.
|
package/dist/config/defaults.js
CHANGED
|
@@ -20,14 +20,19 @@ export const DEFAULT_CLARIFAI_MODEL = 'https://clarifai.com/openai/chat-completi
|
|
|
20
20
|
* undefined (use the provider default). Used both when building an agent
|
|
21
21
|
* (factory) and to display the active effort in the model picker.
|
|
22
22
|
*/
|
|
23
|
-
export function resolveCodexEffort(config, provider, model) {
|
|
23
|
+
export function resolveCodexEffort(config, provider, model, contract = config.authMode === 'zrouter' || provider === 'openai_compatible' ? 'chat_tools' : 'native_api') {
|
|
24
24
|
const candidates = [
|
|
25
25
|
model ? config.codexEffortByModel?.[model] : undefined,
|
|
26
26
|
provider ? config.codexEffortByProvider?.[provider] : undefined,
|
|
27
27
|
config.codexEffort,
|
|
28
28
|
];
|
|
29
29
|
for (const candidate of candidates) {
|
|
30
|
-
if (candidate
|
|
30
|
+
if (!candidate)
|
|
31
|
+
continue;
|
|
32
|
+
const supported = typeof contract === 'string'
|
|
33
|
+
? isCodexReasoningEffortSupported(provider, model, candidate, contract)
|
|
34
|
+
: contract.reasoning?.choices.includes(candidate);
|
|
35
|
+
if (candidate && supported)
|
|
31
36
|
return candidate;
|
|
32
37
|
}
|
|
33
38
|
return undefined;
|
|
@@ -143,6 +148,8 @@ export function getDefaultApiKeyForProvider(provider) {
|
|
|
143
148
|
return process.env.DEEPSEEK_API_KEY;
|
|
144
149
|
case 'modal':
|
|
145
150
|
return undefined; // Modal credentials belong to the Router platform.
|
|
151
|
+
case 'fireworks':
|
|
152
|
+
return process.env.FIREWORKS_API_KEY;
|
|
146
153
|
default:
|
|
147
154
|
return (process.env.ANTHROPIC_API_KEY
|
|
148
155
|
|| process.env.OPENAI_API_KEY
|
|
@@ -7,5 +7,6 @@ export declare const MIN_TOOL_OUTPUT_LINES = 0;
|
|
|
7
7
|
*/
|
|
8
8
|
export declare const MAX_TOOL_OUTPUT_LINES: number;
|
|
9
9
|
export declare const DEFAULT_MESSAGE_DISPLAY: Required<MessageDisplaySettings>;
|
|
10
|
+
export declare function parseProseReadingRate(value: unknown): number | null | undefined;
|
|
10
11
|
export declare function parseToolOutputLines(value: unknown): number | null;
|
|
11
12
|
export declare function resolveMessageDisplaySettings(config: Pick<ZTCConfig, 'messageDisplay'>): Required<MessageDisplaySettings>;
|
|
@@ -9,9 +9,20 @@ export const DEFAULT_MESSAGE_DISPLAY = {
|
|
|
9
9
|
toolOutputLines: 2,
|
|
10
10
|
collapseToolCalls: true,
|
|
11
11
|
groupToolCalls: true,
|
|
12
|
-
showThinking:
|
|
12
|
+
showThinking: false,
|
|
13
|
+
showTurnMetadata: true,
|
|
13
14
|
smoothStreaming: true,
|
|
15
|
+
proseReadingRateWordsPerSecond: null,
|
|
14
16
|
};
|
|
17
|
+
export function parseProseReadingRate(value) {
|
|
18
|
+
if (value === null || (typeof value === 'string' && value.trim().toLowerCase() === 'off'))
|
|
19
|
+
return null;
|
|
20
|
+
if ((typeof value !== 'number' && typeof value !== 'string')
|
|
21
|
+
|| (typeof value === 'string' && value.trim() === ''))
|
|
22
|
+
return undefined;
|
|
23
|
+
const rate = Number(value);
|
|
24
|
+
return Number.isFinite(rate) && rate > 0 ? rate : undefined;
|
|
25
|
+
}
|
|
15
26
|
export function parseToolOutputLines(value) {
|
|
16
27
|
const parsed = Number(value);
|
|
17
28
|
if (!Number.isSafeInteger(parsed)
|
|
@@ -22,11 +33,15 @@ export function parseToolOutputLines(value) {
|
|
|
22
33
|
}
|
|
23
34
|
export function resolveMessageDisplaySettings(config) {
|
|
24
35
|
const configuredLines = parseToolOutputLines(config.messageDisplay?.toolOutputLines);
|
|
36
|
+
const readingRate = parseProseReadingRate(config.messageDisplay?.proseReadingRateWordsPerSecond);
|
|
25
37
|
return {
|
|
26
38
|
toolOutputLines: configuredLines ?? DEFAULT_MESSAGE_DISPLAY.toolOutputLines,
|
|
27
39
|
collapseToolCalls: config.messageDisplay?.collapseToolCalls !== false,
|
|
28
40
|
groupToolCalls: config.messageDisplay?.groupToolCalls !== false,
|
|
29
|
-
showThinking: config.messageDisplay?.showThinking
|
|
41
|
+
showThinking: config.messageDisplay?.showThinking ?? DEFAULT_MESSAGE_DISPLAY.showThinking,
|
|
42
|
+
showTurnMetadata: config.messageDisplay?.showTurnMetadata !== false,
|
|
30
43
|
smoothStreaming: config.messageDisplay?.smoothStreaming !== false,
|
|
44
|
+
proseReadingRateWordsPerSecond: readingRate === undefined
|
|
45
|
+
? DEFAULT_MESSAGE_DISPLAY.proseReadingRateWordsPerSecond : readingRate,
|
|
31
46
|
};
|
|
32
47
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type SandboxBackendStatus } from '../utils/sandbox.js';
|
|
2
|
+
import type { ZTCConfig, ZTCPermissionProfile, ZTCToolCapability } from './types.js';
|
|
3
|
+
export declare const PERMISSION_CAPABILITIES: readonly ["file_read", "file_write", "shell_exec", "network", "screen_capture", "computer_control", "ml_inference"];
|
|
4
|
+
export interface PermissionPolicySnapshot {
|
|
5
|
+
id: string;
|
|
6
|
+
capabilities: Record<ZTCToolCapability, boolean>;
|
|
7
|
+
approvalRequiredCapabilities: ZTCToolCapability[];
|
|
8
|
+
commandSandbox: SandboxBackendStatus & {
|
|
9
|
+
requested: boolean;
|
|
10
|
+
required: boolean;
|
|
11
|
+
};
|
|
12
|
+
scope: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function resolvePermissionProfile(config: ZTCConfig): ZTCPermissionProfile;
|
|
15
|
+
export declare function projectPermissionPolicy(config: ZTCConfig): PermissionPolicySnapshot;
|
|
16
|
+
/** Native provider-owned tools do not pass through ZTC's capability/approval boundary. */
|
|
17
|
+
export declare function admitPermissionProvider(profile: ZTCPermissionProfile, policy: PermissionPolicySnapshot, provider: string): void;
|
|
18
|
+
export declare function describePermissionPolicy(policy: PermissionPolicySnapshot): string;
|
|
19
|
+
export declare function describePermissionChanges(before: PermissionPolicySnapshot, after: PermissionPolicySnapshot): string;
|
|
20
|
+
/** Explicit user import only. Never auto-activate policy from a repository. */
|
|
21
|
+
export declare function readRepoPermissionProfiles(cwd: string): Promise<Record<string, ZTCPermissionProfile>>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { DEFAULT_PERMISSION_PROFILES } from '../config.js';
|
|
6
|
+
import { getSandboxPolicyStatus } from '../utils/sandbox.js';
|
|
7
|
+
import { normalizeProviderId } from '../agent/backends/provider_ids.js';
|
|
8
|
+
export const PERMISSION_CAPABILITIES = ['file_read', 'file_write', 'shell_exec', 'network', 'screen_capture', 'computer_control', 'ml_inference'];
|
|
9
|
+
const strings = z.array(z.string().min(1).max(2048)).max(128);
|
|
10
|
+
const profileSchema = z.object({
|
|
11
|
+
description: z.string().max(2000).optional(),
|
|
12
|
+
capabilities: z.object(Object.fromEntries(PERMISSION_CAPABILITIES.map(cap => [cap, z.boolean().optional()]))).strict().optional(),
|
|
13
|
+
approvalRequiredCapabilities: z.array(z.enum(PERMISSION_CAPABILITIES)).max(7).optional(),
|
|
14
|
+
allowedPaths: strings.optional(), deniedPaths: strings.optional(),
|
|
15
|
+
allowedShellCommands: strings.optional(), deniedShellCommands: strings.optional(),
|
|
16
|
+
networkHosts: z.object({ allow: strings.optional(), deny: strings.optional() }).strict().optional(),
|
|
17
|
+
sandbox: z.object({ backend: z.enum(['auto', 'none', 'seatbelt', 'bubblewrap', 'windows-job']).optional(), requireOsEnforcement: z.boolean().optional() }).strict().optional(),
|
|
18
|
+
}).strict();
|
|
19
|
+
export function resolvePermissionProfile(config) {
|
|
20
|
+
const id = config.permissionProfile ?? 'trusted';
|
|
21
|
+
const profile = config.permissionProfiles?.[id] ?? DEFAULT_PERMISSION_PROFILES[id];
|
|
22
|
+
if (!profile)
|
|
23
|
+
throw new Error(`Unknown permission profile: ${id}`);
|
|
24
|
+
const parsed = profileSchema.safeParse(profile);
|
|
25
|
+
if (!parsed.success)
|
|
26
|
+
throw new Error(`Invalid permission profile: ${id}`);
|
|
27
|
+
return parsed.data;
|
|
28
|
+
}
|
|
29
|
+
export function projectPermissionPolicy(config) {
|
|
30
|
+
const id = config.permissionProfile ?? 'trusted', profile = resolvePermissionProfile(config);
|
|
31
|
+
const capabilities = Object.fromEntries(PERMISSION_CAPABILITIES.map(cap => [cap,
|
|
32
|
+
config.toolPermissions?.[cap] !== false && profile.capabilities?.[cap] !== false]));
|
|
33
|
+
const approvals = id === 'ask_before_mutation' ? ['file_write', 'shell_exec', 'computer_control']
|
|
34
|
+
: profile.approvalRequiredCapabilities ?? [];
|
|
35
|
+
return { id, capabilities, approvalRequiredCapabilities: [...new Set(approvals)].filter(cap => capabilities[cap]),
|
|
36
|
+
commandSandbox: getSandboxPolicyStatus({ profile, profileId: id, sandbox: config.sandbox }),
|
|
37
|
+
scope: profile.allowedPaths?.length ? `File roots: ${profile.allowedPaths.join(', ')}` : 'File roots: unrestricted by profile',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** Native provider-owned tools do not pass through ZTC's capability/approval boundary. */
|
|
41
|
+
export function admitPermissionProvider(profile, policy, provider) {
|
|
42
|
+
const native = ['claude_code', 'claude_code_direct', 'codex_app_server', 'codex_legacy', 'kimi_code'].includes(normalizeProviderId(provider).replaceAll('-', '_'));
|
|
43
|
+
const constrained = Object.values(policy.capabilities).includes(false) || policy.approvalRequiredCapabilities.length > 0
|
|
44
|
+
|| Boolean(profile.allowedPaths?.length || profile.deniedPaths?.length || profile.allowedShellCommands?.length
|
|
45
|
+
|| profile.deniedShellCommands?.length || profile.networkHosts?.allow?.length || profile.networkHosts?.deny?.length || policy.commandSandbox.requested);
|
|
46
|
+
if (native && constrained)
|
|
47
|
+
throw new Error('Permission profile unsupported by this native provider; use a ZTC-managed API provider for tool policy and host approval enforcement.');
|
|
48
|
+
if (policy.commandSandbox.required && policy.commandSandbox.enforcement !== 'os')
|
|
49
|
+
throw new Error('Permission profile requires OS command sandbox enforcement, but the selected backend is unavailable.');
|
|
50
|
+
}
|
|
51
|
+
export function describePermissionPolicy(policy) {
|
|
52
|
+
const sandbox = policy.commandSandbox;
|
|
53
|
+
return [
|
|
54
|
+
`Permission profile: ${policy.id}. Policy checks at tool boundaries; not session-wide OS isolation.`,
|
|
55
|
+
...PERMISSION_CAPABILITIES.map(cap => ` ${cap}: ${policy.capabilities[cap] ? 'on' : 'off'}${policy.approvalRequiredCapabilities.includes(cap) ? ' (host approval required)' : ''}`),
|
|
56
|
+
policy.scope,
|
|
57
|
+
!sandbox.requested ? 'OS command sandbox: not requested.'
|
|
58
|
+
: `OS command sandbox: ${sandbox.required ? 'required' : 'requested'}; ${sandbox.backend} ${sandbox.available ? `available (${sandbox.enforcement}) for managed command launches` : 'unavailable (unsupported)'}. ${sandbox.required && sandbox.enforcement !== 'os' ? 'Command launch is blocked.' : 'This is backend availability, not proof that a command ran in isolation.'}`,
|
|
59
|
+
].join('\n');
|
|
60
|
+
}
|
|
61
|
+
export function describePermissionChanges(before, after) {
|
|
62
|
+
const label = (policy, cap) => !policy.capabilities[cap] ? 'off'
|
|
63
|
+
: policy.approvalRequiredCapabilities.includes(cap) ? 'on with approval' : 'on';
|
|
64
|
+
const changed = PERMISSION_CAPABILITIES.filter(cap => label(before, cap) !== label(after, cap));
|
|
65
|
+
return ['Permission changes:', ...changed.map(cap => ` ${cap}: ${label(before, cap)} → ${label(after, cap)}`),
|
|
66
|
+
...(changed.length ? [] : [' No capability changes; existing tool permission denials still apply.']), describePermissionPolicy(after)].join('\n');
|
|
67
|
+
}
|
|
68
|
+
/** Explicit user import only. Never auto-activate policy from a repository. */
|
|
69
|
+
export async function readRepoPermissionProfiles(cwd) {
|
|
70
|
+
let input;
|
|
71
|
+
try {
|
|
72
|
+
const bytes = await readFile(join(cwd, '.ztc', 'config.json'));
|
|
73
|
+
if (bytes.length > 256 * 1024)
|
|
74
|
+
throw new Error('oversized');
|
|
75
|
+
input = JSON.parse(bytes.toString('utf8'));
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
throw new Error('Invalid repo permission config; expected .ztc/config.json (maximum 256 KiB)');
|
|
79
|
+
}
|
|
80
|
+
const parsed = z.object({ permissionProfiles: z.record(z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/), profileSchema) }).safeParse(input);
|
|
81
|
+
if (!parsed.success)
|
|
82
|
+
throw new Error('Invalid repo permission profiles; capability values must be booleans and policy fields must be supported');
|
|
83
|
+
const anchor = (path) => resolve(cwd, path === '~' ? homedir() : path.replace(/^~(?=\/|$)/, homedir()));
|
|
84
|
+
return Object.fromEntries(Object.entries(parsed.data.permissionProfiles).map(([id, profile]) => [id, {
|
|
85
|
+
...profile,
|
|
86
|
+
...(profile.allowedPaths ? { allowedPaths: profile.allowedPaths.map(anchor) } : {}),
|
|
87
|
+
...(profile.deniedPaths ? { deniedPaths: profile.deniedPaths.map(anchor) } : {}),
|
|
88
|
+
}]));
|
|
89
|
+
}
|
|
@@ -35,8 +35,8 @@ export interface AuthContext {
|
|
|
35
35
|
* `apiKey` is the DIRECT provider key (what a direct backend would use).
|
|
36
36
|
* `authToken` is the platform/proxy bearer. When `useProxy` is true the active
|
|
37
37
|
* backend streams through `proxyUrl` with `authToken`; the direct `apiKey` is
|
|
38
|
-
* still surfaced
|
|
39
|
-
*
|
|
38
|
+
* still surfaced for direct-provider construction. Auto-mode preferences are
|
|
39
|
+
* resolved before `useProxy` is returned.
|
|
40
40
|
*/
|
|
41
41
|
export interface ResolvedLLMConfig {
|
|
42
42
|
provider: string;
|
package/dist/config/types.d.ts
CHANGED
|
@@ -183,6 +183,8 @@ export interface ZTCPermissionProfile {
|
|
|
183
183
|
description?: string;
|
|
184
184
|
/** Capability allow/deny map. Missing entries default to allowed. */
|
|
185
185
|
capabilities?: Partial<Record<ZTCToolCapability, boolean>>;
|
|
186
|
+
/** Existing host approval gate, applied before tools with these capabilities. */
|
|
187
|
+
approvalRequiredCapabilities?: ZTCToolCapability[];
|
|
186
188
|
/** File roots that read/write tools may access. Relative entries resolve from the current cwd. */
|
|
187
189
|
allowedPaths?: string[];
|
|
188
190
|
/** File roots that read/write tools may never access. Relative entries resolve from the current cwd. */
|
|
@@ -223,12 +225,17 @@ export interface ContextProgressBarSettings {
|
|
|
223
225
|
}
|
|
224
226
|
export interface ApiRetrySettings {
|
|
225
227
|
/**
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
+
* Attempts before entering sustained recovery, including the first try.
|
|
229
|
+
* 1 disables Agent-level retries and recovery. Default: 3.
|
|
228
230
|
*/
|
|
229
231
|
maxAttempts?: number;
|
|
230
232
|
/** Exponential backoff base in milliseconds. Default: 2000 (2s, 4s, 8s, …). */
|
|
231
233
|
baseDelayMs?: number;
|
|
234
|
+
/** Maximum jittered retry wait in milliseconds. Default: 30000. */
|
|
235
|
+
maxDelayMs?: number;
|
|
236
|
+
/** Extra recovery window after the initial attempts. null waits until
|
|
237
|
+
* cancellation; 0 disables sustained recovery. Default: null. */
|
|
238
|
+
recoveryWindowMs?: number | null;
|
|
232
239
|
/**
|
|
233
240
|
* Per-attempt inactivity timeout in milliseconds. `ZTC_LLM_REQUEST_TIMEOUT_MS`
|
|
234
241
|
* (legacy `ZTC_LLM_TIMEOUT_MS`) overrides this when set. Default: 120000.
|
|
@@ -242,14 +249,18 @@ export interface MessageDisplaySettings {
|
|
|
242
249
|
collapseToolCalls?: boolean;
|
|
243
250
|
/** Combine consecutive tool calls into one transcript entry. Default: true. */
|
|
244
251
|
groupToolCalls?: boolean;
|
|
245
|
-
/** Render provider reasoning messages in the terminal transcript. Default:
|
|
252
|
+
/** Render provider reasoning messages in the terminal transcript. Default: false. */
|
|
246
253
|
showThinking?: boolean;
|
|
254
|
+
/** Show elapsed time and model usage beside assistant timestamps. Default: true. */
|
|
255
|
+
showTurnMetadata?: boolean;
|
|
247
256
|
/**
|
|
248
257
|
* Pace streaming answers instead of painting each arrival as one burst.
|
|
249
|
-
*
|
|
250
|
-
*
|
|
258
|
+
* With the reading cap off, small chunks show immediately and completed
|
|
259
|
+
* answers flush the bounded-lag reveal. Default: true.
|
|
251
260
|
*/
|
|
252
261
|
smoothStreaming?: boolean;
|
|
262
|
+
/** Assistant prose reveal rate; null disables the cap. Default: 9 words/second. */
|
|
263
|
+
proseReadingRateWordsPerSecond?: number | null;
|
|
253
264
|
}
|
|
254
265
|
/** How conversation history is compacted when the context fills up. */
|
|
255
266
|
export type CompactionMethod = 'summary' | 'jev';
|
|
@@ -296,7 +307,16 @@ export interface CompactionSettings {
|
|
|
296
307
|
method?: CompactionMethod;
|
|
297
308
|
jev?: JevCompactionSettings;
|
|
298
309
|
}
|
|
310
|
+
export interface TerminalInteractionSettings {
|
|
311
|
+
mouseCapture?: boolean;
|
|
312
|
+
/** Number of lines per wheel event, from 1 through 20. */
|
|
313
|
+
wheelScrollLines?: number;
|
|
314
|
+
}
|
|
299
315
|
export interface ZTCConfig {
|
|
316
|
+
/** Presence creates a guarded remote session with required, host-managed leases. */
|
|
317
|
+
remoteResources?: import('../agent/runtime/remote_resources.js').RemoteResource[];
|
|
318
|
+
/** Number of unowned, unnamed sessions retained per workspace. Null/absent disables automatic pruning. */
|
|
319
|
+
sessionRetentionCount?: number | null;
|
|
300
320
|
/** Marks the one-time replacement of pre-preset settings in this profile. */
|
|
301
321
|
settingsDefaultsVersion?: number;
|
|
302
322
|
/** Configurable terminal status line fields, ordering, separator, and colors. */
|
|
@@ -315,6 +335,11 @@ export interface ZTCConfig {
|
|
|
315
335
|
hostedThreadInstructions?: string;
|
|
316
336
|
/** ZergRouter-only fallback plan. Direct provider backends ignore this. */
|
|
317
337
|
zrouterRoutePlan?: ZRouterRoutePlan;
|
|
338
|
+
/** Explicit hosted native Messages transport; bypasses all provider-key discovery. */
|
|
339
|
+
nativeAnthropicMessagesRouter?: {
|
|
340
|
+
baseUrl: string;
|
|
341
|
+
authToken: string;
|
|
342
|
+
};
|
|
318
343
|
zergEndpoint?: string;
|
|
319
344
|
emulationId?: string;
|
|
320
345
|
spinnerVerbs?: string[];
|
|
@@ -329,6 +354,8 @@ export interface ZTCConfig {
|
|
|
329
354
|
execution?: import('./execution.js').ExecutionSettings;
|
|
330
355
|
/** Terminal transcript density and reasoning visibility. */
|
|
331
356
|
messageDisplay?: MessageDisplaySettings;
|
|
357
|
+
/** Native terminal mouse capture and wheel scrolling preferences. */
|
|
358
|
+
terminalInteraction?: TerminalInteractionSettings;
|
|
332
359
|
/** Context compaction strategy (summarize, or Jev delete-only). */
|
|
333
360
|
compaction?: CompactionSettings;
|
|
334
361
|
/**
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ReasoningWireSurface } from '@zerg/model-contracts';
|
|
2
|
+
import { type RouterCatalog, type RouterCatalogConnection } from './utils/router_catalog.js';
|
|
3
|
+
import type { ReasoningContract } from './utils/reasoning.js';
|
|
4
|
+
import { ZTCConfig, ZTCAuthCredentials, ApiEnvironment, ZTCAuthMode, ZTCConfigScope, CompactionTriggerMode, OpenAICompatibleSettings, ZTCPermissionProfile, IntentLayerSettings, ContextProgressBarSettings, CodexReasoningEffort, WorkflowSettings, Account, AccountRotation, type TerminalInteractionSettings } from './config/types.js';
|
|
2
5
|
import type { AuthContext, ResolvedLLMConfig } from './config/resolved.js';
|
|
3
6
|
/** Validate and normalize an OpenAI-compatible inference destination. */
|
|
4
7
|
export declare function compatEndpoint(value: string, options?: {
|
|
@@ -8,12 +11,20 @@ export declare function normalizeAuthMode(value: string | undefined): ZTCAuthMod
|
|
|
8
11
|
export declare function resolveAuthMode(config: Pick<ZTCConfig, 'authMode'>): ZTCAuthMode;
|
|
9
12
|
export declare const DEFAULT_PERMISSION_PROFILES: Record<string, ZTCPermissionProfile>;
|
|
10
13
|
export declare const DEFAULT_CONTEXT_PROGRESS_BAR: ContextProgressBarSettings;
|
|
14
|
+
export declare const DEFAULT_TERMINAL_INTERACTION: Required<TerminalInteractionSettings>;
|
|
15
|
+
export declare function resolveTerminalInteractionSettings(value: unknown): Required<TerminalInteractionSettings>;
|
|
11
16
|
export declare function build_default_config(): ZTCConfig;
|
|
12
17
|
export declare function shouldRefreshSuperuserStatus(env?: NodeJS.ProcessEnv): boolean;
|
|
13
18
|
export declare class ConfigStore {
|
|
14
19
|
private config;
|
|
15
20
|
private profileEmulation;
|
|
16
21
|
private legacyApiKeyFromEnvironment;
|
|
22
|
+
/**
|
|
23
|
+
* Whether the routing in `this.config` came from a saved file or an explicit
|
|
24
|
+
* choice, rather than the built-in default. A config-less process that never
|
|
25
|
+
* picked a route must not hard-fail on the preset Router route it inherited.
|
|
26
|
+
*/
|
|
27
|
+
private routingIsConfigured;
|
|
17
28
|
private routerCredentials;
|
|
18
29
|
private routerCredentialsError;
|
|
19
30
|
private routerFallbackWarning;
|
|
@@ -21,6 +32,7 @@ export declare class ConfigStore {
|
|
|
21
32
|
private configScope;
|
|
22
33
|
/** Session-local overrides. Never persisted to config.json. */
|
|
23
34
|
private sessionOverrides;
|
|
35
|
+
private restoredSessionSelection;
|
|
24
36
|
/** CLI-only overrides. Never persisted to config.json. */
|
|
25
37
|
private cliOverrides;
|
|
26
38
|
/**
|
|
@@ -35,6 +47,10 @@ export declare class ConfigStore {
|
|
|
35
47
|
private applyEnvOverrides;
|
|
36
48
|
load(force?: boolean): Promise<ZTCConfig>;
|
|
37
49
|
refresh(): Promise<void>;
|
|
50
|
+
/** Copy saved settings and Router credentials, then activate them transactionally.
|
|
51
|
+
* Account registrations retain their credential paths; account homes are not cloned.
|
|
52
|
+
*/
|
|
53
|
+
duplicateProfile(requestedName: string, source?: string, activate?: () => void | Promise<void>): Promise<string>;
|
|
38
54
|
/** Load a profile in this process; restore the old view if runtime activation fails. */
|
|
39
55
|
switchProfile(name: string, activate: () => void | Promise<void>): Promise<void>;
|
|
40
56
|
save(): Promise<void>;
|
|
@@ -54,6 +70,7 @@ export declare class ConfigStore {
|
|
|
54
70
|
setConfigScope(scope: ZTCConfigScope): void;
|
|
55
71
|
clearSessionOverrides(): void;
|
|
56
72
|
withConfigScope<T>(scope: ZTCConfigScope, fn: () => T | Promise<T>): Promise<T>;
|
|
73
|
+
private releaseRestoredSelection;
|
|
57
74
|
set<K extends keyof ZTCConfig>(key: K, value: ZTCConfig[K]): void;
|
|
58
75
|
setGlobal<K extends keyof ZTCConfig>(key: K, value: ZTCConfig[K]): void;
|
|
59
76
|
setAll(next: Partial<ZTCConfig>): void;
|
|
@@ -68,7 +85,7 @@ export declare class ConfigStore {
|
|
|
68
85
|
* `undefined` removes the override instead of shadowing the saved value with
|
|
69
86
|
* an explicit undefined, so the configured setting applies again.
|
|
70
87
|
*/
|
|
71
|
-
setCliOverride<K extends keyof Pick<ZTCConfig, 'provider' | 'model' | 'codexEffort'>>(key: K, value: Pick<ZTCConfig, 'provider' | 'model' | 'codexEffort'>[K]): void;
|
|
88
|
+
setCliOverride<K extends keyof Pick<ZTCConfig, 'provider' | 'model' | 'codexEffort' | 'authMode' | 'zergProxyUrl'>>(key: K, value: Pick<ZTCConfig, 'provider' | 'model' | 'codexEffort' | 'authMode' | 'zergProxyUrl'>[K] | undefined): void;
|
|
72
89
|
getProvider(): string;
|
|
73
90
|
setProvider(provider: string): void;
|
|
74
91
|
/** All registered accounts (empty when no pool is configured). */
|
|
@@ -110,7 +127,10 @@ export declare class ConfigStore {
|
|
|
110
127
|
* Effective Codex effort for the active (or given) provider/model. Priority:
|
|
111
128
|
* per-model > per-provider > global. Defaults to the current provider/model.
|
|
112
129
|
*/
|
|
130
|
+
getReasoningWireSurface(provider?: string, model?: string): ReasoningWireSurface;
|
|
113
131
|
getCodexEffort(provider?: string, model?: string): CodexReasoningEffort | undefined;
|
|
132
|
+
/** The active transport owns the model's choices, aliases and advertised default. */
|
|
133
|
+
getReasoningContract(provider?: string, model?: string): ReasoningContract;
|
|
114
134
|
/** Saved effort the active (or given) model rejects; undefined when it applies. */
|
|
115
135
|
getUnsupportedCodexEffort(provider?: string, model?: string): CodexReasoningEffort | undefined;
|
|
116
136
|
/** Effort chosen by a startup `--effort` flag for this process (= none when unset). */
|
|
@@ -165,6 +185,21 @@ export declare class ConfigStore {
|
|
|
165
185
|
* getters stay — they are still used widely.
|
|
166
186
|
*/
|
|
167
187
|
getAuthContext(): AuthContext;
|
|
188
|
+
restoreSessionSelection(metadata: {
|
|
189
|
+
provider: string;
|
|
190
|
+
model: string;
|
|
191
|
+
authMode?: ZTCAuthMode;
|
|
192
|
+
routerOrigin?: string;
|
|
193
|
+
configProfile?: string;
|
|
194
|
+
}): void;
|
|
195
|
+
getRouterCatalogConnection(destination?: string | undefined): RouterCatalogConnection | undefined;
|
|
196
|
+
/** New children use configured routing, not a parent's restored inference route. */
|
|
197
|
+
getChildAuthMode(): ZTCAuthMode;
|
|
198
|
+
adoptRouterCatalog(catalog: RouterCatalog): Promise<void>;
|
|
199
|
+
getRouterCatalog(): RouterCatalog | undefined;
|
|
200
|
+
getResolvedAuthMode(): ZTCAuthMode;
|
|
201
|
+
getRoutedModelCatalog(): RouterCatalog | undefined;
|
|
202
|
+
getModelContextWindow(model?: string, provider?: string): number | null | undefined;
|
|
168
203
|
/**
|
|
169
204
|
* Resolve everything a backend factory needs into one struct. Folds in the
|
|
170
205
|
* provider/model override precedence, the direct-key precedence
|
|
@@ -179,8 +214,7 @@ export declare class ConfigStore {
|
|
|
179
214
|
*
|
|
180
215
|
* Reads through `get()` and the env-aware getters (never raw `this.config`)
|
|
181
216
|
* so cli/session overrides stay honored. `apiKey` is the DIRECT provider key;
|
|
182
|
-
* `authToken`/`useProxy` describe the proxy route separately
|
|
183
|
-
* still prefer a direct key (e.g. Gemini) over the proxy.
|
|
217
|
+
* `authToken`/`useProxy` describe the selected proxy route separately.
|
|
184
218
|
*/
|
|
185
219
|
resolveLLMBackendConfig(opts?: {
|
|
186
220
|
provider?: string;
|