@bastani/atomic 0.9.11-alpha.7 → 0.9.11-alpha.8
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/CHANGELOG.md +24 -0
- package/README.md +3 -5
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/mcp/sampling-handler.ts +1 -5
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +1 -0
- package/dist/builtin/workflows/README.md +1 -1
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +1 -24
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +31 -28
- package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +26 -0
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +3 -2
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +5 -5
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +3 -3
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +2 -2
- package/dist/cli/list-models.d.ts +2 -2
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +5 -5
- package/dist/cli/list-models.js.map +1 -1
- package/dist/core/agent-session-accessors.js +1 -1
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +2 -5
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-compaction.js +1 -1
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +5 -5
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +4 -4
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-models.d.ts +1 -1
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js +18 -14
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +2 -4
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +3 -7
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-retry.js +1 -1
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session-runtime-auth.d.ts +3 -3
- package/dist/core/agent-session-runtime-auth.d.ts.map +1 -1
- package/dist/core/agent-session-runtime-auth.js +4 -14
- package/dist/core/agent-session-runtime-auth.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +3 -3
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +3 -8
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +16 -23
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +2 -1
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +2 -2
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +1 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage-backends.d.ts +1 -0
- package/dist/core/auth-storage-backends.d.ts.map +1 -1
- package/dist/core/auth-storage-backends.js +18 -4
- package/dist/core/auth-storage-backends.js.map +1 -1
- package/dist/core/auth-storage.d.ts +12 -139
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +68 -374
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/copilot-env-routing.d.ts +36 -0
- package/dist/core/copilot-env-routing.d.ts.map +1 -0
- package/dist/core/copilot-env-routing.js +94 -0
- package/dist/core/copilot-env-routing.js.map +1 -0
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +10 -2
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +0 -40
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/fallback-models.d.ts +4 -4
- package/dist/core/fallback-models.d.ts.map +1 -1
- package/dist/core/fallback-models.js +3 -3
- package/dist/core/fallback-models.js.map +1 -1
- package/dist/core/model-config.d.ts +542 -0
- package/dist/core/model-config.d.ts.map +1 -0
- package/dist/core/{model-registry-schemas.js → model-config.js} +85 -34
- package/dist/core/model-config.js.map +1 -0
- package/dist/core/model-registry.d.ts +25 -85
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +65 -388
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-cli.d.ts +2 -2
- package/dist/core/model-resolver-cli.d.ts.map +1 -1
- package/dist/core/model-resolver-cli.js +2 -2
- package/dist/core/model-resolver-cli.js.map +1 -1
- package/dist/core/model-resolver-initial.d.ts +4 -4
- package/dist/core/model-resolver-initial.d.ts.map +1 -1
- package/dist/core/model-resolver-initial.js +17 -17
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/model-resolver-scope.d.ts +3 -3
- package/dist/core/model-resolver-scope.d.ts.map +1 -1
- package/dist/core/model-resolver-scope.js +4 -4
- package/dist/core/model-resolver-scope.js.map +1 -1
- package/dist/core/model-runtime-auth.d.ts +7 -0
- package/dist/core/model-runtime-auth.d.ts.map +1 -0
- package/dist/core/model-runtime-auth.js +14 -0
- package/dist/core/model-runtime-auth.js.map +1 -0
- package/dist/core/model-runtime-providers.d.ts +6 -0
- package/dist/core/model-runtime-providers.d.ts.map +1 -0
- package/dist/core/model-runtime-providers.js +22 -0
- package/dist/core/model-runtime-providers.js.map +1 -0
- package/dist/core/model-runtime-restoration.d.ts +6 -0
- package/dist/core/model-runtime-restoration.d.ts.map +1 -0
- package/dist/core/model-runtime-restoration.js +21 -0
- package/dist/core/model-runtime-restoration.js.map +1 -0
- package/dist/core/model-runtime-snapshot.d.ts +16 -0
- package/dist/core/model-runtime-snapshot.d.ts.map +1 -0
- package/dist/core/model-runtime-snapshot.js +52 -0
- package/dist/core/model-runtime-snapshot.js.map +1 -0
- package/dist/core/model-runtime-streaming.d.ts +17 -0
- package/dist/core/model-runtime-streaming.d.ts.map +1 -0
- package/dist/core/model-runtime-streaming.js +66 -0
- package/dist/core/model-runtime-streaming.js.map +1 -0
- package/dist/core/model-runtime-types.d.ts +21 -0
- package/dist/core/model-runtime-types.d.ts.map +1 -0
- package/dist/core/model-runtime-types.js +2 -0
- package/dist/core/model-runtime-types.js.map +1 -0
- package/dist/core/model-runtime.d.ts +50 -29
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +330 -90
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.d.ts +2 -10
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -29
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/oauth-login.d.ts +24 -0
- package/dist/core/oauth-login.d.ts.map +1 -0
- package/dist/core/oauth-login.js +87 -0
- package/dist/core/oauth-login.js.map +1 -0
- package/dist/core/oauth-provider-metadata.d.ts +5 -0
- package/dist/core/oauth-provider-metadata.d.ts.map +1 -0
- package/dist/core/oauth-provider-metadata.js +19 -0
- package/dist/core/oauth-provider-metadata.js.map +1 -0
- package/dist/core/provider-composer-internal.d.ts +53 -0
- package/dist/core/provider-composer-internal.d.ts.map +1 -0
- package/dist/core/provider-composer-internal.js +273 -0
- package/dist/core/provider-composer-internal.js.map +1 -0
- package/dist/core/provider-composer.d.ts +16 -0
- package/dist/core/provider-composer.d.ts.map +1 -0
- package/dist/core/provider-composer.js +108 -0
- package/dist/core/provider-composer.js.map +1 -0
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +74 -122
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts +8 -7
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +26 -23
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +16 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -0
- package/dist/core/runtime-credentials.js +42 -0
- package/dist/core/runtime-credentials.js.map +1 -0
- package/dist/core/sdk-types.d.ts +1 -7
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +27 -28
- package/dist/core/sdk.js.map +1 -1
- package/dist/extensions/llama/index.js +1 -1
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts +2 -4
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +25 -17
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/main-runtime-api-key.d.ts +6 -0
- package/dist/main-runtime-api-key.d.ts.map +1 -0
- package/dist/main-runtime-api-key.js +6 -0
- package/dist/main-runtime-api-key.js.map +1 -0
- package/dist/main-session-options.d.ts +2 -2
- package/dist/main-session-options.d.ts.map +1 -1
- package/dist/main-session-options.js +3 -3
- package/dist/main-session-options.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +9 -11
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +1 -3
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +4 -3
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +56 -73
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +4 -3
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +15 -24
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +1 -1
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +20 -31
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.d.ts +1 -1
- package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +21 -47
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +3 -3
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +8 -8
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +2 -1
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.js +2 -2
- package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +11 -11
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +1 -1
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +2 -2
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +1 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-auth.d.ts +2 -2
- package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-auth.js +4 -3
- package/dist/modes/interactive-engine/isolated-auth.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +4 -3
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts +0 -1
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js +11 -50
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +2 -2
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +26 -19
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-oauth-client.d.ts +1 -1
- package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-oauth-client.js +1 -1
- package/dist/modes/rpc/rpc-oauth-client.js.map +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.d.ts +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.js +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.d.ts +4 -5
- package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js +19 -66
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +1 -1
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +7 -4
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +5 -7
- package/dist/package-manager-cli.js.map +1 -1
- package/docs/changelog.mdx +1 -1
- package/docs/custom-provider.md +1 -1
- package/docs/models.md +4 -6
- package/docs/providers.md +13 -0
- package/docs/quickstart.md +2 -1
- package/docs/sdk.md +32 -49
- package/docs/workflows.md +3 -3
- package/examples/sdk/02-custom-model.ts +8 -10
- package/examples/sdk/09-api-keys-and-oauth.ts +17 -23
- package/examples/sdk/12-full-control.ts +9 -11
- package/examples/sdk/README.md +17 -21
- package/npm-shrinkwrap.json +23 -23
- package/package.json +2 -2
- package/dist/core/model-registry-auth.d.ts +0 -10
- package/dist/core/model-registry-auth.d.ts.map +0 -1
- package/dist/core/model-registry-auth.js +0 -98
- package/dist/core/model-registry-auth.js.map +0 -1
- package/dist/core/model-registry-builtins.d.ts +0 -8
- package/dist/core/model-registry-builtins.d.ts.map +0 -1
- package/dist/core/model-registry-builtins.js +0 -104
- package/dist/core/model-registry-builtins.js.map +0 -1
- package/dist/core/model-registry-custom-loader.d.ts +0 -3
- package/dist/core/model-registry-custom-loader.d.ts.map +0 -1
- package/dist/core/model-registry-custom-loader.js +0 -255
- package/dist/core/model-registry-custom-loader.js.map +0 -1
- package/dist/core/model-registry-dynamic.d.ts +0 -7
- package/dist/core/model-registry-dynamic.d.ts.map +0 -1
- package/dist/core/model-registry-dynamic.js +0 -189
- package/dist/core/model-registry-dynamic.js.map +0 -1
- package/dist/core/model-registry-extension-refresh.d.ts +0 -23
- package/dist/core/model-registry-extension-refresh.d.ts.map +0 -1
- package/dist/core/model-registry-extension-refresh.js +0 -32
- package/dist/core/model-registry-extension-refresh.js.map +0 -1
- package/dist/core/model-registry-loader.d.ts +0 -5
- package/dist/core/model-registry-loader.d.ts.map +0 -1
- package/dist/core/model-registry-loader.js +0 -29
- package/dist/core/model-registry-loader.js.map +0 -1
- package/dist/core/model-registry-schemas.d.ts +0 -1399
- package/dist/core/model-registry-schemas.d.ts.map +0 -1
- package/dist/core/model-registry-schemas.js.map +0 -1
- package/dist/core/model-registry-types.d.ts +0 -91
- package/dist/core/model-registry-types.d.ts.map +0 -1
- package/dist/core/model-registry-types.js +0 -2
- package/dist/core/model-registry-types.js.map +0 -1
- package/dist/core/model-registry-validation.d.ts +0 -7
- package/dist/core/model-registry-validation.d.ts.map +0 -1
- package/dist/core/model-registry-validation.js +0 -12
- package/dist/core/model-registry-validation.js.map +0 -1
- package/dist/core/oauth-compat.d.ts +0 -17
- package/dist/core/oauth-compat.d.ts.map +0 -1
- package/dist/core/oauth-compat.js +0 -2
- package/dist/core/oauth-compat.js.map +0 -1
- package/dist/core/oauth-provider-bridge.d.ts +0 -63
- package/dist/core/oauth-provider-bridge.d.ts.map +0 -1
- package/dist/core/oauth-provider-bridge.js +0 -232
- package/dist/core/oauth-provider-bridge.js.map +0 -1
|
@@ -6,26 +6,25 @@
|
|
|
6
6
|
|
|
7
7
|
import { getModel } from "@earendil-works/pi-ai/compat";
|
|
8
8
|
import {
|
|
9
|
-
AuthStorage,
|
|
10
9
|
createAgentSession,
|
|
11
10
|
createExtensionRuntime,
|
|
12
|
-
|
|
11
|
+
ModelRuntime,
|
|
13
12
|
type ResourceLoader,
|
|
14
13
|
SessionManager,
|
|
15
14
|
SettingsManager,
|
|
16
15
|
} from "@bastani/atomic";
|
|
17
16
|
|
|
18
|
-
// Custom
|
|
19
|
-
const
|
|
17
|
+
// Custom credential location with no custom models.json
|
|
18
|
+
const modelRuntime = await ModelRuntime.create({
|
|
19
|
+
authPath: "/tmp/my-agent/auth.json",
|
|
20
|
+
modelsPath: null,
|
|
21
|
+
});
|
|
20
22
|
|
|
21
23
|
// Runtime API key override (not persisted)
|
|
22
24
|
if (process.env.MY_ANTHROPIC_KEY) {
|
|
23
|
-
|
|
25
|
+
await modelRuntime.setRuntimeApiKey("anthropic", process.env.MY_ANTHROPIC_KEY);
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
// Model registry with no custom models.json
|
|
27
|
-
const modelRegistry = ModelRegistry.inMemory(authStorage);
|
|
28
|
-
|
|
29
28
|
const model = getModel("anthropic", "claude-sonnet-4-5");
|
|
30
29
|
if (!model) throw new Error("Model not found");
|
|
31
30
|
|
|
@@ -46,7 +45,7 @@ const resourceLoader: ResourceLoader = {
|
|
|
46
45
|
getSystemPrompt: () => `You are a minimal assistant.
|
|
47
46
|
Available: read, bash. Be concise.`,
|
|
48
47
|
getAppendSystemPrompt: () => [],
|
|
49
|
-
extendResources: () => {},
|
|
48
|
+
extendResources: async () => {},
|
|
50
49
|
reload: async () => {},
|
|
51
50
|
};
|
|
52
51
|
|
|
@@ -55,8 +54,7 @@ const { session } = await createAgentSession({
|
|
|
55
54
|
agentDir: "/tmp/my-agent",
|
|
56
55
|
model,
|
|
57
56
|
thinkingLevel: "off",
|
|
58
|
-
|
|
59
|
-
modelRegistry,
|
|
57
|
+
modelRuntime,
|
|
60
58
|
resourceLoader,
|
|
61
59
|
tools: ["read", "bash"],
|
|
62
60
|
sessionManager: SessionManager.inMemory(cwd),
|
package/examples/sdk/README.md
CHANGED
|
@@ -34,50 +34,48 @@ bun examples/sdk/01-minimal.ts
|
|
|
34
34
|
```typescript
|
|
35
35
|
import { getModel } from "@earendil-works/pi-ai/compat";
|
|
36
36
|
import {
|
|
37
|
-
AuthStorage,
|
|
38
37
|
createAgentSession,
|
|
39
38
|
DefaultResourceLoader,
|
|
40
|
-
|
|
39
|
+
ModelRuntime,
|
|
41
40
|
SessionManager,
|
|
42
41
|
SettingsManager,
|
|
43
42
|
} from "@bastani/atomic";
|
|
44
43
|
|
|
45
|
-
//
|
|
46
|
-
const
|
|
47
|
-
const modelRegistry = ModelRegistry.create(authStorage);
|
|
44
|
+
// Credential and model setup
|
|
45
|
+
const modelRuntime = await ModelRuntime.create();
|
|
48
46
|
|
|
49
|
-
// Minimal
|
|
50
|
-
const { session } = await createAgentSession(
|
|
47
|
+
// Minimal (omitting modelRuntime uses the active agent directory)
|
|
48
|
+
const { session } = await createAgentSession();
|
|
51
49
|
|
|
52
50
|
// Custom model
|
|
53
51
|
const model = getModel("anthropic", "claude-opus-4-5");
|
|
54
|
-
const { session } = await createAgentSession({ model, thinkingLevel: "high",
|
|
52
|
+
const { session } = await createAgentSession({ model, thinkingLevel: "high", modelRuntime });
|
|
55
53
|
|
|
56
54
|
// Modify prompt
|
|
57
55
|
const loader = new DefaultResourceLoader({
|
|
58
56
|
systemPromptOverride: (base) => `${base}\n\nBe concise.`,
|
|
59
57
|
});
|
|
60
58
|
await loader.reload();
|
|
61
|
-
const { session } = await createAgentSession({ resourceLoader: loader,
|
|
59
|
+
const { session } = await createAgentSession({ resourceLoader: loader, modelRuntime });
|
|
62
60
|
|
|
63
61
|
// Read-only
|
|
64
|
-
const { session } = await createAgentSession({ tools: ["read", "search", "find", "ls"],
|
|
62
|
+
const { session } = await createAgentSession({ tools: ["read", "search", "find", "ls"], modelRuntime });
|
|
65
63
|
|
|
66
64
|
// Defaults minus one tool
|
|
67
|
-
const { session } = await createAgentSession({ excludedTools: ["ask_user_question"],
|
|
65
|
+
const { session } = await createAgentSession({ excludedTools: ["ask_user_question"], modelRuntime });
|
|
68
66
|
|
|
69
67
|
// In-memory
|
|
70
68
|
const { session } = await createAgentSession({
|
|
71
69
|
sessionManager: SessionManager.inMemory(),
|
|
72
|
-
|
|
73
|
-
modelRegistry,
|
|
70
|
+
modelRuntime,
|
|
74
71
|
});
|
|
75
72
|
|
|
76
73
|
// Full control
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
const customRuntime = await ModelRuntime.create({
|
|
75
|
+
authPath: "/my/app/auth.json",
|
|
76
|
+
modelsPath: "/my/app/models.json",
|
|
77
|
+
});
|
|
78
|
+
await customRuntime.setRuntimeApiKey("anthropic", process.env.MY_KEY!);
|
|
81
79
|
const resourceLoader = new DefaultResourceLoader({
|
|
82
80
|
systemPromptOverride: () => "You are helpful.",
|
|
83
81
|
extensionFactories: [myExtension],
|
|
@@ -89,8 +87,7 @@ await resourceLoader.reload();
|
|
|
89
87
|
|
|
90
88
|
const { session } = await createAgentSession({
|
|
91
89
|
model,
|
|
92
|
-
|
|
93
|
-
modelRegistry: customRegistry,
|
|
90
|
+
modelRuntime: customRuntime,
|
|
94
91
|
resourceLoader,
|
|
95
92
|
tools: ["read", "bash", "my_tool"],
|
|
96
93
|
customTools: [myTool],
|
|
@@ -111,8 +108,7 @@ await session.prompt("Hello");
|
|
|
111
108
|
|
|
112
109
|
| Option | Default | Description |
|
|
113
110
|
|--------|---------|-------------|
|
|
114
|
-
| `
|
|
115
|
-
| `modelRegistry` | `ModelRegistry.create(authStorage)` | Model registry |
|
|
111
|
+
| `modelRuntime` | Runtime created from the active agent directory | Credential and model runtime override |
|
|
116
112
|
| `cwd` | `process.cwd()` | Working directory |
|
|
117
113
|
| `agentDir` | `~/.atomic/agent` (legacy `~/.pi/agent` also works) | Config directory |
|
|
118
114
|
| `model` | From settings/first available | Model to use |
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/atomic",
|
|
3
|
-
"version": "0.9.11-alpha.
|
|
3
|
+
"version": "0.9.11-alpha.8",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bastani/atomic",
|
|
9
|
-
"version": "0.9.11-alpha.
|
|
9
|
+
"version": "0.9.11-alpha.8",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@bastani/atomic-natives": "0.9.11-alpha.
|
|
12
|
+
"@bastani/atomic-natives": "0.9.11-alpha.8",
|
|
13
13
|
"@dbos-inc/dbos-sdk": "4.23.6",
|
|
14
14
|
"@earendil-works/pi-agent-core": "^0.82.1",
|
|
15
15
|
"@earendil-works/pi-ai": "^0.82.1",
|
|
@@ -515,16 +515,16 @@
|
|
|
515
515
|
}
|
|
516
516
|
},
|
|
517
517
|
"node_modules/@bastani/atomic-natives": {
|
|
518
|
-
"version": "0.9.11-alpha.
|
|
519
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.11-alpha.
|
|
518
|
+
"version": "0.9.11-alpha.8",
|
|
519
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.11-alpha.8.tgz",
|
|
520
520
|
"license": "MIT",
|
|
521
521
|
"optionalDependencies": {
|
|
522
|
-
"@bastani/atomic-natives-darwin-arm64": "0.9.11-alpha.
|
|
523
|
-
"@bastani/atomic-natives-darwin-x64": "0.9.11-alpha.
|
|
524
|
-
"@bastani/atomic-natives-linux-arm64-gnu": "0.9.11-alpha.
|
|
525
|
-
"@bastani/atomic-natives-linux-x64-gnu": "0.9.11-alpha.
|
|
526
|
-
"@bastani/atomic-natives-win32-arm64-msvc": "0.9.11-alpha.
|
|
527
|
-
"@bastani/atomic-natives-win32-x64-msvc": "0.9.11-alpha.
|
|
522
|
+
"@bastani/atomic-natives-darwin-arm64": "0.9.11-alpha.8",
|
|
523
|
+
"@bastani/atomic-natives-darwin-x64": "0.9.11-alpha.8",
|
|
524
|
+
"@bastani/atomic-natives-linux-arm64-gnu": "0.9.11-alpha.8",
|
|
525
|
+
"@bastani/atomic-natives-linux-x64-gnu": "0.9.11-alpha.8",
|
|
526
|
+
"@bastani/atomic-natives-win32-arm64-msvc": "0.9.11-alpha.8",
|
|
527
|
+
"@bastani/atomic-natives-win32-x64-msvc": "0.9.11-alpha.8"
|
|
528
528
|
},
|
|
529
529
|
"engines": {
|
|
530
530
|
"bun": ">=1.3.14",
|
|
@@ -532,8 +532,8 @@
|
|
|
532
532
|
}
|
|
533
533
|
},
|
|
534
534
|
"node_modules/@bastani/atomic-natives-darwin-arm64": {
|
|
535
|
-
"version": "0.9.11-alpha.
|
|
536
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.11-alpha.
|
|
535
|
+
"version": "0.9.11-alpha.8",
|
|
536
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.11-alpha.8.tgz",
|
|
537
537
|
"license": "MIT",
|
|
538
538
|
"os": [
|
|
539
539
|
"darwin"
|
|
@@ -544,8 +544,8 @@
|
|
|
544
544
|
"optional": true
|
|
545
545
|
},
|
|
546
546
|
"node_modules/@bastani/atomic-natives-darwin-x64": {
|
|
547
|
-
"version": "0.9.11-alpha.
|
|
548
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.11-alpha.
|
|
547
|
+
"version": "0.9.11-alpha.8",
|
|
548
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.11-alpha.8.tgz",
|
|
549
549
|
"license": "MIT",
|
|
550
550
|
"os": [
|
|
551
551
|
"darwin"
|
|
@@ -556,8 +556,8 @@
|
|
|
556
556
|
"optional": true
|
|
557
557
|
},
|
|
558
558
|
"node_modules/@bastani/atomic-natives-linux-arm64-gnu": {
|
|
559
|
-
"version": "0.9.11-alpha.
|
|
560
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.11-alpha.
|
|
559
|
+
"version": "0.9.11-alpha.8",
|
|
560
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.11-alpha.8.tgz",
|
|
561
561
|
"license": "MIT",
|
|
562
562
|
"os": [
|
|
563
563
|
"linux"
|
|
@@ -571,8 +571,8 @@
|
|
|
571
571
|
"optional": true
|
|
572
572
|
},
|
|
573
573
|
"node_modules/@bastani/atomic-natives-linux-x64-gnu": {
|
|
574
|
-
"version": "0.9.11-alpha.
|
|
575
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.11-alpha.
|
|
574
|
+
"version": "0.9.11-alpha.8",
|
|
575
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.11-alpha.8.tgz",
|
|
576
576
|
"license": "MIT",
|
|
577
577
|
"os": [
|
|
578
578
|
"linux"
|
|
@@ -586,8 +586,8 @@
|
|
|
586
586
|
"optional": true
|
|
587
587
|
},
|
|
588
588
|
"node_modules/@bastani/atomic-natives-win32-arm64-msvc": {
|
|
589
|
-
"version": "0.9.11-alpha.
|
|
590
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.11-alpha.
|
|
589
|
+
"version": "0.9.11-alpha.8",
|
|
590
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.11-alpha.8.tgz",
|
|
591
591
|
"license": "MIT",
|
|
592
592
|
"os": [
|
|
593
593
|
"win32"
|
|
@@ -598,8 +598,8 @@
|
|
|
598
598
|
"optional": true
|
|
599
599
|
},
|
|
600
600
|
"node_modules/@bastani/atomic-natives-win32-x64-msvc": {
|
|
601
|
-
"version": "0.9.11-alpha.
|
|
602
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.11-alpha.
|
|
601
|
+
"version": "0.9.11-alpha.8",
|
|
602
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.11-alpha.8.tgz",
|
|
603
603
|
"license": "MIT",
|
|
604
604
|
"os": [
|
|
605
605
|
"win32"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/atomic",
|
|
3
|
-
"version": "0.9.11-alpha.
|
|
3
|
+
"version": "0.9.11-alpha.8",
|
|
4
4
|
"description": "Atomic coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"atomicConfig": {
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"prepublishOnly": "bun run clean && bun run build && bun run shrinkwrap"
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
|
-
"@bastani/atomic-natives": "0.9.11-alpha.
|
|
81
|
+
"@bastani/atomic-natives": "0.9.11-alpha.8",
|
|
82
82
|
"@dbos-inc/dbos-sdk": "4.23.6",
|
|
83
83
|
"@earendil-works/pi-agent-core": "^0.82.1",
|
|
84
84
|
"@earendil-works/pi-ai": "^0.82.1",
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ModelAuth } from "@earendil-works/pi-ai";
|
|
2
|
-
import type { Api, Model } from "@earendil-works/pi-ai/compat";
|
|
3
|
-
import type { AuthStatus, AuthStorage } from "./auth-storage.ts";
|
|
4
|
-
import type { ProviderRequestConfig, ResolvedRequestAuth } from "./model-registry-types.ts";
|
|
5
|
-
import type { ProviderApiKeyAuthResult } from "./extensions/provider-types.ts";
|
|
6
|
-
export declare function getProviderResolvedAuth(provider: string, authStorage: AuthStorage, providerRequestConfigs: Map<string, ProviderRequestConfig>): Promise<ProviderApiKeyAuthResult | undefined>;
|
|
7
|
-
export declare function getModelRequestAuth(model: Model<Api>, authStorage: AuthStorage, providerRequestConfigs: Map<string, ProviderRequestConfig>, modelRequestHeaders: Map<string, Record<string, string>>, providerAuth?: ModelAuth): Promise<ResolvedRequestAuth>;
|
|
8
|
-
export declare function getProviderAuthStatusFromConfig(provider: string, authStorage: AuthStorage, providerRequestConfigs: Map<string, ProviderRequestConfig>): AuthStatus;
|
|
9
|
-
export declare function getApiKeyForProviderFromConfig(provider: string, authStorage: AuthStorage, providerRequestConfigs: Map<string, ProviderRequestConfig>): Promise<string | undefined>;
|
|
10
|
-
//# sourceMappingURL=model-registry-auth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry-auth.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAS5F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAiB/E,wBAAsB,uBAAuB,CAC5C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACxD,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAE/C;AAkBD,wBAAsB,mBAAmB,CACxC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1D,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxD,YAAY,CAAC,EAAE,SAAS,GACtB,OAAO,CAAC,mBAAmB,CAAC,CA8C9B;AAED,wBAAgB,+BAA+B,CAC9C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACxD,UAAU,CAuBZ;AAED,wBAAsB,8BAA8B,CACnD,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACxD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7B"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { getConfigValueEnvVarNames, isCommandConfigValue, isConfigValueConfigured, resolveConfigValueOrThrow, resolveConfigValueUncached, resolveHeadersOrThrow, } from "./resolve-config-value.js";
|
|
2
|
-
async function resolveCustomApiKeyAuth(provider, authStorage, providerRequestConfigs) {
|
|
3
|
-
const resolver = providerRequestConfigs.get(provider)?.auth?.apiKey?.resolve;
|
|
4
|
-
if (!resolver)
|
|
5
|
-
return undefined;
|
|
6
|
-
const stored = authStorage.get(provider);
|
|
7
|
-
const credential = stored?.type === "api_key" ? stored : undefined;
|
|
8
|
-
return resolver({
|
|
9
|
-
credential,
|
|
10
|
-
ctx: { env: async (name) => credential?.env?.[name] ?? process.env[name] },
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
export async function getProviderResolvedAuth(provider, authStorage, providerRequestConfigs) {
|
|
14
|
-
return resolveCustomApiKeyAuth(provider, authStorage, providerRequestConfigs);
|
|
15
|
-
}
|
|
16
|
-
function mergeHeaders(base, override) {
|
|
17
|
-
if (!base && !override)
|
|
18
|
-
return undefined;
|
|
19
|
-
const merged = {};
|
|
20
|
-
for (const source of [base, override]) {
|
|
21
|
-
for (const [name, value] of Object.entries(source ?? {})) {
|
|
22
|
-
for (const existing of Object.keys(merged)) {
|
|
23
|
-
if (existing.toLowerCase() === name.toLowerCase())
|
|
24
|
-
delete merged[existing];
|
|
25
|
-
}
|
|
26
|
-
merged[name] = value;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return Object.keys(merged).length > 0 ? merged : undefined;
|
|
30
|
-
}
|
|
31
|
-
export async function getModelRequestAuth(model, authStorage, providerRequestConfigs, modelRequestHeaders, providerAuth) {
|
|
32
|
-
try {
|
|
33
|
-
const providerConfig = providerRequestConfigs.get(model.provider);
|
|
34
|
-
const customAuth = await resolveCustomApiKeyAuth(model.provider, authStorage, providerRequestConfigs);
|
|
35
|
-
const storedAuth = await authStorage.getModelAuth(model.provider, { includeFallback: false });
|
|
36
|
-
const apiKey = providerAuth?.apiKey ??
|
|
37
|
-
customAuth?.auth.apiKey ??
|
|
38
|
-
storedAuth?.apiKey ??
|
|
39
|
-
(providerConfig?.apiKey
|
|
40
|
-
? resolveConfigValueOrThrow(providerConfig.apiKey, `API key for provider "${model.provider}"`)
|
|
41
|
-
: undefined);
|
|
42
|
-
const providerHeaders = resolveHeadersOrThrow(providerConfig?.headers, `provider "${model.provider}"`);
|
|
43
|
-
const modelHeaders = resolveHeadersOrThrow(modelRequestHeaders.get(`${model.provider}:${model.id}`), `model "${model.provider}/${model.id}"`);
|
|
44
|
-
let headers = providerAuth
|
|
45
|
-
? mergeHeaders(model.headers, providerAuth.headers)
|
|
46
|
-
: mergeHeaders(storedAuth?.headers, model.headers);
|
|
47
|
-
headers = mergeHeaders(headers, customAuth?.auth.headers);
|
|
48
|
-
headers = mergeHeaders(headers, providerHeaders);
|
|
49
|
-
headers = mergeHeaders(headers, modelHeaders);
|
|
50
|
-
if (providerConfig?.authHeader) {
|
|
51
|
-
if (!apiKey) {
|
|
52
|
-
return { ok: false, error: `No API key found for "${model.provider}"` };
|
|
53
|
-
}
|
|
54
|
-
headers = { ...headers, Authorization: `Bearer ${apiKey}` };
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
ok: true,
|
|
58
|
-
apiKey,
|
|
59
|
-
headers: headers && Object.keys(headers).length > 0 ? headers : undefined,
|
|
60
|
-
baseUrl: providerAuth?.baseUrl ?? customAuth?.auth.baseUrl ?? storedAuth?.baseUrl,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
return {
|
|
65
|
-
ok: false,
|
|
66
|
-
error: error instanceof Error ? error.message : String(error),
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
export function getProviderAuthStatusFromConfig(provider, authStorage, providerRequestConfigs) {
|
|
71
|
-
const authStatus = authStorage.getAuthStatus(provider);
|
|
72
|
-
if (authStatus.source) {
|
|
73
|
-
return authStatus;
|
|
74
|
-
}
|
|
75
|
-
const providerApiKey = providerRequestConfigs.get(provider)?.apiKey;
|
|
76
|
-
if (!providerApiKey) {
|
|
77
|
-
return authStatus;
|
|
78
|
-
}
|
|
79
|
-
if (isCommandConfigValue(providerApiKey)) {
|
|
80
|
-
return { configured: true, source: "models_json_command" };
|
|
81
|
-
}
|
|
82
|
-
const envVarNames = getConfigValueEnvVarNames(providerApiKey);
|
|
83
|
-
if (envVarNames.length > 0) {
|
|
84
|
-
return isConfigValueConfigured(providerApiKey)
|
|
85
|
-
? { configured: true, source: "environment", label: envVarNames.join(", ") }
|
|
86
|
-
: { configured: false };
|
|
87
|
-
}
|
|
88
|
-
return { configured: true, source: "models_json_key" };
|
|
89
|
-
}
|
|
90
|
-
export async function getApiKeyForProviderFromConfig(provider, authStorage, providerRequestConfigs) {
|
|
91
|
-
const apiKey = await authStorage.getApiKey(provider, { includeFallback: false });
|
|
92
|
-
if (apiKey !== undefined) {
|
|
93
|
-
return apiKey;
|
|
94
|
-
}
|
|
95
|
-
const providerApiKey = providerRequestConfigs.get(provider)?.apiKey;
|
|
96
|
-
return providerApiKey ? resolveConfigValueUncached(providerApiKey) : undefined;
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=model-registry-auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry-auth.js","sourceRoot":"","sources":["../../src/core/model-registry-auth.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModelAuth, ProviderHeaders } from \"@earendil-works/pi-ai\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { AuthStatus, AuthStorage } from \"./auth-storage.ts\";\nimport type { ProviderRequestConfig, ResolvedRequestAuth } from \"./model-registry-types.ts\";\nimport {\n\tgetConfigValueEnvVarNames,\n\tisCommandConfigValue,\n\tisConfigValueConfigured,\n\tresolveConfigValueOrThrow,\n\tresolveConfigValueUncached,\n\tresolveHeadersOrThrow,\n} from \"./resolve-config-value.ts\";\nimport type { ProviderApiKeyAuthResult } from \"./extensions/provider-types.ts\";\n\nasync function resolveCustomApiKeyAuth(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): Promise<ProviderApiKeyAuthResult | undefined> {\n\tconst resolver = providerRequestConfigs.get(provider)?.auth?.apiKey?.resolve;\n\tif (!resolver) return undefined;\n\tconst stored = authStorage.get(provider);\n\tconst credential = stored?.type === \"api_key\" ? stored : undefined;\n\treturn resolver({\n\t\tcredential,\n\t\tctx: { env: async (name) => credential?.env?.[name] ?? process.env[name] },\n\t});\n}\n\nexport async function getProviderResolvedAuth(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): Promise<ProviderApiKeyAuthResult | undefined> {\n\treturn resolveCustomApiKeyAuth(provider, authStorage, providerRequestConfigs);\n}\nfunction mergeHeaders(\n\tbase: ProviderHeaders | undefined,\n\toverride: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (!base && !override) return undefined;\n\tconst merged: ProviderHeaders = {};\n\tfor (const source of [base, override]) {\n\t\tfor (const [name, value] of Object.entries(source ?? {})) {\n\t\t\tfor (const existing of Object.keys(merged)) {\n\t\t\t\tif (existing.toLowerCase() === name.toLowerCase()) delete merged[existing];\n\t\t\t}\n\t\t\tmerged[name] = value;\n\t\t}\n\t}\n\treturn Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nexport async function getModelRequestAuth(\n\tmodel: Model<Api>,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n\tmodelRequestHeaders: Map<string, Record<string, string>>,\n\tproviderAuth?: ModelAuth,\n): Promise<ResolvedRequestAuth> {\n\ttry {\n\t\tconst providerConfig = providerRequestConfigs.get(model.provider);\n\t\tconst customAuth = await resolveCustomApiKeyAuth(model.provider, authStorage, providerRequestConfigs);\n\t\tconst storedAuth = await authStorage.getModelAuth(model.provider, { includeFallback: false });\n\t\tconst apiKey =\n\t\t\tproviderAuth?.apiKey ??\n\t\t\tcustomAuth?.auth.apiKey ??\n\t\t\tstoredAuth?.apiKey ??\n\t\t\t(providerConfig?.apiKey\n\t\t\t\t? resolveConfigValueOrThrow(providerConfig.apiKey, `API key for provider \"${model.provider}\"`)\n\t\t\t\t: undefined);\n\n\t\tconst providerHeaders = resolveHeadersOrThrow(providerConfig?.headers, `provider \"${model.provider}\"`);\n\t\tconst modelHeaders = resolveHeadersOrThrow(\n\t\t\tmodelRequestHeaders.get(`${model.provider}:${model.id}`),\n\t\t\t`model \"${model.provider}/${model.id}\"`,\n\t\t);\n\n\t\tlet headers = providerAuth\n\t\t\t? mergeHeaders(model.headers, providerAuth.headers)\n\t\t\t: mergeHeaders(storedAuth?.headers, model.headers);\n\t\theaders = mergeHeaders(headers, customAuth?.auth.headers);\n\t\theaders = mergeHeaders(headers, providerHeaders);\n\t\theaders = mergeHeaders(headers, modelHeaders);\n\n\t\tif (providerConfig?.authHeader) {\n\t\t\tif (!apiKey) {\n\t\t\t\treturn { ok: false, error: `No API key found for \"${model.provider}\"` };\n\t\t\t}\n\t\t\theaders = { ...headers, Authorization: `Bearer ${apiKey}` };\n\t\t}\n\n\n\t\treturn {\n\t\t\tok: true,\n\t\t\tapiKey,\n\t\t\theaders: headers && Object.keys(headers).length > 0 ? headers : undefined,\n\t\t\tbaseUrl: providerAuth?.baseUrl ?? customAuth?.auth.baseUrl ?? storedAuth?.baseUrl,\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t};\n\t}\n}\n\nexport function getProviderAuthStatusFromConfig(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): AuthStatus {\n\tconst authStatus = authStorage.getAuthStatus(provider);\n\tif (authStatus.source) {\n\t\treturn authStatus;\n\t}\n\n\tconst providerApiKey = providerRequestConfigs.get(provider)?.apiKey;\n\tif (!providerApiKey) {\n\t\treturn authStatus;\n\t}\n\n\tif (isCommandConfigValue(providerApiKey)) {\n\t\treturn { configured: true, source: \"models_json_command\" };\n\t}\n\n\tconst envVarNames = getConfigValueEnvVarNames(providerApiKey);\n\tif (envVarNames.length > 0) {\n\t\treturn isConfigValueConfigured(providerApiKey)\n\t\t\t? { configured: true, source: \"environment\", label: envVarNames.join(\", \") }\n\t\t\t: { configured: false };\n\t}\n\n\treturn { configured: true, source: \"models_json_key\" };\n}\n\nexport async function getApiKeyForProviderFromConfig(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): Promise<string | undefined> {\n\tconst apiKey = await authStorage.getApiKey(provider, { includeFallback: false });\n\tif (apiKey !== undefined) {\n\t\treturn apiKey;\n\t}\n\n\tconst providerApiKey = providerRequestConfigs.get(provider)?.apiKey;\n\treturn providerApiKey ? resolveConfigValueUncached(providerApiKey) : undefined;\n}\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type Api, type Model } from "@earendil-works/pi-ai/compat";
|
|
2
|
-
import type { ModelOverride } from "./model-registry-schemas.ts";
|
|
3
|
-
import type { ProviderOverride } from "./model-registry-types.ts";
|
|
4
|
-
export declare function mergeCompat(baseCompat: Model<Api>["compat"], overrideCompat: ModelOverride["compat"] | Model<Api>["compat"]): Model<Api>["compat"] | undefined;
|
|
5
|
-
export declare function applyModelOverride(model: Model<Api>, override: ModelOverride): Model<Api>;
|
|
6
|
-
export declare function loadBuiltInModels(overrides: Map<string, ProviderOverride>, modelOverrides: Map<string, Map<string, ModelOverride>>, baseModels?: readonly Model<Api>[]): Model<Api>[];
|
|
7
|
-
export declare function mergeCustomModels(builtInModels: Model<Api>[], customModels: Model<Api>[]): Model<Api>[];
|
|
8
|
-
//# sourceMappingURL=model-registry-builtins.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry-builtins.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,GAAG,EAIR,KAAK,KAAK,EAEV,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGlF,wBAAgB,WAAW,CAC1B,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAChC,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CAiClC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CA4BzF;AAED,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACxC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EACvD,UAAU,CAAC,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CA4Bd;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAWvG"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { getModels, getProviders, } from "@earendil-works/pi-ai/compat";
|
|
2
|
-
import { normalizeGrammarToolCapability } from "./model-capabilities.js";
|
|
3
|
-
export function mergeCompat(baseCompat, overrideCompat) {
|
|
4
|
-
if (!overrideCompat)
|
|
5
|
-
return normalizeGrammarToolCapability(baseCompat);
|
|
6
|
-
const base = baseCompat;
|
|
7
|
-
const override = overrideCompat;
|
|
8
|
-
const merged = { ...base, ...override };
|
|
9
|
-
const baseCompletions = base;
|
|
10
|
-
const overrideCompletions = override;
|
|
11
|
-
const mergedCompletions = merged;
|
|
12
|
-
if (baseCompletions?.openRouterRouting || overrideCompletions.openRouterRouting) {
|
|
13
|
-
mergedCompletions.openRouterRouting = {
|
|
14
|
-
...baseCompletions?.openRouterRouting,
|
|
15
|
-
...overrideCompletions.openRouterRouting,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
if (baseCompletions?.vercelGatewayRouting || overrideCompletions.vercelGatewayRouting) {
|
|
19
|
-
mergedCompletions.vercelGatewayRouting = {
|
|
20
|
-
...baseCompletions?.vercelGatewayRouting,
|
|
21
|
-
...overrideCompletions.vercelGatewayRouting,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
if (baseCompletions?.chatTemplateKwargs || overrideCompletions.chatTemplateKwargs) {
|
|
25
|
-
mergedCompletions.chatTemplateKwargs = {
|
|
26
|
-
...baseCompletions?.chatTemplateKwargs,
|
|
27
|
-
...overrideCompletions.chatTemplateKwargs,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
return normalizeGrammarToolCapability(merged);
|
|
31
|
-
}
|
|
32
|
-
export function applyModelOverride(model, override) {
|
|
33
|
-
const result = { ...model };
|
|
34
|
-
if (override.name !== undefined)
|
|
35
|
-
result.name = override.name;
|
|
36
|
-
if (override.reasoning !== undefined)
|
|
37
|
-
result.reasoning = override.reasoning;
|
|
38
|
-
if (override.thinkingLevelMap !== undefined) {
|
|
39
|
-
result.thinkingLevelMap = { ...model.thinkingLevelMap, ...override.thinkingLevelMap };
|
|
40
|
-
}
|
|
41
|
-
if (override.input !== undefined)
|
|
42
|
-
result.input = override.input;
|
|
43
|
-
if (override.contextWindow !== undefined)
|
|
44
|
-
result.contextWindow = override.contextWindow;
|
|
45
|
-
if (override.maxTokens !== undefined)
|
|
46
|
-
result.maxTokens = override.maxTokens;
|
|
47
|
-
if (override.cost) {
|
|
48
|
-
result.cost = {
|
|
49
|
-
input: override.cost.input ?? model.cost.input,
|
|
50
|
-
output: override.cost.output ?? model.cost.output,
|
|
51
|
-
cacheRead: override.cost.cacheRead ?? model.cost.cacheRead,
|
|
52
|
-
cacheWrite: override.cost.cacheWrite ?? model.cost.cacheWrite,
|
|
53
|
-
...(override.cost.tiers !== undefined
|
|
54
|
-
? { tiers: override.cost.tiers }
|
|
55
|
-
: model.cost.tiers !== undefined
|
|
56
|
-
? { tiers: model.cost.tiers }
|
|
57
|
-
: {}),
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
result.compat = mergeCompat(model.compat, override.compat);
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
export function loadBuiltInModels(overrides, modelOverrides, baseModels) {
|
|
64
|
-
const providers = baseModels
|
|
65
|
-
? [...new Set(baseModels.map((model) => model.provider))]
|
|
66
|
-
: getProviders();
|
|
67
|
-
return providers.flatMap((provider) => {
|
|
68
|
-
const providerModels = baseModels
|
|
69
|
-
? baseModels.filter((model) => model.provider === provider)
|
|
70
|
-
: getModels(provider);
|
|
71
|
-
const models = [...providerModels];
|
|
72
|
-
const providerOverride = overrides.get(provider);
|
|
73
|
-
const perModelOverrides = modelOverrides.get(provider);
|
|
74
|
-
return models.map((candidate) => {
|
|
75
|
-
let model = {
|
|
76
|
-
...candidate,
|
|
77
|
-
compat: normalizeGrammarToolCapability(candidate.compat),
|
|
78
|
-
};
|
|
79
|
-
if (providerOverride) {
|
|
80
|
-
model = {
|
|
81
|
-
...model,
|
|
82
|
-
baseUrl: providerOverride.baseUrl ?? model.baseUrl,
|
|
83
|
-
compat: mergeCompat(model.compat, providerOverride.compat),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
const modelOverride = perModelOverrides?.get(candidate.id);
|
|
87
|
-
return modelOverride ? applyModelOverride(model, modelOverride) : model;
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
export function mergeCustomModels(builtInModels, customModels) {
|
|
92
|
-
const merged = [...builtInModels];
|
|
93
|
-
for (const customModel of customModels) {
|
|
94
|
-
const existingIndex = merged.findIndex((m) => m.provider === customModel.provider && m.id === customModel.id);
|
|
95
|
-
if (existingIndex >= 0) {
|
|
96
|
-
merged[existingIndex] = customModel;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
merged.push(customModel);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return merged;
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=model-registry-builtins.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry-builtins.js","sourceRoot":"","sources":["../../src/core/model-registry-builtins.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Api,\n\tgetModels,\n\tgetProviders,\n\ttype BuiltinProvider,\n\ttype Model,\n\ttype OpenAICompletionsCompat,\n} from \"@earendil-works/pi-ai/compat\";\nimport { normalizeGrammarToolCapability } from \"./model-capabilities.ts\";\nimport type { ModelOverride } from \"./model-registry-schemas.ts\";\nimport type { ProviderCompat, ProviderOverride } from \"./model-registry-types.ts\";\n\n\nexport function mergeCompat(\n\tbaseCompat: Model<Api>[\"compat\"],\n\toverrideCompat: ModelOverride[\"compat\"] | Model<Api>[\"compat\"],\n): Model<Api>[\"compat\"] | undefined {\n\tif (!overrideCompat) return normalizeGrammarToolCapability(baseCompat);\n\n\tconst base = baseCompat as ProviderCompat | undefined;\n\tconst override = overrideCompat as ProviderCompat;\n\tconst merged = { ...base, ...override } as ProviderCompat;\n\n\tconst baseCompletions = base as OpenAICompletionsCompat | undefined;\n\tconst overrideCompletions = override as OpenAICompletionsCompat;\n\tconst mergedCompletions = merged as OpenAICompletionsCompat;\n\n\tif (baseCompletions?.openRouterRouting || overrideCompletions.openRouterRouting) {\n\t\tmergedCompletions.openRouterRouting = {\n\t\t\t...baseCompletions?.openRouterRouting,\n\t\t\t...overrideCompletions.openRouterRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.vercelGatewayRouting || overrideCompletions.vercelGatewayRouting) {\n\t\tmergedCompletions.vercelGatewayRouting = {\n\t\t\t...baseCompletions?.vercelGatewayRouting,\n\t\t\t...overrideCompletions.vercelGatewayRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.chatTemplateKwargs || overrideCompletions.chatTemplateKwargs) {\n\t\tmergedCompletions.chatTemplateKwargs = {\n\t\t\t...baseCompletions?.chatTemplateKwargs,\n\t\t\t...overrideCompletions.chatTemplateKwargs,\n\t\t};\n\t}\n\n\treturn normalizeGrammarToolCapability(merged);\n}\n\nexport function applyModelOverride(model: Model<Api>, override: ModelOverride): Model<Api> {\n\tconst result = { ...model };\n\n\tif (override.name !== undefined) result.name = override.name;\n\tif (override.reasoning !== undefined) result.reasoning = override.reasoning;\n\tif (override.thinkingLevelMap !== undefined) {\n\t\tresult.thinkingLevelMap = { ...model.thinkingLevelMap, ...override.thinkingLevelMap };\n\t}\n\tif (override.input !== undefined) result.input = override.input as (\"text\" | \"image\")[];\n\tif (override.contextWindow !== undefined) result.contextWindow = override.contextWindow;\n\tif (override.maxTokens !== undefined) result.maxTokens = override.maxTokens;\n\n\tif (override.cost) {\n\t\tresult.cost = {\n\t\t\tinput: override.cost.input ?? model.cost.input,\n\t\t\toutput: override.cost.output ?? model.cost.output,\n\t\t\tcacheRead: override.cost.cacheRead ?? model.cost.cacheRead,\n\t\t\tcacheWrite: override.cost.cacheWrite ?? model.cost.cacheWrite,\n\t\t\t...(override.cost.tiers !== undefined\n\t\t\t\t? { tiers: override.cost.tiers }\n\t\t\t\t: model.cost.tiers !== undefined\n\t\t\t\t\t? { tiers: model.cost.tiers }\n\t\t\t\t\t: {}),\n\t\t};\n\t}\n\n\tresult.compat = mergeCompat(model.compat, override.compat);\n\treturn result;\n}\n\nexport function loadBuiltInModels(\n\toverrides: Map<string, ProviderOverride>,\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>,\n\tbaseModels?: readonly Model<Api>[],\n): Model<Api>[] {\n\tconst providers = baseModels\n\t\t? [...new Set(baseModels.map((model) => model.provider))]\n\t\t: getProviders();\n\treturn providers.flatMap((provider) => {\n\t\tconst providerModels = baseModels\n\t\t\t? baseModels.filter((model) => model.provider === provider)\n\t\t\t: getModels(provider as BuiltinProvider) as Model<Api>[];\n\t\tconst models = [...providerModels];\n\t\tconst providerOverride = overrides.get(provider);\n\t\tconst perModelOverrides = modelOverrides.get(provider);\n\n\t\treturn models.map((candidate) => {\n\t\t\tlet model: Model<Api> = {\n\t\t\t\t...candidate,\n\t\t\t\tcompat: normalizeGrammarToolCapability(candidate.compat),\n\t\t\t};\n\t\t\tif (providerOverride) {\n\t\t\t\tmodel = {\n\t\t\t\t\t...model,\n\t\t\t\t\tbaseUrl: providerOverride.baseUrl ?? model.baseUrl,\n\t\t\t\t\tcompat: mergeCompat(model.compat, providerOverride.compat),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst modelOverride = perModelOverrides?.get(candidate.id);\n\t\t\treturn modelOverride ? applyModelOverride(model, modelOverride) : model;\n\t\t});\n\t});\n}\n\nexport function mergeCustomModels(builtInModels: Model<Api>[], customModels: Model<Api>[]): Model<Api>[] {\n\tconst merged = [...builtInModels];\n\tfor (const customModel of customModels) {\n\t\tconst existingIndex = merged.findIndex((m) => m.provider === customModel.provider && m.id === customModel.id);\n\t\tif (existingIndex >= 0) {\n\t\t\tmerged[existingIndex] = customModel;\n\t\t} else {\n\t\t\tmerged.push(customModel);\n\t\t}\n\t}\n\treturn merged;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry-custom-loader.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-custom-loader.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,kBAAkB,EAIlB,MAAM,2BAA2B,CAAC;AA0SnC,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAYvF"}
|