jishushell 0.6.5 → 0.7.3
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 +16 -170
- package/apps/browserless-chromium-container.yaml +16 -10
- package/apps/filebrowser-container.yaml +15 -9
- package/apps/hermes-container.yaml +20 -5
- package/apps/immich-container-lite.yaml +337 -0
- package/apps/immich-container.yaml +371 -0
- package/apps/jishu-kb-container.yaml +50 -177
- package/apps/ollama-binary.yaml +33 -28
- package/apps/ollama-cpu-container.yaml +6 -0
- package/apps/ollama-with-hollama-binary.yaml +35 -28
- package/apps/openclaw-binary.yaml +35 -15
- package/apps/openclaw-container.yaml +29 -11
- package/apps/openclaw-with-ollama-container.yaml +9 -2
- package/apps/openclaw-with-searxng-container.yaml +38 -6
- package/apps/searxng-container.yaml +31 -6
- package/apps/weknora-container.yaml +26 -21
- package/dependencies/jishushell-panel-0.7.3.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 +113 -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 +32 -20
- package/dist/config.js +132 -51
- 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 +78 -37
- package/dist/install.js.map +1 -1
- package/dist/routes/admin.d.ts +2 -0
- package/dist/routes/admin.js +72 -0
- package/dist/routes/admin.js.map +1 -0
- 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/docker.d.ts +2 -0
- package/dist/routes/docker.js +58 -0
- package/dist/routes/docker.js.map +1 -0
- 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 +49 -31
- 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 +0 -8
- package/dist/routes/instances.js +202 -1560
- 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.d.ts +6 -0
- package/dist/server.js +368 -233
- 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 +318 -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 +109 -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 +498 -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 +475 -0
- package/dist/services/app-common/lifecycle-service.js.map +1 -0
- package/dist/services/app-common/ownership.d.ts +3 -0
- package/dist/services/app-common/ownership.js +11 -0
- package/dist/services/app-common/ownership.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 +128 -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 +8 -0
- package/dist/services/app-common/spec-materializer.js +295 -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 +771 -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 +519 -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 +49 -0
- package/dist/services/capabilities/contract.js +119 -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 +113 -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/capability-proxy/http.d.ts +7 -0
- package/dist/services/capability-proxy/http.js +555 -0
- package/dist/services/capability-proxy/http.js.map +1 -0
- package/dist/services/capability-proxy/terminal.d.ts +4 -0
- package/dist/services/capability-proxy/terminal.js +179 -0
- package/dist/services/capability-proxy/terminal.js.map +1 -0
- package/dist/services/connections/admin.d.ts +80 -0
- package/dist/services/connections/admin.js +337 -0
- package/dist/services/connections/admin.js.map +1 -0
- package/dist/services/connections/apply.d.ts +104 -0
- package/dist/services/connections/apply.js +415 -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/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/bootstrap.d.ts +7 -0
- package/dist/services/files/bootstrap.js +16 -0
- package/dist/services/files/bootstrap.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/photos/upload-page.d.ts +2 -0
- package/dist/services/files/photos/upload-page.js +248 -0
- package/dist/services/files/photos/upload-page.js.map +1 -0
- package/dist/services/files/photos/upload-store.d.ts +74 -0
- package/dist/services/files/photos/upload-store.js +432 -0
- package/dist/services/files/photos/upload-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/http/proxy-utils.d.ts +7 -0
- package/dist/services/http/proxy-utils.js +29 -0
- package/dist/services/http/proxy-utils.js.map +1 -0
- package/dist/services/http/request-utils.d.ts +3 -0
- package/dist/services/http/request-utils.js +23 -0
- package/dist/services/http/request-utils.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 +232 -0
- package/dist/services/instances/manager.js +1342 -0
- package/dist/services/instances/manager.js.map +1 -0
- package/dist/services/instances/pairing.d.ts +17 -0
- package/dist/services/instances/pairing.js +53 -0
- package/dist/services/instances/pairing.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/status.d.ts +2 -0
- package/dist/services/instances/status.js +11 -0
- package/dist/services/instances/status.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 +1668 -0
- package/dist/services/integrations/hermes/integration.js.map +1 -0
- package/dist/services/integrations/immich/client.d.ts +93 -0
- package/dist/services/integrations/immich/client.js +458 -0
- package/dist/services/integrations/immich/client.js.map +1 -0
- package/dist/services/integrations/immich/config.d.ts +15 -0
- package/dist/services/integrations/immich/config.js +178 -0
- package/dist/services/integrations/immich/config.js.map +1 -0
- package/dist/services/integrations/immich/discovery.d.ts +9 -0
- package/dist/services/integrations/immich/discovery.js +101 -0
- package/dist/services/integrations/immich/discovery.js.map +1 -0
- package/dist/services/integrations/immich/gallery-renderer.d.ts +5 -0
- package/dist/services/integrations/immich/gallery-renderer.js +150 -0
- package/dist/services/integrations/immich/gallery-renderer.js.map +1 -0
- package/dist/services/integrations/immich/immich-shim.d.ts +11 -0
- package/dist/services/integrations/immich/immich-shim.js +439 -0
- package/dist/services/integrations/immich/immich-shim.js.map +1 -0
- package/dist/services/integrations/immich/integration.d.ts +18 -0
- package/dist/services/integrations/immich/integration.js +64 -0
- package/dist/services/integrations/immich/integration.js.map +1 -0
- package/dist/services/integrations/immich/photo-library.d.ts +4 -0
- package/dist/services/integrations/immich/photo-library.js +63 -0
- package/dist/services/integrations/immich/photo-library.js.map +1 -0
- package/dist/services/integrations/immich/review-executor.d.ts +3 -0
- package/dist/services/integrations/immich/review-executor.js +41 -0
- package/dist/services/integrations/immich/review-executor.js.map +1 -0
- package/dist/services/integrations/immich/review-session-service.d.ts +27 -0
- package/dist/services/integrations/immich/review-session-service.js +206 -0
- package/dist/services/integrations/immich/review-session-service.js.map +1 -0
- package/dist/services/integrations/immich/review-store.d.ts +47 -0
- package/dist/services/integrations/immich/review-store.js +347 -0
- package/dist/services/integrations/immich/review-store.js.map +1 -0
- package/dist/services/integrations/immich/routes.d.ts +7 -0
- package/dist/services/integrations/immich/routes.js +363 -0
- package/dist/services/integrations/immich/routes.js.map +1 -0
- package/dist/services/integrations/immich/types.d.ts +186 -0
- package/dist/services/integrations/immich/types.js +2 -0
- package/dist/services/integrations/immich/types.js.map +1 -0
- package/dist/services/integrations/index.d.ts +41 -0
- package/dist/services/integrations/index.js +60 -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 +283 -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 +24 -0
- package/dist/services/integrations/jishukb/integration.js +300 -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 +438 -0
- package/dist/services/integrations/openclaw/integration.js +4629 -0
- package/dist/services/integrations/openclaw/integration.js.map +1 -0
- package/dist/services/integrations/openclaw/jishukb-native-mcp.d.ts +58 -0
- package/dist/services/integrations/openclaw/jishukb-native-mcp.js +373 -0
- package/dist/services/integrations/openclaw/jishukb-native-mcp.js.map +1 -0
- package/dist/services/integrations/openclaw/jishukb-shim.d.ts +52 -0
- package/dist/services/integrations/openclaw/jishukb-shim.js +1357 -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 +59 -0
- package/dist/services/integrations/openclaw/mcporter.js +143 -0
- package/dist/services/integrations/openclaw/mcporter.js.map +1 -0
- package/dist/services/integrations/openclaw/native-mcp.d.ts +48 -0
- package/dist/services/integrations/openclaw/native-mcp.js +125 -0
- package/dist/services/integrations/openclaw/native-mcp.js.map +1 -0
- package/dist/services/integrations/openclaw/routes.d.ts +21 -0
- package/dist/services/integrations/openclaw/routes.js +1194 -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 +457 -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 +374 -0
- package/dist/services/repair/runtime-repair.js.map +1 -0
- package/dist/services/runtime/docker-network.d.ts +8 -0
- package/dist/services/runtime/docker-network.js +123 -0
- package/dist/services/runtime/docker-network.js.map +1 -0
- package/dist/services/runtime/driver-registry.d.ts +25 -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 +261 -0
- package/dist/services/runtime/drivers/nomad.js +3122 -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/service-manager.d.ts +2 -0
- package/dist/services/runtime/service-manager.js +18 -0
- package/dist/services/runtime/service-manager.js.map +1 -0
- package/dist/services/runtime/types.d.ts +23 -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 +550 -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 +2724 -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/runtime-ownership.d.ts +36 -0
- package/dist/services/system/runtime-ownership.js +250 -0
- package/dist/services/system/runtime-ownership.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 +763 -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 +350 -48
- package/dist/utils/instance-lock.d.ts +2 -2
- package/dist/utils/instance-lock.js +2 -2
- package/dist/utils/path-safety.js +1 -1
- package/dist/utils/service-user.d.ts +13 -0
- package/dist/utils/service-user.js +129 -0
- package/dist/utils/service-user.js.map +1 -0
- package/install/jishu-install.sh +107 -27
- 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/brace-expansion/dist/commonjs/index.js +24 -14
- package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
- package/node_modules/brace-expansion/dist/esm/index.js +24 -14
- package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
- package/node_modules/brace-expansion/package.json +2 -2
- 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/fast-uri/index.js +1 -1
- package/node_modules/fast-uri/package.json +1 -1
- package/node_modules/fast-uri/test/security.test.js +28 -0
- package/node_modules/fastify/SECURITY.md +1 -1
- package/node_modules/fastify/SPONSORS.md +6 -4
- package/node_modules/fastify/docs/Guides/Database.md +0 -28
- package/node_modules/fastify/docs/Guides/Ecosystem.md +13 -2
- package/node_modules/fastify/docs/Guides/Serverless.md +2 -2
- package/node_modules/fastify/docs/Guides/Write-Plugin.md +1 -1
- package/node_modules/fastify/docs/Reference/Encapsulation.md +27 -26
- package/node_modules/fastify/docs/Reference/Errors.md +10 -4
- package/node_modules/fastify/docs/Reference/HTTP2.md +10 -10
- package/node_modules/fastify/docs/Reference/Hooks.md +4 -4
- package/node_modules/fastify/docs/Reference/Index.md +14 -16
- package/node_modules/fastify/docs/Reference/LTS.md +12 -13
- package/node_modules/fastify/docs/Reference/Lifecycle.md +9 -8
- package/node_modules/fastify/docs/Reference/Logging.md +44 -39
- package/node_modules/fastify/docs/Reference/Middleware.md +21 -25
- package/node_modules/fastify/docs/Reference/Principles.md +2 -2
- package/node_modules/fastify/docs/Reference/Reply.md +6 -1
- package/node_modules/fastify/docs/Reference/Request.md +27 -16
- package/node_modules/fastify/docs/Reference/Routes.md +5 -2
- package/node_modules/fastify/docs/Reference/Server.md +31 -3
- package/node_modules/fastify/docs/Reference/Type-Providers.md +29 -5
- package/node_modules/fastify/docs/Reference/Validation-and-Serialization.md +15 -2
- package/node_modules/fastify/docs/Reference/Warnings.md +7 -6
- package/node_modules/fastify/eslint.config.js +7 -2
- package/node_modules/fastify/fastify.d.ts +8 -3
- package/node_modules/fastify/fastify.js +43 -14
- package/node_modules/fastify/lib/content-type-parser.js +13 -1
- package/node_modules/fastify/lib/decorate.js +11 -3
- package/node_modules/fastify/lib/error-handler.js +4 -3
- package/node_modules/fastify/lib/error-serializer.js +59 -59
- package/node_modules/fastify/lib/errors.js +16 -1
- package/node_modules/fastify/lib/four-oh-four.js +14 -9
- package/node_modules/fastify/lib/handle-request.js +11 -5
- package/node_modules/fastify/lib/plugin-override.js +2 -1
- package/node_modules/fastify/lib/plugin-utils.js +5 -5
- package/node_modules/fastify/lib/reply.js +63 -8
- package/node_modules/fastify/lib/request.js +14 -4
- package/node_modules/fastify/lib/route.js +20 -6
- package/node_modules/fastify/lib/schema-controller.js +1 -1
- package/node_modules/fastify/lib/schemas.js +37 -30
- package/node_modules/fastify/lib/symbols.js +3 -1
- package/node_modules/fastify/lib/validation.js +1 -13
- package/node_modules/fastify/lib/warnings.js +3 -3
- package/node_modules/fastify/package.json +13 -15
- package/node_modules/fastify/scripts/validate-ecosystem-links.js +1 -0
- package/node_modules/fastify/test/bundler/esbuild/package.json +1 -1
- package/node_modules/fastify/test/close-pipelining.test.js +1 -2
- package/node_modules/fastify/test/custom-http-server.test.js +38 -0
- package/node_modules/fastify/test/decorator-instance-properties.test.js +63 -0
- package/node_modules/fastify/test/diagnostics-channel/async-error-handler.test.js +74 -0
- package/node_modules/fastify/test/hooks.test.js +23 -0
- package/node_modules/fastify/test/http-methods/get.test.js +1 -1
- package/node_modules/fastify/test/http2/plain.test.js +135 -0
- package/node_modules/fastify/test/http2/secure-with-fallback.test.js +1 -1
- package/node_modules/fastify/test/https/https.test.js +1 -2
- package/node_modules/fastify/test/internals/errors.test.js +31 -1
- package/node_modules/fastify/test/internals/plugin.test.js +3 -1
- package/node_modules/fastify/test/internals/request.test.js +27 -3
- package/node_modules/fastify/test/internals/schema-controller-perf.test.js +33 -0
- package/node_modules/fastify/test/logger/logging.test.js +18 -1
- package/node_modules/fastify/test/logger/options.test.js +38 -1
- package/node_modules/fastify/test/reply-error.test.js +1 -1
- package/node_modules/fastify/test/reply-trailers.test.js +70 -0
- package/node_modules/fastify/test/request-media-type.test.js +105 -0
- package/node_modules/fastify/test/route-prefix.test.js +34 -0
- package/node_modules/fastify/test/router-options.test.js +222 -11
- package/node_modules/fastify/test/schema-serialization.test.js +108 -0
- package/node_modules/fastify/test/schema-validation.test.js +24 -0
- package/node_modules/fastify/test/scripts/validate-ecosystem-links.test.js +40 -57
- package/node_modules/fastify/test/throw.test.js +14 -0
- package/node_modules/fastify/test/trust-proxy.test.js +21 -0
- package/node_modules/fastify/test/types/content-type-parser.tst.ts +70 -0
- package/node_modules/fastify/test/types/decorate-request-reply.tst.ts +18 -0
- package/node_modules/fastify/test/types/dummy-plugin.mts +9 -0
- package/node_modules/fastify/test/types/errors.tst.ts +91 -0
- package/node_modules/fastify/test/types/fastify.tst.ts +351 -0
- package/node_modules/fastify/test/types/hooks.tst.ts +578 -0
- package/node_modules/fastify/test/types/instance.tst.ts +597 -0
- package/node_modules/fastify/test/types/logger.tst.ts +276 -0
- package/node_modules/fastify/test/types/plugin.tst.ts +96 -0
- package/node_modules/fastify/test/types/register.tst.ts +245 -0
- package/node_modules/fastify/test/types/reply.tst.ts +297 -0
- package/node_modules/fastify/test/types/request.tst.ts +199 -0
- package/node_modules/fastify/test/types/route.tst.ts +576 -0
- package/node_modules/fastify/test/types/schema.tst.ts +135 -0
- package/node_modules/fastify/test/types/serverFactory.tst.ts +37 -0
- package/node_modules/fastify/test/types/tsconfig.json +9 -0
- package/node_modules/fastify/test/types/type-provider.tst.ts +1219 -0
- package/node_modules/fastify/test/types/using.tst.ts +14 -0
- package/node_modules/fastify/types/errors.d.ts +3 -0
- package/node_modules/fastify/types/request.d.ts +23 -2
- 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-Ce5d1xna.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/Dashboard-BXame3yg.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/HermesChatPanel-BHZtPCJd.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/HermesConfigForm-CB3GbNX9.js +4 -0
- package/node_modules/jishushell-panel/output/public/assets/InitPassword-Boab9F6g.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-DrIWCqo-.js +14 -0
- package/node_modules/jishushell-panel/output/public/assets/Login-CzpOkNau.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/NewInstance-CANXyCcL.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/ProviderRecommendations-BABo9VOC.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/Settings-CKp5XxFh.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/Setup-C7xVDPow.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/WeixinLoginPanel-B765Xz4C.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-Bs6DSbiR.js +23 -0
- package/node_modules/jishushell-panel/output/public/assets/index-DnnqTf7s.css +1 -0
- package/node_modules/jishushell-panel/output/public/assets/registry-sWIZsIEF.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-D4IDOQd_.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-Df8aUdv8.js +1 -0
- package/node_modules/jishushell-panel/output/public/assets/vendor-react-0L0rjmYG.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 +17 -4
- 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 +123 -29
- package/scripts/check-architecture-boundaries.mjs +178 -0
- 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 +43 -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/fastify/test/types/content-type-parser.test-d.ts +0 -72
- package/node_modules/fastify/test/types/decorate-request-reply.test-d.ts +0 -18
- package/node_modules/fastify/test/types/dummy-plugin.ts +0 -9
- package/node_modules/fastify/test/types/errors.test-d.ts +0 -90
- package/node_modules/fastify/test/types/fastify.test-d.ts +0 -352
- package/node_modules/fastify/test/types/hooks.test-d.ts +0 -550
- package/node_modules/fastify/test/types/import.ts +0 -2
- package/node_modules/fastify/test/types/instance.test-d.ts +0 -588
- package/node_modules/fastify/test/types/logger.test-d.ts +0 -277
- package/node_modules/fastify/test/types/plugin.test-d.ts +0 -97
- package/node_modules/fastify/test/types/register.test-d.ts +0 -237
- package/node_modules/fastify/test/types/reply.test-d.ts +0 -254
- package/node_modules/fastify/test/types/request.test-d.ts +0 -188
- package/node_modules/fastify/test/types/route.test-d.ts +0 -553
- package/node_modules/fastify/test/types/schema.test-d.ts +0 -135
- package/node_modules/fastify/test/types/serverFactory.test-d.ts +0 -37
- package/node_modules/fastify/test/types/type-provider.test-d.ts +0 -1213
- package/node_modules/fastify/test/types/using.test-d.ts +0 -17
- 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
|
@@ -0,0 +1,1357 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JishuShell-KB MCP shim — exposes the user's installed jishu-kb as a
|
|
3
|
+
* typed MCP toolset for OpenClaw.
|
|
4
|
+
*
|
|
5
|
+
* Why a shim, not direct MCP:
|
|
6
|
+
* jishu-kb speaks HTTP REST (`/api/kb/*`, `/api/admin/*`, `handbook.md`),
|
|
7
|
+
* not MCP. This shim translates a narrow tool surface into those REST calls
|
|
8
|
+
* and returns model-friendly text blocks or JSON summaries.
|
|
9
|
+
*
|
|
10
|
+
* Scope intentionally stays typed and bounded:
|
|
11
|
+
* - Read/search: list KBs, search, list documents, read handbook, read
|
|
12
|
+
* document metadata/source/chunks/FAQ, inspect ingest jobs, and read
|
|
13
|
+
* sanitized config/capabilities
|
|
14
|
+
* - Write: create KBs, upload documents, import URLs, retry jobs, and
|
|
15
|
+
* reindex documents in a chosen KB
|
|
16
|
+
* - Dangerous delete/cancel/reindex operations require explicit confirmation arguments
|
|
17
|
+
* - No raw admin/provider passthrough: secrets and arbitrary provider edits
|
|
18
|
+
* remain outside the agent surface
|
|
19
|
+
*
|
|
20
|
+
* Wiring: the OpenClaw integration writes this shim into
|
|
21
|
+
* `__mcp_shims__/jishukb/jishukb-shim.js` per instance and registers it under
|
|
22
|
+
* the stable `kb` server name.
|
|
23
|
+
*
|
|
24
|
+
* Non-secret config (baseUrl + default kbId + allowed upload roots) is baked into the
|
|
25
|
+
* source by `substituteJishukbShimPlaceholders` because OpenClaw scrubs env
|
|
26
|
+
* when spawning MCP subprocesses.
|
|
27
|
+
*
|
|
28
|
+
* Stdio framing: NDJSON JSON-RPC 2.0 (MCP standard). Pure Node builtins, no
|
|
29
|
+
* npm install needed inside the runtime image.
|
|
30
|
+
*/
|
|
31
|
+
export const JISHUKB_MCP_SHIM_VERSION = "0.3.0";
|
|
32
|
+
/** Default topK when the caller doesn't specify one. Mirrors the manifest
|
|
33
|
+
* `JISHU_KB_TOPK` default so the agent and the backend agree on page size. */
|
|
34
|
+
export const JISHUKB_DEFAULT_TOPK = 6;
|
|
35
|
+
/** Per-request upstream timeout. */
|
|
36
|
+
export const JISHUKB_FETCH_TIMEOUT_MS = 60_000;
|
|
37
|
+
/** Soft guard for upload memory use. */
|
|
38
|
+
export const JISHUKB_MAX_UPLOAD_BYTES = 30 * 1024 * 1024;
|
|
39
|
+
/** Soft guard for text returned through MCP. */
|
|
40
|
+
export const JISHUKB_MAX_TEXT_RESPONSE_CHARS = 12_000;
|
|
41
|
+
export const JISHUKB_MCP_SHIM_SOURCE = `#!/usr/bin/env node
|
|
42
|
+
// jishushell-jishukb-shim — generated, do not edit by hand.
|
|
43
|
+
// Source: src/services/integrations/openclaw/jishukb-shim.ts
|
|
44
|
+
|
|
45
|
+
const BASE_URL_LIT = "__JS_BASE_URL__";
|
|
46
|
+
const KB_ID_LIT = "__JS_KB_ID__";
|
|
47
|
+
const ALLOWED_UPLOAD_ROOTS_LIT = "__JS_ALLOWED_UPLOAD_ROOTS__";
|
|
48
|
+
|
|
49
|
+
const fs = require("node:fs");
|
|
50
|
+
const path = require("node:path");
|
|
51
|
+
const { TextDecoder } = require("node:util");
|
|
52
|
+
|
|
53
|
+
const BASE_URL = (BASE_URL_LIT.startsWith("__JS_") ? (process.env.JISHUKB_BASE_URL || "") : BASE_URL_LIT).replace(/\\/+$/, "");
|
|
54
|
+
const KB_ID = KB_ID_LIT.startsWith("__JS_") ? trimString(process.env.JISHUKB_KB_ID || "") : trimString(KB_ID_LIT);
|
|
55
|
+
const ALLOWED_UPLOAD_ROOTS = (
|
|
56
|
+
ALLOWED_UPLOAD_ROOTS_LIT.startsWith("__JS_")
|
|
57
|
+
? JSON.parse(process.env.JISHUKB_ALLOWED_UPLOAD_ROOTS || "[]")
|
|
58
|
+
: JSON.parse(ALLOWED_UPLOAD_ROOTS_LIT)
|
|
59
|
+
).map((value) => path.resolve(String(value)));
|
|
60
|
+
const DEFAULT_TOPK = ${JISHUKB_DEFAULT_TOPK};
|
|
61
|
+
const FETCH_TIMEOUT = ${JISHUKB_FETCH_TIMEOUT_MS};
|
|
62
|
+
const MAX_UPLOAD_BYTES = ${JISHUKB_MAX_UPLOAD_BYTES};
|
|
63
|
+
const MAX_TEXT_RESPONSE_CHARS = ${JISHUKB_MAX_TEXT_RESPONSE_CHARS};
|
|
64
|
+
const OPEN_UPLOAD_FLAGS = fs.constants.O_RDONLY
|
|
65
|
+
| (typeof fs.constants.O_NOFOLLOW === "number" ? fs.constants.O_NOFOLLOW : 0)
|
|
66
|
+
| (typeof fs.constants.O_NONBLOCK === "number" ? fs.constants.O_NONBLOCK : 0);
|
|
67
|
+
|
|
68
|
+
function envCheck() {
|
|
69
|
+
if (!BASE_URL) {
|
|
70
|
+
throw new Error("jishukb-shim: missing env: JISHUKB_BASE_URL");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function trimString(raw) {
|
|
75
|
+
if (typeof raw === "string") return raw.trim();
|
|
76
|
+
if (typeof raw === "number" || typeof raw === "boolean") return String(raw).trim();
|
|
77
|
+
return "";
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function jsonText(value) {
|
|
81
|
+
return JSON.stringify(value, null, 2);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function clampTopK(raw) {
|
|
85
|
+
const n = Number(raw);
|
|
86
|
+
if (!Number.isFinite(n)) return DEFAULT_TOPK;
|
|
87
|
+
const i = Math.floor(n);
|
|
88
|
+
if (i < 1) return 1;
|
|
89
|
+
if (i > 20) return 20;
|
|
90
|
+
return i;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function defaultKbId(raw, toolName) {
|
|
94
|
+
const kbId = trimString(raw) || KB_ID;
|
|
95
|
+
if (!kbId) {
|
|
96
|
+
throw new Error(toolName + ": missing 'kbId' argument and no default KB is configured");
|
|
97
|
+
}
|
|
98
|
+
return kbId;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function requireKbId(raw, toolName) {
|
|
102
|
+
const kbId = trimString(raw);
|
|
103
|
+
if (!kbId) throw new Error(toolName + ": missing 'kbId' argument");
|
|
104
|
+
return kbId;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function requireConfirm(actual, expected, toolName, fieldName) {
|
|
108
|
+
if (trimString(actual) !== expected) {
|
|
109
|
+
throw new Error(toolName + ": confirmation field '" + fieldName + "' must exactly match '" + expected + "'");
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function assertUploadRootsConfigured() {
|
|
114
|
+
if (!Array.isArray(ALLOWED_UPLOAD_ROOTS) || ALLOWED_UPLOAD_ROOTS.length === 0) {
|
|
115
|
+
throw new Error("jishukb-shim: missing configured upload roots");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function sameInode(left, right) {
|
|
120
|
+
return !!left && !!right && left.dev === right.dev && left.ino === right.ino;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function assertStableUploadRead(opened, buf) {
|
|
124
|
+
const afterStat = fs.fstatSync(opened.fd);
|
|
125
|
+
if (!sameInode(opened.stat, afterStat)) {
|
|
126
|
+
throw new Error("kb_upload: file changed during read");
|
|
127
|
+
}
|
|
128
|
+
if (afterStat.size !== opened.stat.size || buf.length !== opened.stat.size) {
|
|
129
|
+
throw new Error("kb_upload: file size changed during read");
|
|
130
|
+
}
|
|
131
|
+
if (buf.length > MAX_UPLOAD_BYTES) {
|
|
132
|
+
throw new Error("kb_upload: file exceeds soft limit of " + MAX_UPLOAD_BYTES + " bytes");
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function readBoundedUploadBuffer(fd, size) {
|
|
137
|
+
if (!Number.isSafeInteger(size) || size < 0) {
|
|
138
|
+
throw new Error("kb_upload: invalid file size");
|
|
139
|
+
}
|
|
140
|
+
const buf = Buffer.alloc(size);
|
|
141
|
+
let offset = 0;
|
|
142
|
+
while (offset < size) {
|
|
143
|
+
const bytesRead = fs.readSync(fd, buf, offset, size - offset, offset);
|
|
144
|
+
if (bytesRead === 0) break;
|
|
145
|
+
offset += bytesRead;
|
|
146
|
+
}
|
|
147
|
+
return offset === size ? buf : buf.subarray(0, offset);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function findAllowedUploadRoot(absPath) {
|
|
151
|
+
for (const root of ALLOWED_UPLOAD_ROOTS) {
|
|
152
|
+
if (absPath === root || absPath.startsWith(root + path.sep)) {
|
|
153
|
+
return root;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function sanitizeBaseUrl(raw) {
|
|
160
|
+
const value = trimString(raw);
|
|
161
|
+
if (!value) return null;
|
|
162
|
+
try {
|
|
163
|
+
const parsed = new URL(value);
|
|
164
|
+
parsed.username = "";
|
|
165
|
+
parsed.password = "";
|
|
166
|
+
parsed.search = "";
|
|
167
|
+
parsed.hash = "";
|
|
168
|
+
return parsed.toString();
|
|
169
|
+
} catch {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function openUploadFile(absPath) {
|
|
175
|
+
assertUploadRootsConfigured();
|
|
176
|
+
const input = trimString(absPath);
|
|
177
|
+
if (!input) throw new Error("kb_upload: missing 'path' argument");
|
|
178
|
+
if (!path.isAbsolute(input)) throw new Error("kb_upload: path must be absolute");
|
|
179
|
+
const normalized = path.resolve(input);
|
|
180
|
+
const lexicalRoot = findAllowedUploadRoot(normalized);
|
|
181
|
+
if (!lexicalRoot) {
|
|
182
|
+
throw new Error("kb_upload: path must stay under this instance's mounted files roots");
|
|
183
|
+
}
|
|
184
|
+
let fd;
|
|
185
|
+
try {
|
|
186
|
+
fd = fs.openSync(normalized, OPEN_UPLOAD_FLAGS);
|
|
187
|
+
} catch (error) {
|
|
188
|
+
if (error && (error.code === "ENOENT" || error.code === "ENOTDIR")) {
|
|
189
|
+
throw new Error("kb_upload: file not found: " + normalized);
|
|
190
|
+
}
|
|
191
|
+
if (error && (error.code === "ELOOP" || error.code === "EMLINK")) {
|
|
192
|
+
throw new Error("kb_upload: symlink targets are not allowed");
|
|
193
|
+
}
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
const realRoot = fs.realpathSync(lexicalRoot);
|
|
198
|
+
const realPath = fs.realpathSync(normalized);
|
|
199
|
+
if (!(realPath === realRoot || realPath.startsWith(realRoot + path.sep))) {
|
|
200
|
+
throw new Error("kb_upload: resolved path escapes this instance's mounted files roots");
|
|
201
|
+
}
|
|
202
|
+
const stat = fs.fstatSync(fd);
|
|
203
|
+
if (!stat.isFile()) throw new Error("kb_upload: not a regular file: " + realPath);
|
|
204
|
+
if (stat.nlink > 1) {
|
|
205
|
+
throw new Error("kb_upload: files with multiple hard links are not allowed");
|
|
206
|
+
}
|
|
207
|
+
if (stat.size > MAX_UPLOAD_BYTES) {
|
|
208
|
+
throw new Error("kb_upload: file exceeds soft limit of " + MAX_UPLOAD_BYTES + " bytes");
|
|
209
|
+
}
|
|
210
|
+
const pathStat = fs.statSync(realPath);
|
|
211
|
+
if (!sameInode(stat, pathStat)) {
|
|
212
|
+
throw new Error("kb_upload: file changed during validation");
|
|
213
|
+
}
|
|
214
|
+
return { absPath: realPath, stat, fd };
|
|
215
|
+
} catch (error) {
|
|
216
|
+
fs.closeSync(fd);
|
|
217
|
+
throw error;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
async function fetchWithTimeout(toolName, relativePath, options) {
|
|
222
|
+
envCheck();
|
|
223
|
+
const ctrl = new AbortController();
|
|
224
|
+
const timer = setTimeout(() => ctrl.abort(), FETCH_TIMEOUT);
|
|
225
|
+
try {
|
|
226
|
+
return await fetch(BASE_URL + relativePath, {
|
|
227
|
+
...options,
|
|
228
|
+
signal: ctrl.signal,
|
|
229
|
+
});
|
|
230
|
+
} catch (e) {
|
|
231
|
+
if (e && e.name === "AbortError") {
|
|
232
|
+
throw new Error(toolName + ": upstream timeout after " + Math.round(FETCH_TIMEOUT / 1000) + "s");
|
|
233
|
+
}
|
|
234
|
+
throw e;
|
|
235
|
+
} finally {
|
|
236
|
+
clearTimeout(timer);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
async function readJson(toolName, relativePath, options) {
|
|
241
|
+
const res = await fetchWithTimeout(toolName, relativePath, options);
|
|
242
|
+
if (!res.ok) {
|
|
243
|
+
const txt = await res.text();
|
|
244
|
+
throw new Error(toolName + ": upstream " + res.status + ": " + txt.slice(0, 400));
|
|
245
|
+
}
|
|
246
|
+
return await res.json();
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
async function readText(toolName, relativePath, options) {
|
|
250
|
+
const res = await fetchWithTimeout(toolName, relativePath, options);
|
|
251
|
+
if (!res.ok) {
|
|
252
|
+
const txt = await res.text();
|
|
253
|
+
throw new Error(toolName + ": upstream " + res.status + ": " + txt.slice(0, 400));
|
|
254
|
+
}
|
|
255
|
+
return await res.text();
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
function cappedText(raw, maxChars) {
|
|
259
|
+
const text = String(raw ?? "");
|
|
260
|
+
if (text.length <= maxChars) {
|
|
261
|
+
return { text, truncated: false, characters: text.length };
|
|
262
|
+
}
|
|
263
|
+
return {
|
|
264
|
+
text: text.slice(0, Math.max(0, maxChars - 1)) + "…",
|
|
265
|
+
truncated: true,
|
|
266
|
+
characters: text.length,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function optionalString(raw) {
|
|
271
|
+
const value = trimString(raw);
|
|
272
|
+
return value || null;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
function positiveInt(raw, fallback, max) {
|
|
276
|
+
const n = Number(raw);
|
|
277
|
+
if (!Number.isFinite(n)) return fallback;
|
|
278
|
+
const i = Math.floor(n);
|
|
279
|
+
if (i < 1) return fallback;
|
|
280
|
+
return Math.min(i, max);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
function boolWithDefault(raw, fallback) {
|
|
284
|
+
if (raw === undefined || raw === null || raw === "") return fallback;
|
|
285
|
+
if (typeof raw === "boolean") return raw;
|
|
286
|
+
const text = trimString(raw).toLowerCase();
|
|
287
|
+
if (["1", "true", "yes", "y"].includes(text)) return true;
|
|
288
|
+
if (["0", "false", "no", "n"].includes(text)) return false;
|
|
289
|
+
return fallback;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function appendOptionalQuery(qs, key, value) {
|
|
293
|
+
const text = trimString(value);
|
|
294
|
+
if (text) qs.set(key, text);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
function encodePathPart(value) {
|
|
298
|
+
return encodeURIComponent(value);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
function normalizeBacklinks(raw) {
|
|
302
|
+
return Array.isArray(raw) ? raw : [];
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function normalizeDocument(item, kbId) {
|
|
306
|
+
const doc = item && typeof item === "object" ? item : {};
|
|
307
|
+
return {
|
|
308
|
+
id: doc.id || null,
|
|
309
|
+
kbId: doc.kb_id || doc.kbId || kbId || null,
|
|
310
|
+
title: doc.title || null,
|
|
311
|
+
relPath: doc.rel_path || doc.relPath || null,
|
|
312
|
+
mime: doc.mime || null,
|
|
313
|
+
sha256: doc.sha256 || null,
|
|
314
|
+
bytes: doc.bytes ?? null,
|
|
315
|
+
status: doc.status || null,
|
|
316
|
+
createdAt: doc.created_at ?? doc.createdAt ?? null,
|
|
317
|
+
origin: doc.origin || null,
|
|
318
|
+
sourcePath: doc.source_path || doc.sourcePath || null,
|
|
319
|
+
sourceUrl: doc.source_url || doc.sourceUrl || null,
|
|
320
|
+
batchId: doc.batch_id || doc.batchId || null,
|
|
321
|
+
clientItemId: doc.client_item_id || doc.clientItemId || null,
|
|
322
|
+
externalAssetId: doc.external_asset_id || doc.externalAssetId || null,
|
|
323
|
+
backlinks: normalizeBacklinks(doc.backlinks),
|
|
324
|
+
chunkCount: doc.chunkCount ?? null,
|
|
325
|
+
faqCount: doc.faqCount ?? null,
|
|
326
|
+
jobCount: doc.jobCount ?? null,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
function normalizeJob(item, kbId) {
|
|
331
|
+
const job = item && typeof item === "object" ? item : {};
|
|
332
|
+
return {
|
|
333
|
+
id: job.id || null,
|
|
334
|
+
docId: job.docId || job.doc_id || null,
|
|
335
|
+
kbId: job.kbId || job.kb_id || kbId || null,
|
|
336
|
+
filename: job.filename || null,
|
|
337
|
+
relPath: job.relPath || job.rel_path || null,
|
|
338
|
+
mime: job.mime || null,
|
|
339
|
+
sha256: job.sha256 || null,
|
|
340
|
+
bytes: job.bytes ?? null,
|
|
341
|
+
status: job.status || null,
|
|
342
|
+
stage: job.stage || null,
|
|
343
|
+
progressCurrent: job.progressCurrent ?? job.progress_current ?? null,
|
|
344
|
+
progressTotal: job.progressTotal ?? job.progress_total ?? null,
|
|
345
|
+
attempts: job.attempts ?? null,
|
|
346
|
+
error: job.error || null,
|
|
347
|
+
createdAt: job.createdAt ?? job.created_at ?? null,
|
|
348
|
+
updatedAt: job.updatedAt ?? job.updated_at ?? null,
|
|
349
|
+
origin: job.origin || null,
|
|
350
|
+
sourcePath: job.sourcePath || job.source_path || null,
|
|
351
|
+
sourceUrl: job.sourceUrl || job.source_url || null,
|
|
352
|
+
batchId: job.batchId || job.batch_id || null,
|
|
353
|
+
clientItemId: job.clientItemId || job.client_item_id || null,
|
|
354
|
+
externalAssetId: job.externalAssetId || job.external_asset_id || null,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
function documentArrayFromPayload(payload) {
|
|
359
|
+
if (Array.isArray(payload)) return payload;
|
|
360
|
+
if (payload && Array.isArray(payload.documents)) return payload.documents;
|
|
361
|
+
if (payload && Array.isArray(payload.items)) return payload.items;
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
function jobArrayFromPayload(payload) {
|
|
366
|
+
if (Array.isArray(payload)) return payload;
|
|
367
|
+
if (payload && Array.isArray(payload.jobs)) return payload.jobs;
|
|
368
|
+
if (payload && Array.isArray(payload.items)) return payload.items;
|
|
369
|
+
return null;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
function mediaType(raw) {
|
|
373
|
+
return trimString(raw).toLowerCase().split(";")[0].trim();
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
function isTextLikeContentType(raw) {
|
|
377
|
+
const type = mediaType(raw);
|
|
378
|
+
if (!type) return false;
|
|
379
|
+
if (type.startsWith("text/")) return true;
|
|
380
|
+
return [
|
|
381
|
+
"application/ecmascript",
|
|
382
|
+
"application/javascript",
|
|
383
|
+
"application/json",
|
|
384
|
+
"application/sql",
|
|
385
|
+
"application/toml",
|
|
386
|
+
"application/x-ndjson",
|
|
387
|
+
"application/x-yaml",
|
|
388
|
+
"application/xhtml+xml",
|
|
389
|
+
"application/xml",
|
|
390
|
+
"application/yaml",
|
|
391
|
+
].includes(type) || type.endsWith("+json") || type.endsWith("+xml");
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
function contentLengthOf(headers) {
|
|
395
|
+
const raw = trimString(headers?.get?.("content-length"));
|
|
396
|
+
if (!raw) return null;
|
|
397
|
+
const n = Number(raw);
|
|
398
|
+
return Number.isFinite(n) && n >= 0 ? n : null;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
async function readBoundedTextResponse(toolName, res, maxChars) {
|
|
402
|
+
const contentType = res.headers.get("content-type") || "";
|
|
403
|
+
const contentDisposition = res.headers.get("content-disposition") || null;
|
|
404
|
+
const contentLength = contentLengthOf(res.headers);
|
|
405
|
+
if (!isTextLikeContentType(contentType)) {
|
|
406
|
+
try { await res.body?.cancel?.(); } catch { /* ignore cleanup errors */ }
|
|
407
|
+
throw new Error(
|
|
408
|
+
toolName + ": raw document is not text-like" +
|
|
409
|
+
" (contentType=" + (contentType || "unknown") +
|
|
410
|
+
(contentLength != null ? ", contentLength=" + contentLength : "") +
|
|
411
|
+
(contentDisposition ? ", contentDisposition=" + contentDisposition : "") +
|
|
412
|
+
"). Use kb_get_document for metadata; binary originals should be opened through the file surface.",
|
|
413
|
+
);
|
|
414
|
+
}
|
|
415
|
+
if (!res.body || typeof res.body.getReader !== "function") {
|
|
416
|
+
throw new Error(toolName + ": upstream response does not support bounded streaming");
|
|
417
|
+
}
|
|
418
|
+
const reader = res.body.getReader();
|
|
419
|
+
const decoder = new TextDecoder("utf-8", { fatal: false });
|
|
420
|
+
let text = "";
|
|
421
|
+
let bytesRead = 0;
|
|
422
|
+
let truncated = false;
|
|
423
|
+
try {
|
|
424
|
+
while (text.length <= maxChars) {
|
|
425
|
+
const chunk = await reader.read();
|
|
426
|
+
if (chunk.done) break;
|
|
427
|
+
const value = chunk.value || new Uint8Array();
|
|
428
|
+
bytesRead += value.byteLength || 0;
|
|
429
|
+
text += decoder.decode(value, { stream: true });
|
|
430
|
+
if (text.length > maxChars) {
|
|
431
|
+
truncated = true;
|
|
432
|
+
try { await reader.cancel(); } catch { /* ignore cleanup errors */ }
|
|
433
|
+
break;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
if (!truncated) {
|
|
437
|
+
text += decoder.decode();
|
|
438
|
+
if (text.length > maxChars) {
|
|
439
|
+
truncated = true;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
} finally {
|
|
443
|
+
try { reader.releaseLock?.(); } catch { /* ignore cleanup errors */ }
|
|
444
|
+
}
|
|
445
|
+
if (truncated) {
|
|
446
|
+
text = text.slice(0, Math.max(0, maxChars - 1)) + "…";
|
|
447
|
+
}
|
|
448
|
+
return {
|
|
449
|
+
text,
|
|
450
|
+
truncated,
|
|
451
|
+
characters: text.length,
|
|
452
|
+
bytesRead,
|
|
453
|
+
contentLength,
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
function normalizeChunksResponse(payload) {
|
|
458
|
+
const j = payload && typeof payload === "object" ? payload : {};
|
|
459
|
+
const rawChunks = Array.isArray(j.chunks) ? j.chunks
|
|
460
|
+
: Array.isArray(j.citations) ? j.citations
|
|
461
|
+
: Array.isArray(j.results) ? j.results
|
|
462
|
+
: Array.isArray(j.hits) ? j.hits
|
|
463
|
+
: [];
|
|
464
|
+
return rawChunks.map((raw, idx) => {
|
|
465
|
+
const item = raw && typeof raw === "object" ? raw : { text: String(raw ?? "") };
|
|
466
|
+
const src = item.source && typeof item.source === "object" ? item.source : {};
|
|
467
|
+
const title = src.title
|
|
468
|
+
|| src.filename
|
|
469
|
+
|| src.docId
|
|
470
|
+
|| item.docTitle
|
|
471
|
+
|| item.filename
|
|
472
|
+
|| item.docId
|
|
473
|
+
|| src.url
|
|
474
|
+
|| item.url
|
|
475
|
+
|| ("chunk#" + (idx + 1));
|
|
476
|
+
return {
|
|
477
|
+
...item,
|
|
478
|
+
source: {
|
|
479
|
+
...src,
|
|
480
|
+
title,
|
|
481
|
+
},
|
|
482
|
+
text: item.text || item.content || item.chunk || item.context || "",
|
|
483
|
+
score: item.score != null ? item.score : item.relevanceScore,
|
|
484
|
+
};
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
function fmtChunk(c, idx) {
|
|
489
|
+
const src = c.source || {};
|
|
490
|
+
const title = src.title || src.filename || src.docId || src.url || ("chunk#" + (idx + 1));
|
|
491
|
+
const scoreStr = c.score != null && Number.isFinite(Number(c.score))
|
|
492
|
+
? " [score " + Number(c.score).toFixed(3) + "]"
|
|
493
|
+
: "";
|
|
494
|
+
const body = (c.text || c.content || c.chunk || "").toString();
|
|
495
|
+
const capped = body.length > 1200 ? body.slice(0, 1200) + "…" : body;
|
|
496
|
+
return "[" + (idx + 1) + "] " + title + scoreStr + "\\n" + capped;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
function fmtSearchResult(chunks) {
|
|
500
|
+
if (!chunks.length) return "(no results)";
|
|
501
|
+
return chunks.map(fmtChunk).join("\\n\\n");
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
function normalizeHeading(text) {
|
|
505
|
+
return trimString(text).toLowerCase().replace(/\\s+/g, " ");
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
function extractMarkdownSection(markdown, section) {
|
|
509
|
+
const headingRe = /^(#{1,6})\\s+(.+)$/gm;
|
|
510
|
+
const headings = [];
|
|
511
|
+
let match;
|
|
512
|
+
while ((match = headingRe.exec(markdown)) !== null) {
|
|
513
|
+
headings.push({
|
|
514
|
+
level: match[1].length,
|
|
515
|
+
title: trimString(match[2]),
|
|
516
|
+
index: match.index,
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
const wanted = normalizeHeading(section);
|
|
520
|
+
const idx = headings.findIndex((h) => normalizeHeading(h.title) === wanted);
|
|
521
|
+
if (idx < 0) {
|
|
522
|
+
return {
|
|
523
|
+
found: false,
|
|
524
|
+
headings: headings.map((h) => h.title),
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
const current = headings[idx];
|
|
528
|
+
let end = markdown.length;
|
|
529
|
+
for (let i = idx + 1; i < headings.length; i++) {
|
|
530
|
+
if (headings[i].level <= current.level) {
|
|
531
|
+
end = headings[i].index;
|
|
532
|
+
break;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
return {
|
|
536
|
+
found: true,
|
|
537
|
+
headings: headings.map((h) => h.title),
|
|
538
|
+
text: markdown.slice(current.index, end).trim(),
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
function sanitizeConfig(config) {
|
|
543
|
+
const cfg = config && typeof config === "object" ? config : {};
|
|
544
|
+
const generation = cfg.generation && typeof cfg.generation === "object" ? cfg.generation : {};
|
|
545
|
+
const retrieval = cfg.retrieval && typeof cfg.retrieval === "object" ? cfg.retrieval : {};
|
|
546
|
+
const embed = cfg.embed && typeof cfg.embed === "object" ? cfg.embed : {};
|
|
547
|
+
const rerank = cfg.rerank && typeof cfg.rerank === "object" ? cfg.rerank : {};
|
|
548
|
+
return {
|
|
549
|
+
version: cfg.version || null,
|
|
550
|
+
defaultKbId: KB_ID || null,
|
|
551
|
+
answerableGate: !!cfg.answerableGate,
|
|
552
|
+
dataDir: cfg.dataDir || null,
|
|
553
|
+
retrieval: {
|
|
554
|
+
topK: retrieval.topK ?? null,
|
|
555
|
+
candidatePool: retrieval.candidatePool ?? null,
|
|
556
|
+
rerankPool: retrieval.rerankPool ?? null,
|
|
557
|
+
rejectThreshold: retrieval.rejectThreshold ?? null,
|
|
558
|
+
chunkMode: retrieval.chunkMode || null,
|
|
559
|
+
parentChunkChars: retrieval.parentChunkChars ?? null,
|
|
560
|
+
childChunkChars: retrieval.childChunkChars ?? null,
|
|
561
|
+
},
|
|
562
|
+
embed: {
|
|
563
|
+
backend: embed.backend || null,
|
|
564
|
+
model: embed.model || null,
|
|
565
|
+
dim: embed.dim ?? null,
|
|
566
|
+
ollamaModel: embed.ollamaModel || null,
|
|
567
|
+
},
|
|
568
|
+
rerank: {
|
|
569
|
+
enabled: !!rerank.enabled,
|
|
570
|
+
external: !!rerank.external,
|
|
571
|
+
model: rerank.model || null,
|
|
572
|
+
},
|
|
573
|
+
generation: {
|
|
574
|
+
configured: !!(generation.baseUrl || generation.model || generation.apiKey),
|
|
575
|
+
baseUrl: sanitizeBaseUrl(generation.baseUrl),
|
|
576
|
+
model: generation.model || null,
|
|
577
|
+
apiKeyConfigured: !!generation.apiKey,
|
|
578
|
+
},
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
async function kbList() {
|
|
583
|
+
const payload = await readJson("kb_list", "/api/kb");
|
|
584
|
+
if (!Array.isArray(payload)) {
|
|
585
|
+
throw new Error("kb_list: upstream returned a non-array payload");
|
|
586
|
+
}
|
|
587
|
+
const rows = await Promise.all(payload.map(async (item) => {
|
|
588
|
+
const id = trimString(item?.id);
|
|
589
|
+
const row = {
|
|
590
|
+
id: id || null,
|
|
591
|
+
name: item?.name || null,
|
|
592
|
+
description: item?.description ?? null,
|
|
593
|
+
chunks: item?.chunks ?? null,
|
|
594
|
+
documents: item?.documents ?? item?.docCount ?? item?.documentCount ?? null,
|
|
595
|
+
createdAt: item?.created_at ?? null,
|
|
596
|
+
usable: false,
|
|
597
|
+
unavailableReason: null,
|
|
598
|
+
};
|
|
599
|
+
if (!id) {
|
|
600
|
+
row.unavailableReason = "missing id";
|
|
601
|
+
return row;
|
|
602
|
+
}
|
|
603
|
+
try {
|
|
604
|
+
const res = await fetchWithTimeout(
|
|
605
|
+
"kb_list",
|
|
606
|
+
"/api/kb/" + encodeURIComponent(id) + "/documents",
|
|
607
|
+
{ headers: { Accept: "application/json" } },
|
|
608
|
+
);
|
|
609
|
+
if (res.ok) {
|
|
610
|
+
const docs = await res.json();
|
|
611
|
+
const docRows = documentArrayFromPayload(docs);
|
|
612
|
+
if (docRows) {
|
|
613
|
+
row.documents = docRows.length;
|
|
614
|
+
}
|
|
615
|
+
row.usable = true;
|
|
616
|
+
return row;
|
|
617
|
+
}
|
|
618
|
+
const txt = await res.text();
|
|
619
|
+
row.unavailableReason = "documents endpoint " + res.status + (txt ? ": " + txt.slice(0, 160) : "");
|
|
620
|
+
return row;
|
|
621
|
+
} catch (e) {
|
|
622
|
+
row.unavailableReason = e && e.message ? e.message : String(e);
|
|
623
|
+
return row;
|
|
624
|
+
}
|
|
625
|
+
}));
|
|
626
|
+
return rows;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
async function kbCreate(name, kbId, description) {
|
|
630
|
+
const trimmedName = trimString(name);
|
|
631
|
+
if (!trimmedName) throw new Error("kb_create: missing 'name' argument");
|
|
632
|
+
const payload = { name: trimmedName };
|
|
633
|
+
const explicitId = trimString(kbId);
|
|
634
|
+
const explicitDescription = trimString(description);
|
|
635
|
+
if (explicitId) payload.id = explicitId;
|
|
636
|
+
if (explicitDescription) payload.description = explicitDescription;
|
|
637
|
+
const result = await readJson("kb_create", "/api/kb", {
|
|
638
|
+
method: "POST",
|
|
639
|
+
headers: { "Content-Type": "application/json" },
|
|
640
|
+
body: JSON.stringify(payload),
|
|
641
|
+
});
|
|
642
|
+
return {
|
|
643
|
+
id: result?.id || payload.id || null,
|
|
644
|
+
name: result?.name || trimmedName,
|
|
645
|
+
description: result?.description ?? payload.description ?? null,
|
|
646
|
+
createdAt: result?.created_at ?? null,
|
|
647
|
+
};
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
async function kbGetCapabilities() {
|
|
651
|
+
const payload = await readJson("kb_get_capabilities", "/api/service/capabilities");
|
|
652
|
+
return {
|
|
653
|
+
contractVersion: payload?.contractVersion || null,
|
|
654
|
+
serviceVersion: payload?.serviceVersion || null,
|
|
655
|
+
auth: payload?.auth || null,
|
|
656
|
+
features: payload?.features || {},
|
|
657
|
+
limits: payload?.limits || {},
|
|
658
|
+
upload: payload?.upload ? {
|
|
659
|
+
shortFormats: payload.upload.shortFormats || [],
|
|
660
|
+
formatsDetail: payload.upload.formatsDetail || null,
|
|
661
|
+
extensions: payload.upload.extensions || [],
|
|
662
|
+
} : null,
|
|
663
|
+
routes: payload?.routes || null,
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
async function kbGet(kbIdRaw) {
|
|
668
|
+
const kbId = defaultKbId(kbIdRaw, "kb_get");
|
|
669
|
+
const payload = await readJson(
|
|
670
|
+
"kb_get",
|
|
671
|
+
"/api/kb/" + encodePathPart(kbId),
|
|
672
|
+
);
|
|
673
|
+
return {
|
|
674
|
+
id: payload?.id || kbId,
|
|
675
|
+
name: payload?.name || null,
|
|
676
|
+
description: payload?.description ?? null,
|
|
677
|
+
documents: payload?.documents ?? payload?.docCount ?? payload?.documentCount ?? null,
|
|
678
|
+
chunks: payload?.chunks ?? null,
|
|
679
|
+
jobs: payload?.jobs ?? payload?.jobCount ?? null,
|
|
680
|
+
createdAt: payload?.created_at ?? payload?.createdAt ?? null,
|
|
681
|
+
config: payload?.config || payload?.retrieval || null,
|
|
682
|
+
};
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
async function kbSearch(query, kbIdRaw, topK) {
|
|
686
|
+
const trimmedQuery = trimString(query);
|
|
687
|
+
if (!trimmedQuery) throw new Error("kb_search: missing 'query' argument");
|
|
688
|
+
const kbId = defaultKbId(kbIdRaw, "kb_search");
|
|
689
|
+
const payload = await readJson(
|
|
690
|
+
"kb_search",
|
|
691
|
+
"/api/kb/" + encodeURIComponent(kbId) + "/search",
|
|
692
|
+
{
|
|
693
|
+
method: "POST",
|
|
694
|
+
headers: { "Content-Type": "application/json" },
|
|
695
|
+
body: JSON.stringify({ query: trimmedQuery, topK: clampTopK(topK) }),
|
|
696
|
+
},
|
|
697
|
+
);
|
|
698
|
+
return normalizeChunksResponse(payload);
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
async function kbUpload(absPath, kbIdRaw) {
|
|
702
|
+
const kbId = requireKbId(kbIdRaw, "kb_upload");
|
|
703
|
+
const checked = openUploadFile(absPath);
|
|
704
|
+
const filename = path.basename(checked.absPath);
|
|
705
|
+
let buf;
|
|
706
|
+
try {
|
|
707
|
+
buf = readBoundedUploadBuffer(checked.fd, checked.stat.size);
|
|
708
|
+
assertStableUploadRead(checked, buf);
|
|
709
|
+
} finally {
|
|
710
|
+
fs.closeSync(checked.fd);
|
|
711
|
+
}
|
|
712
|
+
const fd = new FormData();
|
|
713
|
+
fd.append("file", new Blob([buf]), filename);
|
|
714
|
+
const payload = await readJson(
|
|
715
|
+
"kb_upload",
|
|
716
|
+
"/api/kb/" + encodeURIComponent(kbId) + "/documents",
|
|
717
|
+
{
|
|
718
|
+
method: "POST",
|
|
719
|
+
body: fd,
|
|
720
|
+
},
|
|
721
|
+
);
|
|
722
|
+
const doc = payload?.doc && typeof payload.doc === "object" ? payload.doc : {};
|
|
723
|
+
return {
|
|
724
|
+
kbId,
|
|
725
|
+
documentId: doc.id || null,
|
|
726
|
+
title: doc.title || filename,
|
|
727
|
+
bytes: doc.bytes ?? checked.stat.size,
|
|
728
|
+
status: doc.status || null,
|
|
729
|
+
chunks: payload?.chunks ?? null,
|
|
730
|
+
};
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
async function kbListDocuments(kbIdRaw) {
|
|
734
|
+
const kbId = defaultKbId(kbIdRaw, "kb_list_documents");
|
|
735
|
+
const payload = await readJson(
|
|
736
|
+
"kb_list_documents",
|
|
737
|
+
"/api/kb/" + encodeURIComponent(kbId) + "/documents",
|
|
738
|
+
);
|
|
739
|
+
const docs = documentArrayFromPayload(payload);
|
|
740
|
+
if (!docs) {
|
|
741
|
+
throw new Error("kb_list_documents: upstream returned a non-array document payload");
|
|
742
|
+
}
|
|
743
|
+
return docs.map((item) => normalizeDocument(item, kbId));
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
async function kbGetDocument(kbIdRaw, documentIdRaw) {
|
|
747
|
+
const kbId = defaultKbId(kbIdRaw, "kb_get_document");
|
|
748
|
+
const documentId = trimString(documentIdRaw);
|
|
749
|
+
if (!documentId) throw new Error("kb_get_document: missing 'documentId' argument");
|
|
750
|
+
const payload = await readJson(
|
|
751
|
+
"kb_get_document",
|
|
752
|
+
"/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId),
|
|
753
|
+
);
|
|
754
|
+
return normalizeDocument(payload, kbId);
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
async function kbListDocumentChunks(kbIdRaw, documentIdRaw) {
|
|
758
|
+
const kbId = defaultKbId(kbIdRaw, "kb_list_document_chunks");
|
|
759
|
+
const documentId = trimString(documentIdRaw);
|
|
760
|
+
if (!documentId) throw new Error("kb_list_document_chunks: missing 'documentId' argument");
|
|
761
|
+
const payload = await readJson(
|
|
762
|
+
"kb_list_document_chunks",
|
|
763
|
+
"/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId) + "/chunks",
|
|
764
|
+
);
|
|
765
|
+
const rawChunks = Array.isArray(payload) ? payload : Array.isArray(payload?.chunks) ? payload.chunks : null;
|
|
766
|
+
if (!rawChunks) {
|
|
767
|
+
throw new Error("kb_list_document_chunks: upstream returned a non-array chunks payload");
|
|
768
|
+
}
|
|
769
|
+
return rawChunks.map((item, idx) => {
|
|
770
|
+
const chunk = item && typeof item === "object" ? item : { text: String(item ?? "") };
|
|
771
|
+
const capped = cappedText(chunk.text || chunk.content || "", 1600);
|
|
772
|
+
return {
|
|
773
|
+
id: chunk.id ?? null,
|
|
774
|
+
chunkIndex: chunk.chunk_index ?? chunk.chunkIndex ?? idx,
|
|
775
|
+
page: chunk.page ?? null,
|
|
776
|
+
text: capped.text,
|
|
777
|
+
truncated: capped.truncated,
|
|
778
|
+
characters: capped.characters,
|
|
779
|
+
};
|
|
780
|
+
});
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
async function kbReadDocumentRaw(kbIdRaw, documentIdRaw) {
|
|
784
|
+
const kbId = defaultKbId(kbIdRaw, "kb_read_document_raw");
|
|
785
|
+
const documentId = trimString(documentIdRaw);
|
|
786
|
+
if (!documentId) throw new Error("kb_read_document_raw: missing 'documentId' argument");
|
|
787
|
+
const res = await fetchWithTimeout(
|
|
788
|
+
"kb_read_document_raw",
|
|
789
|
+
"/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId) + "/raw",
|
|
790
|
+
{ headers: { Accept: "text/plain, application/octet-stream;q=0.5, */*;q=0.1" } },
|
|
791
|
+
);
|
|
792
|
+
if (!res.ok) {
|
|
793
|
+
const txt = await res.text();
|
|
794
|
+
throw new Error("kb_read_document_raw: upstream " + res.status + ": " + txt.slice(0, 400));
|
|
795
|
+
}
|
|
796
|
+
const capped = await readBoundedTextResponse("kb_read_document_raw", res, MAX_TEXT_RESPONSE_CHARS);
|
|
797
|
+
return {
|
|
798
|
+
kbId,
|
|
799
|
+
documentId,
|
|
800
|
+
contentType: res.headers.get("content-type") || null,
|
|
801
|
+
contentDisposition: res.headers.get("content-disposition") || null,
|
|
802
|
+
text: capped.text,
|
|
803
|
+
truncated: capped.truncated,
|
|
804
|
+
characters: capped.characters,
|
|
805
|
+
bytesRead: capped.bytesRead,
|
|
806
|
+
contentLength: capped.contentLength,
|
|
807
|
+
};
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
async function kbListDocumentFaq(kbIdRaw, documentIdRaw) {
|
|
811
|
+
const kbId = defaultKbId(kbIdRaw, "kb_list_document_faq");
|
|
812
|
+
const documentId = trimString(documentIdRaw);
|
|
813
|
+
if (!documentId) throw new Error("kb_list_document_faq: missing 'documentId' argument");
|
|
814
|
+
const payload = await readJson(
|
|
815
|
+
"kb_list_document_faq",
|
|
816
|
+
"/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId) + "/faq",
|
|
817
|
+
);
|
|
818
|
+
const faqs = Array.isArray(payload) ? payload : Array.isArray(payload?.faqs) ? payload.faqs : null;
|
|
819
|
+
if (!faqs) {
|
|
820
|
+
throw new Error("kb_list_document_faq: upstream returned a non-array FAQ payload");
|
|
821
|
+
}
|
|
822
|
+
return faqs;
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
async function kbReindexDocument(kbIdRaw, documentIdRaw, confirmDocumentIdRaw) {
|
|
826
|
+
const kbId = requireKbId(kbIdRaw, "kb_reindex_document");
|
|
827
|
+
const documentId = trimString(documentIdRaw);
|
|
828
|
+
if (!documentId) throw new Error("kb_reindex_document: missing 'documentId' argument");
|
|
829
|
+
requireConfirm(confirmDocumentIdRaw, documentId, "kb_reindex_document", "confirmDocumentId");
|
|
830
|
+
const payload = await readJson(
|
|
831
|
+
"kb_reindex_document",
|
|
832
|
+
"/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId) + "/reindex",
|
|
833
|
+
{ method: "POST", headers: { "Content-Type": "application/json" }, body: "{}" },
|
|
834
|
+
);
|
|
835
|
+
return {
|
|
836
|
+
kbId,
|
|
837
|
+
documentId,
|
|
838
|
+
doc: payload?.doc ? normalizeDocument(payload.doc, kbId) : null,
|
|
839
|
+
parents: payload?.parents ?? null,
|
|
840
|
+
chunks: payload?.chunks ?? null,
|
|
841
|
+
removedChunks: payload?.removedChunks ?? null,
|
|
842
|
+
faqRegeneration: payload?.faqRegeneration || null,
|
|
843
|
+
sourceGeneration: payload?.sourceGeneration || null,
|
|
844
|
+
};
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
async function kbImportUrl(args) {
|
|
848
|
+
const kbId = requireKbId(args?.kbId, "kb_import_url");
|
|
849
|
+
const url = trimString(args?.url);
|
|
850
|
+
if (!url) throw new Error("kb_import_url: missing 'url' argument");
|
|
851
|
+
const asyncMode = boolWithDefault(args?.async, true);
|
|
852
|
+
const payload = { url };
|
|
853
|
+
for (const key of ["origin", "sourcePath", "batchId", "clientItemId", "externalAssetId"]) {
|
|
854
|
+
const value = optionalString(args?.[key]);
|
|
855
|
+
if (value) payload[key] = value;
|
|
856
|
+
}
|
|
857
|
+
const headers = { "Content-Type": "application/json" };
|
|
858
|
+
const idempotencyKey = optionalString(args?.idempotencyKey);
|
|
859
|
+
if (idempotencyKey) headers["Idempotency-Key"] = idempotencyKey;
|
|
860
|
+
const result = await readJson(
|
|
861
|
+
"kb_import_url",
|
|
862
|
+
"/api/kb/" + encodePathPart(kbId) + "/import" + (asyncMode ? "?async=true" : ""),
|
|
863
|
+
{ method: "POST", headers, body: JSON.stringify(payload) },
|
|
864
|
+
);
|
|
865
|
+
return {
|
|
866
|
+
kbId,
|
|
867
|
+
async: asyncMode,
|
|
868
|
+
sourceUrl: result?.sourceUrl || null,
|
|
869
|
+
job: result?.job ? normalizeJob(result.job, kbId) : null,
|
|
870
|
+
doc: result?.doc ? normalizeDocument(result.doc, kbId) : null,
|
|
871
|
+
chunks: result?.chunks ?? null,
|
|
872
|
+
parents: result?.parents ?? null,
|
|
873
|
+
idempotencyKey: result?.idempotencyKey || idempotencyKey || null,
|
|
874
|
+
replayed: !!result?.replayed,
|
|
875
|
+
};
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
async function kbListJobs(args) {
|
|
879
|
+
const kbId = defaultKbId(args?.kbId, "kb_list_jobs");
|
|
880
|
+
const qs = new URLSearchParams();
|
|
881
|
+
const limit = positiveInt(args?.limit, null, 100);
|
|
882
|
+
if (limit) qs.set("limit", String(limit));
|
|
883
|
+
appendOptionalQuery(qs, "cursor", args?.cursor);
|
|
884
|
+
appendOptionalQuery(qs, "status", args?.status);
|
|
885
|
+
appendOptionalQuery(qs, "clientItemId", args?.clientItemId);
|
|
886
|
+
appendOptionalQuery(qs, "batchId", args?.batchId);
|
|
887
|
+
const query = qs.toString();
|
|
888
|
+
const payload = await readJson(
|
|
889
|
+
"kb_list_jobs",
|
|
890
|
+
"/api/kb/" + encodePathPart(kbId) + "/jobs" + (query ? "?" + query : ""),
|
|
891
|
+
);
|
|
892
|
+
const jobs = jobArrayFromPayload(payload);
|
|
893
|
+
if (!jobs) {
|
|
894
|
+
throw new Error("kb_list_jobs: upstream returned a non-array jobs payload");
|
|
895
|
+
}
|
|
896
|
+
return {
|
|
897
|
+
jobs: jobs.map((item) => normalizeJob(item, kbId)),
|
|
898
|
+
nextCursor: payload?.nextCursor ?? null,
|
|
899
|
+
totalEstimate: payload?.totalEstimate ?? null,
|
|
900
|
+
limit: payload?.limit ?? limit ?? null,
|
|
901
|
+
};
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
async function kbGetJob(kbIdRaw, jobIdRaw) {
|
|
905
|
+
const kbId = defaultKbId(kbIdRaw, "kb_get_job");
|
|
906
|
+
const jobId = trimString(jobIdRaw);
|
|
907
|
+
if (!jobId) throw new Error("kb_get_job: missing 'jobId' argument");
|
|
908
|
+
const payload = await readJson(
|
|
909
|
+
"kb_get_job",
|
|
910
|
+
"/api/kb/" + encodePathPart(kbId) + "/jobs/" + encodePathPart(jobId),
|
|
911
|
+
);
|
|
912
|
+
return normalizeJob(payload, kbId);
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
async function kbRetryJob(kbIdRaw, jobIdRaw) {
|
|
916
|
+
const kbId = requireKbId(kbIdRaw, "kb_retry_job");
|
|
917
|
+
const jobId = trimString(jobIdRaw);
|
|
918
|
+
if (!jobId) throw new Error("kb_retry_job: missing 'jobId' argument");
|
|
919
|
+
const payload = await readJson(
|
|
920
|
+
"kb_retry_job",
|
|
921
|
+
"/api/kb/" + encodePathPart(kbId) + "/jobs/" + encodePathPart(jobId) + "/retry",
|
|
922
|
+
{ method: "POST", headers: { "Content-Type": "application/json" }, body: "{}" },
|
|
923
|
+
);
|
|
924
|
+
return normalizeJob(payload, kbId);
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
async function kbCancelJob(kbIdRaw, jobIdRaw, confirmJobIdRaw) {
|
|
928
|
+
const kbId = requireKbId(kbIdRaw, "kb_cancel_job");
|
|
929
|
+
const jobId = trimString(jobIdRaw);
|
|
930
|
+
if (!jobId) throw new Error("kb_cancel_job: missing 'jobId' argument");
|
|
931
|
+
requireConfirm(confirmJobIdRaw, jobId, "kb_cancel_job", "confirmJobId");
|
|
932
|
+
const payload = await readJson(
|
|
933
|
+
"kb_cancel_job",
|
|
934
|
+
"/api/kb/" + encodePathPart(kbId) + "/jobs/" + encodePathPart(jobId) + "/cancel",
|
|
935
|
+
{ method: "POST", headers: { "Content-Type": "application/json" }, body: "{}" },
|
|
936
|
+
);
|
|
937
|
+
return normalizeJob(payload, kbId);
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
async function kbReadHandbook(section) {
|
|
941
|
+
const markdown = await readText("kb_read_handbook", "/handbook.md");
|
|
942
|
+
const wanted = trimString(section);
|
|
943
|
+
if (!wanted) return markdown;
|
|
944
|
+
const extracted = extractMarkdownSection(markdown, wanted);
|
|
945
|
+
if (!extracted.found) {
|
|
946
|
+
throw new Error(
|
|
947
|
+
"kb_read_handbook: section not found: " + wanted +
|
|
948
|
+
". Available sections: " + extracted.headings.join(", "),
|
|
949
|
+
);
|
|
950
|
+
}
|
|
951
|
+
return extracted.text;
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
async function kbGetConfig() {
|
|
955
|
+
const payload = await readJson("kb_get_config", "/api/admin/config");
|
|
956
|
+
return sanitizeConfig(payload);
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
async function kbDeleteDocument(kbIdRaw, documentIdRaw, confirmDocumentIdRaw) {
|
|
960
|
+
const kbId = requireKbId(kbIdRaw, "kb_delete_document");
|
|
961
|
+
const documentId = trimString(documentIdRaw);
|
|
962
|
+
if (!documentId) throw new Error("kb_delete_document: missing 'documentId' argument");
|
|
963
|
+
requireConfirm(confirmDocumentIdRaw, documentId, "kb_delete_document", "confirmDocumentId");
|
|
964
|
+
const payload = await readJson(
|
|
965
|
+
"kb_delete_document",
|
|
966
|
+
"/api/kb/" + encodeURIComponent(kbId) + "/documents/" + encodeURIComponent(documentId),
|
|
967
|
+
{ method: "DELETE" },
|
|
968
|
+
);
|
|
969
|
+
return {
|
|
970
|
+
ok: payload?.ok !== false,
|
|
971
|
+
kbId,
|
|
972
|
+
documentId,
|
|
973
|
+
};
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
async function kbDeleteKb(kbIdRaw, confirmKbIdRaw) {
|
|
977
|
+
const kbId = requireKbId(kbIdRaw, "kb_delete_kb");
|
|
978
|
+
requireConfirm(confirmKbIdRaw, kbId, "kb_delete_kb", "confirmKbId");
|
|
979
|
+
const payload = await readJson(
|
|
980
|
+
"kb_delete_kb",
|
|
981
|
+
"/api/kb/" + encodeURIComponent(kbId),
|
|
982
|
+
{ method: "DELETE" },
|
|
983
|
+
);
|
|
984
|
+
return {
|
|
985
|
+
ok: payload?.ok !== false,
|
|
986
|
+
kbId,
|
|
987
|
+
};
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
const TOOLS = [
|
|
991
|
+
{
|
|
992
|
+
name: "kb_list",
|
|
993
|
+
description: "List knowledge bases and validate whether each id can be used by document/search APIs. Returns documents=file count and chunks=index chunk count; use documents when the user asks how many files are in a KB. Only use entries with usable=true for follow-up calls.",
|
|
994
|
+
inputSchema: { type: "object", properties: {} },
|
|
995
|
+
},
|
|
996
|
+
{
|
|
997
|
+
name: "kb_get_capabilities",
|
|
998
|
+
description: "Read the JishuShell-KB external-control capability summary, including enabled features, upload formats, limits, and route inventory pointer. Does not expose secrets.",
|
|
999
|
+
inputSchema: { type: "object", properties: {} },
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
name: "kb_create",
|
|
1003
|
+
description: "Create a new knowledge base. Use when the user asks to create a new KB before uploading or organizing documents.",
|
|
1004
|
+
inputSchema: {
|
|
1005
|
+
type: "object",
|
|
1006
|
+
properties: {
|
|
1007
|
+
name: { type: "string", description: "Human-readable KB name" },
|
|
1008
|
+
id: { type: "string", description: "Optional explicit KB id" },
|
|
1009
|
+
description: { type: "string", description: "Optional KB description" },
|
|
1010
|
+
},
|
|
1011
|
+
required: ["name"],
|
|
1012
|
+
},
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
name: "kb_get",
|
|
1016
|
+
description: "Read one knowledge base's metadata, counts, and safe retrieval/config summary. If kbId is omitted the wired default KB is used.",
|
|
1017
|
+
inputSchema: {
|
|
1018
|
+
type: "object",
|
|
1019
|
+
properties: {
|
|
1020
|
+
kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
|
|
1021
|
+
},
|
|
1022
|
+
},
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
name: "kb_search",
|
|
1026
|
+
description: "Search a knowledge base for chunks relevant to a question. Use whenever the user asks something likely answered by indexed documents. If kbId is omitted the default KB is used.",
|
|
1027
|
+
inputSchema: {
|
|
1028
|
+
type: "object",
|
|
1029
|
+
properties: {
|
|
1030
|
+
query: { type: "string", description: "The user question, in their original language" },
|
|
1031
|
+
kbId: { type: "string", description: "Optional explicit KB id; defaults to the wired default KB" },
|
|
1032
|
+
topK: { type: "number", description: "Optional number of chunks to retrieve (1-20, default 6)" },
|
|
1033
|
+
},
|
|
1034
|
+
required: ["query"],
|
|
1035
|
+
},
|
|
1036
|
+
},
|
|
1037
|
+
{
|
|
1038
|
+
name: "kb_upload",
|
|
1039
|
+
description: "Upload and index a host-side file into a specific knowledge base. Use after drive_resolve_local_path. Only files under this instance's mounted files roots are accepted.",
|
|
1040
|
+
inputSchema: {
|
|
1041
|
+
type: "object",
|
|
1042
|
+
properties: {
|
|
1043
|
+
path: { type: "string", description: "Absolute host path from drive_resolve_local_path" },
|
|
1044
|
+
kbId: { type: "string", description: "Target KB id (required for writes)" },
|
|
1045
|
+
},
|
|
1046
|
+
required: ["path", "kbId"],
|
|
1047
|
+
},
|
|
1048
|
+
},
|
|
1049
|
+
{
|
|
1050
|
+
name: "kb_list_documents",
|
|
1051
|
+
description: "List indexed documents in a knowledge base. Use before document deletion or when the user asks what a KB currently contains.",
|
|
1052
|
+
inputSchema: {
|
|
1053
|
+
type: "object",
|
|
1054
|
+
properties: {
|
|
1055
|
+
kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
|
|
1056
|
+
},
|
|
1057
|
+
},
|
|
1058
|
+
},
|
|
1059
|
+
{
|
|
1060
|
+
name: "kb_get_document",
|
|
1061
|
+
description: "Read one indexed document's metadata and derived counts. Use after kb_list_documents when the user asks about a specific document.",
|
|
1062
|
+
inputSchema: {
|
|
1063
|
+
type: "object",
|
|
1064
|
+
properties: {
|
|
1065
|
+
kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
|
|
1066
|
+
documentId: { type: "string", description: "Document id to inspect" },
|
|
1067
|
+
},
|
|
1068
|
+
required: ["documentId"],
|
|
1069
|
+
},
|
|
1070
|
+
},
|
|
1071
|
+
{
|
|
1072
|
+
name: "kb_list_document_chunks",
|
|
1073
|
+
description: "List indexed chunks for a document. Use to inspect why search matched a document or to debug chunking. Chunk text is capped in the MCP response.",
|
|
1074
|
+
inputSchema: {
|
|
1075
|
+
type: "object",
|
|
1076
|
+
properties: {
|
|
1077
|
+
kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
|
|
1078
|
+
documentId: { type: "string", description: "Document id to inspect" },
|
|
1079
|
+
},
|
|
1080
|
+
required: ["documentId"],
|
|
1081
|
+
},
|
|
1082
|
+
},
|
|
1083
|
+
{
|
|
1084
|
+
name: "kb_read_document_raw",
|
|
1085
|
+
description: "Read the original stored document text for a document id. Use only when the user asks to inspect the source document or search snippets are insufficient. Output is capped.",
|
|
1086
|
+
inputSchema: {
|
|
1087
|
+
type: "object",
|
|
1088
|
+
properties: {
|
|
1089
|
+
kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
|
|
1090
|
+
documentId: { type: "string", description: "Document id to read" },
|
|
1091
|
+
},
|
|
1092
|
+
required: ["documentId"],
|
|
1093
|
+
},
|
|
1094
|
+
},
|
|
1095
|
+
{
|
|
1096
|
+
name: "kb_list_document_faq",
|
|
1097
|
+
description: "List generated FAQ suggestions for a document, if the KB has generated any.",
|
|
1098
|
+
inputSchema: {
|
|
1099
|
+
type: "object",
|
|
1100
|
+
properties: {
|
|
1101
|
+
kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
|
|
1102
|
+
documentId: { type: "string", description: "Document id to inspect" },
|
|
1103
|
+
},
|
|
1104
|
+
required: ["documentId"],
|
|
1105
|
+
},
|
|
1106
|
+
},
|
|
1107
|
+
{
|
|
1108
|
+
name: "kb_reindex_document",
|
|
1109
|
+
description: "Rebuild one document's chunks, vectors, and FAQ suggestions from the stored raw file. This is a write/repair action; only use after explicit user confirmation.",
|
|
1110
|
+
inputSchema: {
|
|
1111
|
+
type: "object",
|
|
1112
|
+
properties: {
|
|
1113
|
+
kbId: { type: "string", description: "Target KB id" },
|
|
1114
|
+
documentId: { type: "string", description: "Document id to reindex" },
|
|
1115
|
+
confirmDocumentId: { type: "string", description: "Must exactly equal documentId" },
|
|
1116
|
+
},
|
|
1117
|
+
required: ["kbId", "documentId", "confirmDocumentId"],
|
|
1118
|
+
},
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
name: "kb_import_url",
|
|
1122
|
+
description: "Fetch a readable remote URL and index its extracted text into a specific KB. Defaults to async=true and returns an ingest job; use kb_get_job to check progress.",
|
|
1123
|
+
inputSchema: {
|
|
1124
|
+
type: "object",
|
|
1125
|
+
properties: {
|
|
1126
|
+
kbId: { type: "string", description: "Target KB id (required for writes)" },
|
|
1127
|
+
url: { type: "string", description: "User-provided URL to import" },
|
|
1128
|
+
async: { type: "boolean", description: "Whether to enqueue async ingest; defaults to true" },
|
|
1129
|
+
idempotencyKey: { type: "string", description: "Optional idempotency key for safe retries" },
|
|
1130
|
+
origin: { type: "string", description: "Optional provenance origin" },
|
|
1131
|
+
sourcePath: { type: "string", description: "Optional caller-visible source path" },
|
|
1132
|
+
batchId: { type: "string", description: "Optional batch id" },
|
|
1133
|
+
clientItemId: { type: "string", description: "Optional caller item id" },
|
|
1134
|
+
externalAssetId: { type: "string", description: "Optional external asset id" },
|
|
1135
|
+
},
|
|
1136
|
+
required: ["kbId", "url"],
|
|
1137
|
+
},
|
|
1138
|
+
},
|
|
1139
|
+
{
|
|
1140
|
+
name: "kb_list_jobs",
|
|
1141
|
+
description: "List recent ingest jobs for a KB, with optional status/clientItemId/batchId filters and pagination.",
|
|
1142
|
+
inputSchema: {
|
|
1143
|
+
type: "object",
|
|
1144
|
+
properties: {
|
|
1145
|
+
kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
|
|
1146
|
+
limit: { type: "number", description: "Optional page size, max 100" },
|
|
1147
|
+
cursor: { type: "string", description: "Optional pagination cursor" },
|
|
1148
|
+
status: { type: "string", description: "Optional job status filter" },
|
|
1149
|
+
clientItemId: { type: "string", description: "Optional client item id filter" },
|
|
1150
|
+
batchId: { type: "string", description: "Optional batch id filter" },
|
|
1151
|
+
},
|
|
1152
|
+
},
|
|
1153
|
+
},
|
|
1154
|
+
{
|
|
1155
|
+
name: "kb_get_job",
|
|
1156
|
+
description: "Read one ingest job's current status and provenance.",
|
|
1157
|
+
inputSchema: {
|
|
1158
|
+
type: "object",
|
|
1159
|
+
properties: {
|
|
1160
|
+
kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
|
|
1161
|
+
jobId: { type: "string", description: "Ingest job id" },
|
|
1162
|
+
},
|
|
1163
|
+
required: ["jobId"],
|
|
1164
|
+
},
|
|
1165
|
+
},
|
|
1166
|
+
{
|
|
1167
|
+
name: "kb_retry_job",
|
|
1168
|
+
description: "Retry one failed or cancelled ingest job. This is a write/repair action; use only when the user asks to retry.",
|
|
1169
|
+
inputSchema: {
|
|
1170
|
+
type: "object",
|
|
1171
|
+
properties: {
|
|
1172
|
+
kbId: { type: "string", description: "Target KB id" },
|
|
1173
|
+
jobId: { type: "string", description: "Ingest job id to retry" },
|
|
1174
|
+
},
|
|
1175
|
+
required: ["kbId", "jobId"],
|
|
1176
|
+
},
|
|
1177
|
+
},
|
|
1178
|
+
{
|
|
1179
|
+
name: "kb_cancel_job",
|
|
1180
|
+
description: "Cancel one queued or running ingest job. Only use after explicit user confirmation. The confirmation field must exactly equal the target job id.",
|
|
1181
|
+
inputSchema: {
|
|
1182
|
+
type: "object",
|
|
1183
|
+
properties: {
|
|
1184
|
+
kbId: { type: "string", description: "Target KB id" },
|
|
1185
|
+
jobId: { type: "string", description: "Ingest job id to cancel" },
|
|
1186
|
+
confirmJobId: { type: "string", description: "Must exactly equal jobId" },
|
|
1187
|
+
},
|
|
1188
|
+
required: ["kbId", "jobId", "confirmJobId"],
|
|
1189
|
+
},
|
|
1190
|
+
},
|
|
1191
|
+
{
|
|
1192
|
+
name: "kb_read_handbook",
|
|
1193
|
+
description: "Read the JishuShell-KB handbook. Use this to answer how the KB settings work or what a handbook section says. Section matching uses exact heading text after whitespace normalization.",
|
|
1194
|
+
inputSchema: {
|
|
1195
|
+
type: "object",
|
|
1196
|
+
properties: {
|
|
1197
|
+
section: { type: "string", description: "Optional exact handbook heading to extract" },
|
|
1198
|
+
},
|
|
1199
|
+
},
|
|
1200
|
+
},
|
|
1201
|
+
{
|
|
1202
|
+
name: "kb_get_config",
|
|
1203
|
+
description: "Read a sanitized summary of the current JishuShell-KB configuration. Secrets are redacted; this is safe for explaining retrieval/model settings to the user.",
|
|
1204
|
+
inputSchema: { type: "object", properties: {} },
|
|
1205
|
+
},
|
|
1206
|
+
{
|
|
1207
|
+
name: "kb_delete_document",
|
|
1208
|
+
description: "Delete a document from a specific knowledge base. Only use after explicit user confirmation. The confirmation field must exactly equal the target document id.",
|
|
1209
|
+
inputSchema: {
|
|
1210
|
+
type: "object",
|
|
1211
|
+
properties: {
|
|
1212
|
+
kbId: { type: "string", description: "Target KB id" },
|
|
1213
|
+
documentId: { type: "string", description: "Document id to delete" },
|
|
1214
|
+
confirmDocumentId: { type: "string", description: "Must exactly equal documentId" },
|
|
1215
|
+
},
|
|
1216
|
+
required: ["kbId", "documentId", "confirmDocumentId"],
|
|
1217
|
+
},
|
|
1218
|
+
},
|
|
1219
|
+
{
|
|
1220
|
+
name: "kb_delete_kb",
|
|
1221
|
+
description: "Delete an entire knowledge base. Only use after explicit user confirmation. The confirmation field must exactly equal the target kbId.",
|
|
1222
|
+
inputSchema: {
|
|
1223
|
+
type: "object",
|
|
1224
|
+
properties: {
|
|
1225
|
+
kbId: { type: "string", description: "KB id to delete" },
|
|
1226
|
+
confirmKbId: { type: "string", description: "Must exactly equal kbId" },
|
|
1227
|
+
},
|
|
1228
|
+
required: ["kbId", "confirmKbId"],
|
|
1229
|
+
},
|
|
1230
|
+
},
|
|
1231
|
+
];
|
|
1232
|
+
|
|
1233
|
+
function reply(id, result, error) {
|
|
1234
|
+
const msg = { jsonrpc: "2.0", id: id };
|
|
1235
|
+
if (error) msg.error = { code: -32603, message: error.message || String(error) };
|
|
1236
|
+
else msg.result = result;
|
|
1237
|
+
process.stdout.write(JSON.stringify(msg) + "\\n");
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
async function handle(req) {
|
|
1241
|
+
const { id, method, params } = req;
|
|
1242
|
+
try {
|
|
1243
|
+
if (method === "initialize") {
|
|
1244
|
+
reply(id, {
|
|
1245
|
+
protocolVersion: "2024-11-05",
|
|
1246
|
+
capabilities: { tools: {} },
|
|
1247
|
+
serverInfo: { name: "jishukb-shim", version: ${JSON.stringify(JISHUKB_MCP_SHIM_VERSION)} },
|
|
1248
|
+
});
|
|
1249
|
+
return;
|
|
1250
|
+
}
|
|
1251
|
+
if (method === "tools/list") {
|
|
1252
|
+
reply(id, { tools: TOOLS });
|
|
1253
|
+
return;
|
|
1254
|
+
}
|
|
1255
|
+
if (method === "tools/call") {
|
|
1256
|
+
const tool = params?.name;
|
|
1257
|
+
const a = params?.arguments || {};
|
|
1258
|
+
if (tool === "kb_list") {
|
|
1259
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbList()) }] });
|
|
1260
|
+
} else if (tool === "kb_get_capabilities") {
|
|
1261
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbGetCapabilities()) }] });
|
|
1262
|
+
} else if (tool === "kb_create") {
|
|
1263
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbCreate(a.name, a.id, a.description)) }] });
|
|
1264
|
+
} else if (tool === "kb_get") {
|
|
1265
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbGet(a.kbId)) }] });
|
|
1266
|
+
} else if (tool === "kb_search") {
|
|
1267
|
+
reply(id, { content: [{ type: "text", text: fmtSearchResult(await kbSearch(a.query, a.kbId, a.topK)) }] });
|
|
1268
|
+
} else if (tool === "kb_upload") {
|
|
1269
|
+
const result = await kbUpload(a.path, a.kbId);
|
|
1270
|
+
reply(id, {
|
|
1271
|
+
content: [{ type: "text", text:
|
|
1272
|
+
"✅ indexed into KB " + result.kbId +
|
|
1273
|
+
": " + result.title +
|
|
1274
|
+
" (documentId=" + (result.documentId || "?") +
|
|
1275
|
+
", bytes=" + result.bytes +
|
|
1276
|
+
", chunks=" + (result.chunks != null ? result.chunks : "?") + ")"
|
|
1277
|
+
}],
|
|
1278
|
+
});
|
|
1279
|
+
} else if (tool === "kb_list_documents") {
|
|
1280
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbListDocuments(a.kbId)) }] });
|
|
1281
|
+
} else if (tool === "kb_get_document") {
|
|
1282
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbGetDocument(a.kbId, a.documentId)) }] });
|
|
1283
|
+
} else if (tool === "kb_list_document_chunks") {
|
|
1284
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbListDocumentChunks(a.kbId, a.documentId)) }] });
|
|
1285
|
+
} else if (tool === "kb_read_document_raw") {
|
|
1286
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbReadDocumentRaw(a.kbId, a.documentId)) }] });
|
|
1287
|
+
} else if (tool === "kb_list_document_faq") {
|
|
1288
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbListDocumentFaq(a.kbId, a.documentId)) }] });
|
|
1289
|
+
} else if (tool === "kb_reindex_document") {
|
|
1290
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbReindexDocument(a.kbId, a.documentId, a.confirmDocumentId)) }] });
|
|
1291
|
+
} else if (tool === "kb_import_url") {
|
|
1292
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbImportUrl(a)) }] });
|
|
1293
|
+
} else if (tool === "kb_list_jobs") {
|
|
1294
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbListJobs(a)) }] });
|
|
1295
|
+
} else if (tool === "kb_get_job") {
|
|
1296
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbGetJob(a.kbId, a.jobId)) }] });
|
|
1297
|
+
} else if (tool === "kb_retry_job") {
|
|
1298
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbRetryJob(a.kbId, a.jobId)) }] });
|
|
1299
|
+
} else if (tool === "kb_cancel_job") {
|
|
1300
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbCancelJob(a.kbId, a.jobId, a.confirmJobId)) }] });
|
|
1301
|
+
} else if (tool === "kb_read_handbook") {
|
|
1302
|
+
reply(id, { content: [{ type: "text", text: await kbReadHandbook(a.section) }] });
|
|
1303
|
+
} else if (tool === "kb_get_config") {
|
|
1304
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbGetConfig()) }] });
|
|
1305
|
+
} else if (tool === "kb_delete_document") {
|
|
1306
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbDeleteDocument(a.kbId, a.documentId, a.confirmDocumentId)) }] });
|
|
1307
|
+
} else if (tool === "kb_delete_kb") {
|
|
1308
|
+
reply(id, { content: [{ type: "text", text: jsonText(await kbDeleteKb(a.kbId, a.confirmKbId)) }] });
|
|
1309
|
+
} else {
|
|
1310
|
+
throw new Error("unknown tool: " + tool);
|
|
1311
|
+
}
|
|
1312
|
+
return;
|
|
1313
|
+
}
|
|
1314
|
+
if (method === "notifications/initialized") {
|
|
1315
|
+
return;
|
|
1316
|
+
}
|
|
1317
|
+
if (typeof method === "string" && method.startsWith("notifications/")) {
|
|
1318
|
+
return;
|
|
1319
|
+
}
|
|
1320
|
+
if (id !== undefined) {
|
|
1321
|
+
reply(id, null, new Error("method not implemented: " + method));
|
|
1322
|
+
}
|
|
1323
|
+
} catch (e) {
|
|
1324
|
+
reply(id, null, e);
|
|
1325
|
+
}
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
let inbuf = "";
|
|
1329
|
+
process.stdin.setEncoding("utf-8");
|
|
1330
|
+
process.stdin.on("data", (chunk) => {
|
|
1331
|
+
inbuf += chunk;
|
|
1332
|
+
let idx;
|
|
1333
|
+
while ((idx = inbuf.indexOf("\\n")) >= 0) {
|
|
1334
|
+
const line = inbuf.slice(0, idx).trim();
|
|
1335
|
+
inbuf = inbuf.slice(idx + 1);
|
|
1336
|
+
if (!line) continue;
|
|
1337
|
+
let req;
|
|
1338
|
+
try { req = JSON.parse(line); } catch { continue; }
|
|
1339
|
+
void handle(req);
|
|
1340
|
+
}
|
|
1341
|
+
});
|
|
1342
|
+
process.stdin.on("end", () => process.exit(0));
|
|
1343
|
+
`;
|
|
1344
|
+
/**
|
|
1345
|
+
* Substitute baked-in NON-SECRET values into the shim source.
|
|
1346
|
+
*
|
|
1347
|
+
* Same pattern as `substituteAnythingllmShimPlaceholders` — done at install
|
|
1348
|
+
* time because OpenClaw scrubs env on MCP subprocess spawn.
|
|
1349
|
+
*/
|
|
1350
|
+
export function substituteJishukbShimPlaceholders(params) {
|
|
1351
|
+
const escapeStr = (s) => s.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
1352
|
+
return JISHUKB_MCP_SHIM_SOURCE
|
|
1353
|
+
.replace(/__JS_BASE_URL__/g, escapeStr(params.baseUrl))
|
|
1354
|
+
.replace(/__JS_KB_ID__/g, escapeStr(params.kbId || ""))
|
|
1355
|
+
.replace(/__JS_ALLOWED_UPLOAD_ROOTS__/g, escapeStr(JSON.stringify(params.allowedUploadRoots)));
|
|
1356
|
+
}
|
|
1357
|
+
//# sourceMappingURL=jishukb-shim.js.map
|