@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
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { exportSessionDiagnostics, formatSessionDiagnosticsMarkdown } from '../../diagnostics/session_export.js';
|
|
2
|
+
import { buildSessionEvidencePackage, saveSessionEvidencePackage } from '../../diagnostics/session_evidence_package.js';
|
|
1
3
|
function formatMessages(messages) {
|
|
2
4
|
return messages
|
|
3
5
|
.map(msg => {
|
|
@@ -23,12 +25,59 @@ export const clipboardCommand = {
|
|
|
23
25
|
name: 'clipboard',
|
|
24
26
|
description: 'Copy conversation text to the clipboard',
|
|
25
27
|
usage: {
|
|
26
|
-
default: '<all|last|assistant|user|system>',
|
|
28
|
+
default: '<all|last|assistant|user|system|diagnostic|evidence>',
|
|
27
29
|
variants: [
|
|
28
30
|
{ when: { 0: ['last'] }, usage: '<all|last|assistant|user|system> [assistant|user|system]' },
|
|
31
|
+
{ when: { 0: ['diagnostic'] }, usage: 'diagnostic <markdown|jsonl>' },
|
|
32
|
+
{ when: { 0: ['evidence'] }, usage: 'evidence <preview|copy|save <file>>' },
|
|
29
33
|
],
|
|
30
34
|
},
|
|
31
35
|
handler: async (args, ctx) => {
|
|
36
|
+
if (args[0]?.toLowerCase() === 'evidence') {
|
|
37
|
+
const action = (args[1] ?? 'copy').toLowerCase();
|
|
38
|
+
const destination = args.slice(2).join(' ');
|
|
39
|
+
if (!['preview', 'copy', 'save'].includes(action) || (action === 'save' ? !destination.trim() : args.length > 2)) {
|
|
40
|
+
ctx.addMessage({ role: 'system', content: 'Usage: /clipboard evidence <preview|copy|save <file>> (copy is the default)' });
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const pkg = buildSessionEvidencePackage({ sessionId: ctx.getSessionId?.() ?? null,
|
|
45
|
+
messages: ctx.getMessages(), diagnostics: ctx.getDiagnostics?.(), evidence: ctx.getEvidenceSnapshot?.(),
|
|
46
|
+
taskHandoff: ctx.getTaskHandoff?.() ?? null });
|
|
47
|
+
if (action === 'preview')
|
|
48
|
+
ctx.addMessage({ role: 'system', content: pkg.indexMarkdown });
|
|
49
|
+
else if (action === 'copy') {
|
|
50
|
+
await ctx.clipboard.writeText(pkg.indexMarkdown);
|
|
51
|
+
ctx.addMessage({ role: 'system', content: `✓ Copied ZTC evidence package index (${Buffer.byteLength(pkg.indexMarkdown)} bytes; retained checkpoint ${pkg.packageId})` });
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
await saveSessionEvidencePackage(pkg, destination);
|
|
55
|
+
ctx.addMessage({ role: 'system', content: `✓ Saved ZTC evidence package to ${destination} (retained checkpoint ${pkg.packageId}; credentials redacted)` });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
ctx.addMessage({ role: 'system', content: `Evidence package error: ${error instanceof Error ? error.message : 'Sharing failed'}` });
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (args[0]?.toLowerCase() === 'diagnostic') {
|
|
64
|
+
const format = (args[1] ?? 'markdown').toLowerCase();
|
|
65
|
+
if (format !== 'markdown' && format !== 'jsonl') {
|
|
66
|
+
ctx.addMessage({ role: 'system', content: 'Usage: /clipboard diagnostic <markdown|jsonl>' });
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const input = { sessionId: ctx.getSessionId?.() ?? null, messages: ctx.getMessages(), diagnostics: ctx.getDiagnostics?.() };
|
|
71
|
+
const text = format === 'jsonl' ? exportSessionDiagnostics(input) : formatSessionDiagnosticsMarkdown(input);
|
|
72
|
+
await ctx.clipboard.writeText(text);
|
|
73
|
+
ctx.addMessage({ role: 'system', content: `✓ Copied ${text.length} chars (diagnostic ${format}; credentials redacted)` });
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
const message = err instanceof Error ? err.message : 'Failed to copy diagnostic export';
|
|
77
|
+
ctx.addMessage({ role: 'system', content: `Clipboard error: ${message}` });
|
|
78
|
+
}
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
32
81
|
const messages = ctx.getMessages();
|
|
33
82
|
if (messages.length === 0) {
|
|
34
83
|
ctx.addMessage({ role: 'system', content: 'Clipboard: no messages to copy.' });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactConversation, describeCompaction, smartSummarizer, localSummarizer } from '../../utils/compaction.js';
|
|
2
|
-
import { getContextStatus, contextStatusFromUsed, formatTokenCount } from '../../utils/context.js';
|
|
2
|
+
import { estimateConversationTokens, getContextStatus, contextStatusFromUsed, formatTokenCount } from '../../utils/context.js';
|
|
3
3
|
import { MAX_COMPACTION_TARGET_PERCENT, MIN_COMPACTION_TARGET_PERCENT, resolveCompactionSettings, resolveCompactionTargetPercent, resolveContextTokenBudget, tokenTriggerActive, } from '../../config/compaction.js';
|
|
4
4
|
export const compactCommand = {
|
|
5
5
|
name: 'compact',
|
|
@@ -7,6 +7,7 @@ export const compactCommand = {
|
|
|
7
7
|
usage: '/compact [target%]',
|
|
8
8
|
handler: async (args, ctx) => {
|
|
9
9
|
const messages = ctx.getMessages();
|
|
10
|
+
const authoredHistory = JSON.stringify(messages.filter(message => message.role !== 'system'));
|
|
10
11
|
if (messages.length < 3) {
|
|
11
12
|
ctx.addMessage({
|
|
12
13
|
role: 'system',
|
|
@@ -18,9 +19,10 @@ export const compactCommand = {
|
|
|
18
19
|
// The "before" percentage should match the context bar (the real provider
|
|
19
20
|
// token count); fall back to the char/4 estimate only before the first call.
|
|
20
21
|
const realUsed = ctx.getContextTokens?.() ?? 0;
|
|
22
|
+
const catalogWindow = ctx.config.getModelContextWindow?.(model);
|
|
21
23
|
const status = realUsed > 0
|
|
22
|
-
? contextStatusFromUsed(realUsed, model, ctx.getContextWindow?.())
|
|
23
|
-
: getContextStatus(messages, model);
|
|
24
|
+
? contextStatusFromUsed(realUsed, model, catalogWindow !== undefined ? catalogWindow : ctx.getContextWindow?.())
|
|
25
|
+
: getContextStatus(messages, model, catalogWindow);
|
|
24
26
|
// An explicit argument wins; otherwise the configured target applies, so
|
|
25
27
|
// /compact and auto-compaction aim at the same place.
|
|
26
28
|
const targetPercent = args[0] ? parseInt(args[0], 10) : resolveCompactionTargetPercent(ctx.config.get());
|
|
@@ -55,7 +57,7 @@ export const compactCommand = {
|
|
|
55
57
|
? resolveContextTokenBudget(ctx.config.get())
|
|
56
58
|
: undefined;
|
|
57
59
|
const targetTokens = budget === undefined
|
|
58
|
-
? undefined
|
|
60
|
+
? (catalogWindow === undefined ? undefined : Math.max(1, Math.floor((catalogWindow ?? estimateConversationTokens(messages)) * targetPercent / 100)))
|
|
59
61
|
: Math.floor(budget * (targetPercent / 100));
|
|
60
62
|
const result = await compactConversation(messages, model, {
|
|
61
63
|
method: compaction.method,
|
|
@@ -65,16 +67,22 @@ export const compactCommand = {
|
|
|
65
67
|
keepRecentMin: 10,
|
|
66
68
|
targetTokens,
|
|
67
69
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
...(msg.toolCalls ? { toolCalls: msg.toolCalls } : {}),
|
|
74
|
-
...(msg.metadata ? { metadata: msg.metadata } : {}),
|
|
75
|
-
});
|
|
70
|
+
// The summarizer yields while the host can admit steering or a user clear.
|
|
71
|
+
// Never replace that newer canonical history with an earlier snapshot.
|
|
72
|
+
if (JSON.stringify(ctx.getMessages().filter(message => message.role !== 'system')) !== authoredHistory) {
|
|
73
|
+
ctx.addMessage({ role: 'system', content: 'Conversation changed during compaction; current history is unchanged. Retry against the current conversation.' });
|
|
74
|
+
return;
|
|
76
75
|
}
|
|
77
|
-
|
|
76
|
+
// A summary that could not fit is not a surviving copy of the evicted task.
|
|
77
|
+
// Preserve the authored history rather than silently manufacturing continuity.
|
|
78
|
+
const hasNewSummary = result.messages.some(message => message.metadata?.compactionSummary === true
|
|
79
|
+
&& message.content.trim().length > 0 && !messages.some(original => original.id === message.id));
|
|
80
|
+
if (result.method !== 'jev' && result.removed > 0 && !hasNewSummary) {
|
|
81
|
+
ctx.addMessage({ role: 'system', content: 'Compaction summary cannot fit the target; history is unchanged. Choose a larger target.' });
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
ctx.setMessages(result.messages);
|
|
85
|
+
const newStatus = getContextStatus(result.messages, model, catalogWindow);
|
|
78
86
|
// Reactively shrink the context bar to the compacted size — the backend
|
|
79
87
|
// won't report this until the next turn, and the bar would otherwise stay
|
|
80
88
|
// stuck at the pre-compaction (larger) value.
|
|
@@ -894,7 +894,10 @@ Usage: /config context-progress-bar <enabled|accent|warning|critical|track|reset
|
|
|
894
894
|
return;
|
|
895
895
|
}
|
|
896
896
|
case 'effort': {
|
|
897
|
-
const
|
|
897
|
+
const catalog = ctx.config.getRoutedModelCatalog?.();
|
|
898
|
+
const EFFORT_LEVELS = catalog?.version === 1
|
|
899
|
+
? catalog.models.find(row => row.owned_by === ctx.config.getProvider() && row.id === getEffectiveModel(ctx))?.capabilities?.reasoning?.choices ?? []
|
|
900
|
+
: CODEX_REASONING_EFFORTS;
|
|
898
901
|
const CLEAR_WORDS = ['clear', 'default', 'unset', 'reset'];
|
|
899
902
|
const config = ctx.config.get();
|
|
900
903
|
const activeEffort = () => `Active (${config.provider} · ${config.model}): ${formatReasoningEffort(resolveCodexEffort(ctx.config.get(), config.provider, config.model))}`;
|
|
@@ -55,7 +55,12 @@ export const contextCommand = {
|
|
|
55
55
|
const estimated = realTokens <= 0;
|
|
56
56
|
const usedTokens = estimated ? estimateConversationTokens(messages) : realTokens;
|
|
57
57
|
// Use the provider-reported window the bar used (Codex) so /context agrees.
|
|
58
|
-
const
|
|
58
|
+
const catalogWindow = ctx.config.getModelContextWindow?.(model);
|
|
59
|
+
const status = contextStatusFromUsed(usedTokens, model, catalogWindow !== undefined ? catalogWindow : estimated ? undefined : ctx.getContextWindow?.());
|
|
60
|
+
if (status.total === 0) {
|
|
61
|
+
ctx.addMessage({ role: 'system', content: `Context: ${formatTokens(usedTokens)} tokens${estimated ? ' (estimated)' : ''}. Context limit is unknown for this Router model.` });
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
59
64
|
const total = status.total;
|
|
60
65
|
const usedPct = status.percentage;
|
|
61
66
|
const freeTokens = Math.max(0, total - usedTokens);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { installDesktopCli } from '../../desktop/cli_shim.js';
|
|
2
|
+
export const desktopCommand = {
|
|
3
|
+
name: 'desktop',
|
|
4
|
+
description: 'Install the bundled app’s optional ztc terminal command',
|
|
5
|
+
agentRunnable: false,
|
|
6
|
+
usage: '/desktop install-cli [directory]',
|
|
7
|
+
handler: async (args, ctx) => {
|
|
8
|
+
if (ctx.commandOrigin === 'agent') {
|
|
9
|
+
ctx.addMessage({ role: 'system', content: 'CLI installation requires the user to type /desktop install-cli [directory].' });
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (args[0] !== 'install-cli' || args.length < 1 || args.length > 2) {
|
|
13
|
+
ctx.addMessage({ role: 'system', content: 'Usage: /desktop install-cli [directory]' });
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const result = await installDesktopCli(args[1]);
|
|
18
|
+
const notice = result.pathStatus === 'selected'
|
|
19
|
+
? 'Your current PATH selects this bundled command.'
|
|
20
|
+
: result.pathStatus === 'shadowed'
|
|
21
|
+
? `Your current PATH selects ${result.selectedCommand} first. Use the installed path directly or move its directory earlier in PATH.`
|
|
22
|
+
: 'Use this path directly or add its directory to PATH in your shell configuration.';
|
|
23
|
+
ctx.addMessage({ role: 'system', content: `${result.status === 'installed' ? 'Installed' : 'Already installed'}: ${result.path}\n${notice}\nYour PATH and shell configuration were not changed.` });
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
ctx.addMessage({ role: 'system', content: `CLI installation failed: ${error.message}` });
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
};
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import { CODEX_REASONING_EFFORTS } from '../../config/types.js';
|
|
2
2
|
import { resolveCodexEffort } from '../../config/defaults.js';
|
|
3
3
|
import { getSupportedCodexReasoningEfforts } from '../../utils/models.js';
|
|
4
|
-
import { formatReasoningEffort, parseReasoningSelection } from '../../utils/reasoning.js';
|
|
4
|
+
import { formatReasoningEffort, parseReasoningSelection, reasoningCommandChoices } from '../../utils/reasoning.js';
|
|
5
|
+
import { resolveRouterModel } from '../../utils/router_catalog.js';
|
|
5
6
|
async function configureReasoning(kind, args, ctx) {
|
|
6
7
|
const config = ctx.config.get();
|
|
7
8
|
const provider = ctx.config.getProvider?.() || config.provider || 'anthropic';
|
|
8
9
|
const model = ctx.config.getModel?.() || config.model;
|
|
9
|
-
const
|
|
10
|
-
|
|
10
|
+
const surface = ctx.config.getReasoningWireSurface?.(provider, model)
|
|
11
|
+
?? (config.authMode === 'zrouter' || provider === 'openai_compatible' ? 'chat_tools' : 'native_api');
|
|
12
|
+
const catalog = ctx.config.getRoutedModelCatalog?.();
|
|
13
|
+
const capabilities = catalog?.version === 1 ? resolveRouterModel(catalog, provider, model)?.capabilities : undefined;
|
|
14
|
+
const current = resolveCodexEffort(config, provider, model, capabilities ?? surface);
|
|
15
|
+
const supported = catalog?.version === 1 ? capabilities?.reasoning?.choices ?? [] : getSupportedCodexReasoningEfforts(model, provider, surface);
|
|
16
|
+
const contract = ctx.config.getReasoningContract?.(provider, model)
|
|
17
|
+
?? (catalog?.version === 1 ? capabilities?.reasoning ?? [] : surface);
|
|
18
|
+
const thinkingChoices = reasoningCommandChoices('thinking', provider, model, contract);
|
|
11
19
|
const status = () => {
|
|
12
|
-
const effective = resolveCodexEffort(ctx.config.get(), provider, model);
|
|
20
|
+
const effective = resolveCodexEffort(ctx.config.get(), provider, model, capabilities ?? surface);
|
|
13
21
|
// A startup flag is this process's value, never the saved default, so say
|
|
14
22
|
// where an effort that came from one is coming from.
|
|
15
23
|
const processEffort = ctx.config.getCodexEffortOverride?.();
|
|
@@ -20,7 +28,7 @@ async function configureReasoning(kind, args, ctx) {
|
|
|
20
28
|
ctx.addMessage({ role: 'system', content: status() +
|
|
21
29
|
(supported?.length === 0 ? '\nThis model does not support a reasoning-effort setting.' :
|
|
22
30
|
`\nSupported: ${(supported ?? CODEX_REASONING_EFFORTS).join(', ')}. /effort default inherits provider/global defaults.`) +
|
|
23
|
-
(
|
|
31
|
+
(thinkingChoices.length ? `\nThinking settings: ${thinkingChoices.join(', ')}.` : '') });
|
|
24
32
|
return;
|
|
25
33
|
}
|
|
26
34
|
if (args.length !== 1) {
|
|
@@ -29,7 +37,7 @@ async function configureReasoning(kind, args, ctx) {
|
|
|
29
37
|
}
|
|
30
38
|
let level;
|
|
31
39
|
try {
|
|
32
|
-
level = parseReasoningSelection(provider, model, current, { [kind]: args[0] });
|
|
40
|
+
level = parseReasoningSelection(provider, model, current, { [kind]: args[0] }, contract);
|
|
33
41
|
}
|
|
34
42
|
catch (error) {
|
|
35
43
|
ctx.addMessage({ role: 'system', content: error.message });
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { createEnvironment, getEnvironment, listEnvironments, openEnvironment, releaseEnvironment, checkpointEnvironment, restoreEnvironment, pauseEnvironment, resumeEnvironment, discardEnvironment, addEnvironmentNote, startEnvironmentService, environmentForWorkspace, environmentSummary, } from '../../environment/store.js';
|
|
2
|
+
import { activeProfile } from '../../config/profiles.js';
|
|
3
|
+
const usage = '/environment [list|create <name>|open <name>|status [--json]|checkpoint [label]|restore <ID>|pause|resume|leave|note <text>|service start <name> <command>|discard]';
|
|
4
|
+
const activeOperations = new Set();
|
|
5
|
+
export function environmentOperationInProgress(sessionId) { return activeOperations.has(sessionId); }
|
|
6
|
+
export const environmentCommand = {
|
|
7
|
+
name: 'environment', description: 'Manage durable local workspaces, checkpoints and services', usage, category: 'core',
|
|
8
|
+
handler: async (args, ctx) => {
|
|
9
|
+
const say = (content) => ctx.addMessage({ role: 'system', content });
|
|
10
|
+
const action = args[0] ?? 'status';
|
|
11
|
+
let operationSession;
|
|
12
|
+
try {
|
|
13
|
+
if (ctx.commandOrigin === 'agent' && !['list', 'status'].includes(action))
|
|
14
|
+
throw new Error('Environment lifecycle requires an operator command.');
|
|
15
|
+
if (!ctx.environmentAvailable?.())
|
|
16
|
+
throw new Error('Local environment management is unavailable in this runtime.');
|
|
17
|
+
if (!['list', 'status'].includes(action) && ctx.isAgentRunning?.())
|
|
18
|
+
throw new Error('Wait for the active agent turn to finish before changing its environment.');
|
|
19
|
+
const sessionId = ctx.getSessionId?.();
|
|
20
|
+
if (!sessionId)
|
|
21
|
+
throw new Error('Environment management requires a persistent ZTC session.');
|
|
22
|
+
if (!['list', 'status'].includes(action)) {
|
|
23
|
+
if (activeOperations.has(sessionId))
|
|
24
|
+
throw new Error('Wait for the current environment operation to finish.');
|
|
25
|
+
activeOperations.add(sessionId);
|
|
26
|
+
operationSession = sessionId;
|
|
27
|
+
}
|
|
28
|
+
if (action === 'list') {
|
|
29
|
+
say(JSON.stringify((await listEnvironments()).map(environmentSummary), null, 2));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const current = ctx.getEnvironment?.() ?? await environmentForWorkspace(ctx.shell.getCwd());
|
|
33
|
+
if (action === 'create' || action === 'open') {
|
|
34
|
+
if (current && current.name !== args[1])
|
|
35
|
+
throw new Error('Leave the current environment before opening another.');
|
|
36
|
+
const returnCwd = ctx.shell.getCwd();
|
|
37
|
+
const record = action === 'create' ? await createEnvironment(args[1] ?? '', sessionId) : await openEnvironment(args[1] ?? '', sessionId);
|
|
38
|
+
await ctx.shell.setCwd(record.workspacePath);
|
|
39
|
+
await ctx.environmentChanged?.(record.name, current ? undefined : returnCwd);
|
|
40
|
+
ctx.reloadAgent({ defer: true });
|
|
41
|
+
say(`Environment ${action === 'create' ? 'created' : 'opened'}: ${record.name}\nWorkspace: ${record.workspacePath}\nCredentials: profile ${record.credentialProfile}. Services are never restarted automatically.`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!current)
|
|
45
|
+
throw new Error('No environment open. Use /environment create <name> or open <name>.');
|
|
46
|
+
const record = await getEnvironment(current.name);
|
|
47
|
+
if (record.id !== current.id)
|
|
48
|
+
throw new Error('The environment was replaced; inspect it before recovery.');
|
|
49
|
+
if (action === 'status') {
|
|
50
|
+
say(JSON.stringify(environmentSummary(record), null, 2));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (record.credentialProfile !== activeProfile())
|
|
54
|
+
throw new Error(`Select profile ${record.credentialProfile} before changing this environment.`);
|
|
55
|
+
let message;
|
|
56
|
+
if (action === 'checkpoint') {
|
|
57
|
+
const point = await checkpointEnvironment(record.name, sessionId, args.slice(1).join(' ') || 'Checkpoint');
|
|
58
|
+
message = `Checkpoint created: ${point.id} · ${point.files.filter(f => f.kind !== 'directory').length} retained files`;
|
|
59
|
+
}
|
|
60
|
+
else if (action === 'restore') {
|
|
61
|
+
const restored = await restoreEnvironment(record.name, sessionId, args[1] ?? '');
|
|
62
|
+
// A rename leaves process.cwd() in the recovery backup until explicitly rebound.
|
|
63
|
+
await ctx.shell.setCwd(restored.workspacePath);
|
|
64
|
+
message = `Environment restored: ${restored.recovery?.checkpointId}\n${restored.recovery?.retainedFiles} files retained. Services needing explicit restart: ${restored.recovery?.servicesNeedingRestart.join(', ') || 'none'}\nExternal symlinks requiring separate recovery: ${restored.recovery?.externalLinks.join(', ') || 'none'}`;
|
|
65
|
+
}
|
|
66
|
+
else if (action === 'pause') {
|
|
67
|
+
await pauseEnvironment(record.name, sessionId);
|
|
68
|
+
message = 'Environment paused. Workspace and dependencies retained. Agent turns require /environment resume.';
|
|
69
|
+
}
|
|
70
|
+
else if (action === 'resume') {
|
|
71
|
+
await resumeEnvironment(record.name, sessionId);
|
|
72
|
+
message = 'Environment resumed. Services require explicit start.';
|
|
73
|
+
}
|
|
74
|
+
else if (action === 'note') {
|
|
75
|
+
await addEnvironmentNote(record.name, sessionId, args.slice(1).join(' '));
|
|
76
|
+
message = 'Setup note saved. Future agent turns receive this note.';
|
|
77
|
+
}
|
|
78
|
+
else if (action === 'service' && args[1] === 'start') {
|
|
79
|
+
const config = ctx.config.get();
|
|
80
|
+
const permissionId = config.permissionProfile || 'trusted';
|
|
81
|
+
const receipt = await startEnvironmentService(record.name, sessionId, args[2] ?? '', args.slice(3).join(' '), {
|
|
82
|
+
profileId: permissionId, profile: ctx.config.getEffectivePermissionProfile?.(permissionId), sandbox: config.sandbox,
|
|
83
|
+
}, ctx.shell.getCwd());
|
|
84
|
+
message = `Service launching: ${receipt.name}\nDirectory: ${receipt.cwd}\nLog: ${receipt.logPath}\nUse /environment status to check its receipt; launch does not guarantee readiness.`;
|
|
85
|
+
}
|
|
86
|
+
else if (action === 'leave' || action === 'discard') {
|
|
87
|
+
const archive = action === 'discard' ? await discardEnvironment(record.name, sessionId) : undefined;
|
|
88
|
+
if (!archive)
|
|
89
|
+
await releaseEnvironment(record.name, sessionId);
|
|
90
|
+
await ctx.environmentChanged?.(null);
|
|
91
|
+
ctx.reloadAgent({ defer: true });
|
|
92
|
+
say(archive ? `Environment discarded to recovery archive: ${archive}` : 'Environment left. Files and running services retained.');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
else
|
|
96
|
+
throw new Error(usage);
|
|
97
|
+
await ctx.environmentChanged?.(record.name);
|
|
98
|
+
ctx.reloadAgent({ defer: true });
|
|
99
|
+
say(message);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
say(`Environment: ${error instanceof Error ? error.message : String(error)}`);
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
if (operationSession)
|
|
106
|
+
activeOperations.delete(operationSession);
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { formatEvidenceContext } from '../runtime/evidence.js';
|
|
2
|
+
export const evidenceCommand = {
|
|
3
|
+
name: 'evidence', description: 'Inspect retained observations and interpretation sources', usage: '/evidence',
|
|
4
|
+
handler: (_args, ctx) => {
|
|
5
|
+
const snapshot = ctx.getEvidenceSnapshot?.();
|
|
6
|
+
ctx.addMessage({ role: 'system', content: !snapshot ? 'Retained evidence unavailable in this host.'
|
|
7
|
+
: snapshot.records.length ? formatEvidenceContext(snapshot) : 'No retained evidence in this session.' });
|
|
8
|
+
},
|
|
9
|
+
};
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* would have decided. A task argument becomes the child's first message.
|
|
8
8
|
*/
|
|
9
9
|
async function createSidePane(args, ctx, commandName) {
|
|
10
|
-
const task = args.join(' ')
|
|
10
|
+
const task = args.join(' ');
|
|
11
|
+
const hasTask = task.trim().length > 0;
|
|
11
12
|
const createZtcPane = ctx.zmux?.createZtcPane;
|
|
12
13
|
if (!createZtcPane) {
|
|
13
14
|
ctx.addMessage({
|
|
@@ -16,13 +17,13 @@ async function createSidePane(args, ctx, commandName) {
|
|
|
16
17
|
});
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
19
|
-
const result = await createZtcPane(
|
|
20
|
+
const result = await createZtcPane(hasTask ? { task } : {});
|
|
20
21
|
if (result.error) {
|
|
21
22
|
ctx.addMessage({ role: 'system', content: `/${commandName} could not open a pane: ${result.error}` });
|
|
22
23
|
return;
|
|
23
24
|
}
|
|
24
25
|
const where = result.cwd ? ` in ${result.cwd}` : '';
|
|
25
|
-
const handoff =
|
|
26
|
+
const handoff = hasTask ? ' with its startup task' : '';
|
|
26
27
|
ctx.addMessage({
|
|
27
28
|
role: 'system',
|
|
28
29
|
content: `Opened ZTC pane ${result.paneId}${where}${handoff}.`,
|
|
@@ -53,6 +53,9 @@
|
|
|
53
53
|
* stop decision live here in one pure, unit-tested place: decideContinuation().
|
|
54
54
|
*/
|
|
55
55
|
import { Command } from './types.js';
|
|
56
|
+
import type { Message, AgentEvent } from '../../types.js';
|
|
57
|
+
import type { EvidenceSnapshot } from '../runtime/evidence.js';
|
|
58
|
+
import { type GoalPlateauCriteria, type GoalPlateauState, type GoalExitReason } from './goal_exit.js';
|
|
56
59
|
export type GoalStatus = 'active' | 'paused' | 'complete' | 'budget_limited' | 'blocked';
|
|
57
60
|
export interface GoalRecord {
|
|
58
61
|
/** Unique identity for this goal instance, regenerated on every `set`. A fresh
|
|
@@ -87,6 +90,18 @@ export interface GoalRecord {
|
|
|
87
90
|
blockedSource?: GoalBlockedSource;
|
|
88
91
|
createdAt: number;
|
|
89
92
|
updatedAt: number;
|
|
93
|
+
plateau?: GoalPlateauState;
|
|
94
|
+
exitReason?: GoalExitReason;
|
|
95
|
+
/** Exact authored request provenance; its original text remains in canonical user evidence. */
|
|
96
|
+
sustained?: {
|
|
97
|
+
sourceMessageId: string;
|
|
98
|
+
sourceTextSha256: string;
|
|
99
|
+
hostExitOnly: boolean;
|
|
100
|
+
};
|
|
101
|
+
blockedAudit?: {
|
|
102
|
+
condition: string;
|
|
103
|
+
streak: number;
|
|
104
|
+
};
|
|
90
105
|
}
|
|
91
106
|
/** Why a goal reached `blocked`. Drives the wording, never the behaviour. */
|
|
92
107
|
export type GoalBlockedSource = 'agent' | 'execution';
|
|
@@ -102,6 +117,10 @@ export interface GoalTurnAccounting {
|
|
|
102
117
|
}
|
|
103
118
|
/** Facts about the turn that just finished, fed to the continuation decision. */
|
|
104
119
|
export interface GoalTurnFacts extends GoalTurnAccounting {
|
|
120
|
+
/** Agent-reported missing prerequisite; this is not a host verification claim. */
|
|
121
|
+
blockedReason?: string;
|
|
122
|
+
/** Canonical host evidence, never reported scores or parsed model prose. */
|
|
123
|
+
evidence?: EvidenceSnapshot;
|
|
105
124
|
/** Number of tool calls the just-finished turn made. */
|
|
106
125
|
toolCallCount: number;
|
|
107
126
|
/**
|
|
@@ -394,6 +413,7 @@ export declare function parseGoalArgs(args: string[]): {
|
|
|
394
413
|
objective: string;
|
|
395
414
|
tokenBudget?: number;
|
|
396
415
|
maxTurns?: number;
|
|
416
|
+
plateau?: GoalPlateauCriteria;
|
|
397
417
|
} | {
|
|
398
418
|
error: string;
|
|
399
419
|
};
|
|
@@ -440,15 +460,27 @@ export declare class GoalManager {
|
|
|
440
460
|
* gets a fresh final turn.
|
|
441
461
|
*/
|
|
442
462
|
private finalTurnAccounted;
|
|
463
|
+
private sustainedFirstTurnPending;
|
|
443
464
|
constructor(clock?: GoalClock);
|
|
444
465
|
/** A defensive copy so callers cannot mutate internal state. */
|
|
445
466
|
get(): GoalRecord | null;
|
|
467
|
+
/** Admit an explicit authored sustained-work request into the existing loop, without deriving extra scope or budget. */
|
|
468
|
+
adoptUserIntent(message: Message, opts?: {
|
|
469
|
+
configuredMaxTurns?: number | null;
|
|
470
|
+
}): GoalRecord | null;
|
|
471
|
+
/** The authored opening turn spends the same budget as later automatic turns. */
|
|
472
|
+
accountSustainedFirstTurn(facts: GoalTurnFacts): GoalContinuationDecision | null;
|
|
473
|
+
/** Host wait events retain an owned job reference; tool text never establishes waiting. */
|
|
474
|
+
observeHostWait(event: Extract<AgentEvent, {
|
|
475
|
+
type: 'command_wait' | 'command_wait_end';
|
|
476
|
+
}>): GoalRecord | null;
|
|
446
477
|
/** Start a brand-new goal (replaces any existing one) and arm the first turn. */
|
|
447
478
|
set(objective: string, opts?: {
|
|
448
479
|
tokenBudget?: number;
|
|
449
480
|
maxTurns?: number;
|
|
481
|
+
plateau?: GoalPlateauCriteria;
|
|
450
482
|
}): GoalRecord;
|
|
451
|
-
pause(): GoalRecord | null;
|
|
483
|
+
pause(kind?: 'user_pause' | 'user_cancelled'): GoalRecord | null;
|
|
452
484
|
/**
|
|
453
485
|
* Re-activate a paused / budget-limited goal and arm a continuation turn.
|
|
454
486
|
* Resuming also clears whatever stop condition fired so the goal makes
|