@ashx-j/lunr 0.2.11 → 0.2.13
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/CHANGELOG.md +13 -0
- package/README.md +211 -236
- package/dist/builtin-extensions/ashxj-tui.d.ts +3 -0
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +28 -11
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +0 -2
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-cron.d.ts +1 -1
- package/dist/builtin-extensions/lunr-cron.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-cron.js +1 -1
- package/dist/builtin-extensions/lunr-cron.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js +3 -3
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts +0 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js +1 -23
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js +6 -7
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +7 -14
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +12 -9
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +38 -34
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +3 -3
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +32 -47
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +7 -10
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +90 -109
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts +3 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +37 -50
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts +4 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js +5 -5
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +31 -13
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts +4 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +48 -20
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +90 -64
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +6 -8
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +262 -161
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js +24 -33
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +25 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +51 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js +20 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +4 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts +5 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +9 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js +20 -17
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +70 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +153 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts +13 -8
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.js +20 -51
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +80 -20
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js +10 -2
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +20 -32
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +23 -449
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +13 -11
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js +18 -17
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.d.ts +2 -2
- package/dist/builtin-extensions/simple-pi-memory.d.ts.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.js +41 -17
- package/dist/builtin-extensions/simple-pi-memory.js.map +1 -1
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/amazon-bedrock.json +1 -1
- package/dist/catalog/providers/azure-openai-responses.json +1 -1
- package/dist/catalog/providers/cloudflare-ai-gateway.json +1 -1
- package/dist/catalog/providers/cloudflare-workers-ai.json +1 -1
- package/dist/catalog/providers/fireworks.json +1 -1
- package/dist/catalog/providers/github-copilot.json +1 -1
- package/dist/catalog/providers/huggingface.json +1 -1
- package/dist/catalog/providers/minimax-cn.json +1 -1
- package/dist/catalog/providers/minimax.json +1 -1
- package/dist/catalog/providers/mistral.json +1 -1
- package/dist/catalog/providers/nvidia.json +1 -1
- package/dist/catalog/providers/openai.json +1 -1
- package/dist/catalog/providers/opencode-go.json +1 -1
- package/dist/catalog/providers/opencode.json +1 -1
- package/dist/catalog/providers/openrouter.json +1 -1
- package/dist/catalog/providers/qwen-cloud-cn.json +1 -1
- package/dist/catalog/providers/qwen-cloud.json +1 -1
- package/dist/catalog/providers/qwen-token-plan-cn.json +1 -1
- package/dist/catalog/providers/qwen-token-plan.json +1 -1
- package/dist/catalog/providers/together.json +1 -1
- package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
- package/dist/catalog/providers/zai-coding-cn.json +1 -1
- package/dist/catalog/providers/zai.json +1 -1
- package/dist/catalog/publication.json +3 -3
- package/dist/core/agent-session.d.ts +7 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +34 -4
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/context-breakdown.d.ts +3 -1
- package/dist/core/context-breakdown.d.ts.map +1 -1
- package/dist/core/context-breakdown.js +5 -2
- package/dist/core/context-breakdown.js.map +1 -1
- package/dist/core/customize.d.ts +2 -0
- package/dist/core/customize.d.ts.map +1 -1
- package/dist/core/customize.js +6 -0
- package/dist/core/customize.js.map +1 -1
- package/dist/core/memory-cap.d.ts +4 -8
- package/dist/core/memory-cap.d.ts.map +1 -1
- package/dist/core/memory-cap.js +8 -8
- package/dist/core/memory-cap.js.map +1 -1
- package/dist/core/permissions.d.ts +2 -0
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +30 -14
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/plan-mode.d.ts.map +1 -1
- package/dist/core/plan-mode.js +1 -9
- package/dist/core/plan-mode.js.map +1 -1
- package/dist/core/rollback.d.ts.map +1 -1
- package/dist/core/rollback.js +1 -1
- package/dist/core/rollback.js.map +1 -1
- package/dist/core/settings-manager.d.ts +16 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +37 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/subagent-permission-inherit.d.ts +34 -22
- package/dist/core/subagent-permission-inherit.d.ts.map +1 -1
- package/dist/core/subagent-permission-inherit.js +37 -80
- package/dist/core/subagent-permission-inherit.js.map +1 -1
- package/dist/core/swarm.d.ts.map +1 -1
- package/dist/core/swarm.js +13 -7
- package/dist/core/swarm.js.map +1 -1
- package/dist/core/system-prompt.d.ts +6 -4
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +38 -48
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
- package/dist/core/usage-adapters/openai-codex.js +22 -17
- package/dist/core/usage-adapters/openai-codex.js.map +1 -1
- package/dist/core/usage-service.d.ts +10 -1
- package/dist/core/usage-service.d.ts.map +1 -1
- package/dist/core/usage-service.js +17 -6
- package/dist/core/usage-service.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +1 -4
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +1 -4
- package/dist/gateway/cron.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +0 -5
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +2 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +21 -0
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +7 -4
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +122 -162
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/usage-view.js +7 -4
- package/dist/modes/interactive/components/usage-view.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +55 -96
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/skill-tag-autocomplete.d.ts +13 -0
- package/dist/modes/interactive/skill-tag-autocomplete.d.ts.map +1 -0
- package/dist/modes/interactive/skill-tag-autocomplete.js +72 -0
- package/dist/modes/interactive/skill-tag-autocomplete.js.map +1 -0
- package/docs/compaction.md +23 -23
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +18 -18
- package/docs/development.md +16 -15
- package/docs/docs.json +6 -2
- package/docs/extensions.md +82 -80
- package/docs/features.md +102 -0
- package/docs/index.md +25 -19
- package/docs/json.md +7 -7
- package/docs/keybindings.md +4 -4
- package/docs/models.md +2 -2
- package/docs/packages.md +38 -42
- package/docs/prompt-templates.md +4 -4
- package/docs/providers.md +22 -10
- package/docs/quickstart.md +81 -46
- package/docs/rpc.md +7 -13
- package/docs/sdk.md +43 -41
- package/docs/security.md +18 -18
- package/docs/session-format.md +9 -9
- package/docs/sessions.md +13 -12
- package/docs/settings.md +63 -24
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +21 -11
- package/docs/terminal-setup.md +5 -5
- package/docs/termux.md +7 -7
- package/docs/themes.md +12 -14
- package/docs/tmux.md +4 -4
- package/docs/tui.md +23 -23
- package/docs/usage.md +112 -87
- package/docs/windows.md +10 -2
- package/examples/README.md +3 -1
- package/examples/extensions/README.md +6 -6
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/doom-overlay/README.md +2 -2
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/plan-mode/README.md +3 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/subagent/README.md +13 -11
- package/examples/extensions/todo.ts +2 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/sdk/README.md +9 -5
- package/package.json +6 -7
- package/dist/builtin-extensions/lunr-behavior.d.ts +0 -44
- package/dist/builtin-extensions/lunr-behavior.d.ts.map +0 -1
- package/dist/builtin-extensions/lunr-behavior.js +0 -213
- package/dist/builtin-extensions/lunr-behavior.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/agents/context-builder.md +0 -46
- package/dist/builtin-extensions/pi-subagents/agents/deep-researcher.md +0 -36
- package/dist/builtin-extensions/pi-subagents/agents/delegate.md +0 -12
- package/dist/builtin-extensions/pi-subagents/agents/oracle.md +0 -73
- package/dist/builtin-extensions/pi-subagents/agents/planner.md +0 -55
- package/dist/builtin-extensions/pi-subagents/agents/research-writer.md +0 -37
- package/dist/builtin-extensions/pi-subagents/agents/researcher.md +0 -52
- package/dist/builtin-extensions/pi-subagents/agents/reviewer.md +0 -79
- package/dist/builtin-extensions/pi-subagents/agents/scout.md +0 -50
- package/dist/builtin-extensions/pi-subagents/agents/worker.md +0 -55
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts +0 -20
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js +0 -1273
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts +0 -49
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js +0 -252
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js +0 -6
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js +0 -23
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts +0 -8
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js +0 -143
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts +0 -176
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.js +0 -1326
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts +0 -7
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js +0 -307
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts +0 -8
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.js +0 -30
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts +0 -35
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js +0 -151
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts +0 -131
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js +0 -491
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js.map +0 -1
- package/dist/core/behavior-preset.d.ts +0 -60
- package/dist/core/behavior-preset.d.ts.map +0 -1
- package/dist/core/behavior-preset.js +0 -257
- package/dist/core/behavior-preset.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduled-runs.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EACN,aAAa,GAGb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAEtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,CAAU,CAAC;AAElH,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC9C,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAyC/B,MAAM,UAAU,oBAAoB,CAAC,MAAe,EAAgC;IACnF,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAK,qBAA2C,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAAA,CACnG;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAuB,EAAW;IACtE,OAAO,MAAM,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;AAAA,CAC9C;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,SAAiB,EAAE,IAAI,GAAG,kBAAkB,EAAU;IACxG,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5G,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;AAAA,CACzC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAU;IACjF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACrD,IAAI,QAAQ,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,yDAAyD,CAAC,CAAC;QACzJ,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAA0B,CAAC,CAAC;QACzG,MAAM,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,iCAAiC,CAAC,CAAC;QAC7J,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,yFAAyF,CAAC,CAAC;QACrH,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,qFAAqF,CAAC,CAAC;QAC9I,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,UAAU,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,WAAW,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,UAAU,GAAG,EAAE,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;YAChJ,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,sCAAsC,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,MAAM,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACvG,OAAO,MAAM,CAAC;QACf,CAAC;IACF,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,uFAAuF,CAAC,CAAC;AAAA,CACtI;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,GAAW,EAAE,SAAiB,EAAyB;IAC/F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC9E,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,MAAM,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9I,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,0BAA0B,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,IAAI,GAAG,MAAwC,CAAC;IACtD,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,QAAQ,IAAI,CAAC,CAAC;IAC1G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,8BAA8B,CAAC,CAAC;IACpH,MAAM,IAAI,GAAsB,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAoB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClH,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,SAAS,KAAK,qBAAqB,CAAC,CAAC;QACrJ,MAAM,SAAS,GAAG,GAA+B,CAAC;QAClD,IAAI,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACtM,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,SAAS,KAAK,6BAA6B,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/E,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;YACjI,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,SAAS,KAAK,0BAA0B,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,SAAS,KAAK,qBAAqB,CAAC,CAAC;QACrJ,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,SAAS,KAAK,sBAAsB,CAAC,CAAC;QAC7L,IAAI,CAAC,IAAI,CAAC,SAA4B,CAAC,CAAC;IACzC,CAAC;IACD,OAAO;QACN,OAAO,EAAE,CAAC;QACV,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QAClD,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC1E,IAAI;KACJ,CAAC;AAAA,CACF;AAED,MAAM,iBAAiB;IACL,QAAQ,CAAS;IACjB,GAAG,CAAS;IACZ,SAAS,CAAS;IAEnC,YAAY,QAAgB,EAAE,GAAW,EAAE,SAAiB,EAAE;QAC7D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAAA,CAC3B;IAED,IAAI,GAAsB;QACzB,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;IAAA,CACnE;IAED,GAAG,CAAC,EAAU,EAA+B;QAC5C,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAAA,CAChD;IAED,MAAM,CAAI,EAAsC,EAAK;QACpD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACxB,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAAA,CACd;CACD;AAED,SAAS,oBAAoB,CAAC,MAAuB,EAAU;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC;IAClD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC;AAAA,CAC/E;AAED,SAAS,iBAAiB,CAAC,MAAuB,EAAU;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC;IAC/C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC;AAAA,CAC3E;AAED,SAAS,aAAa,CAAC,KAAwB,EAAW;IACzD,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,CAAC;AAAA,CAC7F;AAED,SAAS,OAAO,CAAC,MAA0B,EAAmB;IAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IACvD,OAAO,QAAQ,CAAC;AAAA,CAChB;AAED,SAAS,uBAAuB,CAAC,MAA0B,EAAU;IACpE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,MAAM,CAAC,KAAM,CAAC,MAAM,GAAG,CAAC;IAC9E,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,aAAa,MAAM,CAAC,KAAM,CAAC,MAAM,GAAG,CAAC;IACjF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;AAAA,CAC/D;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK,EAA4B;IAC5E,OAAO;QACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACjC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;KAC5C,CAAC;AAAA,CACF;AAED,SAAS,cAAc,CAAC,IAAuB,EAAE,WAAmB,EAAmB;IACtF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;IACzD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,WAAW,cAAc,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxK,MAAM,IAAI,KAAK,CAAC,kBAAkB,WAAW,cAAc,CAAC,CAAC;AAAA,CAC7D;AAED,SAAS,uBAAuB,CAAC,MAA0B,EAAmD;IAC7G,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,KAAK,EAAE,gFAAgF,EAAE,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,gFAAgF,EAAE,CAAC;IACjI,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,wGAAwG,EAAE,CAAC;IAC1J,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,0EAA0E,EAAE,CAAC;IACzH,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,qFAAqF,EAAE,CAAC;IACrI,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAE9E,MAAM,EACL,MAAM,EAAE,OAAO,EACf,EAAE,EAAE,GAAG,EACP,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,SAAS,EACnB,YAAY,EAAE,aAAa,EAC3B,GAAG,eAAe,EAClB,GAAG,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;AAAA,CACzF;AAED,MAAM,OAAO,mBAAmB;IACvB,KAAK,CAAgC;IACrC,GAAG,CAA+B;IAClC,MAAM,GAAG,IAAI,GAAG,EAAyC,CAAC;IACjD,SAAS,CAAS;IAClB,GAAG,CAAe;IAClB,QAAQ,CAAe;IACvB,SAAS,CAAqB;IAC9B,IAAI,CAA0B;IAE/C,YAAY,IAA6B,EAAE;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;QACtD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;IAAA,CAC3C;IAED,WAAW,CAAC,GAAqB,EAAQ;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,OAAO;QACR,CAAC;QACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAClH,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAAA,CAC1B;IAED,IAAI,GAAS;QACZ,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;IAAA,CACrB;IAED,KAAK,CAAC,cAAc,CAAC,MAA0B,EAAE,GAAqB,EAAqC;QAC1G,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC;YACJ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,OAAO,UAAU,CAAC,gNAAgN,EAAE,IAAI,CAAC,CAAC;YAC3O,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO,UAAU,CAAC,2DAA2D,EAAE,IAAI,CAAC,CAAC;YACtG,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;gBACvB,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACpD,KAAK,eAAe,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7C,KAAK,iBAAiB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtD,KAAK,iBAAiB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtD,SAAS,OAAO,UAAU,CAAC,iCAAiC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YACpF,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IAAA,CACD;IAEO,SAAS,CAAC,MAA0B,EAAE,GAAqB,EAA4B;QAC9F,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,SAAS,CAAC,KAAK;YAAE,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,MAAM,CAAC,QAAS,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,WAAW,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAC/G,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,YAAY,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC,qCAAqC,YAAY,IAAI,UAAU,+EAA+E,EAAE,IAAI,CAAC,CAAC;QACxM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;QACjD,MAAM,eAAe,GAAG,SAAS,CAAC,MAAO,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAoB;YAC5B,EAAE;YACF,IAAI,EAAE,YAAY,IAAI,uBAAuB,CAAC,eAAe,CAAC;YAC9D,QAAQ,EAAE,aAAa;YACvB,KAAK;YACL,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,SAAS;YACT,MAAM,EAAE,eAAe;SACvB,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAA,CACpB,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,UAAU,CAAC;YACjB,0BAA0B,GAAG,CAAC,EAAE,GAAG;YACnC,SAAS,GAAG,CAAC,IAAI,EAAE;YACnB,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAC5C,SAAS,OAAO,CAAC,eAAe,CAAC,EAAE;YACnC,mEAAmE;YACnE,sDAAsD,GAAG,CAAC,EAAE,MAAM;YAClE,sEAAsE,GAAG,CAAC,EAAE,MAAM;SAClF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAAA,CACd;IAEO,QAAQ,GAA6B;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACxF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC,8CAA8C,CAAC,CAAC;QACzF,MAAM,KAAK,GAAG,CAAC,4BAA4B,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/E,IAAI,GAAG,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACtD,IAAI,GAAG,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAAA,CACpC;IAEO,SAAS,CAAC,MAA0B,EAA4B;QACvE,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;QAC9C,IAAI,CAAC,WAAW;YAAE,OAAO,UAAU,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG;YACb,kBAAkB,GAAG,CAAC,EAAE,EAAE;YAC1B,SAAS,GAAG,CAAC,IAAI,EAAE;YACnB,UAAU,GAAG,CAAC,KAAK,EAAE;YACrB,aAAa,GAAG,CAAC,QAAQ,EAAE;YAC3B,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAC9C,SAAS,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC9B,QAAQ,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC9B,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;YACnD,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;YACnD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;YAClE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;YAC/D,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;YACrD,GAAG,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,sDAAsD,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS;YAC1G,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,mDAAmD,GAAG,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,SAAS;SAClG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAAA,CACpC;IAEO,SAAS,CAAC,MAA0B,EAA4B;QACvE,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;QAC9C,IAAI,CAAC,WAAW;YAAE,OAAO,UAAU,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC,iBAAiB,GAAG,CAAC,EAAE,+BAA+B,GAAG,CAAC,SAAS,IAAI,SAAS,qCAAqC,EAAE,IAAI,CAAC,CAAC;QAC5K,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC,iBAAiB,GAAG,CAAC,EAAE,eAAe,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1G,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;YAC1B,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;YACxB,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;QAAA,CACvB,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,mCAAmC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAAA,CAChE;IAEO,kBAAkB,GAAS;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,WAAW,IAAI,GAAG,CAAC,KAAK,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;QAC7G,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtB,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;oBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;oBACtE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,WAAW;wBAAE,SAAS;oBAChD,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;oBACrB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;oBACpB,GAAG,CAAC,SAAS,GAAG,sCAAsC,cAAc,CAAC,aAAa,CAAC,8BAA8B,CAAC;gBACnH,CAAC;YAAA,CACD,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,KAAK,KAAK,WAAW;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;IAAA,CACD;IAEO,GAAG,CAAC,GAAoB,EAAQ;QACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAC7C,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAAA,CACvB,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAAA,CAC/B;IAEO,KAAK,CAAC,IAAI,CAAC,KAAa,EAAiB;QAChD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG;YAAE,OAAO;QAC3B,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,WAAW;YAAE,OAAO;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,wGAAwG;QACxG,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO;QACR,CAAC;QACD,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,KAAK,GAAG,aAAa,GAAG,GAAG,EAAE,CAAC;YACrC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;gBACrE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;oBAAE,OAAO;gBACpD,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;gBACxB,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;gBACvB,MAAM,CAAC,SAAS,GAAG,sCAAsC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC;YAAA,CAC1F,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;gBAAE,OAAO;YACpD,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;YACzB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;YACrB,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;QAAA,CACvB,CAAC,CAAC;QACH,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO;QAC5C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;YACrE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;gBACrE,IAAI,CAAC,MAAM;oBAAE,OAAO;gBACpB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC9B,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;oBACpC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;oBACxB,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,mCAAmC,CAAC;oBACpH,OAAO;gBACR,CAAC;gBACD,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;gBACvB,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC;gBAC/B,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC;YAAA,CAC/C,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;gBACrE,IAAI,CAAC,MAAM;oBAAE,OAAO;gBACpB,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;gBACxB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC;gBAC3B,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAAA,CAC9B,CAAC,CAAC;QACJ,CAAC;IAAA,CACD;IAEO,YAAY,GAAsB;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,KAAK,CAAC;IAAA,CAClB;IAEO,UAAU,CAAC,KAAa,EAAQ;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAAA,CAC1B;IAEO,UAAU,GAAS;QAC1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAAA,CACpB;CACD;AAED,MAAM,UAAU,yBAAyB,CAAC,IAA6B,EAAuB;IAC7F,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAAA,CACrC","sourcesContent":["// @ts-nocheck\nimport { createHash, randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@ashx-j/lunr-agent\";\nimport type { ExtensionContext } from \"@ashx-j/lunr\";\nimport { writeAtomicJson } from \"../../shared/atomic-json.ts\";\nimport { formatDuration, shortenPath } from \"../../shared/formatters.ts\";\nimport { resolveCurrentSessionId } from \"../../shared/session-identity.ts\";\nimport {\n\tTEMP_ROOT_DIR,\n\ttype Details,\n\ttype ExtensionConfig,\n} from \"../../shared/types.ts\";\nimport type { SubagentParamsLike } from \"../foreground/subagent-executor.ts\";\nimport { validateExecutionAcceptance } from \"../shared/acceptance.ts\";\n\nexport const SCHEDULED_RUNS_DIR = path.join(TEMP_ROOT_DIR, \"scheduled-subagent-runs\");\nexport const SCHEDULED_RUN_ACTIONS = [\"schedule\", \"schedule-list\", \"schedule-status\", \"schedule-cancel\"] as const;\n\nconst MAX_TIMER_DELAY_MS = 2_147_483_647;\nconst DEFAULT_MAX_LATENESS_MS = 5 * 60 * 1000;\nconst DEFAULT_MAX_PENDING = 20;\n\nexport type ScheduledRunAction = typeof SCHEDULED_RUN_ACTIONS[number];\nexport type ScheduledRunState = \"scheduled\" | \"running\" | \"fired\" | \"canceled\" | \"missed\" | \"failed\";\n\ntype ScheduledRunJob = {\n\tid: string;\n\tname: string;\n\tschedule: string;\n\trunAt: number;\n\tstate: ScheduledRunState;\n\tcreatedAt: number;\n\tupdatedAt: number;\n\tcwd: string;\n\tsessionId: string;\n\tparams: SubagentParamsLike;\n\tlastRunId?: string;\n\tlastAsyncDir?: string;\n\tlastError?: string;\n\tfiredAt?: number;\n\tcanceledAt?: number;\n};\n\ntype ScheduledRunStoreData = {\n\tversion: 1;\n\tcwd: string;\n\tsessionId: string;\n\tjobs: ScheduledRunJob[];\n};\n\ntype ScheduledRunTimers = Pick<typeof globalThis, \"setTimeout\" | \"clearTimeout\">;\n\ntype ScheduledRunManagerDeps = {\n\tconfig: ExtensionConfig;\n\tlaunch(params: SubagentParamsLike, ctx: ExtensionContext, signal: AbortSignal): Promise<AgentToolResult<Details>>;\n\tstoreRoot?: string;\n\tnow?: () => number;\n\trandomId?: () => string;\n\ttimers?: ScheduledRunTimers;\n};\n\nexport function isScheduledRunAction(action: unknown): action is ScheduledRunAction {\n\treturn typeof action === \"string\" && (SCHEDULED_RUN_ACTIONS as readonly string[]).includes(action);\n}\n\nexport function scheduledRunsEnabled(config: ExtensionConfig): boolean {\n\treturn config.scheduledRuns?.enabled === true;\n}\n\nexport function scheduledRunStorePath(cwd: string, sessionId: string, root = SCHEDULED_RUNS_DIR): string {\n\tconst digest = createHash(\"sha256\").update(`${path.resolve(cwd)}\\0${sessionId}`).digest(\"hex\").slice(0, 20);\n\treturn path.join(root, `${digest}.json`);\n}\n\nexport function parseScheduledRunTime(schedule: string, now = Date.now()): number {\n\tconst trimmed = schedule.trim();\n\tconst relative = trimmed.match(/^\\+(\\d+)(s|m|h|d)$/);\n\tif (relative) {\n\t\tconst amount = Number(relative[1]);\n\t\tif (!Number.isSafeInteger(amount) || amount < 1) throw new Error(`Invalid schedule \"${schedule}\". Relative schedules must be positive, such as \"+10m\".`);\n\t\tconst unitMs = { s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 }[relative[2] as \"s\" | \"m\" | \"h\" | \"d\"];\n\t\tconst runAt = now + amount * unitMs;\n\t\tif (!Number.isSafeInteger(runAt) || Number.isNaN(new Date(runAt).getTime())) throw new Error(`Invalid schedule \"${schedule}\". Relative delay is too large.`);\n\t\treturn runAt;\n\t}\n\tif (/^\\d{4}-\\d{2}-\\d{2}T/.test(trimmed)) {\n\t\tconst iso = trimmed.match(/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2})$/);\n\t\tif (!iso) throw new Error(`Invalid schedule \"${schedule}\". Absolute ISO timestamps must include a timezone, such as \"2030-01-01T09:00:00Z\".`);\n\t\tconst year = Number(iso[1]);\n\t\tconst month = Number(iso[2]);\n\t\tconst day = Number(iso[3]);\n\t\tconst hour = Number(iso[4]);\n\t\tconst minute = Number(iso[5]);\n\t\tconst second = iso[6] === undefined ? 0 : Number(iso[6]);\n\t\tconst offset = iso[7]!;\n\t\tconst offsetHour = offset === \"Z\" ? 0 : Number(offset.slice(1, 3));\n\t\tconst offsetMinute = offset === \"Z\" ? 0 : Number(offset.slice(4, 6));\n\t\tconst daysInMonth = month >= 1 && month <= 12 ? new Date(Date.UTC(year, month, 0)).getUTCDate() : 0;\n\t\tif (month < 1 || month > 12 || day < 1 || day > daysInMonth || hour > 23 || minute > 59 || second > 59 || offsetHour > 23 || offsetMinute > 59) {\n\t\t\tthrow new Error(`Invalid schedule \"${schedule}\". Use a valid future ISO timestamp.`);\n\t\t}\n\t\tconst parsed = new Date(trimmed).getTime();\n\t\tif (!Number.isNaN(parsed)) {\n\t\t\tif (parsed <= now) throw new Error(`Scheduled time ${new Date(parsed).toISOString()} is in the past.`);\n\t\t\treturn parsed;\n\t\t}\n\t}\n\tthrow new Error(`Invalid schedule \"${schedule}\". Use a one-shot relative delay like \"+10m\" or a future ISO timestamp with timezone.`);\n}\n\nfunction readStoreData(filePath: string, cwd: string, sessionId: string): ScheduledRunStoreData {\n\tif (!fs.existsSync(filePath)) return { version: 1, cwd, sessionId, jobs: [] };\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow new Error(`Failed to parse scheduled subagent store '${filePath}': ${message}`, { cause: error instanceof Error ? error : undefined });\n\t}\n\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\tthrow new Error(`Scheduled subagent store '${filePath}' must be a JSON object.`);\n\t}\n\tconst data = parsed as Partial<ScheduledRunStoreData>;\n\tif (data.version !== 1) throw new Error(`Unsupported scheduled subagent store version in '${filePath}'.`);\n\tif (!Array.isArray(data.jobs)) throw new Error(`Scheduled subagent store '${filePath}' must contain a jobs array.`);\n\tconst jobs: ScheduledRunJob[] = [];\n\tconst validStates = new Set<ScheduledRunState>([\"scheduled\", \"running\", \"fired\", \"canceled\", \"missed\", \"failed\"]);\n\tfor (const [index, job] of data.jobs.entries()) {\n\t\tif (!job || typeof job !== \"object\" || Array.isArray(job)) throw new Error(`Scheduled subagent store '${filePath}' job ${index} must be an object.`);\n\t\tconst candidate = job as Partial<ScheduledRunJob>;\n\t\tif (typeof candidate.id !== \"string\" || typeof candidate.name !== \"string\" || typeof candidate.schedule !== \"string\" || typeof candidate.cwd !== \"string\" || typeof candidate.sessionId !== \"string\") {\n\t\t\tthrow new Error(`Scheduled subagent store '${filePath}' job ${index} has invalid string fields.`);\n\t\t}\n\t\tconst timestamps = [candidate.runAt, candidate.createdAt, candidate.updatedAt];\n\t\tif (timestamps.some((value) => typeof value !== \"number\" || !Number.isFinite(value) || Number.isNaN(new Date(value).getTime()))) {\n\t\t\tthrow new Error(`Scheduled subagent store '${filePath}' job ${index} has invalid timestamps.`);\n\t\t}\n\t\tif (!candidate.state || !validStates.has(candidate.state)) throw new Error(`Scheduled subagent store '${filePath}' job ${index} has invalid state.`);\n\t\tif (!candidate.params || typeof candidate.params !== \"object\" || Array.isArray(candidate.params)) throw new Error(`Scheduled subagent store '${filePath}' job ${index} has invalid params.`);\n\t\tjobs.push(candidate as ScheduledRunJob);\n\t}\n\treturn {\n\t\tversion: 1,\n\t\tcwd: typeof data.cwd === \"string\" ? data.cwd : cwd,\n\t\tsessionId: typeof data.sessionId === \"string\" ? data.sessionId : sessionId,\n\t\tjobs,\n\t};\n}\n\nclass ScheduledRunStore {\n\tprivate readonly filePath: string;\n\tprivate readonly cwd: string;\n\tprivate readonly sessionId: string;\n\n\tconstructor(filePath: string, cwd: string, sessionId: string) {\n\t\tthis.filePath = filePath;\n\t\tthis.cwd = cwd;\n\t\tthis.sessionId = sessionId;\n\t}\n\n\tlist(): ScheduledRunJob[] {\n\t\treturn readStoreData(this.filePath, this.cwd, this.sessionId).jobs;\n\t}\n\n\tget(id: string): ScheduledRunJob | undefined {\n\t\treturn this.list().find((job) => job.id === id);\n\t}\n\n\tmutate<T>(fn: (data: ScheduledRunStoreData) => T): T {\n\t\tconst data = readStoreData(this.filePath, this.cwd, this.sessionId);\n\t\tconst result = fn(data);\n\t\twriteAtomicJson(this.filePath, data);\n\t\treturn result;\n\t}\n}\n\nfunction resolveMaxLatenessMs(config: ExtensionConfig): number {\n\tconst value = config.scheduledRuns?.maxLatenessMs;\n\treturn Number.isInteger(value) && value >= 0 ? value : DEFAULT_MAX_LATENESS_MS;\n}\n\nfunction resolveMaxPending(config: ExtensionConfig): number {\n\tconst value = config.scheduledRuns?.maxPending;\n\treturn Number.isInteger(value) && value >= 1 ? value : DEFAULT_MAX_PENDING;\n}\n\nfunction terminalState(state: ScheduledRunState): boolean {\n\treturn state === \"fired\" || state === \"canceled\" || state === \"missed\" || state === \"failed\";\n}\n\nfunction jobMode(params: SubagentParamsLike): Details[\"mode\"] {\n\tif ((params.chain?.length ?? 0) > 0) return \"chain\";\n\tif ((params.tasks?.length ?? 0) > 0) return \"parallel\";\n\treturn \"single\";\n}\n\nfunction describeScheduledTarget(params: SubagentParamsLike): string {\n\tif ((params.chain?.length ?? 0) > 0) return `chain (${params.chain!.length})`;\n\tif ((params.tasks?.length ?? 0) > 0) return `parallel (${params.tasks!.length})`;\n\treturn params.agent ? `agent ${params.agent}` : \"subagent run\";\n}\n\nfunction textResult(text: string, isError = false): AgentToolResult<Details> {\n\treturn {\n\t\tcontent: [{ type: \"text\", text }],\n\t\t...(isError ? { isError: true } : {}),\n\t\tdetails: { mode: \"management\", results: [] },\n\t};\n}\n\nfunction resolveJobById(jobs: ScheduledRunJob[], requestedId: string): ScheduledRunJob {\n\tconst exact = jobs.find((job) => job.id === requestedId);\n\tif (exact) return exact;\n\tconst matches = jobs.filter((job) => job.id.startsWith(requestedId));\n\tif (matches.length === 1) return matches[0]!;\n\tif (matches.length > 1) throw new Error(`Ambiguous scheduled run id prefix '${requestedId}' matched: ${matches.map((job) => job.id).join(\", \")}. Provide a longer id.`);\n\tthrow new Error(`Scheduled run '${requestedId}' not found.`);\n}\n\nfunction sanitizeScheduledParams(params: SubagentParamsLike): { params?: SubagentParamsLike; error?: string } {\n\tconst hasChain = (params.chain?.length ?? 0) > 0;\n\tconst hasTasks = (params.tasks?.length ?? 0) > 0;\n\tconst hasSingle = !hasChain && !hasTasks && Boolean(params.agent);\n\tif (Number(hasChain) + Number(hasTasks) + Number(hasSingle) !== 1) {\n\t\treturn { error: \"action='schedule' requires exactly one execution mode: agent, tasks, or chain.\" };\n\t}\n\tif (!params.schedule?.trim()) return { error: \"action='schedule' requires schedule, such as '+10m' or a future ISO timestamp.\" };\n\tif (params.context === \"fork\") return { error: \"Scheduled subagent runs require fresh context. Forked parent-session context is not safe at fire time.\" };\n\tif (params.async === false) return { error: \"Scheduled subagent runs are always async; omit async or set async: true.\" };\n\tif (params.clarify === true) return { error: \"Scheduled subagent runs cannot open clarify UI; omit clarify or set clarify: false.\" };\n\tconst acceptanceErrors = validateExecutionAcceptance(params);\n\tif (acceptanceErrors.length > 0) return { error: acceptanceErrors.join(\" \") };\n\n\tconst {\n\t\taction: _action,\n\t\tid: _id,\n\t\trunId: _runId,\n\t\tdir: _dir,\n\t\tindex: _index,\n\t\tmessage: _message,\n\t\tchainName: _chainName,\n\t\tconfig: _config,\n\t\tschedule: _schedule,\n\t\tscheduleName: _scheduleName,\n\t\t...executionParams\n\t} = params;\n\treturn { params: { ...executionParams, async: true, clarify: false, context: \"fresh\" } };\n}\n\nexport class ScheduledRunManager {\n\tprivate store: ScheduledRunStore | undefined;\n\tprivate ctx: ExtensionContext | undefined;\n\tprivate timers = new Map<string, ReturnType<typeof setTimeout>>();\n\tprivate readonly storeRoot: string;\n\tprivate readonly now: () => number;\n\tprivate readonly randomId: () => string;\n\tprivate readonly timersApi: ScheduledRunTimers;\n\tprivate readonly deps: ScheduledRunManagerDeps;\n\n\tconstructor(deps: ScheduledRunManagerDeps) {\n\t\tthis.deps = deps;\n\t\tthis.storeRoot = deps.storeRoot ?? SCHEDULED_RUNS_DIR;\n\t\tthis.now = deps.now ?? Date.now;\n\t\tthis.randomId = deps.randomId ?? (() => randomUUID().slice(0, 8));\n\t\tthis.timersApi = deps.timers ?? globalThis;\n\t}\n\n\tbindSession(ctx: ExtensionContext): void {\n\t\tthis.stopTimers();\n\t\tthis.ctx = ctx;\n\t\tif (!scheduledRunsEnabled(this.deps.config)) {\n\t\t\tthis.store = undefined;\n\t\t\treturn;\n\t\t}\n\t\tconst sessionId = resolveCurrentSessionId(ctx.sessionManager);\n\t\tthis.store = new ScheduledRunStore(scheduledRunStorePath(ctx.cwd, sessionId, this.storeRoot), ctx.cwd, sessionId);\n\t\tthis.rearmScheduledJobs();\n\t}\n\n\tstop(): void {\n\t\tthis.stopTimers();\n\t\tthis.store = undefined;\n\t\tthis.ctx = undefined;\n\t}\n\n\tasync handleToolCall(params: SubagentParamsLike, ctx: ExtensionContext): Promise<AgentToolResult<Details>> {\n\t\tthis.ctx = ctx;\n\t\ttry {\n\t\t\tif (!scheduledRunsEnabled(this.deps.config)) {\n\t\t\t\treturn textResult(\"Scheduled subagent runs are disabled. Set { \\\"scheduledRuns\\\": { \\\"enabled\\\": true } } in ~/.pi/agent/extensions/subagent/config.json, then reload Pi. Schedule only explicit delayed runs the user asked for.\", true);\n\t\t\t}\n\t\t\tif (!this.store) this.bindSession(ctx);\n\t\t\tif (!this.store) return textResult(\"Scheduled subagent store is unavailable for this session.\", true);\n\t\t\tswitch (params.action) {\n\t\t\t\tcase \"schedule\": return this.createJob(params, ctx);\n\t\t\t\tcase \"schedule-list\": return this.listJobs();\n\t\t\t\tcase \"schedule-status\": return this.statusJob(params);\n\t\t\t\tcase \"schedule-cancel\": return this.cancelJob(params);\n\t\t\t\tdefault: return textResult(`Unknown scheduled-run action: ${params.action}`, true);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treturn textResult(message, true);\n\t\t}\n\t}\n\n\tprivate createJob(params: SubagentParamsLike, ctx: ExtensionContext): AgentToolResult<Details> {\n\t\tconst store = this.requireStore();\n\t\tconst sanitized = sanitizeScheduledParams(params);\n\t\tif (sanitized.error) return textResult(sanitized.error, true);\n\t\tconst scheduleInput = params.schedule!.trim();\n\t\tconst runAt = parseScheduledRunTime(scheduleInput, this.now());\n\t\tconst pendingCount = store.list().filter((job) => job.state === \"scheduled\" || job.state === \"running\").length;\n\t\tconst maxPending = resolveMaxPending(this.deps.config);\n\t\tif (pendingCount >= maxPending) return textResult(`Scheduled subagent limit reached (${pendingCount}/${maxPending} pending or running). Cancel an existing scheduled run before adding another.`, true);\n\t\tconst id = this.randomId();\n\t\tconst sessionId = resolveCurrentSessionId(ctx.sessionManager);\n\t\tconst scheduleName = params.scheduleName?.trim();\n\t\tconst executionParams = sanitized.params!;\n\t\tconst now = this.now();\n\t\tconst job: ScheduledRunJob = {\n\t\t\tid,\n\t\t\tname: scheduleName || describeScheduledTarget(executionParams),\n\t\t\tschedule: scheduleInput,\n\t\t\trunAt,\n\t\t\tstate: \"scheduled\",\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t\tcwd: ctx.cwd,\n\t\t\tsessionId,\n\t\t\tparams: executionParams,\n\t\t};\n\t\tstore.mutate((data) => {\n\t\t\tdata.jobs.push(job);\n\t\t});\n\t\tthis.arm(job);\n\t\treturn textResult([\n\t\t\t`Scheduled subagent run ${job.id}.`,\n\t\t\t`Name: ${job.name}`,\n\t\t\t`When: ${new Date(job.runAt).toISOString()}`,\n\t\t\t`Mode: ${jobMode(executionParams)}`,\n\t\t\t`Context: fresh (scheduled runs never fork parent-session context)`,\n\t\t\t`Status: subagent({ action: \"schedule-status\", id: \"${job.id}\" })`,\n\t\t\t`Cancel before it fires: subagent({ action: \"schedule-cancel\", id: \"${job.id}\" })`,\n\t\t].join(\"\\n\"));\n\t}\n\n\tprivate listJobs(): AgentToolResult<Details> {\n\t\tconst jobs = this.requireStore().list().sort((left, right) => left.runAt - right.runAt);\n\t\tif (jobs.length === 0) return textResult(\"No scheduled subagent runs for this session.\");\n\t\tconst lines = [`Scheduled subagent runs: ${jobs.length}`, \"\"];\n\t\tfor (const job of jobs) {\n\t\t\tconst parts = [job.id, job.state, new Date(job.runAt).toISOString(), job.name];\n\t\t\tif (job.lastRunId) parts.push(`run ${job.lastRunId}`);\n\t\t\tif (job.lastError) parts.push(`error: ${job.lastError}`);\n\t\t\tlines.push(`- ${parts.join(\" | \")}`);\n\t\t}\n\t\treturn textResult(lines.join(\"\\n\"));\n\t}\n\n\tprivate statusJob(params: SubagentParamsLike): AgentToolResult<Details> {\n\t\tconst requestedId = params.id ?? params.runId;\n\t\tif (!requestedId) return textResult(\"action='schedule-status' requires id.\", true);\n\t\tconst job = resolveJobById(this.requireStore().list(), requestedId);\n\t\tconst lines = [\n\t\t\t`Scheduled run: ${job.id}`,\n\t\t\t`Name: ${job.name}`,\n\t\t\t`State: ${job.state}`,\n\t\t\t`Schedule: ${job.schedule}`,\n\t\t\t`Run at: ${new Date(job.runAt).toISOString()}`,\n\t\t\t`Mode: ${jobMode(job.params)}`,\n\t\t\t`CWD: ${shortenPath(job.cwd)}`,\n\t\t\t`Created: ${new Date(job.createdAt).toISOString()}`,\n\t\t\t`Updated: ${new Date(job.updatedAt).toISOString()}`,\n\t\t\tjob.lastRunId ? `Launched async run: ${job.lastRunId}` : undefined,\n\t\t\tjob.lastAsyncDir ? `Async dir: ${job.lastAsyncDir}` : undefined,\n\t\t\tjob.lastError ? `Error: ${job.lastError}` : undefined,\n\t\t\tjob.state === \"scheduled\" ? `Cancel: subagent({ action: \"schedule-cancel\", id: \"${job.id}\" })` : undefined,\n\t\t\tjob.lastRunId ? `Async status: subagent({ action: \"status\", id: \"${job.lastRunId}\" })` : undefined,\n\t\t].filter((line): line is string => Boolean(line));\n\t\treturn textResult(lines.join(\"\\n\"));\n\t}\n\n\tprivate cancelJob(params: SubagentParamsLike): AgentToolResult<Details> {\n\t\tconst requestedId = params.id ?? params.runId;\n\t\tif (!requestedId) return textResult(\"action='schedule-cancel' requires id.\", true);\n\t\tconst store = this.requireStore();\n\t\tconst job = resolveJobById(store.list(), requestedId);\n\t\tif (job.state === \"running\") return textResult(`Scheduled run ${job.id} already launched async run ${job.lastRunId ?? \"unknown\"}; interrupt that async run instead.`, true);\n\t\tif (terminalState(job.state)) return textResult(`Scheduled run ${job.id} is already ${job.state}.`, true);\n\t\tconst now = this.now();\n\t\tthis.clearTimer(job.id);\n\t\tstore.mutate((data) => {\n\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === job.id);\n\t\t\tif (!stored) return;\n\t\t\tstored.state = \"canceled\";\n\t\t\tstored.canceledAt = now;\n\t\t\tstored.updatedAt = now;\n\t\t});\n\t\treturn textResult(`Canceled scheduled subagent run ${job.id}.`);\n\t}\n\n\tprivate rearmScheduledJobs(): void {\n\t\tconst store = this.requireStore();\n\t\tconst now = this.now();\n\t\tconst maxLatenessMs = resolveMaxLatenessMs(this.deps.config);\n\t\tconst dueToMiss = store.list().filter((job) => job.state === \"scheduled\" && job.runAt + maxLatenessMs < now);\n\t\tif (dueToMiss.length > 0) {\n\t\t\tstore.mutate((data) => {\n\t\t\t\tfor (const missed of dueToMiss) {\n\t\t\t\t\tconst job = data.jobs.find((candidate) => candidate.id === missed.id);\n\t\t\t\t\tif (!job || job.state !== \"scheduled\") continue;\n\t\t\t\t\tjob.state = \"missed\";\n\t\t\t\t\tjob.updatedAt = now;\n\t\t\t\t\tjob.lastError = `Missed scheduled time by more than ${formatDuration(maxLatenessMs)} while Pi was not available.`;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tfor (const job of store.list()) {\n\t\t\tif (job.state === \"scheduled\") this.arm(job);\n\t\t}\n\t}\n\n\tprivate arm(job: ScheduledRunJob): void {\n\t\tthis.clearTimer(job.id);\n\t\tconst delayMs = Math.max(0, job.runAt - this.now());\n\t\tconst timer = this.timersApi.setTimeout(() => {\n\t\t\tvoid this.fire(job.id);\n\t\t}, Math.min(delayMs, MAX_TIMER_DELAY_MS));\n\t\ttimer.unref?.();\n\t\tthis.timers.set(job.id, timer);\n\t}\n\n\tprivate async fire(jobId: string): Promise<void> {\n\t\tthis.clearTimer(jobId);\n\t\tconst store = this.store;\n\t\tconst ctx = this.ctx;\n\t\tif (!store || !ctx) return;\n\t\tlet job = store.get(jobId);\n\t\tif (!job || job.state !== \"scheduled\") return;\n\t\tconst now = this.now();\n\t\t// A timer capped at MAX_TIMER_DELAY_MS may fire before runAt for far-future schedules; re-arm and wait.\n\t\tif (now < job.runAt) {\n\t\t\tthis.arm(job);\n\t\t\treturn;\n\t\t}\n\t\tconst maxLatenessMs = resolveMaxLatenessMs(this.deps.config);\n\t\tif (job.runAt + maxLatenessMs < now) {\n\t\t\tstore.mutate((data) => {\n\t\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === jobId);\n\t\t\t\tif (!stored || stored.state !== \"scheduled\") return;\n\t\t\t\tstored.state = \"missed\";\n\t\t\t\tstored.updatedAt = now;\n\t\t\t\tstored.lastError = `Missed scheduled time by more than ${formatDuration(maxLatenessMs)}.`;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tstore.mutate((data) => {\n\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === jobId);\n\t\t\tif (!stored || stored.state !== \"scheduled\") return;\n\t\t\tstored.state = \"running\";\n\t\t\tstored.firedAt = now;\n\t\t\tstored.updatedAt = now;\n\t\t});\n\t\tjob = store.get(jobId);\n\t\tif (!job || job.state !== \"running\") return;\n\t\tconst controller = new AbortController();\n\t\ttry {\n\t\t\tconst result = await this.deps.launch(job.params, ctx, controller.signal);\n\t\t\tconst launchRunId = result.details?.asyncId ?? result.details?.runId;\n\t\t\tstore.mutate((data) => {\n\t\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === jobId);\n\t\t\t\tif (!stored) return;\n\t\t\t\tstored.updatedAt = this.now();\n\t\t\t\tif (result.isError || !launchRunId) {\n\t\t\t\t\tstored.state = \"failed\";\n\t\t\t\t\tstored.lastError = result.content.find((item) => item.type === \"text\")?.text ?? \"Scheduled subagent launch failed.\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstored.state = \"fired\";\n\t\t\t\tstored.lastRunId = launchRunId;\n\t\t\t\tstored.lastAsyncDir = result.details?.asyncDir;\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tstore.mutate((data) => {\n\t\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === jobId);\n\t\t\t\tif (!stored) return;\n\t\t\t\tstored.state = \"failed\";\n\t\t\t\tstored.lastError = message;\n\t\t\t\tstored.updatedAt = this.now();\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate requireStore(): ScheduledRunStore {\n\t\tif (!this.store) throw new Error(\"Scheduled subagent store is not bound to a session.\");\n\t\treturn this.store;\n\t}\n\n\tprivate clearTimer(jobId: string): void {\n\t\tconst timer = this.timers.get(jobId);\n\t\tif (!timer) return;\n\t\tthis.timersApi.clearTimeout(timer);\n\t\tthis.timers.delete(jobId);\n\t}\n\n\tprivate stopTimers(): void {\n\t\tfor (const timer of this.timers.values()) this.timersApi.clearTimeout(timer);\n\t\tthis.timers.clear();\n\t}\n}\n\nexport function createScheduledRunManager(deps: ScheduledRunManagerDeps): ScheduledRunManager {\n\treturn new ScheduledRunManager(deps);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"scheduled-runs.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { createHash, randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@ashx-j/lunr-agent\";\nimport type { ExtensionContext } from \"@ashx-j/lunr\";\nimport { writeAtomicJson } from \"../../shared/atomic-json.ts\";\nimport { formatDuration, shortenPath } from \"../../shared/formatters.ts\";\nimport { resolveCurrentSessionId } from \"../../shared/session-identity.ts\";\nimport {\n\tTEMP_ROOT_DIR,\n\ttype Details,\n\ttype ExtensionConfig,\n} from \"../../shared/types.ts\";\nimport type { SubagentParamsLike } from \"../foreground/subagent-executor.ts\";\nimport { validateExecutionAcceptance } from \"../shared/acceptance.ts\";\n\nexport const SCHEDULED_RUNS_DIR = path.join(TEMP_ROOT_DIR, \"scheduled-subagent-runs\");\nexport const SCHEDULED_RUN_ACTIONS = [\"schedule\", \"schedule-list\", \"schedule-status\", \"schedule-cancel\"] as const;\n\nconst MAX_TIMER_DELAY_MS = 2_147_483_647;\nconst DEFAULT_MAX_LATENESS_MS = 5 * 60 * 1000;\nconst DEFAULT_MAX_PENDING = 20;\n\nexport type ScheduledRunAction = typeof SCHEDULED_RUN_ACTIONS[number];\nexport type ScheduledRunState = \"scheduled\" | \"running\" | \"fired\" | \"canceled\" | \"missed\" | \"failed\";\n\ntype ScheduledRunJob = {\n\tid: string;\n\tname: string;\n\tschedule: string;\n\trunAt: number;\n\tstate: ScheduledRunState;\n\tcreatedAt: number;\n\tupdatedAt: number;\n\tcwd: string;\n\tsessionId: string;\n\tparams: SubagentParamsLike;\n\tlastRunId?: string;\n\tlastAsyncDir?: string;\n\tlastError?: string;\n\tfiredAt?: number;\n\tcanceledAt?: number;\n};\n\ntype ScheduledRunStoreData = {\n\tversion: 1;\n\tcwd: string;\n\tsessionId: string;\n\tjobs: ScheduledRunJob[];\n};\n\ntype ScheduledRunTimers = Pick<typeof globalThis, \"setTimeout\" | \"clearTimeout\">;\n\ntype ScheduledRunManagerDeps = {\n\tconfig: ExtensionConfig;\n\tlaunch(params: SubagentParamsLike, ctx: ExtensionContext, signal: AbortSignal): Promise<AgentToolResult<Details>>;\n\tstoreRoot?: string;\n\tnow?: () => number;\n\trandomId?: () => string;\n\ttimers?: ScheduledRunTimers;\n};\n\nexport function isScheduledRunAction(action: unknown): action is ScheduledRunAction {\n\treturn typeof action === \"string\" && (SCHEDULED_RUN_ACTIONS as readonly string[]).includes(action);\n}\n\nexport function scheduledRunsEnabled(config: ExtensionConfig): boolean {\n\treturn config.scheduledRuns?.enabled === true;\n}\n\nexport function scheduledRunStorePath(cwd: string, sessionId: string, root = SCHEDULED_RUNS_DIR): string {\n\tconst digest = createHash(\"sha256\").update(`${path.resolve(cwd)}\\0${sessionId}`).digest(\"hex\").slice(0, 20);\n\treturn path.join(root, `${digest}.json`);\n}\n\nexport function parseScheduledRunTime(schedule: string, now = Date.now()): number {\n\tconst trimmed = schedule.trim();\n\tconst relative = trimmed.match(/^\\+(\\d+)(s|m|h|d)$/);\n\tif (relative) {\n\t\tconst amount = Number(relative[1]);\n\t\tif (!Number.isSafeInteger(amount) || amount < 1) throw new Error(`Invalid schedule \"${schedule}\". Relative schedules must be positive, such as \"+10m\".`);\n\t\tconst unitMs = { s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 }[relative[2] as \"s\" | \"m\" | \"h\" | \"d\"];\n\t\tconst runAt = now + amount * unitMs;\n\t\tif (!Number.isSafeInteger(runAt) || Number.isNaN(new Date(runAt).getTime())) throw new Error(`Invalid schedule \"${schedule}\". Relative delay is too large.`);\n\t\treturn runAt;\n\t}\n\tif (/^\\d{4}-\\d{2}-\\d{2}T/.test(trimmed)) {\n\t\tconst iso = trimmed.match(/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2})$/);\n\t\tif (!iso) throw new Error(`Invalid schedule \"${schedule}\". Absolute ISO timestamps must include a timezone, such as \"2030-01-01T09:00:00Z\".`);\n\t\tconst year = Number(iso[1]);\n\t\tconst month = Number(iso[2]);\n\t\tconst day = Number(iso[3]);\n\t\tconst hour = Number(iso[4]);\n\t\tconst minute = Number(iso[5]);\n\t\tconst second = iso[6] === undefined ? 0 : Number(iso[6]);\n\t\tconst offset = iso[7]!;\n\t\tconst offsetHour = offset === \"Z\" ? 0 : Number(offset.slice(1, 3));\n\t\tconst offsetMinute = offset === \"Z\" ? 0 : Number(offset.slice(4, 6));\n\t\tconst daysInMonth = month >= 1 && month <= 12 ? new Date(Date.UTC(year, month, 0)).getUTCDate() : 0;\n\t\tif (month < 1 || month > 12 || day < 1 || day > daysInMonth || hour > 23 || minute > 59 || second > 59 || offsetHour > 23 || offsetMinute > 59) {\n\t\t\tthrow new Error(`Invalid schedule \"${schedule}\". Use a valid future ISO timestamp.`);\n\t\t}\n\t\tconst parsed = new Date(trimmed).getTime();\n\t\tif (!Number.isNaN(parsed)) {\n\t\t\tif (parsed <= now) throw new Error(`Scheduled time ${new Date(parsed).toISOString()} is in the past.`);\n\t\t\treturn parsed;\n\t\t}\n\t}\n\tthrow new Error(`Invalid schedule \"${schedule}\". Use a one-shot relative delay like \"+10m\" or a future ISO timestamp with timezone.`);\n}\n\nfunction readStoreData(filePath: string, cwd: string, sessionId: string): ScheduledRunStoreData {\n\tif (!fs.existsSync(filePath)) return { version: 1, cwd, sessionId, jobs: [] };\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow new Error(`Failed to parse scheduled subagent store '${filePath}': ${message}`, { cause: error instanceof Error ? error : undefined });\n\t}\n\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\tthrow new Error(`Scheduled subagent store '${filePath}' must be a JSON object.`);\n\t}\n\tconst data = parsed as Partial<ScheduledRunStoreData>;\n\tif (data.version !== 1) throw new Error(`Unsupported scheduled subagent store version in '${filePath}'.`);\n\tif (!Array.isArray(data.jobs)) throw new Error(`Scheduled subagent store '${filePath}' must contain a jobs array.`);\n\tconst jobs: ScheduledRunJob[] = [];\n\tconst validStates = new Set<ScheduledRunState>([\"scheduled\", \"running\", \"fired\", \"canceled\", \"missed\", \"failed\"]);\n\tfor (const [index, job] of data.jobs.entries()) {\n\t\tif (!job || typeof job !== \"object\" || Array.isArray(job)) throw new Error(`Scheduled subagent store '${filePath}' job ${index} must be an object.`);\n\t\tconst candidate = job as Partial<ScheduledRunJob>;\n\t\tif (typeof candidate.id !== \"string\" || typeof candidate.name !== \"string\" || typeof candidate.schedule !== \"string\" || typeof candidate.cwd !== \"string\" || typeof candidate.sessionId !== \"string\") {\n\t\t\tthrow new Error(`Scheduled subagent store '${filePath}' job ${index} has invalid string fields.`);\n\t\t}\n\t\tconst timestamps = [candidate.runAt, candidate.createdAt, candidate.updatedAt];\n\t\tif (timestamps.some((value) => typeof value !== \"number\" || !Number.isFinite(value) || Number.isNaN(new Date(value).getTime()))) {\n\t\t\tthrow new Error(`Scheduled subagent store '${filePath}' job ${index} has invalid timestamps.`);\n\t\t}\n\t\tif (!candidate.state || !validStates.has(candidate.state)) throw new Error(`Scheduled subagent store '${filePath}' job ${index} has invalid state.`);\n\t\tif (!candidate.params || typeof candidate.params !== \"object\" || Array.isArray(candidate.params)) throw new Error(`Scheduled subagent store '${filePath}' job ${index} has invalid params.`);\n\t\tjobs.push(candidate as ScheduledRunJob);\n\t}\n\treturn {\n\t\tversion: 1,\n\t\tcwd: typeof data.cwd === \"string\" ? data.cwd : cwd,\n\t\tsessionId: typeof data.sessionId === \"string\" ? data.sessionId : sessionId,\n\t\tjobs,\n\t};\n}\n\nclass ScheduledRunStore {\n\tprivate readonly filePath: string;\n\tprivate readonly cwd: string;\n\tprivate readonly sessionId: string;\n\n\tconstructor(filePath: string, cwd: string, sessionId: string) {\n\t\tthis.filePath = filePath;\n\t\tthis.cwd = cwd;\n\t\tthis.sessionId = sessionId;\n\t}\n\n\tlist(): ScheduledRunJob[] {\n\t\treturn readStoreData(this.filePath, this.cwd, this.sessionId).jobs;\n\t}\n\n\tget(id: string): ScheduledRunJob | undefined {\n\t\treturn this.list().find((job) => job.id === id);\n\t}\n\n\tmutate<T>(fn: (data: ScheduledRunStoreData) => T): T {\n\t\tconst data = readStoreData(this.filePath, this.cwd, this.sessionId);\n\t\tconst result = fn(data);\n\t\twriteAtomicJson(this.filePath, data);\n\t\treturn result;\n\t}\n}\n\nfunction resolveMaxLatenessMs(config: ExtensionConfig): number {\n\tconst value = config.scheduledRuns?.maxLatenessMs;\n\treturn Number.isInteger(value) && value >= 0 ? value : DEFAULT_MAX_LATENESS_MS;\n}\n\nfunction resolveMaxPending(config: ExtensionConfig): number {\n\tconst value = config.scheduledRuns?.maxPending;\n\treturn Number.isInteger(value) && value >= 1 ? value : DEFAULT_MAX_PENDING;\n}\n\nfunction terminalState(state: ScheduledRunState): boolean {\n\treturn state === \"fired\" || state === \"canceled\" || state === \"missed\" || state === \"failed\";\n}\n\nfunction jobMode(params: SubagentParamsLike): Details[\"mode\"] {\n\tif ((params.chain?.length ?? 0) > 0) return \"chain\";\n\tif ((params.tasks?.length ?? 0) > 0) return \"parallel\";\n\treturn \"single\";\n}\n\nfunction describeScheduledTarget(params: SubagentParamsLike): string {\n\tif ((params.chain?.length ?? 0) > 0) return `chain (${params.chain!.length})`;\n\tif ((params.tasks?.length ?? 0) > 0) return `parallel (${params.tasks!.length})`;\n\treturn params.agent ? `agent ${params.agent}` : \"subagent run\";\n}\n\nfunction textResult(text: string, isError = false): AgentToolResult<Details> {\n\treturn {\n\t\tcontent: [{ type: \"text\", text }],\n\t\t...(isError ? { isError: true } : {}),\n\t\tdetails: { mode: \"management\", results: [] },\n\t};\n}\n\nfunction resolveJobById(jobs: ScheduledRunJob[], requestedId: string): ScheduledRunJob {\n\tconst exact = jobs.find((job) => job.id === requestedId);\n\tif (exact) return exact;\n\tconst matches = jobs.filter((job) => job.id.startsWith(requestedId));\n\tif (matches.length === 1) return matches[0]!;\n\tif (matches.length > 1) throw new Error(`Ambiguous scheduled run id prefix '${requestedId}' matched: ${matches.map((job) => job.id).join(\", \")}. Provide a longer id.`);\n\tthrow new Error(`Scheduled run '${requestedId}' not found.`);\n}\n\nexport function sanitizeScheduledParams(params: SubagentParamsLike): { params?: SubagentParamsLike; error?: string } {\n\tconst hasChain = (params.chain?.length ?? 0) > 0;\n\tconst hasTasks = (params.tasks?.length ?? 0) > 0;\n\tconst hasSingle = !hasChain && !hasTasks && Boolean(params.task);\n\tif (Number(hasChain) + Number(hasTasks) + Number(hasSingle) !== 1) {\n\t\treturn { error: \"action='schedule' requires exactly one execution mode: {task, description, permissions?}, tasks, or chain.\" };\n\t}\n\tif (!params.schedule?.trim()) return { error: \"action='schedule' requires schedule, such as '+10m' or a future ISO timestamp.\" };\n\tif (params.context === \"fork\") return { error: \"Scheduled subagent runs require fresh context. Forked parent-session context is not safe at fire time.\" };\n\tif (params.async === false) return { error: \"Scheduled subagent runs are always async; omit async or set async: true.\" };\n\tif (params.clarify === true) return { error: \"Scheduled subagent runs cannot open clarify UI; omit clarify or set clarify: false.\" };\n\tconst acceptanceErrors = validateExecutionAcceptance(params);\n\tif (acceptanceErrors.length > 0) return { error: acceptanceErrors.join(\" \") };\n\n\tconst {\n\t\taction: _action,\n\t\tid: _id,\n\t\trunId: _runId,\n\t\tdir: _dir,\n\t\tindex: _index,\n\t\tmessage: _message,\n\t\tschedule: _schedule,\n\t\tscheduleName: _scheduleName,\n\t\t...executionParams\n\t} = params;\n\treturn { params: { ...executionParams, async: true, clarify: false, context: \"fresh\" } };\n}\n\nexport class ScheduledRunManager {\n\tprivate store: ScheduledRunStore | undefined;\n\tprivate ctx: ExtensionContext | undefined;\n\tprivate timers = new Map<string, ReturnType<typeof setTimeout>>();\n\tprivate readonly storeRoot: string;\n\tprivate readonly now: () => number;\n\tprivate readonly randomId: () => string;\n\tprivate readonly timersApi: ScheduledRunTimers;\n\tprivate readonly deps: ScheduledRunManagerDeps;\n\n\tconstructor(deps: ScheduledRunManagerDeps) {\n\t\tthis.deps = deps;\n\t\tthis.storeRoot = deps.storeRoot ?? SCHEDULED_RUNS_DIR;\n\t\tthis.now = deps.now ?? Date.now;\n\t\tthis.randomId = deps.randomId ?? (() => randomUUID().slice(0, 8));\n\t\tthis.timersApi = deps.timers ?? globalThis;\n\t}\n\n\tbindSession(ctx: ExtensionContext): void {\n\t\tthis.stopTimers();\n\t\tthis.ctx = ctx;\n\t\tif (!scheduledRunsEnabled(this.deps.config)) {\n\t\t\tthis.store = undefined;\n\t\t\treturn;\n\t\t}\n\t\tconst sessionId = resolveCurrentSessionId(ctx.sessionManager);\n\t\tthis.store = new ScheduledRunStore(scheduledRunStorePath(ctx.cwd, sessionId, this.storeRoot), ctx.cwd, sessionId);\n\t\tthis.rearmScheduledJobs();\n\t}\n\n\tstop(): void {\n\t\tthis.stopTimers();\n\t\tthis.store = undefined;\n\t\tthis.ctx = undefined;\n\t}\n\n\tasync handleToolCall(params: SubagentParamsLike, ctx: ExtensionContext): Promise<AgentToolResult<Details>> {\n\t\tthis.ctx = ctx;\n\t\ttry {\n\t\t\tif (!scheduledRunsEnabled(this.deps.config)) {\n\t\t\t\treturn textResult(\"Scheduled subagent runs are disabled. Set { \\\"scheduledRuns\\\": { \\\"enabled\\\": true } } in ~/.lunr/agent/extensions/subagent/config.json, then reload lunR. Schedule only explicit delayed runs the user asked for.\", true);\n\t\t\t}\n\t\t\tif (!this.store) this.bindSession(ctx);\n\t\t\tif (!this.store) return textResult(\"Scheduled subagent store is unavailable for this session.\", true);\n\t\t\tswitch (params.action) {\n\t\t\t\tcase \"schedule\": return this.createJob(params, ctx);\n\t\t\t\tcase \"schedule-list\": return this.listJobs();\n\t\t\t\tcase \"schedule-status\": return this.statusJob(params);\n\t\t\t\tcase \"schedule-cancel\": return this.cancelJob(params);\n\t\t\t\tdefault: return textResult(`Unknown scheduled-run action: ${params.action}`, true);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treturn textResult(message, true);\n\t\t}\n\t}\n\n\tprivate createJob(params: SubagentParamsLike, ctx: ExtensionContext): AgentToolResult<Details> {\n\t\tconst store = this.requireStore();\n\t\tconst sanitized = sanitizeScheduledParams(params);\n\t\tif (sanitized.error) return textResult(sanitized.error, true);\n\t\tconst scheduleInput = params.schedule!.trim();\n\t\tconst runAt = parseScheduledRunTime(scheduleInput, this.now());\n\t\tconst pendingCount = store.list().filter((job) => job.state === \"scheduled\" || job.state === \"running\").length;\n\t\tconst maxPending = resolveMaxPending(this.deps.config);\n\t\tif (pendingCount >= maxPending) return textResult(`Scheduled subagent limit reached (${pendingCount}/${maxPending} pending or running). Cancel an existing scheduled run before adding another.`, true);\n\t\tconst id = this.randomId();\n\t\tconst sessionId = resolveCurrentSessionId(ctx.sessionManager);\n\t\tconst scheduleName = params.scheduleName?.trim();\n\t\tconst executionParams = sanitized.params!;\n\t\tconst now = this.now();\n\t\tconst job: ScheduledRunJob = {\n\t\t\tid,\n\t\t\tname: scheduleName || describeScheduledTarget(executionParams),\n\t\t\tschedule: scheduleInput,\n\t\t\trunAt,\n\t\t\tstate: \"scheduled\",\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t\tcwd: ctx.cwd,\n\t\t\tsessionId,\n\t\t\tparams: executionParams,\n\t\t};\n\t\tstore.mutate((data) => {\n\t\t\tdata.jobs.push(job);\n\t\t});\n\t\tthis.arm(job);\n\t\treturn textResult([\n\t\t\t`Scheduled subagent run ${job.id}.`,\n\t\t\t`Name: ${job.name}`,\n\t\t\t`When: ${new Date(job.runAt).toISOString()}`,\n\t\t\t`Mode: ${jobMode(executionParams)}`,\n\t\t\t`Context: fresh (scheduled runs never fork parent-session context)`,\n\t\t\t`Status: subagent({ action: \"schedule-status\", id: \"${job.id}\" })`,\n\t\t\t`Cancel before it fires: subagent({ action: \"schedule-cancel\", id: \"${job.id}\" })`,\n\t\t].join(\"\\n\"));\n\t}\n\n\tprivate listJobs(): AgentToolResult<Details> {\n\t\tconst jobs = this.requireStore().list().sort((left, right) => left.runAt - right.runAt);\n\t\tif (jobs.length === 0) return textResult(\"No scheduled subagent runs for this session.\");\n\t\tconst lines = [`Scheduled subagent runs: ${jobs.length}`, \"\"];\n\t\tfor (const job of jobs) {\n\t\t\tconst parts = [job.id, job.state, new Date(job.runAt).toISOString(), job.name];\n\t\t\tif (job.lastRunId) parts.push(`run ${job.lastRunId}`);\n\t\t\tif (job.lastError) parts.push(`error: ${job.lastError}`);\n\t\t\tlines.push(`- ${parts.join(\" | \")}`);\n\t\t}\n\t\treturn textResult(lines.join(\"\\n\"));\n\t}\n\n\tprivate statusJob(params: SubagentParamsLike): AgentToolResult<Details> {\n\t\tconst requestedId = params.id ?? params.runId;\n\t\tif (!requestedId) return textResult(\"action='schedule-status' requires id.\", true);\n\t\tconst job = resolveJobById(this.requireStore().list(), requestedId);\n\t\tconst lines = [\n\t\t\t`Scheduled run: ${job.id}`,\n\t\t\t`Name: ${job.name}`,\n\t\t\t`State: ${job.state}`,\n\t\t\t`Schedule: ${job.schedule}`,\n\t\t\t`Run at: ${new Date(job.runAt).toISOString()}`,\n\t\t\t`Mode: ${jobMode(job.params)}`,\n\t\t\t`CWD: ${shortenPath(job.cwd)}`,\n\t\t\t`Created: ${new Date(job.createdAt).toISOString()}`,\n\t\t\t`Updated: ${new Date(job.updatedAt).toISOString()}`,\n\t\t\tjob.lastRunId ? `Launched async run: ${job.lastRunId}` : undefined,\n\t\t\tjob.lastAsyncDir ? `Async dir: ${job.lastAsyncDir}` : undefined,\n\t\t\tjob.lastError ? `Error: ${job.lastError}` : undefined,\n\t\t\tjob.state === \"scheduled\" ? `Cancel: subagent({ action: \"schedule-cancel\", id: \"${job.id}\" })` : undefined,\n\t\t\tjob.lastRunId ? `Async status: subagent({ action: \"status\", id: \"${job.lastRunId}\" })` : undefined,\n\t\t].filter((line): line is string => Boolean(line));\n\t\treturn textResult(lines.join(\"\\n\"));\n\t}\n\n\tprivate cancelJob(params: SubagentParamsLike): AgentToolResult<Details> {\n\t\tconst requestedId = params.id ?? params.runId;\n\t\tif (!requestedId) return textResult(\"action='schedule-cancel' requires id.\", true);\n\t\tconst store = this.requireStore();\n\t\tconst job = resolveJobById(store.list(), requestedId);\n\t\tif (job.state === \"running\") return textResult(`Scheduled run ${job.id} already launched async run ${job.lastRunId ?? \"unknown\"}; interrupt that async run instead.`, true);\n\t\tif (terminalState(job.state)) return textResult(`Scheduled run ${job.id} is already ${job.state}.`, true);\n\t\tconst now = this.now();\n\t\tthis.clearTimer(job.id);\n\t\tstore.mutate((data) => {\n\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === job.id);\n\t\t\tif (!stored) return;\n\t\t\tstored.state = \"canceled\";\n\t\t\tstored.canceledAt = now;\n\t\t\tstored.updatedAt = now;\n\t\t});\n\t\treturn textResult(`Canceled scheduled subagent run ${job.id}.`);\n\t}\n\n\tprivate rearmScheduledJobs(): void {\n\t\tconst store = this.requireStore();\n\t\tconst now = this.now();\n\t\tconst maxLatenessMs = resolveMaxLatenessMs(this.deps.config);\n\t\tconst dueToMiss = store.list().filter((job) => job.state === \"scheduled\" && job.runAt + maxLatenessMs < now);\n\t\tif (dueToMiss.length > 0) {\n\t\t\tstore.mutate((data) => {\n\t\t\t\tfor (const missed of dueToMiss) {\n\t\t\t\t\tconst job = data.jobs.find((candidate) => candidate.id === missed.id);\n\t\t\t\t\tif (!job || job.state !== \"scheduled\") continue;\n\t\t\t\t\tjob.state = \"missed\";\n\t\t\t\t\tjob.updatedAt = now;\n\t\t\t\t\tjob.lastError = `Missed scheduled time by more than ${formatDuration(maxLatenessMs)} while Pi was not available.`;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tfor (const job of store.list()) {\n\t\t\tif (job.state === \"scheduled\") this.arm(job);\n\t\t}\n\t}\n\n\tprivate arm(job: ScheduledRunJob): void {\n\t\tthis.clearTimer(job.id);\n\t\tconst delayMs = Math.max(0, job.runAt - this.now());\n\t\tconst timer = this.timersApi.setTimeout(() => {\n\t\t\tvoid this.fire(job.id);\n\t\t}, Math.min(delayMs, MAX_TIMER_DELAY_MS));\n\t\ttimer.unref?.();\n\t\tthis.timers.set(job.id, timer);\n\t}\n\n\tprivate async fire(jobId: string): Promise<void> {\n\t\tthis.clearTimer(jobId);\n\t\tconst store = this.store;\n\t\tconst ctx = this.ctx;\n\t\tif (!store || !ctx) return;\n\t\tlet job = store.get(jobId);\n\t\tif (!job || job.state !== \"scheduled\") return;\n\t\tconst now = this.now();\n\t\t// A timer capped at MAX_TIMER_DELAY_MS may fire before runAt for far-future schedules; re-arm and wait.\n\t\tif (now < job.runAt) {\n\t\t\tthis.arm(job);\n\t\t\treturn;\n\t\t}\n\t\tconst maxLatenessMs = resolveMaxLatenessMs(this.deps.config);\n\t\tif (job.runAt + maxLatenessMs < now) {\n\t\t\tstore.mutate((data) => {\n\t\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === jobId);\n\t\t\t\tif (!stored || stored.state !== \"scheduled\") return;\n\t\t\t\tstored.state = \"missed\";\n\t\t\t\tstored.updatedAt = now;\n\t\t\t\tstored.lastError = `Missed scheduled time by more than ${formatDuration(maxLatenessMs)}.`;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tstore.mutate((data) => {\n\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === jobId);\n\t\t\tif (!stored || stored.state !== \"scheduled\") return;\n\t\t\tstored.state = \"running\";\n\t\t\tstored.firedAt = now;\n\t\t\tstored.updatedAt = now;\n\t\t});\n\t\tjob = store.get(jobId);\n\t\tif (!job || job.state !== \"running\") return;\n\t\tconst controller = new AbortController();\n\t\ttry {\n\t\t\tconst result = await this.deps.launch(job.params, ctx, controller.signal);\n\t\t\tconst launchRunId = result.details?.asyncId ?? result.details?.runId;\n\t\t\tstore.mutate((data) => {\n\t\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === jobId);\n\t\t\t\tif (!stored) return;\n\t\t\t\tstored.updatedAt = this.now();\n\t\t\t\tif (result.isError || !launchRunId) {\n\t\t\t\t\tstored.state = \"failed\";\n\t\t\t\t\tstored.lastError = result.content.find((item) => item.type === \"text\")?.text ?? \"Scheduled subagent launch failed.\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstored.state = \"fired\";\n\t\t\t\tstored.lastRunId = launchRunId;\n\t\t\t\tstored.lastAsyncDir = result.details?.asyncDir;\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tstore.mutate((data) => {\n\t\t\t\tconst stored = data.jobs.find((candidate) => candidate.id === jobId);\n\t\t\t\tif (!stored) return;\n\t\t\t\tstored.state = \"failed\";\n\t\t\t\tstored.lastError = message;\n\t\t\t\tstored.updatedAt = this.now();\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate requireStore(): ScheduledRunStore {\n\t\tif (!this.store) throw new Error(\"Scheduled subagent store is not bound to a session.\");\n\t\treturn this.store;\n\t}\n\n\tprivate clearTimer(jobId: string): void {\n\t\tconst timer = this.timers.get(jobId);\n\t\tif (!timer) return;\n\t\tthis.timersApi.clearTimeout(timer);\n\t\tthis.timers.delete(jobId);\n\t}\n\n\tprivate stopTimers(): void {\n\t\tfor (const timer of this.timers.values()) this.timersApi.clearTimeout(timer);\n\t\tthis.timers.clear();\n\t}\n}\n\nexport function createScheduledRunManager(deps: ScheduledRunManagerDeps): ScheduledRunManager {\n\treturn new ScheduledRunManager(deps);\n}\n"]}
|