@phantomind/core 0.1.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 (265) hide show
  1. package/dist/adapters/aider.d.ts +12 -0
  2. package/dist/adapters/aider.d.ts.map +1 -0
  3. package/dist/adapters/aider.js +24 -0
  4. package/dist/adapters/aider.js.map +1 -0
  5. package/dist/adapters/base.d.ts +21 -0
  6. package/dist/adapters/base.d.ts.map +1 -0
  7. package/dist/adapters/base.js +83 -0
  8. package/dist/adapters/base.js.map +1 -0
  9. package/dist/adapters/claude-code.d.ts +12 -0
  10. package/dist/adapters/claude-code.d.ts.map +1 -0
  11. package/dist/adapters/claude-code.js +31 -0
  12. package/dist/adapters/claude-code.js.map +1 -0
  13. package/dist/adapters/cline.d.ts +12 -0
  14. package/dist/adapters/cline.d.ts.map +1 -0
  15. package/dist/adapters/cline.js +32 -0
  16. package/dist/adapters/cline.js.map +1 -0
  17. package/dist/adapters/codex.d.ts +18 -0
  18. package/dist/adapters/codex.d.ts.map +1 -0
  19. package/dist/adapters/codex.js +38 -0
  20. package/dist/adapters/codex.js.map +1 -0
  21. package/dist/adapters/continue.d.ts +12 -0
  22. package/dist/adapters/continue.d.ts.map +1 -0
  23. package/dist/adapters/continue.js +29 -0
  24. package/dist/adapters/continue.js.map +1 -0
  25. package/dist/adapters/copilot.d.ts +12 -0
  26. package/dist/adapters/copilot.d.ts.map +1 -0
  27. package/dist/adapters/copilot.js +31 -0
  28. package/dist/adapters/copilot.js.map +1 -0
  29. package/dist/adapters/cursor.d.ts +12 -0
  30. package/dist/adapters/cursor.d.ts.map +1 -0
  31. package/dist/adapters/cursor.js +34 -0
  32. package/dist/adapters/cursor.js.map +1 -0
  33. package/dist/adapters/index.d.ts +32 -0
  34. package/dist/adapters/index.d.ts.map +1 -0
  35. package/dist/adapters/index.js +64 -0
  36. package/dist/adapters/index.js.map +1 -0
  37. package/dist/adapters/windsurf.d.ts +12 -0
  38. package/dist/adapters/windsurf.d.ts.map +1 -0
  39. package/dist/adapters/windsurf.js +32 -0
  40. package/dist/adapters/windsurf.js.map +1 -0
  41. package/dist/adapters/zed.d.ts +12 -0
  42. package/dist/adapters/zed.d.ts.map +1 -0
  43. package/dist/adapters/zed.js +27 -0
  44. package/dist/adapters/zed.js.map +1 -0
  45. package/dist/agent/decomposer.d.ts +55 -0
  46. package/dist/agent/decomposer.d.ts.map +1 -0
  47. package/dist/agent/decomposer.js +172 -0
  48. package/dist/agent/decomposer.js.map +1 -0
  49. package/dist/agent/executor.d.ts +33 -0
  50. package/dist/agent/executor.d.ts.map +1 -0
  51. package/dist/agent/executor.js +260 -0
  52. package/dist/agent/executor.js.map +1 -0
  53. package/dist/agent/index.d.ts +8 -0
  54. package/dist/agent/index.d.ts.map +1 -0
  55. package/dist/agent/index.js +8 -0
  56. package/dist/agent/index.js.map +1 -0
  57. package/dist/agent/memory.d.ts +95 -0
  58. package/dist/agent/memory.d.ts.map +1 -0
  59. package/dist/agent/memory.js +211 -0
  60. package/dist/agent/memory.js.map +1 -0
  61. package/dist/agent/orchestrator.d.ts +54 -0
  62. package/dist/agent/orchestrator.d.ts.map +1 -0
  63. package/dist/agent/orchestrator.js +190 -0
  64. package/dist/agent/orchestrator.js.map +1 -0
  65. package/dist/agent/queue.d.ts +95 -0
  66. package/dist/agent/queue.d.ts.map +1 -0
  67. package/dist/agent/queue.js +231 -0
  68. package/dist/agent/queue.js.map +1 -0
  69. package/dist/agent/retry.d.ts +61 -0
  70. package/dist/agent/retry.d.ts.map +1 -0
  71. package/dist/agent/retry.js +162 -0
  72. package/dist/agent/retry.js.map +1 -0
  73. package/dist/agent/roles.d.ts +35 -0
  74. package/dist/agent/roles.d.ts.map +1 -0
  75. package/dist/agent/roles.js +269 -0
  76. package/dist/agent/roles.js.map +1 -0
  77. package/dist/cli/agent.d.ts +12 -0
  78. package/dist/cli/agent.d.ts.map +1 -0
  79. package/dist/cli/agent.js +85 -0
  80. package/dist/cli/agent.js.map +1 -0
  81. package/dist/cli/audit.d.ts +11 -0
  82. package/dist/cli/audit.d.ts.map +1 -0
  83. package/dist/cli/audit.js +63 -0
  84. package/dist/cli/audit.js.map +1 -0
  85. package/dist/cli/eval.d.ts +11 -0
  86. package/dist/cli/eval.d.ts.map +1 -0
  87. package/dist/cli/eval.js +79 -0
  88. package/dist/cli/eval.js.map +1 -0
  89. package/dist/cli/index.d.ts +9 -0
  90. package/dist/cli/index.d.ts.map +1 -0
  91. package/dist/cli/index.js +9 -0
  92. package/dist/cli/index.js.map +1 -0
  93. package/dist/cli/init.d.ts +13 -0
  94. package/dist/cli/init.d.ts.map +1 -0
  95. package/dist/cli/init.js +157 -0
  96. package/dist/cli/init.js.map +1 -0
  97. package/dist/cli/main.d.ts +7 -0
  98. package/dist/cli/main.d.ts.map +1 -0
  99. package/dist/cli/main.js +153 -0
  100. package/dist/cli/main.js.map +1 -0
  101. package/dist/cli/serve.d.ts +11 -0
  102. package/dist/cli/serve.d.ts.map +1 -0
  103. package/dist/cli/serve.js +23 -0
  104. package/dist/cli/serve.js.map +1 -0
  105. package/dist/cli/stats.d.ts +10 -0
  106. package/dist/cli/stats.d.ts.map +1 -0
  107. package/dist/cli/stats.js +68 -0
  108. package/dist/cli/stats.js.map +1 -0
  109. package/dist/cli/sync.d.ts +11 -0
  110. package/dist/cli/sync.d.ts.map +1 -0
  111. package/dist/cli/sync.js +49 -0
  112. package/dist/cli/sync.js.map +1 -0
  113. package/dist/cli/validate.d.ts +13 -0
  114. package/dist/cli/validate.d.ts.map +1 -0
  115. package/dist/cli/validate.js +125 -0
  116. package/dist/cli/validate.js.map +1 -0
  117. package/dist/config/index.d.ts +2 -0
  118. package/dist/config/index.d.ts.map +1 -0
  119. package/dist/config/index.js +2 -0
  120. package/dist/config/index.js.map +1 -0
  121. package/dist/config/loader.d.ts +25 -0
  122. package/dist/config/loader.d.ts.map +1 -0
  123. package/dist/config/loader.js +190 -0
  124. package/dist/config/loader.js.map +1 -0
  125. package/dist/context/embedder.d.ts +53 -0
  126. package/dist/context/embedder.d.ts.map +1 -0
  127. package/dist/context/embedder.js +235 -0
  128. package/dist/context/embedder.js.map +1 -0
  129. package/dist/context/engine.d.ts +82 -0
  130. package/dist/context/engine.d.ts.map +1 -0
  131. package/dist/context/engine.js +343 -0
  132. package/dist/context/engine.js.map +1 -0
  133. package/dist/context/index.d.ts +5 -0
  134. package/dist/context/index.d.ts.map +1 -0
  135. package/dist/context/index.js +5 -0
  136. package/dist/context/index.js.map +1 -0
  137. package/dist/context/learner.d.ts +44 -0
  138. package/dist/context/learner.d.ts.map +1 -0
  139. package/dist/context/learner.js +246 -0
  140. package/dist/context/learner.js.map +1 -0
  141. package/dist/context/versioning.d.ts +29 -0
  142. package/dist/context/versioning.d.ts.map +1 -0
  143. package/dist/context/versioning.js +81 -0
  144. package/dist/context/versioning.js.map +1 -0
  145. package/dist/index.d.ts +169 -0
  146. package/dist/index.d.ts.map +1 -0
  147. package/dist/index.js +285 -0
  148. package/dist/index.js.map +1 -0
  149. package/dist/mcp/index.d.ts +2 -0
  150. package/dist/mcp/index.d.ts.map +1 -0
  151. package/dist/mcp/index.js +2 -0
  152. package/dist/mcp/index.js.map +1 -0
  153. package/dist/mcp/server.d.ts +31 -0
  154. package/dist/mcp/server.d.ts.map +1 -0
  155. package/dist/mcp/server.js +334 -0
  156. package/dist/mcp/server.js.map +1 -0
  157. package/dist/observability/audit.d.ts +61 -0
  158. package/dist/observability/audit.d.ts.map +1 -0
  159. package/dist/observability/audit.js +168 -0
  160. package/dist/observability/audit.js.map +1 -0
  161. package/dist/observability/cost-tracker.d.ts +71 -0
  162. package/dist/observability/cost-tracker.d.ts.map +1 -0
  163. package/dist/observability/cost-tracker.js +206 -0
  164. package/dist/observability/cost-tracker.js.map +1 -0
  165. package/dist/observability/dashboard.d.ts +52 -0
  166. package/dist/observability/dashboard.d.ts.map +1 -0
  167. package/dist/observability/dashboard.js +134 -0
  168. package/dist/observability/dashboard.js.map +1 -0
  169. package/dist/observability/index.d.ts +4 -0
  170. package/dist/observability/index.d.ts.map +1 -0
  171. package/dist/observability/index.js +4 -0
  172. package/dist/observability/index.js.map +1 -0
  173. package/dist/providers/anthropic.d.ts +14 -0
  174. package/dist/providers/anthropic.d.ts.map +1 -0
  175. package/dist/providers/anthropic.js +99 -0
  176. package/dist/providers/anthropic.js.map +1 -0
  177. package/dist/providers/base.d.ts +52 -0
  178. package/dist/providers/base.d.ts.map +1 -0
  179. package/dist/providers/base.js +68 -0
  180. package/dist/providers/base.js.map +1 -0
  181. package/dist/providers/deepseek.d.ts +15 -0
  182. package/dist/providers/deepseek.d.ts.map +1 -0
  183. package/dist/providers/deepseek.js +99 -0
  184. package/dist/providers/deepseek.js.map +1 -0
  185. package/dist/providers/gemini.d.ts +15 -0
  186. package/dist/providers/gemini.d.ts.map +1 -0
  187. package/dist/providers/gemini.js +118 -0
  188. package/dist/providers/gemini.js.map +1 -0
  189. package/dist/providers/groq.d.ts +15 -0
  190. package/dist/providers/groq.d.ts.map +1 -0
  191. package/dist/providers/groq.js +101 -0
  192. package/dist/providers/groq.js.map +1 -0
  193. package/dist/providers/index.d.ts +11 -0
  194. package/dist/providers/index.d.ts.map +1 -0
  195. package/dist/providers/index.js +11 -0
  196. package/dist/providers/index.js.map +1 -0
  197. package/dist/providers/mistral.d.ts +15 -0
  198. package/dist/providers/mistral.d.ts.map +1 -0
  199. package/dist/providers/mistral.js +99 -0
  200. package/dist/providers/mistral.js.map +1 -0
  201. package/dist/providers/ollama.d.ts +14 -0
  202. package/dist/providers/ollama.d.ts.map +1 -0
  203. package/dist/providers/ollama.js +122 -0
  204. package/dist/providers/ollama.js.map +1 -0
  205. package/dist/providers/openai.d.ts +14 -0
  206. package/dist/providers/openai.d.ts.map +1 -0
  207. package/dist/providers/openai.js +80 -0
  208. package/dist/providers/openai.js.map +1 -0
  209. package/dist/providers/openrouter.d.ts +15 -0
  210. package/dist/providers/openrouter.d.ts.map +1 -0
  211. package/dist/providers/openrouter.js +101 -0
  212. package/dist/providers/openrouter.js.map +1 -0
  213. package/dist/providers/router.d.ts +51 -0
  214. package/dist/providers/router.d.ts.map +1 -0
  215. package/dist/providers/router.js +198 -0
  216. package/dist/providers/router.js.map +1 -0
  217. package/dist/quality/anomaly.d.ts +32 -0
  218. package/dist/quality/anomaly.d.ts.map +1 -0
  219. package/dist/quality/anomaly.js +126 -0
  220. package/dist/quality/anomaly.js.map +1 -0
  221. package/dist/quality/consistency.d.ts +26 -0
  222. package/dist/quality/consistency.d.ts.map +1 -0
  223. package/dist/quality/consistency.js +156 -0
  224. package/dist/quality/consistency.js.map +1 -0
  225. package/dist/quality/dual-verifier.d.ts +22 -0
  226. package/dist/quality/dual-verifier.d.ts.map +1 -0
  227. package/dist/quality/dual-verifier.js +137 -0
  228. package/dist/quality/dual-verifier.js.map +1 -0
  229. package/dist/quality/hallucination-guard.d.ts +57 -0
  230. package/dist/quality/hallucination-guard.d.ts.map +1 -0
  231. package/dist/quality/hallucination-guard.js +245 -0
  232. package/dist/quality/hallucination-guard.js.map +1 -0
  233. package/dist/quality/index.d.ts +7 -0
  234. package/dist/quality/index.d.ts.map +1 -0
  235. package/dist/quality/index.js +7 -0
  236. package/dist/quality/index.js.map +1 -0
  237. package/dist/quality/regression.d.ts +44 -0
  238. package/dist/quality/regression.d.ts.map +1 -0
  239. package/dist/quality/regression.js +181 -0
  240. package/dist/quality/regression.js.map +1 -0
  241. package/dist/quality/secret-scanner.d.ts +36 -0
  242. package/dist/quality/secret-scanner.d.ts.map +1 -0
  243. package/dist/quality/secret-scanner.js +187 -0
  244. package/dist/quality/secret-scanner.js.map +1 -0
  245. package/dist/schemas/index.d.ts +2 -0
  246. package/dist/schemas/index.d.ts.map +1 -0
  247. package/dist/schemas/index.js +2 -0
  248. package/dist/schemas/index.js.map +1 -0
  249. package/dist/schemas/registry.d.ts +72 -0
  250. package/dist/schemas/registry.d.ts.map +1 -0
  251. package/dist/schemas/registry.js +483 -0
  252. package/dist/schemas/registry.js.map +1 -0
  253. package/dist/templates/engine.d.ts +70 -0
  254. package/dist/templates/engine.d.ts.map +1 -0
  255. package/dist/templates/engine.js +71 -0
  256. package/dist/templates/engine.js.map +1 -0
  257. package/dist/templates/index.d.ts +2 -0
  258. package/dist/templates/index.d.ts.map +1 -0
  259. package/dist/templates/index.js +2 -0
  260. package/dist/templates/index.js.map +1 -0
  261. package/dist/types.d.ts +912 -0
  262. package/dist/types.d.ts.map +1 -0
  263. package/dist/types.js +75 -0
  264. package/dist/types.js.map +1 -0
  265. package/package.json +85 -0
@@ -0,0 +1,912 @@
1
+ /**
2
+ * PhantomMindAI — Core Type Definitions
3
+ */
4
+ import { z } from 'zod';
5
+ export type ProviderName = 'anthropic' | 'openai' | 'gemini' | 'groq' | 'mistral' | 'ollama' | 'deepseek' | 'openrouter';
6
+ export interface ProviderConfig {
7
+ name: ProviderName;
8
+ model: string;
9
+ apiKey?: string;
10
+ baseUrl?: string;
11
+ maxTokens?: number;
12
+ temperature?: number;
13
+ timeout?: number;
14
+ }
15
+ export interface ProviderRouting {
16
+ primary: ProviderConfig;
17
+ fallback?: ProviderConfig;
18
+ budget?: ProviderConfig;
19
+ local?: ProviderConfig;
20
+ }
21
+ export interface CompletionRequest {
22
+ prompt: string;
23
+ systemPrompt?: string;
24
+ context?: 'project' | 'file' | 'none' | ContextOptions;
25
+ schema?: string | Record<string, unknown>;
26
+ role?: AgentRole | string;
27
+ verify?: boolean;
28
+ maxTokens?: number;
29
+ temperature?: number;
30
+ stream?: boolean;
31
+ messages?: ChatMessage[];
32
+ }
33
+ export interface CompletionResponse {
34
+ content: string;
35
+ model: string;
36
+ provider: ProviderName;
37
+ usage: TokenUsage;
38
+ duration: number;
39
+ verified?: boolean;
40
+ verificationResult?: VerificationResult;
41
+ cached?: boolean;
42
+ }
43
+ export interface ChatMessage {
44
+ role: 'system' | 'user' | 'assistant';
45
+ content: string;
46
+ }
47
+ export interface TokenUsage {
48
+ inputTokens: number;
49
+ outputTokens: number;
50
+ totalTokens: number;
51
+ estimatedCost: number;
52
+ }
53
+ export interface StreamChunk {
54
+ content: string;
55
+ done: boolean;
56
+ usage?: TokenUsage;
57
+ }
58
+ export interface ContextOptions {
59
+ file?: string;
60
+ maxTokens?: number;
61
+ includeSkills?: boolean;
62
+ includeRules?: boolean;
63
+ includeSchema?: boolean;
64
+ includePrd?: string;
65
+ semanticRank?: boolean;
66
+ }
67
+ export interface ContextLayer {
68
+ type: 'skills' | 'rules' | 'schema' | 'prd' | 'decision' | 'codebase';
69
+ content: string;
70
+ relevanceScore: number;
71
+ tokenCount: number;
72
+ source: string;
73
+ }
74
+ export interface ContextResult {
75
+ layers: ContextLayer[];
76
+ totalTokens: number;
77
+ truncated: boolean;
78
+ }
79
+ export interface ContextVersionEntry {
80
+ hash: string;
81
+ timestamp: string;
82
+ author: string;
83
+ message: string;
84
+ files: string[];
85
+ }
86
+ export type AdapterName = 'copilot' | 'cursor' | 'cline' | 'continue' | 'windsurf' | 'zed' | 'aider' | 'claude-code' | 'codex';
87
+ export interface AdapterConfig {
88
+ name: AdapterName;
89
+ outputPath: string;
90
+ format: 'markdown' | 'json' | 'yaml' | 'text';
91
+ enabled: boolean;
92
+ }
93
+ export interface SyncResult {
94
+ adapter: AdapterName;
95
+ outputPath: string;
96
+ success: boolean;
97
+ created: boolean;
98
+ changed: boolean;
99
+ diff?: string;
100
+ error?: string;
101
+ }
102
+ export interface MCPServerConfig {
103
+ enabled: boolean;
104
+ port: number;
105
+ autoStart: boolean;
106
+ }
107
+ export interface MCPToolResult {
108
+ content: string | Record<string, unknown>;
109
+ isError?: boolean;
110
+ }
111
+ export type AgentRole = 'architect' | 'implementer' | 'securityReviewer' | 'documentWriter' | 'testWriter';
112
+ export interface AgentConfig {
113
+ role?: AgentRole | string;
114
+ tools?: string[];
115
+ maxSteps?: number;
116
+ humanCheckpoint?: HumanCheckpointConfig;
117
+ sandbox?: SandboxConfig;
118
+ memory?: MemoryConfig;
119
+ }
120
+ export interface HumanCheckpointConfig {
121
+ before?: string[];
122
+ after?: string[];
123
+ onError?: boolean;
124
+ onAnomalyDetected?: boolean;
125
+ }
126
+ export interface SandboxConfig {
127
+ allowedCommands?: string[];
128
+ networkAccess?: boolean;
129
+ maxFileSize?: number;
130
+ allowedPaths?: string[];
131
+ }
132
+ export interface MemoryConfig {
133
+ type: 'persistent' | 'session' | 'none';
134
+ path?: string;
135
+ }
136
+ export interface AgentTask {
137
+ id: string;
138
+ description: string;
139
+ status: 'pending' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
140
+ role?: AgentRole | string;
141
+ steps: AgentStep[];
142
+ result?: AgentResult;
143
+ createdAt: string;
144
+ updatedAt: string;
145
+ parentTaskId?: string;
146
+ }
147
+ export interface AgentStep {
148
+ id: string;
149
+ action: string;
150
+ input: Record<string, unknown>;
151
+ output?: unknown;
152
+ status: 'pending' | 'running' | 'checkpoint' | 'completed' | 'failed' | 'skipped';
153
+ startedAt?: string;
154
+ completedAt?: string;
155
+ error?: string;
156
+ tokenUsage?: TokenUsage;
157
+ reasoning?: string;
158
+ }
159
+ export interface AgentResult {
160
+ success: boolean;
161
+ summary: string;
162
+ filesChanged: string[];
163
+ decisionLog: DecisionEntry[];
164
+ totalTokenUsage: TokenUsage;
165
+ duration: number;
166
+ }
167
+ export interface DecisionEntry {
168
+ title: string;
169
+ timestamp: string;
170
+ agent: string;
171
+ task: string;
172
+ filesAffected: string[];
173
+ reasoning: string;
174
+ alternativesConsidered: string[];
175
+ contextBasis: string;
176
+ }
177
+ export interface SecretMatch {
178
+ pattern: string;
179
+ file: string;
180
+ line: number;
181
+ column: number;
182
+ value: string;
183
+ replacement: string;
184
+ severity: 'critical' | 'high' | 'medium' | 'low';
185
+ }
186
+ export interface HallucinationCheck {
187
+ type: 'import' | 'class' | 'method' | 'file' | 'package';
188
+ reference: string;
189
+ exists: boolean;
190
+ suggestions?: string[];
191
+ file: string;
192
+ line: number;
193
+ }
194
+ export interface VerificationResult {
195
+ approved: boolean;
196
+ provider: ProviderName;
197
+ model: string;
198
+ issues: VerificationIssue[];
199
+ duration: number;
200
+ cost: TokenUsage;
201
+ }
202
+ export interface VerificationIssue {
203
+ severity: 'error' | 'warning' | 'info';
204
+ category: 'convention' | 'security' | 'edge-case' | 'performance' | 'correctness';
205
+ description: string;
206
+ suggestion?: string;
207
+ line?: number;
208
+ }
209
+ export interface ConsistencyReport {
210
+ issues: ConsistencyIssue[];
211
+ scannedFiles: number;
212
+ duration: number;
213
+ }
214
+ export interface ConsistencyIssue {
215
+ type: 'naming' | 'pattern' | 'architecture' | 'deprecated' | 'async';
216
+ severity?: 'error' | 'warning' | 'info';
217
+ description: string;
218
+ files: string[];
219
+ suggestion: string;
220
+ autoFixable: boolean;
221
+ }
222
+ export interface RegressionReport {
223
+ hasRegression: boolean;
224
+ testsBefore: number;
225
+ testsAfter: number;
226
+ testsBroken: number;
227
+ schemaViolations: number;
228
+ architectureViolations: number;
229
+ fileChanges: FileChange[];
230
+ }
231
+ export interface FileChange {
232
+ path: string;
233
+ action: 'created' | 'modified' | 'deleted';
234
+ diff?: string;
235
+ }
236
+ export interface AnomalyReport {
237
+ detected: boolean;
238
+ type?: 'stuck-loop' | 'no-progress' | 'high-error-rate' | 'token-spike';
239
+ description?: string;
240
+ metrics: AnomalyMetrics;
241
+ }
242
+ export interface AnomalyMetrics {
243
+ fileAccessCounts: Record<string, number>;
244
+ stepsWithoutProgress: number;
245
+ errorRate: number;
246
+ tokenUsageHistory: number[];
247
+ averageTokenUsage: number;
248
+ }
249
+ export interface AuditEntry {
250
+ id: string;
251
+ timestamp: string;
252
+ action: string;
253
+ provider?: ProviderName;
254
+ model?: string;
255
+ agent?: string;
256
+ file?: string;
257
+ reasoning?: string;
258
+ tokenUsage?: TokenUsage;
259
+ duration?: number;
260
+ success?: boolean;
261
+ error?: string;
262
+ taskId?: string;
263
+ details?: Record<string, unknown>;
264
+ }
265
+ export interface CostReport {
266
+ period: string;
267
+ totalCost: number;
268
+ totalInputTokens: number;
269
+ totalOutputTokens: number;
270
+ providers?: ProviderCostBreakdown[];
271
+ byProvider?: Record<string, number>;
272
+ byModel?: Record<string, number>;
273
+ totalTokens?: TokenUsage;
274
+ requestCount?: number;
275
+ budgetRemaining?: number;
276
+ qualityMetrics?: QualityMetrics;
277
+ performanceMetrics?: PerformanceMetrics;
278
+ }
279
+ export interface ProviderCostBreakdown {
280
+ provider: ProviderName;
281
+ model: string;
282
+ cost: number;
283
+ inputTokens: number;
284
+ outputTokens: number;
285
+ requestCount: number;
286
+ label?: string;
287
+ }
288
+ export interface QualityMetrics {
289
+ schemaValidationPassRate: number;
290
+ hallucinationDetections: number;
291
+ dualVerificationRejections: number;
292
+ anomaliesDetected: number;
293
+ regressionsCaught: number;
294
+ }
295
+ export interface PerformanceMetrics {
296
+ avgResponseTime: Record<ProviderName, number>;
297
+ taskCompletionRate: number;
298
+ avgStepsPerTask: number;
299
+ }
300
+ export interface PhantomConfig {
301
+ version: string;
302
+ providers: ProviderRouting;
303
+ context: ContextConfig;
304
+ adapters: AdapterName[];
305
+ mcp: MCPServerConfig;
306
+ quality: QualityConfig;
307
+ agent: AgentGlobalConfig;
308
+ budget: BudgetConfig;
309
+ environments?: Record<string, Partial<PhantomConfig>>;
310
+ git: GitConfig;
311
+ team: TeamConfig;
312
+ }
313
+ export interface ContextConfig {
314
+ skills: string;
315
+ rules: string;
316
+ schema: string;
317
+ prds: string;
318
+ decisions: string;
319
+ }
320
+ export interface QualityConfig {
321
+ secretScanner: boolean;
322
+ hallucinationGuard: boolean;
323
+ dualVerification: boolean;
324
+ dualVerificationProvider?: ProviderName;
325
+ }
326
+ export interface AgentGlobalConfig {
327
+ maxSteps: number;
328
+ humanCheckpoint: HumanCheckpointConfig;
329
+ sandbox: SandboxConfig;
330
+ memory: MemoryConfig;
331
+ }
332
+ export interface BudgetConfig {
333
+ maxTokensPerTask: number;
334
+ maxCostPerDay: number;
335
+ warningAt: number;
336
+ fallbackOnBudget: 'budget' | 'local' | 'stop';
337
+ }
338
+ export interface GitConfig {
339
+ autoCommit: boolean;
340
+ commitMessageFormat: 'conventional' | 'descriptive' | 'custom';
341
+ requireApproval: boolean;
342
+ }
343
+ export interface TeamConfig {
344
+ contextSync: boolean;
345
+ remoteContext: string;
346
+ }
347
+ export interface QueueTask {
348
+ id: string;
349
+ description: string;
350
+ role?: AgentRole | string;
351
+ priority: 'low' | 'normal' | 'high' | 'critical';
352
+ status: 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';
353
+ dependencies?: string[];
354
+ cron?: string;
355
+ createdAt: string;
356
+ startedAt?: string;
357
+ completedAt?: string;
358
+ result?: AgentResult;
359
+ error?: string;
360
+ }
361
+ export type PhantomEvent = 'agent:start' | 'agent:step' | 'agent:checkpoint' | 'agent:complete' | 'agent:error' | 'agent:anomaly' | 'provider:request' | 'provider:response' | 'provider:fallback' | 'quality:secret-detected' | 'quality:hallucination-detected' | 'quality:verification-failed' | 'quality:regression-detected' | 'sync:start' | 'sync:complete' | 'context:updated' | 'budget:warning' | 'budget:exceeded';
362
+ export interface PhantomEventData {
363
+ event: PhantomEvent;
364
+ timestamp: string;
365
+ data: Record<string, unknown>;
366
+ }
367
+ export declare const ProviderConfigSchema: z.ZodObject<{
368
+ name: z.ZodEnum<["anthropic", "openai", "gemini", "groq", "mistral", "ollama", "deepseek", "openrouter"]>;
369
+ model: z.ZodString;
370
+ apiKey: z.ZodOptional<z.ZodString>;
371
+ baseUrl: z.ZodOptional<z.ZodString>;
372
+ maxTokens: z.ZodOptional<z.ZodNumber>;
373
+ temperature: z.ZodOptional<z.ZodNumber>;
374
+ timeout: z.ZodOptional<z.ZodNumber>;
375
+ }, "strip", z.ZodTypeAny, {
376
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
377
+ model: string;
378
+ apiKey?: string | undefined;
379
+ baseUrl?: string | undefined;
380
+ maxTokens?: number | undefined;
381
+ temperature?: number | undefined;
382
+ timeout?: number | undefined;
383
+ }, {
384
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
385
+ model: string;
386
+ apiKey?: string | undefined;
387
+ baseUrl?: string | undefined;
388
+ maxTokens?: number | undefined;
389
+ temperature?: number | undefined;
390
+ timeout?: number | undefined;
391
+ }>;
392
+ export declare const PhantomConfigSchema: z.ZodObject<{
393
+ version: z.ZodString;
394
+ providers: z.ZodObject<{
395
+ primary: z.ZodObject<{
396
+ name: z.ZodEnum<["anthropic", "openai", "gemini", "groq", "mistral", "ollama", "deepseek", "openrouter"]>;
397
+ model: z.ZodString;
398
+ apiKey: z.ZodOptional<z.ZodString>;
399
+ baseUrl: z.ZodOptional<z.ZodString>;
400
+ maxTokens: z.ZodOptional<z.ZodNumber>;
401
+ temperature: z.ZodOptional<z.ZodNumber>;
402
+ timeout: z.ZodOptional<z.ZodNumber>;
403
+ }, "strip", z.ZodTypeAny, {
404
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
405
+ model: string;
406
+ apiKey?: string | undefined;
407
+ baseUrl?: string | undefined;
408
+ maxTokens?: number | undefined;
409
+ temperature?: number | undefined;
410
+ timeout?: number | undefined;
411
+ }, {
412
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
413
+ model: string;
414
+ apiKey?: string | undefined;
415
+ baseUrl?: string | undefined;
416
+ maxTokens?: number | undefined;
417
+ temperature?: number | undefined;
418
+ timeout?: number | undefined;
419
+ }>;
420
+ fallback: z.ZodOptional<z.ZodObject<{
421
+ name: z.ZodEnum<["anthropic", "openai", "gemini", "groq", "mistral", "ollama", "deepseek", "openrouter"]>;
422
+ model: z.ZodString;
423
+ apiKey: z.ZodOptional<z.ZodString>;
424
+ baseUrl: z.ZodOptional<z.ZodString>;
425
+ maxTokens: z.ZodOptional<z.ZodNumber>;
426
+ temperature: z.ZodOptional<z.ZodNumber>;
427
+ timeout: z.ZodOptional<z.ZodNumber>;
428
+ }, "strip", z.ZodTypeAny, {
429
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
430
+ model: string;
431
+ apiKey?: string | undefined;
432
+ baseUrl?: string | undefined;
433
+ maxTokens?: number | undefined;
434
+ temperature?: number | undefined;
435
+ timeout?: number | undefined;
436
+ }, {
437
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
438
+ model: string;
439
+ apiKey?: string | undefined;
440
+ baseUrl?: string | undefined;
441
+ maxTokens?: number | undefined;
442
+ temperature?: number | undefined;
443
+ timeout?: number | undefined;
444
+ }>>;
445
+ budget: z.ZodOptional<z.ZodObject<{
446
+ name: z.ZodEnum<["anthropic", "openai", "gemini", "groq", "mistral", "ollama", "deepseek", "openrouter"]>;
447
+ model: z.ZodString;
448
+ apiKey: z.ZodOptional<z.ZodString>;
449
+ baseUrl: z.ZodOptional<z.ZodString>;
450
+ maxTokens: z.ZodOptional<z.ZodNumber>;
451
+ temperature: z.ZodOptional<z.ZodNumber>;
452
+ timeout: z.ZodOptional<z.ZodNumber>;
453
+ }, "strip", z.ZodTypeAny, {
454
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
455
+ model: string;
456
+ apiKey?: string | undefined;
457
+ baseUrl?: string | undefined;
458
+ maxTokens?: number | undefined;
459
+ temperature?: number | undefined;
460
+ timeout?: number | undefined;
461
+ }, {
462
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
463
+ model: string;
464
+ apiKey?: string | undefined;
465
+ baseUrl?: string | undefined;
466
+ maxTokens?: number | undefined;
467
+ temperature?: number | undefined;
468
+ timeout?: number | undefined;
469
+ }>>;
470
+ local: z.ZodOptional<z.ZodObject<{
471
+ name: z.ZodEnum<["anthropic", "openai", "gemini", "groq", "mistral", "ollama", "deepseek", "openrouter"]>;
472
+ model: z.ZodString;
473
+ apiKey: z.ZodOptional<z.ZodString>;
474
+ baseUrl: z.ZodOptional<z.ZodString>;
475
+ maxTokens: z.ZodOptional<z.ZodNumber>;
476
+ temperature: z.ZodOptional<z.ZodNumber>;
477
+ timeout: z.ZodOptional<z.ZodNumber>;
478
+ }, "strip", z.ZodTypeAny, {
479
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
480
+ model: string;
481
+ apiKey?: string | undefined;
482
+ baseUrl?: string | undefined;
483
+ maxTokens?: number | undefined;
484
+ temperature?: number | undefined;
485
+ timeout?: number | undefined;
486
+ }, {
487
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
488
+ model: string;
489
+ apiKey?: string | undefined;
490
+ baseUrl?: string | undefined;
491
+ maxTokens?: number | undefined;
492
+ temperature?: number | undefined;
493
+ timeout?: number | undefined;
494
+ }>>;
495
+ }, "strip", z.ZodTypeAny, {
496
+ primary: {
497
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
498
+ model: string;
499
+ apiKey?: string | undefined;
500
+ baseUrl?: string | undefined;
501
+ maxTokens?: number | undefined;
502
+ temperature?: number | undefined;
503
+ timeout?: number | undefined;
504
+ };
505
+ fallback?: {
506
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
507
+ model: string;
508
+ apiKey?: string | undefined;
509
+ baseUrl?: string | undefined;
510
+ maxTokens?: number | undefined;
511
+ temperature?: number | undefined;
512
+ timeout?: number | undefined;
513
+ } | undefined;
514
+ budget?: {
515
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
516
+ model: string;
517
+ apiKey?: string | undefined;
518
+ baseUrl?: string | undefined;
519
+ maxTokens?: number | undefined;
520
+ temperature?: number | undefined;
521
+ timeout?: number | undefined;
522
+ } | undefined;
523
+ local?: {
524
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
525
+ model: string;
526
+ apiKey?: string | undefined;
527
+ baseUrl?: string | undefined;
528
+ maxTokens?: number | undefined;
529
+ temperature?: number | undefined;
530
+ timeout?: number | undefined;
531
+ } | undefined;
532
+ }, {
533
+ primary: {
534
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
535
+ model: string;
536
+ apiKey?: string | undefined;
537
+ baseUrl?: string | undefined;
538
+ maxTokens?: number | undefined;
539
+ temperature?: number | undefined;
540
+ timeout?: number | undefined;
541
+ };
542
+ fallback?: {
543
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
544
+ model: string;
545
+ apiKey?: string | undefined;
546
+ baseUrl?: string | undefined;
547
+ maxTokens?: number | undefined;
548
+ temperature?: number | undefined;
549
+ timeout?: number | undefined;
550
+ } | undefined;
551
+ budget?: {
552
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
553
+ model: string;
554
+ apiKey?: string | undefined;
555
+ baseUrl?: string | undefined;
556
+ maxTokens?: number | undefined;
557
+ temperature?: number | undefined;
558
+ timeout?: number | undefined;
559
+ } | undefined;
560
+ local?: {
561
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
562
+ model: string;
563
+ apiKey?: string | undefined;
564
+ baseUrl?: string | undefined;
565
+ maxTokens?: number | undefined;
566
+ temperature?: number | undefined;
567
+ timeout?: number | undefined;
568
+ } | undefined;
569
+ }>;
570
+ context: z.ZodObject<{
571
+ skills: z.ZodString;
572
+ rules: z.ZodString;
573
+ schema: z.ZodString;
574
+ prds: z.ZodString;
575
+ decisions: z.ZodString;
576
+ }, "strip", z.ZodTypeAny, {
577
+ skills: string;
578
+ rules: string;
579
+ schema: string;
580
+ prds: string;
581
+ decisions: string;
582
+ }, {
583
+ skills: string;
584
+ rules: string;
585
+ schema: string;
586
+ prds: string;
587
+ decisions: string;
588
+ }>;
589
+ adapters: z.ZodArray<z.ZodEnum<["copilot", "cursor", "cline", "continue", "windsurf", "zed", "aider", "claude-code", "codex"]>, "many">;
590
+ mcp: z.ZodObject<{
591
+ enabled: z.ZodBoolean;
592
+ port: z.ZodNumber;
593
+ autoStart: z.ZodBoolean;
594
+ }, "strip", z.ZodTypeAny, {
595
+ enabled: boolean;
596
+ port: number;
597
+ autoStart: boolean;
598
+ }, {
599
+ enabled: boolean;
600
+ port: number;
601
+ autoStart: boolean;
602
+ }>;
603
+ quality: z.ZodObject<{
604
+ secretScanner: z.ZodBoolean;
605
+ hallucinationGuard: z.ZodBoolean;
606
+ dualVerification: z.ZodBoolean;
607
+ dualVerificationProvider: z.ZodOptional<z.ZodEnum<["anthropic", "openai", "gemini", "groq", "mistral", "ollama", "deepseek", "openrouter"]>>;
608
+ }, "strip", z.ZodTypeAny, {
609
+ secretScanner: boolean;
610
+ hallucinationGuard: boolean;
611
+ dualVerification: boolean;
612
+ dualVerificationProvider?: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter" | undefined;
613
+ }, {
614
+ secretScanner: boolean;
615
+ hallucinationGuard: boolean;
616
+ dualVerification: boolean;
617
+ dualVerificationProvider?: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter" | undefined;
618
+ }>;
619
+ agent: z.ZodObject<{
620
+ maxSteps: z.ZodNumber;
621
+ humanCheckpoint: z.ZodObject<{
622
+ before: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
623
+ after: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
624
+ onError: z.ZodOptional<z.ZodBoolean>;
625
+ onAnomalyDetected: z.ZodOptional<z.ZodBoolean>;
626
+ }, "strip", z.ZodTypeAny, {
627
+ before?: string[] | undefined;
628
+ after?: string[] | undefined;
629
+ onError?: boolean | undefined;
630
+ onAnomalyDetected?: boolean | undefined;
631
+ }, {
632
+ before?: string[] | undefined;
633
+ after?: string[] | undefined;
634
+ onError?: boolean | undefined;
635
+ onAnomalyDetected?: boolean | undefined;
636
+ }>;
637
+ sandbox: z.ZodObject<{
638
+ allowedCommands: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
639
+ networkAccess: z.ZodOptional<z.ZodBoolean>;
640
+ }, "strip", z.ZodTypeAny, {
641
+ allowedCommands?: string[] | undefined;
642
+ networkAccess?: boolean | undefined;
643
+ }, {
644
+ allowedCommands?: string[] | undefined;
645
+ networkAccess?: boolean | undefined;
646
+ }>;
647
+ memory: z.ZodObject<{
648
+ type: z.ZodEnum<["persistent", "session", "none"]>;
649
+ path: z.ZodOptional<z.ZodString>;
650
+ }, "strip", z.ZodTypeAny, {
651
+ type: "persistent" | "session" | "none";
652
+ path?: string | undefined;
653
+ }, {
654
+ type: "persistent" | "session" | "none";
655
+ path?: string | undefined;
656
+ }>;
657
+ }, "strip", z.ZodTypeAny, {
658
+ maxSteps: number;
659
+ humanCheckpoint: {
660
+ before?: string[] | undefined;
661
+ after?: string[] | undefined;
662
+ onError?: boolean | undefined;
663
+ onAnomalyDetected?: boolean | undefined;
664
+ };
665
+ sandbox: {
666
+ allowedCommands?: string[] | undefined;
667
+ networkAccess?: boolean | undefined;
668
+ };
669
+ memory: {
670
+ type: "persistent" | "session" | "none";
671
+ path?: string | undefined;
672
+ };
673
+ }, {
674
+ maxSteps: number;
675
+ humanCheckpoint: {
676
+ before?: string[] | undefined;
677
+ after?: string[] | undefined;
678
+ onError?: boolean | undefined;
679
+ onAnomalyDetected?: boolean | undefined;
680
+ };
681
+ sandbox: {
682
+ allowedCommands?: string[] | undefined;
683
+ networkAccess?: boolean | undefined;
684
+ };
685
+ memory: {
686
+ type: "persistent" | "session" | "none";
687
+ path?: string | undefined;
688
+ };
689
+ }>;
690
+ budget: z.ZodObject<{
691
+ maxTokensPerTask: z.ZodNumber;
692
+ maxCostPerDay: z.ZodNumber;
693
+ warningAt: z.ZodNumber;
694
+ fallbackOnBudget: z.ZodEnum<["budget", "local", "stop"]>;
695
+ }, "strip", z.ZodTypeAny, {
696
+ maxTokensPerTask: number;
697
+ maxCostPerDay: number;
698
+ warningAt: number;
699
+ fallbackOnBudget: "budget" | "local" | "stop";
700
+ }, {
701
+ maxTokensPerTask: number;
702
+ maxCostPerDay: number;
703
+ warningAt: number;
704
+ fallbackOnBudget: "budget" | "local" | "stop";
705
+ }>;
706
+ git: z.ZodObject<{
707
+ autoCommit: z.ZodBoolean;
708
+ commitMessageFormat: z.ZodEnum<["conventional", "descriptive", "custom"]>;
709
+ requireApproval: z.ZodBoolean;
710
+ }, "strip", z.ZodTypeAny, {
711
+ autoCommit: boolean;
712
+ commitMessageFormat: "custom" | "conventional" | "descriptive";
713
+ requireApproval: boolean;
714
+ }, {
715
+ autoCommit: boolean;
716
+ commitMessageFormat: "custom" | "conventional" | "descriptive";
717
+ requireApproval: boolean;
718
+ }>;
719
+ team: z.ZodObject<{
720
+ contextSync: z.ZodBoolean;
721
+ remoteContext: z.ZodString;
722
+ }, "strip", z.ZodTypeAny, {
723
+ contextSync: boolean;
724
+ remoteContext: string;
725
+ }, {
726
+ contextSync: boolean;
727
+ remoteContext: string;
728
+ }>;
729
+ }, "strip", z.ZodTypeAny, {
730
+ version: string;
731
+ providers: {
732
+ primary: {
733
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
734
+ model: string;
735
+ apiKey?: string | undefined;
736
+ baseUrl?: string | undefined;
737
+ maxTokens?: number | undefined;
738
+ temperature?: number | undefined;
739
+ timeout?: number | undefined;
740
+ };
741
+ fallback?: {
742
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
743
+ model: string;
744
+ apiKey?: string | undefined;
745
+ baseUrl?: string | undefined;
746
+ maxTokens?: number | undefined;
747
+ temperature?: number | undefined;
748
+ timeout?: number | undefined;
749
+ } | undefined;
750
+ budget?: {
751
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
752
+ model: string;
753
+ apiKey?: string | undefined;
754
+ baseUrl?: string | undefined;
755
+ maxTokens?: number | undefined;
756
+ temperature?: number | undefined;
757
+ timeout?: number | undefined;
758
+ } | undefined;
759
+ local?: {
760
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
761
+ model: string;
762
+ apiKey?: string | undefined;
763
+ baseUrl?: string | undefined;
764
+ maxTokens?: number | undefined;
765
+ temperature?: number | undefined;
766
+ timeout?: number | undefined;
767
+ } | undefined;
768
+ };
769
+ budget: {
770
+ maxTokensPerTask: number;
771
+ maxCostPerDay: number;
772
+ warningAt: number;
773
+ fallbackOnBudget: "budget" | "local" | "stop";
774
+ };
775
+ context: {
776
+ skills: string;
777
+ rules: string;
778
+ schema: string;
779
+ prds: string;
780
+ decisions: string;
781
+ };
782
+ adapters: ("copilot" | "cursor" | "cline" | "continue" | "windsurf" | "zed" | "aider" | "claude-code" | "codex")[];
783
+ mcp: {
784
+ enabled: boolean;
785
+ port: number;
786
+ autoStart: boolean;
787
+ };
788
+ quality: {
789
+ secretScanner: boolean;
790
+ hallucinationGuard: boolean;
791
+ dualVerification: boolean;
792
+ dualVerificationProvider?: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter" | undefined;
793
+ };
794
+ agent: {
795
+ maxSteps: number;
796
+ humanCheckpoint: {
797
+ before?: string[] | undefined;
798
+ after?: string[] | undefined;
799
+ onError?: boolean | undefined;
800
+ onAnomalyDetected?: boolean | undefined;
801
+ };
802
+ sandbox: {
803
+ allowedCommands?: string[] | undefined;
804
+ networkAccess?: boolean | undefined;
805
+ };
806
+ memory: {
807
+ type: "persistent" | "session" | "none";
808
+ path?: string | undefined;
809
+ };
810
+ };
811
+ git: {
812
+ autoCommit: boolean;
813
+ commitMessageFormat: "custom" | "conventional" | "descriptive";
814
+ requireApproval: boolean;
815
+ };
816
+ team: {
817
+ contextSync: boolean;
818
+ remoteContext: string;
819
+ };
820
+ }, {
821
+ version: string;
822
+ providers: {
823
+ primary: {
824
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
825
+ model: string;
826
+ apiKey?: string | undefined;
827
+ baseUrl?: string | undefined;
828
+ maxTokens?: number | undefined;
829
+ temperature?: number | undefined;
830
+ timeout?: number | undefined;
831
+ };
832
+ fallback?: {
833
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
834
+ model: string;
835
+ apiKey?: string | undefined;
836
+ baseUrl?: string | undefined;
837
+ maxTokens?: number | undefined;
838
+ temperature?: number | undefined;
839
+ timeout?: number | undefined;
840
+ } | undefined;
841
+ budget?: {
842
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
843
+ model: string;
844
+ apiKey?: string | undefined;
845
+ baseUrl?: string | undefined;
846
+ maxTokens?: number | undefined;
847
+ temperature?: number | undefined;
848
+ timeout?: number | undefined;
849
+ } | undefined;
850
+ local?: {
851
+ name: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter";
852
+ model: string;
853
+ apiKey?: string | undefined;
854
+ baseUrl?: string | undefined;
855
+ maxTokens?: number | undefined;
856
+ temperature?: number | undefined;
857
+ timeout?: number | undefined;
858
+ } | undefined;
859
+ };
860
+ budget: {
861
+ maxTokensPerTask: number;
862
+ maxCostPerDay: number;
863
+ warningAt: number;
864
+ fallbackOnBudget: "budget" | "local" | "stop";
865
+ };
866
+ context: {
867
+ skills: string;
868
+ rules: string;
869
+ schema: string;
870
+ prds: string;
871
+ decisions: string;
872
+ };
873
+ adapters: ("copilot" | "cursor" | "cline" | "continue" | "windsurf" | "zed" | "aider" | "claude-code" | "codex")[];
874
+ mcp: {
875
+ enabled: boolean;
876
+ port: number;
877
+ autoStart: boolean;
878
+ };
879
+ quality: {
880
+ secretScanner: boolean;
881
+ hallucinationGuard: boolean;
882
+ dualVerification: boolean;
883
+ dualVerificationProvider?: "anthropic" | "openai" | "gemini" | "groq" | "mistral" | "ollama" | "deepseek" | "openrouter" | undefined;
884
+ };
885
+ agent: {
886
+ maxSteps: number;
887
+ humanCheckpoint: {
888
+ before?: string[] | undefined;
889
+ after?: string[] | undefined;
890
+ onError?: boolean | undefined;
891
+ onAnomalyDetected?: boolean | undefined;
892
+ };
893
+ sandbox: {
894
+ allowedCommands?: string[] | undefined;
895
+ networkAccess?: boolean | undefined;
896
+ };
897
+ memory: {
898
+ type: "persistent" | "session" | "none";
899
+ path?: string | undefined;
900
+ };
901
+ };
902
+ git: {
903
+ autoCommit: boolean;
904
+ commitMessageFormat: "custom" | "conventional" | "descriptive";
905
+ requireApproval: boolean;
906
+ };
907
+ team: {
908
+ contextSync: boolean;
909
+ remoteContext: string;
910
+ };
911
+ }>;
912
+ //# sourceMappingURL=types.d.ts.map