@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,140 @@
|
|
|
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
|
+
import { readFile, rename, rm, writeFile } from 'node:fs/promises';
|
|
16
|
+
import { isProcessAlive, processName, processStartEpoch, processStartId, verifyProcessIdentity, } from '../lock/index.js';
|
|
17
|
+
export const TUNNEL_JOURNAL_FILE = 'remote-access-tunnel.json';
|
|
18
|
+
const PROCESS_NAME_PREFIX = 'cloudflared';
|
|
19
|
+
/** The kernel's start time and our clock reading a moment after `spawn` differ by a second or two at most. */
|
|
20
|
+
const START_TIME_TOLERANCE_SECS = 5;
|
|
21
|
+
export function isTunnelName(name) {
|
|
22
|
+
return name !== undefined && name.trim().toLowerCase().startsWith(PROCESS_NAME_PREFIX);
|
|
23
|
+
}
|
|
24
|
+
/** Records the live tunnel. Best effort: a journal that cannot be written costs crash recovery, never the tunnel. */
|
|
25
|
+
export class TunnelJournal {
|
|
26
|
+
path;
|
|
27
|
+
instanceId;
|
|
28
|
+
deps;
|
|
29
|
+
writes = Promise.resolve();
|
|
30
|
+
constructor(path, instanceId, deps = {}) {
|
|
31
|
+
this.path = path;
|
|
32
|
+
this.instanceId = instanceId;
|
|
33
|
+
this.deps = deps;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Written at once with what is known, then again with the start identity: the identity probe takes
|
|
37
|
+
* about a second on Windows, and a crash inside that second must still leave a trail.
|
|
38
|
+
*/
|
|
39
|
+
record(pid, exe) {
|
|
40
|
+
const entry = {
|
|
41
|
+
pid,
|
|
42
|
+
process_start_id: null,
|
|
43
|
+
started_at_secs: Math.floor((this.deps.now ?? Date.now)() / 1000),
|
|
44
|
+
instance_id: this.instanceId,
|
|
45
|
+
exe,
|
|
46
|
+
};
|
|
47
|
+
return this.enqueue(async () => {
|
|
48
|
+
await this.write(entry);
|
|
49
|
+
const startId = await (this.deps.startId ?? processStartId)(pid).catch(() => undefined);
|
|
50
|
+
if (startId !== undefined && (await this.current())?.pid === pid)
|
|
51
|
+
await this.write({ ...entry, process_start_id: startId });
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
clear() {
|
|
55
|
+
return this.enqueue(() => rm(this.path, { force: true }));
|
|
56
|
+
}
|
|
57
|
+
async current() {
|
|
58
|
+
return parseEntry(await readFile(this.path, 'utf8').catch(() => ''));
|
|
59
|
+
}
|
|
60
|
+
async write(entry) {
|
|
61
|
+
// Write-then-rename: a crash mid-write must not leave a journal the next startup cannot parse.
|
|
62
|
+
const temporary = `${this.path}.tmp`;
|
|
63
|
+
await writeFile(temporary, `${JSON.stringify(entry)}\n`);
|
|
64
|
+
await rename(temporary, this.path);
|
|
65
|
+
}
|
|
66
|
+
enqueue(operation) {
|
|
67
|
+
const next = this.writes.then(operation).catch((error) => {
|
|
68
|
+
this.deps.log?.(`could not update the remote-access journal: ${error.message}`);
|
|
69
|
+
});
|
|
70
|
+
this.writes = next;
|
|
71
|
+
return next;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Also reads the entry Atomic Chat 2.0.40 wrote at the data root, `{pid, started_at_secs}`: it has no
|
|
76
|
+
* start identity, so the start-time fallback decides.
|
|
77
|
+
*/
|
|
78
|
+
function parseEntry(text) {
|
|
79
|
+
try {
|
|
80
|
+
const value = JSON.parse(text);
|
|
81
|
+
if (!value || !Number.isInteger(value.pid) || value.pid <= 0)
|
|
82
|
+
return undefined;
|
|
83
|
+
return {
|
|
84
|
+
pid: value.pid,
|
|
85
|
+
process_start_id: typeof value.process_start_id === 'string' ? value.process_start_id : null,
|
|
86
|
+
started_at_secs: typeof value.started_at_secs === 'number' ? value.started_at_secs : 0,
|
|
87
|
+
instance_id: typeof value.instance_id === 'string' ? value.instance_id : '',
|
|
88
|
+
exe: typeof value.exe === 'string' ? value.exe : '',
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Ends the tunnel a previous, abnormally ended owner left behind. Called once at startup, before the
|
|
97
|
+
* endpoint is published and before anything could have started a new one.
|
|
98
|
+
*/
|
|
99
|
+
export async function reapTunnelOrphan(path, deps = {}) {
|
|
100
|
+
const log = deps.log ?? (() => { });
|
|
101
|
+
const text = await readFile(path, 'utf8').catch(() => undefined);
|
|
102
|
+
if (text === undefined)
|
|
103
|
+
return 'none';
|
|
104
|
+
// Whatever it says, it describes a previous run; never read it twice.
|
|
105
|
+
await rm(path, { force: true }).catch(() => { });
|
|
106
|
+
const entry = parseEntry(text);
|
|
107
|
+
if (!entry) {
|
|
108
|
+
log('ignoring an unreadable remote-access journal');
|
|
109
|
+
return 'none';
|
|
110
|
+
}
|
|
111
|
+
const alive = deps.alive ?? isProcessAlive;
|
|
112
|
+
if (entry.pid === (deps.selfPid ?? process.pid) || !alive(entry.pid))
|
|
113
|
+
return 'gone';
|
|
114
|
+
const name = await (deps.name ?? processName)(entry.pid);
|
|
115
|
+
const sameProcess = await isRecordedProcess(entry, deps);
|
|
116
|
+
if (!sameProcess || !isTunnelName(name)) {
|
|
117
|
+
log(`pid ${entry.pid} is no longer our tunnel (${name ?? 'unknown'}); leaving it alone`);
|
|
118
|
+
return 'spared';
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
;
|
|
122
|
+
(deps.kill ?? ((pid) => process.kill(pid, 'SIGKILL')))(entry.pid);
|
|
123
|
+
log(`ended a tunnel (pid ${entry.pid}) orphaned by a previous run`);
|
|
124
|
+
return 'killed';
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return 'gone';
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/** The PID-reuse guard: the recorded identity when there is one, else the start time within tolerance. */
|
|
131
|
+
async function isRecordedProcess(entry, deps) {
|
|
132
|
+
if (entry.process_start_id !== null) {
|
|
133
|
+
const verdict = await (deps.verifyIdentity ?? verifyProcessIdentity)(entry.pid, entry.process_start_id);
|
|
134
|
+
return verdict === 'match';
|
|
135
|
+
}
|
|
136
|
+
const epoch = await (deps.startEpoch ?? processStartEpoch)(entry.pid);
|
|
137
|
+
const startedAt = Number(epoch?.slice('epoch:'.length));
|
|
138
|
+
return (Number.isFinite(startedAt) && Math.abs(startedAt - entry.started_at_secs) <= START_TIME_TOLERANCE_SECS);
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=journal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/remote-access/journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading this machine's network: its interfaces, and the address it would use to reach the
|
|
3
|
+
* internet. The selection over what they return is pure and lives in `lan.ts`.
|
|
4
|
+
*/
|
|
5
|
+
import { networkInterfaces } from 'node:os';
|
|
6
|
+
import type { InterfaceAddress } from './lan.js';
|
|
7
|
+
/** The part of a UDP socket the default-route lookup uses; a seam for a machine with no network. */
|
|
8
|
+
export interface UdpProbeSocket {
|
|
9
|
+
once(event: 'error', listener: (error: Error) => void): unknown;
|
|
10
|
+
connect(port: number, address: string, callback: () => void): void;
|
|
11
|
+
address(): {
|
|
12
|
+
address: string;
|
|
13
|
+
};
|
|
14
|
+
close(): void;
|
|
15
|
+
}
|
|
16
|
+
export interface LanProbeDeps {
|
|
17
|
+
interfaces?: () => ReturnType<typeof networkInterfaces>;
|
|
18
|
+
defaultRoute?: () => Promise<string | undefined>;
|
|
19
|
+
}
|
|
20
|
+
/** Every IPv4 address of every interface, in a stable order. */
|
|
21
|
+
export declare function interfaceAddresses(read?: () => ReturnType<typeof networkInterfaces>): InterfaceAddress[];
|
|
22
|
+
/**
|
|
23
|
+
* The local address the OS would use to reach the internet. `connect` on a UDP socket only fixes
|
|
24
|
+
* the local end; nothing is sent. `undefined` when there is no route, or no answer in time.
|
|
25
|
+
*/
|
|
26
|
+
export declare function defaultRouteAddress(timeoutMs?: number, open?: () => UdpProbeSocket): Promise<string | undefined>;
|
|
27
|
+
/** What to show under "reachable on your network", default-route address first. */
|
|
28
|
+
export declare function lanAddresses(deps?: LanProbeDeps): Promise<string[]>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading this machine's network: its interfaces, and the address it would use to reach the
|
|
3
|
+
* internet. The selection over what they return is pure and lives in `lan.ts`.
|
|
4
|
+
*/
|
|
5
|
+
import { createSocket } from 'node:dgram';
|
|
6
|
+
import { networkInterfaces } from 'node:os';
|
|
7
|
+
import { selectLanAddresses, sortInterfaceAddresses } from './lan.js';
|
|
8
|
+
/** How long the default-route lookup may take before the list is shown without it. */
|
|
9
|
+
const DEFAULT_ROUTE_TIMEOUT_MS = 1000;
|
|
10
|
+
/** Every IPv4 address of every interface, in a stable order. */
|
|
11
|
+
export function interfaceAddresses(read = networkInterfaces) {
|
|
12
|
+
const found = [];
|
|
13
|
+
for (const [name, addresses] of Object.entries(read()))
|
|
14
|
+
for (const entry of addresses ?? [])
|
|
15
|
+
if (entry.family === 'IPv4')
|
|
16
|
+
found.push({ name, address: entry.address });
|
|
17
|
+
return sortInterfaceAddresses(found);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The local address the OS would use to reach the internet. `connect` on a UDP socket only fixes
|
|
21
|
+
* the local end; nothing is sent. `undefined` when there is no route, or no answer in time.
|
|
22
|
+
*/
|
|
23
|
+
export function defaultRouteAddress(timeoutMs = DEFAULT_ROUTE_TIMEOUT_MS, open = () => createSocket('udp4')) {
|
|
24
|
+
return new Promise((resolve) => {
|
|
25
|
+
const socket = open();
|
|
26
|
+
let settled = false;
|
|
27
|
+
const finish = (address) => {
|
|
28
|
+
if (settled)
|
|
29
|
+
return;
|
|
30
|
+
settled = true;
|
|
31
|
+
clearTimeout(timer);
|
|
32
|
+
try {
|
|
33
|
+
socket.close();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Never opened, or already closed.
|
|
37
|
+
}
|
|
38
|
+
resolve(address);
|
|
39
|
+
};
|
|
40
|
+
const timer = setTimeout(() => finish(undefined), timeoutMs);
|
|
41
|
+
timer.unref?.();
|
|
42
|
+
socket.once('error', () => finish(undefined));
|
|
43
|
+
try {
|
|
44
|
+
socket.connect(80, '8.8.8.8', () => {
|
|
45
|
+
try {
|
|
46
|
+
finish(socket.address().address);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
finish(undefined);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
finish(undefined);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** What to show under "reachable on your network", default-route address first. */
|
|
59
|
+
export async function lanAddresses(deps = {}) {
|
|
60
|
+
const defaultRoute = await (deps.defaultRoute ?? defaultRouteAddress)();
|
|
61
|
+
return selectLanAddresses(interfaceAddresses(deps.interfaces), defaultRoute);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=lan-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lan-probe.js","sourceRoot":"","sources":["../../src/remote-access/lan-probe.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGrE,sFAAsF;AACtF,MAAM,wBAAwB,GAAG,IAAI,CAAA;AAerC,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAChC,OAAmD,iBAAiB;IAEpE,MAAM,KAAK,GAAuB,EAAE,CAAA;IACpC,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,SAAS,IAAI,EAAE;YACjC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7E,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAA;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAS,GAAG,wBAAwB,EACpC,OAA6B,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;IAEvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,IAAI,EAAE,CAAA;QACrB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,MAAM,GAAG,CAAC,OAA2B,EAAE,EAAE;YAC7C,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,EAAE,CAAA;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,CAAA;QAClB,CAAC,CAAA;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;QAC5D,KAAK,CAAC,KAAK,EAAE,EAAE,CAAA;QACf,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QAC7C,IAAI,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE;gBACjC,IAAI,CAAC;oBACH,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAA;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,SAAS,CAAC,CAAA;gBACnB,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,SAAS,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB,EAAE;IACxD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC,EAAE,CAAA;IACvE,OAAO,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAA;AAC9E,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The addresses another device on the network can dial, for display only.
|
|
3
|
+
*
|
|
4
|
+
* Host validation does not depend on this list: the public listener trusts the local address of each
|
|
5
|
+
* accepted socket (`server/public/dynamic-hosts.ts`), which stays correct across sleep/wake and
|
|
6
|
+
* network changes. This only answers "what do I type on my phone?", so it may hide addresses that
|
|
7
|
+
* would work but would confuse (a WSL or Docker bridge) without breaking anybody.
|
|
8
|
+
*
|
|
9
|
+
* Ported from: src-tauri/src/core/server/remote_access/lan.rs (image-generation line, `767ff6350`).
|
|
10
|
+
*/
|
|
11
|
+
/** One IPv4 address of one network interface. */
|
|
12
|
+
export interface InterfaceAddress {
|
|
13
|
+
name: string;
|
|
14
|
+
address: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function isVirtualInterface(name: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Carrier-grade NAT space, which is where Tailscale hands out addresses. On macOS those live on a
|
|
19
|
+
* `utun` interface, on Windows and Linux on a plainly named one; this keeps a mesh-VPN address
|
|
20
|
+
* visible on all three.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isSharedAddressSpace(address: string): boolean;
|
|
23
|
+
/** Not loopback, link-local, multicast, broadcast or unspecified — and an IPv4 literal at all. */
|
|
24
|
+
export declare function isDialable(address: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* What to show, and in which order. The default-route address comes first because it is almost
|
|
27
|
+
* always the one the user means.
|
|
28
|
+
*/
|
|
29
|
+
export declare function selectLanAddresses(interfaces: readonly InterfaceAddress[], defaultRoute?: string | undefined): string[];
|
|
30
|
+
/** Order by interface name, then numerically by address: the OS enumerates in no promised order. */
|
|
31
|
+
export declare function sortInterfaceAddresses(interfaces: readonly InterfaceAddress[]): InterfaceAddress[];
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The addresses another device on the network can dial, for display only.
|
|
3
|
+
*
|
|
4
|
+
* Host validation does not depend on this list: the public listener trusts the local address of each
|
|
5
|
+
* accepted socket (`server/public/dynamic-hosts.ts`), which stays correct across sleep/wake and
|
|
6
|
+
* network changes. This only answers "what do I type on my phone?", so it may hide addresses that
|
|
7
|
+
* would work but would confuse (a WSL or Docker bridge) without breaking anybody.
|
|
8
|
+
*
|
|
9
|
+
* Ported from: src-tauri/src/core/server/remote_access/lan.rs (image-generation line, `767ff6350`).
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Interface-name prefixes of adapters another device cannot reach. Matched case-insensitively
|
|
13
|
+
* against the start of the name.
|
|
14
|
+
*/
|
|
15
|
+
const VIRTUAL_INTERFACE_PREFIXES = [
|
|
16
|
+
// Windows (the friendly alias)
|
|
17
|
+
'vethernet',
|
|
18
|
+
'virtualbox',
|
|
19
|
+
'vmware',
|
|
20
|
+
// Linux
|
|
21
|
+
'docker',
|
|
22
|
+
'br-',
|
|
23
|
+
'veth',
|
|
24
|
+
'virbr',
|
|
25
|
+
// macOS
|
|
26
|
+
'bridge',
|
|
27
|
+
'utun',
|
|
28
|
+
'awdl',
|
|
29
|
+
'llw',
|
|
30
|
+
];
|
|
31
|
+
export function isVirtualInterface(name) {
|
|
32
|
+
const lower = name.trim().toLowerCase();
|
|
33
|
+
return VIRTUAL_INTERFACE_PREFIXES.some((prefix) => lower.startsWith(prefix));
|
|
34
|
+
}
|
|
35
|
+
function octets(address) {
|
|
36
|
+
const parts = address.split('.');
|
|
37
|
+
if (parts.length !== 4)
|
|
38
|
+
return undefined;
|
|
39
|
+
const numbers = parts.map((part) => (/^\d{1,3}$/.test(part) ? Number(part) : NaN));
|
|
40
|
+
if (numbers.some((n) => Number.isNaN(n) || n > 255))
|
|
41
|
+
return undefined;
|
|
42
|
+
return numbers;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Carrier-grade NAT space, which is where Tailscale hands out addresses. On macOS those live on a
|
|
46
|
+
* `utun` interface, on Windows and Linux on a plainly named one; this keeps a mesh-VPN address
|
|
47
|
+
* visible on all three.
|
|
48
|
+
*/
|
|
49
|
+
export function isSharedAddressSpace(address) {
|
|
50
|
+
const parsed = octets(address);
|
|
51
|
+
return parsed !== undefined && parsed[0] === 100 && parsed[1] >= 64 && parsed[1] < 128;
|
|
52
|
+
}
|
|
53
|
+
/** Not loopback, link-local, multicast, broadcast or unspecified — and an IPv4 literal at all. */
|
|
54
|
+
export function isDialable(address) {
|
|
55
|
+
const parsed = octets(address);
|
|
56
|
+
if (!parsed)
|
|
57
|
+
return false;
|
|
58
|
+
const [a, b, c, d] = parsed;
|
|
59
|
+
const loopback = a === 127;
|
|
60
|
+
const linkLocal = a === 169 && b === 254;
|
|
61
|
+
const multicast = a >= 224 && a <= 239;
|
|
62
|
+
const broadcast = a === 255 && b === 255 && c === 255 && d === 255;
|
|
63
|
+
const unspecified = a === 0 && b === 0 && c === 0 && d === 0;
|
|
64
|
+
return !(loopback || linkLocal || multicast || broadcast || unspecified);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* What to show, and in which order. The default-route address comes first because it is almost
|
|
68
|
+
* always the one the user means.
|
|
69
|
+
*/
|
|
70
|
+
export function selectLanAddresses(interfaces, defaultRoute) {
|
|
71
|
+
const selected = [];
|
|
72
|
+
const push = (address) => {
|
|
73
|
+
if (isDialable(address) && !selected.includes(address))
|
|
74
|
+
selected.push(address);
|
|
75
|
+
};
|
|
76
|
+
if (defaultRoute !== undefined)
|
|
77
|
+
push(defaultRoute);
|
|
78
|
+
for (const { name, address } of interfaces) {
|
|
79
|
+
if (isVirtualInterface(name) && !isSharedAddressSpace(address))
|
|
80
|
+
continue;
|
|
81
|
+
push(address);
|
|
82
|
+
}
|
|
83
|
+
return selected;
|
|
84
|
+
}
|
|
85
|
+
/** Order by interface name, then numerically by address: the OS enumerates in no promised order. */
|
|
86
|
+
export function sortInterfaceAddresses(interfaces) {
|
|
87
|
+
const key = (address) => (octets(address) ?? [0, 0, 0, 0]).reduce((sum, part) => sum * 256 + part, 0);
|
|
88
|
+
return [...interfaces].sort((left, right) => left.name === right.name ? key(left.address) - key(right.address) : left.name < right.name ? -1 : 1);
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=lan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lan.js","sourceRoot":"","sources":["../../src/remote-access/lan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH;;;GAGG;AACH,MAAM,0BAA0B,GAAG;IACjC,+BAA+B;IAC/B,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,KAAK;CACN,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACvC,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED,SAAS,MAAM,CAAC,OAAe;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAClF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACrE,OAAO,OAA2C,CAAA;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC9B,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;AACxF,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAA;IAC3B,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAA;IAC1B,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA;IACxC,MAAM,SAAS,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAA;IACtC,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA;IAClE,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5D,OAAO,CAAC,CAAC,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,CAAC,CAAA;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAuC,EACvC,YAAiC;IAEjC,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE;QAC/B,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChF,CAAC,CAAA;IACD,IAAI,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IAClD,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,UAAU,EAAE,CAAC;QAC3C,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAAE,SAAQ;QACxE,IAAI,CAAC,OAAO,CAAC,CAAA;IACf,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,sBAAsB,CAAC,UAAuC;IAC5E,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,EAAE,CAC9B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;IAC9E,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC1C,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpG,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote access: a Cloudflare quick tunnel in front of the Local API Server.
|
|
3
|
+
*
|
|
4
|
+
* `cloudflared` gives the OpenAI-compatible API a temporary public `https://<words>.trycloudflare.com`
|
|
5
|
+
* address, so another Atomic Chat, an SDK or a coding agent can use this machine's models from
|
|
6
|
+
* anywhere. No account, no domain, a new URL on every start.
|
|
7
|
+
*
|
|
8
|
+
* Shape of the code:
|
|
9
|
+
*
|
|
10
|
+
* - `RemoteAccessManager` is the state machine the control routes talk to. JavaScript gives it what
|
|
11
|
+
* the Rust original needed a mutex for: nothing here awaits between reading the state and writing
|
|
12
|
+
* it, so `start` and `stop` decide on a consistent view.
|
|
13
|
+
* - One *supervisor* per run owns the child process. It waits for the tunnel to register, proves the
|
|
14
|
+
* URL reaches this server before anybody sees it, then watches for the process to exit. A `run`
|
|
15
|
+
* counter makes a supervisor that was overtaken (a stop timed out, the core is shutting down)
|
|
16
|
+
* unable to write state any more.
|
|
17
|
+
* - Every transition is pushed to clients as `remote-access:status`, because the URL arrives seconds
|
|
18
|
+
* after the request that asked for it has answered.
|
|
19
|
+
*
|
|
20
|
+
* The API key is deliberately not a precondition: exposing the server without one is the user's
|
|
21
|
+
* call, made explicit by the frontend.
|
|
22
|
+
*
|
|
23
|
+
* PRIVACY: the tunnel URL is never logged.
|
|
24
|
+
*
|
|
25
|
+
* Ported from: src-tauri/src/core/server/remote_access/mod.rs (image-generation line, `767ff6350`).
|
|
26
|
+
* ADR 2026-09-17-the-core-owns-the-cloudflare-quick-tunnel.
|
|
27
|
+
*/
|
|
28
|
+
import { AtomicCoreError } from '../contracts/index.js';
|
|
29
|
+
import type { RemoteAccessRefusal, RemoteAccessStatus } from '../contracts/index.js';
|
|
30
|
+
import type { Prober } from './probe.js';
|
|
31
|
+
import type { TunnelSpawner, TunnelTimings } from './process.js';
|
|
32
|
+
import type { ServerEndpoint } from './status.js';
|
|
33
|
+
/** The refusal of a start. `details` is the app's machine-readable reason, which its parser reads. */
|
|
34
|
+
export declare function remoteAccessRefusal(reason: RemoteAccessRefusal): AtomicCoreError;
|
|
35
|
+
/** Where the tunnel name is trusted while the tunnel is up (the listener's `DynamicTrustedHosts`). */
|
|
36
|
+
export interface TunnelHosts {
|
|
37
|
+
setTunnelHost(host: string): void;
|
|
38
|
+
clearTunnelHost(): void;
|
|
39
|
+
}
|
|
40
|
+
export interface RemoteAccessManagerDeps {
|
|
41
|
+
spawner: TunnelSpawner;
|
|
42
|
+
prober: Prober;
|
|
43
|
+
timings?: Partial<TunnelTimings>;
|
|
44
|
+
/** The running public server; `undefined` while it is stopped or stopping. */
|
|
45
|
+
server: () => ServerEndpoint | undefined;
|
|
46
|
+
hosts: TunnelHosts;
|
|
47
|
+
emit: (status: RemoteAccessStatus) => void;
|
|
48
|
+
/** Crash recovery; a tunnel is simply not journalled without one. */
|
|
49
|
+
journal?: {
|
|
50
|
+
record(pid: number, exe: string): Promise<void>;
|
|
51
|
+
clear(): Promise<void>;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Run `hook` if this process exits while a tunnel may still be alive; returns how to unregister.
|
|
55
|
+
* The last line of defence, as `kill_on_drop` was: a public URL must not outlive its owner.
|
|
56
|
+
*/
|
|
57
|
+
onProcessExit?: (hook: () => void) => () => void;
|
|
58
|
+
log?: (level: 'info' | 'warn', message: string) => void;
|
|
59
|
+
}
|
|
60
|
+
export declare class RemoteAccessManager {
|
|
61
|
+
private readonly deps;
|
|
62
|
+
private phase;
|
|
63
|
+
private url;
|
|
64
|
+
/** Identifies the supervisor allowed to write this state. */
|
|
65
|
+
private run;
|
|
66
|
+
/** Kept while the process may still be alive: for shutdown, and to retry a stop that was not confirmed. */
|
|
67
|
+
private tunnel;
|
|
68
|
+
private signalStop;
|
|
69
|
+
private supervisor;
|
|
70
|
+
private stopping;
|
|
71
|
+
private probe;
|
|
72
|
+
private removeExitHook;
|
|
73
|
+
private readonly timings;
|
|
74
|
+
constructor(deps: RemoteAccessManagerDeps);
|
|
75
|
+
status(): RemoteAccessStatus;
|
|
76
|
+
/**
|
|
77
|
+
* Computes the status and pushes it to clients. Also called when the public server starts or
|
|
78
|
+
* stops: `blockReason` and `canStart` follow the server, not only the tunnel.
|
|
79
|
+
*/
|
|
80
|
+
announce(): RemoteAccessStatus;
|
|
81
|
+
/**
|
|
82
|
+
* Starts a tunnel and answers at once with `starting`; the rest is reported through events.
|
|
83
|
+
* Refuses with a machine-readable reason. Synchronous on purpose: the endpoint is read and the
|
|
84
|
+
* phase flipped with nothing in between.
|
|
85
|
+
*/
|
|
86
|
+
start(): RemoteAccessStatus;
|
|
87
|
+
/**
|
|
88
|
+
* Stops the tunnel and answers once it is down (normally well under a second; up to the two
|
|
89
|
+
* grace periods when the process does not react). A stop already under way is joined, so whoever
|
|
90
|
+
* needs the tunnel gone — the public server, above all — can rely on the answer.
|
|
91
|
+
*/
|
|
92
|
+
stop(): Promise<RemoteAccessStatus>;
|
|
93
|
+
private stopNow;
|
|
94
|
+
/**
|
|
95
|
+
* Synchronous teardown for a shutdown that cannot wait: signals only. Whatever the supervisor
|
|
96
|
+
* still does, it no longer owns the state.
|
|
97
|
+
*/
|
|
98
|
+
killNow(): void;
|
|
99
|
+
private isCurrent;
|
|
100
|
+
private within;
|
|
101
|
+
private settleStopped;
|
|
102
|
+
private recordChild;
|
|
103
|
+
/** Flips `starting` to `online`. `false` means a stop got there first. */
|
|
104
|
+
private goOnline;
|
|
105
|
+
/**
|
|
106
|
+
* Ends the process and records how the run ended. An exit that cannot be confirmed overrides
|
|
107
|
+
* `outcome`: the truth is then "may still be running".
|
|
108
|
+
*/
|
|
109
|
+
private endRun;
|
|
110
|
+
private supervise;
|
|
111
|
+
}
|