@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
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
const MAX_DEPTH = 40;
|
|
2
|
+
const OMIT_SCHEMA = { type: 'object', properties: { __ztcOptional: { type: 'string', const: 'omitted' } }, required: ['__ztcOptional'], additionalProperties: false };
|
|
3
|
+
const COMPACT_KEYS = 'x-ztc-compact-keys';
|
|
4
|
+
const KEYED_RELATIONSHIPS = 'x-ztc-keyed-relationships';
|
|
5
|
+
/** Validate standard patterns even in absent fields and unused branches. */
|
|
6
|
+
function validateConstraints(schema, depth) {
|
|
7
|
+
guardDepth(depth);
|
|
8
|
+
if (Object.hasOwn(schema, 'pattern')) {
|
|
9
|
+
if (typeof schema.pattern !== 'string')
|
|
10
|
+
throw new Error('Invalid string pattern');
|
|
11
|
+
new RegExp(schema.pattern, 'u');
|
|
12
|
+
}
|
|
13
|
+
schemaChildren(schema).forEach(child => validateConstraints(child, depth + 1));
|
|
14
|
+
}
|
|
15
|
+
function schemaChildren(schema) {
|
|
16
|
+
return [
|
|
17
|
+
...(object(schema.properties) ? Object.values(schema.properties) : []),
|
|
18
|
+
...(object(schema.items) ? [schema.items] : []),
|
|
19
|
+
...(Array.isArray(schema.oneOf) ? schema.oneOf : []),
|
|
20
|
+
...(Array.isArray(schema.anyOf) ? schema.anyOf : []),
|
|
21
|
+
].filter(object);
|
|
22
|
+
}
|
|
23
|
+
function compactKey(index) {
|
|
24
|
+
let result = '';
|
|
25
|
+
do {
|
|
26
|
+
result = String.fromCharCode(97 + index % 26) + result;
|
|
27
|
+
index = Math.floor(index / 26) - 1;
|
|
28
|
+
} while (index >= 0);
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
function keyDictionary(schema) {
|
|
32
|
+
const names = new Set();
|
|
33
|
+
function collect(node, depth) {
|
|
34
|
+
guardDepth(depth);
|
|
35
|
+
if (node.additionalProperties === false && object(node.properties)) {
|
|
36
|
+
Object.keys(node.properties).forEach(key => names.add(key));
|
|
37
|
+
}
|
|
38
|
+
schemaChildren(node).forEach(child => collect(child, depth + 1));
|
|
39
|
+
}
|
|
40
|
+
collect(schema, 0);
|
|
41
|
+
return new Map([...names].sort().map((key, index) => [key, compactKey(index)]));
|
|
42
|
+
}
|
|
43
|
+
function renameSchema(schema, keys, depth) {
|
|
44
|
+
guardDepth(depth);
|
|
45
|
+
const result = { ...schema };
|
|
46
|
+
delete result[COMPACT_KEYS];
|
|
47
|
+
const closed = schema.additionalProperties === false;
|
|
48
|
+
if (object(schema.properties)) {
|
|
49
|
+
result.properties = Object.fromEntries(Object.entries(schema.properties).map(([key, child]) => [
|
|
50
|
+
closed ? keys.get(key) : key,
|
|
51
|
+
object(child) ? {
|
|
52
|
+
...renameSchema(child, keys, depth + 1),
|
|
53
|
+
...(closed ? { description: typeof child.description === 'string' ? `${key}: ${child.description}` : key } : {}),
|
|
54
|
+
} : child,
|
|
55
|
+
]));
|
|
56
|
+
if (closed && Array.isArray(schema.required))
|
|
57
|
+
result.required = schema.required.map(key => keys.get(String(key)) ?? key);
|
|
58
|
+
}
|
|
59
|
+
if (object(schema.items))
|
|
60
|
+
result.items = renameSchema(schema.items, keys, depth + 1);
|
|
61
|
+
for (const keyword of ['oneOf', 'anyOf']) {
|
|
62
|
+
if (Array.isArray(schema[keyword]))
|
|
63
|
+
result[keyword] = schema[keyword].map(child => renameSchema(child, keys, depth + 1));
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
function restoreKeys(value, schema, keys, depth) {
|
|
68
|
+
guardDepth(depth);
|
|
69
|
+
const alternatives = schema.oneOf ?? schema.anyOf;
|
|
70
|
+
if (Array.isArray(alternatives)) {
|
|
71
|
+
const candidates = alternatives.filter(branch => matches(value, branch, depth + 1, true));
|
|
72
|
+
if (candidates.length === 0)
|
|
73
|
+
throw new Error('Simulation output matches no schema branch or contains an unknown key');
|
|
74
|
+
const restored = candidates.map(branch => restoreKeys(value, branch, keys, depth + 1));
|
|
75
|
+
if (new Set(restored.map(item => JSON.stringify(item))).size !== 1)
|
|
76
|
+
throw new Error('Simulation output has ambiguous compact keys');
|
|
77
|
+
return restored[0];
|
|
78
|
+
}
|
|
79
|
+
if (Array.isArray(value) && object(schema.items)) {
|
|
80
|
+
const items = schema.items;
|
|
81
|
+
return value.map(item => restoreKeys(item, items, keys, depth + 1));
|
|
82
|
+
}
|
|
83
|
+
if (object(value) && object(schema.properties)) {
|
|
84
|
+
const properties = schema.properties;
|
|
85
|
+
const closed = schema.additionalProperties === false;
|
|
86
|
+
const required = new Set(Array.isArray(schema.required) ? schema.required : []);
|
|
87
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => {
|
|
88
|
+
if (!Object.hasOwn(properties, key)) {
|
|
89
|
+
if (closed)
|
|
90
|
+
throw new Error('Simulation output contains an unknown key');
|
|
91
|
+
return [key, item];
|
|
92
|
+
}
|
|
93
|
+
const child = properties[key];
|
|
94
|
+
const omitted = !required.has(key) && (item === null || matchesOmission(item));
|
|
95
|
+
const restored = object(child) && !omitted ? restoreKeys(item, child, keys, depth + 1) : item;
|
|
96
|
+
return [closed ? keys.get(key) : key, restored];
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
return value;
|
|
100
|
+
}
|
|
101
|
+
function object(value) {
|
|
102
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
103
|
+
}
|
|
104
|
+
function guardDepth(depth) {
|
|
105
|
+
if (depth > MAX_DEPTH)
|
|
106
|
+
throw new Error('Simulation output schema depth exceeded');
|
|
107
|
+
}
|
|
108
|
+
function valueType(value) {
|
|
109
|
+
return value === null ? 'null' : Array.isArray(value) ? 'array' : typeof value;
|
|
110
|
+
}
|
|
111
|
+
function compile(schema, depth) {
|
|
112
|
+
guardDepth(depth);
|
|
113
|
+
const output = { ...schema };
|
|
114
|
+
delete output[KEYED_RELATIONSHIPS];
|
|
115
|
+
// The provider subset omits uniqueness; canonical simulation validation retains it.
|
|
116
|
+
delete output.uniqueItems;
|
|
117
|
+
if (Array.isArray(output.enum) && output.enum.length === 0)
|
|
118
|
+
return null;
|
|
119
|
+
if ('const' in output) {
|
|
120
|
+
output.type = valueType(output.const);
|
|
121
|
+
if (Array.isArray(output.const)) {
|
|
122
|
+
output.minItems = output.const.length;
|
|
123
|
+
output.maxItems = output.const.length;
|
|
124
|
+
output.items = output.const.length === 0 ? { type: 'string' } : { anyOf: output.const.map(item => ({ const: item })) };
|
|
125
|
+
// Structured output accepts scalar constants only; source validation retains array order.
|
|
126
|
+
delete output.const;
|
|
127
|
+
}
|
|
128
|
+
if (object(output.const)) {
|
|
129
|
+
output.properties = Object.fromEntries(Object.entries(output.const).map(([key, value]) => [key, { const: value }]));
|
|
130
|
+
output.required = Object.keys(output.const);
|
|
131
|
+
delete output.const;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (Array.isArray(output.enum) && output.type === undefined) {
|
|
135
|
+
const types = [...new Set(output.enum.map(valueType))];
|
|
136
|
+
output.type = types.length === 1 ? types[0] : types;
|
|
137
|
+
}
|
|
138
|
+
const alternatives = output.oneOf ?? output.anyOf;
|
|
139
|
+
if (Array.isArray(alternatives)) {
|
|
140
|
+
output.anyOf = alternatives.map(branch => compile(branch, depth + 1)).filter(branch => branch !== null);
|
|
141
|
+
delete output.oneOf;
|
|
142
|
+
if (output.anyOf.length === 0)
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
if (object(output.items)) {
|
|
146
|
+
output.items = compile(output.items, depth + 1);
|
|
147
|
+
if (output.items === null) {
|
|
148
|
+
if (Number(output.minItems ?? 0) > 0)
|
|
149
|
+
return null;
|
|
150
|
+
output.items = { type: 'string' };
|
|
151
|
+
output.maxItems = 0;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (object(output.properties)) {
|
|
155
|
+
const required = new Set(Array.isArray(output.required) ? output.required : []);
|
|
156
|
+
const properties = [];
|
|
157
|
+
for (const [key, property] of Object.entries(output.properties)) {
|
|
158
|
+
if (!object(property))
|
|
159
|
+
throw new Error('Simulation output property needs an object schema');
|
|
160
|
+
const converted = compile(property, depth + 1);
|
|
161
|
+
if (required.has(key)) {
|
|
162
|
+
if (converted === null)
|
|
163
|
+
return null;
|
|
164
|
+
properties.push([key, converted]);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
properties.push([key, converted === null ? { type: 'null' } : {
|
|
168
|
+
anyOf: [converted, permitsNull(property, depth + 1) ? OMIT_SCHEMA : { type: 'null' }],
|
|
169
|
+
}]);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
output.properties = Object.fromEntries(properties);
|
|
173
|
+
output.required = properties.map(([key]) => key);
|
|
174
|
+
output.additionalProperties = false;
|
|
175
|
+
}
|
|
176
|
+
return output;
|
|
177
|
+
}
|
|
178
|
+
/** Translate the inference schema only. Canonical validators still own acceptance. */
|
|
179
|
+
export function compileStrictSimulationSchema(schema) {
|
|
180
|
+
validateConstraints(schema, 0);
|
|
181
|
+
const result = compile(schema[COMPACT_KEYS] === true ? renameSchema(schema, keyDictionary(schema), 0) : schema, 0);
|
|
182
|
+
if (result === null)
|
|
183
|
+
throw new Error('Simulation output schema has no possible value');
|
|
184
|
+
return result;
|
|
185
|
+
}
|
|
186
|
+
function permitsNull(schema, depth) {
|
|
187
|
+
guardDepth(depth);
|
|
188
|
+
if ('const' in schema)
|
|
189
|
+
return schema.const === null;
|
|
190
|
+
if (Array.isArray(schema.enum))
|
|
191
|
+
return schema.enum.includes(null);
|
|
192
|
+
const alternatives = schema.oneOf ?? schema.anyOf;
|
|
193
|
+
if (Array.isArray(alternatives))
|
|
194
|
+
return alternatives.some(branch => permitsNull(branch, depth + 1));
|
|
195
|
+
return schema.type === 'null' || (Array.isArray(schema.type) && schema.type.includes('null'));
|
|
196
|
+
}
|
|
197
|
+
/** Select a union by its declared types and discriminants, not by model prose. */
|
|
198
|
+
function matches(value, schema, depth, rejectUnknown = false) {
|
|
199
|
+
guardDepth(depth);
|
|
200
|
+
if ('const' in schema) {
|
|
201
|
+
if (object(schema.const) && object(value)) {
|
|
202
|
+
if (Object.keys(value).length !== Object.keys(schema.const).length
|
|
203
|
+
|| !Object.entries(schema.const).every(([key, item]) => matches(value[key], { const: item }, depth + 1, rejectUnknown)))
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
else if (JSON.stringify(value) !== JSON.stringify(schema.const))
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
if (Array.isArray(schema.enum) && !schema.enum.includes(value))
|
|
210
|
+
return false;
|
|
211
|
+
if (typeof value === 'string' && typeof schema.pattern === 'string' && !new RegExp(schema.pattern, 'u').test(value))
|
|
212
|
+
return false;
|
|
213
|
+
if (schema.type !== undefined) {
|
|
214
|
+
const types = Array.isArray(schema.type) ? schema.type : [schema.type];
|
|
215
|
+
if (!types.includes(valueType(value)) && !(types.includes('integer') && Number.isInteger(value)))
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
const alternatives = schema.oneOf ?? schema.anyOf;
|
|
219
|
+
if (Array.isArray(alternatives) && !alternatives.some(branch => matches(value, branch, depth + 1, rejectUnknown)))
|
|
220
|
+
return false;
|
|
221
|
+
if (Array.isArray(value) && object(schema.items)) {
|
|
222
|
+
const items = schema.items;
|
|
223
|
+
if (!value.every(item => matches(item, items, depth + 1, rejectUnknown)))
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
if (object(value) && object(schema.properties)) {
|
|
227
|
+
if (rejectUnknown && schema.additionalProperties === false && Object.keys(value).some(key => !Object.hasOwn(schema.properties, key)))
|
|
228
|
+
return false;
|
|
229
|
+
const required = new Set(Array.isArray(schema.required) ? schema.required : []);
|
|
230
|
+
for (const [key, property] of Object.entries(schema.properties)) {
|
|
231
|
+
if (!Object.hasOwn(value, key)) {
|
|
232
|
+
if (required.has(key))
|
|
233
|
+
return false;
|
|
234
|
+
else
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
if (!required.has(key) && (value[key] === null || matchesOmission(value[key])))
|
|
238
|
+
continue;
|
|
239
|
+
if (object(property) && !matches(value[key], property, depth + 1, rejectUnknown))
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
function matchesOmission(value) {
|
|
246
|
+
return object(value) && Object.keys(value).length === 1 && value.__ztcOptional === 'omitted';
|
|
247
|
+
}
|
|
248
|
+
function decode(value, schema, depth) {
|
|
249
|
+
guardDepth(depth);
|
|
250
|
+
if (typeof value === 'string' && typeof schema.pattern === 'string' && !new RegExp(schema.pattern, 'u').test(value)) {
|
|
251
|
+
throw new Error('Simulation output violates string pattern');
|
|
252
|
+
}
|
|
253
|
+
const alternatives = schema.oneOf ?? schema.anyOf;
|
|
254
|
+
if (Array.isArray(alternatives)) {
|
|
255
|
+
const candidates = alternatives.filter(branch => matches(value, branch, depth + 1));
|
|
256
|
+
if (candidates.length === 0)
|
|
257
|
+
throw new Error('Simulation output matches no schema branch');
|
|
258
|
+
const decoded = candidates.map(branch => decode(value, branch, depth + 1));
|
|
259
|
+
if (new Set(decoded.map(item => JSON.stringify(item))).size !== 1)
|
|
260
|
+
throw new Error('Simulation output has ambiguous optional fields');
|
|
261
|
+
return decoded[0];
|
|
262
|
+
}
|
|
263
|
+
if (Array.isArray(value) && object(schema.items)) {
|
|
264
|
+
const items = schema.items;
|
|
265
|
+
return value.map(item => decode(item, items, depth + 1));
|
|
266
|
+
}
|
|
267
|
+
if (object(value) && object(schema.properties)) {
|
|
268
|
+
const required = new Set(Array.isArray(schema.required) ? schema.required : []);
|
|
269
|
+
const output = [];
|
|
270
|
+
for (const [key, item] of Object.entries(value)) {
|
|
271
|
+
const property = Object.hasOwn(schema.properties, key) ? schema.properties[key] : undefined;
|
|
272
|
+
if (object(property)) {
|
|
273
|
+
if (!required.has(key) && permitsNull(property, depth + 1) && matchesOmission(item))
|
|
274
|
+
continue;
|
|
275
|
+
if (item === null && !required.has(key) && !permitsNull(property, depth + 1))
|
|
276
|
+
continue;
|
|
277
|
+
output.push([key, decode(item, property, depth + 1)]);
|
|
278
|
+
}
|
|
279
|
+
else
|
|
280
|
+
output.push([key, item]);
|
|
281
|
+
}
|
|
282
|
+
return Object.fromEntries(output);
|
|
283
|
+
}
|
|
284
|
+
return value;
|
|
285
|
+
}
|
|
286
|
+
// JSON.parse validates syntax; this version-scoped scan preserves duplicate-key evidence.
|
|
287
|
+
function assertUniqueJsonKeys(text) {
|
|
288
|
+
const containers = [];
|
|
289
|
+
for (const match of text.matchAll(/"(?:\\[\s\S]|[^"\\])*"|[{}\[\]]/g)) {
|
|
290
|
+
const token = match[0];
|
|
291
|
+
if (token === '{')
|
|
292
|
+
containers.push(new Set());
|
|
293
|
+
else if (token === '[')
|
|
294
|
+
containers.push(null);
|
|
295
|
+
else if (token === '}' || token === ']')
|
|
296
|
+
containers.pop();
|
|
297
|
+
else {
|
|
298
|
+
let following = match.index + token.length;
|
|
299
|
+
while (/\s/u.test(text[following] ?? ''))
|
|
300
|
+
following += 1;
|
|
301
|
+
if (text[following] !== ':')
|
|
302
|
+
continue;
|
|
303
|
+
const key = JSON.parse(token);
|
|
304
|
+
const keys = containers.at(-1);
|
|
305
|
+
if (keys.has(key))
|
|
306
|
+
throw new Error('Simulation output contains duplicate JSON keys');
|
|
307
|
+
keys.add(key);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
export function decodeStrictSimulationOutput(text, schema) {
|
|
312
|
+
validateConstraints(schema, 0);
|
|
313
|
+
let value = JSON.parse(text);
|
|
314
|
+
if (schema[KEYED_RELATIONSHIPS] === 2)
|
|
315
|
+
assertUniqueJsonKeys(text);
|
|
316
|
+
if (schema[COMPACT_KEYS] === true) {
|
|
317
|
+
const keys = keyDictionary(schema);
|
|
318
|
+
value = restoreKeys(value, renameSchema(schema, keys, 0), new Map([...keys].map(([key, alias]) => [alias, key])), 0);
|
|
319
|
+
}
|
|
320
|
+
return JSON.stringify(decode(value, schema, 0));
|
|
321
|
+
}
|
|
@@ -186,6 +186,8 @@ export interface SimBlueprint {
|
|
|
186
186
|
export type DocumentType = string;
|
|
187
187
|
/** A document in the company's document trail. Agents create and send these. */
|
|
188
188
|
export interface DocumentEntry {
|
|
189
|
+
provenance?: import('../../plugin/simulation_documents.js').SimulationDocumentProvenanceV1;
|
|
190
|
+
ownerActorId?: string;
|
|
189
191
|
id: string;
|
|
190
192
|
/** Links to SimArtifact if formal (counts toward targets) */
|
|
191
193
|
artifactId?: string;
|
|
@@ -170,7 +170,7 @@ export class ArtifactStore {
|
|
|
170
170
|
};
|
|
171
171
|
this.documentTrail.push(entry);
|
|
172
172
|
const maxDocumentTrail = 100;
|
|
173
|
-
if (this.documentTrail.length > maxDocumentTrail) {
|
|
173
|
+
if (this.documentTrail.length > maxDocumentTrail && !this.documentTrail.some(document => document.ownerActorId !== undefined)) {
|
|
174
174
|
this.documentTrail = this.documentTrail.slice(-maxDocumentTrail);
|
|
175
175
|
this.rebuildDocumentsByAgent();
|
|
176
176
|
}
|
|
@@ -12,9 +12,11 @@ export interface MemoryTelemetrySnapshot {
|
|
|
12
12
|
files: Array<[MemoryTelemetryFileName, number]>;
|
|
13
13
|
}
|
|
14
14
|
export interface MemoryManagerDeps {
|
|
15
|
+
provider?: string;
|
|
15
16
|
invariantMode?: InvariantMode;
|
|
16
17
|
outputDir?: string;
|
|
17
18
|
backend?: MemoryBackendKind;
|
|
19
|
+
detached?: boolean;
|
|
18
20
|
}
|
|
19
21
|
declare const MEMORY_TELEMETRY_FILES: readonly ["memory_ops.jsonl", "memory_retrieval.jsonl", "memory_curator.jsonl", "prompt_packets.jsonl"];
|
|
20
22
|
type MemoryTelemetryFileName = typeof MEMORY_TELEMETRY_FILES[number];
|
|
@@ -22,11 +24,14 @@ export declare class MemoryManager {
|
|
|
22
24
|
private memories;
|
|
23
25
|
private embeddings;
|
|
24
26
|
private embeddingProvider;
|
|
27
|
+
private readonly provider?;
|
|
25
28
|
private clock;
|
|
26
29
|
private warnedOverflow;
|
|
27
30
|
private invariantMode?;
|
|
28
31
|
private backend;
|
|
29
32
|
private outputDir?;
|
|
33
|
+
private readonly detached;
|
|
34
|
+
private detachedTelemetry?;
|
|
30
35
|
constructor(clock: SimClock, deps?: MemoryManagerDeps);
|
|
31
36
|
/** Swap the clock (used during checkpoint restore). */
|
|
32
37
|
setClock(clock: SimClock): void;
|
|
@@ -17,17 +17,22 @@ export class MemoryManager {
|
|
|
17
17
|
memories = new Map();
|
|
18
18
|
embeddings = new Map();
|
|
19
19
|
embeddingProvider;
|
|
20
|
+
provider;
|
|
20
21
|
clock;
|
|
21
22
|
warnedOverflow = false;
|
|
22
23
|
invariantMode;
|
|
23
24
|
backend;
|
|
24
25
|
outputDir;
|
|
26
|
+
detached;
|
|
27
|
+
detachedTelemetry;
|
|
25
28
|
constructor(clock, deps) {
|
|
26
29
|
this.clock = clock;
|
|
27
|
-
this.
|
|
30
|
+
this.provider = deps?.provider;
|
|
31
|
+
this.embeddingProvider = createEmbeddingProvider(this.embeddings, this.provider);
|
|
28
32
|
this.invariantMode = deps?.invariantMode;
|
|
29
33
|
this.backend = deps?.backend ?? resolveMemoryBackendKind();
|
|
30
34
|
this.outputDir = deps?.outputDir;
|
|
35
|
+
this.detached = deps?.detached ?? false;
|
|
31
36
|
}
|
|
32
37
|
/** Swap the clock (used during checkpoint restore). */
|
|
33
38
|
setClock(clock) {
|
|
@@ -155,7 +160,7 @@ export class MemoryManager {
|
|
|
155
160
|
m.setEmbeddingsAccessor(() => this.embeddings);
|
|
156
161
|
return [agentId, m];
|
|
157
162
|
}));
|
|
158
|
-
this.embeddingProvider = createEmbeddingProvider(this.embeddings);
|
|
163
|
+
this.embeddingProvider = createEmbeddingProvider(this.embeddings, this.provider);
|
|
159
164
|
this.warnedOverflow = false;
|
|
160
165
|
this.restoreTelemetry(normalized.telemetry);
|
|
161
166
|
}
|
|
@@ -166,6 +171,7 @@ export class MemoryManager {
|
|
|
166
171
|
}
|
|
167
172
|
return new FileSystemMemory(agentId, this.clock, {
|
|
168
173
|
outputDir: this.outputDir,
|
|
174
|
+
detached: this.detached,
|
|
169
175
|
personaSeed,
|
|
170
176
|
invariantMode: this.invariantMode,
|
|
171
177
|
});
|
|
@@ -175,6 +181,7 @@ export class MemoryManager {
|
|
|
175
181
|
getEmbeddings: () => this.embeddings,
|
|
176
182
|
invariantMode: this.invariantMode,
|
|
177
183
|
outputDir: this.outputDir,
|
|
184
|
+
detached: this.detached,
|
|
178
185
|
});
|
|
179
186
|
}
|
|
180
187
|
restoreAgentMemory(agentId, snapshot) {
|
|
@@ -185,6 +192,7 @@ export class MemoryManager {
|
|
|
185
192
|
}
|
|
186
193
|
return FileSystemMemory.fromSnapshot(snapshot, this.clock, {
|
|
187
194
|
outputDir: this.outputDir,
|
|
195
|
+
detached: this.detached,
|
|
188
196
|
invariantMode: this.invariantMode,
|
|
189
197
|
});
|
|
190
198
|
case 'associative':
|
|
@@ -192,6 +200,7 @@ export class MemoryManager {
|
|
|
192
200
|
agentId,
|
|
193
201
|
invariantMode: this.invariantMode,
|
|
194
202
|
outputDir: this.outputDir,
|
|
203
|
+
detached: this.detached,
|
|
195
204
|
});
|
|
196
205
|
default:
|
|
197
206
|
throw new Error(`invalid memory backend kind for ${agentId}: ${String(snapshot.kind)}`);
|
|
@@ -239,6 +248,8 @@ export class MemoryManager {
|
|
|
239
248
|
};
|
|
240
249
|
}
|
|
241
250
|
snapshotTelemetry() {
|
|
251
|
+
if (this.detached)
|
|
252
|
+
return structuredClone(this.detachedTelemetry);
|
|
242
253
|
if (!this.outputDir)
|
|
243
254
|
return undefined;
|
|
244
255
|
const telemetryDir = join(this.outputDir, 'telemetry');
|
|
@@ -250,6 +261,10 @@ export class MemoryManager {
|
|
|
250
261
|
};
|
|
251
262
|
}
|
|
252
263
|
restoreTelemetry(snapshot) {
|
|
264
|
+
if (this.detached) {
|
|
265
|
+
this.detachedTelemetry = structuredClone(snapshot);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
253
268
|
if (!this.outputDir || !snapshot)
|
|
254
269
|
return;
|
|
255
270
|
const telemetryDir = join(this.outputDir, 'telemetry');
|
|
@@ -109,7 +109,7 @@ export declare class SimState {
|
|
|
109
109
|
private _pendingMemoryWrites;
|
|
110
110
|
private _pendingMemoryWriteErrors;
|
|
111
111
|
private activeWorldTransition;
|
|
112
|
-
constructor(goal: SimGoal, config: SimConfig, preset?: DomainPreset, restoredWorldId?: string, restoredWorldContext?: WorldContextSnapshot);
|
|
112
|
+
constructor(goal: SimGoal, config: SimConfig, preset?: DomainPreset, restoredWorldId?: string, restoredWorldContext?: WorldContextSnapshot, detached?: boolean);
|
|
113
113
|
private get worldContext();
|
|
114
114
|
private get agentRegistry();
|
|
115
115
|
private get artifactStore();
|
|
@@ -429,7 +429,8 @@ export declare class SimState {
|
|
|
429
429
|
exportArtifacts(format?: 'jsonl' | 'json', outputPath?: string): string;
|
|
430
430
|
createCheckpoint(extensions?: CheckpointExtensions): SimulationCheckpoint;
|
|
431
431
|
saveCheckpoint(outputPath?: string, extensions?: CheckpointExtensions): string;
|
|
432
|
-
static loadCheckpoint(checkpointPath: string): Promise<SimState>;
|
|
432
|
+
static loadCheckpoint(checkpointPath: string, outputDirectory?: string): Promise<SimState>;
|
|
433
|
+
static fromCheckpoint(raw: unknown, outputDirectory?: string, detached?: boolean): Promise<SimState>;
|
|
433
434
|
getStatus(): Record<string, unknown>;
|
|
434
435
|
getRuntimePeriodNumber(): number | null;
|
|
435
436
|
getCheckpointExtension(namespace: string): CheckpointExtension | null;
|
|
@@ -373,7 +373,7 @@ export class SimState {
|
|
|
373
373
|
_pendingMemoryWrites = new Set();
|
|
374
374
|
_pendingMemoryWriteErrors = [];
|
|
375
375
|
activeWorldTransition = null;
|
|
376
|
-
constructor(goal, config, preset, restoredWorldId, restoredWorldContext) {
|
|
376
|
+
constructor(goal, config, preset, restoredWorldId, restoredWorldContext, detached = false) {
|
|
377
377
|
this.id = restoredWorldId
|
|
378
378
|
?? `sim-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
379
379
|
this.goal = goal;
|
|
@@ -387,7 +387,7 @@ export class SimState {
|
|
|
387
387
|
this.preset = preset ?? (config.domain
|
|
388
388
|
? DomainFactory.load(config.domain)
|
|
389
389
|
: DomainFactory.createEmpty());
|
|
390
|
-
this.persistence = createSimulationPersistence(this.id, this.goal, this.config);
|
|
390
|
+
this.persistence = detached ? null : createSimulationPersistence(this.id, this.goal, this.config);
|
|
391
391
|
if (restoredWorldContext !== undefined) {
|
|
392
392
|
if (restoredWorldContext.config.worldId !== this.id) {
|
|
393
393
|
throw new Error('checkpoint: simulation identity does not match world context identity');
|
|
@@ -485,8 +485,10 @@ export class SimState {
|
|
|
485
485
|
this.world = createWorld(definition, restoredWorldContext);
|
|
486
486
|
const memCfg = this.preset.memoryConfig;
|
|
487
487
|
this.memoryManager = new MemoryManager({ nowMs: () => this.calendar.getCurrentTime().getTime() }, {
|
|
488
|
+
provider: this.config.provider,
|
|
488
489
|
invariantMode: memCfg?.invariants?.mode,
|
|
489
490
|
outputDir: this.config.outputDir,
|
|
491
|
+
detached,
|
|
490
492
|
});
|
|
491
493
|
}
|
|
492
494
|
get worldContext() {
|
|
@@ -1025,6 +1027,9 @@ export class SimState {
|
|
|
1025
1027
|
}
|
|
1026
1028
|
/** Add a document to the company trail. Records in creator's and recipients' memories. */
|
|
1027
1029
|
addDocument(doc) {
|
|
1030
|
+
if (doc.ownerActorId !== undefined) {
|
|
1031
|
+
return this.artifactStore.addDocument(doc, new Date(this.calendar.getCurrentTime()));
|
|
1032
|
+
}
|
|
1028
1033
|
const document = this.withInheritedDocumentArtifact({
|
|
1029
1034
|
...doc,
|
|
1030
1035
|
content: this.normalizeDocumentContent(doc.content),
|
|
@@ -1805,8 +1810,11 @@ export class SimState {
|
|
|
1805
1810
|
this.persistence?.recordCheckpoint(requestedPath, checkpoint.savedAt);
|
|
1806
1811
|
return requestedPath;
|
|
1807
1812
|
}
|
|
1808
|
-
static async loadCheckpoint(checkpointPath) {
|
|
1813
|
+
static async loadCheckpoint(checkpointPath, outputDirectory) {
|
|
1809
1814
|
const raw = JSON.parse(readBoundedCheckpoint(checkpointPath));
|
|
1815
|
+
return SimState.fromCheckpoint(raw, outputDirectory);
|
|
1816
|
+
}
|
|
1817
|
+
static async fromCheckpoint(raw, outputDirectory, detached = false) {
|
|
1810
1818
|
const checkpoint = parseSimulationCheckpoint(raw);
|
|
1811
1819
|
if (checkpoint.schemaVersion !== SIMULATION_CHECKPOINT_VERSION) {
|
|
1812
1820
|
throw new Error(`Unsupported simulation checkpoint version ${checkpoint.schemaVersion}; expected ${SIMULATION_CHECKPOINT_VERSION}`);
|
|
@@ -1817,7 +1825,9 @@ export class SimState {
|
|
|
1817
1825
|
if (checkpoint.worldContext.currentTime !== checkpoint.calendar.current) {
|
|
1818
1826
|
throw new Error('checkpoint: calendar time does not match world context time');
|
|
1819
1827
|
}
|
|
1820
|
-
const state = new SimState(checkpoint.goal,
|
|
1828
|
+
const state = new SimState(checkpoint.goal, outputDirectory === undefined
|
|
1829
|
+
? checkpoint.config
|
|
1830
|
+
: { ...checkpoint.config, outputDir: outputDirectory }, undefined, checkpoint.simulationId, checkpoint.worldContext, detached);
|
|
1821
1831
|
state.externalAgentConfigs = checkpoint.externalAgentConfigs;
|
|
1822
1832
|
state.agentRegistry.restore(checkpoint.agents);
|
|
1823
1833
|
state.memoryManager.restore(checkpoint.memory);
|
|
@@ -1848,7 +1858,7 @@ export class SimState {
|
|
|
1848
1858
|
: undefined);
|
|
1849
1859
|
const pluginData = objectField(checkpoint.extensions['ztc.host']?.data, 'pluginData');
|
|
1850
1860
|
const graphValue = objectField(pluginData, 'sim-graph');
|
|
1851
|
-
if (checkpoint.config.features?.graph_memory && graphValue !== undefined) {
|
|
1861
|
+
if (!detached && checkpoint.config.features?.graph_memory && graphValue !== undefined) {
|
|
1852
1862
|
const graph = simulationFactGraphFromJson(graphValue);
|
|
1853
1863
|
try {
|
|
1854
1864
|
await rebuildStateGraphSidecar(state, graph, { fresh: true });
|