@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,329 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth 2.0 + PKCE against `auth.openai.com`, the way the Codex CLI signs in.
|
|
3
|
+
*
|
|
4
|
+
* Ported from: src-tauri/src/core/auth/chatgpt.rs. Contract: test/fixtures/app/chatgpt-auth (PKCE,
|
|
5
|
+
* authorize URL, callback parsing, `state` comparison, JWT claims, token response → session).
|
|
6
|
+
*
|
|
7
|
+
* The issuer is injectable for tests only; production always talks to `ISSUER`. The client id is
|
|
8
|
+
* OpenAI's public Codex one (ADR `2026-08-27-connect-a-chatgpt-subscription-as-a-model-provider`),
|
|
9
|
+
* while `originator` names this client.
|
|
10
|
+
*/
|
|
11
|
+
import { createHash, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
12
|
+
import { STATUS_CODES, createServer } from 'node:http';
|
|
13
|
+
import { AtomicCoreError } from '../contracts/index.js';
|
|
14
|
+
import { TOKEN_FILE_VERSION } from './chatgpt-store.js';
|
|
15
|
+
export const CLIENT_ID = 'app_EMoamEEZ73f0CkXaXp7hrann';
|
|
16
|
+
export const ISSUER = 'https://auth.openai.com';
|
|
17
|
+
export const SCOPES = 'openid profile email offline_access';
|
|
18
|
+
/** Matched exactly by the authorization server, so there is no fallback port. */
|
|
19
|
+
export const CALLBACK_PORT = 1455;
|
|
20
|
+
export const CALLBACK_PATH = '/auth/callback';
|
|
21
|
+
export const CALLBACK_TIMEOUT_MS = 300_000;
|
|
22
|
+
export const ORIGINATOR = 'atomic_chat';
|
|
23
|
+
const AUTH_CLAIM_NAMESPACE = 'https://api.openai.com/auth';
|
|
24
|
+
/** Token-endpoint errors that mean the refresh credential itself is finished. */
|
|
25
|
+
export const TERMINAL_TOKEN_ERRORS = ['invalid_grant', 'invalid_refresh_token', 'refresh_token_expired'];
|
|
26
|
+
export const REAUTHORIZATION_REQUIRED = 'reauthorization required';
|
|
27
|
+
const TOKEN_REQUEST_TIMEOUT_MS = 30_000;
|
|
28
|
+
export function redirectUri() {
|
|
29
|
+
return `http://localhost:${CALLBACK_PORT}${CALLBACK_PATH}`;
|
|
30
|
+
}
|
|
31
|
+
export function deriveChallenge(verifier) {
|
|
32
|
+
return createHash('sha256').update(verifier, 'utf8').digest('base64url');
|
|
33
|
+
}
|
|
34
|
+
export function newPkce() {
|
|
35
|
+
const verifier = randomBytes(64).toString('base64url');
|
|
36
|
+
return { verifier, challenge: deriveChallenge(verifier) };
|
|
37
|
+
}
|
|
38
|
+
export function newState() {
|
|
39
|
+
return randomBytes(32).toString('base64url');
|
|
40
|
+
}
|
|
41
|
+
/** Constant-time for equal lengths; the callback is reachable by any local process. */
|
|
42
|
+
export function stateMatches(expected, received) {
|
|
43
|
+
const a = Buffer.from(expected, 'utf8');
|
|
44
|
+
const b = Buffer.from(received, 'utf8');
|
|
45
|
+
return a.length === b.length && timingSafeEqual(a, b);
|
|
46
|
+
}
|
|
47
|
+
export function authorizeUrl(challenge, state, issuer = ISSUER) {
|
|
48
|
+
const params = new URLSearchParams([
|
|
49
|
+
['response_type', 'code'],
|
|
50
|
+
['client_id', CLIENT_ID],
|
|
51
|
+
['redirect_uri', redirectUri()],
|
|
52
|
+
['scope', SCOPES],
|
|
53
|
+
['code_challenge', challenge],
|
|
54
|
+
['code_challenge_method', 'S256'],
|
|
55
|
+
['state', state],
|
|
56
|
+
['originator', ORIGINATOR],
|
|
57
|
+
['codex_cli_simplified_flow', 'true'],
|
|
58
|
+
['id_token_add_organizations', 'true'],
|
|
59
|
+
]);
|
|
60
|
+
return `${issuer}/oauth/authorize?${params.toString()}`;
|
|
61
|
+
}
|
|
62
|
+
/** `form_urlencoded::parse` into a map: `+` is a space, percent escapes decode, the last repeat wins. */
|
|
63
|
+
export function parseCallbackQuery(query) {
|
|
64
|
+
const pairs = new Map(new URLSearchParams(query));
|
|
65
|
+
const error = pairs.get('error');
|
|
66
|
+
if (error !== undefined)
|
|
67
|
+
return { kind: 'error', error, description: pairs.get('error_description') ?? null };
|
|
68
|
+
const code = pairs.get('code');
|
|
69
|
+
if (!code)
|
|
70
|
+
throw new AtomicCoreError('AUTH_FAILED', 'callback carried no authorization code');
|
|
71
|
+
const state = pairs.get('state');
|
|
72
|
+
if (!state)
|
|
73
|
+
throw new AtomicCoreError('AUTH_FAILED', 'callback carried no state');
|
|
74
|
+
return { kind: 'code', code, state };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The `base64` crate's strict no-padding decoders: only the alphabet, no `=`, and the canonical
|
|
78
|
+
* encoding of the bytes (non-zero trailing bits are rejected). Node's decoder accepts all of those.
|
|
79
|
+
*/
|
|
80
|
+
function strictBase64(input, alphabet) {
|
|
81
|
+
const pattern = alphabet === 'base64url' ? /^[A-Za-z0-9_-]*$/ : /^[A-Za-z0-9+/]*$/;
|
|
82
|
+
if (!pattern.test(input) || input.length % 4 === 1)
|
|
83
|
+
return undefined;
|
|
84
|
+
const bytes = Buffer.from(input, alphabet);
|
|
85
|
+
const canonical = bytes.toString(alphabet).replace(/=+$/, '');
|
|
86
|
+
return canonical === input ? bytes : undefined;
|
|
87
|
+
}
|
|
88
|
+
function stringAt(value, key) {
|
|
89
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
90
|
+
return null;
|
|
91
|
+
const v = value[key];
|
|
92
|
+
return typeof v === 'string' ? v : null;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The account fields out of a JWT payload. The signature is not verified: the token arrived over a
|
|
96
|
+
* TLS connection to a pinned host, and nothing here is a security decision. Anything unparseable
|
|
97
|
+
* yields empty claims.
|
|
98
|
+
*/
|
|
99
|
+
export function decodeJwtClaims(token) {
|
|
100
|
+
const empty = { account_id: null, plan_type: null, email: null };
|
|
101
|
+
const parts = token.split('.');
|
|
102
|
+
if (parts.length < 2)
|
|
103
|
+
return empty;
|
|
104
|
+
const payload = parts[1];
|
|
105
|
+
const bytes = strictBase64(payload, 'base64url') ?? strictBase64(payload, 'base64');
|
|
106
|
+
if (!bytes)
|
|
107
|
+
return empty;
|
|
108
|
+
let value;
|
|
109
|
+
try {
|
|
110
|
+
value = JSON.parse(bytes.toString('utf8'));
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return empty;
|
|
114
|
+
}
|
|
115
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
116
|
+
return empty;
|
|
117
|
+
const auth = value[AUTH_CLAIM_NAMESPACE];
|
|
118
|
+
return {
|
|
119
|
+
account_id: stringAt(auth, 'chatgpt_account_id'),
|
|
120
|
+
plan_type: stringAt(auth, 'chatgpt_plan_type'),
|
|
121
|
+
email: stringAt(value, 'email'),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/** serde's derive for the token endpoint's body; `undefined` where serde would refuse it. */
|
|
125
|
+
export function parseTokenResponse(raw) {
|
|
126
|
+
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
127
|
+
return undefined;
|
|
128
|
+
const o = raw;
|
|
129
|
+
if (typeof o['access_token'] !== 'string')
|
|
130
|
+
return undefined;
|
|
131
|
+
const opt = (v) => (v === undefined || v === null ? null : typeof v === 'string' ? v : false);
|
|
132
|
+
const refresh = opt(o['refresh_token']);
|
|
133
|
+
const id = opt(o['id_token']);
|
|
134
|
+
const lifetime = o['expires_in'];
|
|
135
|
+
if (refresh === false || id === false)
|
|
136
|
+
return undefined;
|
|
137
|
+
if (lifetime !== undefined &&
|
|
138
|
+
lifetime !== null &&
|
|
139
|
+
(typeof lifetime !== 'number' || !Number.isInteger(lifetime)))
|
|
140
|
+
return undefined;
|
|
141
|
+
return {
|
|
142
|
+
access_token: o['access_token'],
|
|
143
|
+
refresh_token: refresh,
|
|
144
|
+
id_token: id,
|
|
145
|
+
expires_in: typeof lifetime === 'number' ? lifetime : null,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The session to store from a token response. A refresh may omit `refresh_token` when the provider
|
|
150
|
+
* does not rotate it, so the previous one is kept. The account id is read from the access token
|
|
151
|
+
* first (a refresh may carry no id token), the email from the id token first. The lifetime defaults
|
|
152
|
+
* to an hour and is clamped to [1 minute, 30 days].
|
|
153
|
+
*/
|
|
154
|
+
export function toStored(response, nowUnix, previousRefresh) {
|
|
155
|
+
const refresh = response.refresh_token ?? previousRefresh;
|
|
156
|
+
if (refresh === null)
|
|
157
|
+
throw new AtomicCoreError('AUTH_FAILED', 'sign-in returned no refresh token');
|
|
158
|
+
const access = decodeJwtClaims(response.access_token);
|
|
159
|
+
const id = response.id_token !== null ? decodeJwtClaims(response.id_token) : decodeJwtClaims('');
|
|
160
|
+
const lifetime = Math.min(Math.max(response.expires_in ?? 3600, 60), 30 * 24 * 3600);
|
|
161
|
+
return {
|
|
162
|
+
version: TOKEN_FILE_VERSION,
|
|
163
|
+
access_token: response.access_token,
|
|
164
|
+
refresh_token: refresh,
|
|
165
|
+
id_token: response.id_token,
|
|
166
|
+
account_id: access.account_id ?? id.account_id,
|
|
167
|
+
plan_type: access.plan_type ?? id.plan_type,
|
|
168
|
+
email: id.email ?? access.email,
|
|
169
|
+
expires_at: nowUnix + lifetime,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* POST a form to the token endpoint. A spent or revoked refresh credential is terminal and says so
|
|
174
|
+
* with `REAUTHORIZATION_REQUIRED`; anything else may be transient and carries the provider's words.
|
|
175
|
+
*/
|
|
176
|
+
export async function postTokenForm(form, endpoint = {}) {
|
|
177
|
+
const fetchImpl = endpoint.fetch ?? fetch;
|
|
178
|
+
let response;
|
|
179
|
+
try {
|
|
180
|
+
response = await fetchImpl(`${endpoint.issuer ?? ISSUER}/oauth/token`, {
|
|
181
|
+
method: 'POST',
|
|
182
|
+
headers: { 'content-type': 'application/x-www-form-urlencoded' },
|
|
183
|
+
body: new URLSearchParams(form).toString(),
|
|
184
|
+
signal: AbortSignal.timeout(TOKEN_REQUEST_TIMEOUT_MS),
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
catch (e) {
|
|
188
|
+
throw new AtomicCoreError('UPSTREAM_ERROR', `token request failed: ${e.message}`);
|
|
189
|
+
}
|
|
190
|
+
let body;
|
|
191
|
+
try {
|
|
192
|
+
body = await response.text();
|
|
193
|
+
}
|
|
194
|
+
catch (e) {
|
|
195
|
+
throw new AtomicCoreError('UPSTREAM_ERROR', `cannot read token response: ${e.message}`);
|
|
196
|
+
}
|
|
197
|
+
if (!response.ok) {
|
|
198
|
+
const code = tokenErrorCode(body);
|
|
199
|
+
if (TERMINAL_TOKEN_ERRORS.includes(code))
|
|
200
|
+
throw new AtomicCoreError('AUTH_REQUIRED', `${REAUTHORIZATION_REQUIRED}: ${code}`);
|
|
201
|
+
throw new AtomicCoreError('UPSTREAM_ERROR', `token request rejected (${response.status}${statusText(response)}): ${body}`);
|
|
202
|
+
}
|
|
203
|
+
let raw;
|
|
204
|
+
try {
|
|
205
|
+
raw = JSON.parse(body);
|
|
206
|
+
}
|
|
207
|
+
catch (e) {
|
|
208
|
+
throw new AtomicCoreError('UPSTREAM_ERROR', `cannot parse token response: ${e.message}`);
|
|
209
|
+
}
|
|
210
|
+
const parsed = parseTokenResponse(raw);
|
|
211
|
+
if (!parsed)
|
|
212
|
+
throw new AtomicCoreError('UPSTREAM_ERROR', 'cannot parse token response: unexpected shape');
|
|
213
|
+
return parsed;
|
|
214
|
+
}
|
|
215
|
+
/** `reqwest::StatusCode`'s Display: the canonical reason, `401 Unauthorized`, not the server's phrase. */
|
|
216
|
+
function statusText(response) {
|
|
217
|
+
const reason = STATUS_CODES[response.status];
|
|
218
|
+
return reason ? ` ${reason}` : '';
|
|
219
|
+
}
|
|
220
|
+
/** The OAuth error code: `error` as a string, or `error.code` when `error` is an object. */
|
|
221
|
+
export function tokenErrorCode(body) {
|
|
222
|
+
try {
|
|
223
|
+
const error = JSON.parse(body)?.error;
|
|
224
|
+
if (typeof error === 'string')
|
|
225
|
+
return error;
|
|
226
|
+
if (typeof error === 'object' && error !== null) {
|
|
227
|
+
const code = error.code;
|
|
228
|
+
return typeof code === 'string' ? code : '';
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// not JSON
|
|
233
|
+
}
|
|
234
|
+
return '';
|
|
235
|
+
}
|
|
236
|
+
export async function exchangeCode(code, pkce, nowUnix, endpoint = {}) {
|
|
237
|
+
const response = await postTokenForm([
|
|
238
|
+
['grant_type', 'authorization_code'],
|
|
239
|
+
['client_id', CLIENT_ID],
|
|
240
|
+
['code', code],
|
|
241
|
+
['redirect_uri', redirectUri()],
|
|
242
|
+
['code_verifier', pkce.verifier],
|
|
243
|
+
], endpoint);
|
|
244
|
+
return toStored(response, nowUnix, null);
|
|
245
|
+
}
|
|
246
|
+
export async function refreshTokens(refreshToken, nowUnix, endpoint = {}) {
|
|
247
|
+
const response = await postTokenForm([
|
|
248
|
+
['grant_type', 'refresh_token'],
|
|
249
|
+
['client_id', CLIENT_ID],
|
|
250
|
+
['refresh_token', refreshToken],
|
|
251
|
+
['scope', SCOPES],
|
|
252
|
+
], endpoint);
|
|
253
|
+
return toStored(response, nowUnix, refreshToken);
|
|
254
|
+
}
|
|
255
|
+
/** The page the browser is left on. Static: nothing from the request is reflected into it. */
|
|
256
|
+
const CALLBACK_PAGE = '<!doctype html><html><head><meta charset="utf-8"><title>Atomic Chat</title></head>' +
|
|
257
|
+
'<body style="font-family:system-ui;display:flex;align-items:center;justify-content:center;height:100vh;margin:0">' +
|
|
258
|
+
'<p>You can close this tab and return to Atomic Chat.</p></body></html>';
|
|
259
|
+
/**
|
|
260
|
+
* Bind the loopback listener before the browser opens, so a busy port fails before the user has
|
|
261
|
+
* signed in. Only the first callback counts; the listener closes as soon as it arrives, on cancel,
|
|
262
|
+
* or on timeout.
|
|
263
|
+
*/
|
|
264
|
+
export async function listenForCallback(expectedState, options = {}) {
|
|
265
|
+
const port = options.port ?? CALLBACK_PORT;
|
|
266
|
+
let settle = () => { };
|
|
267
|
+
const outcome = new Promise((resolve) => (settle = resolve));
|
|
268
|
+
let settled = false;
|
|
269
|
+
const finish = (value) => {
|
|
270
|
+
if (settled)
|
|
271
|
+
return;
|
|
272
|
+
settled = true;
|
|
273
|
+
settle(value);
|
|
274
|
+
};
|
|
275
|
+
const server = createServer((req, res) => {
|
|
276
|
+
const url = req.url ?? '/';
|
|
277
|
+
const q = url.indexOf('?');
|
|
278
|
+
const path = q >= 0 ? url.slice(0, q) : url;
|
|
279
|
+
if (path !== CALLBACK_PATH) {
|
|
280
|
+
res.writeHead(404, { 'content-length': '0' });
|
|
281
|
+
res.end();
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
let result;
|
|
285
|
+
try {
|
|
286
|
+
const params = parseCallbackQuery(q >= 0 ? url.slice(q + 1) : '');
|
|
287
|
+
if (params.kind === 'error') {
|
|
288
|
+
const message = params.description === null ? params.error : `${params.error}: ${params.description}`;
|
|
289
|
+
result = { error: new AtomicCoreError('AUTH_FAILED', message) };
|
|
290
|
+
}
|
|
291
|
+
else if (stateMatches(expectedState, params.state)) {
|
|
292
|
+
result = { code: params.code };
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
result = { error: new AtomicCoreError('AUTH_FAILED', 'callback state did not match this sign-in') };
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
catch (e) {
|
|
299
|
+
result = { error: e };
|
|
300
|
+
}
|
|
301
|
+
// Settle only once the page has gone out: settling closes the listener, and closing first would
|
|
302
|
+
// leave the browser with a reset connection instead of the "you can close this tab" page.
|
|
303
|
+
res.once('finish', () => finish(result));
|
|
304
|
+
res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' });
|
|
305
|
+
res.end(CALLBACK_PAGE);
|
|
306
|
+
});
|
|
307
|
+
await new Promise((resolve, reject) => {
|
|
308
|
+
server.once('error', (e) => reject(new AtomicCoreError('IO_ERROR', `cannot listen on 127.0.0.1:${port} for the sign-in callback (${e.message}). This port is fixed by OpenAI's redirect URI — close whatever is using it (often the Codex CLI mid-login) and try again.`)));
|
|
309
|
+
server.listen(port, '127.0.0.1', () => resolve());
|
|
310
|
+
});
|
|
311
|
+
const timer = setTimeout(() => finish({ error: new AtomicCoreError('AUTH_FAILED', 'timed out waiting for the browser sign-in') }), options.timeoutMs ?? CALLBACK_TIMEOUT_MS);
|
|
312
|
+
timer.unref?.();
|
|
313
|
+
const code = outcome.then((result) => {
|
|
314
|
+
clearTimeout(timer);
|
|
315
|
+
// Idle connections only: the one that brought the callback may still be delivering its page.
|
|
316
|
+
server.close();
|
|
317
|
+
server.closeIdleConnections();
|
|
318
|
+
if ('error' in result)
|
|
319
|
+
throw result.error;
|
|
320
|
+
return result.code;
|
|
321
|
+
});
|
|
322
|
+
// Nobody may be awaiting yet; an unobserved rejection must not crash the process.
|
|
323
|
+
code.catch(() => { });
|
|
324
|
+
return {
|
|
325
|
+
code,
|
|
326
|
+
cancel: () => finish({ error: new AtomicCoreError('AUTH_CANCELLED', 'sign-in cancelled') }),
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=chatgpt-oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatgpt-oauth.js","sourceRoot":"","sources":["../../src/credentials/chatgpt-oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<data>/atomic-chatgpt-auth.json`: the ChatGPT subscription session, shared with the app.
|
|
3
|
+
*
|
|
4
|
+
* Ported from: src-tauri/src/core/auth/store.rs. Contract: test/fixtures/app/chatgpt-auth (`save`,
|
|
5
|
+
* `load`, `clear`, `is_expired_at` cases).
|
|
6
|
+
*
|
|
7
|
+
* The same file the app reads, byte-compatible: serde's pretty print with fields in declaration
|
|
8
|
+
* order and `null` for an absent optional. Reading is as strict as serde's derive — a wrong type or
|
|
9
|
+
* a missing required field reads as "no session", as does a version other than 1. Unknown fields
|
|
10
|
+
* are ignored. The file is owner-readable only, and the mode is set when it is opened for writing so
|
|
11
|
+
* a refresh token is never briefly on disk under a wider one.
|
|
12
|
+
*/
|
|
13
|
+
export declare const TOKEN_FILE_VERSION = 1;
|
|
14
|
+
export interface StoredTokens {
|
|
15
|
+
version: number;
|
|
16
|
+
access_token: string;
|
|
17
|
+
refresh_token: string;
|
|
18
|
+
id_token: string | null;
|
|
19
|
+
account_id: string | null;
|
|
20
|
+
plan_type: string | null;
|
|
21
|
+
email: string | null;
|
|
22
|
+
/** Unix seconds; absolute so a restart does not extend the token's life. */
|
|
23
|
+
expires_at: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function isExpiredAt(tokens: Pick<StoredTokens, 'expires_at'>, nowUnix: number, marginSecs: number): boolean;
|
|
26
|
+
/** serde's derive for `StoredTokens`, then the version check. */
|
|
27
|
+
export declare function parseStoredTokens(text: string): StoredTokens | undefined;
|
|
28
|
+
/** serde_json's `to_string_pretty`: two-space indent, declaration order, no trailing newline. */
|
|
29
|
+
export declare function serializeStoredTokens(tokens: StoredTokens): string;
|
|
30
|
+
export declare function loadTokens(path: string): Promise<StoredTokens | undefined>;
|
|
31
|
+
export declare function saveTokens(path: string, tokens: StoredTokens): Promise<void>;
|
|
32
|
+
/** Missing is success: "not connected" is the goal state. */
|
|
33
|
+
export declare function clearTokens(path: string): Promise<void>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<data>/atomic-chatgpt-auth.json`: the ChatGPT subscription session, shared with the app.
|
|
3
|
+
*
|
|
4
|
+
* Ported from: src-tauri/src/core/auth/store.rs. Contract: test/fixtures/app/chatgpt-auth (`save`,
|
|
5
|
+
* `load`, `clear`, `is_expired_at` cases).
|
|
6
|
+
*
|
|
7
|
+
* The same file the app reads, byte-compatible: serde's pretty print with fields in declaration
|
|
8
|
+
* order and `null` for an absent optional. Reading is as strict as serde's derive — a wrong type or
|
|
9
|
+
* a missing required field reads as "no session", as does a version other than 1. Unknown fields
|
|
10
|
+
* are ignored. The file is owner-readable only, and the mode is set when it is opened for writing so
|
|
11
|
+
* a refresh token is never briefly on disk under a wider one.
|
|
12
|
+
*/
|
|
13
|
+
import { chmod, mkdir, open, readFile, unlink } from 'node:fs/promises';
|
|
14
|
+
import { dirname } from 'node:path';
|
|
15
|
+
export const TOKEN_FILE_VERSION = 1;
|
|
16
|
+
export function isExpiredAt(tokens, nowUnix, marginSecs) {
|
|
17
|
+
return tokens.expires_at - marginSecs <= nowUnix;
|
|
18
|
+
}
|
|
19
|
+
const U32_MAX = 0xffffffff;
|
|
20
|
+
function optionalString(value) {
|
|
21
|
+
if (value === undefined || value === null)
|
|
22
|
+
return null;
|
|
23
|
+
return typeof value === 'string' ? value : false;
|
|
24
|
+
}
|
|
25
|
+
/** serde's derive for `StoredTokens`, then the version check. */
|
|
26
|
+
export function parseStoredTokens(text) {
|
|
27
|
+
let raw;
|
|
28
|
+
try {
|
|
29
|
+
raw = JSON.parse(text);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
35
|
+
return undefined;
|
|
36
|
+
const o = raw;
|
|
37
|
+
const version = o['version'];
|
|
38
|
+
const expires = o['expires_at'];
|
|
39
|
+
if (typeof version !== 'number' || !Number.isInteger(version) || version < 0 || version > U32_MAX)
|
|
40
|
+
return undefined;
|
|
41
|
+
if (typeof o['access_token'] !== 'string' || typeof o['refresh_token'] !== 'string')
|
|
42
|
+
return undefined;
|
|
43
|
+
if (typeof expires !== 'number' || !Number.isInteger(expires))
|
|
44
|
+
return undefined;
|
|
45
|
+
const id = optionalString(o['id_token']);
|
|
46
|
+
const account = optionalString(o['account_id']);
|
|
47
|
+
const plan = optionalString(o['plan_type']);
|
|
48
|
+
const email = optionalString(o['email']);
|
|
49
|
+
if (id === false || account === false || plan === false || email === false)
|
|
50
|
+
return undefined;
|
|
51
|
+
if (version !== TOKEN_FILE_VERSION)
|
|
52
|
+
return undefined;
|
|
53
|
+
return {
|
|
54
|
+
version,
|
|
55
|
+
access_token: o['access_token'],
|
|
56
|
+
refresh_token: o['refresh_token'],
|
|
57
|
+
id_token: id,
|
|
58
|
+
account_id: account,
|
|
59
|
+
plan_type: plan,
|
|
60
|
+
email,
|
|
61
|
+
expires_at: expires,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/** serde_json's `to_string_pretty`: two-space indent, declaration order, no trailing newline. */
|
|
65
|
+
export function serializeStoredTokens(tokens) {
|
|
66
|
+
return JSON.stringify({
|
|
67
|
+
version: tokens.version,
|
|
68
|
+
access_token: tokens.access_token,
|
|
69
|
+
refresh_token: tokens.refresh_token,
|
|
70
|
+
id_token: tokens.id_token,
|
|
71
|
+
account_id: tokens.account_id,
|
|
72
|
+
plan_type: tokens.plan_type,
|
|
73
|
+
email: tokens.email,
|
|
74
|
+
expires_at: tokens.expires_at,
|
|
75
|
+
}, null, 2);
|
|
76
|
+
}
|
|
77
|
+
export async function loadTokens(path) {
|
|
78
|
+
let text;
|
|
79
|
+
try {
|
|
80
|
+
text = await readFile(path, 'utf8');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
return parseStoredTokens(text);
|
|
86
|
+
}
|
|
87
|
+
export async function saveTokens(path, tokens) {
|
|
88
|
+
await mkdir(dirname(path), { recursive: true });
|
|
89
|
+
const handle = await open(path, 'w', 0o600);
|
|
90
|
+
try {
|
|
91
|
+
await handle.writeFile(serializeStoredTokens(tokens));
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
await handle.close();
|
|
95
|
+
}
|
|
96
|
+
// An existing file keeps its old mode through `open`, so restate it.
|
|
97
|
+
if (process.platform !== 'win32')
|
|
98
|
+
await chmod(path, 0o600);
|
|
99
|
+
}
|
|
100
|
+
/** Missing is success: "not connected" is the goal state. */
|
|
101
|
+
export async function clearTokens(path) {
|
|
102
|
+
try {
|
|
103
|
+
await unlink(path);
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
if (e.code !== 'ENOENT')
|
|
107
|
+
throw e;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=chatgpt-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatgpt-store.js","sourceRoot":"","sources":["../../src/credentials/chatgpt-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secrets: cloud provider API keys in `<data>/atomic-core/credentials.json` (0600), and the ChatGPT
|
|
3
|
+
* subscription session in `<data>/atomic-chatgpt-auth.json`, shared with the app.
|
|
4
|
+
*
|
|
5
|
+
* Ported from: src-tauri/src/core/auth/{store,chatgpt,state}.rs.
|
|
6
|
+
* See PLAN.md §3.2. Public API of this module is exported from this file only.
|
|
7
|
+
*/
|
|
8
|
+
export * from './api-keys.js';
|
|
9
|
+
export * from './chatgpt-store.js';
|
|
10
|
+
export * from './chatgpt-oauth.js';
|
|
11
|
+
export * from './chatgpt-auth.js';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secrets: cloud provider API keys in `<data>/atomic-core/credentials.json` (0600), and the ChatGPT
|
|
3
|
+
* subscription session in `<data>/atomic-chatgpt-auth.json`, shared with the app.
|
|
4
|
+
*
|
|
5
|
+
* Ported from: src-tauri/src/core/auth/{store,chatgpt,state}.rs.
|
|
6
|
+
* See PLAN.md §3.2. Public API of this module is exported from this file only.
|
|
7
|
+
*/
|
|
8
|
+
export * from './api-keys.js';
|
|
9
|
+
export * from './chatgpt-store.js';
|
|
10
|
+
export * from './chatgpt-oauth.js';
|
|
11
|
+
export * from './chatgpt-auth.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/credentials/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure argv and request builders for `sd-server`: no I/O and no process, so every flag decision is
|
|
3
|
+
* tested without a binary or a model file. Port of `args.rs` in `tauri-plugin-atomic-diffusion` (app
|
|
4
|
+
* commit `ec1fd3ea7`, and the host switch of `process.rs`), itself a port of Studio's `sd_cpp_args.py`.
|
|
5
|
+
*
|
|
6
|
+
* Every flag emitted here is listed in `test/fixtures/sdcpp/required-flags.txt`, which the live test
|
|
7
|
+
* holds against the pinned binary's `--help`.
|
|
8
|
+
*/
|
|
9
|
+
import type { DiffusionBackend, DiffusionFamilyDefaults, DiffusionModality, DiffusionOffloadPolicy, ImageGenerateRequest, VideoGenerateRequest } from '../contracts/index.js';
|
|
10
|
+
import type { ResolvedInputs, ServerSpec } from './types.js';
|
|
11
|
+
/** Kill switch for the Metal text-encoder placement: `1`/`true`/`yes`/`on` keeps the encoder on Metal. */
|
|
12
|
+
export declare const METAL_TE_GPU_ENV = "ATOMIC_DIFFUSION_METAL_TE_GPU";
|
|
13
|
+
/**
|
|
14
|
+
* Opt-in for `-M vid_gen` on a video load. `sd-server` infers its modes from the model, and the flag
|
|
15
|
+
* is documented for `sd-cli`; it is emitted only when this is `1`/`true`/`yes`/`on`, until the live
|
|
16
|
+
* test has shown whether the server wants it.
|
|
17
|
+
*/
|
|
18
|
+
export declare const VID_GEN_MODE_FLAG_ENV = "ATOMIC_DIFFUSION_VID_GEN_MODE_FLAG";
|
|
19
|
+
/** The host facts the argv depends on, injected so a test can be any platform. */
|
|
20
|
+
export interface ArgsHost {
|
|
21
|
+
platform: NodeJS.Platform;
|
|
22
|
+
env: Record<string, string | undefined>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The memory policy as sd.cpp offload flags. `group` streams the model (`--offload-to-cpu`) with
|
|
26
|
+
* flash attention; `model` also puts CLIP and the VAE on the CPU and tiles the VAE.
|
|
27
|
+
*/
|
|
28
|
+
export declare function offloadFlags(policy: DiffusionOffloadPolicy): string[];
|
|
29
|
+
/** Numerically exact speed-ups: flash attention, and direct convolution in the diffusion model. */
|
|
30
|
+
export declare function speedFlags(): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Keep the text encoder on the CPU under Apple Metal. ggml's Metal backend aborts on `RMS_NORM` for
|
|
33
|
+
* non-contiguous rows with no per-op CPU fallback, so an LLM text encoder (Qwen3 for Z-Image and
|
|
34
|
+
* FLUX.2, T5 for FLUX.1) takes the whole server down on the first prompt. The encoder runs once per
|
|
35
|
+
* prompt and the denoiser every step, so pinning only the encoder keeps Metal where it matters.
|
|
36
|
+
*/
|
|
37
|
+
export declare function metalTextEncoderFlags(isMacos: boolean, envOverride: string | undefined): string[];
|
|
38
|
+
/** `-M vid_gen` for a video model, only while the environment opts in. */
|
|
39
|
+
export declare function videoModeFlags(modality: DiffusionModality, envOverride: string | undefined): string[];
|
|
40
|
+
/** An Apple M5 CPU brand string: `Apple M5`, `Apple M5 Max`. */
|
|
41
|
+
export declare function isM5Brand(brand: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* The environment `sd-server` gets for this host. ggml's Metal Tensor API is unstable on some M5 and
|
|
44
|
+
* macOS combinations: it can fail command buffers, or return NaN latents that come out as white
|
|
45
|
+
* images. On an M5 with the Metal backend it is switched off, which keeps Metal on its mature
|
|
46
|
+
* SIMD-group path; the argv is left alone, because older engine builds reject newer scaling flags.
|
|
47
|
+
*/
|
|
48
|
+
export declare function hostEnv(platform: NodeJS.Platform, backend: DiffusionBackend, cpuBrand: string | undefined): Record<string, string>;
|
|
49
|
+
/**
|
|
50
|
+
* `flags` with every `--backend <spec>` pair removed. sd.cpp concatenates repeated `--backend`
|
|
51
|
+
* values instead of replacing them, and a per-module entry beats the bare default: appending
|
|
52
|
+
* `--backend cpu` to a spec that still says `diffusion=CUDA0` would leave the denoiser on CUDA.
|
|
53
|
+
*/
|
|
54
|
+
export declare function withoutDeviceBackendFlags(flags: readonly string[]): string[];
|
|
55
|
+
/** The `extraArgs` of the one automatic recovery: everything on the CPU backend. */
|
|
56
|
+
export declare function cpuBackendExtraArgs(extraArgs: readonly string[]): string[];
|
|
57
|
+
/**
|
|
58
|
+
* True when the captured output carries a ggml unsupported-op abort. That signature is
|
|
59
|
+
* deterministic for the graph in question: a retry on the same backend fails identically, a CPU
|
|
60
|
+
* restart runs it. No other death may be retried automatically.
|
|
61
|
+
*/
|
|
62
|
+
export declare function isGgmlUnsupportedOpAbort(text: string): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* The `sd-server` argv, without the binary. Model files first, then the listener, the scratch
|
|
65
|
+
* directories sd-server insists on iterating, threads, the hardware flags (de-duplicated, stable
|
|
66
|
+
* order), `-v` so the per-step sampling lines are printed, and the caller's `extraArgs` last.
|
|
67
|
+
*/
|
|
68
|
+
export declare function buildServerArgs(spec: ServerSpec, port: number, scratchDir: string, host: ArgsHost): string[];
|
|
69
|
+
/**
|
|
70
|
+
* Output area above which a request turns VAE tiling on. The VAE's compute buffer grows with the
|
|
71
|
+
* pixel count (FLUX.2: 6.7 GB to decode at 1024², 26.6 GB at 2048², where a 2x Upscale lands and
|
|
72
|
+
* where it failed on a 24 GB card). Tiled, the peak stays at the one-tile figure. Up to 1024²
|
|
73
|
+
* nothing changes.
|
|
74
|
+
*/
|
|
75
|
+
export declare const VAE_TILING_AREA: number;
|
|
76
|
+
/**
|
|
77
|
+
* Pixel-frames (width × height × frames) above which a video request turns VAE tiling on. A video
|
|
78
|
+
* VAE decodes the whole clip in one graph, so its buffer grows with the frame count as much as with
|
|
79
|
+
* the frame size: the Wan 2.2 VAE asked Metal for 27.6 GB at 1280×704 × 121 frames (≈250 bytes per
|
|
80
|
+
* pixel-frame, 2026-09-23) and failed on a machine with 14.9 GB free. Eight megapixel-frames is
|
|
81
|
+
* about 2 GB of that, the point past which a single-graph decode stops being safe anywhere.
|
|
82
|
+
*/
|
|
83
|
+
export declare const VIDEO_VAE_TILING_PIXEL_FRAMES: number;
|
|
84
|
+
/**
|
|
85
|
+
* The `POST /sdcpp/v1/img_gen` body. The whole batch goes in one request; guidance is split the way
|
|
86
|
+
* sd.cpp expects (CFG → `txt_cfg`, FLUX distilled → `distilled_guidance`). Only set keys are sent,
|
|
87
|
+
* so the server's own defaults apply to the rest. The workflow decides which images go in. sd.cpp
|
|
88
|
+
* resizes the init image to `width`×`height` itself, which is how Upscale works.
|
|
89
|
+
*
|
|
90
|
+
* sd.cpp reads integers with `is_number_integer()` and floats with `is_number()`, so `1` for a
|
|
91
|
+
* `cfgScale` of 1.0 is accepted (checked in its `common.cpp`).
|
|
92
|
+
*/
|
|
93
|
+
export declare function buildImgGenRequest(request: ImageGenerateRequest, defaults: DiffusionFamilyDefaults, seed: number, inputs: ResolvedInputs): Record<string, unknown>;
|
|
94
|
+
/**
|
|
95
|
+
* The `POST /sdcpp/v1/vid_gen` body: one clip, the frame count and rate resolved against the family,
|
|
96
|
+
* `custom_sigmas` when the family ships a fixed schedule for exactly this many steps (LTX-2 distilled),
|
|
97
|
+
* VP8 in WebM (the one container the app plays), and the first and last frames when a later workflow
|
|
98
|
+
* resolves them. Only set keys are sent, like the image body.
|
|
99
|
+
*/
|
|
100
|
+
export declare function buildVidGenRequest(request: VideoGenerateRequest, defaults: DiffusionFamilyDefaults, seed: number, inputs: ResolvedInputs): Record<string, unknown>;
|
|
101
|
+
/** One line for the log: the model's basename and the numeric settings, never a path or a prompt. */
|
|
102
|
+
export declare function commandSummaryForLog(args: readonly string[]): string;
|