@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.
Files changed (167) hide show
  1. package/README.md +543 -0
  2. package/definitions/starter/code-validator.agent.yaml +134 -0
  3. package/definitions/starter/docs-validator.agent.yaml +142 -0
  4. package/definitions/starter/public-interface-validator.agent.yaml +138 -0
  5. package/definitions/starter/security-analyst.agent.yaml +144 -0
  6. package/definitions/starter/test-architect.agent.yaml +137 -0
  7. package/dist/ai/AIProvider.d.ts +198 -0
  8. package/dist/ai/AIProvider.d.ts.map +1 -0
  9. package/dist/ai/AIProvider.js +557 -0
  10. package/dist/ai/AIProvider.js.map +1 -0
  11. package/dist/ai/ModelCatalog.d.ts +78 -0
  12. package/dist/ai/ModelCatalog.d.ts.map +1 -0
  13. package/dist/ai/ModelCatalog.js +193 -0
  14. package/dist/ai/ModelCatalog.js.map +1 -0
  15. package/dist/ai/ShellExecutor.d.ts +42 -0
  16. package/dist/ai/ShellExecutor.d.ts.map +1 -0
  17. package/dist/ai/ShellExecutor.js +62 -0
  18. package/dist/ai/ShellExecutor.js.map +1 -0
  19. package/dist/ai/TokenBudgetTracker.d.ts +49 -0
  20. package/dist/ai/TokenBudgetTracker.d.ts.map +1 -0
  21. package/dist/ai/TokenBudgetTracker.js +61 -0
  22. package/dist/ai/TokenBudgetTracker.js.map +1 -0
  23. package/dist/ai/ToolAdapter.d.ts +25 -0
  24. package/dist/ai/ToolAdapter.d.ts.map +1 -0
  25. package/dist/ai/ToolAdapter.js +135 -0
  26. package/dist/ai/ToolAdapter.js.map +1 -0
  27. package/dist/ai/index.d.ts +6 -0
  28. package/dist/ai/index.d.ts.map +1 -0
  29. package/dist/ai/index.js +4 -0
  30. package/dist/ai/index.js.map +1 -0
  31. package/dist/client/UluOpsClient.d.ts +111 -0
  32. package/dist/client/UluOpsClient.d.ts.map +1 -0
  33. package/dist/client/UluOpsClient.js +329 -0
  34. package/dist/client/UluOpsClient.js.map +1 -0
  35. package/dist/constants.d.ts +6 -0
  36. package/dist/constants.d.ts.map +1 -0
  37. package/dist/constants.js +9 -0
  38. package/dist/constants.js.map +1 -0
  39. package/dist/errors/UluOpsError.d.ts +10 -0
  40. package/dist/errors/UluOpsError.d.ts.map +1 -0
  41. package/dist/errors/UluOpsError.js +13 -0
  42. package/dist/errors/UluOpsError.js.map +1 -0
  43. package/dist/errors/index.d.ts +64 -0
  44. package/dist/errors/index.d.ts.map +1 -0
  45. package/dist/errors/index.js +93 -0
  46. package/dist/errors/index.js.map +1 -0
  47. package/dist/executor/AgentExecutor.d.ts +57 -0
  48. package/dist/executor/AgentExecutor.d.ts.map +1 -0
  49. package/dist/executor/AgentExecutor.js +331 -0
  50. package/dist/executor/AgentExecutor.js.map +1 -0
  51. package/dist/executor/CommandExecutor.d.ts +33 -0
  52. package/dist/executor/CommandExecutor.d.ts.map +1 -0
  53. package/dist/executor/CommandExecutor.js +183 -0
  54. package/dist/executor/CommandExecutor.js.map +1 -0
  55. package/dist/executor/PipelineExecutor.d.ts +55 -0
  56. package/dist/executor/PipelineExecutor.d.ts.map +1 -0
  57. package/dist/executor/PipelineExecutor.js +273 -0
  58. package/dist/executor/PipelineExecutor.js.map +1 -0
  59. package/dist/executor/ToolHandler.d.ts +47 -0
  60. package/dist/executor/ToolHandler.d.ts.map +1 -0
  61. package/dist/executor/ToolHandler.js +615 -0
  62. package/dist/executor/ToolHandler.js.map +1 -0
  63. package/dist/executor/WorkflowExecutor.d.ts +55 -0
  64. package/dist/executor/WorkflowExecutor.d.ts.map +1 -0
  65. package/dist/executor/WorkflowExecutor.js +368 -0
  66. package/dist/executor/WorkflowExecutor.js.map +1 -0
  67. package/dist/executor/preflight.d.ts +8 -0
  68. package/dist/executor/preflight.d.ts.map +1 -0
  69. package/dist/executor/preflight.js +102 -0
  70. package/dist/executor/preflight.js.map +1 -0
  71. package/dist/executor/symbols.d.ts +13 -0
  72. package/dist/executor/symbols.d.ts.map +1 -0
  73. package/dist/executor/symbols.js +102 -0
  74. package/dist/executor/symbols.js.map +1 -0
  75. package/dist/index.d.ts +32 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +25 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/parser/OutputExtractor.d.ts +52 -0
  80. package/dist/parser/OutputExtractor.d.ts.map +1 -0
  81. package/dist/parser/OutputExtractor.js +818 -0
  82. package/dist/parser/OutputExtractor.js.map +1 -0
  83. package/dist/parser/outputSchemas.d.ts +223 -0
  84. package/dist/parser/outputSchemas.d.ts.map +1 -0
  85. package/dist/parser/outputSchemas.js +73 -0
  86. package/dist/parser/outputSchemas.js.map +1 -0
  87. package/dist/registry/RegistryClient.d.ts +75 -0
  88. package/dist/registry/RegistryClient.d.ts.map +1 -0
  89. package/dist/registry/RegistryClient.js +419 -0
  90. package/dist/registry/RegistryClient.js.map +1 -0
  91. package/dist/registry/index.d.ts +2 -0
  92. package/dist/registry/index.d.ts.map +1 -0
  93. package/dist/registry/index.js +2 -0
  94. package/dist/registry/index.js.map +1 -0
  95. package/dist/types/agent.d.ts +406 -0
  96. package/dist/types/agent.d.ts.map +1 -0
  97. package/dist/types/agent.js +2 -0
  98. package/dist/types/agent.js.map +1 -0
  99. package/dist/types/ai.d.ts +14 -0
  100. package/dist/types/ai.d.ts.map +1 -0
  101. package/dist/types/ai.js +2 -0
  102. package/dist/types/ai.js.map +1 -0
  103. package/dist/types/command.d.ts +153 -0
  104. package/dist/types/command.d.ts.map +1 -0
  105. package/dist/types/command.js +2 -0
  106. package/dist/types/command.js.map +1 -0
  107. package/dist/types/config.d.ts +136 -0
  108. package/dist/types/config.d.ts.map +1 -0
  109. package/dist/types/config.js +2 -0
  110. package/dist/types/config.js.map +1 -0
  111. package/dist/types/execution.d.ts +172 -0
  112. package/dist/types/execution.d.ts.map +1 -0
  113. package/dist/types/execution.js +2 -0
  114. package/dist/types/execution.js.map +1 -0
  115. package/dist/types/index.d.ts +12 -0
  116. package/dist/types/index.d.ts.map +1 -0
  117. package/dist/types/index.js +2 -0
  118. package/dist/types/index.js.map +1 -0
  119. package/dist/types/parser.d.ts +75 -0
  120. package/dist/types/parser.d.ts.map +1 -0
  121. package/dist/types/parser.js +2 -0
  122. package/dist/types/parser.js.map +1 -0
  123. package/dist/types/pipeline.d.ts +155 -0
  124. package/dist/types/pipeline.d.ts.map +1 -0
  125. package/dist/types/pipeline.js +2 -0
  126. package/dist/types/pipeline.js.map +1 -0
  127. package/dist/types/registry.d.ts +232 -0
  128. package/dist/types/registry.d.ts.map +1 -0
  129. package/dist/types/registry.js +2 -0
  130. package/dist/types/registry.js.map +1 -0
  131. package/dist/types/tools.d.ts +29 -0
  132. package/dist/types/tools.d.ts.map +1 -0
  133. package/dist/types/tools.js +2 -0
  134. package/dist/types/tools.js.map +1 -0
  135. package/dist/types/validation.d.ts +237 -0
  136. package/dist/types/validation.d.ts.map +1 -0
  137. package/dist/types/validation.js +2 -0
  138. package/dist/types/validation.js.map +1 -0
  139. package/dist/types/workflow.d.ts +131 -0
  140. package/dist/types/workflow.d.ts.map +1 -0
  141. package/dist/types/workflow.js +2 -0
  142. package/dist/types/workflow.js.map +1 -0
  143. package/dist/utils/formatError.d.ts +6 -0
  144. package/dist/utils/formatError.d.ts.map +1 -0
  145. package/dist/utils/formatError.js +10 -0
  146. package/dist/utils/formatError.js.map +1 -0
  147. package/dist/utils/parseRef.d.ts +11 -0
  148. package/dist/utils/parseRef.d.ts.map +1 -0
  149. package/dist/utils/parseRef.js +16 -0
  150. package/dist/utils/parseRef.js.map +1 -0
  151. package/dist/utils/sumTokenMetrics.d.ts +9 -0
  152. package/dist/utils/sumTokenMetrics.d.ts.map +1 -0
  153. package/dist/utils/sumTokenMetrics.js +20 -0
  154. package/dist/utils/sumTokenMetrics.js.map +1 -0
  155. package/dist/utils/topoSort.d.ts +24 -0
  156. package/dist/utils/topoSort.d.ts.map +1 -0
  157. package/dist/utils/topoSort.js +60 -0
  158. package/dist/utils/topoSort.js.map +1 -0
  159. package/dist/validation/ValidationClient.d.ts +51 -0
  160. package/dist/validation/ValidationClient.d.ts.map +1 -0
  161. package/dist/validation/ValidationClient.js +179 -0
  162. package/dist/validation/ValidationClient.js.map +1 -0
  163. package/dist/validation/index.d.ts +2 -0
  164. package/dist/validation/index.d.ts.map +1 -0
  165. package/dist/validation/index.js +2 -0
  166. package/dist/validation/index.js.map +1 -0
  167. 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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"}