@withbuddi/buddi 0.1.0-pre.52 → 0.1.0-pre.54
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/extension/background.js +38 -7
- package/extension/manifest.json +2 -2
- package/extension/popup.html +2 -2
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/dashboard-cmd.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/dashboard-cmd.js +6 -3
- package/node_modules/@buddi/cli/dist/dashboard-cmd.js.map +1 -1
- package/node_modules/@buddi/cli/dist/main.js +2 -2
- package/node_modules/@buddi/cli/dist/main.js.map +1 -1
- package/node_modules/@buddi/cli/dist/status.d.ts +16 -2
- package/node_modules/@buddi/cli/dist/status.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/status.js +42 -2
- package/node_modules/@buddi/cli/dist/status.js.map +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts +6 -0
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.js +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/core/dist/backup/archive.d.ts +6 -0
- package/node_modules/@buddi/core/dist/backup/archive.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/backup/archive.js +19 -6
- package/node_modules/@buddi/core/dist/backup/archive.js.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/binaries.d.ts +21 -1
- package/node_modules/@buddi/core/dist/postgres/binaries.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/binaries.js +72 -10
- package/node_modules/@buddi/core/dist/postgres/binaries.js.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/cluster.d.ts +8 -0
- package/node_modules/@buddi/core/dist/postgres/cluster.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/cluster.js +119 -17
- package/node_modules/@buddi/core/dist/postgres/cluster.js.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/windows-guard.d.ts +20 -0
- package/node_modules/@buddi/core/dist/postgres/windows-guard.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/postgres/windows-guard.js +140 -0
- package/node_modules/@buddi/core/dist/postgres/windows-guard.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.js +3 -2
- package/node_modules/@buddi/gateway/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts +2 -2
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts +6 -6
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js +5 -5
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/browser-host.js +1 -1
- package/node_modules/@buddi/gateway/dist/browser-host.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.d.ts +10 -10
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.js +20 -20
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts +2 -2
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js +11 -11
- package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts +2 -2
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.js +5 -5
- package/node_modules/@buddi/gateway/dist/missions/reminders.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.js +1 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/npm.d.ts +9 -2
- package/node_modules/@buddi/gateway/dist/plugins/npm.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/npm.js +29 -6
- package/node_modules/@buddi/gateway/dist/plugins/npm.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.js +2 -2
- package/node_modules/@buddi/gateway/dist/plugins/stage.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.d.ts +11 -0
- package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.js +42 -1
- package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.js +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js +6 -6
- package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts +6 -0
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.js +22 -11
- package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +4 -4
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/service.d.ts +6 -1
- package/node_modules/@buddi/gateway/dist/web/service.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/service.js +10 -1
- package/node_modules/@buddi/gateway/dist/web/service.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/skills.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/skills.js +2 -1
- package/node_modules/@buddi/gateway/dist/web/skills.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/write.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/web/write.js +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/install/dist/app-layout.d.ts +53 -0
- package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/app-layout.js +123 -10
- package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
- package/node_modules/@buddi/install/dist/cloudflared.js +2 -2
- package/node_modules/@buddi/install/dist/cloudflared.js.map +1 -1
- package/node_modules/@buddi/install/dist/environment.d.ts +40 -1
- package/node_modules/@buddi/install/dist/environment.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/environment.js +158 -12
- package/node_modules/@buddi/install/dist/environment.js.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.js +340 -54
- package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
- package/node_modules/@buddi/install/dist/linux-install.d.ts +41 -0
- package/node_modules/@buddi/install/dist/linux-install.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/linux-install.js +86 -0
- package/node_modules/@buddi/install/dist/linux-install.js.map +1 -0
- package/node_modules/@buddi/install/dist/postgres-check.js +1 -1
- package/node_modules/@buddi/install/dist/postgres-check.js.map +1 -1
- package/node_modules/@buddi/install/dist/product-uninstall.d.ts +14 -0
- package/node_modules/@buddi/install/dist/product-uninstall.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/product-uninstall.js +10 -0
- package/node_modules/@buddi/install/dist/product-uninstall.js.map +1 -1
- package/node_modules/@buddi/install/dist/runtime-info.d.ts +23 -0
- package/node_modules/@buddi/install/dist/runtime-info.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/runtime-info.js +72 -0
- package/node_modules/@buddi/install/dist/runtime-info.js.map +1 -0
- package/node_modules/@buddi/install/dist/supervisor.d.ts +60 -3
- package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/supervisor.js +175 -17
- package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.d.ts +49 -3
- package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.js +184 -27
- package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
- package/node_modules/@buddi/install/dist/upgrade.d.ts +20 -5
- package/node_modules/@buddi/install/dist/upgrade.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/upgrade.js +125 -62
- package/node_modules/@buddi/install/dist/upgrade.js.map +1 -1
- package/node_modules/@buddi/install/dist/windows-install.d.ts +102 -0
- package/node_modules/@buddi/install/dist/windows-install.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/windows-install.js +223 -0
- package/node_modules/@buddi/install/dist/windows-install.js.map +1 -0
- package/node_modules/@buddi/install/dist/windows-setup.d.ts +107 -0
- package/node_modules/@buddi/install/dist/windows-setup.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/windows-setup.js +700 -0
- package/node_modules/@buddi/install/dist/windows-setup.js.map +1 -0
- package/node_modules/@buddi/install/dist/windows-task.d.ts +49 -0
- package/node_modules/@buddi/install/dist/windows-task.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/windows-task.js +167 -0
- package/node_modules/@buddi/install/dist/windows-task.js.map +1 -0
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/codex-direct.d.ts +1 -1
- package/node_modules/@buddi/runtime/dist/codex-direct.js +1 -1
- package/node_modules/@buddi/runtime/dist/openai.d.ts +11 -0
- package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.js +36 -3
- package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/tools/write.js +3 -3
- package/node_modules/@buddi/tool-artifacts/dist/tools/write.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/availability.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/availability.js +1 -0
- package/node_modules/@buddi/tool-browser/dist/availability.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/brand.d.ts +19 -0
- package/node_modules/@buddi/tool-browser/dist/brand.d.ts.map +1 -0
- package/node_modules/@buddi/tool-browser/dist/brand.js +31 -0
- package/node_modules/@buddi/tool-browser/dist/brand.js.map +1 -0
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts +2 -2
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.js +16 -7
- package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/downloads.js +1 -1
- package/node_modules/@buddi/tool-browser/dist/downloads.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.d.ts +3 -1
- package/node_modules/@buddi/tool-browser/dist/extension.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.js +4 -4
- package/node_modules/@buddi/tool-browser/dist/extension.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.d.ts +3 -2
- package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.js +7 -6
- package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts +12 -1
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.js +31 -14
- package/node_modules/@buddi/tool-browser/dist/routes.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.d.ts +2 -0
- package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.js +6 -6
- package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/telemetry.d.ts +2 -2
- package/node_modules/@buddi/tool-browser/dist/telemetry.js +2 -2
- package/node_modules/@buddi/tool-browser/dist/telemetry.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.js +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-host/dist/index.d.ts +2 -1
- package/node_modules/@buddi/tool-host/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/index.js +11 -2
- package/node_modules/@buddi/tool-host/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/process.d.ts +58 -1
- package/node_modules/@buddi/tool-host/dist/process.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/process.js +229 -15
- package/node_modules/@buddi/tool-host/dist/process.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/service.d.ts +2 -0
- package/node_modules/@buddi/tool-host/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/service.js +8 -6
- package/node_modules/@buddi/tool-host/dist/service.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/skill-run.d.ts +10 -0
- package/node_modules/@buddi/tool-host/dist/skill-run.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/skill-run.js +14 -0
- package/node_modules/@buddi/tool-host/dist/skill-run.js.map +1 -1
- package/node_modules/@hono/node-server/package.json +2 -2
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/node/util.d.ts +6 -3
- package/node_modules/content-disposition/README.md +105 -35
- package/node_modules/content-disposition/dist/index.d.ts +72 -0
- package/node_modules/content-disposition/dist/index.js +388 -0
- package/node_modules/content-disposition/dist/index.js.map +1 -0
- package/node_modules/content-disposition/package.json +31 -19
- package/node_modules/docx/dist/index.cjs +182 -80
- package/node_modules/docx/dist/index.d.cts +63 -6
- package/node_modules/docx/dist/index.d.ts +63 -6
- package/node_modules/docx/dist/index.iife.js +182 -80
- package/node_modules/docx/dist/index.mjs +182 -80
- package/node_modules/docx/dist/index.umd.cjs +182 -80
- package/node_modules/docx/dist/layout.cjs +1 -6
- package/node_modules/docx/dist/layout.iife.js +1 -6
- package/node_modules/docx/dist/layout.mjs +1 -6
- package/node_modules/docx/dist/layout.umd.cjs +1 -6
- package/node_modules/docx/package.json +4 -3
- package/node_modules/express/Readme.md +15 -9
- package/node_modules/express/lib/application.js +2 -2
- package/node_modules/express/lib/request.js +32 -19
- package/node_modules/express/lib/response.js +27 -30
- package/node_modules/express/node_modules/content-type/LICENSE +22 -0
- package/node_modules/express/node_modules/content-type/README.md +71 -0
- package/node_modules/express/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/express/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/express/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/express/node_modules/content-type/package.json +52 -0
- package/node_modules/express/package.json +10 -10
- package/node_modules/imapflow/CHANGELOG.md +33 -0
- package/node_modules/imapflow/dist/cjs/commands/append.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/commands/append.js +15 -4
- package/node_modules/imapflow/dist/cjs/commands/compress.js +2 -2
- package/node_modules/imapflow/dist/cjs/commands/id.js +5 -3
- package/node_modules/imapflow/dist/cjs/commands/idle.js +9 -9
- package/node_modules/imapflow/dist/cjs/commands/list.js +2 -2
- package/node_modules/imapflow/dist/cjs/commands/namespace.js +18 -14
- package/node_modules/imapflow/dist/cjs/commands/quota.js +2 -3
- package/node_modules/imapflow/dist/cjs/commands/status.js +2 -4
- package/node_modules/imapflow/dist/cjs/connection-deadline.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/connection-deadline.js +2 -4
- package/node_modules/imapflow/dist/cjs/download.js +66 -35
- package/node_modules/imapflow/dist/cjs/errors.d.ts +15 -0
- package/node_modules/imapflow/dist/cjs/errors.js +22 -0
- package/node_modules/imapflow/dist/cjs/handler/imap-compiler.d.ts +4 -4
- package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +18 -18
- package/node_modules/imapflow/dist/cjs/handler/imap-parser.js +28 -3
- package/node_modules/imapflow/dist/cjs/handler/imap-stream.js +9 -8
- package/node_modules/imapflow/dist/cjs/handler/limits.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/handler/limits.js +5 -7
- package/node_modules/imapflow/dist/cjs/handler/parser-instance.js +23 -38
- package/node_modules/imapflow/dist/cjs/handler/token-parser.d.ts +12 -0
- package/node_modules/imapflow/dist/cjs/handler/token-parser.js +44 -104
- package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +4 -3
- package/node_modules/imapflow/dist/cjs/imap-flow.js +98 -72
- package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
- package/node_modules/imapflow/dist/cjs/proxy-connection.js +2 -5
- package/node_modules/imapflow/dist/cjs/search-compiler.js +2 -3
- package/node_modules/imapflow/dist/cjs/tools.d.ts +14 -3
- package/node_modules/imapflow/dist/cjs/tools.js +30 -18
- package/node_modules/imapflow/dist/cjs/types.d.ts +11 -0
- package/node_modules/imapflow/dist/esm/commands/append.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/commands/append.js +15 -4
- package/node_modules/imapflow/dist/esm/commands/compress.js +2 -2
- package/node_modules/imapflow/dist/esm/commands/id.js +6 -4
- package/node_modules/imapflow/dist/esm/commands/idle.js +9 -9
- package/node_modules/imapflow/dist/esm/commands/list.js +3 -3
- package/node_modules/imapflow/dist/esm/commands/namespace.js +19 -15
- package/node_modules/imapflow/dist/esm/commands/quota.js +3 -4
- package/node_modules/imapflow/dist/esm/commands/status.js +2 -4
- package/node_modules/imapflow/dist/esm/connection-deadline.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/connection-deadline.js +2 -4
- package/node_modules/imapflow/dist/esm/download.js +66 -35
- package/node_modules/imapflow/dist/esm/errors.d.ts +15 -0
- package/node_modules/imapflow/dist/esm/errors.js +21 -0
- package/node_modules/imapflow/dist/esm/handler/imap-compiler.d.ts +4 -4
- package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +18 -18
- package/node_modules/imapflow/dist/esm/handler/imap-parser.js +28 -3
- package/node_modules/imapflow/dist/esm/handler/imap-stream.js +9 -8
- package/node_modules/imapflow/dist/esm/handler/limits.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/handler/limits.js +5 -7
- package/node_modules/imapflow/dist/esm/handler/parser-instance.js +23 -38
- package/node_modules/imapflow/dist/esm/handler/token-parser.d.ts +12 -0
- package/node_modules/imapflow/dist/esm/handler/token-parser.js +44 -104
- package/node_modules/imapflow/dist/esm/imap-flow.d.ts +4 -3
- package/node_modules/imapflow/dist/esm/imap-flow.js +99 -73
- package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/package-info.js +1 -1
- package/node_modules/imapflow/dist/esm/proxy-connection.js +2 -5
- package/node_modules/imapflow/dist/esm/search-compiler.js +2 -3
- package/node_modules/imapflow/dist/esm/tools.d.ts +14 -3
- package/node_modules/imapflow/dist/esm/tools.js +30 -19
- package/node_modules/imapflow/dist/esm/types.d.ts +11 -0
- package/node_modules/imapflow/package.json +6 -3
- package/node_modules/ip-address/README.md +70 -70
- package/node_modules/ip-address/dist/ipv6.js +7 -4
- package/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/ip-address/dist/v6/constants.d.ts +3 -0
- package/node_modules/ip-address/dist/v6/constants.js +3 -0
- package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/ip-address/package.json +2 -1
- package/node_modules/marked/bin/main.js +1 -1
- package/node_modules/marked/lib/marked.d.ts +6 -3
- package/node_modules/marked/lib/marked.esm.js +48 -50
- package/node_modules/marked/lib/marked.esm.js.map +3 -3
- package/node_modules/marked/lib/marked.umd.js +45 -47
- package/node_modules/marked/lib/marked.umd.js.map +3 -3
- package/node_modules/marked/man/marked.1 +1 -1
- package/node_modules/marked/package.json +1 -1
- package/node_modules/process-warning/.github/workflows/ci.yml +1 -1
- package/node_modules/process-warning/.github/workflows/lock-threads.yml +1 -1
- package/node_modules/process-warning/.github/workflows/release.yml +24 -0
- package/node_modules/process-warning/README.md +46 -46
- package/node_modules/process-warning/package.json +1 -1
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/dashboard-cmd.d.ts.map +1 -1
- package/packages/cli/dist/dashboard-cmd.js +6 -3
- package/packages/cli/dist/dashboard-cmd.js.map +1 -1
- package/packages/cli/dist/main.js +2 -2
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/dist/status.d.ts +16 -2
- package/packages/cli/dist/status.d.ts.map +1 -1
- package/packages/cli/dist/status.js +42 -2
- package/packages/cli/dist/status.js.map +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/agents/catalog.d.ts +6 -0
- package/packages/core/dist/agents/catalog.d.ts.map +1 -1
- package/packages/core/dist/agents/catalog.js +1 -1
- package/packages/core/dist/agents/catalog.js.map +1 -1
- package/packages/core/dist/backup/archive.d.ts +6 -0
- package/packages/core/dist/backup/archive.d.ts.map +1 -1
- package/packages/core/dist/backup/archive.js +19 -6
- package/packages/core/dist/backup/archive.js.map +1 -1
- package/packages/core/dist/postgres/binaries.d.ts +21 -1
- package/packages/core/dist/postgres/binaries.d.ts.map +1 -1
- package/packages/core/dist/postgres/binaries.js +72 -10
- package/packages/core/dist/postgres/binaries.js.map +1 -1
- package/packages/core/dist/postgres/cluster.d.ts +8 -0
- package/packages/core/dist/postgres/cluster.d.ts.map +1 -1
- package/packages/core/dist/postgres/cluster.js +119 -17
- package/packages/core/dist/postgres/cluster.js.map +1 -1
- package/packages/core/dist/postgres/windows-guard.d.ts +20 -0
- package/packages/core/dist/postgres/windows-guard.d.ts.map +1 -0
- package/packages/core/dist/postgres/windows-guard.js +140 -0
- package/packages/core/dist/postgres/windows-guard.js.map +1 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalog.js +3 -2
- package/packages/gateway/dist/agents/catalog.js.map +1 -1
- package/packages/gateway/dist/agents/catalogue-package.d.ts +2 -2
- package/packages/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalogue-package.js +1 -1
- package/packages/gateway/dist/agents/catalogue-package.js.map +1 -1
- package/packages/gateway/dist/agents/platform-catalogue.d.ts +6 -6
- package/packages/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
- package/packages/gateway/dist/agents/platform-catalogue.js +5 -5
- package/packages/gateway/dist/agents/platform-catalogue.js.map +1 -1
- package/packages/gateway/dist/browser-host.js +1 -1
- package/packages/gateway/dist/browser-host.js.map +1 -1
- package/packages/gateway/dist/missions/chrome-scope.d.ts +10 -10
- package/packages/gateway/dist/missions/chrome-scope.d.ts.map +1 -1
- package/packages/gateway/dist/missions/chrome-scope.js +20 -20
- package/packages/gateway/dist/missions/chrome-scope.js.map +1 -1
- package/packages/gateway/dist/missions/execute.d.ts +2 -2
- package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
- package/packages/gateway/dist/missions/execute.js +11 -11
- package/packages/gateway/dist/missions/execute.js.map +1 -1
- package/packages/gateway/dist/missions/reminders.d.ts +2 -2
- package/packages/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/packages/gateway/dist/missions/reminders.js +5 -5
- package/packages/gateway/dist/missions/reminders.js.map +1 -1
- package/packages/gateway/dist/owner-notify.js +1 -1
- package/packages/gateway/dist/owner-notify.js.map +1 -1
- package/packages/gateway/dist/plugins/npm.d.ts +9 -2
- package/packages/gateway/dist/plugins/npm.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/npm.js +29 -6
- package/packages/gateway/dist/plugins/npm.js.map +1 -1
- package/packages/gateway/dist/plugins/stage.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/stage.js +2 -2
- package/packages/gateway/dist/plugins/stage.js.map +1 -1
- package/packages/gateway/dist/serve.js +1 -1
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/surfaces/browser-cards.d.ts +1 -1
- package/packages/gateway/dist/surfaces/browser-cards.js +1 -1
- package/packages/gateway/dist/system-context.d.ts +11 -0
- package/packages/gateway/dist/system-context.d.ts.map +1 -1
- package/packages/gateway/dist/system-context.js +42 -1
- package/packages/gateway/dist/system-context.js.map +1 -1
- package/packages/gateway/dist/telegram/approvals.js +1 -1
- package/packages/gateway/dist/telegram/approvals.js.map +1 -1
- package/packages/gateway/dist/telegram/browser-view.js +1 -1
- package/packages/gateway/dist/telegram/browser-view.js.map +1 -1
- package/packages/gateway/dist/web/api-routes.js +6 -6
- package/packages/gateway/dist/web/api-routes.js.map +1 -1
- package/packages/gateway/dist/web/approval-ask.js +1 -1
- package/packages/gateway/dist/web/extension.d.ts +6 -0
- package/packages/gateway/dist/web/extension.d.ts.map +1 -1
- package/packages/gateway/dist/web/extension.js +22 -11
- package/packages/gateway/dist/web/extension.js.map +1 -1
- package/packages/gateway/dist/web/read.d.ts +1 -1
- package/packages/gateway/dist/web/read.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +4 -4
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/service.d.ts +6 -1
- package/packages/gateway/dist/web/service.d.ts.map +1 -1
- package/packages/gateway/dist/web/service.js +10 -1
- package/packages/gateway/dist/web/service.js.map +1 -1
- package/packages/gateway/dist/web/skills.d.ts.map +1 -1
- package/packages/gateway/dist/web/skills.js +2 -1
- package/packages/gateway/dist/web/skills.js.map +1 -1
- package/packages/gateway/dist/web/write.d.ts +1 -1
- package/packages/gateway/dist/web/write.js +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/install/dist/app-layout.d.ts +53 -0
- package/packages/install/dist/app-layout.d.ts.map +1 -1
- package/packages/install/dist/app-layout.js +123 -10
- package/packages/install/dist/app-layout.js.map +1 -1
- package/packages/install/dist/cloudflared.js +2 -2
- package/packages/install/dist/cloudflared.js.map +1 -1
- package/packages/install/dist/environment.d.ts +40 -1
- package/packages/install/dist/environment.d.ts.map +1 -1
- package/packages/install/dist/environment.js +158 -12
- package/packages/install/dist/environment.js.map +1 -1
- package/packages/install/dist/launcher.d.ts.map +1 -1
- package/packages/install/dist/launcher.js +340 -54
- package/packages/install/dist/launcher.js.map +1 -1
- package/packages/install/dist/linux-install.d.ts +41 -0
- package/packages/install/dist/linux-install.d.ts.map +1 -0
- package/packages/install/dist/linux-install.js +86 -0
- package/packages/install/dist/linux-install.js.map +1 -0
- package/packages/install/dist/postgres-check.js +1 -1
- package/packages/install/dist/postgres-check.js.map +1 -1
- package/packages/install/dist/product-uninstall.d.ts +14 -0
- package/packages/install/dist/product-uninstall.d.ts.map +1 -1
- package/packages/install/dist/product-uninstall.js +10 -0
- package/packages/install/dist/product-uninstall.js.map +1 -1
- package/packages/install/dist/runtime-info.d.ts +23 -0
- package/packages/install/dist/runtime-info.d.ts.map +1 -0
- package/packages/install/dist/runtime-info.js +72 -0
- package/packages/install/dist/runtime-info.js.map +1 -0
- package/packages/install/dist/supervisor.d.ts +60 -3
- package/packages/install/dist/supervisor.d.ts.map +1 -1
- package/packages/install/dist/supervisor.js +175 -17
- package/packages/install/dist/supervisor.js.map +1 -1
- package/packages/install/dist/uninstall.d.ts +49 -3
- package/packages/install/dist/uninstall.d.ts.map +1 -1
- package/packages/install/dist/uninstall.js +184 -27
- package/packages/install/dist/uninstall.js.map +1 -1
- package/packages/install/dist/upgrade.d.ts +20 -5
- package/packages/install/dist/upgrade.d.ts.map +1 -1
- package/packages/install/dist/upgrade.js +125 -62
- package/packages/install/dist/upgrade.js.map +1 -1
- package/packages/install/dist/windows-install.d.ts +102 -0
- package/packages/install/dist/windows-install.d.ts.map +1 -0
- package/packages/install/dist/windows-install.js +223 -0
- package/packages/install/dist/windows-install.js.map +1 -0
- package/packages/install/dist/windows-setup.d.ts +107 -0
- package/packages/install/dist/windows-setup.d.ts.map +1 -0
- package/packages/install/dist/windows-setup.js +700 -0
- package/packages/install/dist/windows-setup.js.map +1 -0
- package/packages/install/dist/windows-task.d.ts +49 -0
- package/packages/install/dist/windows-task.d.ts.map +1 -0
- package/packages/install/dist/windows-task.js +167 -0
- package/packages/install/dist/windows-task.js.map +1 -0
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/codex-direct.d.ts +1 -1
- package/packages/runtime/dist/codex-direct.js +1 -1
- package/packages/runtime/dist/openai.d.ts +11 -0
- package/packages/runtime/dist/openai.d.ts.map +1 -1
- package/packages/runtime/dist/openai.js +36 -3
- package/packages/runtime/dist/openai.js.map +1 -1
- package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
- package/packages/tools/artifacts/dist/tools/write.js +3 -3
- package/packages/tools/artifacts/dist/tools/write.js.map +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/availability.d.ts.map +1 -1
- package/packages/tools/browser/dist/availability.js +1 -0
- package/packages/tools/browser/dist/availability.js.map +1 -1
- package/packages/tools/browser/dist/brand.d.ts +19 -0
- package/packages/tools/browser/dist/brand.d.ts.map +1 -0
- package/packages/tools/browser/dist/brand.js +31 -0
- package/packages/tools/browser/dist/brand.js.map +1 -0
- package/packages/tools/browser/dist/controller.d.ts +2 -2
- package/packages/tools/browser/dist/controller.d.ts.map +1 -1
- package/packages/tools/browser/dist/controller.js +16 -7
- package/packages/tools/browser/dist/controller.js.map +1 -1
- package/packages/tools/browser/dist/downloads.js +1 -1
- package/packages/tools/browser/dist/downloads.js.map +1 -1
- package/packages/tools/browser/dist/extension.d.ts +3 -1
- package/packages/tools/browser/dist/extension.d.ts.map +1 -1
- package/packages/tools/browser/dist/extension.js +4 -4
- package/packages/tools/browser/dist/extension.js.map +1 -1
- package/packages/tools/browser/dist/index.d.ts +3 -2
- package/packages/tools/browser/dist/index.d.ts.map +1 -1
- package/packages/tools/browser/dist/index.js +7 -6
- package/packages/tools/browser/dist/index.js.map +1 -1
- package/packages/tools/browser/dist/routes.d.ts +12 -1
- package/packages/tools/browser/dist/routes.d.ts.map +1 -1
- package/packages/tools/browser/dist/routes.js +31 -14
- package/packages/tools/browser/dist/routes.js.map +1 -1
- package/packages/tools/browser/dist/service.d.ts +2 -0
- package/packages/tools/browser/dist/service.d.ts.map +1 -1
- package/packages/tools/browser/dist/service.js +6 -6
- package/packages/tools/browser/dist/service.js.map +1 -1
- package/packages/tools/browser/dist/telemetry.d.ts +2 -2
- package/packages/tools/browser/dist/telemetry.js +2 -2
- package/packages/tools/browser/dist/telemetry.js.map +1 -1
- package/packages/tools/browser/dist/types.js +1 -1
- package/packages/tools/browser/dist/types.js.map +1 -1
- package/packages/tools/host/dist/.tsbuildinfo +1 -1
- package/packages/tools/host/dist/index.d.ts +2 -1
- package/packages/tools/host/dist/index.d.ts.map +1 -1
- package/packages/tools/host/dist/index.js +11 -2
- package/packages/tools/host/dist/index.js.map +1 -1
- package/packages/tools/host/dist/process.d.ts +58 -1
- package/packages/tools/host/dist/process.d.ts.map +1 -1
- package/packages/tools/host/dist/process.js +229 -15
- package/packages/tools/host/dist/process.js.map +1 -1
- package/packages/tools/host/dist/service.d.ts +2 -0
- package/packages/tools/host/dist/service.d.ts.map +1 -1
- package/packages/tools/host/dist/service.js +8 -6
- package/packages/tools/host/dist/service.js.map +1 -1
- package/packages/tools/host/dist/skill-run.d.ts +10 -0
- package/packages/tools/host/dist/skill-run.d.ts.map +1 -1
- package/packages/tools/host/dist/skill-run.js +14 -0
- package/packages/tools/host/dist/skill-run.js.map +1 -1
- package/packages/web/dist/assets/index-DnZhfnM7.js +155 -0
- package/packages/web/dist/assets/{lottie_light-DROBTM6Y.js → lottie_light-CGUtDt_b.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +1 -1
- package/packages/web/dist/precache.json +3 -3
- package/node_modules/content-disposition/index.js +0 -536
- package/packages/web/dist/assets/index-oxmxR39o.js +0 -155
|
@@ -13,8 +13,59 @@ import type { Connector, ConnectorStatus } from './cloudflared.js';
|
|
|
13
13
|
* `state.upgrade` says which upgrade was under way and what it backed up.
|
|
14
14
|
*/
|
|
15
15
|
export declare function pendingUpgrade(marker: UpgradeInProgress | undefined): UpgradeInProgress | undefined;
|
|
16
|
-
/**
|
|
17
|
-
export declare
|
|
16
|
+
/** Where a Windows supervisor records the name of its pipe, inside the private data directory. */
|
|
17
|
+
export declare const PIPE_NAME_FILE = "supervisor.pipe";
|
|
18
|
+
/** The response header a Windows supervisor proves itself with: the secret beside its pipe's name. */
|
|
19
|
+
export declare const SUPERVISOR_SECRET_HEADER = "x-buddi-supervisor";
|
|
20
|
+
/** The live supervisor's pipe name and secret (Windows), or nothing when `supervisor.lock` names no live process. */
|
|
21
|
+
export declare function supervisorPipe(data: string): {
|
|
22
|
+
name: string;
|
|
23
|
+
secret: string;
|
|
24
|
+
} | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* The control socket of the installation whose data directory this is. On
|
|
27
|
+
* Windows a named pipe instead (Node listens on no other kind of path there).
|
|
28
|
+
* A pipe's name is in a namespace every account shares and can list, and
|
|
29
|
+
* one created first by someone else would be answered by them; so the name
|
|
30
|
+
* is random, made afresh at each supervisor start, kept where only this
|
|
31
|
+
* account can read it (`supervisor.pipe` in the data directory, see
|
|
32
|
+
* protectDataDirectory) beside a secret every answer carries, and given out
|
|
33
|
+
* only while `supervisor.lock` names a live supervisor. Otherwise: a name
|
|
34
|
+
* nobody can have made, which no one answers.
|
|
35
|
+
*/
|
|
36
|
+
export declare function supervisorSocket(data: string, platform?: NodeJS.Platform | string): string;
|
|
37
|
+
/** Does an answer on this installation's socket come from its supervisor? Always, but on Windows (see supervisorSocket). */
|
|
38
|
+
export declare function answeredBySupervisor(data: string, headers: Record<string, string | string[] | undefined>, platform?: NodeJS.Platform | string): boolean;
|
|
39
|
+
/** What a client says when the pipe answered without this supervisor's secret (Windows). */
|
|
40
|
+
export declare class NotOurSupervisor extends Error {
|
|
41
|
+
constructor();
|
|
42
|
+
}
|
|
43
|
+
export interface StartingOptions {
|
|
44
|
+
timeoutMs?: number;
|
|
45
|
+
intervalMs?: number;
|
|
46
|
+
sleep?: (ms: number) => Promise<void>;
|
|
47
|
+
now?: () => number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A supervisor that holds the lock but does not answer yet is starting: its
|
|
51
|
+
* database, its migrations, then its socket (or pipe). It is waited for, never
|
|
52
|
+
* started again over it (that is what a sign-in race did: the task's
|
|
53
|
+
* supervisor starting while the desktop app ran `buddi --no-open`, which then
|
|
54
|
+
* tried to restart the service and could not reach it). Undefined when no
|
|
55
|
+
* supervisor holds the lock (any more). Throws when it has not answered in
|
|
56
|
+
* time, or at once when something else answers in its place: either way the
|
|
57
|
+
* caller must not start or restart anything over a live holder.
|
|
58
|
+
*/
|
|
59
|
+
export declare function awaitStartingSupervisor<T>(holder: () => number | undefined, ask: () => Promise<T>, options?: StartingOptions): Promise<T | undefined>;
|
|
60
|
+
/**
|
|
61
|
+
* `buddi` with no command: the running supervisor's status, a starting one's
|
|
62
|
+
* once it answers, or undefined when none holds the lock (start one). Errors
|
|
63
|
+
* about a live holder (it never answered, something else answered) are
|
|
64
|
+
* thrown, never turned into "start another".
|
|
65
|
+
*/
|
|
66
|
+
export declare function runningOrStarting<T>(ask: () => Promise<T>, holder: () => number | undefined, options?: StartingOptions): Promise<T | undefined>;
|
|
67
|
+
/** A new pipe name and secret for this supervisor (Windows; elsewhere the socket's path is fixed). Called with the lock held; returns the secret. */
|
|
68
|
+
export declare function nameSupervisorPipe(data: string, platform?: NodeJS.Platform | string): Promise<string | undefined>;
|
|
18
69
|
export declare function restartDelay(failures: number): number;
|
|
19
70
|
/**
|
|
20
71
|
* How long a handed-over supervisor waits to leave on its own before it is
|
|
@@ -104,6 +155,12 @@ export interface ControlSocketOptions {
|
|
|
104
155
|
} | undefined;
|
|
105
156
|
/** Cloudflare's connector (cloudflared.ts): its status, and the two verbs the gateway asks for. */
|
|
106
157
|
connector?: Pick<Connector, 'status' | 'sync' | 'remove'> | undefined;
|
|
158
|
+
/**
|
|
159
|
+
* Shut the supervisor down as SIGTERM would. Windows has no signals (a kill
|
|
160
|
+
* there is TerminateProcess, which would leave the cluster running), so the
|
|
161
|
+
* uninstall asks here instead.
|
|
162
|
+
*/
|
|
163
|
+
exit?: (() => void) | undefined;
|
|
107
164
|
}
|
|
108
165
|
/**
|
|
109
166
|
* The maintenance API, served on a Unix domain socket in the data directory.
|
|
@@ -124,7 +181,7 @@ export interface ControlSocketOptions {
|
|
|
124
181
|
* `<data>/incoming/`, and that is checked to be under that directory, resolved,
|
|
125
182
|
* before it is passed on.
|
|
126
183
|
*/
|
|
127
|
-
export declare function controlSocket({ status, action, backup, upgrade, data, uninstall, cli, connector }: ControlSocketOptions): Server;
|
|
184
|
+
export declare function controlSocket({ status, action, backup, upgrade, data, uninstall, cli, connector, exit }: ControlSocketOptions): Server;
|
|
128
185
|
/**
|
|
129
186
|
* Bind the control socket, replacing a stale file a killed supervisor left.
|
|
130
187
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAmB,MAAM,EAAkB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,16 +11,19 @@ import { createServer } from 'node:http';
|
|
|
11
11
|
import { spawn, execFile } from 'node:child_process';
|
|
12
12
|
import { createWriteStream, existsSync, openSync, closeSync, mkdirSync, readFileSync, realpathSync, rmSync } from 'node:fs';
|
|
13
13
|
import { readFile, chmod, unlink, lstat, mkdir, rename, copyFile, rm, writeFile } from 'node:fs/promises';
|
|
14
|
+
import { randomBytes } from 'node:crypto';
|
|
14
15
|
import os from 'node:os';
|
|
15
16
|
import path from 'node:path';
|
|
16
17
|
import { fileURLToPath } from 'node:url';
|
|
17
|
-
import { GATEWAY_PID_FILE, acquireLock, initialize, atomicJson, stopChild, portMovedLines, launchAgentLabel, launchAgentPlist, systemdUnitPath, nativeEnvironment, SERVICE_UNIT_VAR } from './environment.js';
|
|
18
|
-
import { APP_UNINSTALL_EXIT, UNINSTALL_REQUEST, createProductUninstall } from './product-uninstall.js';
|
|
18
|
+
import { GATEWAY_PID_FILE, KEPT_FOR_REINSTALL_FILE, acquireLock, lockHolder, initialize, atomicJson, stopChild, portMovedLines, launchAgentLabel, launchAgentPlist, systemdUnitPath, nativeEnvironment, SERVICE_UNIT_VAR } from './environment.js';
|
|
19
|
+
import { APP_UNINSTALL_EXIT, UNINSTALL_REQUEST, createProductUninstall, desktopAppOnThisComputer } from './product-uninstall.js';
|
|
19
20
|
import { installShim, shimsFor } from './cli-shim.js';
|
|
21
|
+
import { windowsTaskName, windowsTaskScript } from './windows-task.js';
|
|
22
|
+
import { nodeOutsideData, readWindowsInstallerRecord } from './windows-install.js';
|
|
20
23
|
import { createBackupService, isIncomingPath, isSafeArchiveName, parseSchedule, sweepIncoming } from './backup.js';
|
|
21
24
|
import { startDatabase } from './postgres.js';
|
|
22
25
|
import { createUpgradeService, finishUpgrade, handOver, installedVersion, isVersion, recoverySentence, statusOnSocket, TICK_INTERVAL_MS } from './upgrade.js';
|
|
23
|
-
import { APP_RESTART_EXIT, appLayout } from './app-layout.js';
|
|
26
|
+
import { APP_RESTART_EXIT, appLayout, appRuns, currentLauncher, installerLayout, linuxInstall, windowsInstall } from './app-layout.js';
|
|
24
27
|
import { createConnector } from './cloudflared.js';
|
|
25
28
|
/** The launcher, as the supervisor spawns it for the gateway child. */
|
|
26
29
|
const LAUNCHER = path.resolve(path.dirname(fileURLToPath(import.meta.url)), 'launcher.js');
|
|
@@ -38,10 +41,111 @@ export function pendingUpgrade(marker) {
|
|
|
38
41
|
const named = [from, to, startedAt].every(value => typeof value === 'string' && value !== '');
|
|
39
42
|
return named ? marker : undefined;
|
|
40
43
|
}
|
|
41
|
-
/**
|
|
42
|
-
export
|
|
44
|
+
/** Where a Windows supervisor records the name of its pipe, inside the private data directory. */
|
|
45
|
+
export const PIPE_NAME_FILE = 'supervisor.pipe';
|
|
46
|
+
/** The response header a Windows supervisor proves itself with: the secret beside its pipe's name. */
|
|
47
|
+
export const SUPERVISOR_SECRET_HEADER = 'x-buddi-supervisor';
|
|
48
|
+
/** The live supervisor's pipe name and secret (Windows), or nothing when `supervisor.lock` names no live process. */
|
|
49
|
+
export function supervisorPipe(data) {
|
|
50
|
+
if (lockHolder(data) === undefined)
|
|
51
|
+
return undefined;
|
|
52
|
+
const [name = '', secret = ''] = (() => { try {
|
|
53
|
+
return readFileSync(path.join(data, PIPE_NAME_FILE), 'utf8').split(/\r?\n/);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return [];
|
|
57
|
+
} })();
|
|
58
|
+
return /^buddi-supervisor-[0-9a-f]{32}$/.test(name) && /^[0-9a-f]{64}$/.test(secret) ? { name, secret } : undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The control socket of the installation whose data directory this is. On
|
|
62
|
+
* Windows a named pipe instead (Node listens on no other kind of path there).
|
|
63
|
+
* A pipe's name is in a namespace every account shares and can list, and
|
|
64
|
+
* one created first by someone else would be answered by them; so the name
|
|
65
|
+
* is random, made afresh at each supervisor start, kept where only this
|
|
66
|
+
* account can read it (`supervisor.pipe` in the data directory, see
|
|
67
|
+
* protectDataDirectory) beside a secret every answer carries, and given out
|
|
68
|
+
* only while `supervisor.lock` names a live supervisor. Otherwise: a name
|
|
69
|
+
* nobody can have made, which no one answers.
|
|
70
|
+
*/
|
|
71
|
+
export function supervisorSocket(data, platform = process.platform) {
|
|
72
|
+
if (platform === 'win32') {
|
|
73
|
+
const pipe = supervisorPipe(data);
|
|
74
|
+
return pipe !== undefined ? `\\\\.\\pipe\\${pipe.name}` : `\\\\.\\pipe\\buddi-supervisor-none-${randomBytes(16).toString('hex')}`;
|
|
75
|
+
}
|
|
43
76
|
return path.join(data, 'supervisor.sock');
|
|
44
77
|
}
|
|
78
|
+
/** Does an answer on this installation's socket come from its supervisor? Always, but on Windows (see supervisorSocket). */
|
|
79
|
+
export function answeredBySupervisor(data, headers, platform = process.platform) {
|
|
80
|
+
if (platform !== 'win32')
|
|
81
|
+
return true;
|
|
82
|
+
const secret = supervisorPipe(data)?.secret;
|
|
83
|
+
return secret !== undefined && headers[SUPERVISOR_SECRET_HEADER] === secret;
|
|
84
|
+
}
|
|
85
|
+
/** What a client says when the pipe answered without this supervisor's secret (Windows). */
|
|
86
|
+
export class NotOurSupervisor extends Error {
|
|
87
|
+
constructor() { super('Something other than this installation\'s supervisor answered on its pipe.'); }
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A supervisor that holds the lock but does not answer yet is starting: its
|
|
91
|
+
* database, its migrations, then its socket (or pipe). It is waited for, never
|
|
92
|
+
* started again over it (that is what a sign-in race did: the task's
|
|
93
|
+
* supervisor starting while the desktop app ran `buddi --no-open`, which then
|
|
94
|
+
* tried to restart the service and could not reach it). Undefined when no
|
|
95
|
+
* supervisor holds the lock (any more). Throws when it has not answered in
|
|
96
|
+
* time, or at once when something else answers in its place: either way the
|
|
97
|
+
* caller must not start or restart anything over a live holder.
|
|
98
|
+
*/
|
|
99
|
+
export async function awaitStartingSupervisor(holder, ask, options = {}) {
|
|
100
|
+
const { timeoutMs = 90_000, intervalMs = 500 } = options;
|
|
101
|
+
const sleep = options.sleep ?? ((ms) => new Promise(resolve => setTimeout(resolve, ms)));
|
|
102
|
+
const now = options.now ?? Date.now;
|
|
103
|
+
const since = now();
|
|
104
|
+
for (;;) {
|
|
105
|
+
const pid = holder();
|
|
106
|
+
if (pid === undefined)
|
|
107
|
+
return undefined;
|
|
108
|
+
try {
|
|
109
|
+
return await ask();
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
if (error instanceof NotOurSupervisor)
|
|
113
|
+
throw error; /* not listening yet */
|
|
114
|
+
}
|
|
115
|
+
if (now() - since >= timeoutMs) {
|
|
116
|
+
throw new Error(`buddi is starting (supervisor pid ${pid}) and has not answered for ${Math.round(timeoutMs / 1000)} seconds. Its log is logs/supervisor.log in the data folder.`);
|
|
117
|
+
}
|
|
118
|
+
await sleep(intervalMs);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* `buddi` with no command: the running supervisor's status, a starting one's
|
|
123
|
+
* once it answers, or undefined when none holds the lock (start one). Errors
|
|
124
|
+
* about a live holder (it never answered, something else answered) are
|
|
125
|
+
* thrown, never turned into "start another".
|
|
126
|
+
*/
|
|
127
|
+
export async function runningOrStarting(ask, holder, options = {}) {
|
|
128
|
+
try {
|
|
129
|
+
return await ask();
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
if (error instanceof NotOurSupervisor)
|
|
133
|
+
throw error;
|
|
134
|
+
if (holder() === undefined)
|
|
135
|
+
return undefined;
|
|
136
|
+
return await awaitStartingSupervisor(holder, ask, options);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** A new pipe name and secret for this supervisor (Windows; elsewhere the socket's path is fixed). Called with the lock held; returns the secret. */
|
|
140
|
+
export async function nameSupervisorPipe(data, platform = process.platform) {
|
|
141
|
+
if (platform !== 'win32')
|
|
142
|
+
return undefined;
|
|
143
|
+
const file = path.join(data, PIPE_NAME_FILE);
|
|
144
|
+
const secret = randomBytes(32).toString('hex');
|
|
145
|
+
await writeFile(`${file}.tmp`, `buddi-supervisor-${randomBytes(16).toString('hex')}\n${secret}\n`, { mode: 0o600 });
|
|
146
|
+
await rename(`${file}.tmp`, file);
|
|
147
|
+
return secret;
|
|
148
|
+
}
|
|
45
149
|
/** The moved-port line for `/status`, for a day after the move. */
|
|
46
150
|
function portNotice(moved) {
|
|
47
151
|
if (!moved || Date.now() - Date.parse(moved.at) > 24 * 60 * 60_000)
|
|
@@ -190,7 +294,7 @@ function optionalString(value) {
|
|
|
190
294
|
* `<data>/incoming/`, and that is checked to be under that directory, resolved,
|
|
191
295
|
* before it is passed on.
|
|
192
296
|
*/
|
|
193
|
-
export function controlSocket({ status, action, backup, upgrade, data, uninstall, cli, connector }) {
|
|
297
|
+
export function controlSocket({ status, action, backup, upgrade, data, uninstall, cli, connector, exit }) {
|
|
194
298
|
return createServer((req, res) => {
|
|
195
299
|
void handle(req, res).catch(() => send(res, 500, { error: 'The supervisor could not complete that action.' }));
|
|
196
300
|
});
|
|
@@ -208,6 +312,15 @@ export function controlSocket({ status, action, backup, upgrade, data, uninstall
|
|
|
208
312
|
return send(res, 200, base);
|
|
209
313
|
return send(res, 200, { ...base, recovery: await recovery(), lastBackupAt: await backup.lastBackupAt() });
|
|
210
314
|
}
|
|
315
|
+
if (method === 'POST' && route === '/exit' && exit) {
|
|
316
|
+
if (backup?.busy())
|
|
317
|
+
return send(res, 409, { error: 'A restore is running.' });
|
|
318
|
+
if (upgrade?.busy())
|
|
319
|
+
return send(res, 409, { error: 'An upgrade is running.' });
|
|
320
|
+
send(res, 202, status());
|
|
321
|
+
exit();
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
211
324
|
if (method === 'POST' && ['/start', '/stop', '/restart'].includes(route)) {
|
|
212
325
|
// One hand on the lever at a time: a restore is already stopping and
|
|
213
326
|
// starting the gateway around a database it is replacing.
|
|
@@ -473,6 +586,20 @@ function normalizePassphraseText(input) {
|
|
|
473
586
|
* can reach the path in that window either way.
|
|
474
587
|
*/
|
|
475
588
|
export async function listenOnSocket(server, socket) {
|
|
589
|
+
// A Windows named pipe is no file: nothing to replace, and no mode to set.
|
|
590
|
+
// Node offers no access list for it, so it has the default one: full
|
|
591
|
+
// control for this account, administrators and SYSTEM, read-only for
|
|
592
|
+
// everyone else — not enough to write a request. Its random name, readable
|
|
593
|
+
// by this account alone, is what keeps others from finding or squatting it
|
|
594
|
+
// (supervisorSocket), and libuv creates it as the first instance, so a pipe
|
|
595
|
+
// of that name someone else made first fails the listen instead of sharing it.
|
|
596
|
+
if (socket.startsWith('\\\\.\\pipe\\')) {
|
|
597
|
+
await new Promise((resolve, reject) => {
|
|
598
|
+
server.once('error', reject);
|
|
599
|
+
server.listen(socket, () => resolve());
|
|
600
|
+
});
|
|
601
|
+
return;
|
|
602
|
+
}
|
|
476
603
|
// Only a socket is replaced: a killed supervisor leaves exactly that. Any
|
|
477
604
|
// other entry at the path is somebody else's, and refusing beats deleting it.
|
|
478
605
|
try {
|
|
@@ -517,6 +644,7 @@ export async function supervise(ctx) {
|
|
|
517
644
|
/** Has a pending upgrade been written into the history yet? */
|
|
518
645
|
let resolved = false, pending;
|
|
519
646
|
let desired = true, closing = false, chain = Promise.resolve();
|
|
647
|
+
let pipeSecret;
|
|
520
648
|
let failures = 0;
|
|
521
649
|
const stopGateway = async () => {
|
|
522
650
|
desired = false;
|
|
@@ -533,11 +661,17 @@ export async function supervise(ctx) {
|
|
|
533
661
|
const onSignal = () => { closing = true; desired = false; resolveShutdown(); };
|
|
534
662
|
process.once('SIGINT', onSignal);
|
|
535
663
|
process.once('SIGTERM', onSignal);
|
|
664
|
+
// Windows: its console closing (sign-out, shutdown) is the one signal node gets there.
|
|
665
|
+
if (process.platform === 'win32')
|
|
666
|
+
process.once('SIGHUP', onSignal);
|
|
536
667
|
if (briefPid !== undefined) {
|
|
537
668
|
unwatchBrief = watchBriefParent({ parent: briefPid, leave: why => { console.error(`supervisor: leaving the brief run: ${why}.`); onSignal(); } });
|
|
538
669
|
}
|
|
539
670
|
try {
|
|
540
671
|
await initialize(ctx);
|
|
672
|
+
// Kept data that a buddi runs on again (buddi.app reinstalled on a Mac, where no setup clears it).
|
|
673
|
+
await rm(path.join(ctx.data, KEPT_FOR_REINSTALL_FILE), { force: true }).catch(() => { });
|
|
674
|
+
pipeSecret = await nameSupervisorPipe(ctx.data);
|
|
541
675
|
const ready = ctx;
|
|
542
676
|
/*
|
|
543
677
|
* An upgrade that installed new code and handed over is finished here, by
|
|
@@ -602,7 +736,7 @@ export async function supervise(ctx) {
|
|
|
602
736
|
// back and came up, so the upgrade is over without having arrived.
|
|
603
737
|
console.error(entry.outcome === 'done'
|
|
604
738
|
? `upgrade: ${entry.from} to ${entry.to} finished.`
|
|
605
|
-
: entry.step === 'finishing' ? `upgrade: ${entry.error}.` : recoverySentence(entry, { app:
|
|
739
|
+
: entry.step === 'finishing' ? `upgrade: ${entry.error}.` : recoverySentence(entry, { app: appRuns(process.env), linux: linuxInstall(process.env), windows: windowsInstall(process.env) }));
|
|
606
740
|
}
|
|
607
741
|
else {
|
|
608
742
|
ready.state.phase = 'ready';
|
|
@@ -618,7 +752,7 @@ export async function supervise(ctx) {
|
|
|
618
752
|
if (closing || !database.alive || (child && child.exitCode === null && child.signalCode === null))
|
|
619
753
|
return;
|
|
620
754
|
const started = Date.now();
|
|
621
|
-
child = spawn(process.execPath, [LAUNCHER, '__gateway'], { env: ready.env, stdio: ['ignore', 'pipe', 'pipe', 'ipc'] });
|
|
755
|
+
child = spawn(process.execPath, [LAUNCHER, '__gateway'], { env: ready.env, stdio: ['ignore', 'pipe', 'pipe', 'ipc'], windowsHide: true });
|
|
622
756
|
console.error(`supervisor: gateway started (pid ${child.pid}).`);
|
|
623
757
|
// Recorded, so a supervisor that dies and leaves it running is not taken
|
|
624
758
|
// for a stranger holding the web port at the next start (environment.ts).
|
|
@@ -678,19 +812,30 @@ export async function supervise(ctx) {
|
|
|
678
812
|
});
|
|
679
813
|
// Uninstall from the product: the last backup and its words first, then the removal (product-uninstall.ts).
|
|
680
814
|
const home = os.homedir();
|
|
681
|
-
|
|
815
|
+
// buddi.app finishes its own removal; the Linux install shares its layout but not that.
|
|
816
|
+
const appFinishes = appRuns(process.env);
|
|
682
817
|
uninstall = createProductUninstall({
|
|
683
818
|
data: ready.data, home, backup, appFinishes,
|
|
684
819
|
plan: () => {
|
|
685
|
-
const unit = process.platform === 'darwin' ? launchAgentPlist(ready.data, home) : process.platform === 'linux' ? systemdUnitPath(ready.data, ready.env, home) : undefined;
|
|
820
|
+
const unit = process.platform === 'darwin' ? launchAgentPlist(ready.data, home) : process.platform === 'linux' ? systemdUnitPath(ready.data, ready.env, home) : process.platform === 'win32' ? windowsTaskScript(ready.data) : undefined;
|
|
686
821
|
const bundle = process.env.BUDDI_APP_BUNDLE?.trim();
|
|
822
|
+
const setupUninstaller = process.platform === 'win32'
|
|
823
|
+
? readWindowsInstallerRecord((() => { try {
|
|
824
|
+
return readFileSync(path.join(ready.data, 'installer.json'), 'utf8');
|
|
825
|
+
}
|
|
826
|
+
catch {
|
|
827
|
+
return undefined;
|
|
828
|
+
} })()).uninstaller
|
|
829
|
+
: undefined;
|
|
830
|
+
const desktopApp = desktopAppOnThisComputer(process.platform, { exists: existsSync, ...(setupUninstaller === undefined ? {} : { setupUninstaller }) });
|
|
687
831
|
return {
|
|
688
832
|
data: ready.data,
|
|
689
833
|
...(core.vaultSelection({ env: ready.env }) === 'keychain' && ready.env.BUDDI_VAULT_SERVICE ? { keychain: ready.env.BUDDI_VAULT_SERVICE } : {}),
|
|
690
|
-
...(unit !== undefined && existsSync(unit) ? { service: process.platform === 'darwin' ? `launchd agent ${launchAgentLabel(ready.data)}` : `systemd user unit ${launchAgentLabel(ready.data)}.service` } : {}),
|
|
834
|
+
...(unit !== undefined && existsSync(unit) ? { service: process.platform === 'darwin' ? `launchd agent ${launchAgentLabel(ready.data)}` : process.platform === 'win32' ? `Task Scheduler task ${windowsTaskName(launchAgentLabel(ready.data))}` : `systemd user unit ${launchAgentLabel(ready.data)}.service` } : {}),
|
|
691
835
|
...(appFinishes && bundle ? { app: bundle } : {}),
|
|
692
836
|
backups: path.join(home, 'buddi-backups'),
|
|
693
837
|
appFinishes,
|
|
838
|
+
...(desktopApp === undefined ? {} : { desktopApp }),
|
|
694
839
|
};
|
|
695
840
|
},
|
|
696
841
|
exists: existsSync,
|
|
@@ -717,11 +862,13 @@ export async function supervise(ctx) {
|
|
|
717
862
|
const env = { ...nativeEnvironment(startEnv), BUDDI_DATA_DIR: ready.data,
|
|
718
863
|
...Object.fromEntries(['XDG_RUNTIME_DIR', 'DBUS_SESSION_BUS_ADDRESS'].filter(key => typeof startEnv[key] === 'string').map(key => [key, startEnv[key]])) };
|
|
719
864
|
// systemd stops every process in the unit's cgroup with it: the uninstall runs in a transient scope of its own.
|
|
865
|
+
// Windows: a node from inside the data folder (the Windows install's) would keep it from being removed.
|
|
866
|
+
const node = nodeOutsideData(ready.data);
|
|
720
867
|
const [command, args] = startEnv[SERVICE_UNIT_VAR]
|
|
721
868
|
? ['systemd-run', ['--user', '--collect', '--quiet', '--scope', process.execPath, LAUNCHER, ...argv]]
|
|
722
|
-
: [
|
|
869
|
+
: [node, [LAUNCHER, ...argv]];
|
|
723
870
|
console.error(`supervisor: removing buddi; the account is in ${logFile}.`);
|
|
724
|
-
const child = spawn(command, args, { detached: true, stdio: ['ignore', fd, fd], env, cwd: home });
|
|
871
|
+
const child = spawn(command, args, { detached: true, stdio: ['ignore', fd, fd], env, cwd: home, windowsHide: true });
|
|
725
872
|
child.unref();
|
|
726
873
|
closeSync(fd);
|
|
727
874
|
},
|
|
@@ -789,7 +936,13 @@ export async function supervise(ctx) {
|
|
|
789
936
|
await stopGateway(); if (name !== 'stop')
|
|
790
937
|
start(); }); return chain; },
|
|
791
938
|
backup, upgrade, data: ready.data, uninstall, cli, connector,
|
|
939
|
+
exit: () => { console.error('supervisor: asked to exit on the control socket.'); onSignal(); },
|
|
792
940
|
});
|
|
941
|
+
if (pipeSecret !== undefined) {
|
|
942
|
+
const secret = pipeSecret;
|
|
943
|
+
// Before the routes answer: every reply says it is this supervisor's.
|
|
944
|
+
server.prependListener('request', (_req, res) => { res.setHeader(SUPERVISOR_SECRET_HEADER, secret); });
|
|
945
|
+
}
|
|
793
946
|
await listenOnSocket(server, supervisorSocket(ready.data));
|
|
794
947
|
if (briefly)
|
|
795
948
|
console.error('supervisor: started briefly, for an uninstall\'s last backup; the gateway stays stopped.');
|
|
@@ -833,7 +986,7 @@ export async function supervise(ctx) {
|
|
|
833
986
|
const entry = await finishUpgrade(ctx, pending, { ok: false, error: error instanceof Error ? error.message : String(error) }, 'starting')
|
|
834
987
|
.catch(() => undefined);
|
|
835
988
|
if (entry)
|
|
836
|
-
console.error(recoverySentence(entry, { app:
|
|
989
|
+
console.error(recoverySentence(entry, { app: appRuns(process.env), linux: linuxInstall(process.env), windows: windowsInstall(process.env) }));
|
|
837
990
|
}
|
|
838
991
|
throw error;
|
|
839
992
|
}
|
|
@@ -864,9 +1017,13 @@ export async function supervise(ctx) {
|
|
|
864
1017
|
}
|
|
865
1018
|
finally {
|
|
866
1019
|
log?.end();
|
|
1020
|
+
// Its pipe's name and secret go before the lock does (Windows).
|
|
1021
|
+
if (pipeSecret !== undefined)
|
|
1022
|
+
await rm(path.join(ctx.data, PIPE_NAME_FILE), { force: true });
|
|
867
1023
|
await release();
|
|
868
1024
|
process.removeListener('SIGINT', onSignal);
|
|
869
1025
|
process.removeListener('SIGTERM', onSignal);
|
|
1026
|
+
process.removeListener('SIGHUP', onSignal);
|
|
870
1027
|
}
|
|
871
1028
|
}
|
|
872
1029
|
// buddi.app finishes an uninstall the owner started in Settings → System (product-uninstall.ts).
|
|
@@ -885,7 +1042,8 @@ export async function supervise(ctx) {
|
|
|
885
1042
|
if (handingOver) {
|
|
886
1043
|
const marker = ctx.state?.upgrade;
|
|
887
1044
|
const result = await handOver({
|
|
888
|
-
|
|
1045
|
+
// An installer's successor (Linux, Windows) is `current`'s launcher, which the upgrade just switched.
|
|
1046
|
+
ctx, launcher: installerLayout(process.env) ? currentLauncher(appLayout(process.env)) : LAUNCHER, env: startEnv,
|
|
889
1047
|
/*
|
|
890
1048
|
* The successor is ready when it serves, not when it holds the lock: it
|
|
891
1049
|
* takes the lock first and then starts a cluster and runs migrations,
|
|
@@ -893,7 +1051,7 @@ export async function supervise(ctx) {
|
|
|
893
1051
|
* installed is the whole hand-over, observed rather than assumed.
|
|
894
1052
|
*/
|
|
895
1053
|
ready: async () => {
|
|
896
|
-
const status = await statusOnSocket(supervisorSocket(ctx.data));
|
|
1054
|
+
const status = await statusOnSocket(supervisorSocket(ctx.data), undefined, headers => answeredBySupervisor(ctx.data, headers));
|
|
897
1055
|
if (status !== undefined && status.current === marker?.to)
|
|
898
1056
|
return true;
|
|
899
1057
|
/*
|
|
@@ -924,7 +1082,7 @@ export async function supervise(ctx) {
|
|
|
924
1082
|
const entry = await finishUpgrade(ctx, marker, { ok: false, error: `the upgraded supervisor did not answer on ${supervisorSocket(ctx.data)}` }, 'starting')
|
|
925
1083
|
.catch(() => undefined);
|
|
926
1084
|
if (entry)
|
|
927
|
-
console.error(recoverySentence(entry, { app:
|
|
1085
|
+
console.error(recoverySentence(entry, { app: appRuns(process.env), linux: linuxInstall(process.env), windows: windowsInstall(process.env) }));
|
|
928
1086
|
}
|
|
929
1087
|
/*
|
|
930
1088
|
* And then go, whatever is still holding the loop.
|