@mmnto/totem 0.17.0 → 0.19.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.
@@ -9,12 +9,12 @@ export declare const IngestTargetSchema: z.ZodObject<{
9
9
  type: z.ZodEnum<["code", "session_log", "spec"]>;
10
10
  strategy: z.ZodEnum<["typescript-ast", "markdown-heading", "session-log", "schema-file", "test-file"]>;
11
11
  }, "strip", z.ZodTypeAny, {
12
- glob: string;
13
12
  type: "code" | "session_log" | "spec";
13
+ glob: string;
14
14
  strategy: "typescript-ast" | "markdown-heading" | "session-log" | "schema-file" | "test-file";
15
15
  }, {
16
- glob: string;
17
16
  type: "code" | "session_log" | "spec";
17
+ glob: string;
18
18
  strategy: "typescript-ast" | "markdown-heading" | "session-log" | "schema-file" | "test-file";
19
19
  }>;
20
20
  export declare const OpenAIProviderSchema: z.ZodObject<{
@@ -76,17 +76,17 @@ export declare const EmbeddingProviderSchema: z.ZodDiscriminatedUnion<"provider"
76
76
  }>]>;
77
77
  export declare const DEFAULT_IGNORE_PATTERNS: string[];
78
78
  export declare const ShellOrchestratorSchema: z.ZodObject<{
79
- provider: z.ZodLiteral<"shell">;
80
- /** Shell command with {file} and {model} placeholders */
81
- command: z.ZodString;
82
- /** Default model name substituted for {model} if --model is not passed */
79
+ /** Default model name if --model is not passed */
83
80
  defaultModel: z.ZodOptional<z.ZodString>;
84
- /** Optional fallback model used automatically if the primary model fails due to quota/rate limits */
81
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
85
82
  fallbackModel: z.ZodOptional<z.ZodString>;
86
- /** Optional per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
83
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
87
84
  overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
88
- /** Optional per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
85
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
89
86
  cacheTtls: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
87
+ provider: z.ZodLiteral<"shell">;
88
+ /** Shell command with {file} and {model} placeholders */
89
+ command: z.ZodString;
90
90
  }, "strip", z.ZodTypeAny, {
91
91
  provider: "shell";
92
92
  command: string;
@@ -102,18 +102,64 @@ export declare const ShellOrchestratorSchema: z.ZodObject<{
102
102
  overrides?: Record<string, string> | undefined;
103
103
  cacheTtls?: Record<string, number> | undefined;
104
104
  }>;
105
+ export declare const GeminiOrchestratorSchema: z.ZodObject<{
106
+ /** Default model name if --model is not passed */
107
+ defaultModel: z.ZodOptional<z.ZodString>;
108
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
109
+ fallbackModel: z.ZodOptional<z.ZodString>;
110
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
111
+ overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
112
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
113
+ cacheTtls: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
114
+ provider: z.ZodLiteral<"gemini">;
115
+ }, "strip", z.ZodTypeAny, {
116
+ provider: "gemini";
117
+ defaultModel?: string | undefined;
118
+ fallbackModel?: string | undefined;
119
+ overrides?: Record<string, string> | undefined;
120
+ cacheTtls?: Record<string, number> | undefined;
121
+ }, {
122
+ provider: "gemini";
123
+ defaultModel?: string | undefined;
124
+ fallbackModel?: string | undefined;
125
+ overrides?: Record<string, string> | undefined;
126
+ cacheTtls?: Record<string, number> | undefined;
127
+ }>;
128
+ export declare const AnthropicOrchestratorSchema: z.ZodObject<{
129
+ /** Default model name if --model is not passed */
130
+ defaultModel: z.ZodOptional<z.ZodString>;
131
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
132
+ fallbackModel: z.ZodOptional<z.ZodString>;
133
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
134
+ overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
135
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
136
+ cacheTtls: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
137
+ provider: z.ZodLiteral<"anthropic">;
138
+ }, "strip", z.ZodTypeAny, {
139
+ provider: "anthropic";
140
+ defaultModel?: string | undefined;
141
+ fallbackModel?: string | undefined;
142
+ overrides?: Record<string, string> | undefined;
143
+ cacheTtls?: Record<string, number> | undefined;
144
+ }, {
145
+ provider: "anthropic";
146
+ defaultModel?: string | undefined;
147
+ fallbackModel?: string | undefined;
148
+ overrides?: Record<string, string> | undefined;
149
+ cacheTtls?: Record<string, number> | undefined;
150
+ }>;
105
151
  export declare const OrchestratorSchema: z.ZodDiscriminatedUnion<"provider", [z.ZodObject<{
106
- provider: z.ZodLiteral<"shell">;
107
- /** Shell command with {file} and {model} placeholders */
108
- command: z.ZodString;
109
- /** Default model name substituted for {model} if --model is not passed */
152
+ /** Default model name if --model is not passed */
110
153
  defaultModel: z.ZodOptional<z.ZodString>;
111
- /** Optional fallback model used automatically if the primary model fails due to quota/rate limits */
154
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
112
155
  fallbackModel: z.ZodOptional<z.ZodString>;
113
- /** Optional per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
156
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
114
157
  overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
115
- /** Optional per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
158
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
116
159
  cacheTtls: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
160
+ provider: z.ZodLiteral<"shell">;
161
+ /** Shell command with {file} and {model} placeholders */
162
+ command: z.ZodString;
117
163
  }, "strip", z.ZodTypeAny, {
118
164
  provider: "shell";
119
165
  command: string;
@@ -128,6 +174,50 @@ export declare const OrchestratorSchema: z.ZodDiscriminatedUnion<"provider", [z.
128
174
  fallbackModel?: string | undefined;
129
175
  overrides?: Record<string, string> | undefined;
130
176
  cacheTtls?: Record<string, number> | undefined;
177
+ }>, z.ZodObject<{
178
+ /** Default model name if --model is not passed */
179
+ defaultModel: z.ZodOptional<z.ZodString>;
180
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
181
+ fallbackModel: z.ZodOptional<z.ZodString>;
182
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
183
+ overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
184
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
185
+ cacheTtls: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
186
+ provider: z.ZodLiteral<"gemini">;
187
+ }, "strip", z.ZodTypeAny, {
188
+ provider: "gemini";
189
+ defaultModel?: string | undefined;
190
+ fallbackModel?: string | undefined;
191
+ overrides?: Record<string, string> | undefined;
192
+ cacheTtls?: Record<string, number> | undefined;
193
+ }, {
194
+ provider: "gemini";
195
+ defaultModel?: string | undefined;
196
+ fallbackModel?: string | undefined;
197
+ overrides?: Record<string, string> | undefined;
198
+ cacheTtls?: Record<string, number> | undefined;
199
+ }>, z.ZodObject<{
200
+ /** Default model name if --model is not passed */
201
+ defaultModel: z.ZodOptional<z.ZodString>;
202
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
203
+ fallbackModel: z.ZodOptional<z.ZodString>;
204
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
205
+ overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
206
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
207
+ cacheTtls: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
208
+ provider: z.ZodLiteral<"anthropic">;
209
+ }, "strip", z.ZodTypeAny, {
210
+ provider: "anthropic";
211
+ defaultModel?: string | undefined;
212
+ fallbackModel?: string | undefined;
213
+ overrides?: Record<string, string> | undefined;
214
+ cacheTtls?: Record<string, number> | undefined;
215
+ }, {
216
+ provider: "anthropic";
217
+ defaultModel?: string | undefined;
218
+ fallbackModel?: string | undefined;
219
+ overrides?: Record<string, string> | undefined;
220
+ cacheTtls?: Record<string, number> | undefined;
131
221
  }>]>;
132
222
  export declare const DocTargetSchema: z.ZodObject<{
133
223
  /** Relative path to the document */
@@ -154,12 +244,12 @@ export declare const TotemConfigSchema: z.ZodObject<{
154
244
  type: z.ZodEnum<["code", "session_log", "spec"]>;
155
245
  strategy: z.ZodEnum<["typescript-ast", "markdown-heading", "session-log", "schema-file", "test-file"]>;
156
246
  }, "strip", z.ZodTypeAny, {
157
- glob: string;
158
247
  type: "code" | "session_log" | "spec";
248
+ glob: string;
159
249
  strategy: "typescript-ast" | "markdown-heading" | "session-log" | "schema-file" | "test-file";
160
250
  }, {
161
- glob: string;
162
251
  type: "code" | "session_log" | "spec";
252
+ glob: string;
163
253
  strategy: "typescript-ast" | "markdown-heading" | "session-log" | "schema-file" | "test-file";
164
254
  }>, "many">;
165
255
  /** Embedding provider configuration (optional for Lite tier) */
@@ -192,33 +282,96 @@ export declare const TotemConfigSchema: z.ZodObject<{
192
282
  baseUrl?: string | undefined;
193
283
  }>]>>;
194
284
  /** Optional: LLM orchestrator for spec/triage/shield commands */
195
- orchestrator: z.ZodOptional<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<{
285
+ orchestrator: z.ZodOptional<z.ZodEffects<z.ZodDiscriminatedUnion<"provider", [z.ZodObject<{
286
+ /** Default model name if --model is not passed */
287
+ defaultModel: z.ZodOptional<z.ZodString>;
288
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
289
+ fallbackModel: z.ZodOptional<z.ZodString>;
290
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
291
+ overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
292
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
293
+ cacheTtls: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
196
294
  provider: z.ZodLiteral<"shell">;
197
295
  /** Shell command with {file} and {model} placeholders */
198
296
  command: z.ZodString;
199
- /** Default model name substituted for {model} if --model is not passed */
297
+ }, "strip", z.ZodTypeAny, {
298
+ provider: "shell";
299
+ command: string;
300
+ defaultModel?: string | undefined;
301
+ fallbackModel?: string | undefined;
302
+ overrides?: Record<string, string> | undefined;
303
+ cacheTtls?: Record<string, number> | undefined;
304
+ }, {
305
+ provider: "shell";
306
+ command: string;
307
+ defaultModel?: string | undefined;
308
+ fallbackModel?: string | undefined;
309
+ overrides?: Record<string, string> | undefined;
310
+ cacheTtls?: Record<string, number> | undefined;
311
+ }>, z.ZodObject<{
312
+ /** Default model name if --model is not passed */
200
313
  defaultModel: z.ZodOptional<z.ZodString>;
201
- /** Optional fallback model used automatically if the primary model fails due to quota/rate limits */
314
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
202
315
  fallbackModel: z.ZodOptional<z.ZodString>;
203
- /** Optional per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
316
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
204
317
  overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
205
- /** Optional per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
318
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
206
319
  cacheTtls: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
320
+ provider: z.ZodLiteral<"gemini">;
207
321
  }, "strip", z.ZodTypeAny, {
208
- provider: "shell";
209
- command: string;
322
+ provider: "gemini";
323
+ defaultModel?: string | undefined;
324
+ fallbackModel?: string | undefined;
325
+ overrides?: Record<string, string> | undefined;
326
+ cacheTtls?: Record<string, number> | undefined;
327
+ }, {
328
+ provider: "gemini";
329
+ defaultModel?: string | undefined;
330
+ fallbackModel?: string | undefined;
331
+ overrides?: Record<string, string> | undefined;
332
+ cacheTtls?: Record<string, number> | undefined;
333
+ }>, z.ZodObject<{
334
+ /** Default model name if --model is not passed */
335
+ defaultModel: z.ZodOptional<z.ZodString>;
336
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
337
+ fallbackModel: z.ZodOptional<z.ZodString>;
338
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
339
+ overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
340
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
341
+ cacheTtls: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
342
+ provider: z.ZodLiteral<"anthropic">;
343
+ }, "strip", z.ZodTypeAny, {
344
+ provider: "anthropic";
210
345
  defaultModel?: string | undefined;
211
346
  fallbackModel?: string | undefined;
212
347
  overrides?: Record<string, string> | undefined;
213
348
  cacheTtls?: Record<string, number> | undefined;
214
349
  }, {
350
+ provider: "anthropic";
351
+ defaultModel?: string | undefined;
352
+ fallbackModel?: string | undefined;
353
+ overrides?: Record<string, string> | undefined;
354
+ cacheTtls?: Record<string, number> | undefined;
355
+ }>]>, {
215
356
  provider: "shell";
216
357
  command: string;
217
358
  defaultModel?: string | undefined;
218
359
  fallbackModel?: string | undefined;
219
360
  overrides?: Record<string, string> | undefined;
220
361
  cacheTtls?: Record<string, number> | undefined;
221
- }>]>>;
362
+ } | {
363
+ provider: "gemini";
364
+ defaultModel?: string | undefined;
365
+ fallbackModel?: string | undefined;
366
+ overrides?: Record<string, string> | undefined;
367
+ cacheTtls?: Record<string, number> | undefined;
368
+ } | {
369
+ provider: "anthropic";
370
+ defaultModel?: string | undefined;
371
+ fallbackModel?: string | undefined;
372
+ overrides?: Record<string, string> | undefined;
373
+ cacheTtls?: Record<string, number> | undefined;
374
+ }, unknown>>;
222
375
  /** Optional: override the .totem/ directory path */
223
376
  totemDir: z.ZodDefault<z.ZodString>;
224
377
  /** Optional: override the .lancedb/ directory path */
@@ -246,8 +399,8 @@ export declare const TotemConfigSchema: z.ZodObject<{
246
399
  }>, "many">>;
247
400
  }, "strip", z.ZodTypeAny, {
248
401
  targets: {
249
- glob: string;
250
402
  type: "code" | "session_log" | "spec";
403
+ glob: string;
251
404
  strategy: "typescript-ast" | "markdown-heading" | "session-log" | "schema-file" | "test-file";
252
405
  }[];
253
406
  totemDir: string;
@@ -271,6 +424,18 @@ export declare const TotemConfigSchema: z.ZodObject<{
271
424
  fallbackModel?: string | undefined;
272
425
  overrides?: Record<string, string> | undefined;
273
426
  cacheTtls?: Record<string, number> | undefined;
427
+ } | {
428
+ provider: "gemini";
429
+ defaultModel?: string | undefined;
430
+ fallbackModel?: string | undefined;
431
+ overrides?: Record<string, string> | undefined;
432
+ cacheTtls?: Record<string, number> | undefined;
433
+ } | {
434
+ provider: "anthropic";
435
+ defaultModel?: string | undefined;
436
+ fallbackModel?: string | undefined;
437
+ overrides?: Record<string, string> | undefined;
438
+ cacheTtls?: Record<string, number> | undefined;
274
439
  } | undefined;
275
440
  docs?: {
276
441
  path: string;
@@ -279,8 +444,8 @@ export declare const TotemConfigSchema: z.ZodObject<{
279
444
  }[] | undefined;
280
445
  }, {
281
446
  targets: {
282
- glob: string;
283
447
  type: "code" | "session_log" | "spec";
448
+ glob: string;
284
449
  strategy: "typescript-ast" | "markdown-heading" | "session-log" | "schema-file" | "test-file";
285
450
  }[];
286
451
  embedding?: {
@@ -293,14 +458,7 @@ export declare const TotemConfigSchema: z.ZodObject<{
293
458
  dimensions?: number | undefined;
294
459
  baseUrl?: string | undefined;
295
460
  } | undefined;
296
- orchestrator?: {
297
- provider: "shell";
298
- command: string;
299
- defaultModel?: string | undefined;
300
- fallbackModel?: string | undefined;
301
- overrides?: Record<string, string> | undefined;
302
- cacheTtls?: Record<string, number> | undefined;
303
- } | undefined;
461
+ orchestrator?: unknown;
304
462
  totemDir?: string | undefined;
305
463
  lanceDir?: string | undefined;
306
464
  ignorePatterns?: string[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAEH,eAAO,MAAM,mBAAmB,8FAM9B,CAAC;AAEH,eAAO,MAAM,iBAAiB,4CAA0C,CAAC;AAEzE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGlC,CAAC;AAEH,eAAO,MAAM,uBAAuB,UAAyD,CAAC;AAE9F,eAAO,MAAM,uBAAuB;;IAElC,yDAAyD;;IAEzD,0EAA0E;;IAE1E,qGAAqG;;IAErG,wFAAwF;;IAExF,yFAAyF;;;;;;;;;;;;;;;;EAEzF,CAAC;AAEH,eAAO,MAAM,kBAAkB;;IAZ7B,yDAAyD;;IAEzD,0EAA0E;;IAE1E,qGAAqG;;IAErG,wFAAwF;;IAExF,yFAAyF;;;;;;;;;;;;;;;;IAIE,CAAC;AAE9F,eAAO,MAAM,eAAe;IAC1B,oCAAoC;;IAEpC,yEAAyE;;IAEzE,6DAA6D;;;;;;;;;;EAE7D,CAAC;AAEH,eAAO,MAAM,gBAAgB,yCAAuC,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,iBAAiB;IAC5B,mEAAmE;;;;;;;;;;;;;;IAGnE,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGhE,iEAAiE;;;QAjCjE,yDAAyD;;QAEzD,0EAA0E;;QAE1E,qGAAqG;;QAErG,wFAAwF;;QAExF,yFAAyF;;;;;;;;;;;;;;;;;IA4BzF,oDAAoD;;IAGpD,sDAAsD;;IAGtD,uDAAuD;;IAGvD,sHAAsH;;IAGtH,0DAA0D;;QAjC1D,oCAAoC;;QAEpC,yEAAyE;;QAEzE,6DAA6D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B7D,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAI7D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CASvE"}
1
+ {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
@@ -31,20 +31,51 @@ export const EmbeddingProviderSchema = z.discriminatedUnion('provider', [
31
31
  OllamaProviderSchema,
32
32
  ]);
33
33
  export const DEFAULT_IGNORE_PATTERNS = ['**/node_modules/**', '**/.lancedb/**', '**/dist/**'];
34
- export const ShellOrchestratorSchema = z.object({
35
- provider: z.literal('shell'),
36
- /** Shell command with {file} and {model} placeholders */
37
- command: z.string(),
38
- /** Default model name substituted for {model} if --model is not passed */
34
+ // ─── Orchestrator schemas ────────────────────────────
35
+ /** Fields shared across all orchestrator providers */
36
+ const BaseOrchestratorFields = {
37
+ /** Default model name if --model is not passed */
39
38
  defaultModel: z.string().optional(),
40
- /** Optional fallback model used automatically if the primary model fails due to quota/rate limits */
39
+ /** Fallback model used automatically if the primary model fails due to quota/rate limits */
41
40
  fallbackModel: z.string().optional(),
42
- /** Optional per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
41
+ /** Per-command model overrides (e.g., { 'spec': 'gemini-3.1-pro-preview' }) */
43
42
  overrides: z.record(z.string()).optional(),
44
- /** Optional per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
43
+ /** Per-command cache TTLs in seconds (e.g., { 'triage': 3600, 'shield': 0 }) */
45
44
  cacheTtls: z.record(z.number()).optional(),
45
+ };
46
+ export const ShellOrchestratorSchema = z.object({
47
+ provider: z.literal('shell'),
48
+ /** Shell command with {file} and {model} placeholders */
49
+ command: z.string(),
50
+ ...BaseOrchestratorFields,
46
51
  });
47
- export const OrchestratorSchema = z.discriminatedUnion('provider', [ShellOrchestratorSchema]);
52
+ export const GeminiOrchestratorSchema = z.object({
53
+ provider: z.literal('gemini'),
54
+ ...BaseOrchestratorFields,
55
+ });
56
+ export const AnthropicOrchestratorSchema = z.object({
57
+ provider: z.literal('anthropic'),
58
+ ...BaseOrchestratorFields,
59
+ });
60
+ export const OrchestratorSchema = z.discriminatedUnion('provider', [
61
+ ShellOrchestratorSchema,
62
+ GeminiOrchestratorSchema,
63
+ AnthropicOrchestratorSchema,
64
+ ]);
65
+ /**
66
+ * Auto-migrate legacy orchestrator configs that lack a `provider` field.
67
+ * If `command` is present without `provider`, injects `provider: 'shell'`.
68
+ */
69
+ function autoMigrateOrchestrator(val) {
70
+ if (val &&
71
+ typeof val === 'object' &&
72
+ !Array.isArray(val) &&
73
+ 'command' in val &&
74
+ !('provider' in val)) {
75
+ return { ...val, provider: 'shell' };
76
+ }
77
+ return val;
78
+ }
48
79
  export const DocTargetSchema = z.object({
49
80
  /** Relative path to the document */
50
81
  path: z.string(),
@@ -60,7 +91,7 @@ export const TotemConfigSchema = z.object({
60
91
  /** Embedding provider configuration (optional for Lite tier) */
61
92
  embedding: EmbeddingProviderSchema.optional(),
62
93
  /** Optional: LLM orchestrator for spec/triage/shield commands */
63
- orchestrator: OrchestratorSchema.optional(),
94
+ orchestrator: z.preprocess(autoMigrateOrchestrator, OrchestratorSchema).optional(),
64
95
  /** Optional: override the .totem/ directory path */
65
96
  totemDir: z.string().default('.totem'),
66
97
  /** Optional: override the .lancedb/ directory path */
@@ -1 +1 @@
1
- {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC;IACxC,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,aAAa;IACb,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AAEzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,mBAAmB;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACnD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE;IACtE,oBAAoB;IACpB,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC5B,yDAAyD;IACzD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,0EAA0E;IAC1E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,qGAAqG;IACrG,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,wFAAwF;IACxF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,yFAAyF;IACzF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,oCAAoC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,yEAAyE;IACzE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,6DAA6D;IAC7D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;CACvE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAGrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,mEAAmE;IACnE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3C,gEAAgE;IAChE,SAAS,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IAE7C,iEAAiE;IACjE,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IAE3C,oDAAoD;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAEtC,sDAAsD;IACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IAExC,uDAAuD;IACvD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;IAEpE,sHAAsH;IACtH,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAEpE,0DAA0D;IAC1D,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAUH;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAmB;IAC/C,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,MAAM,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,YAAY;QAAE,OAAO,UAAU,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAmB;IAClD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,mDAAmD;YACjD,qEAAqE;YACrE,4GAA4G,CAC/G,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { DocTargetSchema, getConfigTier, requireEmbedding, TotemConfigSchema, } from './config-schema.js';
2
+ import { DocTargetSchema, getConfigTier, OrchestratorSchema, requireEmbedding, TotemConfigSchema, } from './config-schema.js';
3
3
  const BASE_TARGETS = [
4
4
  { glob: '**/*.md', type: 'spec', strategy: 'markdown-heading' },
5
5
  ];
@@ -9,6 +9,14 @@ const SHELL_ORCHESTRATOR = {
9
9
  command: 'echo {file}',
10
10
  defaultModel: 'test-model',
11
11
  };
12
+ const GEMINI_ORCHESTRATOR = {
13
+ provider: 'gemini',
14
+ defaultModel: 'gemini-2.5-flash',
15
+ };
16
+ const ANTHROPIC_ORCHESTRATOR = {
17
+ provider: 'anthropic',
18
+ defaultModel: 'claude-sonnet-4-5-20250514',
19
+ };
12
20
  describe('TotemConfigSchema', () => {
13
21
  it('accepts config without embedding (Lite tier)', () => {
14
22
  const result = TotemConfigSchema.safeParse({ targets: BASE_TARGETS });
@@ -55,6 +63,120 @@ describe('TotemConfigSchema', () => {
55
63
  }
56
64
  });
57
65
  });
66
+ // ─── Orchestrator schema ─────────────────────────────
67
+ describe('OrchestratorSchema', () => {
68
+ it('accepts shell provider with command', () => {
69
+ const result = OrchestratorSchema.safeParse(SHELL_ORCHESTRATOR);
70
+ expect(result.success).toBe(true);
71
+ if (result.success) {
72
+ expect(result.data.provider).toBe('shell');
73
+ }
74
+ });
75
+ it('accepts gemini provider', () => {
76
+ const result = OrchestratorSchema.safeParse(GEMINI_ORCHESTRATOR);
77
+ expect(result.success).toBe(true);
78
+ if (result.success) {
79
+ expect(result.data.provider).toBe('gemini');
80
+ }
81
+ });
82
+ it('accepts anthropic provider', () => {
83
+ const result = OrchestratorSchema.safeParse(ANTHROPIC_ORCHESTRATOR);
84
+ expect(result.success).toBe(true);
85
+ if (result.success) {
86
+ expect(result.data.provider).toBe('anthropic');
87
+ }
88
+ });
89
+ it('accepts shared fields on all providers', () => {
90
+ const geminiWithShared = {
91
+ provider: 'gemini',
92
+ defaultModel: 'gemini-2.5-flash',
93
+ fallbackModel: 'gemini-2.5-pro',
94
+ overrides: { spec: 'gemini-2.5-pro' },
95
+ cacheTtls: { triage: 3600 },
96
+ };
97
+ const result = OrchestratorSchema.safeParse(geminiWithShared);
98
+ expect(result.success).toBe(true);
99
+ if (result.success) {
100
+ expect(result.data.defaultModel).toBe('gemini-2.5-flash');
101
+ expect(result.data.fallbackModel).toBe('gemini-2.5-pro');
102
+ }
103
+ });
104
+ it('rejects unknown provider', () => {
105
+ const result = OrchestratorSchema.safeParse({ provider: 'openai' });
106
+ expect(result.success).toBe(false);
107
+ });
108
+ it('rejects shell provider without command', () => {
109
+ const result = OrchestratorSchema.safeParse({ provider: 'shell', defaultModel: 'test' });
110
+ expect(result.success).toBe(false);
111
+ });
112
+ });
113
+ // ─── Backwards compatibility ─────────────────────────
114
+ describe('orchestrator backwards compatibility', () => {
115
+ it('auto-migrates legacy config without provider to shell', () => {
116
+ const legacyConfig = {
117
+ targets: BASE_TARGETS,
118
+ orchestrator: {
119
+ command: 'gemini -e none < {file}',
120
+ defaultModel: 'gemini-2.5-flash',
121
+ },
122
+ };
123
+ const result = TotemConfigSchema.safeParse(legacyConfig);
124
+ expect(result.success).toBe(true);
125
+ if (result.success) {
126
+ expect(result.data.orchestrator.provider).toBe('shell');
127
+ }
128
+ });
129
+ it('preserves all legacy fields after migration', () => {
130
+ const legacyConfig = {
131
+ targets: BASE_TARGETS,
132
+ orchestrator: {
133
+ command: 'gemini -e none < {file}',
134
+ defaultModel: 'gemini-2.5-flash',
135
+ fallbackModel: 'gemini-2.5-pro',
136
+ overrides: { spec: 'gemini-2.5-pro' },
137
+ cacheTtls: { triage: 3600 },
138
+ },
139
+ };
140
+ const result = TotemConfigSchema.safeParse(legacyConfig);
141
+ expect(result.success).toBe(true);
142
+ if (result.success) {
143
+ const orch = result.data.orchestrator;
144
+ expect(orch.provider).toBe('shell');
145
+ expect(orch.defaultModel).toBe('gemini-2.5-flash');
146
+ expect(orch.fallbackModel).toBe('gemini-2.5-pro');
147
+ }
148
+ });
149
+ it('does not inject provider when it is already present', () => {
150
+ const explicitConfig = {
151
+ targets: BASE_TARGETS,
152
+ orchestrator: GEMINI_ORCHESTRATOR,
153
+ };
154
+ const result = TotemConfigSchema.safeParse(explicitConfig);
155
+ expect(result.success).toBe(true);
156
+ if (result.success) {
157
+ expect(result.data.orchestrator.provider).toBe('gemini');
158
+ }
159
+ });
160
+ });
161
+ // ─── Config with API orchestrators ───────────────────
162
+ describe('TotemConfigSchema with API orchestrators', () => {
163
+ it('accepts config with gemini orchestrator (Full tier)', () => {
164
+ const result = TotemConfigSchema.safeParse({
165
+ targets: BASE_TARGETS,
166
+ embedding: OPENAI_EMBEDDING,
167
+ orchestrator: GEMINI_ORCHESTRATOR,
168
+ });
169
+ expect(result.success).toBe(true);
170
+ });
171
+ it('accepts config with anthropic orchestrator (Full tier)', () => {
172
+ const result = TotemConfigSchema.safeParse({
173
+ targets: BASE_TARGETS,
174
+ embedding: OPENAI_EMBEDDING,
175
+ orchestrator: ANTHROPIC_ORCHESTRATOR,
176
+ });
177
+ expect(result.success).toBe(true);
178
+ });
179
+ });
58
180
  describe('DocTargetSchema', () => {
59
181
  it('parses valid doc target', () => {
60
182
  const result = DocTargetSchema.safeParse({
@@ -117,6 +239,14 @@ describe('getConfigTier', () => {
117
239
  const config = { ...base, orchestrator: SHELL_ORCHESTRATOR };
118
240
  expect(getConfigTier(config)).toBe('lite');
119
241
  });
242
+ it('returns full for gemini API orchestrator', () => {
243
+ const config = { ...base, embedding: OPENAI_EMBEDDING, orchestrator: GEMINI_ORCHESTRATOR };
244
+ expect(getConfigTier(config)).toBe('full');
245
+ });
246
+ it('returns full for anthropic API orchestrator', () => {
247
+ const config = { ...base, embedding: OPENAI_EMBEDDING, orchestrator: ANTHROPIC_ORCHESTRATOR };
248
+ expect(getConfigTier(config)).toBe('full');
249
+ });
120
250
  });
121
251
  describe('requireEmbedding', () => {
122
252
  const base = TotemConfigSchema.parse({ targets: BASE_TARGETS });
@@ -1 +1 @@
1
- {"version":3,"file":"config-schema.test.js","sourceRoot":"","sources":["../src/config-schema.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-schema.test.js","sourceRoot":"","sources":["../src/config-schema.test.ts"],"names":[],"mappings":"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"}