@uluops/core 0.5.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/README.md +543 -0
- package/definitions/starter/code-validator.agent.yaml +134 -0
- package/definitions/starter/docs-validator.agent.yaml +142 -0
- package/definitions/starter/public-interface-validator.agent.yaml +138 -0
- package/definitions/starter/security-analyst.agent.yaml +144 -0
- package/definitions/starter/test-architect.agent.yaml +137 -0
- package/dist/ai/AIProvider.d.ts +198 -0
- package/dist/ai/AIProvider.d.ts.map +1 -0
- package/dist/ai/AIProvider.js +557 -0
- package/dist/ai/AIProvider.js.map +1 -0
- package/dist/ai/ModelCatalog.d.ts +78 -0
- package/dist/ai/ModelCatalog.d.ts.map +1 -0
- package/dist/ai/ModelCatalog.js +193 -0
- package/dist/ai/ModelCatalog.js.map +1 -0
- package/dist/ai/ShellExecutor.d.ts +42 -0
- package/dist/ai/ShellExecutor.d.ts.map +1 -0
- package/dist/ai/ShellExecutor.js +62 -0
- package/dist/ai/ShellExecutor.js.map +1 -0
- package/dist/ai/TokenBudgetTracker.d.ts +49 -0
- package/dist/ai/TokenBudgetTracker.d.ts.map +1 -0
- package/dist/ai/TokenBudgetTracker.js +61 -0
- package/dist/ai/TokenBudgetTracker.js.map +1 -0
- package/dist/ai/ToolAdapter.d.ts +25 -0
- package/dist/ai/ToolAdapter.d.ts.map +1 -0
- package/dist/ai/ToolAdapter.js +135 -0
- package/dist/ai/ToolAdapter.js.map +1 -0
- package/dist/ai/index.d.ts +6 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +4 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/client/UluOpsClient.d.ts +111 -0
- package/dist/client/UluOpsClient.d.ts.map +1 -0
- package/dist/client/UluOpsClient.js +329 -0
- package/dist/client/UluOpsClient.js.map +1 -0
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +9 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors/UluOpsError.d.ts +10 -0
- package/dist/errors/UluOpsError.d.ts.map +1 -0
- package/dist/errors/UluOpsError.js +13 -0
- package/dist/errors/UluOpsError.js.map +1 -0
- package/dist/errors/index.d.ts +64 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +93 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/executor/AgentExecutor.d.ts +57 -0
- package/dist/executor/AgentExecutor.d.ts.map +1 -0
- package/dist/executor/AgentExecutor.js +331 -0
- package/dist/executor/AgentExecutor.js.map +1 -0
- package/dist/executor/CommandExecutor.d.ts +33 -0
- package/dist/executor/CommandExecutor.d.ts.map +1 -0
- package/dist/executor/CommandExecutor.js +183 -0
- package/dist/executor/CommandExecutor.js.map +1 -0
- package/dist/executor/PipelineExecutor.d.ts +55 -0
- package/dist/executor/PipelineExecutor.d.ts.map +1 -0
- package/dist/executor/PipelineExecutor.js +273 -0
- package/dist/executor/PipelineExecutor.js.map +1 -0
- package/dist/executor/ToolHandler.d.ts +47 -0
- package/dist/executor/ToolHandler.d.ts.map +1 -0
- package/dist/executor/ToolHandler.js +615 -0
- package/dist/executor/ToolHandler.js.map +1 -0
- package/dist/executor/WorkflowExecutor.d.ts +55 -0
- package/dist/executor/WorkflowExecutor.d.ts.map +1 -0
- package/dist/executor/WorkflowExecutor.js +368 -0
- package/dist/executor/WorkflowExecutor.js.map +1 -0
- package/dist/executor/preflight.d.ts +8 -0
- package/dist/executor/preflight.d.ts.map +1 -0
- package/dist/executor/preflight.js +102 -0
- package/dist/executor/preflight.js.map +1 -0
- package/dist/executor/symbols.d.ts +13 -0
- package/dist/executor/symbols.d.ts.map +1 -0
- package/dist/executor/symbols.js +102 -0
- package/dist/executor/symbols.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/OutputExtractor.d.ts +52 -0
- package/dist/parser/OutputExtractor.d.ts.map +1 -0
- package/dist/parser/OutputExtractor.js +818 -0
- package/dist/parser/OutputExtractor.js.map +1 -0
- package/dist/parser/outputSchemas.d.ts +223 -0
- package/dist/parser/outputSchemas.d.ts.map +1 -0
- package/dist/parser/outputSchemas.js +73 -0
- package/dist/parser/outputSchemas.js.map +1 -0
- package/dist/registry/RegistryClient.d.ts +75 -0
- package/dist/registry/RegistryClient.d.ts.map +1 -0
- package/dist/registry/RegistryClient.js +419 -0
- package/dist/registry/RegistryClient.js.map +1 -0
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +2 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/types/agent.d.ts +406 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +2 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/ai.d.ts +14 -0
- package/dist/types/ai.d.ts.map +1 -0
- package/dist/types/ai.js +2 -0
- package/dist/types/ai.js.map +1 -0
- package/dist/types/command.d.ts +153 -0
- package/dist/types/command.d.ts.map +1 -0
- package/dist/types/command.js +2 -0
- package/dist/types/command.js.map +1 -0
- package/dist/types/config.d.ts +136 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/execution.d.ts +172 -0
- package/dist/types/execution.d.ts.map +1 -0
- package/dist/types/execution.js +2 -0
- package/dist/types/execution.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/parser.d.ts +75 -0
- package/dist/types/parser.d.ts.map +1 -0
- package/dist/types/parser.js +2 -0
- package/dist/types/parser.js.map +1 -0
- package/dist/types/pipeline.d.ts +155 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +2 -0
- package/dist/types/pipeline.js.map +1 -0
- package/dist/types/registry.d.ts +232 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/registry.js +2 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types/tools.d.ts +29 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +2 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/validation.d.ts +237 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +2 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/types/workflow.d.ts +131 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +2 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/formatError.d.ts +6 -0
- package/dist/utils/formatError.d.ts.map +1 -0
- package/dist/utils/formatError.js +10 -0
- package/dist/utils/formatError.js.map +1 -0
- package/dist/utils/parseRef.d.ts +11 -0
- package/dist/utils/parseRef.d.ts.map +1 -0
- package/dist/utils/parseRef.js +16 -0
- package/dist/utils/parseRef.js.map +1 -0
- package/dist/utils/sumTokenMetrics.d.ts +9 -0
- package/dist/utils/sumTokenMetrics.d.ts.map +1 -0
- package/dist/utils/sumTokenMetrics.js +20 -0
- package/dist/utils/sumTokenMetrics.js.map +1 -0
- package/dist/utils/topoSort.d.ts +24 -0
- package/dist/utils/topoSort.d.ts.map +1 -0
- package/dist/utils/topoSort.js +60 -0
- package/dist/utils/topoSort.js.map +1 -0
- package/dist/validation/ValidationClient.d.ts +51 -0
- package/dist/validation/ValidationClient.d.ts.map +1 -0
- package/dist/validation/ValidationClient.js +179 -0
- package/dist/validation/ValidationClient.js.map +1 -0
- package/dist/validation/index.d.ts +2 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +2 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { Output, type ToolSet } from 'ai';
|
|
2
|
+
import type { ProviderOptions } from '@ai-sdk/provider-utils';
|
|
3
|
+
import type { UsageMetrics } from '../types/ai.js';
|
|
4
|
+
import type { ResolvedConfig } from '../types/config.js';
|
|
5
|
+
import type { ModelCatalog, ResolvedModel } from './ModelCatalog.js';
|
|
6
|
+
import { TokenBudgetTracker } from './TokenBudgetTracker.js';
|
|
7
|
+
import type { ModelCapabilities } from '@uluops/registry-sdk';
|
|
8
|
+
import type { Logger } from '@uluops/sdk-core';
|
|
9
|
+
/**
|
|
10
|
+
* Result from AI provider generation
|
|
11
|
+
*/
|
|
12
|
+
export interface AIGenerateResult {
|
|
13
|
+
/** Final text content after tool loop completion */
|
|
14
|
+
text: string;
|
|
15
|
+
/** Total usage across all steps */
|
|
16
|
+
usage: UsageMetrics;
|
|
17
|
+
/** Number of tool calls made */
|
|
18
|
+
toolCallCount: number;
|
|
19
|
+
/** Resolved provider:modelId that was used */
|
|
20
|
+
model: string;
|
|
21
|
+
/** Provider name (e.g., 'anthropic', 'openai') */
|
|
22
|
+
provider: string;
|
|
23
|
+
/** Number of steps (LLM calls) in the tool loop */
|
|
24
|
+
steps: number;
|
|
25
|
+
/** Finish reason */
|
|
26
|
+
finishReason: string;
|
|
27
|
+
/** Structured output object, if output schema was provided and model supports it.
|
|
28
|
+
* When present, this is already validated against the schema — no extraction needed. */
|
|
29
|
+
structuredOutput?: unknown;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Options for generation
|
|
33
|
+
*/
|
|
34
|
+
export interface AIGenerateOptions {
|
|
35
|
+
/** Model alias (e.g., 'sonnet'), tier (e.g., 'premium'), or full provider:modelId */
|
|
36
|
+
model: string;
|
|
37
|
+
/** System prompt */
|
|
38
|
+
system: string;
|
|
39
|
+
/** Initial user message */
|
|
40
|
+
prompt: string;
|
|
41
|
+
/** Available tools (AI SDK ToolSet format) */
|
|
42
|
+
tools?: ToolSet;
|
|
43
|
+
/** Maximum response tokens per step */
|
|
44
|
+
maxTokens?: number;
|
|
45
|
+
/** Maximum tool loop iterations */
|
|
46
|
+
maxSteps?: number;
|
|
47
|
+
/** Timeout in milliseconds */
|
|
48
|
+
timeoutMs?: number;
|
|
49
|
+
/** Temperature (0-1) */
|
|
50
|
+
temperature?: number;
|
|
51
|
+
/** Required capabilities (validated before execution) */
|
|
52
|
+
requiredCapabilities?: Array<keyof ModelCapabilities>;
|
|
53
|
+
/** Provider-specific options (thinking, effort, etc.) passed through to generateText */
|
|
54
|
+
providerOptions?: ProviderOptions;
|
|
55
|
+
/** Token budget for context window management. When set, forces wrap-up at 80% usage. */
|
|
56
|
+
contextBudget?: number;
|
|
57
|
+
/** Optional budget tracker for sharing state with tools (e.g., get_token_budget) */
|
|
58
|
+
budgetTracker?: TokenBudgetTracker;
|
|
59
|
+
/** Structured output schema. When provided and the model supports it,
|
|
60
|
+
* constrains the final response to match this schema exactly. */
|
|
61
|
+
output?: Parameters<typeof Output.object>[0];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Multi-provider AI SDK wrapper with registry-backed model resolution.
|
|
65
|
+
*
|
|
66
|
+
* Wraps Vercel AI SDK v6 to provide:
|
|
67
|
+
* - Registry-backed model alias resolution (sonnet → anthropic:claude-sonnet-4-5-20250929)
|
|
68
|
+
* - Multi-provider support (Anthropic + OpenAI + Google bundled, others via dynamic import)
|
|
69
|
+
* - Capability pre-flight checks (tools, vision, streaming, extendedThinking)
|
|
70
|
+
* - Unified generation with automatic tool loops
|
|
71
|
+
* - Automatic prompt caching for Anthropic system messages
|
|
72
|
+
* - Extended thinking auto-enabled for capable Anthropic models
|
|
73
|
+
* - Reasoning effort auto-set for capable OpenAI models
|
|
74
|
+
* - Provider-defined tool support (Anthropic bash, OpenAI shell)
|
|
75
|
+
* - Error mapping to UluOps error types
|
|
76
|
+
* - Usage metrics in UluOps format (including OpenAI reasoning + Google thinking tokens)
|
|
77
|
+
*/
|
|
78
|
+
export declare class AIProvider {
|
|
79
|
+
private config;
|
|
80
|
+
private catalog;
|
|
81
|
+
private logger;
|
|
82
|
+
/** Factory name overrides for providers that don't follow the `create<Name>` convention */
|
|
83
|
+
private static readonly FACTORY_NAME_OVERRIDES;
|
|
84
|
+
/**
|
|
85
|
+
* Allowlist of valid provider names for dynamic import.
|
|
86
|
+
* Prevents path traversal via crafted provider strings (CWE-829).
|
|
87
|
+
*/
|
|
88
|
+
private static readonly VALID_DYNAMIC_PROVIDERS;
|
|
89
|
+
/** Initialized AI SDK provider factories, keyed by provider name */
|
|
90
|
+
private providers;
|
|
91
|
+
/** Anthropic provider instance for accessing provider-defined tools */
|
|
92
|
+
private anthropicInstance?;
|
|
93
|
+
/** OpenAI provider instance for accessing provider-defined tools */
|
|
94
|
+
private openaiInstance?;
|
|
95
|
+
/** Google provider instance for future provider-defined tools (googleSearch, codeExecution) */
|
|
96
|
+
private googleInstance?;
|
|
97
|
+
constructor(config: ResolvedConfig, catalog: ModelCatalog, logger: Logger);
|
|
98
|
+
/**
|
|
99
|
+
* Generate text with automatic tool loop handling.
|
|
100
|
+
*
|
|
101
|
+
* Resolution flow:
|
|
102
|
+
* 1. Resolve model alias → provider:modelId via ModelCatalog
|
|
103
|
+
* 2. Validate required capabilities (if specified)
|
|
104
|
+
* 3. Get AI SDK LanguageModel from provider factory
|
|
105
|
+
* 4. Build provider options (cache control, thinking, etc.)
|
|
106
|
+
* 5. Call generateText with maxSteps for automatic tool loop
|
|
107
|
+
*/
|
|
108
|
+
generate(options: AIGenerateOptions): Promise<AIGenerateResult>;
|
|
109
|
+
/**
|
|
110
|
+
* Resolve model alias and ensure provider is loaded.
|
|
111
|
+
* @internal Used by AgentExecutor for early provider detection.
|
|
112
|
+
*/
|
|
113
|
+
resolveModel(input: string, opts?: {
|
|
114
|
+
requiredCapabilities?: Array<keyof ModelCapabilities>;
|
|
115
|
+
}): Promise<ResolvedModel>;
|
|
116
|
+
/**
|
|
117
|
+
* Create provider-defined shell tool for the resolved model's provider.
|
|
118
|
+
*
|
|
119
|
+
* - Anthropic: bash_20250124 (Claude's built-in bash knowledge) — returns string
|
|
120
|
+
* - OpenAI: openai.tools.shell() with local execution — returns structured output
|
|
121
|
+
*
|
|
122
|
+
* Returns undefined if the model's provider has no shell tool support or
|
|
123
|
+
* the provider instance is not available.
|
|
124
|
+
*/
|
|
125
|
+
createProviderShellTool(provider: string, targetDir: string, timeoutMs?: number): ToolSet | undefined;
|
|
126
|
+
/**
|
|
127
|
+
* Build system message with provider-specific cache control.
|
|
128
|
+
*
|
|
129
|
+
* For Anthropic: wraps system text in a SystemModelMessage with
|
|
130
|
+
* ephemeral cache control. The API ignores cache hints if the
|
|
131
|
+
* prompt is below the minimum cacheable length (1024 tokens for Sonnet).
|
|
132
|
+
*
|
|
133
|
+
* For other providers: passes through as plain string.
|
|
134
|
+
* OpenAI caching is automatic for prompts ≥1024 tokens — no markup needed.
|
|
135
|
+
*/
|
|
136
|
+
private buildSystemMessage;
|
|
137
|
+
/**
|
|
138
|
+
* Build top-level providerOptions for generateText().
|
|
139
|
+
* Dispatches to provider-specific builders.
|
|
140
|
+
*/
|
|
141
|
+
private buildProviderOptions;
|
|
142
|
+
/**
|
|
143
|
+
* Anthropic-specific provider options.
|
|
144
|
+
* - Auto-enables extended thinking when model has extendedThinking capability
|
|
145
|
+
* - Auto-injects context management (clear old tool uses at 100K tokens)
|
|
146
|
+
*/
|
|
147
|
+
private buildAnthropicOptions;
|
|
148
|
+
/**
|
|
149
|
+
* OpenAI-specific provider options.
|
|
150
|
+
* - Auto-sets reasoningEffort for reasoning-capable models (o1, o3, o4-mini)
|
|
151
|
+
* - No context management equivalent — budget wrap-up via prepareStep is the only guard
|
|
152
|
+
* - systemMessageMode auto-handled by @ai-sdk/openai (system → developer for reasoning)
|
|
153
|
+
*/
|
|
154
|
+
private buildOpenAIOptions;
|
|
155
|
+
/**
|
|
156
|
+
* Google-specific provider options.
|
|
157
|
+
* - Auto-enables thinkingConfig with thinkingBudget for thinking-capable models (Gemini 2.5+)
|
|
158
|
+
* - No context management equivalent — budget wrap-up via prepareStep is the only guard
|
|
159
|
+
* - No system message wrapping — Gemini caching is implicit for 2.5+ models
|
|
160
|
+
*/
|
|
161
|
+
private buildGoogleOptions;
|
|
162
|
+
/**
|
|
163
|
+
* Build a prepareStep callback that forces wrap-up when budget is 80% consumed.
|
|
164
|
+
*
|
|
165
|
+
* Each step's `inputTokens` is the TOTAL input for that API call (the full
|
|
166
|
+
* conversation including cached tokens). The last step's value represents the
|
|
167
|
+
* current context window size. We check that against the budget.
|
|
168
|
+
*/
|
|
169
|
+
private buildBudgetPrepareStep;
|
|
170
|
+
/**
|
|
171
|
+
* Initialize AI SDK provider factories from config.
|
|
172
|
+
* @ai-sdk/anthropic, @ai-sdk/openai, and @ai-sdk/google are bundled and eagerly initialized.
|
|
173
|
+
*/
|
|
174
|
+
private initializeProviders;
|
|
175
|
+
/**
|
|
176
|
+
* Ensure a provider is loaded. Dynamically imports non-bundled providers.
|
|
177
|
+
*/
|
|
178
|
+
ensureProvider(providerName: string): Promise<void>;
|
|
179
|
+
/**
|
|
180
|
+
* Get provider factory, throwing if not configured.
|
|
181
|
+
*/
|
|
182
|
+
private getProviderFactory;
|
|
183
|
+
private missingProviderError;
|
|
184
|
+
/**
|
|
185
|
+
* Convert AI SDK usage to UluOps format
|
|
186
|
+
*/
|
|
187
|
+
private mapUsage;
|
|
188
|
+
private extractAnthropicUsage;
|
|
189
|
+
private extractOpenAIUsage;
|
|
190
|
+
private extractGoogleUsage;
|
|
191
|
+
private extractGenericUsage;
|
|
192
|
+
/**
|
|
193
|
+
* Map AI SDK errors to sdk-core error types.
|
|
194
|
+
* AI SDK normalizes all provider errors to APICallError with statusCode.
|
|
195
|
+
*/
|
|
196
|
+
private mapError;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=AIProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIProvider.d.ts","sourceRoot":"","sources":["../../src/ai/AIProvider.ts"],"names":[],"mappings":"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"}
|