@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,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The machinery every agent-config writer shares, ported from `core/system/commands.rs`.
|
|
3
|
+
*
|
|
4
|
+
* Byte-for-byte compatibility with the Rust writers is the whole point (the golden fixtures in
|
|
5
|
+
* `test/fixtures/app/agent-config/` compare exact file contents), so three details that look like
|
|
6
|
+
* formatting are actually contract:
|
|
7
|
+
*
|
|
8
|
+
* - `serde_json` is built without `preserve_order`, so every JSON file it writes has its object
|
|
9
|
+
* keys sorted alphabetically, recursively. `JSON.stringify` preserves insertion order and would
|
|
10
|
+
* diverge on any file with more than one key.
|
|
11
|
+
* - `serde_yaml` 0.9 does not indent sequence items under their key.
|
|
12
|
+
* - The managed shell-rc block has an exact shape, including where its blank lines fall.
|
|
13
|
+
*/
|
|
14
|
+
import { mkdir, readFile, rename, rm, stat, writeFile } from 'node:fs/promises';
|
|
15
|
+
import { dirname, isAbsolute, join, resolve } from 'node:path';
|
|
16
|
+
import { stringify as yamlStringify, parse as yamlParse } from 'yaml';
|
|
17
|
+
import { AtomicCoreError } from '../contracts/index.js';
|
|
18
|
+
export const ATOMIC_MANAGED_BEGIN = '# >>> Atomic Chat (managed) >>>';
|
|
19
|
+
export const ATOMIC_MANAGED_END = '# <<< Atomic Chat (managed) <<<';
|
|
20
|
+
export function nodeConfigFs(home) {
|
|
21
|
+
const abs = (relative) => (isAbsolute(relative) ? relative : join(home, ...relative.split('/')));
|
|
22
|
+
return {
|
|
23
|
+
home,
|
|
24
|
+
absolute: abs,
|
|
25
|
+
read: (relative) => readFile(abs(relative), 'utf8').then((t) => t, () => undefined),
|
|
26
|
+
write: async (relative, contents, options = {}) => {
|
|
27
|
+
const path = abs(relative);
|
|
28
|
+
await mkdir(dirname(path), { recursive: true });
|
|
29
|
+
// Write beside the target and rename over it, so a crash cannot truncate a user's config.
|
|
30
|
+
const tmp = `${path}.atomic-tmp`;
|
|
31
|
+
await writeFile(tmp, contents, options.mode !== undefined ? { mode: options.mode } : {});
|
|
32
|
+
await rename(tmp, path).catch(async (e) => {
|
|
33
|
+
await rm(tmp, { force: true }).catch(() => { });
|
|
34
|
+
throw e;
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
mkdirp: (relative) => mkdir(abs(relative), { recursive: true }).then(() => undefined),
|
|
38
|
+
exists: (relative) => stat(abs(relative)).then(() => true, () => false),
|
|
39
|
+
remove: (relative) => rm(abs(relative), { force: true }),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** `serde_json::to_string_pretty` + the newline every writer appends: keys sorted, 2-space indent. */
|
|
43
|
+
export function canonicalJson(value) {
|
|
44
|
+
return `${stringifySorted(value, 0)}\n`;
|
|
45
|
+
}
|
|
46
|
+
function stringifySorted(value, depth) {
|
|
47
|
+
if (value === null || value === undefined)
|
|
48
|
+
return 'null';
|
|
49
|
+
if (typeof value === 'string' || typeof value === 'boolean')
|
|
50
|
+
return JSON.stringify(value);
|
|
51
|
+
if (typeof value === 'number')
|
|
52
|
+
return Number.isFinite(value) ? JSON.stringify(value) : 'null';
|
|
53
|
+
const pad = ' '.repeat(depth + 1);
|
|
54
|
+
const closePad = ' '.repeat(depth);
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
if (value.length === 0)
|
|
57
|
+
return '[]';
|
|
58
|
+
const items = value.map((item) => `${pad}${stringifySorted(item, depth + 1)}`);
|
|
59
|
+
return `[\n${items.join(',\n')}\n${closePad}]`;
|
|
60
|
+
}
|
|
61
|
+
if (typeof value === 'object') {
|
|
62
|
+
const entries = Object.entries(value).filter(([, v]) => v !== undefined);
|
|
63
|
+
if (entries.length === 0)
|
|
64
|
+
return '{}';
|
|
65
|
+
// Rust's BTreeMap ordering: byte-wise, which for the keys these files use is code-unit order.
|
|
66
|
+
entries.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
67
|
+
const items = entries.map(([key, v]) => `${pad}${JSON.stringify(key)}: ${stringifySorted(v, depth + 1)}`);
|
|
68
|
+
return `{\n${items.join(',\n')}\n${closePad}}`;
|
|
69
|
+
}
|
|
70
|
+
return 'null';
|
|
71
|
+
}
|
|
72
|
+
/** Strict `serde_json`: a parse failure is fatal and nothing gets written. */
|
|
73
|
+
export function parseJsonStrict(text, path) {
|
|
74
|
+
const trimmed = text.trim();
|
|
75
|
+
if (trimmed === '')
|
|
76
|
+
return {};
|
|
77
|
+
try {
|
|
78
|
+
return JSON.parse(trimmed);
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
throw new AtomicCoreError('IO_ERROR', `Failed to parse ${path}`, e.message);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The json5 reader the Rust side uses for `.jsonc`-style files: comments and trailing commas are
|
|
86
|
+
* accepted and silently dropped on write. Only the tolerances those files actually use are
|
|
87
|
+
* implemented; anything else still has to be valid JSON.
|
|
88
|
+
*/
|
|
89
|
+
export function parseJsonLenient(text, path) {
|
|
90
|
+
const trimmed = text.trim();
|
|
91
|
+
if (trimmed === '')
|
|
92
|
+
return {};
|
|
93
|
+
try {
|
|
94
|
+
return JSON.parse(stripJsonComments(trimmed));
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
throw new AtomicCoreError('IO_ERROR', `Failed to parse ${path}`, e.message);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Remove `//` and block comments plus trailing commas, respecting strings and escapes. */
|
|
101
|
+
export function stripJsonComments(text) {
|
|
102
|
+
let out = '';
|
|
103
|
+
let inString = false;
|
|
104
|
+
let escaped = false;
|
|
105
|
+
for (let i = 0; i < text.length; i++) {
|
|
106
|
+
const char = text[i];
|
|
107
|
+
if (inString) {
|
|
108
|
+
out += char;
|
|
109
|
+
if (escaped)
|
|
110
|
+
escaped = false;
|
|
111
|
+
else if (char === '\\')
|
|
112
|
+
escaped = true;
|
|
113
|
+
else if (char === '"')
|
|
114
|
+
inString = false;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (char === '"') {
|
|
118
|
+
inString = true;
|
|
119
|
+
out += char;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (char === '/' && text[i + 1] === '/') {
|
|
123
|
+
while (i < text.length && text[i] !== '\n')
|
|
124
|
+
i++;
|
|
125
|
+
out += '\n';
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (char === '/' && text[i + 1] === '*') {
|
|
129
|
+
i += 2;
|
|
130
|
+
while (i < text.length && !(text[i] === '*' && text[i + 1] === '/'))
|
|
131
|
+
i++;
|
|
132
|
+
i++;
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
out += char;
|
|
136
|
+
}
|
|
137
|
+
return out.replace(/,(\s*[}\]])/g, '$1');
|
|
138
|
+
}
|
|
139
|
+
// ── YAML ────────────────────────────────────────────────────────────────────────────────────────
|
|
140
|
+
/** `serde_yaml` 0.9 shape: sequence items sit at their key's indent, no document marker. */
|
|
141
|
+
export function canonicalYaml(value) {
|
|
142
|
+
return yamlStringify(value, { indentSeq: false, lineWidth: 0, nullStr: 'null' });
|
|
143
|
+
}
|
|
144
|
+
export function parseYaml(text, path) {
|
|
145
|
+
try {
|
|
146
|
+
return yamlParse(text) ?? {};
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
throw new AtomicCoreError('IO_ERROR', `Failed to parse ${path}`, e.message);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// ── managed blocks ──────────────────────────────────────────────────────────────────────────────
|
|
153
|
+
/**
|
|
154
|
+
* Remove every `# >>> Atomic Chat (managed) >>> … # <<< Atomic Chat (managed) <<<` region. Some
|
|
155
|
+
* writers (Codex) keep two, so this strips all of them, and — like the Rust original — it does not
|
|
156
|
+
* consume the newline after the closing marker, which is why blank-line residue is expected.
|
|
157
|
+
*/
|
|
158
|
+
export function stripAtomicManagedBlock(content) {
|
|
159
|
+
let result = content;
|
|
160
|
+
for (;;) {
|
|
161
|
+
const start = result.indexOf(ATOMIC_MANAGED_BEGIN);
|
|
162
|
+
const end = result.indexOf(ATOMIC_MANAGED_END);
|
|
163
|
+
if (start < 0 || end < 0 || end < start)
|
|
164
|
+
return result;
|
|
165
|
+
result = result.slice(0, start) + result.slice(end + ATOMIC_MANAGED_END.length);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/** Which shell rc file the env-var agents write to, from `$SHELL` and the platform. */
|
|
169
|
+
export function shellRcFile(shell, platform) {
|
|
170
|
+
if (shell && shell.endsWith('/bash'))
|
|
171
|
+
return platform === 'darwin' ? '.bash_profile' : '.bashrc';
|
|
172
|
+
return '.zshenv';
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* The rc-file block the five env-configured agents write (`write_marked_env_to_shell`).
|
|
176
|
+
*
|
|
177
|
+
* `marker` is a single comment line that opens AND closes the region — each agent has its own
|
|
178
|
+
* (`# Atomic Chat - Goose Config`), so two agents never fight over one block. A line that merely
|
|
179
|
+
* *starts with* the marker toggles the region, exactly as the Rust filter does.
|
|
180
|
+
*
|
|
181
|
+
* Besides replacing our own block, it drops any `export <PREFIX>…` line even outside it — a safety
|
|
182
|
+
* net against a stale hand-written export overriding us, which also means the user's own
|
|
183
|
+
* `export GOOSE_*` lines are removed, while an unrelated `export OPENAI_API_KEY` survives because
|
|
184
|
+
* Goose's prefix is `GOOSE_`. Values are single-quoted without escaping, exactly as the Rust writer
|
|
185
|
+
* does, and each entry carries its own newline — which is where the blank line before the closing
|
|
186
|
+
* marker comes from.
|
|
187
|
+
*/
|
|
188
|
+
export function renderMarkedEnvBlock(existing, marker, prefix, entries) {
|
|
189
|
+
const exportLine = `export ${prefix}`;
|
|
190
|
+
const cleaned = [];
|
|
191
|
+
let inBlock = false;
|
|
192
|
+
for (const line of existing.split('\n')) {
|
|
193
|
+
if (line.startsWith(marker)) {
|
|
194
|
+
inBlock = !inBlock;
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
if (inBlock)
|
|
198
|
+
continue;
|
|
199
|
+
if (line.startsWith(exportLine))
|
|
200
|
+
continue;
|
|
201
|
+
cleaned.push(line);
|
|
202
|
+
}
|
|
203
|
+
const body = entries.map((e) => `export ${e.key}='${e.value}'\n`).join('');
|
|
204
|
+
return `${cleaned.join('\n')}${marker}\n${body}\n${marker}\n`;
|
|
205
|
+
}
|
|
206
|
+
/** Write the block into the right rc file for this shell. */
|
|
207
|
+
export async function writeMarkedEnvToShell(fs, shell, platform, marker, prefix, entries) {
|
|
208
|
+
const rc = shellRcFile(shell, platform);
|
|
209
|
+
const existing = (await fs.read(rc)) ?? '';
|
|
210
|
+
await fs.write(rc, renderMarkedEnvBlock(existing, marker, prefix, entries));
|
|
211
|
+
}
|
|
212
|
+
// ── small shared helpers ────────────────────────────────────────────────────────────────────────
|
|
213
|
+
/** TOML basic string escaping: only `\` and `"`, as the Rust writer does. */
|
|
214
|
+
export function tomlBasicStringEscape(value) {
|
|
215
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
216
|
+
}
|
|
217
|
+
/** The key an agent should use when the user configured none. Not uniform across agents. */
|
|
218
|
+
export function keyOr(apiKey, fallback) {
|
|
219
|
+
return apiKey && apiKey.length > 0 ? apiKey : fallback;
|
|
220
|
+
}
|
|
221
|
+
/** Expand a leading `~` against the home directory, as the Rust path helpers do. */
|
|
222
|
+
export function expandTilde(path, home) {
|
|
223
|
+
if (path === '~')
|
|
224
|
+
return home;
|
|
225
|
+
if (path.startsWith('~/') || path.startsWith('~\\'))
|
|
226
|
+
return resolve(home, path.slice(2));
|
|
227
|
+
return path;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=config-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-io.js","sourceRoot":"","sources":["../../src/integrations/config-io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic Agent keeps its user config in `<state dir>/config.json` (default `~/.atomic-agent`,
|
|
3
|
+
* overridable with `ATOMIC_AGENT_STATE_DIR`). The file is the agent's own trust surface, so the
|
|
4
|
+
* write is a merge: other providers, keys and blocks survive, and `version` is deliberately not
|
|
5
|
+
* stamped — the agent fills it, and every missing block, with its own defaults on the next start.
|
|
6
|
+
*
|
|
7
|
+
* Two rules are easy to get subtly wrong:
|
|
8
|
+
*
|
|
9
|
+
* - A brand-new `llm.providers` list needs the agent's OWN default `local-llama` entry alongside
|
|
10
|
+
* ours, because the agent refuses to load a file whose `activeEmbeddingProvider` names a provider
|
|
11
|
+
* that is not in the list. That entry's `url` (chat) is mode-aware, and its `baseUrl` (embeddings)
|
|
12
|
+
* mirrors where the agent would have looked with no `llm` block at all — otherwise creating the
|
|
13
|
+
* block silently repoints embeddings at the chat daemon.
|
|
14
|
+
* - `activeEmbeddingProvider` is repaired only when it is missing or dangling, and always to
|
|
15
|
+
* `local-llama`. Repairing it to US would quietly hand memory recall to Atomic Chat, which is not
|
|
16
|
+
* what Run asked for.
|
|
17
|
+
*/
|
|
18
|
+
import type { JsonValue } from '../config-io.js';
|
|
19
|
+
import type { JsonObject } from './json-tree.js';
|
|
20
|
+
import type { ConfigureWriter } from './registry.js';
|
|
21
|
+
/**
|
|
22
|
+
* Where the agent would look for embeddings if we were not writing an `llm` block at all: the
|
|
23
|
+
* no-block branch of its embedding-provider registry, which reads
|
|
24
|
+
* `embeddings.enabled ? embeddings.url : localModels.url`. `chatUrl` is the mode-aware URL already
|
|
25
|
+
* computed for this entry, because `localModels.url` is itself resolved to the managed daemon before
|
|
26
|
+
* that branch sees it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function atomicAgentEmbeddingBaseUrl(root: JsonObject, chatUrl: string): string;
|
|
29
|
+
/** The `llama-server` entry Atomic Agent would synthesise for itself, from the same inputs. */
|
|
30
|
+
export declare function atomicAgentLocalLlamaEntry(root: JsonObject): JsonObject;
|
|
31
|
+
/** The whole merge, with no I/O, so the rules above are testable without a state directory. */
|
|
32
|
+
export declare function atomicAgentPatchConfig(parsed: JsonValue, apiUrl: string, model: string, apiKey: string): JsonObject;
|
|
33
|
+
export declare const configureAtomicAgent: ConfigureWriter;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic Agent keeps its user config in `<state dir>/config.json` (default `~/.atomic-agent`,
|
|
3
|
+
* overridable with `ATOMIC_AGENT_STATE_DIR`). The file is the agent's own trust surface, so the
|
|
4
|
+
* write is a merge: other providers, keys and blocks survive, and `version` is deliberately not
|
|
5
|
+
* stamped — the agent fills it, and every missing block, with its own defaults on the next start.
|
|
6
|
+
*
|
|
7
|
+
* Two rules are easy to get subtly wrong:
|
|
8
|
+
*
|
|
9
|
+
* - A brand-new `llm.providers` list needs the agent's OWN default `local-llama` entry alongside
|
|
10
|
+
* ours, because the agent refuses to load a file whose `activeEmbeddingProvider` names a provider
|
|
11
|
+
* that is not in the list. That entry's `url` (chat) is mode-aware, and its `baseUrl` (embeddings)
|
|
12
|
+
* mirrors where the agent would have looked with no `llm` block at all — otherwise creating the
|
|
13
|
+
* block silently repoints embeddings at the chat daemon.
|
|
14
|
+
* - `activeEmbeddingProvider` is repaired only when it is missing or dangling, and always to
|
|
15
|
+
* `local-llama`. Repairing it to US would quietly hand memory recall to Atomic Chat, which is not
|
|
16
|
+
* what Run asked for.
|
|
17
|
+
*/
|
|
18
|
+
import { AtomicCoreError } from '../../contracts/index.js';
|
|
19
|
+
import { canonicalJson, parseJsonStrict } from '../config-io.js';
|
|
20
|
+
import { asJsonArray, asJsonObject } from './json-tree.js';
|
|
21
|
+
import { registerWriter } from './registry.js';
|
|
22
|
+
const PROVIDER_ID = 'atomic-chat';
|
|
23
|
+
/** The agent's own llama.cpp entry; the repair target for a dangling embedding selection. */
|
|
24
|
+
const LOCAL_PROVIDER_ID = 'local-llama';
|
|
25
|
+
const DEFAULT_LLAMA_URL = 'http://127.0.0.1:8080';
|
|
26
|
+
const DEFAULT_MANAGED_PORT = 19_091;
|
|
27
|
+
const DEFAULT_EMBEDDINGS_PORT = 19_092;
|
|
28
|
+
const REQUEST_TIMEOUT_MS = 300_000;
|
|
29
|
+
function numberAt(value, key) {
|
|
30
|
+
const found = asJsonObject(value)?.[key];
|
|
31
|
+
return typeof found === 'number' ? found : undefined;
|
|
32
|
+
}
|
|
33
|
+
function stringAt(value, key) {
|
|
34
|
+
const found = asJsonObject(value)?.[key];
|
|
35
|
+
return typeof found === 'string' && found.length > 0 ? found : undefined;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Where the agent would look for embeddings if we were not writing an `llm` block at all: the
|
|
39
|
+
* no-block branch of its embedding-provider registry, which reads
|
|
40
|
+
* `embeddings.enabled ? embeddings.url : localModels.url`. `chatUrl` is the mode-aware URL already
|
|
41
|
+
* computed for this entry, because `localModels.url` is itself resolved to the managed daemon before
|
|
42
|
+
* that branch sees it.
|
|
43
|
+
*/
|
|
44
|
+
export function atomicAgentEmbeddingBaseUrl(root, chatUrl) {
|
|
45
|
+
const embeddings = asJsonObject(root['localModels'])?.['embeddings'];
|
|
46
|
+
if (asJsonObject(embeddings)?.['enabled'] !== true)
|
|
47
|
+
return chatUrl;
|
|
48
|
+
const explicit = stringAt(embeddings, 'url');
|
|
49
|
+
if (explicit)
|
|
50
|
+
return explicit;
|
|
51
|
+
return `http://127.0.0.1:${numberAt(embeddings, 'port') ?? DEFAULT_EMBEDDINGS_PORT}`;
|
|
52
|
+
}
|
|
53
|
+
/** The `llama-server` entry Atomic Agent would synthesise for itself, from the same inputs. */
|
|
54
|
+
export function atomicAgentLocalLlamaEntry(root) {
|
|
55
|
+
const localModels = asJsonObject(root['localModels']);
|
|
56
|
+
// Under `mode: "managed"` the agent ignores `localModels.url` and talks to the daemon it runs.
|
|
57
|
+
const url = localModels?.['mode'] === 'managed'
|
|
58
|
+
? `http://127.0.0.1:${numberAt(localModels['managed'], 'port') ?? DEFAULT_MANAGED_PORT}`
|
|
59
|
+
: (stringAt(root['localModels'], 'url') ?? DEFAULT_LLAMA_URL);
|
|
60
|
+
return {
|
|
61
|
+
id: LOCAL_PROVIDER_ID,
|
|
62
|
+
kind: 'llama-server',
|
|
63
|
+
baseUrl: atomicAgentEmbeddingBaseUrl(root, url),
|
|
64
|
+
url,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function lists(providers, id) {
|
|
68
|
+
return providers.some((p) => asJsonObject(p)?.['id'] === id);
|
|
69
|
+
}
|
|
70
|
+
/** The whole merge, with no I/O, so the rules above are testable without a state directory. */
|
|
71
|
+
export function atomicAgentPatchConfig(parsed, apiUrl, model, apiKey) {
|
|
72
|
+
// The agent's `parseOptionalString` rejects `""` outright rather than treating it as absent, so an
|
|
73
|
+
// empty model would take the whole file down at its next start. Fail before touching anything.
|
|
74
|
+
if (model.trim() === '') {
|
|
75
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', 'Atomic Agent needs a model: none is running.');
|
|
76
|
+
}
|
|
77
|
+
const root = asJsonObject(parsed);
|
|
78
|
+
if (!root)
|
|
79
|
+
throw new AtomicCoreError('IO_ERROR', 'config.json is not a JSON object');
|
|
80
|
+
// Read before the `llm` block is rewritten: it is derived from `localModels`, never written back.
|
|
81
|
+
const localLlama = atomicAgentLocalLlamaEntry(root);
|
|
82
|
+
if (asJsonObject(root['llm']) === undefined)
|
|
83
|
+
root['llm'] = {};
|
|
84
|
+
const llm = asJsonObject(root['llm']);
|
|
85
|
+
const currentEmbedding = typeof llm['activeEmbeddingProvider'] === 'string' ? llm['activeEmbeddingProvider'] : undefined;
|
|
86
|
+
const providers = asJsonArray(llm['providers']) ?? [];
|
|
87
|
+
llm['providers'] = providers;
|
|
88
|
+
if (providers.length === 0)
|
|
89
|
+
providers.push({ ...localLlama });
|
|
90
|
+
const existing = providers.findIndex((p) => asJsonObject(p)?.['id'] === PROVIDER_ID);
|
|
91
|
+
// A timeout the user tuned on our entry is theirs; we only fill the gap.
|
|
92
|
+
const timeout = existing >= 0
|
|
93
|
+
? (numberAt(providers[existing], 'requestTimeoutMs') ?? REQUEST_TIMEOUT_MS)
|
|
94
|
+
: REQUEST_TIMEOUT_MS;
|
|
95
|
+
const entry = {
|
|
96
|
+
id: PROVIDER_ID,
|
|
97
|
+
kind: 'openai-compatible',
|
|
98
|
+
baseUrl: apiUrl,
|
|
99
|
+
// Stored as an `openai-compatible` provider, and most such clients reject an empty key.
|
|
100
|
+
apiKey: apiKey.trim() === '' ? 'atomic' : apiKey.trim(),
|
|
101
|
+
defaultChatModel: model.trim(),
|
|
102
|
+
supportsTools: true,
|
|
103
|
+
requestTimeoutMs: timeout,
|
|
104
|
+
};
|
|
105
|
+
if (existing >= 0)
|
|
106
|
+
providers[existing] = entry;
|
|
107
|
+
else
|
|
108
|
+
providers.push(entry);
|
|
109
|
+
// Embeddings drive memory recall, not chat, so a working selection is left alone.
|
|
110
|
+
const repair = currentEmbedding === undefined || !lists(providers, currentEmbedding);
|
|
111
|
+
if (repair && !lists(providers, LOCAL_PROVIDER_ID))
|
|
112
|
+
providers.push(localLlama);
|
|
113
|
+
// Pressing Run is an explicit "use this", so the text provider is switched outright.
|
|
114
|
+
llm['activeTextProvider'] = PROVIDER_ID;
|
|
115
|
+
if (repair)
|
|
116
|
+
llm['activeEmbeddingProvider'] = LOCAL_PROVIDER_ID;
|
|
117
|
+
return root;
|
|
118
|
+
}
|
|
119
|
+
export const configureAtomicAgent = async ({ apiUrl, model, apiKey, fs, env }) => {
|
|
120
|
+
const override = env['ATOMIC_AGENT_STATE_DIR']?.trim();
|
|
121
|
+
const path = `${override && override !== '' ? override : '.atomic-agent'}/config.json`;
|
|
122
|
+
const text = await fs.read(path);
|
|
123
|
+
const parsed = text === undefined ? {} : parseJsonStrict(text, fs.absolute(path));
|
|
124
|
+
await fs.write(path, canonicalJson(atomicAgentPatchConfig(parsed, apiUrl, model, apiKey)));
|
|
125
|
+
};
|
|
126
|
+
registerWriter('atomic-agent', configureAtomicAgent);
|
|
127
|
+
//# sourceMappingURL=atomic-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-agent.js","sourceRoot":"","sources":["../../../src/integrations/configure/atomic-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code — `~/.claude/settings.json`.
|
|
3
|
+
*
|
|
4
|
+
* Port of `configure_claude_code` in `src-tauri/src/core/system/commands.rs`. Claude Code takes its
|
|
5
|
+
* endpoint from environment variables that its settings file can carry, so pointing it at a local
|
|
6
|
+
* model is an upsert into that file's `env` map plus the top-level `model` setting.
|
|
7
|
+
*
|
|
8
|
+
* Claude Code appends its own `/v1`, so `apiUrl` here is the bare `host:port` (the catalog marks
|
|
9
|
+
* this agent `endpointWithPrefix: false`).
|
|
10
|
+
*
|
|
11
|
+
* An empty model means "nothing is loaded". `cli::integrations::configure` turns it into `None` for
|
|
12
|
+
* this agent, and the writer then leaves every model key alone — it neither writes them nor removes
|
|
13
|
+
* ones an earlier run left behind, so a rerun without a model keeps pointing at the last one.
|
|
14
|
+
*/
|
|
15
|
+
import type { ConfigureInput } from './registry.js';
|
|
16
|
+
export declare function configureClaudeCode(input: ConfigureInput): Promise<void>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code — `~/.claude/settings.json`.
|
|
3
|
+
*
|
|
4
|
+
* Port of `configure_claude_code` in `src-tauri/src/core/system/commands.rs`. Claude Code takes its
|
|
5
|
+
* endpoint from environment variables that its settings file can carry, so pointing it at a local
|
|
6
|
+
* model is an upsert into that file's `env` map plus the top-level `model` setting.
|
|
7
|
+
*
|
|
8
|
+
* Claude Code appends its own `/v1`, so `apiUrl` here is the bare `host:port` (the catalog marks
|
|
9
|
+
* this agent `endpointWithPrefix: false`).
|
|
10
|
+
*
|
|
11
|
+
* An empty model means "nothing is loaded". `cli::integrations::configure` turns it into `None` for
|
|
12
|
+
* this agent, and the writer then leaves every model key alone — it neither writes them nor removes
|
|
13
|
+
* ones an earlier run left behind, so a rerun without a model keeps pointing at the last one.
|
|
14
|
+
*/
|
|
15
|
+
import { AtomicCoreError } from '../../contracts/index.js';
|
|
16
|
+
import { canonicalJson, keyOr, parseJsonStrict } from '../config-io.js';
|
|
17
|
+
import { asJsonObject } from './json-tree.js';
|
|
18
|
+
import { registerWriter } from './registry.js';
|
|
19
|
+
const DIR = '.claude';
|
|
20
|
+
const PATH = `${DIR}/settings.json`;
|
|
21
|
+
export async function configureClaudeCode(input) {
|
|
22
|
+
const { fs, apiUrl, model, apiKey } = input;
|
|
23
|
+
await fs.mkdirp(DIR);
|
|
24
|
+
const text = await fs.read(PATH);
|
|
25
|
+
const parsed = text === undefined ? {} : parseJsonStrict(text, fs.absolute(PATH));
|
|
26
|
+
const root = asJsonObject(parsed);
|
|
27
|
+
if (!root)
|
|
28
|
+
throw new AtomicCoreError('IO_ERROR', 'settings.json is not a JSON object');
|
|
29
|
+
const env = asJsonObject(root['env']) ?? {};
|
|
30
|
+
root['env'] = env;
|
|
31
|
+
env['ANTHROPIC_BASE_URL'] = apiUrl;
|
|
32
|
+
env['ANTHROPIC_AUTH_TOKEN'] = keyOr(apiKey, 'atomic');
|
|
33
|
+
if (model !== '') {
|
|
34
|
+
// ANTHROPIC_MODEL overrides the `model` setting; the tier aliases make every Opus/Sonnet/Haiku
|
|
35
|
+
// request route to the single local model too.
|
|
36
|
+
env['ANTHROPIC_MODEL'] = model;
|
|
37
|
+
env['ANTHROPIC_DEFAULT_OPUS_MODEL'] = model;
|
|
38
|
+
env['ANTHROPIC_DEFAULT_SONNET_MODEL'] = model;
|
|
39
|
+
env['ANTHROPIC_DEFAULT_HAIKU_MODEL'] = model;
|
|
40
|
+
root['model'] = model;
|
|
41
|
+
}
|
|
42
|
+
await fs.write(PATH, canonicalJson(root));
|
|
43
|
+
}
|
|
44
|
+
registerWriter('claude-code', configureClaudeCode);
|
|
45
|
+
//# sourceMappingURL=claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/integrations/configure/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,GAAG,GAAG,SAAS,CAAA;AACrB,MAAM,IAAI,GAAG,GAAG,GAAG,gBAAgB,CAAA;AAEnC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAqB;IAC7D,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAC3C,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAEpB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IACjF,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,oCAAoC,CAAC,CAAA;IAEtF,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;IAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;IACjB,GAAG,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAA;IAClC,GAAG,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAErD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,+FAA+F;QAC/F,+CAA+C;QAC/C,GAAG,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAA;QAC9B,GAAG,CAAC,8BAA8B,CAAC,GAAG,KAAK,CAAA;QAC3C,GAAG,CAAC,gCAAgC,CAAC,GAAG,KAAK,CAAA;QAC7C,GAAG,CAAC,+BAA+B,CAAC,GAAG,KAAK,CAAA;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;IACvB,CAAC;IAED,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED,cAAc,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cline — no config file at all.
|
|
3
|
+
*
|
|
4
|
+
* Port of `configure_cline` in `src-tauri/src/core/system/commands.rs`. Cline stores its provider
|
|
5
|
+
* settings itself; the supported way in is its own `cline auth` subcommand, so configuring it means
|
|
6
|
+
* running a process and reporting what it said. Nothing is written to disk by us.
|
|
7
|
+
*
|
|
8
|
+
* On Windows the npm-installed `cline` is a batch shim (`cline.cmd`), which `CreateProcessW` refuses
|
|
9
|
+
* to execute directly, so the call is routed through `cmd /C`.
|
|
10
|
+
*/
|
|
11
|
+
import type { ConfigureInput } from './registry.js';
|
|
12
|
+
export interface SpawnResult {
|
|
13
|
+
code: number;
|
|
14
|
+
stdout: string;
|
|
15
|
+
stderr: string;
|
|
16
|
+
}
|
|
17
|
+
/** Argv for `cline auth`, split out so both the writer and its tests can name the exact command. */
|
|
18
|
+
export declare function clineAuthCommand(apiUrl: string, model: string, apiKey: string, platform: NodeJS.Platform): {
|
|
19
|
+
program: string;
|
|
20
|
+
args: string[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* The runner used when the caller injects none. A process that ran and failed is a result, not an
|
|
24
|
+
* exception — only a process that could not be started at all rejects, because those are the two
|
|
25
|
+
* outcomes Cline's caller has to report differently.
|
|
26
|
+
*/
|
|
27
|
+
export declare function spawnProcess(program: string, args: string[]): Promise<SpawnResult>;
|
|
28
|
+
export declare function configureCline(input: ConfigureInput): Promise<void>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cline — no config file at all.
|
|
3
|
+
*
|
|
4
|
+
* Port of `configure_cline` in `src-tauri/src/core/system/commands.rs`. Cline stores its provider
|
|
5
|
+
* settings itself; the supported way in is its own `cline auth` subcommand, so configuring it means
|
|
6
|
+
* running a process and reporting what it said. Nothing is written to disk by us.
|
|
7
|
+
*
|
|
8
|
+
* On Windows the npm-installed `cline` is a batch shim (`cline.cmd`), which `CreateProcessW` refuses
|
|
9
|
+
* to execute directly, so the call is routed through `cmd /C`.
|
|
10
|
+
*/
|
|
11
|
+
import { execFile } from 'node:child_process';
|
|
12
|
+
import { AtomicCoreError } from '../../contracts/index.js';
|
|
13
|
+
import { keyOr } from '../config-io.js';
|
|
14
|
+
import { registerWriter } from './registry.js';
|
|
15
|
+
/** Argv for `cline auth`, split out so both the writer and its tests can name the exact command. */
|
|
16
|
+
export function clineAuthCommand(apiUrl, model, apiKey, platform) {
|
|
17
|
+
// Cline rejects an empty `--apikey` (and an empty `--modelid`), so a keyless local server gets a
|
|
18
|
+
// non-empty placeholder. Note it is `local` here, not the `atomic` the file-writing agents use.
|
|
19
|
+
const args = [
|
|
20
|
+
'auth',
|
|
21
|
+
'--provider',
|
|
22
|
+
'openai-compatible',
|
|
23
|
+
'--apikey',
|
|
24
|
+
keyOr(apiKey, 'local'),
|
|
25
|
+
'--modelid',
|
|
26
|
+
model,
|
|
27
|
+
'--baseurl',
|
|
28
|
+
apiUrl,
|
|
29
|
+
];
|
|
30
|
+
return platform === 'win32'
|
|
31
|
+
? { program: 'cmd', args: ['/C', 'cline', ...args] }
|
|
32
|
+
: { program: 'cline', args };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The runner used when the caller injects none. A process that ran and failed is a result, not an
|
|
36
|
+
* exception — only a process that could not be started at all rejects, because those are the two
|
|
37
|
+
* outcomes Cline's caller has to report differently.
|
|
38
|
+
*/
|
|
39
|
+
export function spawnProcess(program, args) {
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
execFile(program, args, { windowsHide: true }, (error, stdout, stderr) => {
|
|
42
|
+
// `execFile` reports a non-zero exit and a failure to start the same way; only the latter has
|
|
43
|
+
// no exit code, and only the latter is a spawn error as far as the message goes.
|
|
44
|
+
const code = error && typeof error.code === 'number' ? error.code : error ? -1 : 0;
|
|
45
|
+
if (error && typeof error.code !== 'number')
|
|
46
|
+
reject(error);
|
|
47
|
+
else
|
|
48
|
+
resolve({ code, stdout, stderr });
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export async function configureCline(input) {
|
|
53
|
+
const { program, args } = clineAuthCommand(input.apiUrl, input.model, input.apiKey, input.platform);
|
|
54
|
+
const spawn = input.spawn ?? spawnProcess;
|
|
55
|
+
let result;
|
|
56
|
+
try {
|
|
57
|
+
result = await spawn(program, args);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
throw new AtomicCoreError('IO_ERROR', `Failed to spawn 'cline': ${e.message}`);
|
|
61
|
+
}
|
|
62
|
+
if (result.code !== 0) {
|
|
63
|
+
// The stream split for `cline auth` is undocumented, so prefer stderr and fall back to stdout.
|
|
64
|
+
const stderr = result.stderr.trim();
|
|
65
|
+
const detail = stderr === '' ? result.stdout.trim() : stderr;
|
|
66
|
+
throw new AtomicCoreError('INTERNAL_ERROR', `\`cline auth\` failed: ${detail}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
registerWriter('cline', configureCline);
|
|
70
|
+
//# sourceMappingURL=cline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cline.js","sourceRoot":"","sources":["../../../src/integrations/configure/cline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex CLI — `~/.codex/config.toml`.
|
|
3
|
+
*
|
|
4
|
+
* Port of `configure_codex` in `src-tauri/src/core/system/commands.rs`. This is the only writer that
|
|
5
|
+
* edits TOML, and it does it textually rather than by parsing: the file is the user's, so the two
|
|
6
|
+
* regions we own are delimited by managed markers and everything between them is left alone.
|
|
7
|
+
*
|
|
8
|
+
* Two regions, not one, because Codex 0.135+ makes Atomic the default provider through the bare
|
|
9
|
+
* root keys `model` / `model_provider`, and bare TOML keys must precede every `[table]`. So a head
|
|
10
|
+
* block goes at the very top, the user's content follows, and the `[model_providers.atomic]` table
|
|
11
|
+
* goes last. Rerunning strips both regions first, which is why a rerun is idempotent.
|
|
12
|
+
*
|
|
13
|
+
* The user's content is `trimEnd`-ed but never trimmed at the start: leading blank lines left by
|
|
14
|
+
* stripping a previous head block are part of the recorded output.
|
|
15
|
+
*/
|
|
16
|
+
import type { ConfigureInput } from './registry.js';
|
|
17
|
+
export declare function configureCodex(input: ConfigureInput): Promise<void>;
|