@animus-labs/cortex 0.2.0
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/LICENSE +21 -0
- package/README.md +73 -0
- package/dist/budget-guard.d.ts +75 -0
- package/dist/budget-guard.d.ts.map +1 -0
- package/dist/budget-guard.js +142 -0
- package/dist/budget-guard.js.map +1 -0
- package/dist/compaction/compaction.d.ts +99 -0
- package/dist/compaction/compaction.d.ts.map +1 -0
- package/dist/compaction/compaction.js +302 -0
- package/dist/compaction/compaction.js.map +1 -0
- package/dist/compaction/failsafe.d.ts +57 -0
- package/dist/compaction/failsafe.d.ts.map +1 -0
- package/dist/compaction/failsafe.js +135 -0
- package/dist/compaction/failsafe.js.map +1 -0
- package/dist/compaction/index.d.ts +381 -0
- package/dist/compaction/index.d.ts.map +1 -0
- package/dist/compaction/index.js +979 -0
- package/dist/compaction/index.js.map +1 -0
- package/dist/compaction/microcompaction.d.ts +219 -0
- package/dist/compaction/microcompaction.d.ts.map +1 -0
- package/dist/compaction/microcompaction.js +536 -0
- package/dist/compaction/microcompaction.js.map +1 -0
- package/dist/compaction/observational/buffering.d.ts +225 -0
- package/dist/compaction/observational/buffering.d.ts.map +1 -0
- package/dist/compaction/observational/buffering.js +354 -0
- package/dist/compaction/observational/buffering.js.map +1 -0
- package/dist/compaction/observational/constants.d.ts +70 -0
- package/dist/compaction/observational/constants.d.ts.map +1 -0
- package/dist/compaction/observational/constants.js +507 -0
- package/dist/compaction/observational/constants.js.map +1 -0
- package/dist/compaction/observational/index.d.ts +219 -0
- package/dist/compaction/observational/index.d.ts.map +1 -0
- package/dist/compaction/observational/index.js +641 -0
- package/dist/compaction/observational/index.js.map +1 -0
- package/dist/compaction/observational/observer.d.ts +97 -0
- package/dist/compaction/observational/observer.d.ts.map +1 -0
- package/dist/compaction/observational/observer.js +424 -0
- package/dist/compaction/observational/observer.js.map +1 -0
- package/dist/compaction/observational/recall-tool.d.ts +27 -0
- package/dist/compaction/observational/recall-tool.d.ts.map +1 -0
- package/dist/compaction/observational/recall-tool.js +93 -0
- package/dist/compaction/observational/recall-tool.js.map +1 -0
- package/dist/compaction/observational/reflector.d.ts +94 -0
- package/dist/compaction/observational/reflector.d.ts.map +1 -0
- package/dist/compaction/observational/reflector.js +167 -0
- package/dist/compaction/observational/reflector.js.map +1 -0
- package/dist/compaction/observational/types.d.ts +271 -0
- package/dist/compaction/observational/types.d.ts.map +1 -0
- package/dist/compaction/observational/types.js +15 -0
- package/dist/compaction/observational/types.js.map +1 -0
- package/dist/context-manager.d.ts +134 -0
- package/dist/context-manager.d.ts.map +1 -0
- package/dist/context-manager.js +170 -0
- package/dist/context-manager.js.map +1 -0
- package/dist/cortex-agent.d.ts +1020 -0
- package/dist/cortex-agent.d.ts.map +1 -0
- package/dist/cortex-agent.js +3589 -0
- package/dist/cortex-agent.js.map +1 -0
- package/dist/error-classifier.d.ts +48 -0
- package/dist/error-classifier.d.ts.map +1 -0
- package/dist/error-classifier.js +152 -0
- package/dist/error-classifier.js.map +1 -0
- package/dist/event-bridge.d.ts +166 -0
- package/dist/event-bridge.d.ts.map +1 -0
- package/dist/event-bridge.js +381 -0
- package/dist/event-bridge.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-client.d.ts +119 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +474 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/model-wrapper.d.ts +58 -0
- package/dist/model-wrapper.d.ts.map +1 -0
- package/dist/model-wrapper.js +86 -0
- package/dist/model-wrapper.js.map +1 -0
- package/dist/noop-logger.d.ts +4 -0
- package/dist/noop-logger.d.ts.map +1 -0
- package/dist/noop-logger.js +8 -0
- package/dist/noop-logger.js.map +1 -0
- package/dist/prompt-diagnostics.d.ts +47 -0
- package/dist/prompt-diagnostics.d.ts.map +1 -0
- package/dist/prompt-diagnostics.js +230 -0
- package/dist/prompt-diagnostics.js.map +1 -0
- package/dist/provider-manager.d.ts +224 -0
- package/dist/provider-manager.d.ts.map +1 -0
- package/dist/provider-manager.js +563 -0
- package/dist/provider-manager.js.map +1 -0
- package/dist/provider-registry.d.ts +115 -0
- package/dist/provider-registry.d.ts.map +1 -0
- package/dist/provider-registry.js +305 -0
- package/dist/provider-registry.js.map +1 -0
- package/dist/schema-converter.d.ts +20 -0
- package/dist/schema-converter.d.ts.map +1 -0
- package/dist/schema-converter.js +48 -0
- package/dist/schema-converter.js.map +1 -0
- package/dist/skill-preprocessor.d.ts +46 -0
- package/dist/skill-preprocessor.d.ts.map +1 -0
- package/dist/skill-preprocessor.js +237 -0
- package/dist/skill-preprocessor.js.map +1 -0
- package/dist/skill-registry.d.ts +107 -0
- package/dist/skill-registry.d.ts.map +1 -0
- package/dist/skill-registry.js +330 -0
- package/dist/skill-registry.js.map +1 -0
- package/dist/skill-tool.d.ts +54 -0
- package/dist/skill-tool.d.ts.map +1 -0
- package/dist/skill-tool.js +88 -0
- package/dist/skill-tool.js.map +1 -0
- package/dist/sub-agent-manager.d.ts +90 -0
- package/dist/sub-agent-manager.d.ts.map +1 -0
- package/dist/sub-agent-manager.js +192 -0
- package/dist/sub-agent-manager.js.map +1 -0
- package/dist/token-estimator.d.ts +23 -0
- package/dist/token-estimator.d.ts.map +1 -0
- package/dist/token-estimator.js +27 -0
- package/dist/token-estimator.js.map +1 -0
- package/dist/tool-contract.d.ts +68 -0
- package/dist/tool-contract.d.ts.map +1 -0
- package/dist/tool-contract.js +35 -0
- package/dist/tool-contract.js.map +1 -0
- package/dist/tool-result-persistence.d.ts +89 -0
- package/dist/tool-result-persistence.d.ts.map +1 -0
- package/dist/tool-result-persistence.js +152 -0
- package/dist/tool-result-persistence.js.map +1 -0
- package/dist/tools/bash/index.d.ts +71 -0
- package/dist/tools/bash/index.d.ts.map +1 -0
- package/dist/tools/bash/index.js +485 -0
- package/dist/tools/bash/index.js.map +1 -0
- package/dist/tools/bash/interactive.d.ts +47 -0
- package/dist/tools/bash/interactive.d.ts.map +1 -0
- package/dist/tools/bash/interactive.js +262 -0
- package/dist/tools/bash/interactive.js.map +1 -0
- package/dist/tools/bash/safety.d.ts +149 -0
- package/dist/tools/bash/safety.d.ts.map +1 -0
- package/dist/tools/bash/safety.js +1116 -0
- package/dist/tools/bash/safety.js.map +1 -0
- package/dist/tools/edit.d.ts +57 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +310 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +34 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +268 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +53 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +673 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +62 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/read.d.ts +43 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +459 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/runtime.d.ts +62 -0
- package/dist/tools/runtime.d.ts.map +1 -0
- package/dist/tools/runtime.js +116 -0
- package/dist/tools/runtime.js.map +1 -0
- package/dist/tools/shared/cwd-tracker.d.ts +32 -0
- package/dist/tools/shared/cwd-tracker.d.ts.map +1 -0
- package/dist/tools/shared/cwd-tracker.js +44 -0
- package/dist/tools/shared/cwd-tracker.js.map +1 -0
- package/dist/tools/shared/edit-history.d.ts +55 -0
- package/dist/tools/shared/edit-history.d.ts.map +1 -0
- package/dist/tools/shared/edit-history.js +72 -0
- package/dist/tools/shared/edit-history.js.map +1 -0
- package/dist/tools/shared/edit-matcher.d.ts +83 -0
- package/dist/tools/shared/edit-matcher.d.ts.map +1 -0
- package/dist/tools/shared/edit-matcher.js +359 -0
- package/dist/tools/shared/edit-matcher.js.map +1 -0
- package/dist/tools/shared/file-mutation-lock.d.ts +22 -0
- package/dist/tools/shared/file-mutation-lock.d.ts.map +1 -0
- package/dist/tools/shared/file-mutation-lock.js +35 -0
- package/dist/tools/shared/file-mutation-lock.js.map +1 -0
- package/dist/tools/shared/gitignore.d.ts +17 -0
- package/dist/tools/shared/gitignore.d.ts.map +1 -0
- package/dist/tools/shared/gitignore.js +59 -0
- package/dist/tools/shared/gitignore.js.map +1 -0
- package/dist/tools/shared/pdf-extractor.d.ts +96 -0
- package/dist/tools/shared/pdf-extractor.d.ts.map +1 -0
- package/dist/tools/shared/pdf-extractor.js +196 -0
- package/dist/tools/shared/pdf-extractor.js.map +1 -0
- package/dist/tools/shared/read-registry.d.ts +66 -0
- package/dist/tools/shared/read-registry.d.ts.map +1 -0
- package/dist/tools/shared/read-registry.js +65 -0
- package/dist/tools/shared/read-registry.js.map +1 -0
- package/dist/tools/shared/safe-env.d.ts +18 -0
- package/dist/tools/shared/safe-env.d.ts.map +1 -0
- package/dist/tools/shared/safe-env.js +70 -0
- package/dist/tools/shared/safe-env.js.map +1 -0
- package/dist/tools/sub-agent.d.ts +91 -0
- package/dist/tools/sub-agent.d.ts.map +1 -0
- package/dist/tools/sub-agent.js +89 -0
- package/dist/tools/sub-agent.js.map +1 -0
- package/dist/tools/task-output.d.ts +38 -0
- package/dist/tools/task-output.d.ts.map +1 -0
- package/dist/tools/task-output.js +186 -0
- package/dist/tools/task-output.js.map +1 -0
- package/dist/tools/tool-search/index.d.ts +40 -0
- package/dist/tools/tool-search/index.d.ts.map +1 -0
- package/dist/tools/tool-search/index.js +110 -0
- package/dist/tools/tool-search/index.js.map +1 -0
- package/dist/tools/tool-search/registry.d.ts +82 -0
- package/dist/tools/tool-search/registry.d.ts.map +1 -0
- package/dist/tools/tool-search/registry.js +238 -0
- package/dist/tools/tool-search/registry.js.map +1 -0
- package/dist/tools/undo-edit.d.ts +51 -0
- package/dist/tools/undo-edit.d.ts.map +1 -0
- package/dist/tools/undo-edit.js +231 -0
- package/dist/tools/undo-edit.js.map +1 -0
- package/dist/tools/web-fetch/cache.d.ts +49 -0
- package/dist/tools/web-fetch/cache.d.ts.map +1 -0
- package/dist/tools/web-fetch/cache.js +89 -0
- package/dist/tools/web-fetch/cache.js.map +1 -0
- package/dist/tools/web-fetch/index.d.ts +53 -0
- package/dist/tools/web-fetch/index.d.ts.map +1 -0
- package/dist/tools/web-fetch/index.js +513 -0
- package/dist/tools/web-fetch/index.js.map +1 -0
- package/dist/tools/write.d.ts +59 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +316 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.d.ts +881 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/dist/working-tags.d.ts +44 -0
- package/dist/working-tags.d.ts.map +1 -0
- package/dist/working-tags.js +103 -0
- package/dist/working-tags.js.map +1 -0
- package/package.json +87 -0
- package/src/budget-guard.ts +170 -0
- package/src/compaction/compaction.ts +386 -0
- package/src/compaction/failsafe.ts +185 -0
- package/src/compaction/index.ts +1199 -0
- package/src/compaction/microcompaction.ts +709 -0
- package/src/compaction/observational/buffering.ts +430 -0
- package/src/compaction/observational/constants.ts +532 -0
- package/src/compaction/observational/index.ts +837 -0
- package/src/compaction/observational/observer.ts +510 -0
- package/src/compaction/observational/recall-tool.ts +130 -0
- package/src/compaction/observational/reflector.ts +221 -0
- package/src/compaction/observational/types.ts +343 -0
- package/src/context-manager.ts +237 -0
- package/src/cortex-agent.ts +4297 -0
- package/src/error-classifier.ts +199 -0
- package/src/event-bridge.ts +508 -0
- package/src/index.ts +292 -0
- package/src/mcp-client.ts +582 -0
- package/src/model-wrapper.ts +128 -0
- package/src/noop-logger.ts +9 -0
- package/src/prompt-diagnostics.ts +296 -0
- package/src/provider-manager.ts +823 -0
- package/src/provider-registry.ts +386 -0
- package/src/schema-converter.ts +51 -0
- package/src/skill-preprocessor.ts +314 -0
- package/src/skill-registry.ts +378 -0
- package/src/skill-tool.ts +130 -0
- package/src/sub-agent-manager.ts +236 -0
- package/src/token-estimator.ts +26 -0
- package/src/tool-contract.ts +113 -0
- package/src/tool-result-persistence.ts +197 -0
- package/src/tools/bash/index.ts +633 -0
- package/src/tools/bash/interactive.ts +302 -0
- package/src/tools/bash/safety.ts +1297 -0
- package/src/tools/edit.ts +422 -0
- package/src/tools/glob.ts +330 -0
- package/src/tools/grep.ts +819 -0
- package/src/tools/index.ts +110 -0
- package/src/tools/read.ts +580 -0
- package/src/tools/runtime.ts +173 -0
- package/src/tools/shared/cwd-tracker.ts +50 -0
- package/src/tools/shared/edit-history.ts +96 -0
- package/src/tools/shared/edit-matcher.ts +457 -0
- package/src/tools/shared/file-mutation-lock.ts +40 -0
- package/src/tools/shared/gitignore.ts +61 -0
- package/src/tools/shared/pdf-extractor.ts +290 -0
- package/src/tools/shared/read-registry.ts +93 -0
- package/src/tools/shared/safe-env.ts +82 -0
- package/src/tools/sub-agent.ts +171 -0
- package/src/tools/task-output.ts +236 -0
- package/src/tools/tool-search/index.ts +167 -0
- package/src/tools/tool-search/registry.ts +278 -0
- package/src/tools/undo-edit.ts +314 -0
- package/src/tools/web-fetch/cache.ts +112 -0
- package/src/tools/web-fetch/index.ts +604 -0
- package/src/tools/write.ts +385 -0
- package/src/types.ts +1057 -0
- package/src/working-tags.ts +118 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static provider registry for known LLM providers.
|
|
3
|
+
*
|
|
4
|
+
* This module contains:
|
|
5
|
+
* 1. PROVIDER_REGISTRY: metadata for all known providers (auth methods, env vars, key prefixes)
|
|
6
|
+
* 2. OAUTH_PROVIDER_IDS: the subset of providers that support OAuth
|
|
7
|
+
* 3. UTILITY_MODEL_DEFAULTS: per-provider cheapest-capable model for utility operations
|
|
8
|
+
*
|
|
9
|
+
* OAuth flows are resolved through pi-ai's OAuth provider registry at runtime.
|
|
10
|
+
*
|
|
11
|
+
* Reference: provider-manager.md
|
|
12
|
+
*/
|
|
13
|
+
/** Authentication method supported by a provider. */
|
|
14
|
+
export type AuthMethod = 'oauth' | 'api_key';
|
|
15
|
+
/** Static metadata for a known LLM provider. */
|
|
16
|
+
export interface ProviderInfo {
|
|
17
|
+
/** Provider identifier (e.g., 'anthropic', 'openai', 'google'). */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Human-readable name (e.g., 'Anthropic', 'OpenAI'). */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Supported authentication methods. */
|
|
22
|
+
authMethods: AuthMethod[];
|
|
23
|
+
/** Environment variable name for API key (e.g., 'ANTHROPIC_API_KEY'). */
|
|
24
|
+
envVar?: string | undefined;
|
|
25
|
+
/** API key prefix for client-side type inference (e.g., 'sk-ant-'). */
|
|
26
|
+
keyPrefix?: string | undefined;
|
|
27
|
+
/** URL where users obtain API keys. */
|
|
28
|
+
keyUrl?: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
/** Metadata about a model available from a provider. */
|
|
31
|
+
export interface ModelInfo {
|
|
32
|
+
/** Model identifier (e.g., 'claude-sonnet-4-20250514'). */
|
|
33
|
+
id: string;
|
|
34
|
+
/** Human-readable name (e.g., 'Claude Sonnet 4'). */
|
|
35
|
+
name: string;
|
|
36
|
+
/** Context window size in tokens. */
|
|
37
|
+
contextWindow: number;
|
|
38
|
+
/** Whether the model supports extended thinking. */
|
|
39
|
+
supportsThinking: boolean;
|
|
40
|
+
/** Thinking levels supported by this model, in Cortex's public naming. */
|
|
41
|
+
supportedThinkingLevels: Array<'off' | 'minimal' | 'low' | 'medium' | 'high' | 'max'>;
|
|
42
|
+
/** Whether the model supports image input. */
|
|
43
|
+
supportsImages: boolean;
|
|
44
|
+
/** Pricing per million tokens (if available). */
|
|
45
|
+
pricing?: {
|
|
46
|
+
input: number;
|
|
47
|
+
output: number;
|
|
48
|
+
} | undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* All known providers with their authentication methods and UX metadata.
|
|
52
|
+
*
|
|
53
|
+
* This registry is maintained manually. When pi-ai adds a new provider,
|
|
54
|
+
* a corresponding entry is added here. Providers not in the registry can
|
|
55
|
+
* still be used via resolveModel() and createCustomModel() with direct
|
|
56
|
+
* API keys; they just won't appear in the discovery UI.
|
|
57
|
+
*/
|
|
58
|
+
export declare const PROVIDER_REGISTRY: ProviderInfo[];
|
|
59
|
+
/**
|
|
60
|
+
* Provider IDs that support OAuth login flows.
|
|
61
|
+
*/
|
|
62
|
+
export declare const OAUTH_PROVIDER_IDS: string[];
|
|
63
|
+
/**
|
|
64
|
+
* Default utility model IDs per provider.
|
|
65
|
+
* Used when utilityModel is 'default' or undefined.
|
|
66
|
+
*
|
|
67
|
+
* These are the cheapest capable models for each provider,
|
|
68
|
+
* suitable for internal operations like WebFetch summarization
|
|
69
|
+
* and safety classification.
|
|
70
|
+
*/
|
|
71
|
+
/**
|
|
72
|
+
* Default primary model IDs per provider.
|
|
73
|
+
* Used when a user first connects a provider and no model is explicitly selected.
|
|
74
|
+
* These are the best general-purpose models for each provider.
|
|
75
|
+
*/
|
|
76
|
+
export declare const PRIMARY_MODEL_DEFAULTS: Record<string, string>;
|
|
77
|
+
export declare const UTILITY_MODEL_DEFAULTS: Record<string, string>;
|
|
78
|
+
export type CacheRetention = 'none' | 'short' | 'long';
|
|
79
|
+
/** Per-provider prompt caching characteristics as implemented in pi-ai. */
|
|
80
|
+
export interface ProviderCacheConfig {
|
|
81
|
+
/** Whether pi-ai implements cacheRetention for this provider. */
|
|
82
|
+
supported: boolean;
|
|
83
|
+
/** Short-term cache TTL in ms (0 if unsupported). */
|
|
84
|
+
shortTtlMs: number;
|
|
85
|
+
/** Long-term cache TTL in ms (0 if unsupported). */
|
|
86
|
+
longTtlMs: number;
|
|
87
|
+
/** Write cost multiplier vs base input price for short cache (1.0 = free). */
|
|
88
|
+
shortWritePremium: number;
|
|
89
|
+
/** Write cost multiplier vs base input price for long cache. */
|
|
90
|
+
longWritePremium: number;
|
|
91
|
+
/** Read cost multiplier vs base input price (0.1 = 90% discount). */
|
|
92
|
+
readDiscount: number;
|
|
93
|
+
/** Whether the TTL resets on each cache hit. */
|
|
94
|
+
ttlResetsOnHit: boolean;
|
|
95
|
+
/** True if "long" has no cost penalty over "short" (e.g. OpenAI). */
|
|
96
|
+
preferLong: boolean;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Cache configuration for all known providers.
|
|
100
|
+
*
|
|
101
|
+
* Only Anthropic, Bedrock (Claude), and OpenAI Responses actually implement
|
|
102
|
+
* cacheRetention in pi-ai. All other providers ignore it (no-op).
|
|
103
|
+
*/
|
|
104
|
+
export declare const PROVIDER_CACHE_CONFIG: Record<string, ProviderCacheConfig>;
|
|
105
|
+
/**
|
|
106
|
+
* Resolve the optimal cache retention setting for a provider and tick interval.
|
|
107
|
+
*
|
|
108
|
+
* Decision logic:
|
|
109
|
+
* - Providers with preferLong (e.g. OpenAI, free writes): always "long"
|
|
110
|
+
* - Anthropic/Bedrock with interval ≤ 4.5 min: "short" (cheaper writes, TTL resets on hit)
|
|
111
|
+
* - Anthropic/Bedrock with interval > 4.5 min: "long" (need 1-hour window for sleep ticks)
|
|
112
|
+
* - Unsupported providers: "none"
|
|
113
|
+
*/
|
|
114
|
+
export declare function resolveCacheRetention(provider: string, tickIntervalMs: number): CacheRetention;
|
|
115
|
+
//# sourceMappingURL=provider-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../src/provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,qDAAqD;AACrD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7C,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,uBAAuB,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;IACtF,8CAA8C;IAC9C,cAAc,EAAE,OAAO,CAAC;IACxB,iDAAiD;IACjD,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACzD;AAMD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAAY,EA8L3C,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAItC,CAAC;AAMF;;;;;;;GAOG;AACH;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOzD,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQzD,CAAC;AAMF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,gBAAgB,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,cAAc,EAAE,OAAO,CAAC;IACxB,qEAAqE;IACrE,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAOrE,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,cAAc,CA4B9F"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static provider registry for known LLM providers.
|
|
3
|
+
*
|
|
4
|
+
* This module contains:
|
|
5
|
+
* 1. PROVIDER_REGISTRY: metadata for all known providers (auth methods, env vars, key prefixes)
|
|
6
|
+
* 2. OAUTH_PROVIDER_IDS: the subset of providers that support OAuth
|
|
7
|
+
* 3. UTILITY_MODEL_DEFAULTS: per-provider cheapest-capable model for utility operations
|
|
8
|
+
*
|
|
9
|
+
* OAuth flows are resolved through pi-ai's OAuth provider registry at runtime.
|
|
10
|
+
*
|
|
11
|
+
* Reference: provider-manager.md
|
|
12
|
+
*/
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Provider Registry
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* All known providers with their authentication methods and UX metadata.
|
|
18
|
+
*
|
|
19
|
+
* This registry is maintained manually. When pi-ai adds a new provider,
|
|
20
|
+
* a corresponding entry is added here. Providers not in the registry can
|
|
21
|
+
* still be used via resolveModel() and createCustomModel() with direct
|
|
22
|
+
* API keys; they just won't appear in the discovery UI.
|
|
23
|
+
*/
|
|
24
|
+
export const PROVIDER_REGISTRY = [
|
|
25
|
+
{
|
|
26
|
+
id: 'anthropic',
|
|
27
|
+
name: 'Anthropic',
|
|
28
|
+
authMethods: ['oauth', 'api_key'],
|
|
29
|
+
envVar: 'ANTHROPIC_API_KEY',
|
|
30
|
+
keyPrefix: 'sk-ant-',
|
|
31
|
+
keyUrl: 'console.anthropic.com/settings/keys',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'openai',
|
|
35
|
+
name: 'OpenAI',
|
|
36
|
+
authMethods: ['api_key'],
|
|
37
|
+
envVar: 'OPENAI_API_KEY',
|
|
38
|
+
keyPrefix: 'sk-proj-',
|
|
39
|
+
keyUrl: 'platform.openai.com/api-keys',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: 'azure-openai-responses',
|
|
43
|
+
name: 'Azure OpenAI',
|
|
44
|
+
authMethods: ['api_key'],
|
|
45
|
+
envVar: 'AZURE_OPENAI_API_KEY',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: 'openai-codex',
|
|
49
|
+
name: 'OpenAI Codex',
|
|
50
|
+
authMethods: ['oauth'],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: 'google',
|
|
54
|
+
name: 'Google',
|
|
55
|
+
authMethods: ['api_key'],
|
|
56
|
+
envVar: 'GEMINI_API_KEY',
|
|
57
|
+
keyUrl: 'aistudio.google.com/apikey',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: 'google-vertex',
|
|
61
|
+
name: 'Google Vertex AI',
|
|
62
|
+
authMethods: ['api_key'],
|
|
63
|
+
envVar: 'GOOGLE_CLOUD_API_KEY',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: 'github-copilot',
|
|
67
|
+
name: 'GitHub Copilot',
|
|
68
|
+
authMethods: ['oauth'],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: 'deepseek',
|
|
72
|
+
name: 'DeepSeek',
|
|
73
|
+
authMethods: ['api_key'],
|
|
74
|
+
envVar: 'DEEPSEEK_API_KEY',
|
|
75
|
+
keyUrl: 'platform.deepseek.com/api_keys',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 'mistral',
|
|
79
|
+
name: 'Mistral',
|
|
80
|
+
authMethods: ['api_key'],
|
|
81
|
+
envVar: 'MISTRAL_API_KEY',
|
|
82
|
+
keyUrl: 'console.mistral.ai/api-keys',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: 'groq',
|
|
86
|
+
name: 'Groq',
|
|
87
|
+
authMethods: ['api_key'],
|
|
88
|
+
envVar: 'GROQ_API_KEY',
|
|
89
|
+
keyUrl: 'console.groq.com/keys',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: 'cerebras',
|
|
93
|
+
name: 'Cerebras',
|
|
94
|
+
authMethods: ['api_key'],
|
|
95
|
+
envVar: 'CEREBRAS_API_KEY',
|
|
96
|
+
keyUrl: 'cloud.cerebras.ai',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: 'xai',
|
|
100
|
+
name: 'xAI',
|
|
101
|
+
authMethods: ['api_key'],
|
|
102
|
+
envVar: 'XAI_API_KEY',
|
|
103
|
+
keyUrl: 'console.x.ai',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
id: 'openrouter',
|
|
107
|
+
name: 'OpenRouter',
|
|
108
|
+
authMethods: ['api_key'],
|
|
109
|
+
envVar: 'OPENROUTER_API_KEY',
|
|
110
|
+
keyUrl: 'openrouter.ai/keys',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
id: 'vercel-ai-gateway',
|
|
114
|
+
name: 'Vercel AI Gateway',
|
|
115
|
+
authMethods: ['api_key'],
|
|
116
|
+
envVar: 'AI_GATEWAY_API_KEY',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: 'zai',
|
|
120
|
+
name: 'z.ai',
|
|
121
|
+
authMethods: ['api_key'],
|
|
122
|
+
envVar: 'ZAI_API_KEY',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: 'minimax',
|
|
126
|
+
name: 'MiniMax',
|
|
127
|
+
authMethods: ['api_key'],
|
|
128
|
+
envVar: 'MINIMAX_API_KEY',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
id: 'minimax-cn',
|
|
132
|
+
name: 'MiniMax China',
|
|
133
|
+
authMethods: ['api_key'],
|
|
134
|
+
envVar: 'MINIMAX_CN_API_KEY',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
id: 'moonshotai',
|
|
138
|
+
name: 'Moonshot AI',
|
|
139
|
+
authMethods: ['api_key'],
|
|
140
|
+
envVar: 'MOONSHOT_API_KEY',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
id: 'moonshotai-cn',
|
|
144
|
+
name: 'Moonshot AI China',
|
|
145
|
+
authMethods: ['api_key'],
|
|
146
|
+
envVar: 'MOONSHOT_API_KEY',
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: 'huggingface',
|
|
150
|
+
name: 'Hugging Face',
|
|
151
|
+
authMethods: ['api_key'],
|
|
152
|
+
envVar: 'HF_TOKEN',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
id: 'fireworks',
|
|
156
|
+
name: 'Fireworks AI',
|
|
157
|
+
authMethods: ['api_key'],
|
|
158
|
+
envVar: 'FIREWORKS_API_KEY',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
id: 'opencode',
|
|
162
|
+
name: 'OpenCode',
|
|
163
|
+
authMethods: ['api_key'],
|
|
164
|
+
envVar: 'OPENCODE_API_KEY',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
id: 'opencode-go',
|
|
168
|
+
name: 'OpenCode Go',
|
|
169
|
+
authMethods: ['api_key'],
|
|
170
|
+
envVar: 'OPENCODE_API_KEY',
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
id: 'kimi-coding',
|
|
174
|
+
name: 'Kimi Coding',
|
|
175
|
+
authMethods: ['api_key'],
|
|
176
|
+
envVar: 'KIMI_API_KEY',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
id: 'cloudflare-workers-ai',
|
|
180
|
+
name: 'Cloudflare Workers AI',
|
|
181
|
+
authMethods: ['api_key'],
|
|
182
|
+
envVar: 'CLOUDFLARE_API_KEY',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
id: 'cloudflare-ai-gateway',
|
|
186
|
+
name: 'Cloudflare AI Gateway',
|
|
187
|
+
authMethods: ['api_key'],
|
|
188
|
+
envVar: 'CLOUDFLARE_API_KEY',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
id: 'xiaomi',
|
|
192
|
+
name: 'Xiaomi',
|
|
193
|
+
authMethods: ['api_key'],
|
|
194
|
+
envVar: 'XIAOMI_API_KEY',
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
id: 'xiaomi-token-plan-cn',
|
|
198
|
+
name: 'Xiaomi Token Plan China',
|
|
199
|
+
authMethods: ['api_key'],
|
|
200
|
+
envVar: 'XIAOMI_TOKEN_PLAN_CN_API_KEY',
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
id: 'xiaomi-token-plan-ams',
|
|
204
|
+
name: 'Xiaomi Token Plan Amsterdam',
|
|
205
|
+
authMethods: ['api_key'],
|
|
206
|
+
envVar: 'XIAOMI_TOKEN_PLAN_AMS_API_KEY',
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
id: 'xiaomi-token-plan-sgp',
|
|
210
|
+
name: 'Xiaomi Token Plan Singapore',
|
|
211
|
+
authMethods: ['api_key'],
|
|
212
|
+
envVar: 'XIAOMI_TOKEN_PLAN_SGP_API_KEY',
|
|
213
|
+
},
|
|
214
|
+
];
|
|
215
|
+
// ---------------------------------------------------------------------------
|
|
216
|
+
// OAuth Providers
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
218
|
+
/**
|
|
219
|
+
* Provider IDs that support OAuth login flows.
|
|
220
|
+
*/
|
|
221
|
+
export const OAUTH_PROVIDER_IDS = [
|
|
222
|
+
'anthropic',
|
|
223
|
+
'openai-codex',
|
|
224
|
+
'github-copilot',
|
|
225
|
+
];
|
|
226
|
+
// ---------------------------------------------------------------------------
|
|
227
|
+
// Utility Model Defaults
|
|
228
|
+
// ---------------------------------------------------------------------------
|
|
229
|
+
/**
|
|
230
|
+
* Default utility model IDs per provider.
|
|
231
|
+
* Used when utilityModel is 'default' or undefined.
|
|
232
|
+
*
|
|
233
|
+
* These are the cheapest capable models for each provider,
|
|
234
|
+
* suitable for internal operations like WebFetch summarization
|
|
235
|
+
* and safety classification.
|
|
236
|
+
*/
|
|
237
|
+
/**
|
|
238
|
+
* Default primary model IDs per provider.
|
|
239
|
+
* Used when a user first connects a provider and no model is explicitly selected.
|
|
240
|
+
* These are the best general-purpose models for each provider.
|
|
241
|
+
*/
|
|
242
|
+
export const PRIMARY_MODEL_DEFAULTS = {
|
|
243
|
+
anthropic: 'claude-sonnet-4-6',
|
|
244
|
+
openai: 'gpt-5.4',
|
|
245
|
+
google: 'gemini-3.1-pro-preview',
|
|
246
|
+
groq: 'openai/gpt-oss-120b',
|
|
247
|
+
cerebras: 'gpt-oss-120b',
|
|
248
|
+
mistral: 'mistral-large-2512',
|
|
249
|
+
};
|
|
250
|
+
export const UTILITY_MODEL_DEFAULTS = {
|
|
251
|
+
anthropic: 'claude-haiku-4-5-20251001', // $1.00/$5.00 per 1M tokens
|
|
252
|
+
openai: 'gpt-4.1-nano', // $0.10/$0.40 per 1M tokens
|
|
253
|
+
'openai-codex': 'gpt-5.1-codex-mini', // Smallest Codex model
|
|
254
|
+
google: 'gemini-2.5-flash-lite', // $0.10/$0.40 per 1M tokens
|
|
255
|
+
groq: 'llama-3.1-8b-instant', // ~$0.05/$0.08 per 1M tokens
|
|
256
|
+
cerebras: 'llama3.1-8b', // ~$0.10/$0.10 per 1M tokens
|
|
257
|
+
mistral: 'mistral-small-2506', // $0.06/$0.18 per 1M tokens
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* Cache configuration for all known providers.
|
|
261
|
+
*
|
|
262
|
+
* Only Anthropic, Bedrock (Claude), and OpenAI Responses actually implement
|
|
263
|
+
* cacheRetention in pi-ai. All other providers ignore it (no-op).
|
|
264
|
+
*/
|
|
265
|
+
export const PROVIDER_CACHE_CONFIG = {
|
|
266
|
+
anthropic: { supported: true, shortTtlMs: 300_000, longTtlMs: 3_600_000, shortWritePremium: 1.25, longWritePremium: 2.0, readDiscount: 0.1, ttlResetsOnHit: true, preferLong: false },
|
|
267
|
+
bedrock: { supported: true, shortTtlMs: 300_000, longTtlMs: 3_600_000, shortWritePremium: 1.25, longWritePremium: 2.0, readDiscount: 0.1, ttlResetsOnHit: true, preferLong: false },
|
|
268
|
+
openai: { supported: true, shortTtlMs: 600_000, longTtlMs: 86_400_000, shortWritePremium: 1.0, longWritePremium: 1.0, readDiscount: 0.5, ttlResetsOnHit: true, preferLong: true },
|
|
269
|
+
google: { supported: false, shortTtlMs: 0, longTtlMs: 0, shortWritePremium: 1.0, longWritePremium: 1.0, readDiscount: 1.0, ttlResetsOnHit: false, preferLong: false },
|
|
270
|
+
mistral: { supported: false, shortTtlMs: 0, longTtlMs: 0, shortWritePremium: 1.0, longWritePremium: 1.0, readDiscount: 1.0, ttlResetsOnHit: false, preferLong: false },
|
|
271
|
+
azure: { supported: false, shortTtlMs: 0, longTtlMs: 0, shortWritePremium: 1.0, longWritePremium: 1.0, readDiscount: 1.0, ttlResetsOnHit: false, preferLong: false },
|
|
272
|
+
};
|
|
273
|
+
/**
|
|
274
|
+
* Resolve the optimal cache retention setting for a provider and tick interval.
|
|
275
|
+
*
|
|
276
|
+
* Decision logic:
|
|
277
|
+
* - Providers with preferLong (e.g. OpenAI, free writes): always "long"
|
|
278
|
+
* - Anthropic/Bedrock with interval ≤ 4.5 min: "short" (cheaper writes, TTL resets on hit)
|
|
279
|
+
* - Anthropic/Bedrock with interval > 4.5 min: "long" (need 1-hour window for sleep ticks)
|
|
280
|
+
* - Unsupported providers: "none"
|
|
281
|
+
*/
|
|
282
|
+
export function resolveCacheRetention(provider, tickIntervalMs) {
|
|
283
|
+
const config = PROVIDER_CACHE_CONFIG[provider];
|
|
284
|
+
// Unknown or unsupported provider
|
|
285
|
+
if (!config || !config.supported) {
|
|
286
|
+
return 'none';
|
|
287
|
+
}
|
|
288
|
+
// Providers where long cache is free (e.g. OpenAI): always use long
|
|
289
|
+
if (config.preferLong) {
|
|
290
|
+
return 'long';
|
|
291
|
+
}
|
|
292
|
+
// Providers with a write cost premium (e.g. Anthropic):
|
|
293
|
+
// use short when the interval fits within the short TTL (with safety margin)
|
|
294
|
+
const SHORT_TTL_SAFETY_MARGIN = 0.9; // 90% of TTL as threshold
|
|
295
|
+
const shortThreshold = config.shortTtlMs * SHORT_TTL_SAFETY_MARGIN;
|
|
296
|
+
if (tickIntervalMs <= shortThreshold) {
|
|
297
|
+
return 'short';
|
|
298
|
+
}
|
|
299
|
+
// Interval exceeds short TTL: use long if available
|
|
300
|
+
if (config.longTtlMs > 0) {
|
|
301
|
+
return 'long';
|
|
302
|
+
}
|
|
303
|
+
return 'none';
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=provider-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../src/provider-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema conversion utility: Zod -> JSON Schema -> TypeBox.
|
|
3
|
+
*
|
|
4
|
+
* Pi-agent-core uses TypeBox tool parameter schemas.
|
|
5
|
+
* Consumer code continues using Zod. This module bridges the gap
|
|
6
|
+
* at the tool registration boundary.
|
|
7
|
+
*
|
|
8
|
+
* Handles BOTH Zod v3 schemas (used by @animus-labs/shared tools)
|
|
9
|
+
* and Zod v4 schemas. Zod v3 schemas use `zod-to-json-schema`,
|
|
10
|
+
* Zod v4 schemas use the native `toJSONSchema()`.
|
|
11
|
+
*/
|
|
12
|
+
import { type TSchema } from 'typebox';
|
|
13
|
+
/**
|
|
14
|
+
* Convert a Zod schema (v3 or v4) to a TypeBox TSchema via JSON Schema.
|
|
15
|
+
*
|
|
16
|
+
* @param zodSchema - Any Zod schema (z.object, z.string, etc.)
|
|
17
|
+
* @returns A TypeBox TSchema suitable for pi-agent-core AgentTool definitions
|
|
18
|
+
*/
|
|
19
|
+
export declare function zodToTypebox(zodSchema: unknown): Promise<TSchema>;
|
|
20
|
+
//# sourceMappingURL=schema-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAY7C;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBvE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema conversion utility: Zod -> JSON Schema -> TypeBox.
|
|
3
|
+
*
|
|
4
|
+
* Pi-agent-core uses TypeBox tool parameter schemas.
|
|
5
|
+
* Consumer code continues using Zod. This module bridges the gap
|
|
6
|
+
* at the tool registration boundary.
|
|
7
|
+
*
|
|
8
|
+
* Handles BOTH Zod v3 schemas (used by @animus-labs/shared tools)
|
|
9
|
+
* and Zod v4 schemas. Zod v3 schemas use `zod-to-json-schema`,
|
|
10
|
+
* Zod v4 schemas use the native `toJSONSchema()`.
|
|
11
|
+
*/
|
|
12
|
+
import { Type } from 'typebox';
|
|
13
|
+
/**
|
|
14
|
+
* Check if a schema is a Zod v3 schema (has _def property).
|
|
15
|
+
*/
|
|
16
|
+
function isZodV3(schema) {
|
|
17
|
+
if (schema == null || typeof schema !== 'object')
|
|
18
|
+
return false;
|
|
19
|
+
// Zod v3 schemas have _def but NOT _zod (which is a v4 marker)
|
|
20
|
+
const obj = schema;
|
|
21
|
+
return '_def' in obj && typeof obj['_def'] === 'object' && !('_zod' in obj);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Convert a Zod schema (v3 or v4) to a TypeBox TSchema via JSON Schema.
|
|
25
|
+
*
|
|
26
|
+
* @param zodSchema - Any Zod schema (z.object, z.string, etc.)
|
|
27
|
+
* @returns A TypeBox TSchema suitable for pi-agent-core AgentTool definitions
|
|
28
|
+
*/
|
|
29
|
+
export async function zodToTypebox(zodSchema) {
|
|
30
|
+
if (!zodSchema || typeof zodSchema !== 'object') {
|
|
31
|
+
throw new Error(`zodToTypebox: received invalid schema: ${typeof zodSchema}`);
|
|
32
|
+
}
|
|
33
|
+
let jsonSchema;
|
|
34
|
+
if (isZodV3(zodSchema)) {
|
|
35
|
+
// Zod v3: use zod-to-json-schema (works with v3's _def structure)
|
|
36
|
+
const { zodToJsonSchema } = await import('zod-to-json-schema');
|
|
37
|
+
jsonSchema = zodToJsonSchema(zodSchema);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// Zod v4: use native toJSONSchema
|
|
41
|
+
const { toJSONSchema } = await import('zod');
|
|
42
|
+
jsonSchema = toJSONSchema(zodSchema);
|
|
43
|
+
}
|
|
44
|
+
// Type.Unsafe wraps a raw JSON Schema object as a TSchema
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
return Type.Unsafe(jsonSchema);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=schema-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-converter.js","sourceRoot":"","sources":["../src/schema-converter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAgB,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,SAAS,OAAO,CAAC,MAAe;IAC9B,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/D,+DAA+D;IAC/D,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,OAAO,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAkB;IACnD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,UAAmB,CAAC;IAExB,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACvB,kEAAkE;QAClE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC/D,UAAU,GAAG,eAAe,CAAC,SAAkD,CAAC,CAAC;IACnF,CAAC;SAAM,CAAC;QACN,kCAAkC;QAClC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,UAAU,GAAG,YAAY,CAAC,SAA+C,CAAC,CAAC;IAC7E,CAAC;IAED,0DAA0D;IAC1D,8DAA8D;IAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,UAAiB,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Preprocessor: processes SKILL.md body at load time.
|
|
3
|
+
*
|
|
4
|
+
* Three preprocessor types run in order:
|
|
5
|
+
* 1. Variable substitution: ${VAR}, $ARGUMENTS, $N
|
|
6
|
+
* 2. Shell commands: !`command` (parallel execution)
|
|
7
|
+
* 3. Script execution: !{script: path} (parallel execution)
|
|
8
|
+
*
|
|
9
|
+
* Shell commands use the same shell selection logic as the Bash tool
|
|
10
|
+
* (PowerShell on Windows, bash/zsh on Unix).
|
|
11
|
+
*
|
|
12
|
+
* References:
|
|
13
|
+
* - docs/cortex/skill-system.md
|
|
14
|
+
* - docs/cortex/cross-platform-considerations.md
|
|
15
|
+
*/
|
|
16
|
+
export interface PreprocessorConfig {
|
|
17
|
+
/** Variables for ${VAR} and $N substitution. */
|
|
18
|
+
variables: Record<string, string>;
|
|
19
|
+
/** Context object passed to script executions. */
|
|
20
|
+
scriptContext: Record<string, unknown>;
|
|
21
|
+
/** Absolute path to the skill directory. */
|
|
22
|
+
skillDir: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Preprocess a SKILL.md body. Runs all three stages:
|
|
26
|
+
* 1. Variable substitution
|
|
27
|
+
* 2. Shell commands and scripts (in parallel)
|
|
28
|
+
* 3. Assemble final content
|
|
29
|
+
*/
|
|
30
|
+
export declare function preprocessSkillBody(body: string, config: PreprocessorConfig): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Substitute ${VAR}, $ARGUMENTS, and $N references with their values.
|
|
33
|
+
*/
|
|
34
|
+
export declare function substituteVariables(body: string, variables: Record<string, string>): string;
|
|
35
|
+
/**
|
|
36
|
+
* Execute a shell command and return stdout.
|
|
37
|
+
* Uses the same shell selection as the Bash tool.
|
|
38
|
+
*/
|
|
39
|
+
export declare function executeShellCommand(command: string, cwd: string): Promise<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Execute a JavaScript script and return its output.
|
|
42
|
+
* Scripts are loaded via dynamic import() and must export a default
|
|
43
|
+
* async function.
|
|
44
|
+
*/
|
|
45
|
+
export declare function executeScript(scriptPath: string, extraArgsStr: string, config: PreprocessorConfig): Promise<string>;
|
|
46
|
+
//# sourceMappingURL=skill-preprocessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-preprocessor.d.ts","sourceRoot":"","sources":["../src/skill-preprocessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AA8ED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,CAAC,CAoDjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,CAiBR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,CAAC,CA4DjB"}
|