jishushell 0.6.5 → 0.6.18
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/apps/anythingllm-container.yaml +15 -170
- package/apps/browserless-chromium-container.yaml +15 -10
- package/apps/filebrowser-container.yaml +14 -9
- package/apps/hermes-container.yaml +23 -2
- package/apps/jishu-kb-container.yaml +29 -161
- package/apps/ollama-binary.yaml +32 -28
- package/apps/ollama-cpu-container.yaml +5 -0
- package/apps/ollama-with-hollama-binary.yaml +33 -28
- package/apps/openclaw-binary.yaml +34 -10
- package/apps/openclaw-container.yaml +31 -7
- package/apps/openclaw-with-ollama-container.yaml +8 -2
- package/apps/openclaw-with-searxng-container.yaml +18 -6
- package/apps/searxng-container.yaml +11 -6
- package/apps/weknora-container.yaml +21 -21
- package/dependencies/jishushell-panel-0.6.18.tgz +0 -0
- package/dist/cli/app.js +244 -213
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/backup.js +15 -12
- package/dist/cli/backup.js.map +1 -1
- package/dist/cli/core.d.ts +4 -3
- package/dist/cli/core.js +392 -227
- package/dist/cli/core.js.map +1 -1
- package/dist/cli/doctor.d.ts +1 -1
- package/dist/cli/doctor.js +17 -10
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/job.js +62 -14
- package/dist/cli/job.js.map +1 -1
- package/dist/cli/llm.js +80 -11
- package/dist/cli/llm.js.map +1 -1
- package/dist/cli/managed-list.d.ts +1 -3
- package/dist/cli/managed-list.js +18 -16
- package/dist/cli/managed-list.js.map +1 -1
- package/dist/cli/migrate.d.ts +2 -0
- package/dist/cli/migrate.js +160 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +23 -19
- package/dist/config.js +60 -49
- package/dist/config.js.map +1 -1
- package/dist/control.d.ts +6 -6
- package/dist/control.js +31 -23
- package/dist/control.js.map +1 -1
- package/dist/core.d.ts +5 -5
- package/dist/core.js +5 -5
- package/dist/core.js.map +1 -1
- package/dist/install.d.ts +2 -2
- package/dist/install.js +18 -18
- package/dist/install.js.map +1 -1
- package/dist/routes/apps.d.ts +1 -1
- package/dist/routes/apps.js +101 -193
- package/dist/routes/apps.js.map +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/backup.js +1 -1
- package/dist/routes/backup.js.map +1 -1
- package/dist/routes/external-mounts.d.ts +1 -1
- package/dist/routes/external-mounts.js +1 -1
- package/dist/routes/external-mounts.js.map +1 -1
- package/dist/routes/file-mounts.d.ts +4 -3
- package/dist/routes/file-mounts.js +51 -30
- package/dist/routes/file-mounts.js.map +1 -1
- package/dist/routes/files-organize.d.ts +2 -2
- package/dist/routes/files-organize.js +5 -5
- package/dist/routes/files-organize.js.map +1 -1
- package/dist/routes/files.d.ts +1 -1
- package/dist/routes/files.js +1 -1
- package/dist/routes/files.js.map +1 -1
- package/dist/routes/instances.d.ts +10 -4
- package/dist/routes/instances.js +323 -541
- package/dist/routes/instances.js.map +1 -1
- package/dist/routes/integration-apps.d.ts +14 -0
- package/dist/routes/integration-apps.js +81 -0
- package/dist/routes/integration-apps.js.map +1 -0
- package/dist/routes/integrations.d.ts +9 -0
- package/dist/routes/integrations.js +12 -0
- package/dist/routes/integrations.js.map +1 -0
- package/dist/routes/llm-proxy.js +26 -3
- package/dist/routes/llm-proxy.js.map +1 -1
- package/dist/routes/setup.js +53 -38
- package/dist/routes/setup.js.map +1 -1
- package/dist/routes/system.js +108 -68
- package/dist/routes/system.js.map +1 -1
- package/dist/routes/webdav.d.ts +1 -1
- package/dist/routes/webdav.js +2 -2
- package/dist/routes/webdav.js.map +1 -1
- package/dist/server.js +315 -213
- package/dist/server.js.map +1 -1
- package/dist/services/app-common/app-compiler.js +186 -0
- package/dist/services/app-common/app-compiler.js.map +1 -0
- package/dist/services/app-common/app-shared.d.ts +15 -0
- package/dist/services/app-common/app-shared.js +64 -0
- package/dist/services/app-common/app-shared.js.map +1 -0
- package/dist/services/app-common/capability-service.d.ts +45 -0
- package/dist/services/app-common/capability-service.js +331 -0
- package/dist/services/app-common/capability-service.js.map +1 -0
- package/dist/services/app-common/catalog-service.d.ts +59 -0
- package/dist/services/app-common/catalog-service.js +308 -0
- package/dist/services/app-common/catalog-service.js.map +1 -0
- package/dist/services/app-common/create-pipeline.d.ts +26 -0
- package/dist/services/app-common/create-pipeline.js +298 -0
- package/dist/services/app-common/create-pipeline.js.map +1 -0
- package/dist/services/app-common/delete-service.d.ts +5 -0
- package/dist/services/app-common/delete-service.js +104 -0
- package/dist/services/app-common/delete-service.js.map +1 -0
- package/dist/services/app-common/execution-owner.d.ts +23 -0
- package/dist/services/app-common/execution-owner.js +124 -0
- package/dist/services/app-common/execution-owner.js.map +1 -0
- package/dist/services/app-common/execution-service.d.ts +23 -0
- package/dist/services/app-common/execution-service.js +105 -0
- package/dist/services/app-common/execution-service.js.map +1 -0
- package/dist/services/app-common/id-normalizer.d.ts +31 -0
- package/dist/services/app-common/id-normalizer.js +83 -0
- package/dist/services/app-common/id-normalizer.js.map +1 -0
- package/dist/services/app-common/install-store.d.ts +34 -0
- package/dist/services/app-common/install-store.js +261 -0
- package/dist/services/app-common/install-store.js.map +1 -0
- package/dist/services/app-common/instance-store.d.ts +78 -0
- package/dist/services/app-common/instance-store.js +495 -0
- package/dist/services/app-common/instance-store.js.map +1 -0
- package/dist/services/app-common/integration-refs.d.ts +17 -0
- package/dist/services/app-common/integration-refs.js +47 -0
- package/dist/services/app-common/integration-refs.js.map +1 -0
- package/dist/services/app-common/lifecycle-pipeline.d.ts +62 -0
- package/dist/services/app-common/lifecycle-pipeline.js +317 -0
- package/dist/services/app-common/lifecycle-pipeline.js.map +1 -0
- package/dist/services/app-common/lifecycle-scripts.d.ts +38 -0
- package/dist/services/app-common/lifecycle-scripts.js +935 -0
- package/dist/services/app-common/lifecycle-scripts.js.map +1 -0
- package/dist/services/app-common/lifecycle-service.d.ts +68 -0
- package/dist/services/app-common/lifecycle-service.js +467 -0
- package/dist/services/app-common/lifecycle-service.js.map +1 -0
- package/dist/services/app-common/paths.d.ts +29 -0
- package/dist/services/app-common/paths.js +34 -0
- package/dist/services/app-common/paths.js.map +1 -0
- package/dist/services/app-common/platform-transform.d.ts +32 -0
- package/dist/services/app-common/platform-transform.js +65 -0
- package/dist/services/app-common/platform-transform.js.map +1 -0
- package/dist/services/app-common/provide-resolver.d.ts +29 -0
- package/dist/services/app-common/provide-resolver.js +129 -0
- package/dist/services/app-common/provide-resolver.js.map +1 -0
- package/dist/services/app-common/remote-spec.d.ts +14 -0
- package/dist/services/app-common/remote-spec.js +58 -0
- package/dist/services/app-common/remote-spec.js.map +1 -0
- package/dist/services/app-common/runtime-builder.d.ts +1 -0
- package/dist/services/app-common/runtime-builder.js +2 -0
- package/dist/services/app-common/runtime-builder.js.map +1 -0
- package/dist/services/app-common/runtime-facts.d.ts +19 -0
- package/dist/services/app-common/runtime-facts.js +126 -0
- package/dist/services/app-common/runtime-facts.js.map +1 -0
- package/dist/services/app-common/service.d.ts +9 -0
- package/dist/services/app-common/service.js +10 -0
- package/dist/services/app-common/service.js.map +1 -0
- package/dist/services/app-common/spec-materializer.d.ts +9 -0
- package/dist/services/app-common/spec-materializer.js +361 -0
- package/dist/services/app-common/spec-materializer.js.map +1 -0
- package/dist/services/app-common/status-refresh.d.ts +33 -0
- package/dist/services/app-common/status-refresh.js +759 -0
- package/dist/services/app-common/status-refresh.js.map +1 -0
- package/dist/services/app-common/task-service.d.ts +29 -0
- package/dist/services/app-common/task-service.js +93 -0
- package/dist/services/app-common/task-service.js.map +1 -0
- package/dist/services/app-common/terminal-session-manager.js +157 -0
- package/dist/services/app-common/terminal-session-manager.js.map +1 -0
- package/dist/services/app-modules/browserless/routes.d.ts +9 -0
- package/dist/services/app-modules/browserless/routes.js +517 -0
- package/dist/services/app-modules/browserless/routes.js.map +1 -0
- package/dist/services/app-modules/routes.d.ts +2 -0
- package/dist/services/app-modules/routes.js +5 -0
- package/dist/services/app-modules/routes.js.map +1 -0
- package/dist/services/backup/backup-admin.d.ts +95 -0
- package/dist/services/backup/backup-admin.js +246 -0
- package/dist/services/backup/backup-admin.js.map +1 -0
- package/dist/services/backup/backup-manager.d.ts +264 -0
- package/dist/services/backup/backup-manager.js +2318 -0
- package/dist/services/backup/backup-manager.js.map +1 -0
- package/dist/services/backup/backup-verify.js +240 -0
- package/dist/services/backup/backup-verify.js.map +1 -0
- package/dist/services/capabilities/browser-policy.d.ts +14 -0
- package/dist/services/capabilities/browser-policy.js +141 -0
- package/dist/services/capabilities/browser-policy.js.map +1 -0
- package/dist/services/capabilities/contract.d.ts +50 -0
- package/dist/services/capabilities/contract.js +129 -0
- package/dist/services/capabilities/contract.js.map +1 -0
- package/dist/services/capabilities/endpoint-validator.d.ts +42 -0
- package/dist/services/capabilities/endpoint-validator.js +114 -0
- package/dist/services/capabilities/endpoint-validator.js.map +1 -0
- package/dist/services/capabilities/health.d.ts +16 -0
- package/dist/services/capabilities/health.js +121 -0
- package/dist/services/capabilities/health.js.map +1 -0
- package/dist/services/capabilities/registry.d.ts +56 -0
- package/dist/services/capabilities/registry.js +222 -0
- package/dist/services/capabilities/registry.js.map +1 -0
- package/dist/services/capabilities/sync.d.ts +7 -0
- package/dist/services/capabilities/sync.js +223 -0
- package/dist/services/capabilities/sync.js.map +1 -0
- package/dist/services/capability-proxy/html-rewriters/browserless.d.ts +1 -0
- package/dist/services/capability-proxy/html-rewriters/browserless.js +83 -0
- package/dist/services/capability-proxy/html-rewriters/browserless.js.map +1 -0
- package/dist/services/capability-proxy/html-rewriters/index.d.ts +12 -0
- package/dist/services/capability-proxy/html-rewriters/index.js +25 -0
- package/dist/services/capability-proxy/html-rewriters/index.js.map +1 -0
- package/dist/services/capability-proxy/html-rewriters/jishukb.d.ts +1 -0
- package/dist/services/capability-proxy/html-rewriters/jishukb.js +161 -0
- package/dist/services/capability-proxy/html-rewriters/jishukb.js.map +1 -0
- package/dist/services/connections/admin.d.ts +80 -0
- package/dist/services/connections/admin.js +327 -0
- package/dist/services/connections/admin.js.map +1 -0
- package/dist/services/connections/apply.d.ts +110 -0
- package/dist/services/connections/apply.js +444 -0
- package/dist/services/connections/apply.js.map +1 -0
- package/dist/services/connections/resolver.d.ts +82 -0
- package/dist/services/connections/resolver.js +289 -0
- package/dist/services/connections/resolver.js.map +1 -0
- package/dist/services/connections/suggestions.d.ts +27 -0
- package/dist/services/connections/suggestions.js +124 -0
- package/dist/services/connections/suggestions.js.map +1 -0
- package/dist/services/connections/transactor.d.ts +39 -0
- package/dist/services/connections/transactor.js +307 -0
- package/dist/services/connections/transactor.js.map +1 -0
- package/dist/services/files/external-mounts.js +187 -0
- package/dist/services/files/external-mounts.js.map +1 -0
- package/dist/services/files/files-manager.d.ts +265 -0
- package/dist/services/files/files-manager.js +1189 -0
- package/dist/services/files/files-manager.js.map +1 -0
- package/dist/services/files/files-mounts.d.ts +42 -0
- package/dist/services/files/files-mounts.js +207 -0
- package/dist/services/files/files-mounts.js.map +1 -0
- package/dist/services/files/organize/applier.js +218 -0
- package/dist/services/files/organize/applier.js.map +1 -0
- package/dist/services/files/organize/rules.js +286 -0
- package/dist/services/files/organize/rules.js.map +1 -0
- package/dist/services/files/organize/scanner.js +366 -0
- package/dist/services/files/organize/scanner.js.map +1 -0
- package/dist/services/files/organize/store.js +82 -0
- package/dist/services/files/organize/store.js.map +1 -0
- package/dist/services/files/webdav/server.d.ts +47 -0
- package/dist/services/files/webdav/server.js +329 -0
- package/dist/services/files/webdav/server.js.map +1 -0
- package/dist/services/files/webdav/xml-builder.js.map +1 -0
- package/dist/services/instances/admin.d.ts +23 -0
- package/dist/services/instances/admin.js +218 -0
- package/dist/services/instances/admin.js.map +1 -0
- package/dist/services/instances/clone.d.ts +26 -0
- package/dist/services/instances/clone.js +78 -0
- package/dist/services/instances/clone.js.map +1 -0
- package/dist/services/instances/config-admin.d.ts +17 -0
- package/dist/services/instances/config-admin.js +181 -0
- package/dist/services/instances/config-admin.js.map +1 -0
- package/dist/services/instances/manager.d.ts +231 -0
- package/dist/services/instances/manager.js +1348 -0
- package/dist/services/instances/manager.js.map +1 -0
- package/dist/services/instances/passwords.js +173 -0
- package/dist/services/instances/passwords.js.map +1 -0
- package/dist/services/instances/types.d.ts +21 -0
- package/dist/services/instances/types.js +2 -0
- package/dist/services/instances/types.js.map +1 -0
- package/dist/services/integrations/anythingllm/integration.d.ts +25 -0
- package/dist/services/integrations/anythingllm/integration.js +251 -0
- package/dist/services/integrations/anythingllm/integration.js.map +1 -0
- package/dist/services/integrations/catalog.d.ts +3 -0
- package/dist/services/integrations/catalog.js +73 -0
- package/dist/services/integrations/catalog.js.map +1 -0
- package/dist/services/integrations/custom/integration.d.ts +28 -0
- package/dist/services/integrations/custom/integration.js +179 -0
- package/dist/services/integrations/custom/integration.js.map +1 -0
- package/dist/services/integrations/hermes/integration.d.ts +194 -0
- package/dist/services/integrations/hermes/integration.js +1669 -0
- package/dist/services/integrations/hermes/integration.js.map +1 -0
- package/dist/services/integrations/index.d.ts +40 -0
- package/dist/services/integrations/index.js +59 -0
- package/dist/services/integrations/index.js.map +1 -0
- package/dist/services/integrations/installable/catalog.d.ts +33 -0
- package/dist/services/integrations/installable/catalog.js +88 -0
- package/dist/services/integrations/installable/catalog.js.map +1 -0
- package/dist/services/integrations/installable/index.d.ts +35 -0
- package/dist/services/integrations/installable/index.js +170 -0
- package/dist/services/integrations/installable/index.js.map +1 -0
- package/dist/services/integrations/installable/installers/integration-probes.d.ts +50 -0
- package/dist/services/integrations/installable/installers/integration-probes.js +231 -0
- package/dist/services/integrations/installable/installers/integration-probes.js.map +1 -0
- package/dist/services/integrations/installable/installers/integration.d.ts +30 -0
- package/dist/services/integrations/installable/installers/integration.js +177 -0
- package/dist/services/integrations/installable/installers/integration.js.map +1 -0
- package/dist/services/integrations/installable/installers/registry-probe.js.map +1 -0
- package/dist/services/integrations/installable/installers/shell-script.d.ts +46 -0
- package/dist/services/integrations/installable/installers/shell-script.js +487 -0
- package/dist/services/integrations/installable/installers/shell-script.js.map +1 -0
- package/dist/services/integrations/installable/types.d.ts +130 -0
- package/dist/services/integrations/installable/types.js +19 -0
- package/dist/services/integrations/installable/types.js.map +1 -0
- package/dist/services/integrations/jishukb/integration.d.ts +22 -0
- package/dist/services/integrations/jishukb/integration.js +189 -0
- package/dist/services/integrations/jishukb/integration.js.map +1 -0
- package/dist/services/integrations/openclaw/anythingllm-shim.d.ts +46 -0
- package/dist/services/integrations/openclaw/anythingllm-shim.js +281 -0
- package/dist/services/integrations/openclaw/anythingllm-shim.js.map +1 -0
- package/dist/services/integrations/openclaw/drive-shim.js +490 -0
- package/dist/services/integrations/openclaw/drive-shim.js.map +1 -0
- package/dist/services/integrations/openclaw/integration.d.ts +424 -0
- package/dist/services/integrations/openclaw/integration.js +4402 -0
- package/dist/services/integrations/openclaw/integration.js.map +1 -0
- package/dist/services/integrations/openclaw/jishukb-shim.d.ts +48 -0
- package/dist/services/integrations/openclaw/jishukb-shim.js +750 -0
- package/dist/services/integrations/openclaw/jishukb-shim.js.map +1 -0
- package/dist/services/integrations/openclaw/mcporter-lite.js +276 -0
- package/dist/services/integrations/openclaw/mcporter-lite.js.map +1 -0
- package/dist/services/integrations/openclaw/mcporter.d.ts +46 -0
- package/dist/services/integrations/openclaw/mcporter.js +112 -0
- package/dist/services/integrations/openclaw/mcporter.js.map +1 -0
- package/dist/services/integrations/openclaw/routes.d.ts +21 -0
- package/dist/services/integrations/openclaw/routes.js +1191 -0
- package/dist/services/integrations/openclaw/routes.js.map +1 -0
- package/dist/services/integrations/registry.d.ts +17 -0
- package/dist/services/integrations/registry.js +36 -0
- package/dist/services/integrations/registry.js.map +1 -0
- package/dist/services/integrations/routes.d.ts +2 -0
- package/dist/services/integrations/routes.js +9 -0
- package/dist/services/integrations/routes.js.map +1 -0
- package/dist/services/integrations/types.d.ts +469 -0
- package/dist/services/integrations/types.js +2 -0
- package/dist/services/integrations/types.js.map +1 -0
- package/dist/services/legacy-migrator/classifier.d.ts +44 -0
- package/dist/services/legacy-migrator/classifier.js +309 -0
- package/dist/services/legacy-migrator/classifier.js.map +1 -0
- package/dist/services/legacy-migrator/executor.d.ts +42 -0
- package/dist/services/legacy-migrator/executor.js +637 -0
- package/dist/services/legacy-migrator/executor.js.map +1 -0
- package/dist/services/legacy-migrator/index.d.ts +31 -0
- package/dist/services/legacy-migrator/index.js +34 -0
- package/dist/services/legacy-migrator/index.js.map +1 -0
- package/dist/services/legacy-migrator/planner.d.ts +8 -0
- package/dist/services/legacy-migrator/planner.js +154 -0
- package/dist/services/legacy-migrator/planner.js.map +1 -0
- package/dist/services/legacy-migrator/provider-settings.d.ts +6 -0
- package/dist/services/legacy-migrator/provider-settings.js +72 -0
- package/dist/services/legacy-migrator/provider-settings.js.map +1 -0
- package/dist/services/legacy-migrator/report.d.ts +9 -0
- package/dist/services/legacy-migrator/report.js +99 -0
- package/dist/services/legacy-migrator/report.js.map +1 -0
- package/dist/services/legacy-migrator/scanner.d.ts +13 -0
- package/dist/services/legacy-migrator/scanner.js +157 -0
- package/dist/services/legacy-migrator/scanner.js.map +1 -0
- package/dist/services/legacy-migrator/types.d.ts +97 -0
- package/dist/services/legacy-migrator/types.js +23 -0
- package/dist/services/legacy-migrator/types.js.map +1 -0
- package/dist/services/llm-proxy/instance-proxy.d.ts +17 -1
- package/dist/services/llm-proxy/instance-proxy.js +171 -44
- package/dist/services/llm-proxy/instance-proxy.js.map +1 -1
- package/dist/services/llm-proxy/probe.js +5 -14
- package/dist/services/llm-proxy/probe.js.map +1 -1
- package/dist/services/llm-proxy/providers.js +23 -31
- package/dist/services/llm-proxy/providers.js.map +1 -1
- package/dist/services/llm-proxy/ssrf.d.ts +11 -4
- package/dist/services/llm-proxy/ssrf.js +45 -7
- package/dist/services/llm-proxy/ssrf.js.map +1 -1
- package/dist/services/llm-proxy/validate-key.js +16 -37
- package/dist/services/llm-proxy/validate-key.js.map +1 -1
- package/dist/services/repair/runtime-repair.d.ts +22 -0
- package/dist/services/repair/runtime-repair.js +307 -0
- package/dist/services/repair/runtime-repair.js.map +1 -0
- package/dist/services/runtime/driver-registry.d.ts +21 -0
- package/dist/services/runtime/driver-registry.js +22 -0
- package/dist/services/runtime/driver-registry.js.map +1 -0
- package/dist/services/runtime/drivers/nomad.d.ts +260 -0
- package/dist/services/runtime/drivers/nomad.js +3092 -0
- package/dist/services/runtime/drivers/nomad.js.map +1 -0
- package/dist/services/runtime/errors.d.ts +3 -3
- package/dist/services/runtime/errors.js +3 -3
- package/dist/services/runtime/instance.d.ts +14 -16
- package/dist/services/runtime/instance.js +93 -123
- package/dist/services/runtime/instance.js.map +1 -1
- package/dist/services/runtime/job-id.d.ts +1 -1
- package/dist/services/runtime/job-id.js +1 -1
- package/dist/services/runtime/mcp-shims/firewall.d.ts +2 -2
- package/dist/services/runtime/mcp-shims/firewall.js +2 -2
- package/dist/services/runtime/mcp-shims/searxng-shim.d.ts +3 -5
- package/dist/services/runtime/mcp-shims/searxng-shim.js +3 -5
- package/dist/services/runtime/mcp-shims/searxng-shim.js.map +1 -1
- package/dist/services/runtime/mcp-shims/write-mcp-entry.d.ts +20 -20
- package/dist/services/runtime/mcp-shims/write-mcp-entry.js +16 -16
- package/dist/services/runtime/mcp-shims/write-mcp-entry.js.map +1 -1
- package/dist/services/runtime/ownership-marker.d.ts +83 -0
- package/dist/services/runtime/ownership-marker.js +109 -0
- package/dist/services/runtime/ownership-marker.js.map +1 -0
- package/dist/services/runtime/types.d.ts +22 -501
- package/dist/services/runtime/types.js +0 -12
- package/dist/services/runtime/types.js.map +1 -1
- package/dist/services/runtime/workload-compiler.d.ts +17 -0
- package/dist/services/runtime/workload-compiler.js +525 -0
- package/dist/services/runtime/workload-compiler.js.map +1 -0
- package/dist/services/runtime/workload-types.d.ts +11 -0
- package/dist/services/runtime/workload-types.js +2 -0
- package/dist/services/runtime/workload-types.js.map +1 -0
- package/dist/services/setup/core-manager.d.ts +50 -0
- package/dist/services/setup/core-manager.js +456 -0
- package/dist/services/setup/core-manager.js.map +1 -0
- package/dist/services/setup/plugin-installer.js +136 -0
- package/dist/services/setup/plugin-installer.js.map +1 -0
- package/dist/services/setup/setup-manager.d.ts +158 -0
- package/dist/services/setup/setup-manager.js +2768 -0
- package/dist/services/setup/setup-manager.js.map +1 -0
- package/dist/services/system/cli-command.d.ts +5 -0
- package/dist/services/system/cli-command.js +18 -0
- package/dist/services/system/cli-command.js.map +1 -0
- package/dist/services/system/macos-launchd.js +312 -0
- package/dist/services/system/macos-launchd.js.map +1 -0
- package/dist/services/system/repair-orchestrator.d.ts +71 -0
- package/dist/services/system/repair-orchestrator.js +412 -0
- package/dist/services/system/repair-orchestrator.js.map +1 -0
- package/dist/services/system/system-monitor.js +96 -0
- package/dist/services/system/system-monitor.js.map +1 -0
- package/dist/services/system/system-ollama-provider.d.ts +14 -0
- package/dist/services/system/system-ollama-provider.js +129 -0
- package/dist/services/system/system-ollama-provider.js.map +1 -0
- package/dist/services/system/system-reconciler.d.ts +59 -0
- package/dist/services/system/system-reconciler.js +710 -0
- package/dist/services/system/system-reconciler.js.map +1 -0
- package/dist/services/system/update-manager.d.ts +43 -0
- package/dist/services/system/update-manager.js +315 -0
- package/dist/services/system/update-manager.js.map +1 -0
- package/dist/services/system/upgrade-finalize.d.ts +80 -0
- package/dist/services/system/upgrade-finalize.js +507 -0
- package/dist/services/system/upgrade-finalize.js.map +1 -0
- package/dist/services/tasks/registry.d.ts +44 -0
- package/dist/services/tasks/registry.js +90 -0
- package/dist/services/tasks/registry.js.map +1 -0
- package/dist/services/telemetry/activation.d.ts +6 -2
- package/dist/services/telemetry/activation.js +6 -2
- package/dist/services/telemetry/activation.js.map +1 -1
- package/dist/services/telemetry/heartbeat.d.ts +6 -2
- package/dist/services/telemetry/heartbeat.js +6 -2
- package/dist/services/telemetry/heartbeat.js.map +1 -1
- package/dist/services/workspaces/builder.d.ts +29 -0
- package/dist/services/workspaces/builder.js +186 -0
- package/dist/services/workspaces/builder.js.map +1 -0
- package/dist/types.d.ts +331 -45
- package/dist/utils/instance-lock.d.ts +2 -2
- package/dist/utils/instance-lock.js +2 -2
- package/install/jishu-install.sh +107 -26
- package/install/jishu-uninstall.sh +8 -0
- package/install/post-install.sh +162 -185
- package/install/post-uninstall.sh +6 -0
- package/node_modules/@fastify/static/.github/workflows/ci.yml +1 -1
- package/node_modules/@fastify/static/.github/workflows/lock-threads.yml +19 -0
- package/node_modules/@fastify/static/LICENSE +1 -3
- package/node_modules/@fastify/static/example/server-benchmark.js +39 -0
- package/node_modules/@fastify/static/index.js +169 -23
- package/node_modules/@fastify/static/lib/dirList.js +20 -6
- package/node_modules/@fastify/static/package.json +10 -8
- package/node_modules/@fastify/static/test/dir-list.test.js +82 -0
- package/node_modules/@fastify/static/test/static.test.js +326 -4
- package/node_modules/@fastify/static/types/index.d.ts +0 -4
- package/node_modules/@fastify/static/types/index.test-d.ts +1 -1
- package/node_modules/content-disposition/README.md +21 -22
- package/node_modules/content-disposition/index.js +122 -44
- package/node_modules/content-disposition/package.json +16 -20
- package/node_modules/glob/README.md +39 -130
- package/node_modules/glob/dist/commonjs/glob.d.ts +8 -0
- package/node_modules/glob/dist/commonjs/glob.d.ts.map +1 -1
- package/node_modules/glob/dist/commonjs/glob.js +2 -1
- package/node_modules/glob/dist/commonjs/glob.js.map +1 -1
- package/node_modules/glob/dist/commonjs/index.min.js +4 -0
- package/node_modules/glob/dist/commonjs/index.min.js.map +7 -0
- package/node_modules/glob/dist/commonjs/pattern.d.ts +3 -0
- package/node_modules/glob/dist/commonjs/pattern.d.ts.map +1 -1
- package/node_modules/glob/dist/commonjs/pattern.js +4 -0
- package/node_modules/glob/dist/commonjs/pattern.js.map +1 -1
- package/node_modules/glob/dist/esm/glob.d.ts +8 -0
- package/node_modules/glob/dist/esm/glob.d.ts.map +1 -1
- package/node_modules/glob/dist/esm/glob.js +2 -1
- package/node_modules/glob/dist/esm/glob.js.map +1 -1
- package/node_modules/glob/dist/esm/index.min.js +4 -0
- package/node_modules/glob/dist/esm/index.min.js.map +7 -0
- package/node_modules/glob/dist/esm/pattern.d.ts +3 -0
- package/node_modules/glob/dist/esm/pattern.d.ts.map +1 -1
- package/node_modules/glob/dist/esm/pattern.js +4 -0
- package/node_modules/glob/dist/esm/pattern.js.map +1 -1
- package/node_modules/glob/package.json +38 -37
- package/node_modules/jishushell-panel/README.md +4 -4
- package/node_modules/jishushell-panel/output/dist/server.js +17 -6
- package/node_modules/jishushell-panel/output/dist/server.js.map +1 -1
- package/node_modules/jishushell-panel/output/public/assets/ApiKeyField-NKcbHjNz.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/Dashboard-Da1fL38t.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/HermesChatPanel-DZvmYsoh.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/HermesConfigForm-BLUWlKwm.js +4 -0
- package/node_modules/jishushell-panel/output/public/assets/InitPassword-BAKsshzk.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-Dgyc_TX5.js +14 -0
- package/node_modules/jishushell-panel/output/public/assets/Login-DHeOmwI8.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/NewInstance-CIy0cYtp.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/ProviderRecommendations-H0ByEYF0.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/Settings-DAT-UMfP.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/Setup-g3uckFYR.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/WeixinLoginPanel-D-T6BxkQ.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/api-C70Gt678.js +4 -0
- package/node_modules/jishushell-panel/output/public/assets/index-DnnqTf7s.css +1 -0
- package/node_modules/jishushell-panel/output/public/assets/index-ERt6_ngA.js +23 -0
- package/node_modules/jishushell-panel/output/public/assets/registry-DF93EzIb.js +2 -0
- package/node_modules/jishushell-panel/output/public/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/setup-task-q21GnI0E.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/usePolling-DeoThIQn.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-CS8DFbkQ.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/vendor-react-Cc84NArf.js +8 -0
- package/node_modules/jishushell-panel/output/public/index.html +6 -4
- package/node_modules/jishushell-panel/package.json +2 -2
- package/node_modules/semver/classes/range.js +11 -2
- package/node_modules/semver/package.json +2 -2
- package/package.json +12 -64
- package/scripts/check-app-path-boundaries.mjs +121 -0
- package/scripts/check-app-spec.mjs +127 -25
- package/scripts/check-colima-launchd.mjs +10 -8
- package/scripts/check-integration-isolation.ts +541 -0
- package/scripts/check-new-file-tests.mjs +11 -3
- package/scripts/check-open-core-boundaries.mjs +60 -10
- package/scripts/check-test-layering.sh +1 -1
- package/scripts/fixtures/instances/hermes-sample/instance.json +3 -2
- package/scripts/fixtures/instances/legacy-openclaw-sample/instance.json +1 -1
- package/scripts/local-web-upgrade-test.README +4 -3
- package/scripts/local-web-upgrade-test.example.env +2 -2
- package/scripts/local-web-upgrade-test.sh +14 -1
- package/scripts/pack-gui-and-send-pi.sh +41 -0
- package/scripts/perf/instances.js +1 -1
- package/scripts/prune-open-core-dist.mjs +89 -2
- package/scripts/smoke/hermes-bootstrap.sh +5 -5
- package/templates/hermes-entrypoint.sh +19 -29
- package/apps/openwebui-container.yaml +0 -97
- package/apps/playwright-container.yaml +0 -126
- package/dependencies/jishushell-panel-0.6.5.tgz +0 -0
- package/dist/crypto-shim.d.ts +0 -1
- package/dist/crypto-shim.js +0 -2
- package/dist/crypto-shim.js.map +0 -1
- package/dist/routes/agent-apps.d.ts +0 -14
- package/dist/routes/agent-apps.js +0 -77
- package/dist/routes/agent-apps.js.map +0 -1
- package/dist/routes/internal.d.ts +0 -2
- package/dist/routes/internal.js +0 -55
- package/dist/routes/internal.js.map +0 -1
- package/dist/routes/openclaw-routes.d.ts +0 -22
- package/dist/routes/openclaw-routes.js +0 -1020
- package/dist/routes/openclaw-routes.js.map +0 -1
- package/dist/routes/runtime.d.ts +0 -15
- package/dist/routes/runtime.js +0 -76
- package/dist/routes/runtime.js.map +0 -1
- package/dist/services/agent-apps/catalog.d.ts +0 -33
- package/dist/services/agent-apps/catalog.js +0 -88
- package/dist/services/agent-apps/catalog.js.map +0 -1
- package/dist/services/agent-apps/index.d.ts +0 -36
- package/dist/services/agent-apps/index.js +0 -171
- package/dist/services/agent-apps/index.js.map +0 -1
- package/dist/services/agent-apps/installers/adapter-probes.d.ts +0 -49
- package/dist/services/agent-apps/installers/adapter-probes.js +0 -230
- package/dist/services/agent-apps/installers/adapter-probes.js.map +0 -1
- package/dist/services/agent-apps/installers/adapter.d.ts +0 -30
- package/dist/services/agent-apps/installers/adapter.js +0 -171
- package/dist/services/agent-apps/installers/adapter.js.map +0 -1
- package/dist/services/agent-apps/installers/registry-probe.js.map +0 -1
- package/dist/services/agent-apps/installers/shell-script.d.ts +0 -47
- package/dist/services/agent-apps/installers/shell-script.js +0 -488
- package/dist/services/agent-apps/installers/shell-script.js.map +0 -1
- package/dist/services/agent-apps/types.d.ts +0 -128
- package/dist/services/agent-apps/types.js +0 -17
- package/dist/services/agent-apps/types.js.map +0 -1
- package/dist/services/app/app-compiler.js +0 -185
- package/dist/services/app/app-compiler.js.map +0 -1
- package/dist/services/app/app-manager.d.ts +0 -184
- package/dist/services/app/app-manager.js +0 -2933
- package/dist/services/app/app-manager.js.map +0 -1
- package/dist/services/app/custom-manager.d.ts +0 -27
- package/dist/services/app/custom-manager.js +0 -382
- package/dist/services/app/custom-manager.js.map +0 -1
- package/dist/services/app/hermes-agent-manager.d.ts +0 -20
- package/dist/services/app/hermes-agent-manager.js +0 -299
- package/dist/services/app/hermes-agent-manager.js.map +0 -1
- package/dist/services/app/id-normalizer.d.ts +0 -27
- package/dist/services/app/id-normalizer.js +0 -77
- package/dist/services/app/id-normalizer.js.map +0 -1
- package/dist/services/app/ollama-manager.d.ts +0 -18
- package/dist/services/app/ollama-manager.js +0 -224
- package/dist/services/app/ollama-manager.js.map +0 -1
- package/dist/services/app/openclaw-manager.d.ts +0 -63
- package/dist/services/app/openclaw-manager.js +0 -1215
- package/dist/services/app/openclaw-manager.js.map +0 -1
- package/dist/services/app/paths.d.ts +0 -27
- package/dist/services/app/paths.js +0 -40
- package/dist/services/app/paths.js.map +0 -1
- package/dist/services/app/platform-transform.d.ts +0 -32
- package/dist/services/app/platform-transform.js +0 -65
- package/dist/services/app/platform-transform.js.map +0 -1
- package/dist/services/app/provide-resolver.d.ts +0 -29
- package/dist/services/app/provide-resolver.js +0 -135
- package/dist/services/app/provide-resolver.js.map +0 -1
- package/dist/services/app/registry.d.ts +0 -17
- package/dist/services/app/registry.js +0 -31
- package/dist/services/app/registry.js.map +0 -1
- package/dist/services/app/remote-spec.d.ts +0 -14
- package/dist/services/app/remote-spec.js +0 -58
- package/dist/services/app/remote-spec.js.map +0 -1
- package/dist/services/app/terminal-session-manager.js +0 -157
- package/dist/services/app/terminal-session-manager.js.map +0 -1
- package/dist/services/app/types.d.ts +0 -74
- package/dist/services/app/types.js +0 -16
- package/dist/services/app/types.js.map +0 -1
- package/dist/services/app-config-admin.d.ts +0 -17
- package/dist/services/app-config-admin.js +0 -177
- package/dist/services/app-config-admin.js.map +0 -1
- package/dist/services/app-create-from-installed.d.ts +0 -23
- package/dist/services/app-create-from-installed.js +0 -75
- package/dist/services/app-create-from-installed.js.map +0 -1
- package/dist/services/app-passwords.js +0 -173
- package/dist/services/app-passwords.js.map +0 -1
- package/dist/services/backup-admin.d.ts +0 -101
- package/dist/services/backup-admin.js +0 -259
- package/dist/services/backup-admin.js.map +0 -1
- package/dist/services/backup-manager.d.ts +0 -264
- package/dist/services/backup-manager.js +0 -2263
- package/dist/services/backup-manager.js.map +0 -1
- package/dist/services/backup-verify.js +0 -240
- package/dist/services/backup-verify.js.map +0 -1
- package/dist/services/capability-endpoint-validator.d.ts +0 -41
- package/dist/services/capability-endpoint-validator.js +0 -114
- package/dist/services/capability-endpoint-validator.js.map +0 -1
- package/dist/services/capability-health.d.ts +0 -16
- package/dist/services/capability-health.js +0 -121
- package/dist/services/capability-health.js.map +0 -1
- package/dist/services/capability-registry.d.ts +0 -29
- package/dist/services/capability-registry.js +0 -176
- package/dist/services/capability-registry.js.map +0 -1
- package/dist/services/capability-sync.d.ts +0 -4
- package/dist/services/capability-sync.js +0 -220
- package/dist/services/capability-sync.js.map +0 -1
- package/dist/services/connection-admin.d.ts +0 -74
- package/dist/services/connection-admin.js +0 -287
- package/dist/services/connection-admin.js.map +0 -1
- package/dist/services/connection-apply.d.ts +0 -91
- package/dist/services/connection-apply.js +0 -471
- package/dist/services/connection-apply.js.map +0 -1
- package/dist/services/connection-resolver.d.ts +0 -65
- package/dist/services/connection-resolver.js +0 -281
- package/dist/services/connection-resolver.js.map +0 -1
- package/dist/services/connection-transactor.d.ts +0 -39
- package/dist/services/connection-transactor.js +0 -354
- package/dist/services/connection-transactor.js.map +0 -1
- package/dist/services/core-manager.d.ts +0 -50
- package/dist/services/core-manager.js +0 -411
- package/dist/services/core-manager.js.map +0 -1
- package/dist/services/external-mounts.js +0 -187
- package/dist/services/external-mounts.js.map +0 -1
- package/dist/services/files-manager.d.ts +0 -252
- package/dist/services/files-manager.js +0 -1156
- package/dist/services/files-manager.js.map +0 -1
- package/dist/services/files-mounts.d.ts +0 -42
- package/dist/services/files-mounts.js +0 -207
- package/dist/services/files-mounts.js.map +0 -1
- package/dist/services/instance-admin.d.ts +0 -26
- package/dist/services/instance-admin.js +0 -218
- package/dist/services/instance-admin.js.map +0 -1
- package/dist/services/instance-manager.d.ts +0 -192
- package/dist/services/instance-manager.js +0 -1289
- package/dist/services/instance-manager.js.map +0 -1
- package/dist/services/macos-launchd.js +0 -312
- package/dist/services/macos-launchd.js.map +0 -1
- package/dist/services/nomad-manager.d.ts +0 -307
- package/dist/services/nomad-manager.js +0 -3958
- package/dist/services/nomad-manager.js.map +0 -1
- package/dist/services/organize/applier.js +0 -218
- package/dist/services/organize/applier.js.map +0 -1
- package/dist/services/organize/rules.js +0 -286
- package/dist/services/organize/rules.js.map +0 -1
- package/dist/services/organize/scanner.js +0 -366
- package/dist/services/organize/scanner.js.map +0 -1
- package/dist/services/organize/store.js +0 -82
- package/dist/services/organize/store.js.map +0 -1
- package/dist/services/plugin-installer.js +0 -128
- package/dist/services/plugin-installer.js.map +0 -1
- package/dist/services/process-manager.d.ts +0 -25
- package/dist/services/process-manager.js +0 -568
- package/dist/services/process-manager.js.map +0 -1
- package/dist/services/runtime/adapters/custom.d.ts +0 -20
- package/dist/services/runtime/adapters/custom.js +0 -188
- package/dist/services/runtime/adapters/custom.js.map +0 -1
- package/dist/services/runtime/adapters/hermes.d.ts +0 -204
- package/dist/services/runtime/adapters/hermes.js +0 -1684
- package/dist/services/runtime/adapters/hermes.js.map +0 -1
- package/dist/services/runtime/adapters/openclaw-mcporter.d.ts +0 -45
- package/dist/services/runtime/adapters/openclaw-mcporter.js +0 -108
- package/dist/services/runtime/adapters/openclaw-mcporter.js.map +0 -1
- package/dist/services/runtime/adapters/openclaw.d.ts +0 -426
- package/dist/services/runtime/adapters/openclaw.js +0 -3975
- package/dist/services/runtime/adapters/openclaw.js.map +0 -1
- package/dist/services/runtime/index.d.ts +0 -34
- package/dist/services/runtime/index.js +0 -51
- package/dist/services/runtime/index.js.map +0 -1
- package/dist/services/runtime/mcp-shims/anythingllm-shim.d.ts +0 -46
- package/dist/services/runtime/mcp-shims/anythingllm-shim.js +0 -281
- package/dist/services/runtime/mcp-shims/anythingllm-shim.js.map +0 -1
- package/dist/services/runtime/mcp-shims/drive-shim.js +0 -490
- package/dist/services/runtime/mcp-shims/drive-shim.js.map +0 -1
- package/dist/services/runtime/mcp-shims/jishukb-shim.d.ts +0 -48
- package/dist/services/runtime/mcp-shims/jishukb-shim.js +0 -723
- package/dist/services/runtime/mcp-shims/jishukb-shim.js.map +0 -1
- package/dist/services/runtime/mcp-shims/mcporter-lite.js +0 -276
- package/dist/services/runtime/mcp-shims/mcporter-lite.js.map +0 -1
- package/dist/services/runtime/migrations.d.ts +0 -23
- package/dist/services/runtime/migrations.js +0 -125
- package/dist/services/runtime/migrations.js.map +0 -1
- package/dist/services/runtime/registry.d.ts +0 -13
- package/dist/services/runtime/registry.js +0 -32
- package/dist/services/runtime/registry.js.map +0 -1
- package/dist/services/runtime-identity.d.ts +0 -13
- package/dist/services/runtime-identity.js +0 -166
- package/dist/services/runtime-identity.js.map +0 -1
- package/dist/services/runtime-repair.d.ts +0 -52
- package/dist/services/runtime-repair.js +0 -352
- package/dist/services/runtime-repair.js.map +0 -1
- package/dist/services/setup-manager.d.ts +0 -158
- package/dist/services/setup-manager.js +0 -2740
- package/dist/services/setup-manager.js.map +0 -1
- package/dist/services/suggestions.d.ts +0 -27
- package/dist/services/suggestions.js +0 -133
- package/dist/services/suggestions.js.map +0 -1
- package/dist/services/system-monitor.js +0 -79
- package/dist/services/system-monitor.js.map +0 -1
- package/dist/services/system-ollama-provider.d.ts +0 -14
- package/dist/services/system-ollama-provider.js +0 -125
- package/dist/services/system-ollama-provider.js.map +0 -1
- package/dist/services/system-reconciler.d.ts +0 -72
- package/dist/services/system-reconciler.js +0 -600
- package/dist/services/system-reconciler.js.map +0 -1
- package/dist/services/task-registry.d.ts +0 -44
- package/dist/services/task-registry.js +0 -76
- package/dist/services/task-registry.js.map +0 -1
- package/dist/services/types-shim.d.ts +0 -16
- package/dist/services/types-shim.js +0 -2
- package/dist/services/types-shim.js.map +0 -1
- package/dist/services/update-manager.d.ts +0 -47
- package/dist/services/update-manager.js +0 -351
- package/dist/services/update-manager.js.map +0 -1
- package/dist/services/webdav/server.d.ts +0 -24
- package/dist/services/webdav/server.js +0 -420
- package/dist/services/webdav/server.js.map +0 -1
- package/dist/services/webdav/xml-builder.js.map +0 -1
- package/dist/services/workspace-builder.d.ts +0 -29
- package/dist/services/workspace-builder.js +0 -188
- package/dist/services/workspace-builder.js.map +0 -1
- package/node_modules/@fastify/static/.github/stale.yml +0 -21
- package/node_modules/@isaacs/cliui/LICENSE.md +0 -63
- package/node_modules/@isaacs/cliui/README.md +0 -151
- package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.d.ts +0 -4
- package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.js +0 -16
- package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.d.ts +0 -34
- package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.js +0 -170
- package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.d.ts +0 -6
- package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.js +0 -307
- package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.d.ts +0 -2
- package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.js +0 -7
- package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/index.d.ts +0 -41
- package/node_modules/@isaacs/cliui/dist/commonjs/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/index.js +0 -322
- package/node_modules/@isaacs/cliui/dist/commonjs/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/index.min.js +0 -12
- package/node_modules/@isaacs/cliui/dist/commonjs/index.min.js.map +0 -7
- package/node_modules/@isaacs/cliui/dist/commonjs/package.json +0 -3
- package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.d.ts +0 -5
- package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.js +0 -49
- package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.d.ts +0 -2
- package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.js +0 -8
- package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.d.ts +0 -7
- package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.js +0 -176
- package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.d.ts +0 -4
- package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.js +0 -12
- package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.d.ts +0 -34
- package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.js +0 -167
- package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.d.ts +0 -6
- package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.js +0 -299
- package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.d.ts +0 -2
- package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.js +0 -3
- package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/index.d.ts +0 -41
- package/node_modules/@isaacs/cliui/dist/esm/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/index.js +0 -317
- package/node_modules/@isaacs/cliui/dist/esm/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/index.min.js +0 -12
- package/node_modules/@isaacs/cliui/dist/esm/index.min.js.map +0 -7
- package/node_modules/@isaacs/cliui/dist/esm/package.json +0 -3
- package/node_modules/@isaacs/cliui/dist/esm/string-width/index.d.ts +0 -5
- package/node_modules/@isaacs/cliui/dist/esm/string-width/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/string-width/index.js +0 -46
- package/node_modules/@isaacs/cliui/dist/esm/string-width/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.d.ts +0 -2
- package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.js +0 -4
- package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.d.ts +0 -7
- package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.d.ts.map +0 -1
- package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.js +0 -172
- package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.js.map +0 -1
- package/node_modules/@isaacs/cliui/package.json +0 -163
- package/node_modules/content-disposition/HISTORY.md +0 -60
- package/node_modules/cross-spawn/LICENSE +0 -21
- package/node_modules/cross-spawn/README.md +0 -89
- package/node_modules/cross-spawn/index.js +0 -39
- package/node_modules/cross-spawn/lib/enoent.js +0 -59
- package/node_modules/cross-spawn/lib/parse.js +0 -91
- package/node_modules/cross-spawn/lib/util/escape.js +0 -47
- package/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
- package/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
- package/node_modules/cross-spawn/package.json +0 -73
- package/node_modules/foreground-child/LICENSE +0 -15
- package/node_modules/foreground-child/README.md +0 -128
- package/node_modules/foreground-child/dist/commonjs/all-signals.d.ts +0 -2
- package/node_modules/foreground-child/dist/commonjs/all-signals.d.ts.map +0 -1
- package/node_modules/foreground-child/dist/commonjs/all-signals.js +0 -58
- package/node_modules/foreground-child/dist/commonjs/all-signals.js.map +0 -1
- package/node_modules/foreground-child/dist/commonjs/index.d.ts +0 -58
- package/node_modules/foreground-child/dist/commonjs/index.d.ts.map +0 -1
- package/node_modules/foreground-child/dist/commonjs/index.js +0 -123
- package/node_modules/foreground-child/dist/commonjs/index.js.map +0 -1
- package/node_modules/foreground-child/dist/commonjs/package.json +0 -3
- package/node_modules/foreground-child/dist/commonjs/proxy-signals.d.ts +0 -6
- package/node_modules/foreground-child/dist/commonjs/proxy-signals.d.ts.map +0 -1
- package/node_modules/foreground-child/dist/commonjs/proxy-signals.js +0 -38
- package/node_modules/foreground-child/dist/commonjs/proxy-signals.js.map +0 -1
- package/node_modules/foreground-child/dist/commonjs/watchdog.d.ts +0 -10
- package/node_modules/foreground-child/dist/commonjs/watchdog.d.ts.map +0 -1
- package/node_modules/foreground-child/dist/commonjs/watchdog.js +0 -50
- package/node_modules/foreground-child/dist/commonjs/watchdog.js.map +0 -1
- package/node_modules/foreground-child/dist/esm/all-signals.d.ts +0 -2
- package/node_modules/foreground-child/dist/esm/all-signals.d.ts.map +0 -1
- package/node_modules/foreground-child/dist/esm/all-signals.js +0 -52
- package/node_modules/foreground-child/dist/esm/all-signals.js.map +0 -1
- package/node_modules/foreground-child/dist/esm/index.d.ts +0 -58
- package/node_modules/foreground-child/dist/esm/index.d.ts.map +0 -1
- package/node_modules/foreground-child/dist/esm/index.js +0 -115
- package/node_modules/foreground-child/dist/esm/index.js.map +0 -1
- package/node_modules/foreground-child/dist/esm/package.json +0 -3
- package/node_modules/foreground-child/dist/esm/proxy-signals.d.ts +0 -6
- package/node_modules/foreground-child/dist/esm/proxy-signals.d.ts.map +0 -1
- package/node_modules/foreground-child/dist/esm/proxy-signals.js +0 -34
- package/node_modules/foreground-child/dist/esm/proxy-signals.js.map +0 -1
- package/node_modules/foreground-child/dist/esm/watchdog.d.ts +0 -10
- package/node_modules/foreground-child/dist/esm/watchdog.d.ts.map +0 -1
- package/node_modules/foreground-child/dist/esm/watchdog.js +0 -46
- package/node_modules/foreground-child/dist/esm/watchdog.js.map +0 -1
- package/node_modules/foreground-child/package.json +0 -106
- package/node_modules/glob/dist/esm/bin.d.mts +0 -3
- package/node_modules/glob/dist/esm/bin.d.mts.map +0 -1
- package/node_modules/glob/dist/esm/bin.mjs +0 -346
- package/node_modules/glob/dist/esm/bin.mjs.map +0 -1
- package/node_modules/isexe/.npmignore +0 -2
- package/node_modules/isexe/LICENSE +0 -15
- package/node_modules/isexe/README.md +0 -51
- package/node_modules/isexe/index.js +0 -57
- package/node_modules/isexe/mode.js +0 -41
- package/node_modules/isexe/package.json +0 -31
- package/node_modules/isexe/test/basic.js +0 -221
- package/node_modules/isexe/windows.js +0 -42
- package/node_modules/jackspeak/LICENSE.md +0 -55
- package/node_modules/jackspeak/README.md +0 -394
- package/node_modules/jackspeak/dist/commonjs/index.d.ts +0 -323
- package/node_modules/jackspeak/dist/commonjs/index.d.ts.map +0 -1
- package/node_modules/jackspeak/dist/commonjs/index.js +0 -944
- package/node_modules/jackspeak/dist/commonjs/index.js.map +0 -1
- package/node_modules/jackspeak/dist/commonjs/index.min.js +0 -33
- package/node_modules/jackspeak/dist/commonjs/index.min.js.map +0 -7
- package/node_modules/jackspeak/dist/commonjs/package.json +0 -3
- package/node_modules/jackspeak/dist/esm/index.d.ts +0 -323
- package/node_modules/jackspeak/dist/esm/index.d.ts.map +0 -1
- package/node_modules/jackspeak/dist/esm/index.js +0 -936
- package/node_modules/jackspeak/dist/esm/index.js.map +0 -1
- package/node_modules/jackspeak/dist/esm/index.min.js +0 -33
- package/node_modules/jackspeak/dist/esm/index.min.js.map +0 -7
- package/node_modules/jackspeak/dist/esm/package.json +0 -3
- package/node_modules/jackspeak/package.json +0 -115
- package/node_modules/jishushell-panel/output/public/assets/ApiKeyField-D1i7zWXR.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/Dashboard-sWIvL43F.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/HermesChatPanel-DQ8RyvQY.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/HermesConfigForm-tIbPP1sB.js +0 -4
- package/node_modules/jishushell-panel/output/public/assets/InitPassword-C3Slq3Dd.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-7JqY9tq4.js +0 -92
- package/node_modules/jishushell-panel/output/public/assets/Login-BXLDJlQN.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/NewInstance-dLc5Xrpx.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/ProviderRecommendations-DIAXxesl.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/Settings-Bd5utbBh.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/Setup-Yn9_20FL.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/WeixinLoginPanel-C21doQTJ.js +0 -9
- package/node_modules/jishushell-panel/output/public/assets/index-CCkaIEjn.js +0 -20
- package/node_modules/jishushell-panel/output/public/assets/index-D7qxy-Vh.css +0 -1
- package/node_modules/jishushell-panel/output/public/assets/registry-B2ZQZXWL.js +0 -2
- package/node_modules/jishushell-panel/output/public/assets/usePolling-BFZm4do_.js +0 -1
- package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-DqPtOicc.js +0 -9
- package/node_modules/jishushell-panel/output/public/assets/vendor-react-DW5juQin.js +0 -59
- package/node_modules/package-json-from-dist/LICENSE.md +0 -63
- package/node_modules/package-json-from-dist/README.md +0 -110
- package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts +0 -89
- package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts.map +0 -1
- package/node_modules/package-json-from-dist/dist/commonjs/index.js +0 -134
- package/node_modules/package-json-from-dist/dist/commonjs/index.js.map +0 -1
- package/node_modules/package-json-from-dist/dist/commonjs/package.json +0 -3
- package/node_modules/package-json-from-dist/dist/esm/index.d.ts +0 -89
- package/node_modules/package-json-from-dist/dist/esm/index.d.ts.map +0 -1
- package/node_modules/package-json-from-dist/dist/esm/index.js +0 -129
- package/node_modules/package-json-from-dist/dist/esm/index.js.map +0 -1
- package/node_modules/package-json-from-dist/dist/esm/package.json +0 -3
- package/node_modules/package-json-from-dist/package.json +0 -68
- package/node_modules/path-key/index.d.ts +0 -40
- package/node_modules/path-key/index.js +0 -16
- package/node_modules/path-key/license +0 -9
- package/node_modules/path-key/package.json +0 -39
- package/node_modules/path-key/readme.md +0 -61
- package/node_modules/safe-buffer/LICENSE +0 -21
- package/node_modules/safe-buffer/README.md +0 -584
- package/node_modules/safe-buffer/index.d.ts +0 -187
- package/node_modules/safe-buffer/index.js +0 -65
- package/node_modules/safe-buffer/package.json +0 -51
- package/node_modules/shebang-command/index.js +0 -19
- package/node_modules/shebang-command/license +0 -9
- package/node_modules/shebang-command/package.json +0 -34
- package/node_modules/shebang-command/readme.md +0 -34
- package/node_modules/shebang-regex/index.d.ts +0 -22
- package/node_modules/shebang-regex/index.js +0 -2
- package/node_modules/shebang-regex/license +0 -9
- package/node_modules/shebang-regex/package.json +0 -35
- package/node_modules/shebang-regex/readme.md +0 -33
- package/node_modules/signal-exit/LICENSE.txt +0 -16
- package/node_modules/signal-exit/README.md +0 -74
- package/node_modules/signal-exit/dist/cjs/browser.d.ts +0 -12
- package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/cjs/browser.js +0 -10
- package/node_modules/signal-exit/dist/cjs/browser.js.map +0 -1
- package/node_modules/signal-exit/dist/cjs/index.d.ts +0 -48
- package/node_modules/signal-exit/dist/cjs/index.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/cjs/index.js +0 -279
- package/node_modules/signal-exit/dist/cjs/index.js.map +0 -1
- package/node_modules/signal-exit/dist/cjs/package.json +0 -3
- package/node_modules/signal-exit/dist/cjs/signals.d.ts +0 -29
- package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/cjs/signals.js +0 -42
- package/node_modules/signal-exit/dist/cjs/signals.js.map +0 -1
- package/node_modules/signal-exit/dist/mjs/browser.d.ts +0 -12
- package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/mjs/browser.js +0 -4
- package/node_modules/signal-exit/dist/mjs/browser.js.map +0 -1
- package/node_modules/signal-exit/dist/mjs/index.d.ts +0 -48
- package/node_modules/signal-exit/dist/mjs/index.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/mjs/index.js +0 -275
- package/node_modules/signal-exit/dist/mjs/index.js.map +0 -1
- package/node_modules/signal-exit/dist/mjs/package.json +0 -3
- package/node_modules/signal-exit/dist/mjs/signals.d.ts +0 -29
- package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +0 -1
- package/node_modules/signal-exit/dist/mjs/signals.js +0 -39
- package/node_modules/signal-exit/dist/mjs/signals.js.map +0 -1
- package/node_modules/signal-exit/package.json +0 -106
- package/node_modules/which/CHANGELOG.md +0 -166
- package/node_modules/which/LICENSE +0 -15
- package/node_modules/which/README.md +0 -54
- package/node_modules/which/bin/node-which +0 -52
- package/node_modules/which/package.json +0 -43
- package/node_modules/which/which.js +0 -125
- package/scripts/check-adapter-isolation.ts +0 -293
- /package/dist/services/{app → app-common}/app-compiler.d.ts +0 -0
- /package/dist/services/{app → app-common}/terminal-session-manager.d.ts +0 -0
- /package/dist/services/{backup-verify.d.ts → backup/backup-verify.d.ts} +0 -0
- /package/dist/services/{external-mounts.d.ts → files/external-mounts.d.ts} +0 -0
- /package/dist/services/{organize → files/organize}/applier.d.ts +0 -0
- /package/dist/services/{organize → files/organize}/rules.d.ts +0 -0
- /package/dist/services/{organize → files/organize}/scanner.d.ts +0 -0
- /package/dist/services/{organize → files/organize}/store.d.ts +0 -0
- /package/dist/services/{webdav → files/webdav}/xml-builder.d.ts +0 -0
- /package/dist/services/{webdav → files/webdav}/xml-builder.js +0 -0
- /package/dist/services/{app-passwords.d.ts → instances/passwords.d.ts} +0 -0
- /package/dist/services/{agent-apps → integrations/installable}/installers/registry-probe.d.ts +0 -0
- /package/dist/services/{agent-apps → integrations/installable}/installers/registry-probe.js +0 -0
- /package/dist/services/{runtime/mcp-shims → integrations/openclaw}/drive-shim.d.ts +0 -0
- /package/dist/services/{runtime/mcp-shims → integrations/openclaw}/mcporter-lite.d.ts +0 -0
- /package/dist/services/{plugin-installer.d.ts → setup/plugin-installer.d.ts} +0 -0
- /package/dist/services/{macos-launchd.d.ts → system/macos-launchd.d.ts} +0 -0
- /package/dist/services/{system-monitor.d.ts → system/system-monitor.d.ts} +0 -0
package/dist/server.js
CHANGED
|
@@ -2,40 +2,50 @@ import Fastify from "fastify";
|
|
|
2
2
|
import multipart from "@fastify/multipart";
|
|
3
3
|
import { request as httpRequest } from "http";
|
|
4
4
|
import { request as httpsRequest } from "https";
|
|
5
|
-
import { ensureDirs, ensureCoreConfig, getCoreConfig,
|
|
5
|
+
import { ensureDirs, ensureCoreConfig, getCoreConfig, migrateIntegrationRuntimeSchemaIfNeeded, migrateHermesShimOutIfNeeded, removeFlatOpenclawImageIfNeeded, getInternalMcpToken, } from "./config.js";
|
|
6
6
|
import { timingSafeEqual } from "node:crypto";
|
|
7
|
-
import {
|
|
7
|
+
import { listRegisteredIntegrations, normalizeIntegrationCoreConfigOnStartup } from "./services/integrations/index.js";
|
|
8
8
|
import { verifyToken } from "./auth.js";
|
|
9
9
|
import { authRoutes } from "./routes/auth.js";
|
|
10
10
|
import { instanceRoutes } from "./routes/instances.js";
|
|
11
11
|
import { systemRoutes } from "./routes/system.js";
|
|
12
12
|
import { setupRoutes } from "./routes/setup.js";
|
|
13
|
-
import {
|
|
13
|
+
import { integrationsRoutes } from "./routes/integrations.js";
|
|
14
14
|
import { appRoutes } from "./routes/apps.js";
|
|
15
|
-
import {
|
|
15
|
+
import { integrationAppRoutes } from "./routes/integration-apps.js";
|
|
16
16
|
import { llmRoutes } from "./routes/llm.js";
|
|
17
17
|
import { filesRoutes } from "./routes/files.js";
|
|
18
|
-
import { internalRoutes } from "./routes/internal.js";
|
|
19
18
|
import { organizeRoutes } from "./routes/files-organize.js";
|
|
20
19
|
import { fileMountsRoutes } from "./routes/file-mounts.js";
|
|
21
20
|
import { registerProxyRoutes } from "./routes/llm-proxy.js";
|
|
22
21
|
import { webdavRoutes } from "./routes/webdav.js";
|
|
23
22
|
import { externalMountsRoutes } from "./routes/external-mounts.js";
|
|
24
|
-
import { FilesManager } from "./services/files-manager.js";
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
23
|
+
import { FilesManager } from "./services/files/files-manager.js";
|
|
24
|
+
import { registerAppModuleRoutes } from "./services/app-modules/routes.js";
|
|
25
|
+
import { registerIntegrationOwnedRoutes } from "./services/integrations/routes.js";
|
|
26
|
+
import * as appService from "./services/app-common/service.js";
|
|
27
|
+
import * as appLifecycle from "./services/app-common/lifecycle-service.js";
|
|
28
|
+
import * as capabilityRegistry from "./services/capabilities/registry.js";
|
|
29
|
+
import { getConnectHostForPort } from "./services/instances/manager.js";
|
|
28
30
|
import backupRoutes from "./routes/backup.js";
|
|
29
31
|
import * as llmProxy from "./services/llm-proxy/index.js";
|
|
30
|
-
import * as
|
|
31
|
-
import * as
|
|
32
|
-
import
|
|
33
|
-
import { startTmpCleanupScheduler, initAutoBackup } from "./services/backup-manager.js";
|
|
34
|
-
import { checkUpdate, getUpdateStatus
|
|
35
|
-
import { inspectSystemDrift
|
|
32
|
+
import * as nomadDriver from "./services/runtime/drivers/nomad.js";
|
|
33
|
+
import * as setupManager from "./services/setup/setup-manager.js";
|
|
34
|
+
import { shutdownTaskRegistry } from "./services/tasks/registry.js";
|
|
35
|
+
import { startTmpCleanupScheduler, stopTmpCleanupScheduler, initAutoBackup, shutdownAutoBackup, } from "./services/backup/backup-manager.js";
|
|
36
|
+
import { checkUpdate, getUpdateStatus } from "./services/system/update-manager.js";
|
|
37
|
+
import { inspectSystemDrift } from "./services/system/system-reconciler.js";
|
|
36
38
|
import { PROXY_IDENTITY_HEADERS } from "./constants.js";
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
const PUBLIC_PATHS = new Set([
|
|
40
|
+
"/api/auth/status",
|
|
41
|
+
"/api/auth/init",
|
|
42
|
+
"/api/auth/login",
|
|
43
|
+
"/api/setup/status",
|
|
44
|
+
// Public by product decision: this only validates a one-shot sudo password
|
|
45
|
+
// before install/upgrade flows. The actual privileged operation must still
|
|
46
|
+
// receive the password in its own request or run through a sudo CLI command.
|
|
47
|
+
"/api/apps/validate-sudo-password",
|
|
48
|
+
]);
|
|
39
49
|
/** Slug charset for /apps/:slug — same as instance ids. */
|
|
40
50
|
const SLUG_RE = /^[a-z0-9][a-z0-9-]{0,62}$/;
|
|
41
51
|
/** Regex for top-level app WebSocket upgrades (AI-FS v1 W2.5 PR-8). */
|
|
@@ -119,6 +129,45 @@ export function buildCapabilityWebSocketHeaders(headers, upstreamOrigin) {
|
|
|
119
129
|
}
|
|
120
130
|
return upstreamHeaders;
|
|
121
131
|
}
|
|
132
|
+
function matchIntegrationPublicProxy(path, options = {}) {
|
|
133
|
+
for (const integration of listRegisteredIntegrations()) {
|
|
134
|
+
const descriptor = integration.publicProxy;
|
|
135
|
+
if (!descriptor)
|
|
136
|
+
continue;
|
|
137
|
+
if (options.authBypass === true && descriptor.authBypass !== true)
|
|
138
|
+
continue;
|
|
139
|
+
if (options.websocket === true && descriptor.websocket !== true)
|
|
140
|
+
continue;
|
|
141
|
+
descriptor.basePathPattern.lastIndex = 0;
|
|
142
|
+
const matched = descriptor.basePathPattern.exec(path);
|
|
143
|
+
if (!matched)
|
|
144
|
+
continue;
|
|
145
|
+
return {
|
|
146
|
+
integration,
|
|
147
|
+
match: {
|
|
148
|
+
instanceId: matched[1] ?? "",
|
|
149
|
+
suffix: matched[2] ?? "",
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
function buildPublicProxyWebSocketHeaders(headers, descriptorHeaders) {
|
|
156
|
+
const upstreamHeaders = {};
|
|
157
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
158
|
+
if (value === undefined)
|
|
159
|
+
continue;
|
|
160
|
+
const lower = key.toLowerCase();
|
|
161
|
+
if (lower === "host" ||
|
|
162
|
+
lower === "cookie" ||
|
|
163
|
+
lower === "authorization" ||
|
|
164
|
+
PROXY_IDENTITY_HEADERS.has(lower)) {
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
upstreamHeaders[key] = value;
|
|
168
|
+
}
|
|
169
|
+
return { ...upstreamHeaders, ...descriptorHeaders };
|
|
170
|
+
}
|
|
122
171
|
function forwardWebSocketRejection(socket, res) {
|
|
123
172
|
const statusCode = res.statusCode || 502;
|
|
124
173
|
const statusMessage = res.statusMessage || "Bad Gateway";
|
|
@@ -140,9 +189,54 @@ export function selectRefererWebSocketCapability(capabilities, refererCapability
|
|
|
140
189
|
?? matches.find((capability) => capability.capability === refererCapability)
|
|
141
190
|
?? null;
|
|
142
191
|
}
|
|
192
|
+
async function convergeInstanceDesiredStateOnBoot() {
|
|
193
|
+
for (const inst of appService.listInstances()) {
|
|
194
|
+
const instanceId = typeof inst?.id === "string" ? inst.id : "";
|
|
195
|
+
if (!instanceId)
|
|
196
|
+
continue;
|
|
197
|
+
const desiredState = inst.desiredState;
|
|
198
|
+
if (desiredState !== "running" && desiredState !== "stopped") {
|
|
199
|
+
console.warn(`[startup] Skipping ${instanceId}: invalid desiredState '${String(desiredState)}'`);
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
try {
|
|
203
|
+
const status = await appService.getInstanceInstallRecordStatus(instanceId);
|
|
204
|
+
const actualStatus = String(status?.status ?? "unknown");
|
|
205
|
+
if (desiredState === "running") {
|
|
206
|
+
if (actualStatus === "running" || actualStatus === "pending" || actualStatus === "installing") {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (actualStatus === "unknown") {
|
|
210
|
+
console.warn(`[startup] Skipping start convergence for ${instanceId}: runtime status unknown`);
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
console.log(`[startup] Starting ${instanceId} from Core desiredState=running (actual=${actualStatus})...`);
|
|
214
|
+
const result = await appLifecycle.startInstance(instanceId);
|
|
215
|
+
if (!result.ok) {
|
|
216
|
+
console.warn(`[startup] Start convergence failed for ${instanceId}: ${result.error ?? "unknown error"}`);
|
|
217
|
+
}
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
if (actualStatus === "running" || actualStatus === "pending") {
|
|
221
|
+
console.log(`[startup] Stopping ${instanceId} from Core desiredState=stopped (actual=${actualStatus})...`);
|
|
222
|
+
const result = await appLifecycle.stopInstance(instanceId);
|
|
223
|
+
if (!result.ok) {
|
|
224
|
+
console.warn(`[startup] Stop convergence failed for ${instanceId}: ${result.error ?? "unknown error"}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
console.warn(`[startup] Desired-state convergence skipped for ${instanceId}: ${error?.message ?? error}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
143
233
|
export async function createServer(options = {}) {
|
|
144
234
|
const port = options.port ?? 8091;
|
|
145
235
|
const host = options.host || "0.0.0.0";
|
|
236
|
+
let startupTimer = null;
|
|
237
|
+
let delayedSystemDriftTimer = null;
|
|
238
|
+
let backgroundUpdateInitial = null;
|
|
239
|
+
let backgroundUpdateInterval = null;
|
|
146
240
|
ensureDirs();
|
|
147
241
|
startTmpCleanupScheduler();
|
|
148
242
|
initAutoBackup().catch((e) => console.error("[auto-backup] Init error:", e.message));
|
|
@@ -152,6 +246,19 @@ export async function createServer(options = {}) {
|
|
|
152
246
|
logger: true,
|
|
153
247
|
bodyLimit: 1048576,
|
|
154
248
|
});
|
|
249
|
+
app.addHook("onClose", async () => {
|
|
250
|
+
if (startupTimer)
|
|
251
|
+
clearTimeout(startupTimer);
|
|
252
|
+
if (delayedSystemDriftTimer)
|
|
253
|
+
clearTimeout(delayedSystemDriftTimer);
|
|
254
|
+
if (backgroundUpdateInitial)
|
|
255
|
+
clearTimeout(backgroundUpdateInitial);
|
|
256
|
+
if (backgroundUpdateInterval)
|
|
257
|
+
clearInterval(backgroundUpdateInterval);
|
|
258
|
+
shutdownTaskRegistry();
|
|
259
|
+
stopTmpCleanupScheduler();
|
|
260
|
+
shutdownAutoBackup();
|
|
261
|
+
});
|
|
155
262
|
// Allow empty JSON body for POST requests
|
|
156
263
|
app.addContentTypeParser("application/json", { parseAs: "string" }, (_req, body, done) => {
|
|
157
264
|
if (!body || body.length === 0) {
|
|
@@ -182,7 +289,7 @@ export async function createServer(options = {}) {
|
|
|
182
289
|
// any agent container starts and tries to read it via env injection.
|
|
183
290
|
// Lazy-init would only fire on the first request that carries an
|
|
184
291
|
// X-Jishushell-Internal-Token header, which is too late for the
|
|
185
|
-
//
|
|
292
|
+
// integration onBeforeStart hook that mounts the value into the container.
|
|
186
293
|
try {
|
|
187
294
|
getInternalMcpToken();
|
|
188
295
|
}
|
|
@@ -190,7 +297,7 @@ export async function createServer(options = {}) {
|
|
|
190
297
|
console.warn(`[server] internal MCP token init skipped: ${e?.message ?? e}`);
|
|
191
298
|
}
|
|
192
299
|
// ── Auth middleware for /apps/* (AI-FS v1 W2.5 PR-8) ──────────────────
|
|
193
|
-
// Top-level reverse proxy for
|
|
300
|
+
// Top-level reverse proxy for instance UI capabilities.
|
|
194
301
|
// Pairs with `/api/instances/:id/provides/:cap/*` which is instance-scoped.
|
|
195
302
|
// This hook is scoped to /apps/* only so it does not double-fire with the
|
|
196
303
|
// existing /api/* hook below.
|
|
@@ -215,41 +322,32 @@ export async function createServer(options = {}) {
|
|
|
215
322
|
const path = request.url.split("?")[0];
|
|
216
323
|
if (!path.startsWith("/api/") || PUBLIC_PATHS.has(path))
|
|
217
324
|
return;
|
|
218
|
-
// Allow
|
|
219
|
-
//
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
325
|
+
// Allow integration-owned public proxies without panel auth when the
|
|
326
|
+
// integration declares its own upstream auth, but verify the instance
|
|
327
|
+
// actually exists to prevent probing.
|
|
328
|
+
const publicProxy = matchIntegrationPublicProxy(path, { authBypass: true });
|
|
329
|
+
if (publicProxy) {
|
|
330
|
+
const id = publicProxy.match.instanceId;
|
|
331
|
+
if (!id || !appService.getInstance(id)) {
|
|
223
332
|
return reply.status(404).send({ detail: "Instance not found" });
|
|
224
333
|
}
|
|
225
334
|
return;
|
|
226
335
|
}
|
|
227
|
-
// Internal token path — used by
|
|
228
|
-
//
|
|
229
|
-
//
|
|
230
|
-
//
|
|
231
|
-
//
|
|
232
|
-
// (need ONLY X-Jishushell-Internal-Token; no instance binding —
|
|
233
|
-
// apps aren't instances)
|
|
234
|
-
// Combined with the standard JWT path below; we never require both.
|
|
336
|
+
// Internal token path — used by MCP/runtime shims spawned inside managed
|
|
337
|
+
// instances. These callers must present BOTH
|
|
338
|
+
// X-Jishushell-Internal-Token + X-Jishushell-Instance so Core can bind
|
|
339
|
+
// the request to a canonical instance. Combined with the standard JWT
|
|
340
|
+
// path below; we never require both.
|
|
235
341
|
const internalToken = request.headers["x-jishushell-internal-token"];
|
|
236
342
|
if (typeof internalToken === "string" && internalToken.length >= 32) {
|
|
237
343
|
const expected = getInternalMcpToken();
|
|
238
344
|
if (internalToken.length === expected.length &&
|
|
239
345
|
timingSafeEqual(Buffer.from(internalToken), Buffer.from(expected))) {
|
|
240
346
|
const instanceId = request.headers["x-jishushell-instance"];
|
|
241
|
-
if (typeof instanceId === "string" &&
|
|
347
|
+
if (typeof instanceId === "string" && appService.getInstance(instanceId)) {
|
|
242
348
|
request.internalCallerInstance = instanceId;
|
|
243
349
|
return;
|
|
244
350
|
}
|
|
245
|
-
// Path (b): app-lifecycle / internal-only routes. Allowed without
|
|
246
|
-
// an instance header. The route is responsible for asserting the
|
|
247
|
-
// (request as any).internalCallerScope === "panel" tag before
|
|
248
|
-
// returning sensitive data.
|
|
249
|
-
if (path.startsWith("/api/internal/")) {
|
|
250
|
-
request.internalCallerScope = "panel";
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
351
|
}
|
|
254
352
|
return reply.status(401).send({ detail: "Unauthorized" });
|
|
255
353
|
}
|
|
@@ -290,12 +388,13 @@ export async function createServer(options = {}) {
|
|
|
290
388
|
await app.register(instanceRoutes);
|
|
291
389
|
await app.register(systemRoutes);
|
|
292
390
|
await app.register(setupRoutes);
|
|
293
|
-
await app.register(
|
|
391
|
+
await app.register(integrationsRoutes);
|
|
294
392
|
await app.register(appRoutes);
|
|
295
|
-
await app.register(
|
|
393
|
+
await app.register(integrationAppRoutes);
|
|
394
|
+
registerAppModuleRoutes(app);
|
|
395
|
+
await registerIntegrationOwnedRoutes(app);
|
|
296
396
|
await app.register(llmRoutes);
|
|
297
397
|
await app.register(backupRoutes);
|
|
298
|
-
await app.register(internalRoutes);
|
|
299
398
|
// Single FilesManager instance shared across /api/files, /webdav, and
|
|
300
399
|
// /api/files/external-mounts so a mutation on the mount list (PUT
|
|
301
400
|
// /external-mounts) is visible to every layer immediately.
|
|
@@ -322,7 +421,7 @@ export async function createServer(options = {}) {
|
|
|
322
421
|
await webdavRoutes(scope, { filesManager: sharedFilesManager });
|
|
323
422
|
});
|
|
324
423
|
// ── Top-level /apps/:slug/* reverse proxy (AI-FS v1 W2.5 PR-8) ───────────
|
|
325
|
-
// Reverse-proxies HTTP requests for
|
|
424
|
+
// Reverse-proxies HTTP requests for instance UI capabilities to their
|
|
326
425
|
// upstream. Auth is handled by the onRequest hook above. The /apps/:slug
|
|
327
426
|
// prefix is NOT stripped — apps like Filebrowser are configured with
|
|
328
427
|
// --baseURL=/apps/filebrowser and expect the full path.
|
|
@@ -344,7 +443,7 @@ export async function createServer(options = {}) {
|
|
|
344
443
|
// Pass the full original path unchanged (including /apps/<slug> prefix).
|
|
345
444
|
const rawUrl = req.raw.url ?? "/";
|
|
346
445
|
const targetPath = rawUrl;
|
|
347
|
-
const hostHeader = `${
|
|
446
|
+
const hostHeader = `${appService.urlHost(upstreamHost)}:${upstreamPort}`;
|
|
348
447
|
// Build forwarded headers: strip cookie and authorization to avoid
|
|
349
448
|
// leaking panel session credentials to third-party apps.
|
|
350
449
|
const forwardHeaders = {};
|
|
@@ -413,62 +512,79 @@ export async function createServer(options = {}) {
|
|
|
413
512
|
app.all("/apps/:slug/*", appsProxyHandler);
|
|
414
513
|
// Auto-start Nomad-managed instances on startup
|
|
415
514
|
app.addHook("onReady", async () => {
|
|
416
|
-
setTimeout(async () => {
|
|
515
|
+
startupTimer = setTimeout(async () => {
|
|
516
|
+
startupTimer = null;
|
|
417
517
|
try {
|
|
518
|
+
if (process.env.JISHUSHELL_SKIP_STARTUP_MAINTENANCE === "1") {
|
|
519
|
+
console.log("[startup] Maintenance tasks skipped by JISHUSHELL_SKIP_STARTUP_MAINTENANCE");
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
418
522
|
ensureCoreConfig();
|
|
419
523
|
removeFlatOpenclawImageIfNeeded();
|
|
420
524
|
// One-shot: drop runtime_catalog.hermes.shimPath and delete the
|
|
421
525
|
// orphaned ~/.jishushell/runtimes/hermes/ dir. The Hermes shim is
|
|
422
|
-
// now baked into the image (PR3c) and the
|
|
526
|
+
// now baked into the image (PR3c) and the integration verifies the
|
|
423
527
|
// official image RepoDigest before launch, so the host shim is dead weight.
|
|
424
528
|
migrateHermesShimOutIfNeeded();
|
|
425
|
-
// Stamp the runtime_catalog schema version so core.json
|
|
426
|
-
// provenance marker. Warns (but doesn't crash) on detected
|
|
427
|
-
// downgrade where the stored version exceeds what we support.
|
|
428
|
-
|
|
429
|
-
//
|
|
430
|
-
//
|
|
431
|
-
//
|
|
432
|
-
|
|
433
|
-
//
|
|
434
|
-
// runtime_catalog.
|
|
435
|
-
//
|
|
436
|
-
//
|
|
437
|
-
|
|
438
|
-
|
|
529
|
+
// Stamp the historical runtime_catalog schema version so core.json
|
|
530
|
+
// carries a provenance marker. Warns (but doesn't crash) on detected
|
|
531
|
+
// core downgrade where the stored version exceeds what we support.
|
|
532
|
+
migrateIntegrationRuntimeSchemaIfNeeded();
|
|
533
|
+
// Step 13: startup no longer runs implicit instance-schema
|
|
534
|
+
// migrations. The dedicated `jishushell migrate legacy` command
|
|
535
|
+
// owns all legacy normalisation; reconcile / doctor only touch
|
|
536
|
+
// system/runtime state.
|
|
537
|
+
// Let Integrations normalize only their Core-owned global config. For
|
|
538
|
+
// example, OpenClaw pins runtime_catalog.openclaw.defaultImage and
|
|
539
|
+
// Hermes pins runtime_catalog.hermes.defaultImage. This hook
|
|
540
|
+
// must never migrate instance directories, facts, config, or jobs.
|
|
541
|
+
if (process.env.JISHUSHELL_SKIP_STARTUP_MIGRATIONS === "1") {
|
|
542
|
+
console.log("[startup] Integration Core config normalization skipped by JISHUSHELL_SKIP_STARTUP_MIGRATIONS");
|
|
543
|
+
}
|
|
544
|
+
else {
|
|
545
|
+
normalizeIntegrationCoreConfigOnStartup();
|
|
546
|
+
}
|
|
439
547
|
getUpdateStatus();
|
|
440
|
-
//
|
|
441
|
-
//
|
|
442
|
-
//
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
548
|
+
// Inspect system-level drift (systemd units, Docker images, Nomad
|
|
549
|
+
// config) against the currently installed code. Startup is an
|
|
550
|
+
// observation point only: applying host-level fixes, sudo, reload, or
|
|
551
|
+
// service restarts must happen through explicit Panel/CLI reconcile
|
|
552
|
+
// actions after user confirmation.
|
|
553
|
+
if (process.env.JISHUSHELL_SKIP_STARTUP_RECONCILE === "1") {
|
|
554
|
+
console.log("[startup] System drift inspection skipped by JISHUSHELL_SKIP_STARTUP_RECONCILE");
|
|
555
|
+
}
|
|
556
|
+
else {
|
|
557
|
+
try {
|
|
558
|
+
const reconcileResult = await inspectSystemDrift();
|
|
559
|
+
const updated = reconcileResult.items.filter(i => i.status === "updated");
|
|
560
|
+
const errors = reconcileResult.items.filter(i => i.status === "error");
|
|
561
|
+
const needsSudo = reconcileResult.items.filter(i => i.requiresSudo && i.status !== "ok" && i.status !== "updated");
|
|
562
|
+
if (updated.length > 0) {
|
|
563
|
+
console.warn(`[startup] Unexpected system drift inspection update(s): ${updated.map(i => i.component).join(", ")}`);
|
|
564
|
+
}
|
|
565
|
+
if (errors.length > 0) {
|
|
566
|
+
console.warn(`[startup] System drift inspection errors: ${errors.map(i => `${i.component}: ${i.message}`).join("; ")}`);
|
|
567
|
+
}
|
|
568
|
+
if (needsSudo.length > 0) {
|
|
569
|
+
console.warn(`[startup] ${needsSudo.length} item(s) need sudo to fix. Run: ${reconcileResult.command}`);
|
|
570
|
+
}
|
|
571
|
+
else if (reconcileResult.reloadRequired) {
|
|
572
|
+
console.warn(`[startup] System files changed and services should be reloaded. Run: ${reconcileResult.command}`);
|
|
573
|
+
}
|
|
574
|
+
if (errors.length > 0 || reconcileResult.reloadRequired) {
|
|
575
|
+
delayedSystemDriftTimer = setTimeout(() => {
|
|
576
|
+
delayedSystemDriftTimer = null;
|
|
577
|
+
inspectSystemDrift().catch((e) => {
|
|
578
|
+
console.warn(`[startup] Delayed system reconciliation check skipped: ${e.message}`);
|
|
579
|
+
});
|
|
580
|
+
}, 15_000);
|
|
581
|
+
delayedSystemDriftTimer.unref();
|
|
582
|
+
}
|
|
460
583
|
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
inspectSystemDrift().catch((e) => {
|
|
464
|
-
console.warn(`[startup] Delayed system reconciliation check skipped: ${e.message}`);
|
|
465
|
-
});
|
|
466
|
-
}, 15_000).unref();
|
|
584
|
+
catch (e) {
|
|
585
|
+
console.warn(`[startup] System drift inspection skipped: ${e.message}`);
|
|
467
586
|
}
|
|
468
587
|
}
|
|
469
|
-
catch (e) {
|
|
470
|
-
console.warn(`[startup] System reconciliation skipped: ${e.message}`);
|
|
471
|
-
}
|
|
472
588
|
const config = getCoreConfig();
|
|
473
589
|
if (config.service_manager === "nomad") {
|
|
474
590
|
const nomadResult = await setupManager.startNomad();
|
|
@@ -477,51 +593,30 @@ export async function createServer(options = {}) {
|
|
|
477
593
|
}
|
|
478
594
|
else {
|
|
479
595
|
console.log(`[startup] Nomad: ${nomadResult.message}`);
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
continue;
|
|
487
|
-
const status = await nomadManager.getStatus(inst.id);
|
|
488
|
-
if (status.status === "running") {
|
|
489
|
-
continue;
|
|
490
|
-
}
|
|
491
|
-
else if (status.status === "pending" || status.status === "stopped") {
|
|
492
|
-
const shouldStart = await nomadManager.shouldAutoStart(inst.id);
|
|
493
|
-
if (shouldStart) {
|
|
494
|
-
console.log(`[startup] Auto-starting Nomad instance ${inst.id} (was running before restart)...`);
|
|
495
|
-
await nomadManager.startInstance(inst.id);
|
|
496
|
-
}
|
|
497
|
-
}
|
|
596
|
+
try {
|
|
597
|
+
await convergeInstanceDesiredStateOnBoot();
|
|
598
|
+
console.log("[startup] Desired-state convergence completed.");
|
|
599
|
+
}
|
|
600
|
+
catch (e) {
|
|
601
|
+
console.error("[startup] Desired-state convergence failed:", e);
|
|
498
602
|
}
|
|
499
|
-
console.log("[startup] Nomad instances started/restarted.");
|
|
500
603
|
}
|
|
501
|
-
|
|
502
|
-
|
|
604
|
+
// Retry Core config normalization after workload convergence because
|
|
605
|
+
// a newly available local image may now provide a pinnable version.
|
|
606
|
+
// This still must not mutate any instance-owned state.
|
|
607
|
+
if (process.env.JISHUSHELL_SKIP_STARTUP_MIGRATIONS === "1") {
|
|
608
|
+
console.log("[startup] Integration Core config normalization skipped by JISHUSHELL_SKIP_STARTUP_MIGRATIONS");
|
|
503
609
|
}
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
// not yet locally present then. After auto-start (which may have
|
|
507
|
-
// triggered the one-time pull), retry the pin so core.json moves
|
|
508
|
-
// from :latest → :${version} within the same startup cycle.
|
|
509
|
-
try {
|
|
510
|
-
migrateOpenclawImageTagIfNeeded();
|
|
511
|
-
}
|
|
512
|
-
catch (e) {
|
|
513
|
-
console.warn("[startup] openclaw image tag migration skipped:", e);
|
|
610
|
+
else {
|
|
611
|
+
normalizeIntegrationCoreConfigOnStartup();
|
|
514
612
|
}
|
|
515
|
-
// Second adapter-migration sweep — after Nomad auto-start the
|
|
516
|
-
// runtime images may finally be locally present so `:latest` →
|
|
517
|
-
// pinned digest tag rewrite can now succeed.
|
|
518
|
-
runStartupMigrations();
|
|
519
613
|
}
|
|
520
|
-
//
|
|
521
|
-
//
|
|
522
|
-
//
|
|
614
|
+
// Authoritative boot-time capability-registry rebuild. This
|
|
615
|
+
// populates reverse-proxy and connection routes immediately after
|
|
616
|
+
// Core restart. After boot, registry updates are event-driven through
|
|
617
|
+
// lifecycle/API status observations and uninstall cleanup.
|
|
523
618
|
try {
|
|
524
|
-
await
|
|
619
|
+
await appService.refreshCapabilityRegistry({ force: true });
|
|
525
620
|
}
|
|
526
621
|
catch (e) {
|
|
527
622
|
console.error("[startup] Capability registry rebuild failed:", e);
|
|
@@ -533,12 +628,15 @@ export async function createServer(options = {}) {
|
|
|
533
628
|
}, 0);
|
|
534
629
|
});
|
|
535
630
|
await app.listen({ port, host });
|
|
631
|
+
const address = app.server.address();
|
|
632
|
+
const actualPort = typeof address === "object" && address !== null
|
|
633
|
+
? address.port
|
|
634
|
+
: port;
|
|
536
635
|
// Track active WebSocket proxy sockets for graceful shutdown
|
|
537
636
|
const activeWsSockets = new Set();
|
|
538
637
|
// Handle WebSocket upgrades directly on the HTTP server, bypassing Fastify's
|
|
539
638
|
// request lifecycle. Fastify's internal headersTimeout (73s) kills hijacked
|
|
540
639
|
// sockets, so we intercept upgrades before Fastify sees them.
|
|
541
|
-
const GATEWAY_WS_RE = /^\/api\/instances\/([a-z0-9][a-z0-9-]{0,62})\/gateway(?:\/(.*))?$/;
|
|
542
640
|
const CAPABILITY_WS_RE = /^\/api\/instances\/([a-z0-9][a-z0-9-]{0,62})\/provides\/([^/?]+)(?:\/(.*))?$/;
|
|
543
641
|
// Match Referer pointing at a capability proxy page (used to resolve
|
|
544
642
|
// root-level WS upgrades initiated by embedded pages like Browserless debugger
|
|
@@ -547,12 +645,12 @@ export async function createServer(options = {}) {
|
|
|
547
645
|
app.server.on("upgrade", async (req, socket, head) => {
|
|
548
646
|
const url = req.url || "";
|
|
549
647
|
const path = url.split("?")[0];
|
|
550
|
-
const
|
|
648
|
+
const publicProxyMatch = matchIntegrationPublicProxy(path, { websocket: true });
|
|
551
649
|
const capabilityMatch = path.match(CAPABILITY_WS_RE);
|
|
552
650
|
// ── /apps/:slug/* WebSocket upgrade (AI-FS v1 W2.5 PR-8) ──────────────
|
|
553
|
-
// Proxy WS upgrades for top-level
|
|
651
|
+
// Proxy WS upgrades for top-level instance UI capabilities. Same auth gate as HTTP.
|
|
554
652
|
const appSlugWsMatch = path.match(APP_SLUG_WS_RE);
|
|
555
|
-
if (appSlugWsMatch && !
|
|
653
|
+
if (appSlugWsMatch && !publicProxyMatch && !capabilityMatch) {
|
|
556
654
|
const slug = appSlugWsMatch[1];
|
|
557
655
|
// Auth gate: same JWT cookie/bearer check as the HTTP handler above.
|
|
558
656
|
if (!hasValidPanelUpgradeToken(req)) {
|
|
@@ -567,7 +665,7 @@ export async function createServer(options = {}) {
|
|
|
567
665
|
return;
|
|
568
666
|
}
|
|
569
667
|
const { host: upstreamHost, port: upstreamPort } = upstream;
|
|
570
|
-
const hostHeader = `${
|
|
668
|
+
const hostHeader = `${appService.urlHost(upstreamHost)}:${upstreamPort}`;
|
|
571
669
|
const upstreamOrigin = `http://${hostHeader}`;
|
|
572
670
|
const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
|
|
573
671
|
const targetPath = `${path}${qs}`;
|
|
@@ -677,7 +775,7 @@ export async function createServer(options = {}) {
|
|
|
677
775
|
// resolve the target instance via the Referer header pointing at the
|
|
678
776
|
// capability proxy page that served the embedded UI.
|
|
679
777
|
let refererCapabilityMatch = null;
|
|
680
|
-
if (!
|
|
778
|
+
if (!publicProxyMatch && !capabilityMatch) {
|
|
681
779
|
const referer = req.headers.referer || "";
|
|
682
780
|
try {
|
|
683
781
|
const refUrl = new URL(referer, "http://localhost");
|
|
@@ -688,8 +786,8 @@ export async function createServer(options = {}) {
|
|
|
688
786
|
}
|
|
689
787
|
catch { /* ignore malformed referer */ }
|
|
690
788
|
}
|
|
691
|
-
if (!
|
|
692
|
-
// Not a
|
|
789
|
+
if (!publicProxyMatch && !capabilityMatch && !refererCapabilityMatch) {
|
|
790
|
+
// Not a handled WebSocket — let it drop (Fastify doesn't handle WS natively)
|
|
693
791
|
socket.destroy();
|
|
694
792
|
return;
|
|
695
793
|
}
|
|
@@ -729,17 +827,17 @@ export async function createServer(options = {}) {
|
|
|
729
827
|
// instance that serves the request path (e.g. path "/" with http protocol).
|
|
730
828
|
if (refererCapabilityMatch) {
|
|
731
829
|
const id = refererCapabilityMatch.instanceId;
|
|
732
|
-
const appData =
|
|
830
|
+
const appData = appService.getInstanceInstallRecord(id);
|
|
733
831
|
if (!appData) {
|
|
734
832
|
socket.destroy();
|
|
735
833
|
return;
|
|
736
834
|
}
|
|
737
|
-
const capabilities =
|
|
835
|
+
const capabilities = appService.getProvidedCapabilitiesForApp(id);
|
|
738
836
|
// Find a capability whose path prefix matches the WS request path.
|
|
739
837
|
// Prefer capabilities with path "/" (root API) that aren't the debugger UI itself.
|
|
740
838
|
const wsPath = path || "/";
|
|
741
839
|
const capability = selectRefererWebSocketCapability(capabilities, refererCapabilityMatch.capability, wsPath);
|
|
742
|
-
if (!capability
|
|
840
|
+
if (!capability) {
|
|
743
841
|
try {
|
|
744
842
|
socket.write("HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n");
|
|
745
843
|
}
|
|
@@ -754,9 +852,24 @@ export async function createServer(options = {}) {
|
|
|
754
852
|
// port (e.g. 18789) when the static port is taken at start-time. The
|
|
755
853
|
// HTTP capability proxy already does this; the WS proxy must mirror it
|
|
756
854
|
// or every WS upgrade for reallocated apps lands on a dead host port.
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
855
|
+
let runtimePort = null;
|
|
856
|
+
try {
|
|
857
|
+
runtimePort = appService.resolveRuntimeCapabilityPort(id, capability.capability);
|
|
858
|
+
}
|
|
859
|
+
catch (error) {
|
|
860
|
+
if (!appService.isCanonicalRuntimePortRequiredError(error))
|
|
861
|
+
throw error;
|
|
862
|
+
socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
|
|
863
|
+
socket.destroy();
|
|
864
|
+
return;
|
|
865
|
+
}
|
|
866
|
+
if (typeof runtimePort !== "number" || runtimePort < 1) {
|
|
867
|
+
socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
|
|
868
|
+
socket.destroy();
|
|
869
|
+
return;
|
|
870
|
+
}
|
|
871
|
+
const targetHost = await appService.getHostForAppPort(id, runtimePort);
|
|
872
|
+
const hostHeader = `${appService.urlHost(targetHost)}:${runtimePort}`;
|
|
760
873
|
const upstreamOrigin = `${protocol === "https" || protocol === "wss" ? "https" : "http"}://${hostHeader}`;
|
|
761
874
|
const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
|
|
762
875
|
const targetPath = `${joinCapabilityUpstreamPath(capability.path, path.replace(/^\/+/, ""))}${qs}`;
|
|
@@ -862,12 +975,12 @@ export async function createServer(options = {}) {
|
|
|
862
975
|
if (capabilityMatch) {
|
|
863
976
|
const id = capabilityMatch[1];
|
|
864
977
|
const capabilityName = decodeURIComponent(capabilityMatch[2] || "");
|
|
865
|
-
const appData =
|
|
978
|
+
const appData = appService.getInstanceInstallRecord(id);
|
|
866
979
|
if (!appData) {
|
|
867
980
|
socket.destroy();
|
|
868
981
|
return;
|
|
869
982
|
}
|
|
870
|
-
const capability =
|
|
983
|
+
const capability = appService.getProvidedCapabilitiesForApp(id).find((entry) => entry.capability === capabilityName);
|
|
871
984
|
if (!capability || capability.visibility === "internal") {
|
|
872
985
|
try {
|
|
873
986
|
socket.write("HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n");
|
|
@@ -876,19 +989,26 @@ export async function createServer(options = {}) {
|
|
|
876
989
|
socket.destroy();
|
|
877
990
|
return;
|
|
878
991
|
}
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
992
|
+
const protocol = String(capability.protocol || "http").toLowerCase();
|
|
993
|
+
const upstreamRequest = protocol === "https" || protocol === "wss" ? httpsRequest : httpRequest;
|
|
994
|
+
let runtimePort = null;
|
|
995
|
+
try {
|
|
996
|
+
runtimePort = appService.resolveRuntimeCapabilityPort(id, capabilityName);
|
|
997
|
+
}
|
|
998
|
+
catch (error) {
|
|
999
|
+
if (!appService.isCanonicalRuntimePortRequiredError(error))
|
|
1000
|
+
throw error;
|
|
1001
|
+
socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
|
|
884
1002
|
socket.destroy();
|
|
885
1003
|
return;
|
|
886
1004
|
}
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
1005
|
+
if (typeof runtimePort !== "number" || runtimePort < 1) {
|
|
1006
|
+
socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
|
|
1007
|
+
socket.destroy();
|
|
1008
|
+
return;
|
|
1009
|
+
}
|
|
1010
|
+
const targetHost = await appService.getHostForAppPort(id, runtimePort);
|
|
1011
|
+
const hostHeader = `${appService.urlHost(targetHost)}:${runtimePort}`;
|
|
892
1012
|
const upstreamOrigin = `${protocol === "https" || protocol === "wss" ? "https" : "http"}://${hostHeader}`;
|
|
893
1013
|
const suffix = capabilityMatch[3] || "";
|
|
894
1014
|
const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
|
|
@@ -994,67 +1114,47 @@ export async function createServer(options = {}) {
|
|
|
994
1114
|
proxyReq.end();
|
|
995
1115
|
return;
|
|
996
1116
|
}
|
|
997
|
-
const
|
|
998
|
-
const id = match
|
|
999
|
-
const inst =
|
|
1117
|
+
const publicProxy = publicProxyMatch;
|
|
1118
|
+
const id = publicProxy.match.instanceId;
|
|
1119
|
+
const inst = appService.getInstance(id);
|
|
1000
1120
|
if (!inst) {
|
|
1001
1121
|
socket.destroy();
|
|
1002
1122
|
return;
|
|
1003
1123
|
}
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1124
|
+
const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
|
|
1125
|
+
const descriptor = publicProxy.integration.publicProxy;
|
|
1126
|
+
let target;
|
|
1127
|
+
try {
|
|
1128
|
+
target = await descriptor.resolveTarget({ match: publicProxy.match, query: qs });
|
|
1129
|
+
}
|
|
1130
|
+
catch (error) {
|
|
1131
|
+
if (appService.isCanonicalRuntimePortRequiredError(error)) {
|
|
1132
|
+
socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
|
|
1133
|
+
socket.destroy();
|
|
1134
|
+
return;
|
|
1007
1135
|
}
|
|
1008
|
-
|
|
1009
|
-
socket.destroy();
|
|
1010
|
-
return;
|
|
1136
|
+
throw error;
|
|
1011
1137
|
}
|
|
1012
|
-
const gwPort = instanceManager.getGatewayPort(id);
|
|
1013
|
-
const gwHost = await instanceManager.getGatewayHost(id);
|
|
1014
1138
|
// Bracket IPv6 literals for Host-header use. Node's http.request accepts
|
|
1015
1139
|
// a bare `::1` in `hostname`, but the `host` header field is a URL-style
|
|
1016
1140
|
// `<host>:<port>` where v6 must be bracketed.
|
|
1017
|
-
const hostHeader = `${
|
|
1018
|
-
const
|
|
1019
|
-
const
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
const lower = key.toLowerCase();
|
|
1026
|
-
if (lower === "host" ||
|
|
1027
|
-
PROXY_IDENTITY_HEADERS.has(lower) ||
|
|
1028
|
-
// Strip panel auth credentials — do not leak to downstream OpenClaw gateway
|
|
1029
|
-
lower === "cookie" ||
|
|
1030
|
-
lower === "authorization")
|
|
1031
|
-
continue;
|
|
1032
|
-
upstreamHeaders[key] = value;
|
|
1033
|
-
}
|
|
1034
|
-
try {
|
|
1035
|
-
const cfg = getNativeStoredConfig(id);
|
|
1036
|
-
const token = cfg?.gateway?.auth?.token;
|
|
1037
|
-
if (typeof token === "string" && token.trim()) {
|
|
1038
|
-
upstreamHeaders["authorization"] = `Bearer ${token.trim()}`;
|
|
1039
|
-
}
|
|
1040
|
-
}
|
|
1041
|
-
catch {
|
|
1042
|
-
// Best effort: if the config is unavailable, OpenClaw will reject the
|
|
1043
|
-
// upgrade with its normal auth error.
|
|
1044
|
-
}
|
|
1045
|
-
// Forward the browser's Origin unchanged. The panel auto-adds it to
|
|
1046
|
-
// `gateway.controlUi.allowedOrigins` via ensureControlUiAllowedOrigin
|
|
1047
|
-
// + restart; rewriting to the upstream host (as cli 94163bc did)
|
|
1048
|
-
// breaks that allowlist match.
|
|
1141
|
+
const hostHeader = `${appService.urlHost(target.host)}:${target.port}`;
|
|
1142
|
+
const targetPath = target.path;
|
|
1143
|
+
const descriptorHeaders = descriptor.buildHeaders?.({
|
|
1144
|
+
match: publicProxy.match,
|
|
1145
|
+
incomingHeaders: req.headers,
|
|
1146
|
+
}) ?? {};
|
|
1147
|
+
const upstreamHeaders = buildPublicProxyWebSocketHeaders(req.headers, descriptorHeaders);
|
|
1148
|
+
const upstreamRequest = target.protocol === "https" ? httpsRequest : httpRequest;
|
|
1049
1149
|
// Prevent any HTTP-level timeouts from killing this long-lived connection
|
|
1050
1150
|
socket.setTimeout?.(0);
|
|
1051
1151
|
socket.setNoDelay?.(true);
|
|
1052
1152
|
socket.setKeepAlive?.(true, 30000);
|
|
1053
1153
|
let proxyReq;
|
|
1054
1154
|
try {
|
|
1055
|
-
proxyReq =
|
|
1056
|
-
hostname:
|
|
1057
|
-
port:
|
|
1155
|
+
proxyReq = upstreamRequest({
|
|
1156
|
+
hostname: target.host,
|
|
1157
|
+
port: target.port,
|
|
1058
1158
|
path: targetPath,
|
|
1059
1159
|
method: "GET",
|
|
1060
1160
|
timeout: 10000, // 10s timeout for upstream upgrade handshake
|
|
@@ -1096,7 +1196,7 @@ export async function createServer(options = {}) {
|
|
|
1096
1196
|
if (proxyHead.length > 0)
|
|
1097
1197
|
socket.write(proxyHead);
|
|
1098
1198
|
// Bidirectional pipe: forward all WebSocket frames without interception.
|
|
1099
|
-
//
|
|
1199
|
+
// The upstream integration manages its own WebSocket protocol.
|
|
1100
1200
|
proxySocket.pipe(socket);
|
|
1101
1201
|
socket.pipe(proxySocket);
|
|
1102
1202
|
proxySocket.resume();
|
|
@@ -1149,23 +1249,25 @@ export async function createServer(options = {}) {
|
|
|
1149
1249
|
});
|
|
1150
1250
|
proxyReq.end();
|
|
1151
1251
|
});
|
|
1152
|
-
llmProxy.setCorePort(
|
|
1153
|
-
setupManager.setServerPort(
|
|
1154
|
-
|
|
1155
|
-
console.log(`JishuShell listening on http://${host}:${
|
|
1252
|
+
llmProxy.setCorePort(actualPort);
|
|
1253
|
+
setupManager.setServerPort(actualPort);
|
|
1254
|
+
nomadDriver.setCorePort(actualPort);
|
|
1255
|
+
console.log(`JishuShell listening on http://${host}:${actualPort}`);
|
|
1156
1256
|
// Background update check — runs the update probe (which probes the npm registry
|
|
1157
1257
|
// for new versions) so headless deployments can detect available updates.
|
|
1158
1258
|
// Safe by design: checkUpdate swallows all errors and has a 30s in-memory cache.
|
|
1159
1259
|
const bgUpdateCheck = () => { checkUpdate().catch(() => { }); };
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1260
|
+
backgroundUpdateInitial = setTimeout(bgUpdateCheck, 30_000);
|
|
1261
|
+
backgroundUpdateInterval = setInterval(bgUpdateCheck, 4 * 60 * 60 * 1000);
|
|
1262
|
+
backgroundUpdateInitial.unref();
|
|
1263
|
+
backgroundUpdateInterval.unref();
|
|
1164
1264
|
// Graceful shutdown — let in-flight requests finish before exiting
|
|
1165
1265
|
const shutdown = async () => {
|
|
1166
1266
|
console.log("[server] Shutting down gracefully...");
|
|
1167
|
-
|
|
1168
|
-
|
|
1267
|
+
if (backgroundUpdateInitial)
|
|
1268
|
+
clearTimeout(backgroundUpdateInitial);
|
|
1269
|
+
if (backgroundUpdateInterval)
|
|
1270
|
+
clearInterval(backgroundUpdateInterval);
|
|
1169
1271
|
llmProxy.flushUsage();
|
|
1170
1272
|
// Destroy all active WebSocket proxy connections
|
|
1171
1273
|
for (const s of activeWsSockets) {
|