@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
package/dist/simulation/llm.d.ts
CHANGED
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
* configured with, so it works with any provider (OpenAI, Anthropic,
|
|
5
5
|
* Gemini, proxy, etc.).
|
|
6
6
|
*/
|
|
7
|
+
import type { BufferedRecoveryPolicy, BufferedRecoveryRequest } from '../agent/backends/types.js';
|
|
7
8
|
import { simSwarmExtractFirstJson as extractFirstJson } from '@ztc/sim-swarm';
|
|
8
9
|
import type { ZodType } from 'zod';
|
|
10
|
+
import { type ResolvedSimulationInference } from './inference.js';
|
|
9
11
|
import { type SimulationLlmCallContext } from './telemetry.js';
|
|
10
12
|
export declare function setActiveSimulationSignalGetter(getter: (() => AbortSignal | undefined) | null): void;
|
|
11
13
|
/** Marker class so callers can distinguish abort-induced failures from real errors. */
|
|
@@ -101,4 +103,4 @@ export declare function llmCompleteStructured<T>(system: string, userMessage: st
|
|
|
101
103
|
* Rejects with a timeout error after `timeoutMs` milliseconds so the caller
|
|
102
104
|
* is never blocked permanently by a stalled provider.
|
|
103
105
|
*/
|
|
104
|
-
export declare function llmComplete(system: string, userMessage: string, maxTokens?: number, timeoutMs?: number, callContext?: SimulationLlmCallContext, signal?: AbortSignal): Promise<string>;
|
|
106
|
+
export declare function llmComplete(system: string, userMessage: string, maxTokens?: number, timeoutMs?: number, callContext?: SimulationLlmCallContext, signal?: AbortSignal, inferenceOverride?: Pick<ResolvedSimulationInference, 'provider' | 'model' | 'codexEffort' | 'codexFastMode'>, responseValidator?: (responseText: string) => void, outputSchema?: Record<string, unknown>, outputSchemaStrict?: boolean, bufferedRecovery?: BufferedRecoveryPolicy & Pick<BufferedRecoveryRequest, 'onAttempt'>): Promise<string>;
|
package/dist/simulation/llm.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { configStore } from '../config.js';
|
|
8
8
|
import { createBackendForProvider } from '../agent/backends/index.js';
|
|
9
|
+
import { CodexBufferedDeadlineError } from '../agent/backends/codex_buffered_recovery.js';
|
|
9
10
|
import { jsonrepair } from 'jsonrepair';
|
|
10
11
|
import { simSwarmExtractFirstJson as extractFirstJson } from '@ztc/sim-swarm';
|
|
11
12
|
import { resolveSimulationInference, } from './inference.js';
|
|
@@ -101,6 +102,7 @@ export function circuitOnFailure(now) {
|
|
|
101
102
|
let cachedBackend = null;
|
|
102
103
|
let cachedBackendKey = null;
|
|
103
104
|
const DEFAULT_SIM_MAX_TOKENS = 2048;
|
|
105
|
+
const SIM_CODEX_MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
|
|
104
106
|
/**
|
|
105
107
|
* Get (or create) a backend instance matching the current config.
|
|
106
108
|
* Cached until provider or API key changes.
|
|
@@ -110,12 +112,19 @@ function getBackend(resolved) {
|
|
|
110
112
|
const apiKey = resolved.apiKey ?? configStore.getApiKey(provider);
|
|
111
113
|
if (!apiKey)
|
|
112
114
|
throw new Error('No API key configured for LLM fill');
|
|
113
|
-
const cacheKey =
|
|
115
|
+
const cacheKey = [
|
|
116
|
+
provider,
|
|
117
|
+
apiKey,
|
|
118
|
+
resolved.baseUrl ?? '',
|
|
119
|
+
resolved.model,
|
|
120
|
+
resolved.codexAuthFilePath ?? '',
|
|
121
|
+
].join(':');
|
|
114
122
|
if (cachedBackend && cachedBackendKey === cacheKey)
|
|
115
123
|
return cachedBackend;
|
|
116
124
|
cachedBackend = createBackendForProvider(provider, {
|
|
117
125
|
apiKey,
|
|
118
126
|
baseUrl: resolved.baseUrl ?? (configStore.getOpenAICompatibleBaseUrl() || undefined),
|
|
127
|
+
codexAuthFilePath: resolved.codexAuthFilePath,
|
|
119
128
|
});
|
|
120
129
|
cachedBackendKey = cacheKey;
|
|
121
130
|
return cachedBackend;
|
|
@@ -263,8 +272,13 @@ export const LLM_TIMEOUT_MS = 90_000;
|
|
|
263
272
|
*/
|
|
264
273
|
export async function llmCompleteStructured(system, userMessage, schema, context, maxTokens = DEFAULT_SIM_MAX_TOKENS, timeoutMs = LLM_TIMEOUT_MS, callContext, signal) {
|
|
265
274
|
const jsonHint = '\n\nReturn ONLY a single valid JSON value. No markdown fences, no prose.';
|
|
266
|
-
|
|
267
|
-
|
|
275
|
+
let parsed;
|
|
276
|
+
await llmComplete(system, userMessage + jsonHint, maxTokens, timeoutMs, callContext, signal, undefined, (raw) => {
|
|
277
|
+
parsed = { value: safeParseJsonWithSchema(raw, schema, context) };
|
|
278
|
+
});
|
|
279
|
+
if (parsed === undefined)
|
|
280
|
+
throw new Error(`${context} returned no validated value`);
|
|
281
|
+
return parsed.value;
|
|
268
282
|
}
|
|
269
283
|
/**
|
|
270
284
|
* One-shot LLM completion. Returns the text response.
|
|
@@ -273,22 +287,17 @@ export async function llmCompleteStructured(system, userMessage, schema, context
|
|
|
273
287
|
* Rejects with a timeout error after `timeoutMs` milliseconds so the caller
|
|
274
288
|
* is never blocked permanently by a stalled provider.
|
|
275
289
|
*/
|
|
276
|
-
export async function llmComplete(system, userMessage, maxTokens = DEFAULT_SIM_MAX_TOKENS, timeoutMs = LLM_TIMEOUT_MS, callContext, signal) {
|
|
290
|
+
export async function llmComplete(system, userMessage, maxTokens = DEFAULT_SIM_MAX_TOKENS, timeoutMs = LLM_TIMEOUT_MS, callContext, signal, inferenceOverride, responseValidator, outputSchema, outputSchemaStrict, bufferedRecovery) {
|
|
277
291
|
const startedAt = new Date();
|
|
278
|
-
const inference = resolveSimulationInference();
|
|
292
|
+
const inference = resolveSimulationInference(inferenceOverride);
|
|
279
293
|
const backend = getBackend(inference);
|
|
280
|
-
const { codexEffort, model, provider } = inference;
|
|
294
|
+
const { codexEffort, codexFastMode, model, provider } = inference;
|
|
295
|
+
if (bufferedRecovery && provider !== 'codex_legacy')
|
|
296
|
+
throw new Error('Buffered Codex recovery requires the Codex subscription provider');
|
|
281
297
|
const context = callContext ?? { stage: 'world.evolve', component: 'simulation.llm.default' };
|
|
282
298
|
// When called inside a running sim, default the abort signal to the run's
|
|
283
299
|
// controller so stop() / cancelGame() cancels in-flight provider HTTP calls.
|
|
284
300
|
const effectiveSignal = signal ?? getActiveSimAbortSignal();
|
|
285
|
-
// Fail fast if the sim was already stopped before the call started.
|
|
286
|
-
if (effectiveSignal?.aborted) {
|
|
287
|
-
throw new SimulationAbortedError();
|
|
288
|
-
}
|
|
289
|
-
// Circuit breaker: fail fast (degraded) when consecutive provider failures
|
|
290
|
-
// have tripped the breaker, instead of hammering a failing provider.
|
|
291
|
-
circuitPreflight(Date.now());
|
|
292
301
|
let timerId;
|
|
293
302
|
let abortListener;
|
|
294
303
|
const requestController = new AbortController();
|
|
@@ -296,7 +305,18 @@ export async function llmComplete(system, userMessage, maxTokens = DEFAULT_SIM_M
|
|
|
296
305
|
let stopReason;
|
|
297
306
|
let usage;
|
|
298
307
|
let caughtError;
|
|
308
|
+
let outcome = 'success';
|
|
309
|
+
let timedOut = false;
|
|
310
|
+
let invalidOutput = false;
|
|
311
|
+
let providerSucceeded = false;
|
|
299
312
|
try {
|
|
313
|
+
// Fail fast if the simulation stopped before the call started.
|
|
314
|
+
if (effectiveSignal?.aborted) {
|
|
315
|
+
throw new SimulationAbortedError();
|
|
316
|
+
}
|
|
317
|
+
// Circuit breaker: fail fast when earlier provider failures opened it.
|
|
318
|
+
circuitPreflight(Date.now());
|
|
319
|
+
const deadlineAtMs = Date.now() + timeoutMs;
|
|
300
320
|
const response = await Promise.race([
|
|
301
321
|
backend.generate({
|
|
302
322
|
model,
|
|
@@ -305,14 +325,20 @@ export async function llmComplete(system, userMessage, maxTokens = DEFAULT_SIM_M
|
|
|
305
325
|
messages: [{ role: 'user', content: userMessage }],
|
|
306
326
|
tools: [],
|
|
307
327
|
codexEffort,
|
|
328
|
+
codexFastMode,
|
|
329
|
+
maxResponseBytes: SIM_CODEX_MAX_RESPONSE_BYTES,
|
|
330
|
+
outputTokenGuidance: true,
|
|
308
331
|
signal: requestController.signal,
|
|
332
|
+
...(bufferedRecovery === undefined ? {} : { bufferedRecovery: { ...bufferedRecovery, deadlineAtMs } }),
|
|
333
|
+
...(outputSchema === undefined ? {} : { outputSchema, outputSchemaStrict }),
|
|
309
334
|
}).finally(() => clearTimeout(timerId)),
|
|
310
335
|
new Promise((_, reject) => {
|
|
311
336
|
timerId = setTimeout(() => {
|
|
337
|
+
timedOut = true;
|
|
312
338
|
const timeoutError = new Error(`LLM request timed out after ${timeoutMs}ms`);
|
|
313
339
|
requestController.abort(timeoutError);
|
|
314
340
|
reject(timeoutError);
|
|
315
|
-
}, timeoutMs);
|
|
341
|
+
}, bufferedRecovery === undefined ? timeoutMs : Math.max(0, deadlineAtMs - Date.now()));
|
|
316
342
|
// Reject the race immediately on abort so the timeout setTimeout doesn't
|
|
317
343
|
// keep the event loop alive after the caller has bailed.
|
|
318
344
|
if (effectiveSignal) {
|
|
@@ -332,12 +358,30 @@ export async function llmComplete(system, userMessage, maxTokens = DEFAULT_SIM_M
|
|
|
332
358
|
usage = response.usage;
|
|
333
359
|
const textBlocks = response.content.filter(b => b.type === 'text');
|
|
334
360
|
if (textBlocks.length === 0) {
|
|
361
|
+
invalidOutput = true;
|
|
335
362
|
throw new Error(`LLM returned no text content (stopReason: ${response.stopReason})`);
|
|
336
363
|
}
|
|
337
364
|
responseText = textBlocks.map(b => b.text).join('\n');
|
|
365
|
+
// The provider answered. Output that fails validation is a model fault,
|
|
366
|
+
// not a provider fault, so it must not count toward the breaker.
|
|
338
367
|
circuitOnSuccess();
|
|
368
|
+
providerSucceeded = true;
|
|
369
|
+
if (responseValidator) {
|
|
370
|
+
try {
|
|
371
|
+
responseValidator(responseText);
|
|
372
|
+
}
|
|
373
|
+
catch (error) {
|
|
374
|
+
invalidOutput = true;
|
|
375
|
+
throw error;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
339
378
|
}
|
|
340
379
|
catch (err) {
|
|
380
|
+
if (err instanceof CodexBufferedDeadlineError) {
|
|
381
|
+
timedOut = true;
|
|
382
|
+
err = new Error(`LLM request timed out after ${timeoutMs}ms`);
|
|
383
|
+
requestController.abort(err);
|
|
384
|
+
}
|
|
341
385
|
// Wrap raw AbortError from the provider SDK into our marker class so
|
|
342
386
|
// callers can treat it as "stopped" instead of "failed".
|
|
343
387
|
if (effectiveSignal?.aborted && !(err instanceof SimulationAbortedError)) {
|
|
@@ -348,29 +392,45 @@ export async function llmComplete(system, userMessage, maxTokens = DEFAULT_SIM_M
|
|
|
348
392
|
}
|
|
349
393
|
// Abort is an intentional cancellation, not a provider fault — never trip
|
|
350
394
|
// the breaker on it. Real provider/transport failures count toward it.
|
|
351
|
-
if (!
|
|
395
|
+
if (!providerSucceeded
|
|
396
|
+
&& !(caughtError instanceof SimulationAbortedError)
|
|
397
|
+
&& !(caughtError instanceof SimulationDegradedError)) {
|
|
352
398
|
circuitOnFailure(Date.now());
|
|
353
399
|
}
|
|
400
|
+
outcome = caughtError instanceof SimulationAbortedError
|
|
401
|
+
? 'aborted'
|
|
402
|
+
: caughtError instanceof SimulationDegradedError
|
|
403
|
+
? 'circuit-open'
|
|
404
|
+
: timedOut
|
|
405
|
+
? 'timeout'
|
|
406
|
+
: invalidOutput
|
|
407
|
+
? 'invalid-output'
|
|
408
|
+
: 'provider-error';
|
|
354
409
|
}
|
|
355
410
|
finally {
|
|
356
411
|
if (effectiveSignal && abortListener) {
|
|
357
412
|
effectiveSignal.removeEventListener('abort', abortListener);
|
|
358
413
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
414
|
+
try {
|
|
415
|
+
recordSimulationLlmCall({
|
|
416
|
+
context,
|
|
417
|
+
provider,
|
|
418
|
+
model,
|
|
419
|
+
reasoningEffort: codexEffort,
|
|
420
|
+
maxTokensRequested: maxTokens,
|
|
421
|
+
systemBytes: Buffer.byteLength(system, 'utf8'),
|
|
422
|
+
userBytes: Buffer.byteLength(userMessage, 'utf8'),
|
|
423
|
+
responseBytes: Buffer.byteLength(responseText, 'utf8'),
|
|
424
|
+
outcome,
|
|
425
|
+
stopReason,
|
|
426
|
+
usage,
|
|
427
|
+
startedAt,
|
|
428
|
+
endedAt: new Date(),
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
catch {
|
|
432
|
+
// Telemetry is observational. It cannot replace a gameplay result.
|
|
433
|
+
}
|
|
374
434
|
}
|
|
375
435
|
if (caughtError)
|
|
376
436
|
throw caughtError;
|
|
@@ -50,4 +50,4 @@ export declare class ZeroEmbeddingProvider implements EmbeddingProvider {
|
|
|
50
50
|
* For Anthropic/Gemini/other providers, fall back to OPENAI_API_KEY env var.
|
|
51
51
|
* No TF-IDF fallback — real embeddings are required.
|
|
52
52
|
*/
|
|
53
|
-
export declare function createEmbeddingProvider(cache: Map<string, number[]
|
|
53
|
+
export declare function createEmbeddingProvider(cache: Map<string, number[]>, sessionProvider?: string): EmbeddingProvider;
|
|
@@ -145,13 +145,19 @@ export class ZeroEmbeddingProvider {
|
|
|
145
145
|
* For Anthropic/Gemini/other providers, fall back to OPENAI_API_KEY env var.
|
|
146
146
|
* No TF-IDF fallback — real embeddings are required.
|
|
147
147
|
*/
|
|
148
|
-
export function createEmbeddingProvider(cache) {
|
|
149
|
-
|
|
148
|
+
export function createEmbeddingProvider(cache, sessionProvider) {
|
|
149
|
+
// Session construction and checkpoint restore happen before ambient state is attached.
|
|
150
|
+
if (sessionProvider === 'zergrouter') {
|
|
151
|
+
return new CachedEmbeddingProvider(new ZeroEmbeddingProvider(), cache);
|
|
152
|
+
}
|
|
153
|
+
const inference = resolveSimulationInference();
|
|
154
|
+
// A ZergRouter simulation runs only its one DeepSeek chat model. It has no
|
|
155
|
+
// embedding model, so retrieval stays lexical and no other provider is called.
|
|
156
|
+
if (process.env.ZTC_SIM_DISABLE_EMBEDDINGS === '1' || inference.provider === 'zergrouter') {
|
|
150
157
|
return new CachedEmbeddingProvider(new ZeroEmbeddingProvider(), cache);
|
|
151
158
|
}
|
|
152
159
|
const provider = configStore.getProvider();
|
|
153
160
|
const cfg = configStore.get();
|
|
154
|
-
const inference = resolveSimulationInference();
|
|
155
161
|
let apiKey;
|
|
156
162
|
let baseUrl;
|
|
157
163
|
let model = inference.embeddingModel ?? EMBEDDING_MODEL;
|
|
@@ -61,6 +61,7 @@ export declare class FileSystemMemory implements CuratableMemoryStore {
|
|
|
61
61
|
private recordCuratorStrictnessProbe;
|
|
62
62
|
logRetrieval(context: MemoryRetrievalLogContext, results: RetrievalResult[]): void;
|
|
63
63
|
verifyInvariants(): InvariantViolation[];
|
|
64
|
+
hasSourceFile(relativePath: string): boolean;
|
|
64
65
|
getIdToNodeMap(): ReadonlyMap<string, ConceptNode>;
|
|
65
66
|
getStreams(): {
|
|
66
67
|
seqEvent: readonly ConceptNode[];
|
|
@@ -73,6 +74,7 @@ export declare class FileSystemMemory implements CuratableMemoryStore {
|
|
|
73
74
|
static fromSnapshot(snapshot: FileSystemMemorySnapshot, clock: SimClock, opts: {
|
|
74
75
|
outputDir: string;
|
|
75
76
|
invariantMode?: InvariantMode;
|
|
77
|
+
detached?: boolean;
|
|
76
78
|
}): FileSystemMemory;
|
|
77
79
|
private addConceptNode;
|
|
78
80
|
private autoSupersedeStaleUpdates;
|
|
@@ -70,7 +70,7 @@ export class FileSystemMemory {
|
|
|
70
70
|
this.outputDir = resolve(opts.outputDir);
|
|
71
71
|
assertFileSystemMemoryOutputDirAllowed(this.outputDir);
|
|
72
72
|
this.root = resolve(this.outputDir, 'memory', this.agentId);
|
|
73
|
-
this.files = new FileSystemMemoryFileTree(this.outputDir, this.root, this.agentId);
|
|
73
|
+
this.files = new FileSystemMemoryFileTree(this.outputDir, this.root, this.agentId, opts.detached);
|
|
74
74
|
this.curator = new FileSystemMemoryCuratorPatchExecutor({
|
|
75
75
|
agentId: this.agentId,
|
|
76
76
|
now: () => this.auditTimestamp(),
|
|
@@ -338,6 +338,9 @@ export class FileSystemMemory {
|
|
|
338
338
|
verifyInvariants() {
|
|
339
339
|
return reportFileSystemMemoryInvariants(this);
|
|
340
340
|
}
|
|
341
|
+
hasSourceFile(relativePath) {
|
|
342
|
+
return this.files.hasRelativeFile(relativePath);
|
|
343
|
+
}
|
|
341
344
|
getIdToNodeMap() {
|
|
342
345
|
return new Map([...this.idToNode.entries()].map(([id, node]) => [id, cloneConceptNode(node)]));
|
|
343
346
|
}
|
|
@@ -373,6 +376,7 @@ export class FileSystemMemory {
|
|
|
373
376
|
static fromSnapshot(snapshot, clock, opts) {
|
|
374
377
|
const memory = new FileSystemMemory(snapshot.agentId, clock, {
|
|
375
378
|
outputDir: opts.outputDir,
|
|
379
|
+
detached: opts.detached,
|
|
376
380
|
invariantMode: opts.invariantMode,
|
|
377
381
|
});
|
|
378
382
|
memory.seqEvent = snapshot.seqEvent.map(node => ({ ...node }));
|
|
@@ -6,13 +6,16 @@ export declare class FileSystemMemoryFileTree {
|
|
|
6
6
|
readonly outputDir: string;
|
|
7
7
|
readonly root: string;
|
|
8
8
|
private readonly agentId;
|
|
9
|
-
|
|
9
|
+
private readonly detached;
|
|
10
|
+
private readonly detachedFiles;
|
|
11
|
+
constructor(outputDir: string, root: string, agentId: string, detached?: boolean);
|
|
10
12
|
initializeLayout(personaSeed: string | undefined, episodeDate: string): void;
|
|
11
13
|
appendNodeBlock(node: ConceptNode, episodeDate: string): ConceptNode['memorySource'];
|
|
12
14
|
writeCurrentFacts(nodes: ConceptNode[]): void;
|
|
13
15
|
clear(): void;
|
|
14
16
|
writeRelative(relativePath: string, content: string): void;
|
|
15
17
|
readRelative(relativePath: string): string;
|
|
18
|
+
hasRelativeFile(relativePath: string): boolean;
|
|
16
19
|
writeIfAbsent(relativePath: string, content: string): void;
|
|
17
20
|
appendText(relativePath: string, content: string): void;
|
|
18
21
|
makeDirectory(relativePath: string): void;
|
|
@@ -43,10 +43,14 @@ export class FileSystemMemoryFileTree {
|
|
|
43
43
|
outputDir;
|
|
44
44
|
root;
|
|
45
45
|
agentId;
|
|
46
|
-
|
|
46
|
+
detached;
|
|
47
|
+
// Detached candidates rebuild the same file contents without publishing them.
|
|
48
|
+
detachedFiles = new Map();
|
|
49
|
+
constructor(outputDir, root, agentId, detached = false) {
|
|
47
50
|
this.outputDir = outputDir;
|
|
48
51
|
this.root = root;
|
|
49
52
|
this.agentId = agentId;
|
|
53
|
+
this.detached = detached;
|
|
50
54
|
const outputRoot = resolve(outputDir);
|
|
51
55
|
const memoryRoot = resolve(outputRoot, 'memory');
|
|
52
56
|
this.ensureInside(memoryRoot, root);
|
|
@@ -54,7 +58,8 @@ export class FileSystemMemoryFileTree {
|
|
|
54
58
|
this.ensureInside(realPathForPolicy(memoryRoot), realPathForPolicy(root));
|
|
55
59
|
}
|
|
56
60
|
initializeLayout(personaSeed, episodeDate) {
|
|
57
|
-
|
|
61
|
+
if (!this.detached)
|
|
62
|
+
mkdirSync(this.root, { recursive: true });
|
|
58
63
|
for (const dir of [
|
|
59
64
|
'episodes',
|
|
60
65
|
'facts',
|
|
@@ -65,7 +70,8 @@ export class FileSystemMemoryFileTree {
|
|
|
65
70
|
'records',
|
|
66
71
|
'events',
|
|
67
72
|
]) {
|
|
68
|
-
|
|
73
|
+
if (!this.detached)
|
|
74
|
+
mkdirSync(this.absolute(dir), { recursive: true });
|
|
69
75
|
}
|
|
70
76
|
this.writeIfAbsent('profile.md', `# Profile\n\n${personaSeed ? personaSeed.trim() : ''}\n`);
|
|
71
77
|
this.writeIfAbsent('anchors.md', '# Durable Anchors\n\n');
|
|
@@ -86,13 +92,13 @@ export class FileSystemMemoryFileTree {
|
|
|
86
92
|
if (category === 'episodes') {
|
|
87
93
|
this.writeIfAbsent(relativePath, `# Episode ${episodeDate}\n\n`);
|
|
88
94
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const text =
|
|
95
|
+
if (!this.detached)
|
|
96
|
+
this.ensureWritablePath(this.absolute(relativePath));
|
|
97
|
+
const text = this.readRelative(relativePath);
|
|
92
98
|
const lineStart = lineCount(text) + 1;
|
|
93
99
|
const block = renderMarkdownBlock(node);
|
|
94
100
|
const lineEnd = lineStart + lineCount(block) - 1;
|
|
95
|
-
|
|
101
|
+
this.appendText(relativePath, block);
|
|
96
102
|
return {
|
|
97
103
|
backend: 'filesystem',
|
|
98
104
|
relativePath,
|
|
@@ -125,40 +131,65 @@ export class FileSystemMemoryFileTree {
|
|
|
125
131
|
this.writeRelative('facts/current.md', content);
|
|
126
132
|
}
|
|
127
133
|
clear() {
|
|
134
|
+
if (this.detached) {
|
|
135
|
+
this.detachedFiles.clear();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
128
138
|
rmSync(this.root, { recursive: true, force: true });
|
|
129
139
|
mkdirSync(this.root, { recursive: true });
|
|
130
140
|
}
|
|
131
141
|
writeRelative(relativePath, content) {
|
|
132
142
|
const abs = this.absolute(relativePath);
|
|
143
|
+
if (this.detached) {
|
|
144
|
+
this.detachedFiles.set(abs, content);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
133
147
|
this.ensureWritablePath(abs);
|
|
134
148
|
writeFileNoFollow(abs, content, false);
|
|
135
149
|
}
|
|
136
150
|
readRelative(relativePath) {
|
|
137
151
|
const abs = this.absolute(relativePath);
|
|
152
|
+
if (this.detached)
|
|
153
|
+
return this.detachedFiles.get(abs) ?? '';
|
|
138
154
|
return existsSync(abs) ? readFileSync(abs, 'utf8') : '';
|
|
139
155
|
}
|
|
156
|
+
hasRelativeFile(relativePath) {
|
|
157
|
+
const abs = this.absolute(relativePath);
|
|
158
|
+
return this.detached ? this.detachedFiles.has(abs) : existsSync(abs);
|
|
159
|
+
}
|
|
140
160
|
writeIfAbsent(relativePath, content) {
|
|
141
161
|
const abs = this.absolute(relativePath);
|
|
162
|
+
if (this.detached) {
|
|
163
|
+
if (!this.detachedFiles.has(abs))
|
|
164
|
+
this.detachedFiles.set(abs, content);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
142
167
|
this.ensureWritablePath(abs);
|
|
143
168
|
if (!existsSync(abs))
|
|
144
169
|
writeFileNoFollow(abs, content, false);
|
|
145
170
|
}
|
|
146
171
|
appendText(relativePath, content) {
|
|
147
172
|
const abs = this.absolute(relativePath);
|
|
173
|
+
if (this.detached) {
|
|
174
|
+
this.detachedFiles.set(abs, (this.detachedFiles.get(abs) ?? '') + content);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
148
177
|
this.ensureWritablePath(abs);
|
|
149
178
|
writeFileNoFollow(abs, content, true);
|
|
150
179
|
}
|
|
151
180
|
makeDirectory(relativePath) {
|
|
152
181
|
const abs = this.absolute(relativePath);
|
|
182
|
+
if (this.detached)
|
|
183
|
+
return;
|
|
153
184
|
this.ensureWritablePath(abs);
|
|
154
185
|
mkdirSync(abs, { recursive: true });
|
|
155
186
|
}
|
|
156
187
|
appendJsonl(relativePath, entry) {
|
|
157
|
-
|
|
158
|
-
this.ensureWritablePath(abs);
|
|
159
|
-
writeFileNoFollow(abs, `${JSON.stringify(entry)}\n`, true);
|
|
188
|
+
this.appendText(relativePath, `${JSON.stringify(entry)}\n`);
|
|
160
189
|
}
|
|
161
190
|
appendTelemetryJsonl(fileName, entry) {
|
|
191
|
+
if (this.detached)
|
|
192
|
+
return;
|
|
162
193
|
const telemetryDir = resolve(this.outputDir, 'telemetry');
|
|
163
194
|
this.ensureInside(this.outputDir, telemetryDir);
|
|
164
195
|
ensureWritableContainedPath(this.outputDir, telemetryDir);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
1
|
import { resolve, sep } from 'node:path';
|
|
3
2
|
import { memoryPrivacyLabel } from './backend.js';
|
|
4
3
|
export function reportFileSystemMemoryInvariants(mem) {
|
|
@@ -120,7 +119,7 @@ export function reportFileSystemMemoryInvariants(mem) {
|
|
|
120
119
|
severity: 'hard',
|
|
121
120
|
});
|
|
122
121
|
}
|
|
123
|
-
if (!
|
|
122
|
+
if (!mem.hasSourceFile(source.relativePath)) {
|
|
124
123
|
violations.push({
|
|
125
124
|
kind: 'missing-source-file',
|
|
126
125
|
message: `node ${node.nodeId} source file missing: ${source.relativePath}`,
|
|
@@ -36,6 +36,7 @@ export interface AssociativeMemoryOptions {
|
|
|
36
36
|
getEmbeddings?: () => Map<string, number[]>;
|
|
37
37
|
invariantMode?: InvariantMode;
|
|
38
38
|
outputDir?: string;
|
|
39
|
+
detached?: boolean;
|
|
39
40
|
}
|
|
40
41
|
export declare class AssociativeMemory implements AgentMemoryStore {
|
|
41
42
|
readonly kind: "associative";
|
|
@@ -64,6 +65,7 @@ export declare class AssociativeMemory implements AgentMemoryStore {
|
|
|
64
65
|
private getEmbeddings?;
|
|
65
66
|
private agentId?;
|
|
66
67
|
private outputDir?;
|
|
68
|
+
private readonly detached;
|
|
67
69
|
constructor(clock: SimClock, opts?: AssociativeMemoryOptions);
|
|
68
70
|
/** Set/replace the clock (used during checkpoint restore). */
|
|
69
71
|
setClock(clock: SimClock): void;
|
|
@@ -47,12 +47,14 @@ export class AssociativeMemory {
|
|
|
47
47
|
getEmbeddings;
|
|
48
48
|
agentId;
|
|
49
49
|
outputDir;
|
|
50
|
+
detached;
|
|
50
51
|
constructor(clock, opts) {
|
|
51
52
|
this.clock = clock;
|
|
52
53
|
this.invariantMode = opts?.invariantMode ?? resolveInvariantMode();
|
|
53
54
|
this.getEmbeddings = opts?.getEmbeddings;
|
|
54
55
|
this.agentId = opts?.agentId;
|
|
55
56
|
this.outputDir = opts?.outputDir ? resolve(opts.outputDir) : undefined;
|
|
57
|
+
this.detached = opts?.detached ?? false;
|
|
56
58
|
if (this.outputDir) {
|
|
57
59
|
this.touchTelemetryFile('memory_retrieval.jsonl');
|
|
58
60
|
this.touchTelemetryFile('memory_curator.jsonl');
|
|
@@ -571,12 +573,14 @@ export class AssociativeMemory {
|
|
|
571
573
|
return memory;
|
|
572
574
|
}
|
|
573
575
|
touchTelemetryFile(fileName) {
|
|
574
|
-
if (!this.outputDir)
|
|
576
|
+
if (this.detached || !this.outputDir)
|
|
575
577
|
return;
|
|
576
578
|
const path = this.telemetryPath(fileName);
|
|
577
579
|
closeSync(openSync(path, 'a'));
|
|
578
580
|
}
|
|
579
581
|
appendTelemetryJsonl(fileName, entry) {
|
|
582
|
+
if (this.detached)
|
|
583
|
+
return;
|
|
580
584
|
appendFileSync(this.telemetryPath(fileName), `${JSON.stringify(entry)}\n`);
|
|
581
585
|
}
|
|
582
586
|
telemetryPath(fileName) {
|
|
@@ -85,7 +85,6 @@ async function generateSessionArc(agent, state, maxPeriods, prompts) {
|
|
|
85
85
|
stage: 'intent.session_arc',
|
|
86
86
|
component: 'orchestration.intent',
|
|
87
87
|
agentId: agent.id,
|
|
88
|
-
agentName: agent.identity.fullName,
|
|
89
88
|
});
|
|
90
89
|
const trimmed = parsed.session_arc.trim().slice(0, MAX_SESSION_ARC_CHARS);
|
|
91
90
|
return trimmed.length > 0 ? trimmed : null;
|
|
@@ -125,7 +124,6 @@ export async function generateAgentIntent(agent, state, periodCount, maxPeriods,
|
|
|
125
124
|
component: 'orchestration.intent',
|
|
126
125
|
periodNumber: periodCount,
|
|
127
126
|
agentId: agent.id,
|
|
128
|
-
agentName: agent.identity.fullName,
|
|
129
127
|
});
|
|
130
128
|
const trimmed = parsed.intent.trim().slice(0, MAX_INTENT_CHARS);
|
|
131
129
|
return trimmed.length > 0 ? trimmed : null;
|
|
@@ -43,7 +43,6 @@ export async function processLifecycleRequests(state, onProgress) {
|
|
|
43
43
|
stage: 'lifecycle.hire_review',
|
|
44
44
|
component: 'orchestration.lifecycle',
|
|
45
45
|
agentId: req.requesterId,
|
|
46
|
-
agentName: requesterName,
|
|
47
46
|
requestId: req.id,
|
|
48
47
|
});
|
|
49
48
|
const approved = parseApprovalDecision(raw);
|
|
@@ -77,7 +76,6 @@ export async function processLifecycleRequests(state, onProgress) {
|
|
|
77
76
|
stage: 'lifecycle.termination_review',
|
|
78
77
|
component: 'orchestration.lifecycle',
|
|
79
78
|
agentId: req.requesterId,
|
|
80
|
-
agentName: requesterName,
|
|
81
79
|
requestId: req.id,
|
|
82
80
|
});
|
|
83
81
|
const approved = parseApprovalDecision(raw);
|
|
@@ -1,12 +1,36 @@
|
|
|
1
1
|
/** Private adapter from the public simulation plugin contract to the ZTC kernel. */
|
|
2
|
-
import type { SimulationCompatibilityV1, SimulationDriverRegistrationV1, SimulationHostV1, SimulationJsonObjectV1, SimulationTransitionBatchV1, SimulationTransitionResultV1 } from '../plugin/simulation_contract.js';
|
|
2
|
+
import type { SimulationCompatibilityV1, SimulationDriverRegistrationV1, SimulationDynamicStateV1, SimulationHostV1, SimulationJsonObjectV1, SimulationPlayerCommandV1, SimulationSessionRefV1, SimulationSessionSnapshotV1, SimulationSessionStatusV1, SimulationTransitionBatchV1, SimulationTransitionResultV1 } from '../plugin/simulation_contract.js';
|
|
3
3
|
import { SimState } from './world/state.js';
|
|
4
|
+
import type { SimulationInputJournalV1 } from '../plugin/simulation_interventions.js';
|
|
5
|
+
export interface SessionRecord {
|
|
6
|
+
inputJournal: SimulationInputJournalV1 | undefined;
|
|
7
|
+
lastTransition: SimulationTransitionBatchV1 | null;
|
|
8
|
+
readonly state: SimState;
|
|
9
|
+
readonly driverKind: string;
|
|
10
|
+
readonly appliedTransitions: Set<string>;
|
|
11
|
+
readonly actorMetadata: Map<string, SimulationJsonObjectV1>;
|
|
12
|
+
readonly submittedPlayerCommandIds: Set<string>;
|
|
13
|
+
pendingPlayerCommand: SimulationPlayerCommandV1 | null;
|
|
14
|
+
dynamicState: SimulationDynamicStateV1 | null;
|
|
15
|
+
pluginData: Record<string, SimulationJsonObjectV1>;
|
|
16
|
+
status: SimulationSessionStatusV1;
|
|
17
|
+
revision: number;
|
|
18
|
+
}
|
|
19
|
+
type StateValidators = Pick<SimulationDriverRegistrationV1, 'validateDynamicState' | 'validateDocuments'>;
|
|
20
|
+
/** Register canonical checkpoint validators without loading a driver or claiming its inference boundary. */
|
|
21
|
+
export declare function registerSimulationCheckpointValidators(kind: string, validators: StateValidators): void;
|
|
4
22
|
export declare function getKernelSimulationTransitionState(state: SimState): {
|
|
5
23
|
revision: number;
|
|
6
24
|
pluginData: SimulationJsonObjectV1;
|
|
7
25
|
};
|
|
8
26
|
export declare function applyKernelSimulationTransition(state: SimState, batch: SimulationTransitionBatchV1): Promise<SimulationTransitionResultV1>;
|
|
27
|
+
export declare function detachedSessionRecord(checkpoint: SimulationJsonObjectV1): Promise<SessionRecord>;
|
|
28
|
+
export declare function detachedSessionSnapshot(record: SessionRecord): SimulationSessionSnapshotV1;
|
|
29
|
+
export declare function detachedSessionCheckpoint(record: SessionRecord, source: SimulationJsonObjectV1): SimulationJsonObjectV1;
|
|
30
|
+
export declare function applyDetachedSessionTransition(record: SessionRecord, batch: SimulationTransitionBatchV1): Promise<void>;
|
|
31
|
+
export declare function getOriginalSessionTransition(ref: SimulationSessionRefV1): SimulationTransitionBatchV1 | null;
|
|
9
32
|
export declare function saveSimulationSessionCheckpoint(state: SimState, outputPath?: string): string;
|
|
10
33
|
export declare function validateSimulationDriverRegistration(registration: SimulationDriverRegistrationV1): void;
|
|
11
34
|
export declare function registerSimulationDriver(registration: SimulationDriverRegistrationV1): void;
|
|
12
35
|
export declare function requireSimulationHost(compatibility: SimulationCompatibilityV1): SimulationHostV1;
|
|
36
|
+
export {};
|