@atomic-chat/core 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -0
- package/dist/app-daemon.d.ts +2 -0
- package/dist/app-daemon.js +72 -0
- package/dist/app-daemon.js.map +1 -0
- package/dist/backend/catalog/archive.d.ts +70 -0
- package/dist/backend/catalog/archive.js +138 -0
- package/dist/backend/catalog/archive.js.map +1 -0
- package/dist/backend/catalog/bundled-manifest-baseline.d.ts +2 -0
- package/dist/backend/catalog/bundled-manifest-baseline.js +49 -0
- package/dist/backend/catalog/bundled-manifest-baseline.js.map +1 -0
- package/dist/backend/catalog/cuda-family.d.ts +54 -0
- package/dist/backend/catalog/cuda-family.js +93 -0
- package/dist/backend/catalog/cuda-family.js.map +1 -0
- package/dist/backend/catalog/index.d.ts +6 -0
- package/dist/backend/catalog/index.js +7 -0
- package/dist/backend/catalog/index.js.map +1 -0
- package/dist/backend/catalog/manifest.d.ts +102 -0
- package/dist/backend/catalog/manifest.js +233 -0
- package/dist/backend/catalog/manifest.js.map +1 -0
- package/dist/backend/catalog/migrate.d.ts +40 -0
- package/dist/backend/catalog/migrate.js +135 -0
- package/dist/backend/catalog/migrate.js.map +1 -0
- package/dist/backend/index.d.ts +18 -0
- package/dist/backend/index.js +19 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/install/index.d.ts +3 -0
- package/dist/backend/install/index.js +4 -0
- package/dist/backend/install/index.js.map +1 -0
- package/dist/backend/install/runtime-backend.d.ts +22 -0
- package/dist/backend/install/runtime-backend.js +95 -0
- package/dist/backend/install/runtime-backend.js.map +1 -0
- package/dist/backend/install/service.d.ts +119 -0
- package/dist/backend/install/service.js +218 -0
- package/dist/backend/install/service.js.map +1 -0
- package/dist/backend/installed/index.d.ts +3 -0
- package/dist/backend/installed/index.js +4 -0
- package/dist/backend/installed/index.js.map +1 -0
- package/dist/backend/installed/installed.d.ts +93 -0
- package/dist/backend/installed/installed.js +209 -0
- package/dist/backend/installed/installed.js.map +1 -0
- package/dist/backend/installed/scan.d.ts +39 -0
- package/dist/backend/installed/scan.js +105 -0
- package/dist/backend/installed/scan.js.map +1 -0
- package/dist/backend/optimal/index.d.ts +3 -0
- package/dist/backend/optimal/index.js +4 -0
- package/dist/backend/optimal/index.js.map +1 -0
- package/dist/backend/optimal/optimal-cache.d.ts +90 -0
- package/dist/backend/optimal/optimal-cache.js +198 -0
- package/dist/backend/optimal/optimal-cache.js.map +1 -0
- package/dist/backend/optimal/optimal-store.d.ts +24 -0
- package/dist/backend/optimal/optimal-store.js +103 -0
- package/dist/backend/optimal/optimal-store.js.map +1 -0
- package/dist/backend/select/amd-rocm-pci-ids.d.ts +3 -0
- package/dist/backend/select/amd-rocm-pci-ids.js +57 -0
- package/dist/backend/select/amd-rocm-pci-ids.js.map +1 -0
- package/dist/backend/select/categories.d.ts +49 -0
- package/dist/backend/select/categories.js +178 -0
- package/dist/backend/select/categories.js.map +1 -0
- package/dist/backend/select/features.d.ts +81 -0
- package/dist/backend/select/features.js +221 -0
- package/dist/backend/select/features.js.map +1 -0
- package/dist/backend/select/index.d.ts +9 -0
- package/dist/backend/select/index.js +10 -0
- package/dist/backend/select/index.js.map +1 -0
- package/dist/backend/select/recovery.d.ts +51 -0
- package/dist/backend/select/recovery.js +108 -0
- package/dist/backend/select/recovery.js.map +1 -0
- package/dist/backend/select/tiers.d.ts +76 -0
- package/dist/backend/select/tiers.js +179 -0
- package/dist/backend/select/tiers.js.map +1 -0
- package/dist/backend/turboquant.d.ts +134 -0
- package/dist/backend/turboquant.js +587 -0
- package/dist/backend/turboquant.js.map +1 -0
- package/dist/backend/types.d.ts +139 -0
- package/dist/backend/types.js +13 -0
- package/dist/backend/types.js.map +1 -0
- package/dist/backend/version.d.ts +59 -0
- package/dist/backend/version.js +168 -0
- package/dist/backend/version.js.map +1 -0
- package/dist/cli/bin.d.ts +2 -0
- package/dist/cli/bin.js +10 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/cloud.d.ts +13 -0
- package/dist/cli/cloud.js +146 -0
- package/dist/cli/cloud.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +4 -0
- package/dist/cli/commands/daemon.js +88 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/index.d.ts +16 -0
- package/dist/cli/commands/index.js +17 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/models.d.ts +4 -0
- package/dist/cli/commands/models.js +52 -0
- package/dist/cli/commands/models.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +16 -0
- package/dist/cli/commands/serve.js +263 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/server.d.ts +4 -0
- package/dist/cli/commands/server.js +126 -0
- package/dist/cli/commands/server.js.map +1 -0
- package/dist/cli/commands/shared.d.ts +10 -0
- package/dist/cli/commands/shared.js +34 -0
- package/dist/cli/commands/shared.js.map +1 -0
- package/dist/cli/commands/shutdown.d.ts +4 -0
- package/dist/cli/commands/shutdown.js +32 -0
- package/dist/cli/commands/shutdown.js.map +1 -0
- package/dist/cli/commands/telemetry.d.ts +8 -0
- package/dist/cli/commands/telemetry.js +50 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/io.d.ts +46 -0
- package/dist/cli/io.js +101 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/launch.d.ts +50 -0
- package/dist/cli/launch.js +327 -0
- package/dist/cli/launch.js.map +1 -0
- package/dist/cli/main.d.ts +10 -0
- package/dist/cli/main.js +109 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/owner.d.ts +39 -0
- package/dist/cli/owner.js +179 -0
- package/dist/cli/owner.js.map +1 -0
- package/dist/client/control-client.d.ts +213 -0
- package/dist/client/control-client.js +368 -0
- package/dist/client/control-client.js.map +1 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.js +8 -0
- package/dist/client/index.js.map +1 -0
- package/dist/cloud/chatgpt.d.ts +63 -0
- package/dist/cloud/chatgpt.js +233 -0
- package/dist/cloud/chatgpt.js.map +1 -0
- package/dist/cloud/index.d.ts +8 -0
- package/dist/cloud/index.js +9 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/registry.d.ts +51 -0
- package/dist/cloud/registry.js +148 -0
- package/dist/cloud/registry.js.map +1 -0
- package/dist/config/data-folder.d.ts +57 -0
- package/dist/config/data-folder.js +150 -0
- package/dist/config/data-folder.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.js +10 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/paths.d.ts +98 -0
- package/dist/config/paths.js +109 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/contracts/control-api.d.ts +61 -0
- package/dist/contracts/control-api.js +7 -0
- package/dist/contracts/control-api.js.map +1 -0
- package/dist/contracts/diffusion.d.ts +477 -0
- package/dist/contracts/diffusion.js +10 -0
- package/dist/contracts/diffusion.js.map +1 -0
- package/dist/contracts/errors.d.ts +61 -0
- package/dist/contracts/errors.js +70 -0
- package/dist/contracts/errors.js.map +1 -0
- package/dist/contracts/events.d.ts +270 -0
- package/dist/contracts/events.js +7 -0
- package/dist/contracts/events.js.map +1 -0
- package/dist/contracts/hardware.d.ts +53 -0
- package/dist/contracts/hardware.js +12 -0
- package/dist/contracts/hardware.js.map +1 -0
- package/dist/contracts/index.d.ts +12 -0
- package/dist/contracts/index.js +13 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/model-yml.d.ts +28 -0
- package/dist/contracts/model-yml.js +23 -0
- package/dist/contracts/model-yml.js.map +1 -0
- package/dist/contracts/remote-access.d.ts +43 -0
- package/dist/contracts/remote-access.js +12 -0
- package/dist/contracts/remote-access.js.map +1 -0
- package/dist/contracts/session.d.ts +39 -0
- package/dist/contracts/session.js +7 -0
- package/dist/contracts/session.js.map +1 -0
- package/dist/contracts/settings.d.ts +106 -0
- package/dist/contracts/settings.js +17 -0
- package/dist/contracts/settings.js.map +1 -0
- package/dist/core/atomic-core.d.ts +149 -0
- package/dist/core/atomic-core.js +289 -0
- package/dist/core/atomic-core.js.map +1 -0
- package/dist/core/create.d.ts +12 -0
- package/dist/core/create.js +393 -0
- package/dist/core/create.js.map +1 -0
- package/dist/core/index.d.ts +10 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/public-server.d.ts +76 -0
- package/dist/core/public-server.js +143 -0
- package/dist/core/public-server.js.map +1 -0
- package/dist/core/reap-orphans.d.ts +7 -0
- package/dist/core/reap-orphans.js +40 -0
- package/dist/core/reap-orphans.js.map +1 -0
- package/dist/core/sessions.d.ts +60 -0
- package/dist/core/sessions.js +180 -0
- package/dist/core/sessions.js.map +1 -0
- package/dist/core/types.d.ts +61 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/credentials/api-keys.d.ts +41 -0
- package/dist/credentials/api-keys.js +156 -0
- package/dist/credentials/api-keys.js.map +1 -0
- package/dist/credentials/chatgpt-auth.d.ts +73 -0
- package/dist/credentials/chatgpt-auth.js +167 -0
- package/dist/credentials/chatgpt-auth.js.map +1 -0
- package/dist/credentials/chatgpt-oauth.d.ts +97 -0
- package/dist/credentials/chatgpt-oauth.js +329 -0
- package/dist/credentials/chatgpt-oauth.js.map +1 -0
- package/dist/credentials/chatgpt-store.d.ts +33 -0
- package/dist/credentials/chatgpt-store.js +110 -0
- package/dist/credentials/chatgpt-store.js.map +1 -0
- package/dist/credentials/index.d.ts +11 -0
- package/dist/credentials/index.js +12 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/diffusion/args.d.ts +102 -0
- package/dist/diffusion/args.js +291 -0
- package/dist/diffusion/args.js.map +1 -0
- package/dist/diffusion/compat.d.ts +20 -0
- package/dist/diffusion/compat.js +58 -0
- package/dist/diffusion/compat.js.map +1 -0
- package/dist/diffusion/containment.d.ts +15 -0
- package/dist/diffusion/containment.js +32 -0
- package/dist/diffusion/containment.js.map +1 -0
- package/dist/diffusion/errors.d.ts +28 -0
- package/dist/diffusion/errors.js +63 -0
- package/dist/diffusion/errors.js.map +1 -0
- package/dist/diffusion/gallery.d.ts +76 -0
- package/dist/diffusion/gallery.js +307 -0
- package/dist/diffusion/gallery.js.map +1 -0
- package/dist/diffusion/http.d.ts +16 -0
- package/dist/diffusion/http.js +41 -0
- package/dist/diffusion/http.js.map +1 -0
- package/dist/diffusion/idle.d.ts +23 -0
- package/dist/diffusion/idle.js +45 -0
- package/dist/diffusion/idle.js.map +1 -0
- package/dist/diffusion/image-job.d.ts +25 -0
- package/dist/diffusion/image-job.js +176 -0
- package/dist/diffusion/image-job.js.map +1 -0
- package/dist/diffusion/index.d.ts +35 -0
- package/dist/diffusion/index.js +36 -0
- package/dist/diffusion/index.js.map +1 -0
- package/dist/diffusion/install.d.ts +61 -0
- package/dist/diffusion/install.js +287 -0
- package/dist/diffusion/install.js.map +1 -0
- package/dist/diffusion/job-kind.d.ts +74 -0
- package/dist/diffusion/job-kind.js +7 -0
- package/dist/diffusion/job-kind.js.map +1 -0
- package/dist/diffusion/jobs.d.ts +90 -0
- package/dist/diffusion/jobs.js +433 -0
- package/dist/diffusion/jobs.js.map +1 -0
- package/dist/diffusion/mutex.d.ts +16 -0
- package/dist/diffusion/mutex.js +46 -0
- package/dist/diffusion/mutex.js.map +1 -0
- package/dist/diffusion/parse.d.ts +19 -0
- package/dist/diffusion/parse.js +274 -0
- package/dist/diffusion/parse.js.map +1 -0
- package/dist/diffusion/png.d.ts +77 -0
- package/dist/diffusion/png.js +335 -0
- package/dist/diffusion/png.js.map +1 -0
- package/dist/diffusion/progress.d.ts +74 -0
- package/dist/diffusion/progress.js +223 -0
- package/dist/diffusion/progress.js.map +1 -0
- package/dist/diffusion/recipe.d.ts +26 -0
- package/dist/diffusion/recipe.js +206 -0
- package/dist/diffusion/recipe.js.map +1 -0
- package/dist/diffusion/server-process.d.ts +59 -0
- package/dist/diffusion/server-process.js +235 -0
- package/dist/diffusion/server-process.js.map +1 -0
- package/dist/diffusion/service.d.ts +107 -0
- package/dist/diffusion/service.js +431 -0
- package/dist/diffusion/service.js.map +1 -0
- package/dist/diffusion/session.d.ts +58 -0
- package/dist/diffusion/session.js +226 -0
- package/dist/diffusion/session.js.map +1 -0
- package/dist/diffusion/state.d.ts +90 -0
- package/dist/diffusion/state.js +122 -0
- package/dist/diffusion/state.js.map +1 -0
- package/dist/diffusion/tracker.d.ts +46 -0
- package/dist/diffusion/tracker.js +153 -0
- package/dist/diffusion/tracker.js.map +1 -0
- package/dist/diffusion/types.d.ts +62 -0
- package/dist/diffusion/types.js +10 -0
- package/dist/diffusion/types.js.map +1 -0
- package/dist/diffusion/validate.d.ts +36 -0
- package/dist/diffusion/validate.js +166 -0
- package/dist/diffusion/validate.js.map +1 -0
- package/dist/diffusion/video-gallery.d.ts +56 -0
- package/dist/diffusion/video-gallery.js +252 -0
- package/dist/diffusion/video-gallery.js.map +1 -0
- package/dist/diffusion/video-job.d.ts +33 -0
- package/dist/diffusion/video-job.js +150 -0
- package/dist/diffusion/video-job.js.map +1 -0
- package/dist/diffusion/video-recipe.d.ts +12 -0
- package/dist/diffusion/video-recipe.js +141 -0
- package/dist/diffusion/video-recipe.js.map +1 -0
- package/dist/diffusion/wiring.d.ts +24 -0
- package/dist/diffusion/wiring.js +38 -0
- package/dist/diffusion/wiring.js.map +1 -0
- package/dist/diffusion/workflow.d.ts +33 -0
- package/dist/diffusion/workflow.js +78 -0
- package/dist/diffusion/workflow.js.map +1 -0
- package/dist/downloads/archive.d.ts +15 -0
- package/dist/downloads/archive.js +121 -0
- package/dist/downloads/archive.js.map +1 -0
- package/dist/downloads/disk-space.d.ts +18 -0
- package/dist/downloads/disk-space.js +32 -0
- package/dist/downloads/disk-space.js.map +1 -0
- package/dist/downloads/disk.d.ts +38 -0
- package/dist/downloads/disk.js +88 -0
- package/dist/downloads/disk.js.map +1 -0
- package/dist/downloads/downloader.d.ts +75 -0
- package/dist/downloads/downloader.js +479 -0
- package/dist/downloads/downloader.js.map +1 -0
- package/dist/downloads/index.d.ts +14 -0
- package/dist/downloads/index.js +15 -0
- package/dist/downloads/index.js.map +1 -0
- package/dist/downloads/protocol.d.ts +52 -0
- package/dist/downloads/protocol.js +153 -0
- package/dist/downloads/protocol.js.map +1 -0
- package/dist/downloads/proxy-fetch.d.ts +45 -0
- package/dist/downloads/proxy-fetch.js +571 -0
- package/dist/downloads/proxy-fetch.js.map +1 -0
- package/dist/downloads/verify.d.ts +22 -0
- package/dist/downloads/verify.js +74 -0
- package/dist/downloads/verify.js.map +1 -0
- package/dist/events/emitter.d.ts +44 -0
- package/dist/events/emitter.js +104 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/index.d.ts +5 -0
- package/dist/events/index.js +6 -0
- package/dist/events/index.js.map +1 -0
- package/dist/hardware/index.d.ts +7 -0
- package/dist/hardware/index.js +8 -0
- package/dist/hardware/index.js.map +1 -0
- package/dist/hardware/override.d.ts +46 -0
- package/dist/hardware/override.js +81 -0
- package/dist/hardware/override.js.map +1 -0
- package/dist/host/index.d.ts +15 -0
- package/dist/host/index.js +16 -0
- package/dist/host/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/catalog.d.ts +67 -0
- package/dist/integrations/catalog.js +385 -0
- package/dist/integrations/catalog.js.map +1 -0
- package/dist/integrations/config-io.d.ts +86 -0
- package/dist/integrations/config-io.js +229 -0
- package/dist/integrations/config-io.js.map +1 -0
- package/dist/integrations/configure/atomic-agent.d.ts +33 -0
- package/dist/integrations/configure/atomic-agent.js +127 -0
- package/dist/integrations/configure/atomic-agent.js.map +1 -0
- package/dist/integrations/configure/claude-code.d.ts +16 -0
- package/dist/integrations/configure/claude-code.js +45 -0
- package/dist/integrations/configure/claude-code.js.map +1 -0
- package/dist/integrations/configure/cline.d.ts +28 -0
- package/dist/integrations/configure/cline.js +70 -0
- package/dist/integrations/configure/cline.js.map +1 -0
- package/dist/integrations/configure/codex.d.ts +17 -0
- package/dist/integrations/configure/codex.js +43 -0
- package/dist/integrations/configure/codex.js.map +1 -0
- package/dist/integrations/configure/copilot.d.ts +10 -0
- package/dist/integrations/configure/copilot.js +14 -0
- package/dist/integrations/configure/copilot.js.map +1 -0
- package/dist/integrations/configure/droid.d.ts +12 -0
- package/dist/integrations/configure/droid.js +47 -0
- package/dist/integrations/configure/droid.js.map +1 -0
- package/dist/integrations/configure/dsh.d.ts +34 -0
- package/dist/integrations/configure/dsh.js +146 -0
- package/dist/integrations/configure/dsh.js.map +1 -0
- package/dist/integrations/configure/env-agent.d.ts +26 -0
- package/dist/integrations/configure/env-agent.js +41 -0
- package/dist/integrations/configure/env-agent.js.map +1 -0
- package/dist/integrations/configure/goose.d.ts +12 -0
- package/dist/integrations/configure/goose.js +16 -0
- package/dist/integrations/configure/goose.js.map +1 -0
- package/dist/integrations/configure/hermes.d.ts +41 -0
- package/dist/integrations/configure/hermes.js +247 -0
- package/dist/integrations/configure/hermes.js.map +1 -0
- package/dist/integrations/configure/index.d.ts +25 -0
- package/dist/integrations/configure/index.js +26 -0
- package/dist/integrations/configure/index.js.map +1 -0
- package/dist/integrations/configure/json-tree.d.ts +16 -0
- package/dist/integrations/configure/json-tree.js +19 -0
- package/dist/integrations/configure/json-tree.js.map +1 -0
- package/dist/integrations/configure/kilo.d.ts +9 -0
- package/dist/integrations/configure/kilo.js +19 -0
- package/dist/integrations/configure/kilo.js.map +1 -0
- package/dist/integrations/configure/mimo.d.ts +9 -0
- package/dist/integrations/configure/mimo.js +19 -0
- package/dist/integrations/configure/mimo.js.map +1 -0
- package/dist/integrations/configure/muse.d.ts +9 -0
- package/dist/integrations/configure/muse.js +13 -0
- package/dist/integrations/configure/muse.js.map +1 -0
- package/dist/integrations/configure/openclaude.d.ts +13 -0
- package/dist/integrations/configure/openclaude.js +56 -0
- package/dist/integrations/configure/openclaude.js.map +1 -0
- package/dist/integrations/configure/openclaw.d.ts +24 -0
- package/dist/integrations/configure/openclaw.js +99 -0
- package/dist/integrations/configure/openclaw.js.map +1 -0
- package/dist/integrations/configure/opencode-style.d.ts +25 -0
- package/dist/integrations/configure/opencode-style.js +43 -0
- package/dist/integrations/configure/opencode-style.js.map +1 -0
- package/dist/integrations/configure/opencode.d.ts +9 -0
- package/dist/integrations/configure/opencode.js +19 -0
- package/dist/integrations/configure/opencode.js.map +1 -0
- package/dist/integrations/configure/openhands.d.ts +8 -0
- package/dist/integrations/configure/openhands.js +12 -0
- package/dist/integrations/configure/openhands.js.map +1 -0
- package/dist/integrations/configure/pi.d.ts +14 -0
- package/dist/integrations/configure/pi.js +49 -0
- package/dist/integrations/configure/pi.js.map +1 -0
- package/dist/integrations/configure/poolside.d.ts +8 -0
- package/dist/integrations/configure/poolside.js +12 -0
- package/dist/integrations/configure/poolside.js.map +1 -0
- package/dist/integrations/configure/registry.d.ts +41 -0
- package/dist/integrations/configure/registry.js +50 -0
- package/dist/integrations/configure/registry.js.map +1 -0
- package/dist/integrations/configure/zcode.d.ts +59 -0
- package/dist/integrations/configure/zcode.js +260 -0
- package/dist/integrations/configure/zcode.js.map +1 -0
- package/dist/integrations/configure/zed.d.ts +16 -0
- package/dist/integrations/configure/zed.js +61 -0
- package/dist/integrations/configure/zed.js.map +1 -0
- package/dist/integrations/detect.d.ts +29 -0
- package/dist/integrations/detect.js +43 -0
- package/dist/integrations/detect.js.map +1 -0
- package/dist/integrations/index.d.ts +9 -0
- package/dist/integrations/index.js +10 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/lock/control-token.d.ts +19 -0
- package/dist/lock/control-token.js +58 -0
- package/dist/lock/control-token.js.map +1 -0
- package/dist/lock/index.d.ts +10 -0
- package/dist/lock/index.js +11 -0
- package/dist/lock/index.js.map +1 -0
- package/dist/lock/instance-lock.d.ts +93 -0
- package/dist/lock/instance-lock.js +244 -0
- package/dist/lock/instance-lock.js.map +1 -0
- package/dist/lock/legacy-guard.d.ts +46 -0
- package/dist/lock/legacy-guard.js +87 -0
- package/dist/lock/legacy-guard.js.map +1 -0
- package/dist/lock/model-claim.d.ts +20 -0
- package/dist/lock/model-claim.js +84 -0
- package/dist/lock/model-claim.js.map +1 -0
- package/dist/lock/process-identity.d.ts +48 -0
- package/dist/lock/process-identity.js +180 -0
- package/dist/lock/process-identity.js.map +1 -0
- package/dist/lock/process-journal.d.ts +56 -0
- package/dist/lock/process-journal.js +113 -0
- package/dist/lock/process-journal.js.map +1 -0
- package/dist/models/capabilities.d.ts +73 -0
- package/dist/models/capabilities.js +123 -0
- package/dist/models/capabilities.js.map +1 -0
- package/dist/models/embed.d.ts +30 -0
- package/dist/models/embed.js +83 -0
- package/dist/models/embed.js.map +1 -0
- package/dist/models/gguf/classify.d.ts +29 -0
- package/dist/models/gguf/classify.js +89 -0
- package/dist/models/gguf/classify.js.map +1 -0
- package/dist/models/gguf/index.d.ts +5 -0
- package/dist/models/gguf/index.js +6 -0
- package/dist/models/gguf/index.js.map +1 -0
- package/dist/models/gguf/kv-cache.d.ts +27 -0
- package/dist/models/gguf/kv-cache.js +101 -0
- package/dist/models/gguf/kv-cache.js.map +1 -0
- package/dist/models/gguf/read-file.d.ts +11 -0
- package/dist/models/gguf/read-file.js +21 -0
- package/dist/models/gguf/read-file.js.map +1 -0
- package/dist/models/gguf/reader.d.ts +40 -0
- package/dist/models/gguf/reader.js +271 -0
- package/dist/models/gguf/reader.js.map +1 -0
- package/dist/models/gguf/support.d.ts +47 -0
- package/dist/models/gguf/support.js +48 -0
- package/dist/models/gguf/support.js.map +1 -0
- package/dist/models/hf.d.ts +35 -0
- package/dist/models/hf.js +140 -0
- package/dist/models/hf.js.map +1 -0
- package/dist/models/index.d.ts +14 -0
- package/dist/models/index.js +15 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/model-yml.d.ts +22 -0
- package/dist/models/model-yml.js +63 -0
- package/dist/models/model-yml.js.map +1 -0
- package/dist/models/registry.d.ts +51 -0
- package/dist/models/registry.js +102 -0
- package/dist/models/registry.js.map +1 -0
- package/dist/models/shards.d.ts +20 -0
- package/dist/models/shards.js +46 -0
- package/dist/models/shards.js.map +1 -0
- package/dist/remote-access/cloudflared-args.d.ts +41 -0
- package/dist/remote-access/cloudflared-args.js +59 -0
- package/dist/remote-access/cloudflared-args.js.map +1 -0
- package/dist/remote-access/cloudflared-output.d.ts +26 -0
- package/dist/remote-access/cloudflared-output.js +51 -0
- package/dist/remote-access/cloudflared-output.js.map +1 -0
- package/dist/remote-access/index.d.ts +16 -0
- package/dist/remote-access/index.js +17 -0
- package/dist/remote-access/index.js.map +1 -0
- package/dist/remote-access/journal.d.ts +63 -0
- package/dist/remote-access/journal.js +140 -0
- package/dist/remote-access/journal.js.map +1 -0
- package/dist/remote-access/lan-probe.d.ts +28 -0
- package/dist/remote-access/lan-probe.js +63 -0
- package/dist/remote-access/lan-probe.js.map +1 -0
- package/dist/remote-access/lan.d.ts +31 -0
- package/dist/remote-access/lan.js +90 -0
- package/dist/remote-access/lan.js.map +1 -0
- package/dist/remote-access/manager.d.ts +111 -0
- package/dist/remote-access/manager.js +316 -0
- package/dist/remote-access/manager.js.map +1 -0
- package/dist/remote-access/probe.d.ts +92 -0
- package/dist/remote-access/probe.js +186 -0
- package/dist/remote-access/probe.js.map +1 -0
- package/dist/remote-access/process.d.ts +66 -0
- package/dist/remote-access/process.js +160 -0
- package/dist/remote-access/process.js.map +1 -0
- package/dist/remote-access/spawner.d.ts +25 -0
- package/dist/remote-access/spawner.js +49 -0
- package/dist/remote-access/spawner.js.map +1 -0
- package/dist/remote-access/status.d.ts +39 -0
- package/dist/remote-access/status.js +49 -0
- package/dist/remote-access/status.js.map +1 -0
- package/dist/remote-access/wiring.d.ts +34 -0
- package/dist/remote-access/wiring.js +47 -0
- package/dist/remote-access/wiring.js.map +1 -0
- package/dist/router/index.d.ts +7 -0
- package/dist/router/index.js +8 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/resolve.d.ts +41 -0
- package/dist/router/resolve.js +53 -0
- package/dist/router/resolve.js.map +1 -0
- package/dist/runtime/foundation-models/errors.d.ts +28 -0
- package/dist/runtime/foundation-models/errors.js +48 -0
- package/dist/runtime/foundation-models/errors.js.map +1 -0
- package/dist/runtime/foundation-models/index.d.ts +8 -0
- package/dist/runtime/foundation-models/index.js +9 -0
- package/dist/runtime/foundation-models/index.js.map +1 -0
- package/dist/runtime/foundation-models/runtime.d.ts +73 -0
- package/dist/runtime/foundation-models/runtime.js +186 -0
- package/dist/runtime/foundation-models/runtime.js.map +1 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.js +6 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/llamacpp/args.d.ts +90 -0
- package/dist/runtime/llamacpp/args.js +379 -0
- package/dist/runtime/llamacpp/args.js.map +1 -0
- package/dist/runtime/llamacpp/ctx-ladder.d.ts +16 -0
- package/dist/runtime/llamacpp/ctx-ladder.js +28 -0
- package/dist/runtime/llamacpp/ctx-ladder.js.map +1 -0
- package/dist/runtime/llamacpp/devices.d.ts +26 -0
- package/dist/runtime/llamacpp/devices.js +86 -0
- package/dist/runtime/llamacpp/devices.js.map +1 -0
- package/dist/runtime/llamacpp/errors.d.ts +34 -0
- package/dist/runtime/llamacpp/errors.js +137 -0
- package/dist/runtime/llamacpp/errors.js.map +1 -0
- package/dist/runtime/llamacpp/index.d.ts +14 -0
- package/dist/runtime/llamacpp/index.js +15 -0
- package/dist/runtime/llamacpp/index.js.map +1 -0
- package/dist/runtime/llamacpp/load-plan.d.ts +113 -0
- package/dist/runtime/llamacpp/load-plan.js +259 -0
- package/dist/runtime/llamacpp/load-plan.js.map +1 -0
- package/dist/runtime/llamacpp/policy.d.ts +70 -0
- package/dist/runtime/llamacpp/policy.js +191 -0
- package/dist/runtime/llamacpp/policy.js.map +1 -0
- package/dist/runtime/llamacpp/probe.d.ts +13 -0
- package/dist/runtime/llamacpp/probe.js +35 -0
- package/dist/runtime/llamacpp/probe.js.map +1 -0
- package/dist/runtime/llamacpp/runtime-device.d.ts +33 -0
- package/dist/runtime/llamacpp/runtime-device.js +169 -0
- package/dist/runtime/llamacpp/runtime-device.js.map +1 -0
- package/dist/runtime/llamacpp/runtime.d.ts +151 -0
- package/dist/runtime/llamacpp/runtime.js +535 -0
- package/dist/runtime/llamacpp/runtime.js.map +1 -0
- package/dist/runtime/mlx/args.d.ts +10 -0
- package/dist/runtime/mlx/args.js +44 -0
- package/dist/runtime/mlx/args.js.map +1 -0
- package/dist/runtime/mlx/config.d.ts +71 -0
- package/dist/runtime/mlx/config.js +91 -0
- package/dist/runtime/mlx/config.js.map +1 -0
- package/dist/runtime/mlx/errors.d.ts +21 -0
- package/dist/runtime/mlx/errors.js +73 -0
- package/dist/runtime/mlx/errors.js.map +1 -0
- package/dist/runtime/mlx/index.d.ts +12 -0
- package/dist/runtime/mlx/index.js +13 -0
- package/dist/runtime/mlx/index.js.map +1 -0
- package/dist/runtime/mlx/model-files.d.ts +29 -0
- package/dist/runtime/mlx/model-files.js +82 -0
- package/dist/runtime/mlx/model-files.js.map +1 -0
- package/dist/runtime/mlx/runtime.d.ts +77 -0
- package/dist/runtime/mlx/runtime.js +223 -0
- package/dist/runtime/mlx/runtime.js.map +1 -0
- package/dist/runtime/mlx/shard-repair.d.ts +25 -0
- package/dist/runtime/mlx/shard-repair.js +44 -0
- package/dist/runtime/mlx/shard-repair.js.map +1 -0
- package/dist/runtime/shared/env.d.ts +49 -0
- package/dist/runtime/shared/env.js +155 -0
- package/dist/runtime/shared/env.js.map +1 -0
- package/dist/runtime/shared/external-sessions.d.ts +67 -0
- package/dist/runtime/shared/external-sessions.js +155 -0
- package/dist/runtime/shared/external-sessions.js.map +1 -0
- package/dist/runtime/shared/index.d.ts +17 -0
- package/dist/runtime/shared/index.js +18 -0
- package/dist/runtime/shared/index.js.map +1 -0
- package/dist/runtime/shared/load-cancel.d.ts +45 -0
- package/dist/runtime/shared/load-cancel.js +95 -0
- package/dist/runtime/shared/load-cancel.js.map +1 -0
- package/dist/runtime/shared/local-runtime.d.ts +68 -0
- package/dist/runtime/shared/local-runtime.js +12 -0
- package/dist/runtime/shared/local-runtime.js.map +1 -0
- package/dist/runtime/shared/log-stream.d.ts +4 -0
- package/dist/runtime/shared/log-stream.js +28 -0
- package/dist/runtime/shared/log-stream.js.map +1 -0
- package/dist/runtime/shared/paths.d.ts +21 -0
- package/dist/runtime/shared/paths.js +63 -0
- package/dist/runtime/shared/paths.js.map +1 -0
- package/dist/runtime/shared/ports.d.ts +26 -0
- package/dist/runtime/shared/ports.js +45 -0
- package/dist/runtime/shared/ports.js.map +1 -0
- package/dist/runtime/shared/process.d.ts +95 -0
- package/dist/runtime/shared/process.js +224 -0
- package/dist/runtime/shared/process.js.map +1 -0
- package/dist/runtime/shared/sidecar.d.ts +86 -0
- package/dist/runtime/shared/sidecar.js +214 -0
- package/dist/runtime/shared/sidecar.js.map +1 -0
- package/dist/server/clients.d.ts +40 -0
- package/dist/server/clients.js +74 -0
- package/dist/server/clients.js.map +1 -0
- package/dist/server/control/index.d.ts +12 -0
- package/dist/server/control/index.js +12 -0
- package/dist/server/control/index.js.map +1 -0
- package/dist/server/control/router.d.ts +9 -0
- package/dist/server/control/router.js +61 -0
- package/dist/server/control/router.js.map +1 -0
- package/dist/server/control/routes/backends.d.ts +4 -0
- package/dist/server/control/routes/backends.js +47 -0
- package/dist/server/control/routes/backends.js.map +1 -0
- package/dist/server/control/routes/clients.d.ts +4 -0
- package/dist/server/control/routes/clients.js +30 -0
- package/dist/server/control/routes/clients.js.map +1 -0
- package/dist/server/control/routes/cloud.d.ts +4 -0
- package/dist/server/control/routes/cloud.js +32 -0
- package/dist/server/control/routes/cloud.js.map +1 -0
- package/dist/server/control/routes/diffusion-video.d.ts +10 -0
- package/dist/server/control/routes/diffusion-video.js +33 -0
- package/dist/server/control/routes/diffusion-video.js.map +1 -0
- package/dist/server/control/routes/diffusion.d.ts +15 -0
- package/dist/server/control/routes/diffusion.js +71 -0
- package/dist/server/control/routes/diffusion.js.map +1 -0
- package/dist/server/control/routes/disk.d.ts +4 -0
- package/dist/server/control/routes/disk.js +11 -0
- package/dist/server/control/routes/disk.js.map +1 -0
- package/dist/server/control/routes/external-sessions.d.ts +4 -0
- package/dist/server/control/routes/external-sessions.js +27 -0
- package/dist/server/control/routes/external-sessions.js.map +1 -0
- package/dist/server/control/routes/hardware.d.ts +4 -0
- package/dist/server/control/routes/hardware.js +14 -0
- package/dist/server/control/routes/hardware.js.map +1 -0
- package/dist/server/control/routes/lifecycle.d.ts +12 -0
- package/dist/server/control/routes/lifecycle.js +67 -0
- package/dist/server/control/routes/lifecycle.js.map +1 -0
- package/dist/server/control/routes/models.d.ts +7 -0
- package/dist/server/control/routes/models.js +59 -0
- package/dist/server/control/routes/models.js.map +1 -0
- package/dist/server/control/routes/public-server.d.ts +4 -0
- package/dist/server/control/routes/public-server.js +30 -0
- package/dist/server/control/routes/public-server.js.map +1 -0
- package/dist/server/control/routes/remote-access.d.ts +7 -0
- package/dist/server/control/routes/remote-access.js +16 -0
- package/dist/server/control/routes/remote-access.js.map +1 -0
- package/dist/server/control/routes/settings.d.ts +4 -0
- package/dist/server/control/routes/settings.js +58 -0
- package/dist/server/control/routes/settings.js.map +1 -0
- package/dist/server/control/routes/telemetry.d.ts +7 -0
- package/dist/server/control/routes/telemetry.js +46 -0
- package/dist/server/control/routes/telemetry.js.map +1 -0
- package/dist/server/control/server.d.ts +26 -0
- package/dist/server/control/server.js +111 -0
- package/dist/server/control/server.js.map +1 -0
- package/dist/server/control/types.d.ts +271 -0
- package/dist/server/control/types.js +6 -0
- package/dist/server/control/types.js.map +1 -0
- package/dist/server/http.d.ts +62 -0
- package/dist/server/http.js +220 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +10 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/public/ctx.d.ts +23 -0
- package/dist/server/public/ctx.js +42 -0
- package/dist/server/public/ctx.js.map +1 -0
- package/dist/server/public/dynamic-hosts.d.ts +40 -0
- package/dist/server/public/dynamic-hosts.js +117 -0
- package/dist/server/public/dynamic-hosts.js.map +1 -0
- package/dist/server/public/errors.d.ts +36 -0
- package/dist/server/public/errors.js +120 -0
- package/dist/server/public/errors.js.map +1 -0
- package/dist/server/public/exchange.d.ts +42 -0
- package/dist/server/public/exchange.js +85 -0
- package/dist/server/public/exchange.js.map +1 -0
- package/dist/server/public/forward.d.ts +53 -0
- package/dist/server/public/forward.js +448 -0
- package/dist/server/public/forward.js.map +1 -0
- package/dist/server/public/gates.d.ts +49 -0
- package/dist/server/public/gates.js +181 -0
- package/dist/server/public/gates.js.map +1 -0
- package/dist/server/public/images-params.d.ts +50 -0
- package/dist/server/public/images-params.js +162 -0
- package/dist/server/public/images-params.js.map +1 -0
- package/dist/server/public/images.d.ts +12 -0
- package/dist/server/public/images.js +96 -0
- package/dist/server/public/images.js.map +1 -0
- package/dist/server/public/index.d.ts +58 -0
- package/dist/server/public/index.js +253 -0
- package/dist/server/public/index.js.map +1 -0
- package/dist/server/public/listing.d.ts +27 -0
- package/dist/server/public/listing.js +116 -0
- package/dist/server/public/listing.js.map +1 -0
- package/dist/server/public/responses.d.ts +11 -0
- package/dist/server/public/responses.js +158 -0
- package/dist/server/public/responses.js.map +1 -0
- package/dist/server/public/sse.d.ts +33 -0
- package/dist/server/public/sse.js +48 -0
- package/dist/server/public/sse.js.map +1 -0
- package/dist/server/public/static-assets.generated.d.ts +3 -0
- package/dist/server/public/static-assets.generated.js +6 -0
- package/dist/server/public/static-assets.generated.js.map +1 -0
- package/dist/server/public/static.d.ts +13 -0
- package/dist/server/public/static.js +75 -0
- package/dist/server/public/static.js.map +1 -0
- package/dist/server/public/subscription.d.ts +14 -0
- package/dist/server/public/subscription.js +56 -0
- package/dist/server/public/subscription.js.map +1 -0
- package/dist/server/public/telemetry.d.ts +65 -0
- package/dist/server/public/telemetry.js +284 -0
- package/dist/server/public/telemetry.js.map +1 -0
- package/dist/server/public/trace.d.ts +66 -0
- package/dist/server/public/trace.js +223 -0
- package/dist/server/public/trace.js.map +1 -0
- package/dist/server/public/types.d.ts +131 -0
- package/dist/server/public/types.js +9 -0
- package/dist/server/public/types.js.map +1 -0
- package/dist/server/public/videos-params.d.ts +95 -0
- package/dist/server/public/videos-params.js +220 -0
- package/dist/server/public/videos-params.js.map +1 -0
- package/dist/server/public/videos.d.ts +16 -0
- package/dist/server/public/videos.js +188 -0
- package/dist/server/public/videos.js.map +1 -0
- package/dist/server/public/wire.d.ts +53 -0
- package/dist/server/public/wire.js +174 -0
- package/dist/server/public/wire.js.map +1 -0
- package/dist/server/shims/anthropic.d.ts +52 -0
- package/dist/server/shims/anthropic.js +519 -0
- package/dist/server/shims/anthropic.js.map +1 -0
- package/dist/server/shims/chat-to-responses.d.ts +113 -0
- package/dist/server/shims/chat-to-responses.js +557 -0
- package/dist/server/shims/chat-to-responses.js.map +1 -0
- package/dist/server/shims/index.d.ts +8 -0
- package/dist/server/shims/index.js +9 -0
- package/dist/server/shims/index.js.map +1 -0
- package/dist/server/shims/json.d.ts +10 -0
- package/dist/server/shims/json.js +78 -0
- package/dist/server/shims/json.js.map +1 -0
- package/dist/server/shims/responses.d.ts +79 -0
- package/dist/server/shims/responses.js +543 -0
- package/dist/server/shims/responses.js.map +1 -0
- package/dist/server/state-file.d.ts +44 -0
- package/dist/server/state-file.js +107 -0
- package/dist/server/state-file.js.map +1 -0
- package/dist/settings/import.d.ts +61 -0
- package/dist/settings/import.js +104 -0
- package/dist/settings/import.js.map +1 -0
- package/dist/settings/index.d.ts +11 -0
- package/dist/settings/index.js +12 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/schema/foundation-models.json +1 -0
- package/dist/settings/schema/llamacpp-upstream.json +489 -0
- package/dist/settings/schema/llamacpp.json +475 -0
- package/dist/settings/schema/mlx.json +136 -0
- package/dist/settings/schema.d.ts +35 -0
- package/dist/settings/schema.js +196 -0
- package/dist/settings/schema.js.map +1 -0
- package/dist/settings/store.d.ts +168 -0
- package/dist/settings/store.js +350 -0
- package/dist/settings/store.js.map +1 -0
- package/dist/speculative/chat-template-overrides.d.ts +35 -0
- package/dist/speculative/chat-template-overrides.js +142 -0
- package/dist/speculative/chat-template-overrides.js.map +1 -0
- package/dist/speculative/dflash-registry.d.ts +50 -0
- package/dist/speculative/dflash-registry.js +258 -0
- package/dist/speculative/dflash-registry.js.map +1 -0
- package/dist/speculative/gemma-mtp-registry.d.ts +48 -0
- package/dist/speculative/gemma-mtp-registry.js +79 -0
- package/dist/speculative/gemma-mtp-registry.js.map +1 -0
- package/dist/speculative/index.d.ts +18 -0
- package/dist/speculative/index.js +19 -0
- package/dist/speculative/index.js.map +1 -0
- package/dist/speculative/mlx-dflash-registry.d.ts +39 -0
- package/dist/speculative/mlx-dflash-registry.js +230 -0
- package/dist/speculative/mlx-dflash-registry.js.map +1 -0
- package/dist/speculative/mlx-eagle3-registry.d.ts +24 -0
- package/dist/speculative/mlx-eagle3-registry.js +81 -0
- package/dist/speculative/mlx-eagle3-registry.js.map +1 -0
- package/dist/speculative/mlx-mtp-registry.d.ts +31 -0
- package/dist/speculative/mlx-mtp-registry.js +139 -0
- package/dist/speculative/mlx-mtp-registry.js.map +1 -0
- package/dist/speculative/transcription-registry.d.ts +72 -0
- package/dist/speculative/transcription-registry.js +94 -0
- package/dist/speculative/transcription-registry.js.map +1 -0
- package/dist/telemetry/config.d.ts +38 -0
- package/dist/telemetry/config.js +44 -0
- package/dist/telemetry/config.js.map +1 -0
- package/dist/telemetry/consent.d.ts +21 -0
- package/dist/telemetry/consent.js +35 -0
- package/dist/telemetry/consent.js.map +1 -0
- package/dist/telemetry/core-reporter.d.ts +47 -0
- package/dist/telemetry/core-reporter.js +72 -0
- package/dist/telemetry/core-reporter.js.map +1 -0
- package/dist/telemetry/daemon.d.ts +40 -0
- package/dist/telemetry/daemon.js +67 -0
- package/dist/telemetry/daemon.js.map +1 -0
- package/dist/telemetry/dsn.d.ts +15 -0
- package/dist/telemetry/dsn.js +32 -0
- package/dist/telemetry/dsn.js.map +1 -0
- package/dist/telemetry/envelope.d.ts +97 -0
- package/dist/telemetry/envelope.js +95 -0
- package/dist/telemetry/envelope.js.map +1 -0
- package/dist/telemetry/index.d.ts +18 -0
- package/dist/telemetry/index.js +19 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/policy.d.ts +39 -0
- package/dist/telemetry/policy.js +142 -0
- package/dist/telemetry/policy.js.map +1 -0
- package/dist/telemetry/reporter.d.ts +80 -0
- package/dist/telemetry/reporter.js +0 -0
- package/dist/telemetry/reporter.js.map +1 -0
- package/dist/telemetry/reports.d.ts +68 -0
- package/dist/telemetry/reports.js +212 -0
- package/dist/telemetry/reports.js.map +1 -0
- package/dist/telemetry/scrub.d.ts +19 -0
- package/dist/telemetry/scrub.js +75 -0
- package/dist/telemetry/scrub.js.map +1 -0
- package/dist/telemetry/stack.d.ts +21 -0
- package/dist/telemetry/stack.js +68 -0
- package/dist/telemetry/stack.js.map +1 -0
- package/dist/telemetry/store.d.ts +17 -0
- package/dist/telemetry/store.js +51 -0
- package/dist/telemetry/store.js.map +1 -0
- package/dist/telemetry/subscribe.d.ts +13 -0
- package/dist/telemetry/subscribe.js +19 -0
- package/dist/telemetry/subscribe.js.map +1 -0
- package/dist/telemetry/types.d.ts +40 -0
- package/dist/telemetry/types.js +2 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/util/index.d.ts +5 -0
- package/dist/util/index.js +6 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/rust-number.d.ts +27 -0
- package/dist/util/rust-number.js +101 -0
- package/dist/util/rust-number.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +86 -0
- package/src/settings/schema/foundation-models.json +1 -0
- package/src/settings/schema/llamacpp-upstream.json +489 -0
- package/src/settings/schema/llamacpp.json +475 -0
- package/src/settings/schema/mlx.json +136 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `model.yml` codec. The app writes it with serde_yaml (`write_yaml`) and reads it back with
|
|
3
|
+
* `read_yaml`; the shape is `ModelYml` in `contracts/model-yml.ts`. Unknown keys are preserved on
|
|
4
|
+
* round-trip (PLAN.md §5.1); known keys are written in the app's order, `undefined` ones omitted.
|
|
5
|
+
*/
|
|
6
|
+
import { parse, stringify } from 'yaml';
|
|
7
|
+
import { MODEL_YML_KEY_ORDER } from '../contracts/index.js';
|
|
8
|
+
export class ModelYmlError extends Error {
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'ModelYmlError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const KNOWN = new Set(MODEL_YML_KEY_ORDER);
|
|
15
|
+
export function parseModelYml(text) {
|
|
16
|
+
let raw;
|
|
17
|
+
try {
|
|
18
|
+
raw = parse(text);
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
throw new ModelYmlError(`invalid YAML: ${e.message}`);
|
|
22
|
+
}
|
|
23
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
|
|
24
|
+
throw new ModelYmlError('model.yml is not a mapping');
|
|
25
|
+
const doc = raw;
|
|
26
|
+
if (typeof doc['model_path'] !== 'string')
|
|
27
|
+
throw new ModelYmlError('model.yml: missing model_path');
|
|
28
|
+
const name = typeof doc['name'] === 'string' ? doc['name'] : undefined;
|
|
29
|
+
return {
|
|
30
|
+
...doc,
|
|
31
|
+
model_path: doc['model_path'],
|
|
32
|
+
name: name ?? '',
|
|
33
|
+
size_bytes: numberOr(doc['size_bytes'], 0),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function numberOr(v, fallback) {
|
|
37
|
+
return typeof v === 'number' && Number.isFinite(v) ? v : fallback;
|
|
38
|
+
}
|
|
39
|
+
/** Known keys first in the app's order, then unknown keys in their original order. */
|
|
40
|
+
export function serializeModelYml(doc) {
|
|
41
|
+
const ordered = {};
|
|
42
|
+
for (const key of MODEL_YML_KEY_ORDER) {
|
|
43
|
+
const v = doc[key];
|
|
44
|
+
if (v !== undefined)
|
|
45
|
+
ordered[key] = v;
|
|
46
|
+
}
|
|
47
|
+
for (const [key, v] of Object.entries(doc)) {
|
|
48
|
+
if (!KNOWN.has(key) && v !== undefined)
|
|
49
|
+
ordered[key] = v;
|
|
50
|
+
}
|
|
51
|
+
return stringify(ordered, { lineWidth: 0 });
|
|
52
|
+
}
|
|
53
|
+
/** Rename the model id inside the path fields, as `update()` does when a model is renamed. */
|
|
54
|
+
export function renameModelPaths(doc, modelsRootPrefix, oldId, newId) {
|
|
55
|
+
const from = `${modelsRootPrefix}/${oldId}`;
|
|
56
|
+
const to = `${modelsRootPrefix}/${newId}`;
|
|
57
|
+
const swap = (p) => (p === undefined ? undefined : p.replace(from, to));
|
|
58
|
+
const out = { ...doc, model_path: swap(doc.model_path) };
|
|
59
|
+
if (doc.mmproj_path !== undefined)
|
|
60
|
+
out.mmproj_path = swap(doc.mmproj_path);
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=model-yml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-yml.js","sourceRoot":"","sources":["../../src/models/model-yml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The installed-model registry: the depth-first scan of `<data>/llamacpp/models` that both the app's
|
|
3
|
+
* extension (`list()`, index.ts:3438) and the Rust CLI (`list_chat_models_in`, cli/mod.rs:72) do, so
|
|
4
|
+
* all three see the same ids for the same folder.
|
|
5
|
+
*
|
|
6
|
+
* Rules that are contract, not implementation detail: a directory holding `model.yml` *is* a model
|
|
7
|
+
* and is never descended into; the id is its path relative to the models root with `\` rewritten to
|
|
8
|
+
* `/`; ids sort ascending; an unreadable or invalid `model.yml` is skipped, not fatal — one broken
|
|
9
|
+
* model must not hide the rest of the list.
|
|
10
|
+
*/
|
|
11
|
+
import type { LocalProviderId } from '../contracts/index.js';
|
|
12
|
+
import type { DataLayout } from '../config/index.js';
|
|
13
|
+
import type { ModelYmlDocument, ModelYmlInput } from './model-yml.js';
|
|
14
|
+
export interface ModelEntry {
|
|
15
|
+
id: string;
|
|
16
|
+
/** Directory holding `model.yml`. */
|
|
17
|
+
dir: string;
|
|
18
|
+
yml: ModelYmlDocument;
|
|
19
|
+
}
|
|
20
|
+
export interface ResolvedModelPaths {
|
|
21
|
+
modelPath: string;
|
|
22
|
+
mmprojPath: string | undefined;
|
|
23
|
+
}
|
|
24
|
+
/** Scan errors are collected rather than thrown: `models list` must still print the good entries. */
|
|
25
|
+
export interface ScanResult {
|
|
26
|
+
entries: ModelEntry[];
|
|
27
|
+
skipped: Array<{
|
|
28
|
+
dir: string;
|
|
29
|
+
error: string;
|
|
30
|
+
}>;
|
|
31
|
+
}
|
|
32
|
+
export declare class ModelRegistry {
|
|
33
|
+
private readonly layout;
|
|
34
|
+
private readonly provider;
|
|
35
|
+
constructor(layout: DataLayout, provider?: LocalProviderId);
|
|
36
|
+
get modelsDir(): string;
|
|
37
|
+
scan(): Promise<ScanResult>;
|
|
38
|
+
list(): Promise<ModelEntry[]>;
|
|
39
|
+
/** What `models list` prints: embedding models cannot serve `/v1/chat/completions`. */
|
|
40
|
+
listChatModels(): Promise<ModelEntry[]>;
|
|
41
|
+
find(id: string): Promise<ModelEntry | undefined>;
|
|
42
|
+
/** The CLI's wording, so a missing model reads the same from the core and from `jan-cli`. */
|
|
43
|
+
get(id: string): Promise<ModelEntry>;
|
|
44
|
+
read(id: string): Promise<ModelYmlDocument>;
|
|
45
|
+
/** Write `model.yml`, preserving unknown keys the caller carried over. */
|
|
46
|
+
write(id: string, doc: ModelYmlInput): Promise<void>;
|
|
47
|
+
/** Remove the model directory. Refuses an id that escapes the models root. */
|
|
48
|
+
remove(id: string): Promise<void>;
|
|
49
|
+
/** Absolute GGUF and mmproj paths (`resolve_model_by_id_in`: absolute stays, relative joins `<data>`). */
|
|
50
|
+
resolvePaths(yml: ModelYmlDocument): ResolvedModelPaths;
|
|
51
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The installed-model registry: the depth-first scan of `<data>/llamacpp/models` that both the app's
|
|
3
|
+
* extension (`list()`, index.ts:3438) and the Rust CLI (`list_chat_models_in`, cli/mod.rs:72) do, so
|
|
4
|
+
* all three see the same ids for the same folder.
|
|
5
|
+
*
|
|
6
|
+
* Rules that are contract, not implementation detail: a directory holding `model.yml` *is* a model
|
|
7
|
+
* and is never descended into; the id is its path relative to the models root with `\` rewritten to
|
|
8
|
+
* `/`; ids sort ascending; an unreadable or invalid `model.yml` is skipped, not fatal — one broken
|
|
9
|
+
* model must not hide the rest of the list.
|
|
10
|
+
*/
|
|
11
|
+
import { mkdir, readdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
12
|
+
import { isAbsolute, join, relative, sep } from 'node:path';
|
|
13
|
+
import { AtomicCoreError } from '../contracts/index.js';
|
|
14
|
+
import { MODEL_YML, modelDirFromId, modelIdFromDir, resolveDataRelative } from '../config/index.js';
|
|
15
|
+
import { parseModelYml, serializeModelYml } from './model-yml.js';
|
|
16
|
+
export class ModelRegistry {
|
|
17
|
+
layout;
|
|
18
|
+
provider;
|
|
19
|
+
constructor(layout, provider = 'llamacpp-upstream') {
|
|
20
|
+
this.layout = layout;
|
|
21
|
+
this.provider = provider;
|
|
22
|
+
}
|
|
23
|
+
get modelsDir() {
|
|
24
|
+
return this.layout.provider(this.provider).modelsDir;
|
|
25
|
+
}
|
|
26
|
+
async scan() {
|
|
27
|
+
const root = this.modelsDir;
|
|
28
|
+
const result = { entries: [], skipped: [] };
|
|
29
|
+
const stack = [root];
|
|
30
|
+
while (stack.length) {
|
|
31
|
+
const dir = stack.pop();
|
|
32
|
+
const ymlPath = join(dir, MODEL_YML);
|
|
33
|
+
const text = await readFile(ymlPath, 'utf8').catch(() => undefined);
|
|
34
|
+
if (text !== undefined) {
|
|
35
|
+
try {
|
|
36
|
+
result.entries.push({ id: modelIdFromDir(root, dir), dir, yml: parseModelYml(text) });
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
result.skipped.push({ dir, error: e.message });
|
|
40
|
+
}
|
|
41
|
+
continue; // a model directory is a leaf, whether or not it parsed
|
|
42
|
+
}
|
|
43
|
+
const children = await readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
44
|
+
for (const child of children)
|
|
45
|
+
if (child.isDirectory())
|
|
46
|
+
stack.push(join(dir, child.name));
|
|
47
|
+
}
|
|
48
|
+
result.entries.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
async list() {
|
|
52
|
+
return (await this.scan()).entries;
|
|
53
|
+
}
|
|
54
|
+
/** What `models list` prints: embedding models cannot serve `/v1/chat/completions`. */
|
|
55
|
+
async listChatModels() {
|
|
56
|
+
return (await this.list()).filter((e) => e.yml.embedding !== true);
|
|
57
|
+
}
|
|
58
|
+
async find(id) {
|
|
59
|
+
const dir = modelDirFromId(this.modelsDir, id);
|
|
60
|
+
const text = await readFile(join(dir, MODEL_YML), 'utf8').catch(() => undefined);
|
|
61
|
+
if (text === undefined)
|
|
62
|
+
return undefined;
|
|
63
|
+
return { id, dir, yml: parseModelYml(text) };
|
|
64
|
+
}
|
|
65
|
+
/** The CLI's wording, so a missing model reads the same from the core and from `jan-cli`. */
|
|
66
|
+
async get(id) {
|
|
67
|
+
const entry = await this.find(id);
|
|
68
|
+
if (!entry)
|
|
69
|
+
throw new AtomicCoreError('MODEL_NOT_FOUND', `Model '${id}' is not installed. Run \`atomic-chat-cli models list\` to see available models.`, join(modelDirFromId(this.modelsDir, id), MODEL_YML));
|
|
70
|
+
return entry;
|
|
71
|
+
}
|
|
72
|
+
async read(id) {
|
|
73
|
+
return (await this.get(id)).yml;
|
|
74
|
+
}
|
|
75
|
+
/** Write `model.yml`, preserving unknown keys the caller carried over. */
|
|
76
|
+
async write(id, doc) {
|
|
77
|
+
const dir = modelDirFromId(this.modelsDir, id);
|
|
78
|
+
await mkdir(dir, { recursive: true });
|
|
79
|
+
await writeFile(join(dir, MODEL_YML), serializeModelYml(doc), 'utf8');
|
|
80
|
+
}
|
|
81
|
+
/** Remove the model directory. Refuses an id that escapes the models root. */
|
|
82
|
+
async remove(id) {
|
|
83
|
+
const dir = modelDirFromId(this.modelsDir, id);
|
|
84
|
+
if (!isInside(this.modelsDir, dir))
|
|
85
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', `Refusing to delete outside the models folder`, dir);
|
|
86
|
+
await rm(dir, { recursive: true, force: true });
|
|
87
|
+
}
|
|
88
|
+
/** Absolute GGUF and mmproj paths (`resolve_model_by_id_in`: absolute stays, relative joins `<data>`). */
|
|
89
|
+
resolvePaths(yml) {
|
|
90
|
+
const resolve = (p) => resolveDataRelative(this.layout.root, p, isAbsolute);
|
|
91
|
+
return {
|
|
92
|
+
modelPath: resolve(yml.model_path),
|
|
93
|
+
mmprojPath: yml.mmproj_path ? resolve(yml.mmproj_path) : undefined,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/** `<root>/<something>`, never `<root>` itself and never an id that climbs out with `..`. */
|
|
98
|
+
function isInside(root, candidate) {
|
|
99
|
+
const rest = relative(root, candidate);
|
|
100
|
+
return rest.length > 0 && !rest.startsWith('..') && !rest.split(sep).includes('..');
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/models/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sharded GGUF sets (`-00001-of-000NN`). llama.cpp accepts only the first shard on `-m`.
|
|
3
|
+
* Verbatim port of the shard helpers in `extensions/llamacpp-upstream-extension/src/util.ts`.
|
|
4
|
+
*
|
|
5
|
+
* The marker appears either in the file name (`Model-00002-of-00003.gguf`) or in the directory
|
|
6
|
+
* name this app stores a downloaded shard under (`.../Model-00002-of-00003/model.gguf`).
|
|
7
|
+
*/
|
|
8
|
+
export interface GgufShardRef {
|
|
9
|
+
/** 1-based position in the set. */
|
|
10
|
+
index: number;
|
|
11
|
+
total: number;
|
|
12
|
+
}
|
|
13
|
+
/** Shard position of `path`, or `null` for a standalone model. */
|
|
14
|
+
export declare function parseGgufShard(path: string): GgufShardRef | null;
|
|
15
|
+
/** The same path with its marker pointed at `index`; unchanged without a marker. */
|
|
16
|
+
export declare function ggufShardPath(path: string, index: number): string;
|
|
17
|
+
/** Every path of the set, first shard first; a standalone model yields itself. */
|
|
18
|
+
export declare function ggufShardSetPaths(path: string): string[];
|
|
19
|
+
/** What llama.cpp must be handed: the first shard, or the path itself. */
|
|
20
|
+
export declare function firstGgufShardPath(path: string): string;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sharded GGUF sets (`-00001-of-000NN`). llama.cpp accepts only the first shard on `-m`.
|
|
3
|
+
* Verbatim port of the shard helpers in `extensions/llamacpp-upstream-extension/src/util.ts`.
|
|
4
|
+
*
|
|
5
|
+
* The marker appears either in the file name (`Model-00002-of-00003.gguf`) or in the directory
|
|
6
|
+
* name this app stores a downloaded shard under (`.../Model-00002-of-00003/model.gguf`).
|
|
7
|
+
*/
|
|
8
|
+
const GGUF_SHARD_RE = /-(\d{5})-of-(\d{5})(?=\.gguf$|\/|$)/gi;
|
|
9
|
+
function matchGgufShard(path) {
|
|
10
|
+
GGUF_SHARD_RE.lastIndex = 0;
|
|
11
|
+
let last = null;
|
|
12
|
+
for (let m = GGUF_SHARD_RE.exec(path); m; m = GGUF_SHARD_RE.exec(path))
|
|
13
|
+
last = m;
|
|
14
|
+
if (!last)
|
|
15
|
+
return null;
|
|
16
|
+
const index = Number(last[1]);
|
|
17
|
+
const total = Number(last[2]);
|
|
18
|
+
if (!index || !total || index > total)
|
|
19
|
+
return null;
|
|
20
|
+
return { index, total, start: last.index, end: last.index + last[0].length };
|
|
21
|
+
}
|
|
22
|
+
/** Shard position of `path`, or `null` for a standalone model. */
|
|
23
|
+
export function parseGgufShard(path) {
|
|
24
|
+
const m = matchGgufShard(path);
|
|
25
|
+
return m ? { index: m.index, total: m.total } : null;
|
|
26
|
+
}
|
|
27
|
+
/** The same path with its marker pointed at `index`; unchanged without a marker. */
|
|
28
|
+
export function ggufShardPath(path, index) {
|
|
29
|
+
const m = matchGgufShard(path);
|
|
30
|
+
if (!m)
|
|
31
|
+
return path;
|
|
32
|
+
const marker = `-${String(index).padStart(5, '0')}-of-${String(m.total).padStart(5, '0')}`;
|
|
33
|
+
return path.slice(0, m.start) + marker + path.slice(m.end);
|
|
34
|
+
}
|
|
35
|
+
/** Every path of the set, first shard first; a standalone model yields itself. */
|
|
36
|
+
export function ggufShardSetPaths(path) {
|
|
37
|
+
const m = matchGgufShard(path);
|
|
38
|
+
if (!m)
|
|
39
|
+
return [path];
|
|
40
|
+
return Array.from({ length: m.total }, (_, i) => ggufShardPath(path, i + 1));
|
|
41
|
+
}
|
|
42
|
+
/** What llama.cpp must be handed: the first shard, or the path itself. */
|
|
43
|
+
export function firstGgufShardPath(path) {
|
|
44
|
+
return ggufShardPath(path, 1);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=shards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shards.js","sourceRoot":"","sources":["../../src/models/shards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,aAAa,GAAG,uCAAuC,CAAA;AAQ7D,SAAS,cAAc,CAAC,IAAY;IAClC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAA;IAC3B,IAAI,IAAI,GAA2B,IAAI,CAAA;IACvC,KAAK,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,CAAC,CAAA;IAChF,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,KAAK;QAAE,OAAO,IAAI,CAAA;IAClD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AAC9E,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IAC9B,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACtD,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IACvD,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IAC1F,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAC5D,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAC/B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How `cloudflared` is launched: which binary, which arguments, which environment. Pure.
|
|
3
|
+
*
|
|
4
|
+
* `cloudflared tunnel --url <origin>` opens a "quick tunnel": no Cloudflare account, no domain, and
|
|
5
|
+
* a fresh `https://<words>.trycloudflare.com` name on every start.
|
|
6
|
+
*
|
|
7
|
+
* Ported from: src-tauri/src/core/server/remote_access/process.rs (image-generation line, `767ff6350`).
|
|
8
|
+
*/
|
|
9
|
+
/** The core does not download the tunnel binary; this variable names one for dev and CLI use. */
|
|
10
|
+
export declare const CLOUDFLARED_BIN_ENV = "ATOMIC_CLOUDFLARED_BIN";
|
|
11
|
+
export declare function cloudflaredFileName(platform: NodeJS.Platform): string;
|
|
12
|
+
/**
|
|
13
|
+
* The command line of one quick tunnel.
|
|
14
|
+
*
|
|
15
|
+
* `emptyConfig` switches off the lookup of `~/.cloudflared/config.yml`: a user who also runs a
|
|
16
|
+
* *named* tunnel has ingress rules there, none of which match a quick tunnel's hostname, so
|
|
17
|
+
* cloudflared itself would answer every request through ours with 404. `--no-autoupdate` because the
|
|
18
|
+
* binary ships signed inside the app bundle, and left to itself cloudflared replaces its own file.
|
|
19
|
+
*/
|
|
20
|
+
export declare function cloudflaredArgs(origin: string, protocol?: string, emptyConfig?: string): string[];
|
|
21
|
+
/**
|
|
22
|
+
* The child's environment: the caller's, minus every `TUNNEL_*` variable. cloudflared reads those as
|
|
23
|
+
* flags (`TUNNEL_TOKEN`, `TUNNEL_TRANSPORT_PROTOCOL`, `TUNNEL_URL`…); a user who also runs their own
|
|
24
|
+
* tunnels may have them exported, and they must not steer ours.
|
|
25
|
+
*/
|
|
26
|
+
export declare function scrubTunnelEnv(env: NodeJS.ProcessEnv): Record<string, string>;
|
|
27
|
+
export interface CloudflaredLocation {
|
|
28
|
+
/** `--cloudflared-bin`: the app names the sidecar it bundles next to its own executable. */
|
|
29
|
+
explicit?: string | undefined;
|
|
30
|
+
env?: NodeJS.ProcessEnv | undefined;
|
|
31
|
+
/** The app's `resources/bin`, where the other bundled servers live. */
|
|
32
|
+
resourcesDir?: string | undefined;
|
|
33
|
+
platform: NodeJS.Platform;
|
|
34
|
+
exists: (path: string) => boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The tunnel binary, or `undefined` when this installation does not carry one — which the status
|
|
38
|
+
* reports as `cloudflared_unavailable`. An explicit path that does not exist is not silently
|
|
39
|
+
* replaced by another candidate: the caller said where it is.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveCloudflaredBinary(location: CloudflaredLocation): string | undefined;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How `cloudflared` is launched: which binary, which arguments, which environment. Pure.
|
|
3
|
+
*
|
|
4
|
+
* `cloudflared tunnel --url <origin>` opens a "quick tunnel": no Cloudflare account, no domain, and
|
|
5
|
+
* a fresh `https://<words>.trycloudflare.com` name on every start.
|
|
6
|
+
*
|
|
7
|
+
* Ported from: src-tauri/src/core/server/remote_access/process.rs (image-generation line, `767ff6350`).
|
|
8
|
+
*/
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
/** The core does not download the tunnel binary; this variable names one for dev and CLI use. */
|
|
11
|
+
export const CLOUDFLARED_BIN_ENV = 'ATOMIC_CLOUDFLARED_BIN';
|
|
12
|
+
export function cloudflaredFileName(platform) {
|
|
13
|
+
return platform === 'win32' ? 'cloudflared.exe' : 'cloudflared';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The command line of one quick tunnel.
|
|
17
|
+
*
|
|
18
|
+
* `emptyConfig` switches off the lookup of `~/.cloudflared/config.yml`: a user who also runs a
|
|
19
|
+
* *named* tunnel has ingress rules there, none of which match a quick tunnel's hostname, so
|
|
20
|
+
* cloudflared itself would answer every request through ours with 404. `--no-autoupdate` because the
|
|
21
|
+
* binary ships signed inside the app bundle, and left to itself cloudflared replaces its own file.
|
|
22
|
+
*/
|
|
23
|
+
export function cloudflaredArgs(origin, protocol, emptyConfig) {
|
|
24
|
+
const args = ['tunnel'];
|
|
25
|
+
if (emptyConfig !== undefined)
|
|
26
|
+
args.push('--config', emptyConfig);
|
|
27
|
+
args.push('--url', origin, '--no-autoupdate');
|
|
28
|
+
if (protocol !== undefined)
|
|
29
|
+
args.push('--protocol', protocol);
|
|
30
|
+
return args;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The child's environment: the caller's, minus every `TUNNEL_*` variable. cloudflared reads those as
|
|
34
|
+
* flags (`TUNNEL_TOKEN`, `TUNNEL_TRANSPORT_PROTOCOL`, `TUNNEL_URL`…); a user who also runs their own
|
|
35
|
+
* tunnels may have them exported, and they must not steer ours.
|
|
36
|
+
*/
|
|
37
|
+
export function scrubTunnelEnv(env) {
|
|
38
|
+
const scrubbed = {};
|
|
39
|
+
for (const [key, value] of Object.entries(env))
|
|
40
|
+
if (value !== undefined && !key.toUpperCase().startsWith('TUNNEL_'))
|
|
41
|
+
scrubbed[key] = value;
|
|
42
|
+
return scrubbed;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The tunnel binary, or `undefined` when this installation does not carry one — which the status
|
|
46
|
+
* reports as `cloudflared_unavailable`. An explicit path that does not exist is not silently
|
|
47
|
+
* replaced by another candidate: the caller said where it is.
|
|
48
|
+
*/
|
|
49
|
+
export function resolveCloudflaredBinary(location) {
|
|
50
|
+
const fromEnv = location.env?.[CLOUDFLARED_BIN_ENV]?.trim();
|
|
51
|
+
const named = location.explicit?.trim() || fromEnv;
|
|
52
|
+
if (named)
|
|
53
|
+
return location.exists(named) ? named : undefined;
|
|
54
|
+
if (!location.resourcesDir)
|
|
55
|
+
return undefined;
|
|
56
|
+
const bundled = join(location.resourcesDir, cloudflaredFileName(location.platform));
|
|
57
|
+
return location.exists(bundled) ? bundled : undefined;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=cloudflared-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflared-args.js","sourceRoot":"","sources":["../../src/remote-access/cloudflared-args.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,iGAAiG;AACjG,MAAM,CAAC,MAAM,mBAAmB,GAAG,wBAAwB,CAAA;AAE3D,MAAM,UAAU,mBAAmB,CAAC,QAAyB;IAC3D,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAA;AACjE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,QAAiB,EAAE,WAAoB;IACrF,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvB,IAAI,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;IACjE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC7C,IAAI,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAC7D,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAsB;IACnD,MAAM,QAAQ,GAA2B,EAAE,CAAA;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QAC5C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAC5F,OAAO,QAAQ,CAAA;AACjB,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAA6B;IACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAA;IAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,OAAO,CAAA;IAClD,IAAI,KAAK;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5D,IAAI,CAAC,QAAQ,CAAC,YAAY;QAAE,OAAO,SAAS,CAAA;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnF,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AACvD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What is read out of `cloudflared`'s output. Pure.
|
|
3
|
+
*
|
|
4
|
+
* It prints the tunnel's name, and later a "Registered tunnel connection" line once an edge
|
|
5
|
+
* connection is actually up. Until that second line the name answers with Cloudflare's error 1033,
|
|
6
|
+
* so a URL alone is never treated as ready.
|
|
7
|
+
*
|
|
8
|
+
* Ported from: src-tauri/src/core/server/remote_access/process.rs (`OutputParser`), `767ff6350`.
|
|
9
|
+
*/
|
|
10
|
+
export interface ParsedOutput {
|
|
11
|
+
url: string | undefined;
|
|
12
|
+
registered: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** A URL that can actually serve: minted *and* registered. */
|
|
15
|
+
export declare function readyUrl(parsed: ParsedOutput): string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Accumulates what the output has established. First URL wins: cloudflared prints it once, and a
|
|
18
|
+
* later line must not swap the advertised address.
|
|
19
|
+
*/
|
|
20
|
+
export declare class OutputParser {
|
|
21
|
+
private url;
|
|
22
|
+
private registered;
|
|
23
|
+
/** Returns `true` when this line changed what is known. */
|
|
24
|
+
feedLine(line: string): boolean;
|
|
25
|
+
snapshot(): ParsedOutput;
|
|
26
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What is read out of `cloudflared`'s output. Pure.
|
|
3
|
+
*
|
|
4
|
+
* It prints the tunnel's name, and later a "Registered tunnel connection" line once an edge
|
|
5
|
+
* connection is actually up. Until that second line the name answers with Cloudflare's error 1033,
|
|
6
|
+
* so a URL alone is never treated as ready.
|
|
7
|
+
*
|
|
8
|
+
* Ported from: src-tauri/src/core/server/remote_access/process.rs (`OutputParser`), `767ff6350`.
|
|
9
|
+
*/
|
|
10
|
+
/** Printed once an edge connection is registered and the URL can serve. */
|
|
11
|
+
const REGISTERED_MARKER = 'Registered tunnel connection';
|
|
12
|
+
/**
|
|
13
|
+
* cloudflared mentions its own control host in failure lines (`https://api.trycloudflare.com/tunnel`);
|
|
14
|
+
* that is never a tunnel.
|
|
15
|
+
*/
|
|
16
|
+
const API_HOST = 'api.trycloudflare.com';
|
|
17
|
+
const TUNNEL_URL = /https:\/\/([A-Za-z0-9-]+\.trycloudflare\.com)/g;
|
|
18
|
+
/** A URL that can actually serve: minted *and* registered. */
|
|
19
|
+
export function readyUrl(parsed) {
|
|
20
|
+
return parsed.registered ? parsed.url : undefined;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Accumulates what the output has established. First URL wins: cloudflared prints it once, and a
|
|
24
|
+
* later line must not swap the advertised address.
|
|
25
|
+
*/
|
|
26
|
+
export class OutputParser {
|
|
27
|
+
url;
|
|
28
|
+
registered = false;
|
|
29
|
+
/** Returns `true` when this line changed what is known. */
|
|
30
|
+
feedLine(line) {
|
|
31
|
+
let changed = false;
|
|
32
|
+
if (this.url === undefined) {
|
|
33
|
+
for (const match of line.matchAll(TUNNEL_URL)) {
|
|
34
|
+
if (match[1].toLowerCase() === API_HOST)
|
|
35
|
+
continue;
|
|
36
|
+
this.url = match[0];
|
|
37
|
+
changed = true;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!this.registered && line.includes(REGISTERED_MARKER)) {
|
|
42
|
+
this.registered = true;
|
|
43
|
+
changed = true;
|
|
44
|
+
}
|
|
45
|
+
return changed;
|
|
46
|
+
}
|
|
47
|
+
snapshot() {
|
|
48
|
+
return { url: this.url, registered: this.registered };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=cloudflared-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflared-output.js","sourceRoot":"","sources":["../../src/remote-access/cloudflared-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,2EAA2E;AAC3E,MAAM,iBAAiB,GAAG,8BAA8B,CAAA;AAExD;;;GAGG;AACH,MAAM,QAAQ,GAAG,uBAAuB,CAAA;AAExC,MAAM,UAAU,GAAG,gDAAgD,CAAA;AAOnE,8DAA8D;AAC9D,MAAM,UAAU,QAAQ,CAAC,MAAoB;IAC3C,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,GAAG,CAAoB;IACvB,UAAU,GAAG,KAAK,CAAA;IAE1B,2DAA2D;IAC3D,QAAQ,CAAC,IAAY;QACnB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9C,IAAK,KAAK,CAAC,CAAC,CAAY,CAAC,WAAW,EAAE,KAAK,QAAQ;oBAAE,SAAQ;gBAC7D,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;gBACnB,OAAO,GAAG,IAAI,CAAA;gBACd,MAAK;YACP,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;YACtB,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAA;IACvD,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reaching the Local API Server from outside this machine: the addresses a LAN device can dial, and
|
|
3
|
+
* (stage 7d) the Cloudflare quick tunnel. The Host gate that lets those callers in lives with the
|
|
4
|
+
* listener, in `server/public/dynamic-hosts.ts`.
|
|
5
|
+
*/
|
|
6
|
+
export * from './lan.js';
|
|
7
|
+
export * from './lan-probe.js';
|
|
8
|
+
export * from './status.js';
|
|
9
|
+
export * from './cloudflared-args.js';
|
|
10
|
+
export * from './cloudflared-output.js';
|
|
11
|
+
export * from './process.js';
|
|
12
|
+
export * from './probe.js';
|
|
13
|
+
export * from './journal.js';
|
|
14
|
+
export * from './spawner.js';
|
|
15
|
+
export * from './manager.js';
|
|
16
|
+
export * from './wiring.js';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reaching the Local API Server from outside this machine: the addresses a LAN device can dial, and
|
|
3
|
+
* (stage 7d) the Cloudflare quick tunnel. The Host gate that lets those callers in lives with the
|
|
4
|
+
* listener, in `server/public/dynamic-hosts.ts`.
|
|
5
|
+
*/
|
|
6
|
+
export * from './lan.js';
|
|
7
|
+
export * from './lan-probe.js';
|
|
8
|
+
export * from './status.js';
|
|
9
|
+
export * from './cloudflared-args.js';
|
|
10
|
+
export * from './cloudflared-output.js';
|
|
11
|
+
export * from './process.js';
|
|
12
|
+
export * from './probe.js';
|
|
13
|
+
export * from './journal.js';
|
|
14
|
+
export * from './spawner.js';
|
|
15
|
+
export * from './manager.js';
|
|
16
|
+
export * from './wiring.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/remote-access/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crash recovery for the tunnel process.
|
|
3
|
+
*
|
|
4
|
+
* A normal shutdown ends cloudflared, but a crash, an OOM kill or a force quit runs none of that. An
|
|
5
|
+
* orphaned tunnel is worse than an orphaned model backend: it keeps a *public* URL pointed at a local
|
|
6
|
+
* port that is now dead — or that the next process to bind it inherits.
|
|
7
|
+
*
|
|
8
|
+
* The process journal of the model backends does not fit: a tunnel has no provider, model or port,
|
|
9
|
+
* and people who want this feature often run a `cloudflared` of their own that must never be
|
|
10
|
+
* touched. So the tunnel gets its own record, and is ended only when two independent checks agree:
|
|
11
|
+
* the recorded start identity (the PID-reuse guard) and the process name.
|
|
12
|
+
*
|
|
13
|
+
* Ported from: src-tauri/src/core/server/remote_access/journal.rs (image-generation line, `767ff6350`).
|
|
14
|
+
*/
|
|
15
|
+
export declare const TUNNEL_JOURNAL_FILE = "remote-access-tunnel.json";
|
|
16
|
+
export interface TunnelJournalEntry {
|
|
17
|
+
pid: number;
|
|
18
|
+
/** `processStartId` of the child, once the probe has answered; `null` until then. */
|
|
19
|
+
process_start_id: string | null;
|
|
20
|
+
/** Wall clock at spawn, in seconds: the fallback identity while the probe has not answered. */
|
|
21
|
+
started_at_secs: number;
|
|
22
|
+
instance_id: string;
|
|
23
|
+
exe: string;
|
|
24
|
+
}
|
|
25
|
+
export interface TunnelJournalDeps {
|
|
26
|
+
startId?: (pid: number) => Promise<string | undefined>;
|
|
27
|
+
now?: () => number;
|
|
28
|
+
log?: (message: string) => void;
|
|
29
|
+
}
|
|
30
|
+
export interface ReapDeps {
|
|
31
|
+
selfPid?: number;
|
|
32
|
+
alive?: (pid: number) => boolean;
|
|
33
|
+
name?: (pid: number) => Promise<string | undefined>;
|
|
34
|
+
verifyIdentity?: (pid: number, expected: string) => Promise<'match' | 'mismatch' | 'dead' | 'unknown'>;
|
|
35
|
+
startEpoch?: (pid: number) => Promise<string | undefined>;
|
|
36
|
+
kill?: (pid: number) => void;
|
|
37
|
+
log?: (message: string) => void;
|
|
38
|
+
}
|
|
39
|
+
/** What startup did about the tunnel a previous owner may have left behind. */
|
|
40
|
+
export type ReapOutcome = 'none' | 'gone' | 'spared' | 'killed';
|
|
41
|
+
export declare function isTunnelName(name: string | undefined): boolean;
|
|
42
|
+
/** Records the live tunnel. Best effort: a journal that cannot be written costs crash recovery, never the tunnel. */
|
|
43
|
+
export declare class TunnelJournal {
|
|
44
|
+
private readonly path;
|
|
45
|
+
private readonly instanceId;
|
|
46
|
+
private readonly deps;
|
|
47
|
+
private writes;
|
|
48
|
+
constructor(path: string, instanceId: string, deps?: TunnelJournalDeps);
|
|
49
|
+
/**
|
|
50
|
+
* Written at once with what is known, then again with the start identity: the identity probe takes
|
|
51
|
+
* about a second on Windows, and a crash inside that second must still leave a trail.
|
|
52
|
+
*/
|
|
53
|
+
record(pid: number, exe: string): Promise<void>;
|
|
54
|
+
clear(): Promise<void>;
|
|
55
|
+
private current;
|
|
56
|
+
private write;
|
|
57
|
+
private enqueue;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Ends the tunnel a previous, abnormally ended owner left behind. Called once at startup, before the
|
|
61
|
+
* endpoint is published and before anything could have started a new one.
|
|
62
|
+
*/
|
|
63
|
+
export declare function reapTunnelOrphan(path: string, deps?: ReapDeps): Promise<ReapOutcome>;
|