@ashx-j/lunr-dev 0.2.16-dev.9.1 → 0.2.21-dev.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +67 -1
- package/README.md +7 -1
- package/dist/builtin-extensions/ashxj-thinking.d.ts +1 -0
- package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-thinking.js +44 -19
- package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +1 -2
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-computer-use.d.ts +3 -0
- package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -0
- package/dist/builtin-extensions/lunr-computer-use.js +158 -0
- package/dist/builtin-extensions/lunr-computer-use.js.map +1 -0
- package/dist/builtin-extensions/lunr-todos.d.ts +6 -5
- package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-todos.js +9 -7
- package/dist/builtin-extensions/lunr-todos.js.map +1 -1
- package/dist/builtin-extensions/pi-intercom/broker/spawn.d.ts +6 -4
- package/dist/builtin-extensions/pi-intercom/broker/spawn.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-intercom/broker/spawn.js +114 -61
- package/dist/builtin-extensions/pi-intercom/broker/spawn.js.map +1 -1
- package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-intercom/index.js +360 -351
- package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js +10 -3
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts +5 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js +26 -4
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.js +37 -27
- package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts +6 -1
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +33 -8
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.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 +2 -2
- 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 +8 -6
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +179 -79
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +18 -8
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +44 -15
- 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 +4 -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 +24 -14
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts +8 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js +247 -18
- package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.d.ts +29 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js +179 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts +89 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js +541 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +11 -1
- 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 +38 -12
- 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-job-tracker.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js +3 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts +2 -1
- 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 +35 -8
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +7 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +26 -4
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js +55 -38
- package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +100 -0
- 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 +46 -31
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts +3 -6
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js +64 -5
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.d.ts +15 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.js +14 -4
- package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +7 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
- 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 +21 -8
- 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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts +10 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js +38 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +0 -1
- 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 +74 -41
- 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 -0
- 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 +75 -18
- 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 +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +13 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +67 -11
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +1 -0
- 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 +3 -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 +7 -2
- 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 +13 -3
- 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 +5 -10
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.d.ts +2 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.js +3 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +3 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +68 -11
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts +12 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js +21 -2
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +21 -4
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +7 -0
- 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 +11 -7
- 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 +6 -0
- 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 +46 -29
- 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 +47 -4
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +428 -431
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts +2 -13
- package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js +5 -91
- package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.js +103 -102
- package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/computer-use/adapter.d.ts +23 -0
- package/dist/core/computer-use/adapter.d.ts.map +1 -0
- package/dist/core/computer-use/adapter.js +116 -0
- package/dist/core/computer-use/adapter.js.map +1 -0
- package/dist/core/computer-use/image.d.ts +26 -0
- package/dist/core/computer-use/image.d.ts.map +1 -0
- package/dist/core/computer-use/image.js +64 -0
- package/dist/core/computer-use/image.js.map +1 -0
- package/dist/core/computer-use/lease.d.ts +18 -0
- package/dist/core/computer-use/lease.d.ts.map +1 -0
- package/dist/core/computer-use/lease.js +129 -0
- package/dist/core/computer-use/lease.js.map +1 -0
- package/dist/core/computer-use/macos-runtime.d.ts +14 -0
- package/dist/core/computer-use/macos-runtime.d.ts.map +1 -0
- package/dist/core/computer-use/macos-runtime.js +148 -0
- package/dist/core/computer-use/macos-runtime.js.map +1 -0
- package/dist/core/computer-use/policy.d.ts +19 -0
- package/dist/core/computer-use/policy.d.ts.map +1 -0
- package/dist/core/computer-use/policy.js +62 -0
- package/dist/core/computer-use/policy.js.map +1 -0
- package/dist/core/computer-use/release.generated.d.ts +31 -0
- package/dist/core/computer-use/release.generated.d.ts.map +1 -0
- package/dist/core/computer-use/release.generated.js +36 -0
- package/dist/core/computer-use/release.generated.js.map +1 -0
- package/dist/core/computer-use/runtime.d.ts +13 -0
- package/dist/core/computer-use/runtime.d.ts.map +1 -0
- package/dist/core/computer-use/runtime.js +158 -0
- package/dist/core/computer-use/runtime.js.map +1 -0
- package/dist/core/computer-use/schemas.d.ts +91 -0
- package/dist/core/computer-use/schemas.d.ts.map +1 -0
- package/dist/core/computer-use/schemas.js +71 -0
- package/dist/core/computer-use/schemas.js.map +1 -0
- package/dist/core/computer-use/windows-desktop.d.ts +3 -0
- package/dist/core/computer-use/windows-desktop.d.ts.map +1 -0
- package/dist/core/computer-use/windows-desktop.js +48 -0
- package/dist/core/computer-use/windows-desktop.js.map +1 -0
- package/dist/core/computer-use/workflow.d.ts +32 -0
- package/dist/core/computer-use/workflow.d.ts.map +1 -0
- package/dist/core/computer-use/workflow.js +341 -0
- package/dist/core/computer-use/workflow.js.map +1 -0
- package/dist/core/customize.d.ts +2 -0
- package/dist/core/customize.d.ts.map +1 -1
- package/dist/core/customize.js +3 -0
- package/dist/core/customize.js.map +1 -1
- package/dist/core/keybindings.d.ts +2 -2
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -2
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-runtime.d.ts +0 -3
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +1 -10
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +1 -1
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/permissions.d.ts +2 -1
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +31 -11
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/plan-mode.d.ts.map +1 -1
- package/dist/core/plan-mode.js +9 -5
- package/dist/core/plan-mode.js.map +1 -1
- package/dist/core/rollback.d.ts.map +1 -1
- package/dist/core/rollback.js +13 -90
- package/dist/core/rollback.js.map +1 -1
- package/dist/core/runtime-bridges.d.ts.map +1 -1
- package/dist/core/runtime-bridges.js +0 -2
- package/dist/core/runtime-bridges.js.map +1 -1
- package/dist/core/session-manager.d.ts +0 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +21 -79
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +10 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +30 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/subagent-cancellation.d.ts +21 -0
- package/dist/core/subagent-cancellation.d.ts.map +1 -0
- package/dist/core/subagent-cancellation.js +53 -0
- package/dist/core/subagent-cancellation.js.map +1 -0
- package/dist/core/subagent-spinner-setting.d.ts +6 -0
- package/dist/core/subagent-spinner-setting.d.ts.map +1 -0
- package/dist/core/subagent-spinner-setting.js +12 -0
- package/dist/core/subagent-spinner-setting.js.map +1 -0
- package/dist/core/subagent-spinner.d.ts +4 -0
- package/dist/core/subagent-spinner.d.ts.map +1 -0
- package/dist/core/subagent-spinner.js +6 -0
- package/dist/core/subagent-spinner.js.map +1 -0
- package/dist/dev-cli.js +0 -0
- package/dist/gateway/agent-bridge.d.ts +6 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +23 -6
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/cron.d.ts +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +23 -7
- package/dist/gateway/cron.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +12 -18
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +4 -2
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +23 -32
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/processes-selector.d.ts +2 -3
- package/dist/modes/interactive/components/processes-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/processes-selector.js +5 -10
- package/dist/modes/interactive/components/processes-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +8 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +93 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +12 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/extension-widget-order.d.ts +8 -0
- package/dist/modes/interactive/extension-widget-order.d.ts.map +1 -0
- package/dist/modes/interactive/extension-widget-order.js +37 -0
- package/dist/modes/interactive/extension-widget-order.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +58 -26
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/thinking-level-slash.d.ts +4 -0
- package/dist/modes/interactive/thinking-level-slash.d.ts.map +1 -0
- package/dist/modes/interactive/thinking-level-slash.js +23 -0
- package/dist/modes/interactive/thinking-level-slash.js.map +1 -0
- package/dist/node-runtime/adapter-AZMY335J.js +279 -0
- package/dist/node-runtime/{agent-session-services-IFJMSX7Z.js → agent-session-services-QANFGM2V.js} +15 -11
- package/dist/node-runtime/{builtin-extensions-LYZ3BFWQ.js → builtin-extensions-SRCYQPZ6.js} +5 -3
- package/dist/node-runtime/chunk-2IDTZAG5.js +1415 -0
- package/dist/node-runtime/chunk-3ONQTOMR.js +68 -0
- package/dist/node-runtime/{chunk-TQNSPERU.js → chunk-5SQDLSZJ.js} +1 -1
- package/dist/node-runtime/chunk-5ZH3ZFIZ.js +308 -0
- package/dist/node-runtime/{chunk-PBC2Y6GS.js → chunk-6UB6NKA3.js} +29 -72
- package/dist/node-runtime/{chunk-A2KQXUJD.js → chunk-7AFOFSDY.js} +1 -1
- package/dist/node-runtime/chunk-A3KMVBZV.js +60 -0
- package/dist/node-runtime/{chunk-N77MY65L.js → chunk-BJ6H7DPI.js} +25 -25
- package/dist/node-runtime/{chunk-PGAJ5MO5.js → chunk-BYQ2MOFI.js} +6 -6
- package/dist/node-runtime/{chunk-QH42CDX3.js → chunk-CZUBYPFP.js} +234 -124
- package/dist/node-runtime/{chunk-LZAW4ZX3.js → chunk-D466UAID.js} +34 -13
- package/dist/node-runtime/{chunk-ZKMFUD3Q.js → chunk-GT5F3OKM.js} +3 -3
- package/dist/node-runtime/chunk-H2BI7G7T.js +73 -0
- package/dist/node-runtime/{chunk-5P7PZMRU.js → chunk-HRS4HMDX.js} +1 -1
- package/dist/node-runtime/{chunk-IPA627GP.js → chunk-HXJS2PJM.js} +4 -4
- package/dist/node-runtime/chunk-JZHEUQRL.js +180 -0
- package/dist/node-runtime/chunk-LISUTZS3.js +19 -0
- package/dist/node-runtime/chunk-LOYUC2ID.js +2185 -0
- package/dist/node-runtime/{chunk-2QKLKMKC.js → chunk-LTXUQJI4.js} +1 -1
- package/dist/node-runtime/{chunk-YF63P5ZT.js → chunk-LTYWTR3V.js} +1 -426
- package/dist/node-runtime/{chunk-MKKH27PH.js → chunk-LWJXTA6Z.js} +274 -2416
- package/dist/node-runtime/chunk-MW2XJZIK.js +108 -0
- package/dist/node-runtime/{chunk-CDFZEWPU.js → chunk-N3PNL74S.js} +537 -262
- package/dist/node-runtime/{chunk-4TLO4PO2.js → chunk-U6C7VTR5.js} +7 -1401
- package/dist/node-runtime/chunk-URD2SLIT.js +1019 -0
- package/dist/node-runtime/{chunk-HQCKFM2O.js → chunk-VGYZ3APQ.js} +3 -0
- package/dist/node-runtime/{chunk-AJX357CL.js → chunk-VQ4UBWSA.js} +30 -1013
- package/dist/node-runtime/{chunk-F4VQFJI2.js → chunk-VTGEKB7R.js} +2 -2
- package/dist/node-runtime/{chunk-AD6VXAO7.js → chunk-VTPM5V35.js} +5 -100
- package/dist/node-runtime/chunk-W3SILANP.js +24 -0
- package/dist/node-runtime/{chunk-WOVTOV5P.js → chunk-XAUQOKYK.js} +421 -63
- package/dist/node-runtime/{chunk-ECD5L7YI.js → chunk-XSRCAQK2.js} +390 -16
- package/dist/node-runtime/{chunk-PCGNAY2O.js → chunk-ZOIIMEN6.js} +54 -433
- package/dist/node-runtime/{chunk-EDBJNRSM.js → chunk-ZVSORYRM.js} +1 -1
- package/dist/node-runtime/cli-runtime.js +1 -1
- package/dist/node-runtime/{command-L3LAHDIH.js → command-ZURZJDXF.js} +1 -1
- package/dist/node-runtime/{commands-RL5YBW5I.js → commands-BZGSLIP7.js} +4 -2
- package/dist/node-runtime/{customize-XEXL2DGQ.js → customize-LF5VST47.js} +1 -1
- package/dist/node-runtime/{direct-tool-executor-JVDXTO7A.js → direct-tool-executor-BSZDHIYR.js} +7 -4
- package/dist/node-runtime/{export-html-KR26FOUZ.js → export-html-E4DT6ZJQ.js} +1 -1
- package/dist/node-runtime/{gateway-X2TI5X7F.js → gateway-FWHRIBK5.js} +24 -369
- package/dist/node-runtime/index.js +49 -42
- package/dist/node-runtime/{init-NJV2T55N.js → init-DVJUAOUO.js} +4 -2
- package/dist/node-runtime/{interactive-mode-KOM35YF2.js → interactive-mode-BBASNWHN.js} +23 -17
- package/dist/node-runtime/{interactive-view-U6OILKF3.js → interactive-view-N6F4KUIT.js} +3 -5
- package/dist/node-runtime/lunr-computer-use-TJNDAMWM.js +135 -0
- package/dist/node-runtime/{lunr-cron-YJ5UHYRD.js → lunr-cron-J64I72C6.js} +7 -1
- package/dist/node-runtime/main.js +25 -20
- package/dist/node-runtime/{mcp-auth-flow-QIXHW6QN.js → mcp-auth-flow-YL6RWPYG.js} +2 -1
- package/dist/node-runtime/{package-manager-cli-TZZHJCVI.js → package-manager-cli-VMYX4Y2S.js} +10 -7
- package/dist/node-runtime/{pi-intercom-EEMBGQID.js → pi-intercom-NV2LW6X7.js} +108 -87
- package/dist/node-runtime/{pi-mcp-adapter-QFB37AVN.js → pi-mcp-adapter-JLB5YL2F.js} +31 -25
- package/dist/node-runtime/{pi-subagents-7XJ4H53P.js → pi-subagents-WEHV3W7H.js} +1321 -631
- package/dist/node-runtime/{pi-web-access-DPGAVKOA.js → pi-web-access-FN5YC5T6.js} +67 -64
- package/dist/node-runtime/{proxy-modes-HEEFK4KC.js → proxy-modes-OR7ISBXK.js} +7 -4
- package/dist/node-runtime/rpc-entry.js +25 -20
- package/dist/node-runtime/runtime-3SB5ATHQ.js +21 -0
- package/dist/node-runtime/{runtime-bridges-PPHNBFWL.js → runtime-bridges-2VQTLPOZ.js} +3 -5
- package/dist/node-runtime/{session-manager-MQNBYACL.js → session-manager-QEMZBMTM.js} +3 -5
- package/dist/node-runtime/{session-selector-5AZLJS6U.js → session-selector-URVJLOTK.js} +2 -2
- package/dist/node-runtime/{settings-manager-5LF2VQWC.js → settings-manager-3CCU326G.js} +4 -1
- package/dist/node-runtime/{src-Y7JSCK64.js → src-BPQFJR76.js} +27 -7
- package/dist/node-runtime/{subagent-executor-5RNDEPIJ.js → subagent-executor-CXKXQDHH.js} +189 -284
- package/dist/node-runtime/{update-cli-A253SZ7P.js → update-cli-NM7B4CKL.js} +4 -1
- package/dist/node-runtime/workflow-C26QCUTW.js +468 -0
- package/dist/rpc.d.ts +3 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +18 -0
- package/dist/rpc.js.map +1 -0
- package/dist/startup/interactive-view.d.ts.map +1 -1
- package/dist/startup/interactive-view.js +1 -2
- package/dist/startup/interactive-view.js.map +1 -1
- package/docs/computer-use.md +242 -0
- package/docs/development.md +0 -32
- package/docs/features.md +24 -6
- package/docs/interactive-startup.md +10 -3
- package/docs/keybindings.md +5 -3
- package/docs/settings.md +3 -2
- package/docs/terminal-setup.md +1 -1
- package/docs/usage.md +1 -1
- 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/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/hidden-thinking-label.ts +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/install-lock/package-lock.json +3827 -0
- package/install-lock/package.json +18 -0
- package/native/computer-use/LICENSE.md +21 -0
- package/npm-shrinkwrap.json +3808 -0
- package/package.json +16 -10
- package/dist/builtin-extensions/lunr-settings-tools.d.ts +0 -4
- package/dist/builtin-extensions/lunr-settings-tools.d.ts.map +0 -1
- package/dist/builtin-extensions/lunr-settings-tools.js +0 -120
- package/dist/builtin-extensions/lunr-settings-tools.js.map +0 -1
- package/dist/core/settings-tools-bridge.d.ts +0 -35
- package/dist/core/settings-tools-bridge.d.ts.map +0 -1
- package/dist/core/settings-tools-bridge.js +0 -56
- package/dist/core/settings-tools-bridge.js.map +0 -1
- package/dist/node-runtime/chunk-AHSTJBIB.js +0 -64
- package/dist/startup/interactive-shell.d.ts +0 -55
- package/dist/startup/interactive-shell.d.ts.map +0 -1
- package/dist/startup/interactive-shell.js +0 -264
- package/dist/startup/interactive-shell.js.map +0 -1
- package/dist/node-runtime/{chunk-YSKSB3BJ.js → chunk-CH6OL6P2.js} +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ashx-j/lunr-dev",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.21-dev.12.1",
|
|
4
4
|
"description": "lunR — terminal coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"piConfig": {
|
|
@@ -18,28 +18,31 @@
|
|
|
18
18
|
"import": "./dist/node-runtime/index.js"
|
|
19
19
|
},
|
|
20
20
|
"./rpc-entry": {
|
|
21
|
-
"import": "./dist/
|
|
21
|
+
"import": "./dist/rpc.js"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
25
25
|
"dist",
|
|
26
26
|
"docs",
|
|
27
|
+
"native/computer-use/LICENSE.md",
|
|
27
28
|
"examples",
|
|
28
|
-
"CHANGELOG.md"
|
|
29
|
+
"CHANGELOG.md",
|
|
30
|
+
"npm-shrinkwrap.json",
|
|
31
|
+
"install-lock"
|
|
29
32
|
],
|
|
30
33
|
"scripts": {
|
|
31
34
|
"clean": "shx rm -rf dist",
|
|
32
|
-
"build": "tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/
|
|
33
|
-
"build:binary": "npm --prefix ../tui run build &&
|
|
35
|
+
"build": "node ../../scripts/generate-computer-use-manifest.mjs && tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets && node ../../scripts/build-node-runtime.mjs",
|
|
36
|
+
"build:binary": "npm --prefix ../tui run build && tsgo -p ../ai/tsconfig.build.json && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/lunr && npm run copy-binary-assets",
|
|
34
37
|
"copy-assets": "shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/ && shx mkdir -p dist/builtin-extensions/lunr-skill-creator/skills/skill-creator && shx cp src/builtin-extensions/lunr-skill-creator/skills/skill-creator/SKILL.md dist/builtin-extensions/lunr-skill-creator/skills/skill-creator/ && shx mkdir -p dist/catalog && shx cp -r ../../catalog/. dist/catalog/",
|
|
35
|
-
"copy-binary-assets": "shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx mkdir -p dist/catalog && shx cp -r ../../catalog/. dist/catalog/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/",
|
|
38
|
+
"copy-binary-assets": "shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx mkdir -p dist/catalog && shx cp -r ../../catalog/. dist/catalog/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/ && node ../../scripts/computer-use-packages.mjs standalone dist",
|
|
36
39
|
"test": "vitest --run",
|
|
37
40
|
"shrinkwrap": "node ../../scripts/generate-coding-agent-shrinkwrap.mjs"
|
|
38
41
|
},
|
|
39
42
|
"dependencies": {
|
|
40
|
-
"@ashx-j/lunr-agent": "0.2.
|
|
41
|
-
"@ashx-j/lunr-ai": "0.2.
|
|
42
|
-
"@ashx-j/lunr-tui": "0.2.
|
|
43
|
+
"@ashx-j/lunr-agent": "0.2.21-dev.12.1",
|
|
44
|
+
"@ashx-j/lunr-ai": "0.2.21-dev.12.1",
|
|
45
|
+
"@ashx-j/lunr-tui": "0.2.21-dev.12.1",
|
|
43
46
|
"@modelcontextprotocol/ext-apps": "1.7.4",
|
|
44
47
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
45
48
|
"@mozilla/readability": "0.6.0",
|
|
@@ -80,7 +83,10 @@
|
|
|
80
83
|
}
|
|
81
84
|
},
|
|
82
85
|
"optionalDependencies": {
|
|
83
|
-
"@mariozechner/clipboard": "0.3.9"
|
|
86
|
+
"@mariozechner/clipboard": "0.3.9",
|
|
87
|
+
"@ashx-j/lunr-computer-win32-x64": "0.2.21-dev.12.1",
|
|
88
|
+
"@ashx-j/lunr-computer-win32-arm64": "0.2.21-dev.12.1",
|
|
89
|
+
"@ashx-j/lunr-computer-darwin-arm64": "0.2.21-dev.12.1"
|
|
84
90
|
},
|
|
85
91
|
"devDependencies": {
|
|
86
92
|
"@types/cross-spawn": "6.0.6",
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@ashx-j/lunr-dev";
|
|
2
|
-
export declare const DETAILED_SETTINGS_TOOL_NAMES: readonly ["settings_model_tiers", "settings_subscriptions", "settings_rollback", "settings_session_retention"];
|
|
3
|
-
export default function lunrSettingsTools(pi: ExtensionAPI): void;
|
|
4
|
-
//# sourceMappingURL=lunr-settings-tools.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lunr-settings-tools.d.ts","sourceRoot":"","sources":["../../src/builtin-extensions/lunr-settings-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAMpE,eAAO,MAAM,4BAA4B,gHAK/B,CAAC;AAoBX,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAkGhE","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI } from \"@ashx-j/lunr-dev\";\nimport { Type } from \"@sinclair/typebox\";\n\nconst SETTINGS_BRIDGE = Symbol.for(\"@lunr/settings-tools\");\nconst MODEL_TIERS_BRIDGE = Symbol.for(\"@lunr/model-tiers\");\n\nexport const DETAILED_SETTINGS_TOOL_NAMES = [\n\t\"settings_model_tiers\",\n\t\"settings_subscriptions\",\n\t\"settings_rollback\",\n\t\"settings_session_retention\",\n] as const;\n\nfunction settingsBridge(): any {\n\tconst bridge = (globalThis as Record<symbol, unknown>)[SETTINGS_BRIDGE];\n\tif (!bridge) throw new Error(\"Settings are unavailable in this runtime. Reload lunR and try again.\");\n\treturn bridge;\n}\n\nfunction text(value: unknown, guidance: string) {\n\treturn {\n\t\tcontent: [{ type: \"text\" as const, text: `${JSON.stringify(value, null, 2)}\\n\\n${guidance}` }],\n\t\tdetails: value,\n\t};\n}\n\nconst thinking = Type.Union([\n\tType.Literal(\"off\"), Type.Literal(\"minimal\"), Type.Literal(\"low\"), Type.Literal(\"medium\"),\n\tType.Literal(\"high\"), Type.Literal(\"xhigh\"), Type.Literal(\"max\"), Type.Null(),\n], { description: \"Per-tier thinking level. null inherits the parent session thinking level.\" });\n\nexport default function lunrSettingsTools(pi: ExtensionAPI): void {\n\tlet loaded = false;\n\n\tconst registerDetailedTools = () => {\n\t\tif (loaded) return;\n\t\tloaded = true;\n\n\t\tpi.registerTool({\n\t\t\tname: \"settings_model_tiers\",\n\t\t\tlabel: \"Model tiers\",\n\t\t\tdescription: \"Read or partially update light, standard, and heavy subagent model routes and their thinking levels. Models use provider/model ids. Omitted fields are unchanged.\",\n\t\t\tparameters: Type.Object({\n\t\t\t\tenabled: Type.Optional(Type.Boolean({ description: \"Enable or disable tier-based child routing.\" })),\n\t\t\t\tlight: Type.Optional(Type.String({ minLength: 1, description: \"Model route for light work.\" })),\n\t\t\t\tstandard: Type.Optional(Type.String({ minLength: 1, description: \"Model route for standard work.\" })),\n\t\t\t\theavy: Type.Optional(Type.String({ minLength: 1, description: \"Model route for heavy work.\" })),\n\t\t\t\tlightThinking: Type.Optional(thinking),\n\t\t\t\tstandardThinking: Type.Optional(thinking),\n\t\t\t\theavyThinking: Type.Optional(thinking),\n\t\t\t}, { additionalProperties: false }),\n\t\t\tasync execute(_id, params) {\n\t\t\t\tconst bridge = settingsBridge();\n\t\t\t\tif (Object.keys(params).length > 0) {\n\t\t\t\t\tbridge.setModelTiers(params);\n\t\t\t\t\t(globalThis as Record<symbol, any>)[MODEL_TIERS_BRIDGE]?.refreshToolDescription?.();\n\t\t\t\t}\n\t\t\t\treturn text(bridge.getModelTiers(), Object.keys(params).length > 0\n\t\t\t\t\t? \"Tier routes are saved and apply to the next child launch; the subagent schema guidance is refreshed now.\"\n\t\t\t\t\t: \"Pass only the fields you want to change. Child launches still validate model availability and authentication.\");\n\t\t\t},\n\t\t});\n\n\t\tpi.registerTool({\n\t\t\tname: \"settings_subscriptions\",\n\t\t\tlabel: \"Subscription management\",\n\t\t\tdescription: \"Read or update automatic management of multiple stored provider subscriptions. Omit enabled to read without changing it.\",\n\t\t\tparameters: Type.Object({ enabled: Type.Optional(Type.Boolean()) }, { additionalProperties: false }),\n\t\t\tasync execute(_id, params) {\n\t\t\t\tconst bridge = settingsBridge();\n\t\t\t\tif (params.enabled !== undefined) bridge.setAutoManageSubscriptions(params.enabled);\n\t\t\t\treturn text({ enabled: bridge.getAutoManageSubscriptions() }, params.enabled === undefined\n\t\t\t\t\t? \"Set enabled to change automatic subscription selection.\"\n\t\t\t\t\t: \"The setting is saved and applies to subsequent provider requests.\");\n\t\t\t},\n\t\t});\n\n\t\tpi.registerTool({\n\t\t\tname: \"settings_rollback\",\n\t\t\tlabel: \"Rollback\",\n\t\t\tdescription: \"Read or partially update rollback behavior: enabled, retained turns, capture strategy, and scope. Omitted fields are unchanged. Auto permission mode force-enables rollback for its current session.\",\n\t\t\tparameters: Type.Object({\n\t\t\t\tenabled: Type.Optional(Type.Boolean()),\n\t\t\t\tturns: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 })),\n\t\t\t\tcapture: Type.Optional(Type.Union([Type.Literal(\"copies\"), Type.Literal(\"shadow-git\"), Type.Literal(\"hybrid\")])),\n\t\t\t\tscope: Type.Optional(Type.Union([Type.Literal(\"tools\"), Type.Literal(\"tree\")])),\n\t\t\t}, { additionalProperties: false }),\n\t\t\tasync execute(_id, params) {\n\t\t\t\tconst bridge = settingsBridge();\n\t\t\t\tif (Object.keys(params).length > 0) bridge.setRollback(params);\n\t\t\t\tconst current = bridge.getRollback();\n\t\t\t\treturn text(current, current.forcedByAuto\n\t\t\t\t\t? \"Saved settings apply normally, but rollback remains force-enabled for this Auto-mode session.\"\n\t\t\t\t\t: Object.keys(params).length > 0 ? \"Rollback settings are saved and live for subsequent tool calls.\" : \"Pass only the fields you want to change.\");\n\t\t\t},\n\t\t});\n\n\t\tpi.registerTool({\n\t\t\tname: \"settings_session_retention\",\n\t\t\tlabel: \"Session retention\",\n\t\t\tdescription: \"Read or update how many days saved sessions are retained. Set days to 0 to keep sessions forever. Cleanup applies on a later launch, not retroactively in this turn.\",\n\t\t\tparameters: Type.Object({ days: Type.Optional(Type.Integer({ minimum: 0, maximum: 36500 })) }, { additionalProperties: false }),\n\t\t\tasync execute(_id, params) {\n\t\t\t\tconst bridge = settingsBridge();\n\t\t\t\tif (params.days !== undefined) bridge.setSessionRetentionDays(params.days);\n\t\t\t\treturn text({ days: bridge.getSessionRetentionDays() }, params.days === undefined\n\t\t\t\t\t? \"Set days to change retention; 0 keeps sessions forever.\"\n\t\t\t\t\t: \"The setting is saved. Session cleanup uses it on a later launch.\");\n\t\t\t},\n\t\t});\n\t};\n\n\tpi.registerTool({\n\t\tname: \"settings_load\",\n\t\tlabel: \"Settings\",\n\t\tdescription: \"Load four narrow agent-managed settings tools for model tiers, subscription management, rollback, and session retention. Call only when the task requires inspecting or changing those settings.\",\n\t\tpromptSnippet: \"Load narrow settings controls on demand\",\n\t\tpromptGuidelines: [\"Call settings_load only when the user asks to inspect or change model tiers, subscription management, rollback, or session retention.\"],\n\t\tparameters: Type.Object({}, { additionalProperties: false }),\n\t\tasync execute() {\n\t\t\tconst alreadyLoaded = loaded;\n\t\t\tregisterDetailedTools();\n\t\t\tpi.setActiveTools([...new Set([...pi.getActiveTools(), ...DETAILED_SETTINGS_TOOL_NAMES])]);\n\t\t\treturn text(\n\t\t\t\t{ activated: [...DETAILED_SETTINGS_TOOL_NAMES], alreadyLoaded },\n\t\t\t\t\"The four tools are active for the next model step and remain active in this runtime. A new runtime starts with only settings_load visible.\",\n\t\t\t);\n\t\t},\n\t});\n}\n"]}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { Type } from "@sinclair/typebox";
|
|
2
|
-
const SETTINGS_BRIDGE = Symbol.for("@lunr/settings-tools");
|
|
3
|
-
const MODEL_TIERS_BRIDGE = Symbol.for("@lunr/model-tiers");
|
|
4
|
-
export const DETAILED_SETTINGS_TOOL_NAMES = [
|
|
5
|
-
"settings_model_tiers",
|
|
6
|
-
"settings_subscriptions",
|
|
7
|
-
"settings_rollback",
|
|
8
|
-
"settings_session_retention",
|
|
9
|
-
];
|
|
10
|
-
function settingsBridge() {
|
|
11
|
-
const bridge = globalThis[SETTINGS_BRIDGE];
|
|
12
|
-
if (!bridge)
|
|
13
|
-
throw new Error("Settings are unavailable in this runtime. Reload lunR and try again.");
|
|
14
|
-
return bridge;
|
|
15
|
-
}
|
|
16
|
-
function text(value, guidance) {
|
|
17
|
-
return {
|
|
18
|
-
content: [{ type: "text", text: `${JSON.stringify(value, null, 2)}\n\n${guidance}` }],
|
|
19
|
-
details: value,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
const thinking = Type.Union([
|
|
23
|
-
Type.Literal("off"), Type.Literal("minimal"), Type.Literal("low"), Type.Literal("medium"),
|
|
24
|
-
Type.Literal("high"), Type.Literal("xhigh"), Type.Literal("max"), Type.Null(),
|
|
25
|
-
], { description: "Per-tier thinking level. null inherits the parent session thinking level." });
|
|
26
|
-
export default function lunrSettingsTools(pi) {
|
|
27
|
-
let loaded = false;
|
|
28
|
-
const registerDetailedTools = () => {
|
|
29
|
-
if (loaded)
|
|
30
|
-
return;
|
|
31
|
-
loaded = true;
|
|
32
|
-
pi.registerTool({
|
|
33
|
-
name: "settings_model_tiers",
|
|
34
|
-
label: "Model tiers",
|
|
35
|
-
description: "Read or partially update light, standard, and heavy subagent model routes and their thinking levels. Models use provider/model ids. Omitted fields are unchanged.",
|
|
36
|
-
parameters: Type.Object({
|
|
37
|
-
enabled: Type.Optional(Type.Boolean({ description: "Enable or disable tier-based child routing." })),
|
|
38
|
-
light: Type.Optional(Type.String({ minLength: 1, description: "Model route for light work." })),
|
|
39
|
-
standard: Type.Optional(Type.String({ minLength: 1, description: "Model route for standard work." })),
|
|
40
|
-
heavy: Type.Optional(Type.String({ minLength: 1, description: "Model route for heavy work." })),
|
|
41
|
-
lightThinking: Type.Optional(thinking),
|
|
42
|
-
standardThinking: Type.Optional(thinking),
|
|
43
|
-
heavyThinking: Type.Optional(thinking),
|
|
44
|
-
}, { additionalProperties: false }),
|
|
45
|
-
async execute(_id, params) {
|
|
46
|
-
const bridge = settingsBridge();
|
|
47
|
-
if (Object.keys(params).length > 0) {
|
|
48
|
-
bridge.setModelTiers(params);
|
|
49
|
-
globalThis[MODEL_TIERS_BRIDGE]?.refreshToolDescription?.();
|
|
50
|
-
}
|
|
51
|
-
return text(bridge.getModelTiers(), Object.keys(params).length > 0
|
|
52
|
-
? "Tier routes are saved and apply to the next child launch; the subagent schema guidance is refreshed now."
|
|
53
|
-
: "Pass only the fields you want to change. Child launches still validate model availability and authentication.");
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
pi.registerTool({
|
|
57
|
-
name: "settings_subscriptions",
|
|
58
|
-
label: "Subscription management",
|
|
59
|
-
description: "Read or update automatic management of multiple stored provider subscriptions. Omit enabled to read without changing it.",
|
|
60
|
-
parameters: Type.Object({ enabled: Type.Optional(Type.Boolean()) }, { additionalProperties: false }),
|
|
61
|
-
async execute(_id, params) {
|
|
62
|
-
const bridge = settingsBridge();
|
|
63
|
-
if (params.enabled !== undefined)
|
|
64
|
-
bridge.setAutoManageSubscriptions(params.enabled);
|
|
65
|
-
return text({ enabled: bridge.getAutoManageSubscriptions() }, params.enabled === undefined
|
|
66
|
-
? "Set enabled to change automatic subscription selection."
|
|
67
|
-
: "The setting is saved and applies to subsequent provider requests.");
|
|
68
|
-
},
|
|
69
|
-
});
|
|
70
|
-
pi.registerTool({
|
|
71
|
-
name: "settings_rollback",
|
|
72
|
-
label: "Rollback",
|
|
73
|
-
description: "Read or partially update rollback behavior: enabled, retained turns, capture strategy, and scope. Omitted fields are unchanged. Auto permission mode force-enables rollback for its current session.",
|
|
74
|
-
parameters: Type.Object({
|
|
75
|
-
enabled: Type.Optional(Type.Boolean()),
|
|
76
|
-
turns: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 })),
|
|
77
|
-
capture: Type.Optional(Type.Union([Type.Literal("copies"), Type.Literal("shadow-git"), Type.Literal("hybrid")])),
|
|
78
|
-
scope: Type.Optional(Type.Union([Type.Literal("tools"), Type.Literal("tree")])),
|
|
79
|
-
}, { additionalProperties: false }),
|
|
80
|
-
async execute(_id, params) {
|
|
81
|
-
const bridge = settingsBridge();
|
|
82
|
-
if (Object.keys(params).length > 0)
|
|
83
|
-
bridge.setRollback(params);
|
|
84
|
-
const current = bridge.getRollback();
|
|
85
|
-
return text(current, current.forcedByAuto
|
|
86
|
-
? "Saved settings apply normally, but rollback remains force-enabled for this Auto-mode session."
|
|
87
|
-
: Object.keys(params).length > 0 ? "Rollback settings are saved and live for subsequent tool calls." : "Pass only the fields you want to change.");
|
|
88
|
-
},
|
|
89
|
-
});
|
|
90
|
-
pi.registerTool({
|
|
91
|
-
name: "settings_session_retention",
|
|
92
|
-
label: "Session retention",
|
|
93
|
-
description: "Read or update how many days saved sessions are retained. Set days to 0 to keep sessions forever. Cleanup applies on a later launch, not retroactively in this turn.",
|
|
94
|
-
parameters: Type.Object({ days: Type.Optional(Type.Integer({ minimum: 0, maximum: 36500 })) }, { additionalProperties: false }),
|
|
95
|
-
async execute(_id, params) {
|
|
96
|
-
const bridge = settingsBridge();
|
|
97
|
-
if (params.days !== undefined)
|
|
98
|
-
bridge.setSessionRetentionDays(params.days);
|
|
99
|
-
return text({ days: bridge.getSessionRetentionDays() }, params.days === undefined
|
|
100
|
-
? "Set days to change retention; 0 keeps sessions forever."
|
|
101
|
-
: "The setting is saved. Session cleanup uses it on a later launch.");
|
|
102
|
-
},
|
|
103
|
-
});
|
|
104
|
-
};
|
|
105
|
-
pi.registerTool({
|
|
106
|
-
name: "settings_load",
|
|
107
|
-
label: "Settings",
|
|
108
|
-
description: "Load four narrow agent-managed settings tools for model tiers, subscription management, rollback, and session retention. Call only when the task requires inspecting or changing those settings.",
|
|
109
|
-
promptSnippet: "Load narrow settings controls on demand",
|
|
110
|
-
promptGuidelines: ["Call settings_load only when the user asks to inspect or change model tiers, subscription management, rollback, or session retention."],
|
|
111
|
-
parameters: Type.Object({}, { additionalProperties: false }),
|
|
112
|
-
async execute() {
|
|
113
|
-
const alreadyLoaded = loaded;
|
|
114
|
-
registerDetailedTools();
|
|
115
|
-
pi.setActiveTools([...new Set([...pi.getActiveTools(), ...DETAILED_SETTINGS_TOOL_NAMES])]);
|
|
116
|
-
return text({ activated: [...DETAILED_SETTINGS_TOOL_NAMES], alreadyLoaded }, "The four tools are active for the next model step and remain active in this runtime. A new runtime starts with only settings_load visible.");
|
|
117
|
-
},
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=lunr-settings-tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lunr-settings-tools.js","sourceRoot":"","sources":["../../src/builtin-extensions/lunr-settings-tools.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI } from \"@ashx-j/lunr-dev\";\nimport { Type } from \"@sinclair/typebox\";\n\nconst SETTINGS_BRIDGE = Symbol.for(\"@lunr/settings-tools\");\nconst MODEL_TIERS_BRIDGE = Symbol.for(\"@lunr/model-tiers\");\n\nexport const DETAILED_SETTINGS_TOOL_NAMES = [\n\t\"settings_model_tiers\",\n\t\"settings_subscriptions\",\n\t\"settings_rollback\",\n\t\"settings_session_retention\",\n] as const;\n\nfunction settingsBridge(): any {\n\tconst bridge = (globalThis as Record<symbol, unknown>)[SETTINGS_BRIDGE];\n\tif (!bridge) throw new Error(\"Settings are unavailable in this runtime. Reload lunR and try again.\");\n\treturn bridge;\n}\n\nfunction text(value: unknown, guidance: string) {\n\treturn {\n\t\tcontent: [{ type: \"text\" as const, text: `${JSON.stringify(value, null, 2)}\\n\\n${guidance}` }],\n\t\tdetails: value,\n\t};\n}\n\nconst thinking = Type.Union([\n\tType.Literal(\"off\"), Type.Literal(\"minimal\"), Type.Literal(\"low\"), Type.Literal(\"medium\"),\n\tType.Literal(\"high\"), Type.Literal(\"xhigh\"), Type.Literal(\"max\"), Type.Null(),\n], { description: \"Per-tier thinking level. null inherits the parent session thinking level.\" });\n\nexport default function lunrSettingsTools(pi: ExtensionAPI): void {\n\tlet loaded = false;\n\n\tconst registerDetailedTools = () => {\n\t\tif (loaded) return;\n\t\tloaded = true;\n\n\t\tpi.registerTool({\n\t\t\tname: \"settings_model_tiers\",\n\t\t\tlabel: \"Model tiers\",\n\t\t\tdescription: \"Read or partially update light, standard, and heavy subagent model routes and their thinking levels. Models use provider/model ids. Omitted fields are unchanged.\",\n\t\t\tparameters: Type.Object({\n\t\t\t\tenabled: Type.Optional(Type.Boolean({ description: \"Enable or disable tier-based child routing.\" })),\n\t\t\t\tlight: Type.Optional(Type.String({ minLength: 1, description: \"Model route for light work.\" })),\n\t\t\t\tstandard: Type.Optional(Type.String({ minLength: 1, description: \"Model route for standard work.\" })),\n\t\t\t\theavy: Type.Optional(Type.String({ minLength: 1, description: \"Model route for heavy work.\" })),\n\t\t\t\tlightThinking: Type.Optional(thinking),\n\t\t\t\tstandardThinking: Type.Optional(thinking),\n\t\t\t\theavyThinking: Type.Optional(thinking),\n\t\t\t}, { additionalProperties: false }),\n\t\t\tasync execute(_id, params) {\n\t\t\t\tconst bridge = settingsBridge();\n\t\t\t\tif (Object.keys(params).length > 0) {\n\t\t\t\t\tbridge.setModelTiers(params);\n\t\t\t\t\t(globalThis as Record<symbol, any>)[MODEL_TIERS_BRIDGE]?.refreshToolDescription?.();\n\t\t\t\t}\n\t\t\t\treturn text(bridge.getModelTiers(), Object.keys(params).length > 0\n\t\t\t\t\t? \"Tier routes are saved and apply to the next child launch; the subagent schema guidance is refreshed now.\"\n\t\t\t\t\t: \"Pass only the fields you want to change. Child launches still validate model availability and authentication.\");\n\t\t\t},\n\t\t});\n\n\t\tpi.registerTool({\n\t\t\tname: \"settings_subscriptions\",\n\t\t\tlabel: \"Subscription management\",\n\t\t\tdescription: \"Read or update automatic management of multiple stored provider subscriptions. Omit enabled to read without changing it.\",\n\t\t\tparameters: Type.Object({ enabled: Type.Optional(Type.Boolean()) }, { additionalProperties: false }),\n\t\t\tasync execute(_id, params) {\n\t\t\t\tconst bridge = settingsBridge();\n\t\t\t\tif (params.enabled !== undefined) bridge.setAutoManageSubscriptions(params.enabled);\n\t\t\t\treturn text({ enabled: bridge.getAutoManageSubscriptions() }, params.enabled === undefined\n\t\t\t\t\t? \"Set enabled to change automatic subscription selection.\"\n\t\t\t\t\t: \"The setting is saved and applies to subsequent provider requests.\");\n\t\t\t},\n\t\t});\n\n\t\tpi.registerTool({\n\t\t\tname: \"settings_rollback\",\n\t\t\tlabel: \"Rollback\",\n\t\t\tdescription: \"Read or partially update rollback behavior: enabled, retained turns, capture strategy, and scope. Omitted fields are unchanged. Auto permission mode force-enables rollback for its current session.\",\n\t\t\tparameters: Type.Object({\n\t\t\t\tenabled: Type.Optional(Type.Boolean()),\n\t\t\t\tturns: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 })),\n\t\t\t\tcapture: Type.Optional(Type.Union([Type.Literal(\"copies\"), Type.Literal(\"shadow-git\"), Type.Literal(\"hybrid\")])),\n\t\t\t\tscope: Type.Optional(Type.Union([Type.Literal(\"tools\"), Type.Literal(\"tree\")])),\n\t\t\t}, { additionalProperties: false }),\n\t\t\tasync execute(_id, params) {\n\t\t\t\tconst bridge = settingsBridge();\n\t\t\t\tif (Object.keys(params).length > 0) bridge.setRollback(params);\n\t\t\t\tconst current = bridge.getRollback();\n\t\t\t\treturn text(current, current.forcedByAuto\n\t\t\t\t\t? \"Saved settings apply normally, but rollback remains force-enabled for this Auto-mode session.\"\n\t\t\t\t\t: Object.keys(params).length > 0 ? \"Rollback settings are saved and live for subsequent tool calls.\" : \"Pass only the fields you want to change.\");\n\t\t\t},\n\t\t});\n\n\t\tpi.registerTool({\n\t\t\tname: \"settings_session_retention\",\n\t\t\tlabel: \"Session retention\",\n\t\t\tdescription: \"Read or update how many days saved sessions are retained. Set days to 0 to keep sessions forever. Cleanup applies on a later launch, not retroactively in this turn.\",\n\t\t\tparameters: Type.Object({ days: Type.Optional(Type.Integer({ minimum: 0, maximum: 36500 })) }, { additionalProperties: false }),\n\t\t\tasync execute(_id, params) {\n\t\t\t\tconst bridge = settingsBridge();\n\t\t\t\tif (params.days !== undefined) bridge.setSessionRetentionDays(params.days);\n\t\t\t\treturn text({ days: bridge.getSessionRetentionDays() }, params.days === undefined\n\t\t\t\t\t? \"Set days to change retention; 0 keeps sessions forever.\"\n\t\t\t\t\t: \"The setting is saved. Session cleanup uses it on a later launch.\");\n\t\t\t},\n\t\t});\n\t};\n\n\tpi.registerTool({\n\t\tname: \"settings_load\",\n\t\tlabel: \"Settings\",\n\t\tdescription: \"Load four narrow agent-managed settings tools for model tiers, subscription management, rollback, and session retention. Call only when the task requires inspecting or changing those settings.\",\n\t\tpromptSnippet: \"Load narrow settings controls on demand\",\n\t\tpromptGuidelines: [\"Call settings_load only when the user asks to inspect or change model tiers, subscription management, rollback, or session retention.\"],\n\t\tparameters: Type.Object({}, { additionalProperties: false }),\n\t\tasync execute() {\n\t\t\tconst alreadyLoaded = loaded;\n\t\t\tregisterDetailedTools();\n\t\t\tpi.setActiveTools([...new Set([...pi.getActiveTools(), ...DETAILED_SETTINGS_TOOL_NAMES])]);\n\t\t\treturn text(\n\t\t\t\t{ activated: [...DETAILED_SETTINGS_TOOL_NAMES], alreadyLoaded },\n\t\t\t\t\"The four tools are active for the next model step and remain active in this runtime. A new runtime starts with only settings_load visible.\",\n\t\t\t);\n\t\t},\n\t});\n}\n"]}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { ThinkingLevel } from "@ashx-j/lunr-agent";
|
|
2
|
-
import type { RollbackCapture, RollbackScope, SettingsManager } from "./settings-manager.ts";
|
|
3
|
-
export declare const SETTINGS_TOOLS_BRIDGE_SYMBOL: unique symbol;
|
|
4
|
-
export interface SettingsToolsBridge {
|
|
5
|
-
getModelTiers(): Record<string, unknown>;
|
|
6
|
-
setModelTiers(update: {
|
|
7
|
-
enabled?: boolean;
|
|
8
|
-
light?: string;
|
|
9
|
-
standard?: string;
|
|
10
|
-
heavy?: string;
|
|
11
|
-
lightThinking?: ThinkingLevel | null;
|
|
12
|
-
standardThinking?: ThinkingLevel | null;
|
|
13
|
-
heavyThinking?: ThinkingLevel | null;
|
|
14
|
-
}): void;
|
|
15
|
-
getAutoManageSubscriptions(): boolean;
|
|
16
|
-
setAutoManageSubscriptions(enabled: boolean): void;
|
|
17
|
-
getRollback(): {
|
|
18
|
-
enabled: boolean;
|
|
19
|
-
turns: number;
|
|
20
|
-
capture: RollbackCapture;
|
|
21
|
-
scope: RollbackScope;
|
|
22
|
-
forcedByAuto: boolean;
|
|
23
|
-
};
|
|
24
|
-
setRollback(update: {
|
|
25
|
-
enabled?: boolean;
|
|
26
|
-
turns?: number;
|
|
27
|
-
capture?: RollbackCapture;
|
|
28
|
-
scope?: RollbackScope;
|
|
29
|
-
}): void;
|
|
30
|
-
getSessionRetentionDays(): number;
|
|
31
|
-
setSessionRetentionDays(days: number): void;
|
|
32
|
-
}
|
|
33
|
-
export declare function registerSettingsToolsBridge(settingsManager: SettingsManager, getSessionId?: () => string | undefined): void;
|
|
34
|
-
export declare function getSettingsToolsBridge(): SettingsToolsBridge | undefined;
|
|
35
|
-
//# sourceMappingURL=settings-tools-bridge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings-tools-bridge.d.ts","sourceRoot":"","sources":["../../src/core/settings-tools-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7F,eAAO,MAAM,4BAA4B,eAAqC,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IACnC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,aAAa,CAAC,MAAM,EAAE;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QACrC,gBAAgB,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QACxC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;KACrC,GAAG,IAAI,CAAC;IACT,0BAA0B,IAAI,OAAO,CAAC;IACtC,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,WAAW,IAAI;QACd,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,eAAe,CAAC;QACzB,KAAK,EAAE,aAAa,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,WAAW,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,eAAe,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,IAAI,CAAC;IACnH,uBAAuB,IAAI,MAAM,CAAC;IAClC,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AA0CD,wBAAgB,2BAA2B,CAC1C,eAAe,EAAE,eAAe,EAChC,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,GACrC,IAAI,CAIN;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,GAAG,SAAS,CAExE","sourcesContent":["import type { ThinkingLevel } from \"@ashx-j/lunr-agent\";\nimport { isRollbackSessionForceEnabled } from \"./rollback.ts\";\nimport type { RollbackCapture, RollbackScope, SettingsManager } from \"./settings-manager.ts\";\n\nexport const SETTINGS_TOOLS_BRIDGE_SYMBOL = Symbol.for(\"@lunr/settings-tools\");\n\nexport interface SettingsToolsBridge {\n\tgetModelTiers(): Record<string, unknown>;\n\tsetModelTiers(update: {\n\t\tenabled?: boolean;\n\t\tlight?: string;\n\t\tstandard?: string;\n\t\theavy?: string;\n\t\tlightThinking?: ThinkingLevel | null;\n\t\tstandardThinking?: ThinkingLevel | null;\n\t\theavyThinking?: ThinkingLevel | null;\n\t}): void;\n\tgetAutoManageSubscriptions(): boolean;\n\tsetAutoManageSubscriptions(enabled: boolean): void;\n\tgetRollback(): {\n\t\tenabled: boolean;\n\t\tturns: number;\n\t\tcapture: RollbackCapture;\n\t\tscope: RollbackScope;\n\t\tforcedByAuto: boolean;\n\t};\n\tsetRollback(update: { enabled?: boolean; turns?: number; capture?: RollbackCapture; scope?: RollbackScope }): void;\n\tgetSessionRetentionDays(): number;\n\tsetSessionRetentionDays(days: number): void;\n}\n\nlet activeSettingsManager: SettingsManager | undefined;\nlet sessionIdProvider: (() => string | undefined) | undefined;\n\nfunction manager(): SettingsManager {\n\tif (!activeSettingsManager) throw new Error(\"Settings are unavailable in this runtime. Reload lunR and try again.\");\n\treturn activeSettingsManager;\n}\n\nconst bridge: SettingsToolsBridge = {\n\tgetModelTiers: () => manager().getModelTiers() as Record<string, unknown>,\n\tsetModelTiers(update) {\n\t\tconst settings = manager();\n\t\tif (update.enabled !== undefined) settings.setModelTiersEnabled(update.enabled);\n\t\tfor (const tier of [\"light\", \"standard\", \"heavy\"] as const) {\n\t\t\tconst model = update[tier];\n\t\t\tif (model !== undefined) settings.setTierModel(tier, model);\n\t\t\tconst key = `${tier}Thinking` as const;\n\t\t\tif (update[key] !== undefined) settings.setTierThinking(tier, update[key] ?? undefined);\n\t\t}\n\t},\n\tgetAutoManageSubscriptions: () => manager().getAutoManageSubscriptions(),\n\tsetAutoManageSubscriptions: (enabled) => manager().setAutoManageSubscriptions(enabled),\n\tgetRollback: () => ({\n\t\tenabled: manager().getRollbackEnabled(),\n\t\tturns: manager().getRollbackTurns(),\n\t\tcapture: manager().getRollbackCapture(),\n\t\tscope: manager().getRollbackScope(),\n\t\tforcedByAuto: isRollbackSessionForceEnabled(sessionIdProvider?.()),\n\t}),\n\tsetRollback(update) {\n\t\tconst settings = manager();\n\t\tif (update.enabled !== undefined) settings.setRollbackEnabled(update.enabled);\n\t\tif (update.turns !== undefined) settings.setRollbackTurns(update.turns);\n\t\tif (update.capture !== undefined) settings.setRollbackCapture(update.capture);\n\t\tif (update.scope !== undefined) settings.setRollbackScope(update.scope);\n\t},\n\tgetSessionRetentionDays: () => manager().getSessionRetentionDays(),\n\tsetSessionRetentionDays: (days) => manager().setSessionRetentionDays(days),\n};\n\nexport function registerSettingsToolsBridge(\n\tsettingsManager: SettingsManager,\n\tgetSessionId?: () => string | undefined,\n): void {\n\tactiveSettingsManager = settingsManager;\n\tsessionIdProvider = getSessionId;\n\t(globalThis as Record<symbol, unknown>)[SETTINGS_TOOLS_BRIDGE_SYMBOL] = bridge;\n}\n\nexport function getSettingsToolsBridge(): SettingsToolsBridge | undefined {\n\treturn (globalThis as Record<symbol, unknown>)[SETTINGS_TOOLS_BRIDGE_SYMBOL] as SettingsToolsBridge | undefined;\n}\n"]}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { isRollbackSessionForceEnabled } from "./rollback.js";
|
|
2
|
-
export const SETTINGS_TOOLS_BRIDGE_SYMBOL = Symbol.for("@lunr/settings-tools");
|
|
3
|
-
let activeSettingsManager;
|
|
4
|
-
let sessionIdProvider;
|
|
5
|
-
function manager() {
|
|
6
|
-
if (!activeSettingsManager)
|
|
7
|
-
throw new Error("Settings are unavailable in this runtime. Reload lunR and try again.");
|
|
8
|
-
return activeSettingsManager;
|
|
9
|
-
}
|
|
10
|
-
const bridge = {
|
|
11
|
-
getModelTiers: () => manager().getModelTiers(),
|
|
12
|
-
setModelTiers(update) {
|
|
13
|
-
const settings = manager();
|
|
14
|
-
if (update.enabled !== undefined)
|
|
15
|
-
settings.setModelTiersEnabled(update.enabled);
|
|
16
|
-
for (const tier of ["light", "standard", "heavy"]) {
|
|
17
|
-
const model = update[tier];
|
|
18
|
-
if (model !== undefined)
|
|
19
|
-
settings.setTierModel(tier, model);
|
|
20
|
-
const key = `${tier}Thinking`;
|
|
21
|
-
if (update[key] !== undefined)
|
|
22
|
-
settings.setTierThinking(tier, update[key] ?? undefined);
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
getAutoManageSubscriptions: () => manager().getAutoManageSubscriptions(),
|
|
26
|
-
setAutoManageSubscriptions: (enabled) => manager().setAutoManageSubscriptions(enabled),
|
|
27
|
-
getRollback: () => ({
|
|
28
|
-
enabled: manager().getRollbackEnabled(),
|
|
29
|
-
turns: manager().getRollbackTurns(),
|
|
30
|
-
capture: manager().getRollbackCapture(),
|
|
31
|
-
scope: manager().getRollbackScope(),
|
|
32
|
-
forcedByAuto: isRollbackSessionForceEnabled(sessionIdProvider?.()),
|
|
33
|
-
}),
|
|
34
|
-
setRollback(update) {
|
|
35
|
-
const settings = manager();
|
|
36
|
-
if (update.enabled !== undefined)
|
|
37
|
-
settings.setRollbackEnabled(update.enabled);
|
|
38
|
-
if (update.turns !== undefined)
|
|
39
|
-
settings.setRollbackTurns(update.turns);
|
|
40
|
-
if (update.capture !== undefined)
|
|
41
|
-
settings.setRollbackCapture(update.capture);
|
|
42
|
-
if (update.scope !== undefined)
|
|
43
|
-
settings.setRollbackScope(update.scope);
|
|
44
|
-
},
|
|
45
|
-
getSessionRetentionDays: () => manager().getSessionRetentionDays(),
|
|
46
|
-
setSessionRetentionDays: (days) => manager().setSessionRetentionDays(days),
|
|
47
|
-
};
|
|
48
|
-
export function registerSettingsToolsBridge(settingsManager, getSessionId) {
|
|
49
|
-
activeSettingsManager = settingsManager;
|
|
50
|
-
sessionIdProvider = getSessionId;
|
|
51
|
-
globalThis[SETTINGS_TOOLS_BRIDGE_SYMBOL] = bridge;
|
|
52
|
-
}
|
|
53
|
-
export function getSettingsToolsBridge() {
|
|
54
|
-
return globalThis[SETTINGS_TOOLS_BRIDGE_SYMBOL];
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=settings-tools-bridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings-tools-bridge.js","sourceRoot":"","sources":["../../src/core/settings-tools-bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAG9D,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AA2B/E,IAAI,qBAAkD,CAAC;AACvD,IAAI,iBAAyD,CAAC;AAE9D,SAAS,OAAO,GAAoB;IACnC,IAAI,CAAC,qBAAqB;QAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACpH,OAAO,qBAAqB,CAAC;AAAA,CAC7B;AAED,MAAM,MAAM,GAAwB;IACnC,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,aAAa,EAA6B;IACzE,aAAa,CAAC,MAAM,EAAE;QACrB,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChF,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAU,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,KAAK,KAAK,SAAS;gBAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,GAAG,IAAI,UAAmB,CAAC;YACvC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC;QACzF,CAAC;IAAA,CACD;IACD,0BAA0B,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,0BAA0B,EAAE;IACxE,0BAA0B,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC;IACtF,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,CAAC,kBAAkB,EAAE;QACvC,KAAK,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE;QACnC,OAAO,EAAE,OAAO,EAAE,CAAC,kBAAkB,EAAE;QACvC,KAAK,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE;QACnC,YAAY,EAAE,6BAA6B,CAAC,iBAAiB,EAAE,EAAE,CAAC;KAClE,CAAC;IACF,WAAW,CAAC,MAAM,EAAE;QACnB,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAAA,CACxE;IACD,uBAAuB,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,uBAAuB,EAAE;IAClE,uBAAuB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC;CAC1E,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAC1C,eAAgC,EAChC,YAAuC,EAChC;IACP,qBAAqB,GAAG,eAAe,CAAC;IACxC,iBAAiB,GAAG,YAAY,CAAC;IAChC,UAAsC,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC;AAAA,CAC/E;AAED,MAAM,UAAU,sBAAsB,GAAoC;IACzE,OAAQ,UAAsC,CAAC,4BAA4B,CAAoC,CAAC;AAAA,CAChH","sourcesContent":["import type { ThinkingLevel } from \"@ashx-j/lunr-agent\";\nimport { isRollbackSessionForceEnabled } from \"./rollback.ts\";\nimport type { RollbackCapture, RollbackScope, SettingsManager } from \"./settings-manager.ts\";\n\nexport const SETTINGS_TOOLS_BRIDGE_SYMBOL = Symbol.for(\"@lunr/settings-tools\");\n\nexport interface SettingsToolsBridge {\n\tgetModelTiers(): Record<string, unknown>;\n\tsetModelTiers(update: {\n\t\tenabled?: boolean;\n\t\tlight?: string;\n\t\tstandard?: string;\n\t\theavy?: string;\n\t\tlightThinking?: ThinkingLevel | null;\n\t\tstandardThinking?: ThinkingLevel | null;\n\t\theavyThinking?: ThinkingLevel | null;\n\t}): void;\n\tgetAutoManageSubscriptions(): boolean;\n\tsetAutoManageSubscriptions(enabled: boolean): void;\n\tgetRollback(): {\n\t\tenabled: boolean;\n\t\tturns: number;\n\t\tcapture: RollbackCapture;\n\t\tscope: RollbackScope;\n\t\tforcedByAuto: boolean;\n\t};\n\tsetRollback(update: { enabled?: boolean; turns?: number; capture?: RollbackCapture; scope?: RollbackScope }): void;\n\tgetSessionRetentionDays(): number;\n\tsetSessionRetentionDays(days: number): void;\n}\n\nlet activeSettingsManager: SettingsManager | undefined;\nlet sessionIdProvider: (() => string | undefined) | undefined;\n\nfunction manager(): SettingsManager {\n\tif (!activeSettingsManager) throw new Error(\"Settings are unavailable in this runtime. Reload lunR and try again.\");\n\treturn activeSettingsManager;\n}\n\nconst bridge: SettingsToolsBridge = {\n\tgetModelTiers: () => manager().getModelTiers() as Record<string, unknown>,\n\tsetModelTiers(update) {\n\t\tconst settings = manager();\n\t\tif (update.enabled !== undefined) settings.setModelTiersEnabled(update.enabled);\n\t\tfor (const tier of [\"light\", \"standard\", \"heavy\"] as const) {\n\t\t\tconst model = update[tier];\n\t\t\tif (model !== undefined) settings.setTierModel(tier, model);\n\t\t\tconst key = `${tier}Thinking` as const;\n\t\t\tif (update[key] !== undefined) settings.setTierThinking(tier, update[key] ?? undefined);\n\t\t}\n\t},\n\tgetAutoManageSubscriptions: () => manager().getAutoManageSubscriptions(),\n\tsetAutoManageSubscriptions: (enabled) => manager().setAutoManageSubscriptions(enabled),\n\tgetRollback: () => ({\n\t\tenabled: manager().getRollbackEnabled(),\n\t\tturns: manager().getRollbackTurns(),\n\t\tcapture: manager().getRollbackCapture(),\n\t\tscope: manager().getRollbackScope(),\n\t\tforcedByAuto: isRollbackSessionForceEnabled(sessionIdProvider?.()),\n\t}),\n\tsetRollback(update) {\n\t\tconst settings = manager();\n\t\tif (update.enabled !== undefined) settings.setRollbackEnabled(update.enabled);\n\t\tif (update.turns !== undefined) settings.setRollbackTurns(update.turns);\n\t\tif (update.capture !== undefined) settings.setRollbackCapture(update.capture);\n\t\tif (update.scope !== undefined) settings.setRollbackScope(update.scope);\n\t},\n\tgetSessionRetentionDays: () => manager().getSessionRetentionDays(),\n\tsetSessionRetentionDays: (days) => manager().setSessionRetentionDays(days),\n};\n\nexport function registerSettingsToolsBridge(\n\tsettingsManager: SettingsManager,\n\tgetSessionId?: () => string | undefined,\n): void {\n\tactiveSettingsManager = settingsManager;\n\tsessionIdProvider = getSessionId;\n\t(globalThis as Record<symbol, unknown>)[SETTINGS_TOOLS_BRIDGE_SYMBOL] = bridge;\n}\n\nexport function getSettingsToolsBridge(): SettingsToolsBridge | undefined {\n\treturn (globalThis as Record<symbol, unknown>)[SETTINGS_TOOLS_BRIDGE_SYMBOL] as SettingsToolsBridge | undefined;\n}\n"]}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
getModelTiersBridge,
|
|
4
|
-
registerModelTierBridge
|
|
5
|
-
} from "./chunk-W3CVH5RX.js";
|
|
6
|
-
import {
|
|
7
|
-
isRollbackSessionForceEnabled,
|
|
8
|
-
registerUsageServiceBridge
|
|
9
|
-
} from "./chunk-YF63P5ZT.js";
|
|
10
|
-
import {
|
|
11
|
-
registerCustomizeBridge
|
|
12
|
-
} from "./chunk-HQCKFM2O.js";
|
|
13
|
-
import {
|
|
14
|
-
registerMemoryCapBridge
|
|
15
|
-
} from "./chunk-AY6CAJSL.js";
|
|
16
|
-
|
|
17
|
-
// packages/coding-agent/dist/core/settings-tools-bridge.js
|
|
18
|
-
var SETTINGS_TOOLS_BRIDGE_SYMBOL = /* @__PURE__ */ Symbol.for("@lunr/settings-tools"), activeSettingsManager, sessionIdProvider;
|
|
19
|
-
function manager() {
|
|
20
|
-
if (!activeSettingsManager)
|
|
21
|
-
throw new Error("Settings are unavailable in this runtime. Reload lunR and try again.");
|
|
22
|
-
return activeSettingsManager;
|
|
23
|
-
}
|
|
24
|
-
var bridge = {
|
|
25
|
-
getModelTiers: () => manager().getModelTiers(),
|
|
26
|
-
setModelTiers(update) {
|
|
27
|
-
let settings = manager();
|
|
28
|
-
update.enabled !== void 0 && settings.setModelTiersEnabled(update.enabled);
|
|
29
|
-
for (let tier of ["light", "standard", "heavy"]) {
|
|
30
|
-
let model = update[tier];
|
|
31
|
-
model !== void 0 && settings.setTierModel(tier, model);
|
|
32
|
-
let key = `${tier}Thinking`;
|
|
33
|
-
update[key] !== void 0 && settings.setTierThinking(tier, update[key] ?? void 0);
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
getAutoManageSubscriptions: () => manager().getAutoManageSubscriptions(),
|
|
37
|
-
setAutoManageSubscriptions: (enabled) => manager().setAutoManageSubscriptions(enabled),
|
|
38
|
-
getRollback: () => ({
|
|
39
|
-
enabled: manager().getRollbackEnabled(),
|
|
40
|
-
turns: manager().getRollbackTurns(),
|
|
41
|
-
capture: manager().getRollbackCapture(),
|
|
42
|
-
scope: manager().getRollbackScope(),
|
|
43
|
-
forcedByAuto: isRollbackSessionForceEnabled(sessionIdProvider?.())
|
|
44
|
-
}),
|
|
45
|
-
setRollback(update) {
|
|
46
|
-
let settings = manager();
|
|
47
|
-
update.enabled !== void 0 && settings.setRollbackEnabled(update.enabled), update.turns !== void 0 && settings.setRollbackTurns(update.turns), update.capture !== void 0 && settings.setRollbackCapture(update.capture), update.scope !== void 0 && settings.setRollbackScope(update.scope);
|
|
48
|
-
},
|
|
49
|
-
getSessionRetentionDays: () => manager().getSessionRetentionDays(),
|
|
50
|
-
setSessionRetentionDays: (days) => manager().setSessionRetentionDays(days)
|
|
51
|
-
};
|
|
52
|
-
function registerSettingsToolsBridge(settingsManager, getSessionId) {
|
|
53
|
-
activeSettingsManager = settingsManager, sessionIdProvider = getSessionId, globalThis[SETTINGS_TOOLS_BRIDGE_SYMBOL] = bridge;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// packages/coding-agent/dist/core/runtime-bridges.js
|
|
57
|
-
function bindRuntimeBridges({ session, services }) {
|
|
58
|
-
let { settingsManager, modelRuntime } = services;
|
|
59
|
-
registerModelTierBridge(settingsManager), getModelTiersBridge()?.setParentThinkingProvider(() => session.thinkingLevel), registerMemoryCapBridge(settingsManager), registerCustomizeBridge(settingsManager), registerUsageServiceBridge(modelRuntime, settingsManager), registerSettingsToolsBridge(settingsManager, () => session.sessionId);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export {
|
|
63
|
-
bindRuntimeBridges
|
|
64
|
-
};
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { type EditorImageAttachment, TUI } from "@ashx-j/lunr-tui";
|
|
2
|
-
import { KeybindingsManager } from "../core/keybindings.ts";
|
|
3
|
-
import type { SessionInfo, SessionListProgress } from "../core/session-manager.ts";
|
|
4
|
-
import { CustomEditor } from "../modes/interactive/components/custom-editor.ts";
|
|
5
|
-
export interface StartupShellSubmission {
|
|
6
|
-
text: string;
|
|
7
|
-
attachments: EditorImageAttachment[];
|
|
8
|
-
}
|
|
9
|
-
export interface InteractiveShellBinding {
|
|
10
|
-
ui: TUI;
|
|
11
|
-
editor: CustomEditor;
|
|
12
|
-
keybindings: KeybindingsManager;
|
|
13
|
-
pendingSubmissions: StartupShellSubmission[];
|
|
14
|
-
}
|
|
15
|
-
type SessionsLoader = (onProgress?: SessionListProgress) => Promise<SessionInfo[]>;
|
|
16
|
-
export declare class InteractiveStartupShell {
|
|
17
|
-
readonly ui: TUI;
|
|
18
|
-
readonly editor: CustomEditor;
|
|
19
|
-
readonly keybindings: KeybindingsManager;
|
|
20
|
-
readonly pendingSubmissions: StartupShellSubmission[];
|
|
21
|
-
private readonly terminal;
|
|
22
|
-
private readonly status;
|
|
23
|
-
private readonly editorContainer;
|
|
24
|
-
private firstFramePromise;
|
|
25
|
-
private resolveFirstFrame;
|
|
26
|
-
private exitPromise;
|
|
27
|
-
private resolveExit;
|
|
28
|
-
private started;
|
|
29
|
-
private handedOff;
|
|
30
|
-
private exitRequested;
|
|
31
|
-
private lastClearAt;
|
|
32
|
-
constructor();
|
|
33
|
-
get isExitRequested(): boolean;
|
|
34
|
-
start(): void;
|
|
35
|
-
pause(): void;
|
|
36
|
-
resume(): void;
|
|
37
|
-
waitForFirstFrame(): Promise<void>;
|
|
38
|
-
binding(): InteractiveShellBinding;
|
|
39
|
-
showError(error: unknown): void;
|
|
40
|
-
fail(error: unknown): Promise<void>;
|
|
41
|
-
stop(): void;
|
|
42
|
-
select<T>(title: string, options: Array<{
|
|
43
|
-
label: string;
|
|
44
|
-
value: T;
|
|
45
|
-
}>): Promise<T | undefined>;
|
|
46
|
-
confirm(title: string, message: string): Promise<boolean>;
|
|
47
|
-
input(title: string, placeholder?: string): Promise<string | undefined>;
|
|
48
|
-
selectSession(currentSessionsLoader: SessionsLoader, allSessionsLoader: SessionsLoader): Promise<string | null>;
|
|
49
|
-
private showModal;
|
|
50
|
-
private restoreShellLayout;
|
|
51
|
-
private installInputHandlers;
|
|
52
|
-
private pasteClipboard;
|
|
53
|
-
}
|
|
54
|
-
export {};
|
|
55
|
-
//# sourceMappingURL=interactive-shell.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-shell.d.ts","sourceRoot":"","sources":["../../src/startup/interactive-shell.ts"],"names":[],"mappings":"AAIA,OAAO,EAEN,KAAK,qBAAqB,EAM1B,GAAG,EACH,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAGhF,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACvC,EAAE,EAAE,GAAG,CAAC;IACR,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,kBAAkB,CAAC;IAChC,kBAAkB,EAAE,sBAAsB,EAAE,CAAC;CAC7C;AAED,KAAK,cAAc,GAAG,CAAC,UAAU,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAwCnF,qBAAa,uBAAuB;IACnC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;IACjB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,CAAM;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAC7E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAK;IAExB,cAeC;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,KAAK,IAAI,IAAI,CAMZ;IAED,KAAK,IAAI,IAAI,CAIZ;IAED,MAAM,IAAI,IAAI,CAKb;IAED,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjC;IAED,OAAO,IAAI,uBAAuB,CAQjC;IAED,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAO9B;IAEK,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxC;IAED,IAAI,IAAI,IAAI,CAQX;IAEK,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAmBlG;IAEK,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO9D;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgB5E;IAEK,aAAa,CAClB,qBAAqB,EAAE,cAAc,EACrC,iBAAiB,EAAE,cAAc,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxB;IAED,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,oBAAoB;YA6Bd,cAAc;CA4B5B","sourcesContent":["import * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport {\n\tContainer,\n\ttype EditorImageAttachment,\n\ttype EditorTheme,\n\tProcessTerminal,\n\tSpacer,\n\tsetKeybindings,\n\tText,\n\tTUI,\n} from \"@ashx-j/lunr-tui\";\nimport { KeybindingsManager } from \"../core/keybindings.ts\";\nimport type { SessionInfo, SessionListProgress } from \"../core/session-manager.ts\";\nimport { CustomEditor } from \"../modes/interactive/components/custom-editor.ts\";\nimport { markStartupMilestone } from \"./startup-milestones.ts\";\n\nexport interface StartupShellSubmission {\n\ttext: string;\n\tattachments: EditorImageAttachment[];\n}\n\nexport interface InteractiveShellBinding {\n\tui: TUI;\n\teditor: CustomEditor;\n\tkeybindings: KeybindingsManager;\n\tpendingSubmissions: StartupShellSubmission[];\n}\n\ntype SessionsLoader = (onProgress?: SessionListProgress) => Promise<SessionInfo[]>;\n\nconst identity = (text: string) => text;\nconst shellEditorTheme: EditorTheme = {\n\tborderColor: (text) => `\\x1b[38;5;60m${text}\\x1b[0m`,\n\tselectList: {\n\t\tselectedPrefix: identity,\n\t\tselectedText: identity,\n\t\tdescription: identity,\n\t\tscrollInfo: identity,\n\t\tnoMatch: identity,\n\t},\n};\n\nclass StartupProcessTerminal extends ProcessTerminal {\n\tprivate watchForFirstFrame = false;\n\tprivate firstFrameCallback: (() => void) | undefined;\n\n\tsetFirstFrameCallback(callback: () => void): void {\n\t\tthis.firstFrameCallback = callback;\n\t\tthis.watchForFirstFrame = true;\n\t}\n\n\toverride start(onInput: (data: string) => void, onResize: () => void): void {\n\t\tmarkStartupMilestone(\"input_handler_armed\");\n\t\tsuper.start(onInput, onResize);\n\t\tmarkStartupMilestone(\"raw_mode_active\");\n\t}\n\n\toverride write(data: string): void {\n\t\tsuper.write(data);\n\t\t// Narrow terminals wrap the status line, so do not key off a substring.\n\t\tif (this.watchForFirstFrame && data.length > 0) {\n\t\t\tthis.watchForFirstFrame = false;\n\t\t\tmarkStartupMilestone(\"first_frame_committed\");\n\t\t\tthis.firstFrameCallback?.();\n\t\t}\n\t}\n}\n\nexport class InteractiveStartupShell {\n\treadonly ui: TUI;\n\treadonly editor: CustomEditor;\n\treadonly keybindings: KeybindingsManager;\n\treadonly pendingSubmissions: StartupShellSubmission[] = [];\n\tprivate readonly terminal: StartupProcessTerminal;\n\tprivate readonly status = new Text(\"Starting lunR. You can type now.\", 1, 0);\n\tprivate readonly editorContainer = new Container();\n\tprivate firstFramePromise: Promise<void>;\n\tprivate resolveFirstFrame!: () => void;\n\tprivate exitPromise: Promise<void>;\n\tprivate resolveExit!: () => void;\n\tprivate started = false;\n\tprivate handedOff = false;\n\tprivate exitRequested = false;\n\tprivate lastClearAt = 0;\n\n\tconstructor() {\n\t\tthis.terminal = new StartupProcessTerminal();\n\t\tthis.ui = new TUI(this.terminal);\n\t\tthis.keybindings = KeybindingsManager.create();\n\t\tsetKeybindings(this.keybindings);\n\t\tthis.editor = new CustomEditor(this.ui, shellEditorTheme, this.keybindings, { paddingX: 1 });\n\t\tthis.editorContainer.addChild(this.editor);\n\t\tthis.firstFramePromise = new Promise((resolve) => {\n\t\t\tthis.resolveFirstFrame = resolve;\n\t\t});\n\t\tthis.exitPromise = new Promise((resolve) => {\n\t\t\tthis.resolveExit = resolve;\n\t\t});\n\t\tthis.terminal.setFirstFrameCallback(this.resolveFirstFrame);\n\t\tthis.installInputHandlers();\n\t}\n\n\tget isExitRequested(): boolean {\n\t\treturn this.exitRequested;\n\t}\n\n\tstart(): void {\n\t\tif (this.started) return;\n\t\tthis.restoreShellLayout();\n\t\tthis.ui.setAlternateScreen(true);\n\t\tthis.ui.start();\n\t\tthis.started = true;\n\t}\n\n\tpause(): void {\n\t\tif (!this.started || this.handedOff) return;\n\t\tthis.ui.stop();\n\t\tthis.started = false;\n\t}\n\n\tresume(): void {\n\t\tif (this.started || this.handedOff || this.exitRequested) return;\n\t\tthis.restoreShellLayout();\n\t\tthis.ui.start();\n\t\tthis.started = true;\n\t}\n\n\twaitForFirstFrame(): Promise<void> {\n\t\treturn this.firstFramePromise;\n\t}\n\n\tbinding(): InteractiveShellBinding {\n\t\tthis.handedOff = true;\n\t\treturn {\n\t\t\tui: this.ui,\n\t\t\teditor: this.editor,\n\t\t\tkeybindings: this.keybindings,\n\t\t\tpendingSubmissions: this.pendingSubmissions,\n\t\t};\n\t}\n\n\tshowError(error: unknown): void {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthis.status.setText(\n\t\t\t`Startup failed: ${message}\\nYour draft is intact. Press Ctrl+C twice or Ctrl+D on an empty draft to exit.`,\n\t\t);\n\t\tthis.editor.disableSubmit = true;\n\t\tthis.ui.requestRender();\n\t}\n\n\tasync fail(error: unknown): Promise<void> {\n\t\tthis.showError(error);\n\t\tif (process.env.PI_STARTUP_BENCHMARK === \"1\") {\n\t\t\tthis.stop();\n\t\t\treturn;\n\t\t}\n\t\tawait this.exitPromise;\n\t}\n\n\tstop(): void {\n\t\tif (this.exitRequested) return;\n\t\tthis.exitRequested = true;\n\t\tif (this.started) {\n\t\t\tthis.ui.stop();\n\t\t\tthis.started = false;\n\t\t}\n\t\tthis.resolveExit();\n\t}\n\n\tasync select<T>(title: string, options: Array<{ label: string; value: T }>): Promise<T | undefined> {\n\t\tconst { ExtensionSelectorComponent } = await import(\"../modes/interactive/components/extension-selector.ts\");\n\t\treturn new Promise((resolve) => {\n\t\t\tlet settled = false;\n\t\t\tconst finish = (value: T | undefined) => {\n\t\t\t\tif (settled) return;\n\t\t\t\tsettled = true;\n\t\t\t\tthis.restoreShellLayout();\n\t\t\t\tresolve(value);\n\t\t\t};\n\t\t\tconst selector = new ExtensionSelectorComponent(\n\t\t\t\ttitle,\n\t\t\t\toptions.map((option) => option.label),\n\t\t\t\t(label) => finish(options.find((option) => option.label === label)?.value),\n\t\t\t\t() => finish(undefined),\n\t\t\t\t{ tui: this.ui },\n\t\t\t);\n\t\t\tthis.showModal(selector, selector);\n\t\t});\n\t}\n\n\tasync confirm(title: string, message: string): Promise<boolean> {\n\t\treturn (\n\t\t\t(await this.select(`${title}\\n${message}`, [\n\t\t\t\t{ label: \"Yes\", value: true },\n\t\t\t\t{ label: \"No\", value: false },\n\t\t\t])) ?? false\n\t\t);\n\t}\n\n\tasync input(title: string, placeholder?: string): Promise<string | undefined> {\n\t\tconst { ExtensionInputComponent } = await import(\"../modes/interactive/components/extension-input.ts\");\n\t\treturn new Promise((resolve) => {\n\t\t\tlet settled = false;\n\t\t\tconst finish = (value: string | undefined) => {\n\t\t\t\tif (settled) return;\n\t\t\t\tsettled = true;\n\t\t\t\tinput.dispose();\n\t\t\t\tthis.restoreShellLayout();\n\t\t\t\tresolve(value);\n\t\t\t};\n\t\t\tconst input = new ExtensionInputComponent(title, placeholder, finish, () => finish(undefined), {\n\t\t\t\ttui: this.ui,\n\t\t\t});\n\t\t\tthis.showModal(input, input);\n\t\t});\n\t}\n\n\tasync selectSession(\n\t\tcurrentSessionsLoader: SessionsLoader,\n\t\tallSessionsLoader: SessionsLoader,\n\t): Promise<string | null> {\n\t\tconst { SessionSelectorComponent } = await import(\"../modes/interactive/components/session-selector.ts\");\n\t\treturn new Promise((resolve) => {\n\t\t\tlet settled = false;\n\t\t\tconst finish = (path: string | null) => {\n\t\t\t\tif (settled) return;\n\t\t\t\tsettled = true;\n\t\t\t\tthis.restoreShellLayout();\n\t\t\t\tresolve(path);\n\t\t\t};\n\t\t\tconst selector = new SessionSelectorComponent(\n\t\t\t\tcurrentSessionsLoader,\n\t\t\t\tallSessionsLoader,\n\t\t\t\t(path) => finish(path),\n\t\t\t\t() => finish(null),\n\t\t\t\t() => this.stop(),\n\t\t\t\t() => this.ui.requestRender(),\n\t\t\t\t{ showRenameHint: false, keybindings: this.keybindings },\n\t\t\t);\n\t\t\tthis.showModal(selector, selector.getSessionList());\n\t\t});\n\t}\n\n\tprivate showModal(component: Parameters<TUI[\"addChild\"]>[0], focus: Parameters<TUI[\"setFocus\"]>[0]): void {\n\t\tthis.ui.pinFrom(null);\n\t\tthis.ui.clear();\n\t\tthis.ui.addChild(component);\n\t\tthis.ui.setFocus(focus);\n\t\tthis.ui.requestRender(true);\n\t}\n\n\tprivate restoreShellLayout(): void {\n\t\tthis.ui.pinFrom(null);\n\t\tthis.ui.clear();\n\t\tthis.ui.addChild(new Spacer(1));\n\t\tthis.ui.addChild(this.status);\n\t\tthis.ui.addChild(this.editorContainer);\n\t\tthis.ui.pinFrom(this.editorContainer);\n\t\tthis.ui.setFocus(this.editor);\n\t\tthis.ui.requestRender(true);\n\t}\n\n\tprivate installInputHandlers(): void {\n\t\tthis.editor.onAction(\"app.clear\", () => {\n\t\t\tconst now = Date.now();\n\t\t\tif (this.editor.getText().length === 0 && now - this.lastClearAt < 500) {\n\t\t\t\tthis.stop();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.editor.setText(\"\");\n\t\t\tthis.lastClearAt = now;\n\t\t});\n\t\tthis.editor.onCtrlD = () => this.stop();\n\t\tthis.editor.onPasteImage = () => void this.pasteClipboard();\n\t\tthis.editor.onSubmit = (text) => {\n\t\t\tconst attachments = this.editor.takePendingImages();\n\t\t\tif (!text.trim()) return;\n\t\t\tif (this.pendingSubmissions.length > 0) {\n\t\t\t\tthis.editor.setText(text);\n\t\t\t\tthis.editor.restoreImageMarkers(attachments);\n\t\t\t\tthis.status.setText(\"One prompt is already queued. Your current draft will stay in the editor.\");\n\t\t\t\tthis.ui.requestRender();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.pendingSubmissions.push({ text, attachments });\n\t\t\tthis.editor.addToHistory(text);\n\t\t\tthis.status.setText(\"Prompt queued. Finishing startup before it can run.\");\n\t\t\tthis.ui.requestRender();\n\t\t};\n\t}\n\n\tprivate async pasteClipboard(): Promise<void> {\n\t\ttry {\n\t\t\tconst [{ readClipboardText }, { extensionForImageMimeType, readClipboardImage }] = await Promise.all([\n\t\t\t\timport(\"../utils/clipboard.ts\"),\n\t\t\t\timport(\"../utils/clipboard-image.ts\"),\n\t\t\t]);\n\t\t\tconst image = await readClipboardImage();\n\t\t\tif (image) {\n\t\t\t\tconst extension = extensionForImageMimeType(image.mimeType) ?? \"png\";\n\t\t\t\tconst filePath = path.join(os.tmpdir(), `lunr-clipboard-${crypto.randomUUID()}.${extension}`);\n\t\t\t\tfs.writeFileSync(filePath, Buffer.from(image.bytes));\n\t\t\t\tconst id = this.editor.insertImageMarker({ path: filePath, mimeType: image.mimeType });\n\t\t\t\tthis.status.setText(`Pasted [image_${id}] while startup continues.`);\n\t\t\t\tthis.ui.requestRender();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst text = await readClipboardText();\n\t\t\tif (text) {\n\t\t\t\tthis.editor.insertTextAtCursor(text);\n\t\t\t\tthis.ui.requestRender();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.status.setText(\"Clipboard contains no image or text.\");\n\t\t} catch (error) {\n\t\t\tthis.status.setText(`Clipboard paste failed: ${error instanceof Error ? error.message : String(error)}`);\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n}\n"]}
|