deepclause-sdk 0.0.78 → 0.0.79

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 (56) hide show
  1. package/README.md +1 -1
  2. package/dist/agent.d.ts +1 -1
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +4 -1
  5. package/dist/agent.js.map +1 -1
  6. package/dist/cli/config.d.ts +108 -0
  7. package/dist/cli/config.d.ts.map +1 -1
  8. package/dist/cli/config.js +30 -2
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/index.js +138 -3
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/tui.d.ts.map +1 -1
  13. package/dist/cli/tui.js +21 -4
  14. package/dist/cli/tui.js.map +1 -1
  15. package/dist/compaction.d.ts +6 -1
  16. package/dist/compaction.d.ts.map +1 -1
  17. package/dist/compaction.js +16 -5
  18. package/dist/compaction.js.map +1 -1
  19. package/dist/compiler.d.ts +3 -1
  20. package/dist/compiler.d.ts.map +1 -1
  21. package/dist/compiler.js +34 -8
  22. package/dist/compiler.js.map +1 -1
  23. package/dist/prolog/bridge.d.ts +9 -3
  24. package/dist/prolog/bridge.d.ts.map +1 -1
  25. package/dist/prolog/bridge.js +15 -5
  26. package/dist/prolog/bridge.js.map +1 -1
  27. package/dist/prolog-src/deepclause_mi.pl +92 -6
  28. package/dist/runner.d.ts +4 -0
  29. package/dist/runner.d.ts.map +1 -1
  30. package/dist/runner.js +89 -13
  31. package/dist/runner.js.map +1 -1
  32. package/dist/sdk.d.ts.map +1 -1
  33. package/dist/sdk.js +3 -0
  34. package/dist/sdk.js.map +1 -1
  35. package/dist/system/assets/compactors/default-loop-compactor.dml +17 -4
  36. package/dist/system/assets/model-database.json +64 -0
  37. package/dist/system/assets/skills/plan.dml +178 -18
  38. package/dist/system/config/model-database.d.ts +37 -0
  39. package/dist/system/config/model-database.d.ts.map +1 -0
  40. package/dist/system/config/model-database.js +69 -0
  41. package/dist/system/config/model-database.js.map +1 -0
  42. package/dist/system/config/model-slots.d.ts +16 -0
  43. package/dist/system/config/model-slots.d.ts.map +1 -1
  44. package/dist/system/config/model-slots.js +15 -0
  45. package/dist/system/config/model-slots.js.map +1 -1
  46. package/dist/system/runtime/conductor.d.ts.map +1 -1
  47. package/dist/system/runtime/conductor.js +19 -1
  48. package/dist/system/runtime/conductor.js.map +1 -1
  49. package/dist/system/runtime/dml-executor.js +12 -2
  50. package/dist/system/runtime/dml-executor.js.map +1 -1
  51. package/dist/system/runtime/skill-creator.js +1 -1
  52. package/dist/system/runtime/skill-creator.js.map +1 -1
  53. package/dist/types.d.ts +8 -0
  54. package/dist/types.d.ts.map +1 -1
  55. package/package.json +2 -2
  56. package/src/prolog-src/deepclause_mi.pl +92 -6
@@ -38,6 +38,8 @@ agent_main(Request) :-
38
38
  load_dml_reference(DmlReference),
39
39
  load_dml_compiler_prompt(CompilerPrompt),
40
40
  load_coding_workflow_recipe(CodingWorkflowRecipe),
41
+ resolve_model_info(ModelId, Complexity, Reasoning, TaskCount),
42
+ output("DEBUG: model info resolved"),
41
43
  format(string(SystemPrompt), "You create ordered execution plans for DeepClause.
42
44
 
43
45
  Current user request:
@@ -52,7 +54,7 @@ Current user request:
52
54
  - For mixed tasks, combine both modes deliberately and keep the task list ordered so research informs the later implementation or delivery steps.
53
55
  - Use list_skills/run_skill only when an existing local skill is clearly relevant to the request or can improve the resulting plan.
54
56
  - Choose tools conservatively and intentionally; do not use web or child-skill tools unless they improve the plan quality.
55
- - Return only an ordered list of 3 to 8 plain natural-language task strings.
57
+ - Return only an ordered list of ~w plain natural-language task strings.
56
58
  - Each task string should describe one concrete execution step for fulfilling the user's request.
57
59
  - Each task must be actionable, concise, and free of code, shell commands, JSON, XML, HTML, CSS, JavaScript, TypeScript, Python, DML, and Markdown fences.
58
60
  - Plans should generally create or modify normal project files outside '.deepclause/'.
@@ -66,7 +68,7 @@ DML language reference loaded from .deepclause/docs/DML_REFERENCE.md:
66
68
 
67
69
  DML compiler guidance loaded from .deepclause/system/DML_COMPILER_PROMPT.md:
68
70
 
69
- ~s", [Request, DmlReference, CompilerPrompt]),
71
+ ~s", [Request, TaskCount, DmlReference, CompilerPrompt]),
70
72
  system(SystemPrompt),
71
73
 
72
74
  task("Create a short file-safe slug for this request: '{Request}'.
@@ -74,7 +76,7 @@ Requirements:
74
76
  - lowercase letters, digits, and underscores only
75
77
  - 2 to 6 words when possible
76
78
  - no file extension
77
- Store only the slug in PlanSlug.", PlanSlug),
79
+ Store only the slug in PlanSlug.", string(PlanSlug)),
78
80
 
79
81
  task("Classify this request for plan execution: '{Request}'.
80
82
  Requirements:
@@ -82,15 +84,15 @@ Requirements:
82
84
  - Use coding when the request mainly requires editing code, configuration, tests, scripts, or other project files.
83
85
  - Use non_coding when the request is mainly research, analysis, writing, planning, or information gathering without meaningful code changes.
84
86
  - Use mixed when the request needs both substantial research or analysis and meaningful implementation or file changes.
85
- Store only the label in PlanMode.", PlanModeRaw),
87
+ Store only the label in PlanMode.", string(PlanModeRaw)),
86
88
 
87
89
  normalize_plan_mode(PlanModeRaw, PlanMode),
88
90
 
89
- task("Break this request into 3 to 8 smaller execution tasks for a standalone DeepClause plan: '{Request}'.
91
+ task("Break this request into {TaskCount} smaller execution tasks for a standalone DeepClause plan: '{Request}'.
90
92
 
91
93
  If this is a coding task:
92
94
  - First perform a review and analysis of the current code base relative to the request
93
- - Use the results fo the analysis as a basis for your plan. The plan should be very specific.
95
+ - Use the results of the analysis as a basis for your plan. The plan should be very specific.
94
96
 
95
97
  General Requirements for the plan:
96
98
  - Consult relevant recipes before finalizing PlanTasks.
@@ -109,22 +111,143 @@ General Requirements for the plan:
109
111
  Store only the ordered list in PlanTasks.", list(string(PlanTasks))),
110
112
 
111
113
  derive_plan_system_prompt(Request, PlanMode, CodingWorkflowRecipe, PlanTasks, PlanSystemPrompt),
114
+ derive_tool_and_reasoning_assignments(Request, PlanTasks, ModelId, Complexity, Reasoning, PlanSteps),
112
115
 
113
116
  make_directory_path('plans'),
114
117
  format(string(FilePath), "plans/~w.dml", [PlanSlug]),
115
118
 
116
- build_plan_review_message(FilePath, PlanMode, PlanTasks, PlanReviewMessage),
119
+ build_plan_review_message(FilePath, PlanMode, PlanSteps, PlanReviewMessage),
117
120
  output(PlanReviewMessage),
118
121
 
119
122
  output("Assembling the deterministic plan file..."),
120
- assemble_plan_dml(PlanSystemPrompt, PlanTasks, PlanDml),
123
+ assemble_plan_dml(PlanSystemPrompt, PlanSteps, PlanDml),
121
124
  exec(write_file(path: FilePath, content: PlanDml), _),
122
125
  exec(validate_dml(dml_file: FilePath), ValidationResult),
123
126
  finish_plan_creation(FilePath, PlanSlug, ValidationResult, PlanReviewMessage).
124
127
 
125
- assemble_plan_dml(PlanSystemPrompt, PlanTasks, PlanDml) :-
128
+ %% resolve_model_info(-ModelId, -Complexity, -Reasoning, -TaskCount)
129
+ %% Reads model info from params (injected by runtime) and derives task count.
130
+ resolve_model_info(ModelId, Complexity, Reasoning, TaskCount) :-
131
+ ( catch(
132
+ ( param(model_info, ModelInfo),
133
+ is_dict(ModelInfo),
134
+ get_dict(modelId, ModelInfo, ModelId),
135
+ ( get_dict(complexity, ModelInfo, C) -> Complexity = C ; Complexity = medium ),
136
+ ( get_dict(reasoning, ModelInfo, R), R == true -> Reasoning = true ; Reasoning = false )
137
+ ),
138
+ _,
139
+ fail
140
+ )
141
+ -> true
142
+ ; ModelId = "unknown",
143
+ Complexity = medium,
144
+ Reasoning = false
145
+ ),
146
+ task_count_for_complexity(Complexity, TaskCount).
147
+
148
+ task_count_for_complexity("high", "3 to 5").
149
+ task_count_for_complexity("medium", "4 to 6").
150
+ task_count_for_complexity("low", "6 to 10").
151
+ task_count_for_complexity(high, "3 to 5").
152
+ task_count_for_complexity(medium, "4 to 6").
153
+ task_count_for_complexity(low, "6 to 10").
154
+
155
+ %% derive_tool_and_reasoning_assignments(+Request, +PlanTasks, +ModelId, +Complexity, +Reasoning, -PlanSteps)
156
+ %% Asks the LLM to assign tools, reasoning effort, and recipe queries per task.
157
+ derive_tool_and_reasoning_assignments(Request, PlanTasks, ModelId, Complexity, Reasoning, PlanSteps) :-
158
+ ( Reasoning == true
159
+ -> ReasoningNote = "The execution model supports reasoning. Assign reasoning effort per task: none, low, medium, or high. Use 'high' for complex analysis/debugging, 'medium' for standard implementation, 'low' for boilerplate, 'none' for trivial tasks."
160
+ ; ReasoningNote = "The execution model does not support reasoning. Set reasoning to 'none' for all tasks."
161
+ ),
162
+ task("For each task in this plan, decide which tools it needs, a reasoning effort level, and an optional recipe query.
163
+
164
+ Request: {Request}
165
+ Tasks: {PlanTasks}
166
+ Execution model: {ModelId} ({Complexity} complexity)
167
+
168
+ Available tools (use ONLY these exact names):
169
+ - run_bash: Run a shell command (use for file I/O, running tests, installing deps, git, etc.)
170
+ - run_skill: Run an existing local skill
171
+ - consult_recipes: Search recipe library for workflow guidance
172
+ - search_web: Search the web for documentation or examples
173
+ - search_news: Search recent news
174
+ - fetch_url: Fetch a web page by URL
175
+ - download_file: Download a file from a URL
176
+ - create_new_skill: Create a new reusable skill
177
+ - ask_user: Ask the user a clarifying question
178
+ - inform_user: Send a status update
179
+
180
+ Note: There is no separate save_file or read_file tool. File operations go through run_bash (e.g. cat, echo, heredoc).
181
+
182
+ {ReasoningNote}
183
+
184
+ Also specify a recipe query for each task if relevant (null otherwise). Use natural language queries like 'testing patterns' or 'codebase analysis'.
185
+
186
+ Return a JSON array of objects with these fields:
187
+ - \"description\": the task description (copy from the plan above)
188
+ - \"tools\": array of tool name strings from the available tools list above
189
+ - \"reasoning\": one of \"none\", \"low\", \"medium\", \"high\"
190
+ - \"recipe\": a recipe query string or null
191
+
192
+ Return ONLY the JSON array, no other text.", string(AssignmentsJson)),
193
+ ( catch(parse_plan_json(AssignmentsJson, PlanSteps), _, fail)
194
+ -> true
195
+ ; % Fallback: no tool/reasoning/recipe assignments
196
+ fallback_plan_steps(PlanTasks, PlanSteps)
197
+ ).
198
+
199
+ %% Valid tool names that exist in conductor_tool_definitions
200
+ valid_plan_tool(run_bash).
201
+ valid_plan_tool(run_skill).
202
+ valid_plan_tool(consult_recipes).
203
+ valid_plan_tool(search_web).
204
+ valid_plan_tool(search_news).
205
+ valid_plan_tool(fetch_url).
206
+ valid_plan_tool(download_file).
207
+ valid_plan_tool(create_new_skill).
208
+ valid_plan_tool(ask_user).
209
+ valid_plan_tool(inform_user).
210
+
211
+ %% tool_name_to_atom(+Raw, -Atom)
212
+ %% Converts a JSON string or atom to a Prolog atom
213
+ tool_name_to_atom(Raw, Atom) :-
214
+ ( atom(Raw) -> Atom = Raw
215
+ ; string(Raw) -> atom_string(Atom, Raw)
216
+ ; Atom = Raw
217
+ ).
218
+
219
+ %% parse_plan_json(+Json, -PlanSteps)
220
+ parse_plan_json(Json, PlanSteps) :-
221
+ atom_json_dict(Json, JsonArray, []),
222
+ is_list(JsonArray),
223
+ maplist(parse_plan_step, JsonArray, PlanSteps).
224
+
225
+ parse_plan_step(Dict, plan_step{description: Desc, tools: Tools, reasoning: Reasoning, recipe: Recipe}) :-
226
+ Desc = Dict.get(description),
227
+ ( Desc = null -> throw(parse_error) ; true ),
228
+ ToolsRaw = Dict.get(tools),
229
+ ( is_list(ToolsRaw)
230
+ -> % Convert each tool name to atom, filter to valid tools
231
+ findall(TA, (member(TR, ToolsRaw), tool_name_to_atom(TR, TA), valid_plan_tool(TA)), ValidTools),
232
+ ( ValidTools = [] -> Tools = all ; Tools = ValidTools )
233
+ ; Tools = all ),
234
+ ReasoningRaw = Dict.get(reasoning),
235
+ ( atom(ReasoningRaw) -> atom_string(ReasoningRaw, Reasoning) ; Reasoning = "none" ),
236
+ RecipeRaw = Dict.get(recipe),
237
+ ( RecipeRaw = null ; var(RecipeRaw) -> Recipe = "none"
238
+ ; atom(RecipeRaw) -> atom_string(RecipeRaw, Recipe)
239
+ ; Recipe = "none"
240
+ ).
241
+
242
+ %% fallback_plan_steps(+PlanTasks, -PlanSteps)
243
+ %% When JSON parsing fails, create steps with all tools and no reasoning/recipe.
244
+ fallback_plan_steps([], []).
245
+ fallback_plan_steps([Desc|Rest], [plan_step{description: Desc, tools: all, reasoning: "none", recipe: "none"}|RestSteps]) :-
246
+ fallback_plan_steps(Rest, RestSteps).
247
+
248
+ assemble_plan_dml(PlanSystemPrompt, PlanSteps, PlanDml) :-
126
249
  conductor_tool_definitions(ToolBlock),
127
- build_task_lines(PlanTasks, TaskLines),
250
+ build_task_lines(PlanSteps, TaskLines),
128
251
  format(string(PlanDml), "% Generated DeepClause plan.~n% This file was assembled deterministically from a task list.~n~n~s~n~nagent_main :-~n system(~q),~n output(\"Starting generated plan.\"),~n~s answer(\"Plan completed.\").~n~nagent_main :-~n answer(\"Plan failed. Please try again.\").~n", [ToolBlock, PlanSystemPrompt, TaskLines]).
129
252
 
130
253
  derive_plan_system_prompt(Request, PlanMode, CodingWorkflowRecipe, PlanTasks, PlanSystemPrompt) :-
@@ -159,23 +282,53 @@ load_coding_workflow_recipe(CodingWorkflowRecipe) :-
159
282
 
160
283
  load_coding_workflow_recipe("DeepClause Coding Workflow recipe unavailable. Follow standard DeepClause coding workflow guidance.").
161
284
 
162
- build_plan_review_message(FilePath, PlanMode, PlanTasks, PlanReviewMessage) :-
163
- build_step_review_lines(PlanTasks, 1, StepLines),
285
+ build_plan_review_message(FilePath, PlanMode, PlanSteps, PlanReviewMessage) :-
286
+ build_step_review_lines(PlanSteps, 1, StepLines),
164
287
  format(string(PlanReviewMessage), "Proposed plan overview\n- Output file: ~w\n- Plan mode: ~w\n\nPlanned steps:\n~s", [FilePath, PlanMode, StepLines]).
165
288
 
166
289
  build_step_review_lines([], _, "").
167
- build_step_review_lines([Task|RestTasks], StepNumber, StepLines) :-
168
- format(string(CurrentStep), "~w. ~w\n", [StepNumber, Task]),
290
+ build_step_review_lines([Step|RestSteps], StepNumber, StepLines) :-
291
+ Desc = Step.description,
292
+ Tools = Step.tools,
293
+ Reasoning = Step.reasoning,
294
+ ( Tools == all
295
+ -> format(string(CurrentStep), "~w. ~w [all tools, ~w]\n", [StepNumber, Desc, Reasoning])
296
+ ; format(string(CurrentStep), "~w. ~w [tools: ~w, ~w]\n", [StepNumber, Desc, Tools, Reasoning])
297
+ ),
169
298
  NextStepNumber is StepNumber + 1,
170
- build_step_review_lines(RestTasks, NextStepNumber, RestStepLines),
299
+ build_step_review_lines(RestSteps, NextStepNumber, RestStepLines),
171
300
  string_concat(CurrentStep, RestStepLines, StepLines).
172
301
 
173
302
  build_task_lines([], "").
174
- build_task_lines([Task|Rest], TaskLines) :-
175
- format(string(Line), " task(~q),~n", [Task]),
303
+ build_task_lines([Step|Rest], TaskLines) :-
304
+ build_single_task_line(Step, Line),
176
305
  build_task_lines(Rest, RestLines),
177
306
  string_concat(Line, RestLines, TaskLines).
178
307
 
308
+ build_single_task_line(Step, Line) :-
309
+ Desc = Step.description,
310
+ Tools = Step.tools,
311
+ Reasoning = Step.reasoning,
312
+ Recipe = Step.recipe,
313
+
314
+ % Build inner task with tool scoping
315
+ ( Tools == all
316
+ -> format(string(InnerTask), "task(~q)", [Desc])
317
+ ; format(string(InnerTask), "with_tools(~w, task(~q))", [Tools, Desc])
318
+ ),
319
+
320
+ % Wrap in with_reasoning if reasoning != none
321
+ ( Reasoning \= "none"
322
+ -> format(string(WithReasoning), "with_reasoning(~n ~w~n , ~w)", [InnerTask, Reasoning])
323
+ ; WithReasoning = InnerTask
324
+ ),
325
+
326
+ % Wrap in with_recipe if recipe != none
327
+ ( Recipe \= "none"
328
+ -> format(string(Line), " with_recipe(~n ~w~n , '~w'),~n", [WithReasoning, Recipe])
329
+ ; format(string(Line), " ~w,~n", [WithReasoning])
330
+ ).
331
+
179
332
  normalize_plan_mode(PlanModeRaw, PlanMode) :-
180
333
  format(string(PlanModeString), "~w", [PlanModeRaw]),
181
334
  normalize_plan_mode_string(PlanModeString, PlanMode).
@@ -213,27 +366,34 @@ conductor_tool_definitions(ToolBlock) :-
213
366
  ' exec(consult_recipes(query: Query, max_results: 3), Result).',
214
367
  '',
215
368
  'tool(search_web(Query, Results), "Search the web for current information. Returns search results.") :-',
369
+ '',
216
370
  ' exec(web_search(query: Query), Results).',
217
371
  '',
218
372
  'tool(search_news(Query, Results), "Search recent news articles. Returns news results.") :-',
373
+ '',
219
374
  ' exec(news_search(query: Query), Results).',
220
375
  '',
221
376
  'tool(fetch_url(Url, Content), "Fetch the content of a web page by URL. Returns the page body as text.") :-',
377
+ '',
222
378
  ' exec(url_fetch(url: Url), Result),',
223
379
  ' get_dict(body, Result, Content).',
224
380
  '',
225
381
  'tool(download_file(Url, FilePath, Size), "Download a file from a URL and save it to disk. Returns the file path and size.") :-',
382
+ '',
226
383
  ' exec(url_fetch(url: Url, save_to: FilePath), Result),',
227
384
  ' get_dict(file_path, Result, FilePath),',
228
385
  ' get_dict(size, Result, Size).',
229
386
  '',
230
387
  'tool(run_bash(Command, Output), "Run a shell command in the workspace.") :-',
388
+ '',
231
389
  ' exec(bash(command: Command), Output).',
232
390
  '',
233
391
  'tool(create_new_skill(Spec, Result), "Create and deploy a new reusable skill from a natural language spec.") :-',
392
+ '',
234
393
  ' exec(create_skill(spec: Spec), Result).',
235
394
  '',
236
395
  'tool(ask_user(Prompt, Response), "Ask the user a clarifying question and get their response.") :-',
396
+ '',
237
397
  ' exec(ask_user(prompt: Prompt), Result),',
238
398
  ' get_dict(user_response, Result, Response).',
239
399
  '',
@@ -256,4 +416,4 @@ load_dml_compiler_prompt(CompilerPrompt) :-
256
416
 
257
417
  agent_main(Request) :-
258
418
  format(string(Message), "I could not create a valid plan file for this request: ~w. Try simplifying the request or being more explicit about the steps and required tools.", [Request]),
259
- answer(Message).
419
+ answer(Message).
@@ -0,0 +1,37 @@
1
+ export type ModelComplexity = 'high' | 'medium' | 'low';
2
+ export type ReasoningType = 'effort' | 'budget_tokens' | 'thinking_config' | 'none';
3
+ export interface ModelDatabaseEntry {
4
+ name: string;
5
+ reasoning: boolean;
6
+ tool_call: boolean;
7
+ structured_output: boolean;
8
+ limit: {
9
+ context: number;
10
+ output: number;
11
+ };
12
+ open_weights: boolean;
13
+ complexity: ModelComplexity;
14
+ family: string;
15
+ }
16
+ export interface ProviderDatabaseEntry {
17
+ reasoning_type: ReasoningType;
18
+ reasoning_values?: string[];
19
+ budget_map?: Record<string, number>;
20
+ default_effort?: string;
21
+ }
22
+ export declare function lookupModel(modelId: string): ModelDatabaseEntry | undefined;
23
+ export declare function lookupProvider(providerName: string): ProviderDatabaseEntry | undefined;
24
+ export declare function getAllModels(): Record<string, ModelDatabaseEntry>;
25
+ export interface ResolvedModelCapabilities {
26
+ contextWindow?: number;
27
+ maxOutputTokens?: number;
28
+ reasoning: boolean;
29
+ complexity: ModelComplexity;
30
+ reasoningType: ReasoningType;
31
+ reasoningValues?: string[];
32
+ reasoningBudgetMap?: Record<string, number>;
33
+ defaultEffort?: string;
34
+ }
35
+ export declare function resolveModelCapabilities(modelId: string, providerName: string): ResolvedModelCapabilities;
36
+ export declare function buildReasoningProviderOptions(effort: string, reasoningType: ReasoningType, budgetMap?: Record<string, number>): Record<string, unknown>;
37
+ //# sourceMappingURL=model-database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-database.d.ts","sourceRoot":"","sources":["../../../src/system/config/model-database.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,eAAe,GAAG,iBAAiB,GAAG,MAAM,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,aAAa,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAmBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAG3E;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAGtF;AAED,wBAAgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAEjE;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,yBAAyB,CAyB3B;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBzB"}
@@ -0,0 +1,69 @@
1
+ import { readFileSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = dirname(__filename);
6
+ let cachedDatabase = null;
7
+ function loadDatabase() {
8
+ if (cachedDatabase) {
9
+ return cachedDatabase;
10
+ }
11
+ const dbPath = join(__dirname, '..', 'assets', 'model-database.json');
12
+ cachedDatabase = JSON.parse(readFileSync(dbPath, 'utf8'));
13
+ return cachedDatabase;
14
+ }
15
+ export function lookupModel(modelId) {
16
+ const db = loadDatabase();
17
+ return db.models[modelId];
18
+ }
19
+ export function lookupProvider(providerName) {
20
+ const db = loadDatabase();
21
+ return db.providers[providerName];
22
+ }
23
+ export function getAllModels() {
24
+ return loadDatabase().models;
25
+ }
26
+ export function resolveModelCapabilities(modelId, providerName) {
27
+ const modelEntry = lookupModel(modelId);
28
+ const providerEntry = lookupProvider(providerName);
29
+ if (!modelEntry) {
30
+ return {
31
+ reasoning: false,
32
+ complexity: 'medium',
33
+ reasoningType: providerEntry?.reasoning_type ?? 'none',
34
+ reasoningValues: providerEntry?.reasoning_values,
35
+ reasoningBudgetMap: providerEntry?.budget_map,
36
+ defaultEffort: providerEntry?.default_effort,
37
+ };
38
+ }
39
+ return {
40
+ contextWindow: modelEntry.limit.context,
41
+ maxOutputTokens: modelEntry.limit.output,
42
+ reasoning: modelEntry.reasoning,
43
+ complexity: modelEntry.complexity,
44
+ reasoningType: providerEntry?.reasoning_type ?? 'none',
45
+ reasoningValues: providerEntry?.reasoning_values,
46
+ reasoningBudgetMap: providerEntry?.budget_map,
47
+ defaultEffort: providerEntry?.default_effort,
48
+ };
49
+ }
50
+ export function buildReasoningProviderOptions(effort, reasoningType, budgetMap) {
51
+ if (effort === 'none' || reasoningType === 'none') {
52
+ return {};
53
+ }
54
+ switch (reasoningType) {
55
+ case 'effort':
56
+ return { reasoning_effort: effort };
57
+ case 'budget_tokens': {
58
+ const budget = budgetMap?.[effort] ?? 16000;
59
+ return { thinking: { type: 'enabled', budget_tokens: budget } };
60
+ }
61
+ case 'thinking_config': {
62
+ const budget = budgetMap?.[effort] ?? 8192;
63
+ return { thinkingConfig: { thinkingBudget: budget } };
64
+ }
65
+ default:
66
+ return {};
67
+ }
68
+ }
69
+ //# sourceMappingURL=model-database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-database.js","sourceRoot":"","sources":["../../../src/system/config/model-database.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export type Provider = 'openai' | 'anthropic' | 'google' | 'openrouter';
2
2
  export type ModelSlot = 'gateway' | 'run' | 'compile';
3
+ export type ModelComplexity = 'high' | 'medium' | 'low';
4
+ export type ReasoningType = 'effort' | 'budget_tokens' | 'thinking_config' | 'none';
3
5
  export interface ProviderConfig {
4
6
  apiKey?: string;
5
7
  baseUrl?: string;
@@ -8,6 +10,12 @@ export interface SlotModelConfig {
8
10
  models: Record<ModelSlot, string>;
9
11
  temperatures: Record<ModelSlot, number>;
10
12
  providers?: Partial<Record<Provider, ProviderConfig>>;
13
+ modelOptions?: Partial<Record<ModelSlot, ModelSlotOverrides>>;
14
+ }
15
+ export interface ModelSlotOverrides {
16
+ maxContextTokens?: number;
17
+ maxOutputTokens?: number;
18
+ reasoningEffort?: string;
11
19
  }
12
20
  export interface ParsedModelId {
13
21
  id: string;
@@ -20,6 +28,14 @@ export interface ResolvedModelConfig extends ParsedModelId {
20
28
  temperature: number;
21
29
  baseUrl?: string;
22
30
  apiKey?: string;
31
+ contextWindow?: number;
32
+ maxOutputTokens?: number;
33
+ reasoning?: boolean;
34
+ complexity?: ModelComplexity;
35
+ reasoningType?: ReasoningType;
36
+ reasoningValues?: string[];
37
+ reasoningBudgetMap?: Record<string, number>;
38
+ defaultEffort?: string;
23
39
  }
24
40
  export declare const DEFAULT_MODEL_IDS: Record<ModelSlot, string>;
25
41
  export declare const DEFAULT_TEMPERATURES: Record<ModelSlot, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"model-slots.d.ts","sourceRoot":"","sources":["../../../src/system/config/model-slots.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AACxE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIvD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI1D,CAAC;AAwBF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAqCxD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CA0B3D;AAUD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,SAAS,EACf,SAAS,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACzD,mBAAmB,CAcrB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAQ1F"}
1
+ {"version":3,"file":"model-slots.d.ts","sourceRoot":"","sources":["../../../src/system/config/model-slots.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AACxE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,eAAe,GAAG,iBAAiB,GAAG,MAAM,CAAC;AAEpF,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIvD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI1D,CAAC;AAwBF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAqCxD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CA0B3D;AAYD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,SAAS,EACf,SAAS,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACzD,mBAAmB,CA8BrB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAQ1F"}
@@ -95,18 +95,33 @@ function readCustomProviderEnv(customProviderName) {
95
95
  baseUrl: process.env[`${envPrefix}_BASE_URL`],
96
96
  };
97
97
  }
98
+ import { resolveModelCapabilities } from './model-database.js';
98
99
  export function resolveModelSlotConfig(config, slot, overrides = {}) {
99
100
  const parsed = parseModelId(overrides.modelId ?? config.models[slot] ?? DEFAULT_MODEL_IDS[slot]);
100
101
  const standardProviderConfig = config.providers?.[parsed.provider] ?? {};
101
102
  const customProviderConfig = parsed.customProviderName
102
103
  ? readCustomProviderEnv(parsed.customProviderName)
103
104
  : {};
105
+ const providerName = parsed.customProviderName ? 'custom' : parsed.provider;
106
+ const dbModelId = parsed.customProviderName
107
+ ? parsed.model
108
+ : (parsed.provider === 'openrouter' ? parsed.model : `${parsed.provider}/${parsed.model}`);
109
+ const caps = resolveModelCapabilities(dbModelId, providerName);
110
+ const slotOverrides = config.modelOptions?.[slot] ?? {};
104
111
  return {
105
112
  ...parsed,
106
113
  slot,
107
114
  temperature: overrides.temperature ?? config.temperatures[slot] ?? DEFAULT_TEMPERATURES[slot],
108
115
  apiKey: customProviderConfig.apiKey ?? standardProviderConfig.apiKey,
109
116
  baseUrl: customProviderConfig.baseUrl ?? standardProviderConfig.baseUrl,
117
+ contextWindow: slotOverrides.maxContextTokens ?? caps.contextWindow,
118
+ maxOutputTokens: slotOverrides.maxOutputTokens ?? caps.maxOutputTokens,
119
+ reasoning: caps.reasoning,
120
+ complexity: caps.complexity,
121
+ reasoningType: caps.reasoningType,
122
+ reasoningValues: caps.reasoningValues,
123
+ reasoningBudgetMap: caps.reasoningBudgetMap,
124
+ defaultEffort: caps.defaultEffort,
110
125
  };
111
126
  }
112
127
  export function buildModelOverride(model, provider) {
@@ -1 +1 @@
1
- {"version":3,"file":"model-slots.js","sourceRoot":"","sources":["../../../src/system/config/model-slots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-slots.js","sourceRoot":"","sources":["../../../src/system/config/model-slots.ts"],"names":[],"mappings":"AA6CA,MAAM,CAAC,MAAM,iBAAiB,GAA8B;IAC1D,OAAO,EAAE,eAAe;IACxB,GAAG,EAAE,eAAe;IACpB,OAAO,EAAE,eAAe;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D,OAAO,EAAE,GAAG;IACZ,GAAG,EAAE,GAAG;IACR,OAAO,EAAE,GAAG;CACb,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AAE7F,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjF,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAiB;IACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,UAAU,SAAS,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAkB,CAAC,EAAE,CAAC;YAC9C,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC5B,OAAO,cAAc,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,CAAC;YACD,OAAO,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAkB,CAAC,EAAE,CAAC;YAC9C,OAAO,MAAM,KAAK,YAAY;gBAC5B,CAAC,CAAC,cAAc,SAAS,EAAE;gBAC3B,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,CAAC,kBAAkB,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;QACjD,IAAI,CAAC,kBAAkB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO;YACL,EAAE;YACF,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3B,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAkB,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,MAAkB;QAC5B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,kBAA0B;IACvD,MAAM,SAAS,GAAG,gBAAgB,kBAAkB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;IACjG,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,UAAU,CAAC;QAC3C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,WAAW,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,UAAU,sBAAsB,CACpC,MAAuB,EACvB,IAAe,EACf,YAAwD,EAAE;IAE1D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACjG,MAAM,sBAAsB,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzE,MAAM,oBAAoB,GAAG,MAAM,CAAC,kBAAkB;QACpD,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAClD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC5E,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB;QACzC,CAAC,CAAC,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG,wBAAwB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAE/D,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAExD,OAAO;QACL,GAAG,MAAM;QACT,IAAI;QACJ,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC;QAC7F,MAAM,EAAE,oBAAoB,CAAC,MAAM,IAAI,sBAAsB,CAAC,MAAM;QACpE,OAAO,EAAE,oBAAoB,CAAC,OAAO,IAAI,sBAAsB,CAAC,OAAO;QACvE,aAAa,EAAE,aAAa,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa;QACnE,eAAe,EAAE,aAAa,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;QACtE,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,QAAmB;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,OAAO,gBAAgB,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"conductor.d.ts","sourceRoot":"","sources":["../../../src/system/runtime/conductor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conductor.d.ts","sourceRoot":"","sources":["../../../src/system/runtime/conductor.ts"],"names":[],"mappings":"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"}
@@ -182,6 +182,7 @@ export async function runConductorTurn(userMessage, options = {}) {
182
182
  });
183
183
  }
184
184
  catch (error) {
185
+ await mergeSessionUsage(workspaceRoot, session.metadata.id, usageByModel);
185
186
  await executionLog.finish({
186
187
  status: 'error',
187
188
  error: error.message,
@@ -578,7 +579,7 @@ async function runSessionCompactorBinding(options) {
578
579
  baseUrl: resolvedModel.baseUrl,
579
580
  temperature: resolvedModel.temperature,
580
581
  debug: options.verbose,
581
- maxTokens: 65536,
582
+ maxTokens: resolvedModel.maxOutputTokens ?? 65536,
582
583
  compaction: { enabled: false },
583
584
  });
584
585
  try {
@@ -595,6 +596,7 @@ async function runSessionCompactorBinding(options) {
595
596
  }
596
597
  let answer = '';
597
598
  let error = '';
599
+ const usageByModel = {};
598
600
  for await (const event of sdk.runDML(code, {
599
601
  workspacePath: options.workspacePath,
600
602
  gasLimit: binding.compactor.gasLimit,
@@ -612,10 +614,14 @@ async function runSessionCompactorBinding(options) {
612
614
  else if (event.type === 'error' && event.content) {
613
615
  error = event.content;
614
616
  }
617
+ else if (event.type === 'usage' && event.usage) {
618
+ recordTokenUsage(usageByModel, resolvedModel.modelId, event.usage);
619
+ }
615
620
  }
616
621
  return {
617
622
  answer,
618
623
  error: error || undefined,
624
+ usageByModel: Object.keys(usageByModel).length > 0 ? usageByModel : undefined,
619
625
  };
620
626
  }
621
627
  finally {
@@ -659,6 +665,18 @@ async function maybeCompactSessionMessages(options) {
659
665
  continue;
660
666
  }
661
667
  options.onCompactionEvent?.(result.event);
668
+ if (result.usageByModel) {
669
+ for (const totals of Object.values(result.usageByModel)) {
670
+ options.onCompactionEvent?.({ type: 'usage', usage: {
671
+ inputTokens: totals.inputTokens,
672
+ outputTokens: totals.outputTokens,
673
+ totalTokens: totals.totalTokens,
674
+ cacheReadTokens: totals.cacheReadTokens || undefined,
675
+ cacheWriteTokens: totals.cacheWriteTokens || undefined,
676
+ reasoningTokens: totals.reasoningTokens || undefined,
677
+ } });
678
+ }
679
+ }
662
680
  const beforeSerialized = JSON.stringify(priorMessages);
663
681
  const afterSerialized = JSON.stringify(normalized.map(({ role, content }) => ({ role, content })));
664
682
  if (beforeSerialized !== afterSerialized) {