@ashx-j/lunr 0.2.21 → 0.2.22
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 +1 -1
- package/README.md +20 -4
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +1 -0
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-browser.d.ts +3 -0
- package/dist/builtin-extensions/lunr-browser.d.ts.map +1 -0
- package/dist/builtin-extensions/lunr-browser.js +56 -0
- package/dist/builtin-extensions/lunr-browser.js.map +1 -0
- package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-todos.js +15 -0
- package/dist/builtin-extensions/lunr-todos.js.map +1 -1
- package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-intercom/index.js +3 -0
- package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.js +5 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +18 -5
- package/dist/builtin-extensions/pi-subagents/src/extension/index.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 +3 -0
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/communication.d.ts +17 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/communication.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/communication.js +45 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/communication.js.map +1 -0
- 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 +4 -11
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts +4 -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 +160 -51
- package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js +5 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts +2 -0
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js +3 -2
- package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.js +2 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts +1 -0
- 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 +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js.map +1 -1
- 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 +3 -0
- 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-control.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-control.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-control.js +3 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-control.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 +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/communication.d.ts +18 -0
- package/dist/builtin-extensions/pi-subagents/src/tui/communication.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/tui/communication.js +47 -0
- package/dist/builtin-extensions/pi-subagents/src/tui/communication.js.map +1 -0
- package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.js +11 -7
- package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +2 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/install-cli.d.ts.map +1 -1
- package/dist/cli/install-cli.js +15 -45
- package/dist/cli/install-cli.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +9 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +126 -29
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session.d.ts +3 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +20 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/browser/network.d.ts +9 -0
- package/dist/core/browser/network.d.ts.map +1 -0
- package/dist/core/browser/network.js +146 -0
- package/dist/core/browser/network.js.map +1 -0
- package/dist/core/browser/runtime.d.ts +24 -0
- package/dist/core/browser/runtime.d.ts.map +1 -0
- package/dist/core/browser/runtime.js +289 -0
- package/dist/core/browser/runtime.js.map +1 -0
- package/dist/core/browser/schema.d.ts +16 -0
- package/dist/core/browser/schema.d.ts.map +1 -0
- package/dist/core/browser/schema.js +36 -0
- package/dist/core/browser/schema.js.map +1 -0
- package/dist/core/browser/settings.d.ts +8 -0
- package/dist/core/browser/settings.d.ts.map +1 -0
- package/dist/core/browser/settings.js +30 -0
- package/dist/core/browser/settings.js.map +1 -0
- package/dist/core/browser/setup.d.ts +2 -0
- package/dist/core/browser/setup.d.ts.map +1 -0
- package/dist/core/browser/setup.js +16 -0
- package/dist/core/browser/setup.js.map +1 -0
- package/dist/core/customize.d.ts.map +1 -1
- package/dist/core/customize.js +15 -14
- package/dist/core/customize.js.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +1 -1
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +1 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/install-features.d.ts.map +1 -1
- package/dist/core/install-features.js +10 -8
- package/dist/core/install-features.js.map +1 -1
- package/dist/core/memory-cap.d.ts.map +1 -1
- package/dist/core/memory-cap.js +5 -3
- package/dist/core/memory-cap.js.map +1 -1
- package/dist/core/model-tiers.d.ts.map +1 -1
- package/dist/core/model-tiers.js +9 -6
- package/dist/core/model-tiers.js.map +1 -1
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +9 -0
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/plan-mode.d.ts.map +1 -1
- package/dist/core/plan-mode.js +3 -0
- package/dist/core/plan-mode.js.map +1 -1
- package/dist/core/process-registry.d.ts.map +1 -1
- package/dist/core/process-registry.js +6 -4
- package/dist/core/process-registry.js.map +1 -1
- package/dist/core/runtime-scope.d.ts +11 -0
- package/dist/core/runtime-scope.d.ts.map +1 -0
- package/dist/core/runtime-scope.js +3 -0
- package/dist/core/runtime-scope.js.map +1 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +13 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-handoff.d.ts +35 -0
- package/dist/core/session-handoff.d.ts.map +1 -0
- package/dist/core/session-handoff.js +214 -0
- package/dist/core/session-handoff.js.map +1 -0
- package/dist/core/session-manager.d.ts +20 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +184 -22
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-ownership.d.ts +28 -0
- package/dist/core/session-ownership.d.ts.map +1 -0
- package/dist/core/session-ownership.js +138 -0
- package/dist/core/session-ownership.js.map +1 -0
- package/dist/core/session-retention.d.ts.map +1 -1
- package/dist/core/session-retention.js +11 -2
- package/dist/core/session-retention.js.map +1 -1
- package/dist/core/settings-manager.d.ts +7 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +18 -0
- 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 +2 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +5 -2
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/todo-settings.d.ts +5 -0
- package/dist/core/todo-settings.d.ts.map +1 -0
- package/dist/core/todo-settings.js +7 -0
- package/dist/core/todo-settings.js.map +1 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +4 -4
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +5 -3
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +4 -4
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +4 -4
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +4 -4
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +4 -4
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +11 -2
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +31 -4
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +4 -4
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/usage-service.d.ts.map +1 -1
- package/dist/core/usage-service.js +5 -3
- package/dist/core/usage-service.js.map +1 -1
- package/dist/gateway/adapters/discord.d.ts +12 -1
- package/dist/gateway/adapters/discord.d.ts.map +1 -1
- package/dist/gateway/adapters/discord.js +112 -17
- package/dist/gateway/adapters/discord.js.map +1 -1
- package/dist/gateway/adapters/telegram.d.ts +4 -2
- package/dist/gateway/adapters/telegram.d.ts.map +1 -1
- package/dist/gateway/adapters/telegram.js +34 -11
- package/dist/gateway/adapters/telegram.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts +14 -3
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +252 -60
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/approval.d.ts +1 -0
- package/dist/gateway/approval.d.ts.map +1 -1
- package/dist/gateway/approval.js +60 -18
- package/dist/gateway/approval.js.map +1 -1
- package/dist/gateway/authz.d.ts +2 -0
- package/dist/gateway/authz.d.ts.map +1 -1
- package/dist/gateway/authz.js +13 -0
- package/dist/gateway/authz.js.map +1 -1
- package/dist/gateway/buttons.d.ts +3 -1
- package/dist/gateway/buttons.d.ts.map +1 -1
- package/dist/gateway/buttons.js +18 -3
- package/dist/gateway/buttons.js.map +1 -1
- package/dist/gateway/command.d.ts.map +1 -1
- package/dist/gateway/command.js +49 -4
- package/dist/gateway/command.js.map +1 -1
- package/dist/gateway/commands.d.ts.map +1 -1
- package/dist/gateway/commands.js +18 -3
- package/dist/gateway/commands.js.map +1 -1
- package/dist/gateway/config.d.ts +5 -0
- package/dist/gateway/config.d.ts.map +1 -1
- package/dist/gateway/config.js +5 -0
- package/dist/gateway/config.js.map +1 -1
- package/dist/gateway/conversations.d.ts +14 -0
- package/dist/gateway/conversations.d.ts.map +1 -0
- package/dist/gateway/conversations.js +30 -0
- package/dist/gateway/conversations.js.map +1 -0
- package/dist/gateway/download.d.ts +2 -0
- package/dist/gateway/download.d.ts.map +1 -0
- package/dist/gateway/download.js +36 -0
- package/dist/gateway/download.js.map +1 -0
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +85 -26
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/mobile-commands.d.ts +24 -0
- package/dist/gateway/mobile-commands.d.ts.map +1 -0
- package/dist/gateway/mobile-commands.js +422 -0
- package/dist/gateway/mobile-commands.js.map +1 -0
- package/dist/gateway/presenter.d.ts +16 -0
- package/dist/gateway/presenter.d.ts.map +1 -0
- package/dist/gateway/presenter.js +210 -0
- package/dist/gateway/presenter.js.map +1 -0
- package/dist/gateway/router.d.ts +1 -0
- package/dist/gateway/router.d.ts.map +1 -1
- package/dist/gateway/router.js +32 -3
- package/dist/gateway/router.js.map +1 -1
- package/dist/gateway/service.d.ts +46 -0
- package/dist/gateway/service.d.ts.map +1 -0
- package/dist/gateway/service.js +395 -0
- package/dist/gateway/service.js.map +1 -0
- package/dist/gateway/setup.d.ts +4 -0
- package/dist/gateway/setup.d.ts.map +1 -0
- package/dist/gateway/setup.js +146 -0
- package/dist/gateway/setup.js.map +1 -0
- package/dist/gateway/types.d.ts +4 -2
- package/dist/gateway/types.d.ts.map +1 -1
- package/dist/gateway/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +2 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +11 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +53 -16
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/copyable-text.d.ts +31 -0
- package/dist/modes/interactive/components/copyable-text.d.ts.map +1 -0
- package/dist/modes/interactive/components/copyable-text.js +165 -0
- package/dist/modes/interactive/components/copyable-text.js.map +1 -0
- package/dist/modes/interactive/components/custom-entry.d.ts +1 -0
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-entry.js +8 -0
- package/dist/modes/interactive/components/custom-entry.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +8 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +16 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +5 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +38 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +151 -7
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/node-runtime/agent-session-services-NQ6GKOIK.js +49 -0
- package/dist/node-runtime/{builtin-extensions-JCOPAAB5.js → builtin-extensions-GVC6IFDU.js} +6 -5
- package/dist/node-runtime/{chunk-LTYWTR3V.js → chunk-2MI5OPMN.js} +17 -2
- package/dist/node-runtime/{chunk-W3CVH5RX.js → chunk-2TKODGBZ.js} +11 -6
- package/dist/node-runtime/chunk-4EULYYR4.js +62 -0
- package/dist/node-runtime/chunk-5BNJ4JUH.js +672 -0
- package/dist/node-runtime/{chunk-6N22HULO.js → chunk-5D7LC2ZQ.js} +7 -2
- package/dist/node-runtime/{chunk-KBKMCJDU.js → chunk-5ZQXRPMC.js} +19 -4
- package/dist/node-runtime/{chunk-6KDIOJL3.js → chunk-6427XAWG.js} +3 -3
- package/dist/node-runtime/{chunk-BOHIDQT4.js → chunk-6B2POMK7.js} +1 -1
- package/dist/node-runtime/{chunk-RNBHABBA.js → chunk-7QWNYZDI.js} +7 -0
- package/dist/node-runtime/chunk-AZJHNQKQ.js +205 -0
- package/dist/node-runtime/{chunk-A3KMVBZV.js → chunk-BBUVIEZB.js} +1 -10
- package/dist/node-runtime/chunk-BFNXONG3.js +521 -0
- package/dist/node-runtime/{chunk-IRPJXI6U.js → chunk-BX2RB477.js} +1 -1
- package/dist/node-runtime/chunk-CCCN2UCX.js +14 -0
- package/dist/node-runtime/{chunk-25I2BHAA.js → chunk-CSUZVNYE.js} +1 -1
- package/dist/node-runtime/{chunk-QZMODZQ2.js → chunk-E24EO34J.js} +2 -1
- package/dist/node-runtime/{chunk-2BUAYZ7K.js → chunk-EQ63ANHL.js} +422 -123
- package/dist/node-runtime/{chunk-GB2MGFLI.js → chunk-GJSAD4AB.js} +216 -201
- package/dist/node-runtime/{chunk-W3SILANP.js → chunk-GMHJCCEN.js} +8 -8
- package/dist/node-runtime/{chunk-DDWHZ633.js → chunk-GNN7H3B7.js} +1 -1
- package/dist/node-runtime/chunk-GS66LV4M.js +2830 -0
- package/dist/node-runtime/{chunk-6BEIBLQ3.js → chunk-H3XF4UVQ.js} +1 -1
- package/dist/node-runtime/chunk-H4K3JDRB.js +47 -0
- package/dist/node-runtime/{chunk-YMEAYRBE.js → chunk-HTFRRDSF.js} +2 -7
- package/dist/node-runtime/chunk-IMLCWLPI.js +9 -0
- package/dist/node-runtime/{chunk-Y5KOEMBH.js → chunk-IQIEU7SB.js} +9 -674
- package/dist/node-runtime/{chunk-OPEK5RRY.js → chunk-IVXYUAJE.js} +1 -1
- package/dist/node-runtime/{chunk-PDNXVXMD.js → chunk-IWOWXRWU.js} +58 -48
- package/dist/node-runtime/chunk-KKUTQQV7.js +144 -0
- package/dist/node-runtime/{chunk-AWVD5IEY.js → chunk-LMBNLFXQ.js} +23 -12
- package/dist/node-runtime/{chunk-7NBZ5P7I.js → chunk-NAY6UUQZ.js} +1 -1
- package/dist/node-runtime/chunk-OAR4TYZE.js +146 -0
- package/dist/node-runtime/{chunk-STERBGUB.js → chunk-OFKSVRV7.js} +2 -2
- package/dist/node-runtime/{chunk-JZQ7F36T.js → chunk-ORH324EP.js} +19 -3
- package/dist/node-runtime/{chunk-2SJB2AWP.js → chunk-PC2Z5TKZ.js} +3 -3
- package/dist/node-runtime/{chunk-SY2TFMLO.js → chunk-QDGKKKUM.js} +46 -151
- package/dist/node-runtime/chunk-R3K2F5GI.js +122 -0
- package/dist/node-runtime/chunk-RMQZU2YU.js +117 -0
- package/dist/node-runtime/{chunk-XI77KVKA.js → chunk-TDL7UWJ7.js} +283 -2999
- package/dist/node-runtime/{chunk-G6LRAP36.js → chunk-TQGPP4SC.js} +1 -1
- package/dist/node-runtime/chunk-UAEOTO52.js +119 -0
- package/dist/node-runtime/{chunk-VZR3NCM7.js → chunk-UAFLNHSH.js} +18 -14
- package/dist/node-runtime/{chunk-AY6CAJSL.js → chunk-UJOCPOMX.js} +6 -3
- package/dist/node-runtime/chunk-UP2XBVH5.js +40 -0
- package/dist/node-runtime/{chunk-WJVFOIB5.js → chunk-UQUCFAJ3.js} +1 -1
- package/dist/node-runtime/chunk-URD2SLIT.js +1019 -0
- package/dist/node-runtime/chunk-US544NN6.js +13 -0
- package/dist/node-runtime/chunk-UWPJL22I.js +341 -0
- package/dist/node-runtime/chunk-V2A7CEXK.js +355 -0
- package/dist/node-runtime/chunk-VJPTNWAP.js +708 -0
- package/dist/node-runtime/{chunk-WKDK4C5P.js → chunk-VSSXXL36.js} +38 -164
- package/dist/node-runtime/{chunk-4I23VTC4.js → chunk-VWCE2HSZ.js} +21 -124
- package/dist/node-runtime/{chunk-WLLDXJRT.js → chunk-WADV2VDS.js} +22 -1014
- package/dist/node-runtime/{chunk-GKLEQ3I4.js → chunk-XLTL257W.js} +126 -27
- package/dist/node-runtime/chunk-YPHAIRZT.js +10 -0
- package/dist/node-runtime/cli-runtime.js +2 -2
- package/dist/node-runtime/command-3JHHXOPX.js +45 -0
- package/dist/node-runtime/commands-2JVNFGMQ.js +36 -0
- package/dist/node-runtime/{commands-MV5KOZ64.js → commands-KAMO2T6P.js} +10 -10
- package/dist/node-runtime/config-RORQUQFG.js +20 -0
- package/dist/node-runtime/{customize-LF5VST47.js → customize-VFJV3U6A.js} +2 -1
- package/dist/node-runtime/{direct-tool-executor-BK7CLEBX.js → direct-tool-executor-YAVOLDFY.js} +8 -8
- package/dist/node-runtime/{export-html-TEXVV5RP.js → export-html-KBFVV63J.js} +4 -3
- package/dist/node-runtime/{extension-input-O4HSAEM4.js → extension-input-K24TVKVW.js} +4 -4
- package/dist/node-runtime/{extension-selector-X5FCX43D.js → extension-selector-SPNF7EDR.js} +4 -4
- package/dist/node-runtime/{extract-XLQSJN4V.js → extract-EQJE7FZZ.js} +2 -2
- package/dist/node-runtime/{gateway-BM6NLOH4.js → gateway-VFO6SFKK.js} +275 -994
- package/dist/node-runtime/{gemini-search-U7SUMPQA.js → gemini-search-35OCRFLN.js} +1 -1
- package/dist/node-runtime/{gemini-url-context-PXWCBQHK.js → gemini-url-context-UQY3PHHW.js} +2 -2
- package/dist/node-runtime/index.js +104 -65
- package/dist/node-runtime/{init-3C7Z24OI.js → init-X2LIUB2H.js} +3 -3
- package/dist/node-runtime/{install-cli-EXMJQESX.js → install-cli-C3CF7O7N.js} +21 -82
- package/dist/node-runtime/interactive-mode-LOM6AIF6.js +72 -0
- package/dist/node-runtime/{interactive-view-ILS6TAN5.js → interactive-view-IDSCPPK7.js} +8 -8
- package/dist/node-runtime/lunr-browser-YNW7FTYX.js +87 -0
- package/dist/node-runtime/{lunr-cron-4VHP4E4B.js → lunr-cron-BKHGNBKT.js} +19 -5
- package/dist/node-runtime/main.js +44 -31
- package/dist/node-runtime/{memory-cap-3S4XRLNP.js → memory-cap-EL3KL4JJ.js} +2 -1
- package/dist/node-runtime/mobile-commands-HMP25WBC.js +32 -0
- package/dist/node-runtime/model-runtime-PLQKAG4B.js +16 -0
- package/dist/node-runtime/{model-tiers-NJLHUEGK.js → model-tiers-OU3U5CZG.js} +2 -1
- package/dist/node-runtime/{package-manager-cli-N37546V5.js → package-manager-cli-VCK4E2RC.js} +22 -15
- package/dist/node-runtime/{pi-intercom-NV2LW6X7.js → pi-intercom-HBPK5HSJ.js} +4 -1
- package/dist/node-runtime/{pi-mcp-adapter-GUFZWW54.js → pi-mcp-adapter-E6WULBKF.js} +4 -4
- package/dist/node-runtime/{pi-subagents-6MUIFNDM.js → pi-subagents-FEUDLJOE.js} +201 -78
- package/dist/node-runtime/{pi-web-access-2CQGFLT2.js → pi-web-access-WTGMNZ32.js} +15 -15
- package/dist/node-runtime/process-registry-4FAKZQOL.js +31 -0
- package/dist/node-runtime/{proxy-modes-V6YVFH3C.js → proxy-modes-OSQCWRBI.js} +9 -9
- package/dist/node-runtime/rpc-entry.js +44 -31
- package/dist/node-runtime/{rpc-mode-W5ZTLTMZ.js → rpc-mode-P5ODXPEG.js} +2 -2
- package/dist/node-runtime/runtime-4VA6JKNF.js +373 -0
- package/dist/node-runtime/{runtime-bridges-2VQTLPOZ.js → runtime-bridges-3XUQ46XW.js} +6 -5
- package/dist/node-runtime/service-ISSP6VHE.js +36 -0
- package/dist/node-runtime/session-handoff-HC7R5E24.js +33 -0
- package/dist/node-runtime/{session-manager-E7AREDTV.js → session-manager-CFN4UFM2.js} +2 -1
- package/dist/node-runtime/{session-selector-FJ7M2AIX.js → session-selector-LHRMJOKT.js} +5 -4
- package/dist/node-runtime/{settings-manager-CUGAZWAB.js → settings-manager-UUZ6NUXI.js} +7 -2
- package/dist/node-runtime/setup-JBKOLJ6F.js +18 -0
- package/dist/node-runtime/setup-NRXVZBLJ.js +155 -0
- package/dist/node-runtime/{subagent-executor-MH4A7CCF.js → subagent-executor-MLUMBWCP.js} +22 -18
- package/dist/node-runtime/theme-U7IGOA7O.js +68 -0
- package/dist/node-runtime/trust-manager-MMISNCYO.js +17 -0
- package/dist/node-runtime/{update-cli-XTZMZGOL.js → update-cli-4TP25CNW.js} +7 -2
- package/dist/node-runtime/usage-service-LFB2SWYV.js +37 -0
- package/dist/node-runtime/{video-extract-OYT5WKS5.js → video-extract-OOZHR7SU.js} +2 -2
- package/dist/node-runtime/{youtube-extract-TQYKGFGS.js → youtube-extract-FNPAUNHU.js} +6 -6
- package/docs/browser.md +86 -0
- package/docs/extensions.md +2 -0
- package/docs/features.md +94 -16
- package/docs/interactive-startup.md +2 -1
- package/docs/sessions.md +10 -0
- package/docs/settings.md +1 -0
- package/docs/tui.md +2 -0
- package/docs/usage.md +16 -0
- 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/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/package.json +7 -4
- package/scripts/install-browser.mjs +20 -0
- package/dist/node-runtime/agent-session-services-C743TYQE.js +0 -37
- package/dist/node-runtime/chunk-VGYZ3APQ.js +0 -59
- package/dist/node-runtime/command-P4NYCJ2M.js +0 -13
- package/dist/node-runtime/interactive-mode-EVVBA64D.js +0 -59
- package/dist/node-runtime/{chunk-UWQYRSYQ.js → chunk-YJMMG7C6.js} +25 -25
- package/dist/node-runtime/{mcp-panel-IIGMXQGP.js → mcp-panel-KTTFXJZ4.js} +3 -3
- package/dist/node-runtime/{src-BPQFJR76.js → src-IVPNZ2BX.js} +9 -9
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
spinners
|
|
4
|
+
} from "./chunk-5ZH3ZFIZ.js";
|
|
5
|
+
|
|
6
|
+
// packages/coding-agent/dist/core/subagent-spinner.js
|
|
7
|
+
function getSubagentSpinnerDefinition(name) {
|
|
8
|
+
return spinners[name];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
getSubagentSpinnerDefinition
|
|
13
|
+
};
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getAgentDir
|
|
4
|
+
} from "./chunk-FQMM2EZ2.js";
|
|
5
|
+
|
|
6
|
+
// packages/coding-agent/dist/gateway/service.js
|
|
7
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
8
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { homedir, userInfo } from "node:os";
|
|
11
|
+
import { dirname, join, resolve } from "node:path";
|
|
12
|
+
import { fileURLToPath } from "node:url";
|
|
13
|
+
var servicePrefix = "lunr-gateway", serviceDirectory = () => join(getAgentDir(), "gateway-service"), gatewayLogPath = () => join(serviceDirectory(), "gateway.log"), statusPath = () => join(serviceDirectory(), "status.json"), controlPath = () => join(serviceDirectory(), "control.json"), settingsPath = () => join(serviceDirectory(), "service.json");
|
|
14
|
+
function atomicJson(path, value) {
|
|
15
|
+
mkdirSync(dirname(path), { recursive: !0, mode: 448 });
|
|
16
|
+
let temp = `${path}.${randomUUID()}.tmp`;
|
|
17
|
+
writeFileSync(temp, `${JSON.stringify(value, null, 2)}
|
|
18
|
+
`, { mode: 384 }), renameSync(temp, path);
|
|
19
|
+
}
|
|
20
|
+
function readJson(path) {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
23
|
+
} catch {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function loadServiceSettings() {
|
|
28
|
+
let raw = readJson(settingsPath());
|
|
29
|
+
return raw && typeof raw == "object" && "startup" in raw && (raw.startup === "login" || raw.startup === "boot") ? { startup: raw.startup } : { startup: "off" };
|
|
30
|
+
}
|
|
31
|
+
function processExists(pid) {
|
|
32
|
+
if (!Number.isSafeInteger(pid) || pid <= 0)
|
|
33
|
+
return !1;
|
|
34
|
+
try {
|
|
35
|
+
return process.kill(pid, 0), !0;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
return !(error && typeof error == "object" && "code" in error && error.code === "ESRCH");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function readGatewayStatus(file = statusPath()) {
|
|
41
|
+
let raw = readJson(file);
|
|
42
|
+
if (!(!raw || typeof raw != "object" || !("version" in raw) || raw.version !== 1 || !("pid" in raw) || typeof raw.pid != "number") && !(!("instance" in raw) || typeof raw.instance != "string" || !("updatedAt" in raw) || typeof raw.updatedAt != "string") && !(!("state" in raw) || !["starting", "ready", "stopping"].includes(String(raw.state))) && !(!("platforms" in raw) || !raw.platforms || typeof raw.platforms != "object" || !("startedAt" in raw) || typeof raw.startedAt != "string"))
|
|
43
|
+
return raw;
|
|
44
|
+
}
|
|
45
|
+
function gatewayIsRunning() {
|
|
46
|
+
let status = readGatewayStatus();
|
|
47
|
+
return !!status && processExists(status.pid);
|
|
48
|
+
}
|
|
49
|
+
function claimGateway(onStop) {
|
|
50
|
+
let dir = serviceDirectory();
|
|
51
|
+
mkdirSync(dir, { recursive: !0, mode: 448 });
|
|
52
|
+
let lock = join(dir, "lock");
|
|
53
|
+
try {
|
|
54
|
+
mkdirSync(lock);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
if (!error || typeof error != "object" || !("code" in error) || error.code !== "EEXIST")
|
|
57
|
+
throw error;
|
|
58
|
+
let previous = readGatewayStatus(join(lock, "owner.json"));
|
|
59
|
+
if (!previous || processExists(previous.pid))
|
|
60
|
+
throw new Error("Gateway already running or startup lock is unresolved. Run lunr gateway doctor.");
|
|
61
|
+
let recovery = join(dir, "recovery");
|
|
62
|
+
mkdirSync(recovery);
|
|
63
|
+
try {
|
|
64
|
+
let current = readGatewayStatus(join(lock, "owner.json"));
|
|
65
|
+
if (!current || current.instance !== previous.instance || processExists(current.pid))
|
|
66
|
+
throw new Error("Gateway ownership changed. Try again.");
|
|
67
|
+
rmSync(lock, { recursive: !0 }), mkdirSync(lock);
|
|
68
|
+
} finally {
|
|
69
|
+
rmSync(recovery, { recursive: !0, force: !0 });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
let status = {
|
|
73
|
+
version: 1,
|
|
74
|
+
instance: randomUUID(),
|
|
75
|
+
pid: process.pid,
|
|
76
|
+
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
77
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
78
|
+
state: "starting",
|
|
79
|
+
platforms: {}
|
|
80
|
+
};
|
|
81
|
+
atomicJson(join(lock, "owner.json"), status);
|
|
82
|
+
let save = () => {
|
|
83
|
+
status.updatedAt = (/* @__PURE__ */ new Date()).toISOString(), atomicJson(statusPath(), status);
|
|
84
|
+
};
|
|
85
|
+
save();
|
|
86
|
+
let stopping = !1, timer = setInterval(() => {
|
|
87
|
+
save();
|
|
88
|
+
let control = readJson(controlPath());
|
|
89
|
+
!stopping && control && typeof control == "object" && "instance" in control && control.instance === status.instance && "action" in control && control.action === "stop" && (stopping = !0, status.state = "stopping", onStop());
|
|
90
|
+
}, 500);
|
|
91
|
+
return {
|
|
92
|
+
update(platforms, state = "ready") {
|
|
93
|
+
status.platforms = { ...platforms }, status.state = state, save();
|
|
94
|
+
},
|
|
95
|
+
release() {
|
|
96
|
+
clearInterval(timer), readGatewayStatus()?.instance === status.instance && (rmSync(statusPath(), { force: !0 }), rmSync(controlPath(), { force: !0 }), rmSync(lock, { recursive: !0, force: !0 }));
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function cliPath() {
|
|
101
|
+
let candidate = process.argv[1];
|
|
102
|
+
return candidate && existsSync(candidate) ? resolve(candidate) : fileURLToPath(new URL("../cli.js", new URL("../gateway/service.js", import.meta.url).href));
|
|
103
|
+
}
|
|
104
|
+
var sleep = (ms) => new Promise((resolve2) => setTimeout(resolve2, ms));
|
|
105
|
+
async function startGatewayService() {
|
|
106
|
+
if (gatewayIsRunning())
|
|
107
|
+
return "Gateway is already running.";
|
|
108
|
+
mkdirSync(serviceDirectory(), { recursive: !0, mode: 448 });
|
|
109
|
+
let startup = loadServiceSettings().startup;
|
|
110
|
+
if (startup !== "off") {
|
|
111
|
+
let user = userInfo(), spec = startupSpec(process.platform, startup, {
|
|
112
|
+
home: homedir(),
|
|
113
|
+
agentDir: getAgentDir(),
|
|
114
|
+
node: process.execPath,
|
|
115
|
+
cli: cliPath(),
|
|
116
|
+
username: user.username,
|
|
117
|
+
uid: user.uid
|
|
118
|
+
});
|
|
119
|
+
execute(spec.start);
|
|
120
|
+
for (let i = 0; i < 100; i++) {
|
|
121
|
+
if (readGatewayStatus()?.state === "ready" && gatewayIsRunning())
|
|
122
|
+
return "Gateway started.";
|
|
123
|
+
await sleep(200);
|
|
124
|
+
}
|
|
125
|
+
throw new Error(`Startup service did not become ready. Run lunr gateway doctor and inspect ${gatewayLogPath()}`);
|
|
126
|
+
}
|
|
127
|
+
let { openSync, closeSync } = await import("node:fs"), log = openSync(gatewayLogPath(), "a", 384), child = spawn(process.execPath, [cliPath(), "gateway", "run"], {
|
|
128
|
+
cwd: homedir(),
|
|
129
|
+
detached: !0,
|
|
130
|
+
windowsHide: !0,
|
|
131
|
+
stdio: ["ignore", log, log],
|
|
132
|
+
env: { ...process.env, PI_CODING_AGENT_DIR: getAgentDir() }
|
|
133
|
+
});
|
|
134
|
+
closeSync(log);
|
|
135
|
+
let spawnError;
|
|
136
|
+
child.on("error", (error) => {
|
|
137
|
+
spawnError = error;
|
|
138
|
+
}), child.unref();
|
|
139
|
+
for (let i = 0; i < 100; i++) {
|
|
140
|
+
if (spawnError)
|
|
141
|
+
throw spawnError;
|
|
142
|
+
let status = readGatewayStatus();
|
|
143
|
+
if (status && status.pid === child.pid && status.state === "ready")
|
|
144
|
+
return "Gateway started.";
|
|
145
|
+
if (child.exitCode !== null)
|
|
146
|
+
throw new Error(`Gateway exited with code ${child.exitCode}. See ${gatewayLogPath()}`);
|
|
147
|
+
await sleep(200);
|
|
148
|
+
}
|
|
149
|
+
throw new Error(`Gateway did not become ready within 20 seconds. Check lunr gateway status and ${gatewayLogPath()}`);
|
|
150
|
+
}
|
|
151
|
+
async function stopGatewayService() {
|
|
152
|
+
let status = readGatewayStatus();
|
|
153
|
+
if (!status || !processExists(status.pid))
|
|
154
|
+
return "Gateway is not running.";
|
|
155
|
+
atomicJson(controlPath(), { instance: status.instance, action: "stop" });
|
|
156
|
+
for (let i = 0; i < 150; i++) {
|
|
157
|
+
if (readGatewayStatus()?.instance !== status.instance || !processExists(status.pid))
|
|
158
|
+
return "Gateway stopped.";
|
|
159
|
+
await sleep(200);
|
|
160
|
+
}
|
|
161
|
+
throw new Error("Gateway is still stopping after 30 seconds. Inspect the log; no unrelated process was terminated.");
|
|
162
|
+
}
|
|
163
|
+
function xml(value) {
|
|
164
|
+
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll('"', """);
|
|
165
|
+
}
|
|
166
|
+
function systemdArg(value) {
|
|
167
|
+
return `"${value.replaceAll("%", "%%").replaceAll("\\", "\\\\").replaceAll('"', '\\"')}"`;
|
|
168
|
+
}
|
|
169
|
+
function ps(value) {
|
|
170
|
+
return `'${value.replaceAll("'", "''")}'`;
|
|
171
|
+
}
|
|
172
|
+
function startupSpec(platform, mode, options) {
|
|
173
|
+
let { home, agentDir, node, cli, username, uid } = options;
|
|
174
|
+
if ([home, agentDir, node, cli, username].some((value) => /[\r\n\0]/.test(value)))
|
|
175
|
+
throw new Error("Startup paths and account names must not contain control characters.");
|
|
176
|
+
let suffix = createHash("sha256").update(resolve(agentDir)).digest("hex").slice(0, 10), serviceName = `${servicePrefix}-${suffix}`, log = join(agentDir, "gateway-service", "gateway.log");
|
|
177
|
+
if (platform === "linux")
|
|
178
|
+
return {
|
|
179
|
+
path: join(home, ".config", "systemd", "user", `${serviceName}.service`),
|
|
180
|
+
content: `[Unit]
|
|
181
|
+
Description=lunR chat gateway
|
|
182
|
+
After=network-online.target
|
|
183
|
+
|
|
184
|
+
[Service]
|
|
185
|
+
Type=simple
|
|
186
|
+
ExecStart=${systemdArg(node)} ${systemdArg(cli)} gateway run
|
|
187
|
+
WorkingDirectory=${systemdArg(home)}
|
|
188
|
+
Environment=${systemdArg(`PI_CODING_AGENT_DIR=${agentDir}`)}
|
|
189
|
+
Restart=on-failure
|
|
190
|
+
RestartSec=5
|
|
191
|
+
TimeoutStopSec=30
|
|
192
|
+
StandardOutput=append:${log.replaceAll("%", "%%")}
|
|
193
|
+
StandardError=append:${log.replaceAll("%", "%%")}
|
|
194
|
+
UMask=0077
|
|
195
|
+
|
|
196
|
+
[Install]
|
|
197
|
+
WantedBy=default.target
|
|
198
|
+
`,
|
|
199
|
+
install: [
|
|
200
|
+
...mode === "boot" ? [["loginctl", "enable-linger", username]] : [],
|
|
201
|
+
["systemctl", "--user", "daemon-reload"],
|
|
202
|
+
["systemctl", "--user", "enable", `${serviceName}.service`]
|
|
203
|
+
],
|
|
204
|
+
remove: [["systemctl", "--user", "disable", `${serviceName}.service`]],
|
|
205
|
+
verify: ["systemctl", "--user", "is-enabled", `${serviceName}.service`],
|
|
206
|
+
start: ["systemctl", "--user", "start", `${serviceName}.service`]
|
|
207
|
+
};
|
|
208
|
+
if (platform === "darwin") {
|
|
209
|
+
let label = `dev.lunr.gateway.${suffix}`, path = mode === "boot" ? `/Library/LaunchDaemons/${label}.plist` : join(home, "Library", "LaunchAgents", `${label}.plist`), domain = mode === "boot" ? "system" : `gui/${uid}`, command = (args) => mode === "boot" ? ["sudo", "launchctl", ...args] : ["launchctl", ...args];
|
|
210
|
+
return {
|
|
211
|
+
path,
|
|
212
|
+
content: `<?xml version="1.0" encoding="UTF-8"?>
|
|
213
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
214
|
+
<plist version="1.0"><dict><key>Label</key><string>${label}</string><key>ProgramArguments</key><array>${[node, cli, "gateway", "run"].map((v) => `<string>${xml(v)}</string>`).join("")}</array><key>WorkingDirectory</key><string>${xml(home)}</string>${mode === "boot" ? `<key>UserName</key><string>${xml(username)}</string>` : ""}<key>EnvironmentVariables</key><dict><key>PI_CODING_AGENT_DIR</key><string>${xml(agentDir)}</string><key>HOME</key><string>${xml(home)}</string></dict><key>RunAtLoad</key><true/><key>KeepAlive</key><dict><key>SuccessfulExit</key><false/></dict><key>StandardOutPath</key><string>${xml(log)}</string><key>StandardErrorPath</key><string>${xml(log)}</string></dict></plist>
|
|
215
|
+
`,
|
|
216
|
+
install: [command(["bootstrap", domain, path])],
|
|
217
|
+
remove: [command(["bootout", `${domain}/${label}`])],
|
|
218
|
+
verify: command(["print", `${domain}/${label}`]),
|
|
219
|
+
start: command(["kickstart", `${domain}/${label}`])
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
if (platform === "win32") {
|
|
223
|
+
let path = join(agentDir, "gateway-service", "startup.ps1"), content = `$env:PI_CODING_AGENT_DIR = ${ps(agentDir)}
|
|
224
|
+
Set-Location -LiteralPath ${ps(home)}
|
|
225
|
+
& ${ps(node)} ${ps(cli)} gateway run *>> ${ps(log)}
|
|
226
|
+
exit $LASTEXITCODE
|
|
227
|
+
`, action = `New-ScheduledTaskAction -Execute 'powershell.exe' -Argument ${ps(`-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File "${path}"`)}`, trigger = mode === "boot" ? "New-ScheduledTaskTrigger -AtStartup" : `New-ScheduledTaskTrigger -AtLogOn -User ${ps(username)}`, register = `$ErrorActionPreference='Stop'; $a=${action}; $t=${trigger}; $s=New-ScheduledTaskSettingsSet -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1) -ExecutionTimeLimit ([TimeSpan]::Zero) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries; ${mode === "boot" ? `$c=Get-Credential -UserName ${ps(username)} -Message 'Windows needs your account credentials to run lunR before login'; if(!$c){throw 'Cancelled'}; Register-ScheduledTask -TaskName '${serviceName}' -Action $a -Trigger $t -Settings $s -User $c.UserName -Password $c.GetNetworkCredential().Password -Force | Out-Null` : `Register-ScheduledTask -TaskName '${serviceName}' -Action $a -Trigger $t -Settings $s -User ${ps(username)} -Force | Out-Null`}`, command = (script) => ["powershell.exe", "-NoProfile", "-Command", script];
|
|
228
|
+
return {
|
|
229
|
+
path,
|
|
230
|
+
content,
|
|
231
|
+
install: [command(register)],
|
|
232
|
+
remove: [
|
|
233
|
+
command(`$ErrorActionPreference='Stop'; Unregister-ScheduledTask -TaskName '${serviceName}' -Confirm:$false`)
|
|
234
|
+
],
|
|
235
|
+
verify: command(`$ErrorActionPreference='Stop'; Get-ScheduledTask -TaskName '${serviceName}' | Out-Null`),
|
|
236
|
+
start: command(`$ErrorActionPreference='Stop'; Start-ScheduledTask -TaskName '${serviceName}'`)
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
throw new Error(`Automatic startup is not supported on ${platform}. Run lunr gateway start manually.`);
|
|
240
|
+
}
|
|
241
|
+
function execute(command) {
|
|
242
|
+
let [file, ...args] = command, result = spawnSync(file, args, { stdio: "inherit", windowsHide: !0, timeout: 12e4 });
|
|
243
|
+
if (result.error)
|
|
244
|
+
throw result.error;
|
|
245
|
+
if (result.status !== 0)
|
|
246
|
+
throw new Error(`${file} failed. Check OS permissions and run lunr gateway doctor.`);
|
|
247
|
+
}
|
|
248
|
+
async function configureStartup(mode) {
|
|
249
|
+
let previous = loadServiceSettings().startup;
|
|
250
|
+
if (process.platform === "linux" && mode === "login" && spawnSync("loginctl", ["show-user", userInfo().username, "--property=Linger", "--value"], {
|
|
251
|
+
encoding: "utf8",
|
|
252
|
+
timeout: 1e4
|
|
253
|
+
}).stdout?.trim() === "yes")
|
|
254
|
+
throw new Error("Linux user services already start at boot because lingering is enabled. Choose boot, or disable lingering yourself before choosing login. lunR will not change other user services.");
|
|
255
|
+
let user = userInfo(), options = {
|
|
256
|
+
home: homedir(),
|
|
257
|
+
agentDir: getAgentDir(),
|
|
258
|
+
node: process.execPath,
|
|
259
|
+
cli: cliPath(),
|
|
260
|
+
username: user.username,
|
|
261
|
+
uid: user.uid
|
|
262
|
+
};
|
|
263
|
+
if (previous !== "off") {
|
|
264
|
+
let old = startupSpec(process.platform, previous, options);
|
|
265
|
+
for (let command of old.remove)
|
|
266
|
+
execute(command);
|
|
267
|
+
process.platform === "darwin" && previous === "boot" ? execute(["sudo", "rm", "-f", old.path]) : rmSync(old.path, { force: !0 }), atomicJson(settingsPath(), { startup: "off" });
|
|
268
|
+
}
|
|
269
|
+
if (mode === "off") {
|
|
270
|
+
atomicJson(settingsPath(), { startup: "off" });
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
let spec = startupSpec(process.platform, mode, options);
|
|
274
|
+
if (mkdirSync(serviceDirectory(), { recursive: !0, mode: 448 }), process.platform === "darwin" && mode === "boot") {
|
|
275
|
+
let temporary = join(serviceDirectory(), "install.plist");
|
|
276
|
+
writeFileSync(temporary, spec.content, { mode: 384 });
|
|
277
|
+
try {
|
|
278
|
+
execute(["sudo", "install", "-o", "root", "-g", "wheel", "-m", "644", temporary, spec.path]);
|
|
279
|
+
} finally {
|
|
280
|
+
rmSync(temporary, { force: !0 });
|
|
281
|
+
}
|
|
282
|
+
} else
|
|
283
|
+
mkdirSync(dirname(spec.path), { recursive: !0, mode: 448 }), writeFileSync(spec.path, spec.content, { mode: 384 });
|
|
284
|
+
for (let command of spec.install)
|
|
285
|
+
execute(command);
|
|
286
|
+
execute(spec.verify), atomicJson(settingsPath(), { startup: mode });
|
|
287
|
+
}
|
|
288
|
+
function startupVerification() {
|
|
289
|
+
let mode = loadServiceSettings().startup;
|
|
290
|
+
if (mode === "off")
|
|
291
|
+
return "";
|
|
292
|
+
try {
|
|
293
|
+
let user = userInfo(), spec = startupSpec(process.platform, mode, {
|
|
294
|
+
home: homedir(),
|
|
295
|
+
agentDir: getAgentDir(),
|
|
296
|
+
node: process.execPath,
|
|
297
|
+
cli: cliPath(),
|
|
298
|
+
username: user.username,
|
|
299
|
+
uid: user.uid
|
|
300
|
+
}), [command, ...args] = spec.verify[0] === "sudo" ? spec.verify.slice(1) : spec.verify;
|
|
301
|
+
return spawnSync(command, args, { encoding: "utf8", windowsHide: !0, timeout: 5e3 }).status === 0 ? " (native service verified)" : " (native service missing or unavailable)";
|
|
302
|
+
} catch {
|
|
303
|
+
return " (native service could not be checked)";
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
function serviceStatusText() {
|
|
307
|
+
let status = readGatewayStatus(), alive = !!status && processExists(status.pid), fresh = !!status && Date.now() - Date.parse(status.updatedAt) < 5e3;
|
|
308
|
+
return [
|
|
309
|
+
`Gateway: ${alive ? `${status.state}${fresh ? "" : " (not responding)"}` : "stopped"}`,
|
|
310
|
+
`Automatic startup: ${loadServiceSettings().startup}${startupVerification()}`,
|
|
311
|
+
...alive ? [`PID: ${status.pid}`, ...Object.entries(status.platforms).map(([name, state]) => `${name}: ${state}`)] : [],
|
|
312
|
+
`Log: ${gatewayLogPath()}`
|
|
313
|
+
].join(`
|
|
314
|
+
`);
|
|
315
|
+
}
|
|
316
|
+
function readGatewayLog() {
|
|
317
|
+
try {
|
|
318
|
+
return readFileSync(gatewayLogPath(), "utf8").split(`
|
|
319
|
+
`).slice(-100).join(`
|
|
320
|
+
`).replace(/bot\d+:[A-Za-z0-9_-]+/g, "bot[redacted]");
|
|
321
|
+
} catch {
|
|
322
|
+
return "No gateway log yet.";
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
export {
|
|
327
|
+
serviceDirectory,
|
|
328
|
+
gatewayLogPath,
|
|
329
|
+
atomicJson,
|
|
330
|
+
loadServiceSettings,
|
|
331
|
+
processExists,
|
|
332
|
+
readGatewayStatus,
|
|
333
|
+
gatewayIsRunning,
|
|
334
|
+
claimGateway,
|
|
335
|
+
startGatewayService,
|
|
336
|
+
stopGatewayService,
|
|
337
|
+
startupSpec,
|
|
338
|
+
configureStartup,
|
|
339
|
+
serviceStatusText,
|
|
340
|
+
readGatewayLog
|
|
341
|
+
};
|