deepclause-sdk 0.0.78 → 0.0.80

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 -27
  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
@@ -35,9 +35,9 @@ tool(ask_user(Prompt, Response),
35
35
  get_dict(user_response, Result, Response).
36
36
 
37
37
  agent_main(Request) :-
38
- load_dml_reference(DmlReference),
39
- load_dml_compiler_prompt(CompilerPrompt),
40
38
  load_coding_workflow_recipe(CodingWorkflowRecipe),
39
+ resolve_model_info(ModelId, Complexity, Reasoning, TaskCount),
40
+ output("DEBUG: model info resolved"),
41
41
  format(string(SystemPrompt), "You create ordered execution plans for DeepClause.
42
42
 
43
43
  Current user request:
@@ -52,21 +52,14 @@ Current user request:
52
52
  - For mixed tasks, combine both modes deliberately and keep the task list ordered so research informs the later implementation or delivery steps.
53
53
  - Use list_skills/run_skill only when an existing local skill is clearly relevant to the request or can improve the resulting plan.
54
54
  - 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.
55
+ - Return only an ordered list of ~w plain natural-language task strings.
56
56
  - Each task string should describe one concrete execution step for fulfilling the user's request.
57
57
  - Each task must be actionable, concise, and free of code, shell commands, JSON, XML, HTML, CSS, JavaScript, TypeScript, Python, DML, and Markdown fences.
58
58
  - Plans should generally create or modify normal project files outside '.deepclause/'.
59
59
  - Only target '.deepclause/' when the user explicitly asks for DeepClause internals, prompts, recipes, skills, or runtime configuration.
60
60
  - Use the available recipe, research, and child-skill tools when they materially improve the task list.
61
61
  - Consult the DML reference and compiler guidance below to understand the execution environment, but still return only the ordered list of task strings.
62
-
63
- DML language reference loaded from .deepclause/docs/DML_REFERENCE.md:
64
-
65
- ~s
66
-
67
- DML compiler guidance loaded from .deepclause/system/DML_COMPILER_PROMPT.md:
68
-
69
- ~s", [Request, DmlReference, CompilerPrompt]),
62
+ ", [Request, TaskCount]),
70
63
  system(SystemPrompt),
71
64
 
72
65
  task("Create a short file-safe slug for this request: '{Request}'.
@@ -74,7 +67,7 @@ Requirements:
74
67
  - lowercase letters, digits, and underscores only
75
68
  - 2 to 6 words when possible
76
69
  - no file extension
77
- Store only the slug in PlanSlug.", PlanSlug),
70
+ Store only the slug in PlanSlug.", string(PlanSlug)),
78
71
 
79
72
  task("Classify this request for plan execution: '{Request}'.
80
73
  Requirements:
@@ -82,15 +75,15 @@ Requirements:
82
75
  - Use coding when the request mainly requires editing code, configuration, tests, scripts, or other project files.
83
76
  - Use non_coding when the request is mainly research, analysis, writing, planning, or information gathering without meaningful code changes.
84
77
  - 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),
78
+ Store only the label in PlanMode.", string(PlanModeRaw)),
86
79
 
87
80
  normalize_plan_mode(PlanModeRaw, PlanMode),
88
81
 
89
- task("Break this request into 3 to 8 smaller execution tasks for a standalone DeepClause plan: '{Request}'.
82
+ task("Break this request into {TaskCount} smaller execution tasks for a standalone DeepClause plan: '{Request}'.
90
83
 
91
84
  If this is a coding task:
92
85
  - 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.
86
+ - Use the results of the analysis as a basis for your plan. The plan should be very specific.
94
87
 
95
88
  General Requirements for the plan:
96
89
  - Consult relevant recipes before finalizing PlanTasks.
@@ -109,22 +102,143 @@ General Requirements for the plan:
109
102
  Store only the ordered list in PlanTasks.", list(string(PlanTasks))),
110
103
 
111
104
  derive_plan_system_prompt(Request, PlanMode, CodingWorkflowRecipe, PlanTasks, PlanSystemPrompt),
105
+ derive_tool_and_reasoning_assignments(Request, PlanTasks, ModelId, Complexity, Reasoning, PlanSteps),
112
106
 
113
107
  make_directory_path('plans'),
114
108
  format(string(FilePath), "plans/~w.dml", [PlanSlug]),
115
109
 
116
- build_plan_review_message(FilePath, PlanMode, PlanTasks, PlanReviewMessage),
110
+ build_plan_review_message(FilePath, PlanMode, PlanSteps, PlanReviewMessage),
117
111
  output(PlanReviewMessage),
118
112
 
119
113
  output("Assembling the deterministic plan file..."),
120
- assemble_plan_dml(PlanSystemPrompt, PlanTasks, PlanDml),
114
+ assemble_plan_dml(PlanSystemPrompt, PlanSteps, PlanDml),
121
115
  exec(write_file(path: FilePath, content: PlanDml), _),
122
116
  exec(validate_dml(dml_file: FilePath), ValidationResult),
123
117
  finish_plan_creation(FilePath, PlanSlug, ValidationResult, PlanReviewMessage).
124
118
 
125
- assemble_plan_dml(PlanSystemPrompt, PlanTasks, PlanDml) :-
119
+ %% resolve_model_info(-ModelId, -Complexity, -Reasoning, -TaskCount)
120
+ %% Reads model info from params (injected by runtime) and derives task count.
121
+ resolve_model_info(ModelId, Complexity, Reasoning, TaskCount) :-
122
+ ( catch(
123
+ ( param(model_info, ModelInfo),
124
+ is_dict(ModelInfo),
125
+ get_dict(modelId, ModelInfo, ModelId),
126
+ ( get_dict(complexity, ModelInfo, C) -> Complexity = C ; Complexity = medium ),
127
+ ( get_dict(reasoning, ModelInfo, R), R == true -> Reasoning = true ; Reasoning = false )
128
+ ),
129
+ _,
130
+ fail
131
+ )
132
+ -> true
133
+ ; ModelId = "unknown",
134
+ Complexity = medium,
135
+ Reasoning = false
136
+ ),
137
+ task_count_for_complexity(Complexity, TaskCount).
138
+
139
+ task_count_for_complexity("high", "3 to 5").
140
+ task_count_for_complexity("medium", "4 to 6").
141
+ task_count_for_complexity("low", "6 to 10").
142
+ task_count_for_complexity(high, "3 to 5").
143
+ task_count_for_complexity(medium, "4 to 6").
144
+ task_count_for_complexity(low, "6 to 10").
145
+
146
+ %% derive_tool_and_reasoning_assignments(+Request, +PlanTasks, +ModelId, +Complexity, +Reasoning, -PlanSteps)
147
+ %% Asks the LLM to assign tools, reasoning effort, and recipe queries per task.
148
+ derive_tool_and_reasoning_assignments(Request, PlanTasks, ModelId, Complexity, Reasoning, PlanSteps) :-
149
+ ( Reasoning == true
150
+ -> 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."
151
+ ; ReasoningNote = "The execution model does not support reasoning. Set reasoning to 'none' for all tasks."
152
+ ),
153
+ task("For each task in this plan, decide which tools it needs, a reasoning effort level, and an optional recipe query.
154
+
155
+ Request: {Request}
156
+ Tasks: {PlanTasks}
157
+ Execution model: {ModelId} ({Complexity} complexity)
158
+
159
+ Available tools (use ONLY these exact names):
160
+ - run_bash: Run a shell command (use for file I/O, running tests, installing deps, git, etc.)
161
+ - run_skill: Run an existing local skill
162
+ - consult_recipes: Search recipe library for workflow guidance
163
+ - search_web: Search the web for documentation or examples
164
+ - search_news: Search recent news
165
+ - fetch_url: Fetch a web page by URL
166
+ - download_file: Download a file from a URL
167
+ - create_new_skill: Create a new reusable skill
168
+ - ask_user: Ask the user a clarifying question
169
+ - inform_user: Send a status update
170
+
171
+ Note: There is no separate save_file or read_file tool. File operations go through run_bash (e.g. cat, echo, heredoc).
172
+
173
+ {ReasoningNote}
174
+
175
+ Also specify a recipe query for each task if relevant (null otherwise). Use natural language queries like 'testing patterns' or 'codebase analysis'.
176
+
177
+ Return a JSON array of objects with these fields:
178
+ - \"description\": the task description (copy from the plan above)
179
+ - \"tools\": array of tool name strings from the available tools list above
180
+ - \"reasoning\": one of \"none\", \"low\", \"medium\", \"high\"
181
+ - \"recipe\": a recipe query string or null
182
+
183
+ Return ONLY the JSON array, no other text.", string(AssignmentsJson)),
184
+ ( catch(parse_plan_json(AssignmentsJson, PlanSteps), _, fail)
185
+ -> true
186
+ ; % Fallback: no tool/reasoning/recipe assignments
187
+ fallback_plan_steps(PlanTasks, PlanSteps)
188
+ ).
189
+
190
+ %% Valid tool names that exist in conductor_tool_definitions
191
+ valid_plan_tool(run_bash).
192
+ valid_plan_tool(run_skill).
193
+ valid_plan_tool(consult_recipes).
194
+ valid_plan_tool(search_web).
195
+ valid_plan_tool(search_news).
196
+ valid_plan_tool(fetch_url).
197
+ valid_plan_tool(download_file).
198
+ valid_plan_tool(create_new_skill).
199
+ valid_plan_tool(ask_user).
200
+ valid_plan_tool(inform_user).
201
+
202
+ %% tool_name_to_atom(+Raw, -Atom)
203
+ %% Converts a JSON string or atom to a Prolog atom
204
+ tool_name_to_atom(Raw, Atom) :-
205
+ ( atom(Raw) -> Atom = Raw
206
+ ; string(Raw) -> atom_string(Atom, Raw)
207
+ ; Atom = Raw
208
+ ).
209
+
210
+ %% parse_plan_json(+Json, -PlanSteps)
211
+ parse_plan_json(Json, PlanSteps) :-
212
+ atom_json_dict(Json, JsonArray, []),
213
+ is_list(JsonArray),
214
+ maplist(parse_plan_step, JsonArray, PlanSteps).
215
+
216
+ parse_plan_step(Dict, plan_step{description: Desc, tools: Tools, reasoning: Reasoning, recipe: Recipe}) :-
217
+ Desc = Dict.get(description),
218
+ ( Desc = null -> throw(parse_error) ; true ),
219
+ ToolsRaw = Dict.get(tools),
220
+ ( is_list(ToolsRaw)
221
+ -> % Convert each tool name to atom, filter to valid tools
222
+ findall(TA, (member(TR, ToolsRaw), tool_name_to_atom(TR, TA), valid_plan_tool(TA)), ValidTools),
223
+ ( ValidTools = [] -> Tools = all ; Tools = ValidTools )
224
+ ; Tools = all ),
225
+ ReasoningRaw = Dict.get(reasoning),
226
+ ( atom(ReasoningRaw) -> atom_string(ReasoningRaw, Reasoning) ; Reasoning = "none" ),
227
+ RecipeRaw = Dict.get(recipe),
228
+ ( RecipeRaw = null ; var(RecipeRaw) -> Recipe = "none"
229
+ ; atom(RecipeRaw) -> atom_string(RecipeRaw, Recipe)
230
+ ; Recipe = "none"
231
+ ).
232
+
233
+ %% fallback_plan_steps(+PlanTasks, -PlanSteps)
234
+ %% When JSON parsing fails, create steps with all tools and no reasoning/recipe.
235
+ fallback_plan_steps([], []).
236
+ fallback_plan_steps([Desc|Rest], [plan_step{description: Desc, tools: all, reasoning: "none", recipe: "none"}|RestSteps]) :-
237
+ fallback_plan_steps(Rest, RestSteps).
238
+
239
+ assemble_plan_dml(PlanSystemPrompt, PlanSteps, PlanDml) :-
126
240
  conductor_tool_definitions(ToolBlock),
127
- build_task_lines(PlanTasks, TaskLines),
241
+ build_task_lines(PlanSteps, TaskLines),
128
242
  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
243
 
130
244
  derive_plan_system_prompt(Request, PlanMode, CodingWorkflowRecipe, PlanTasks, PlanSystemPrompt) :-
@@ -159,23 +273,53 @@ load_coding_workflow_recipe(CodingWorkflowRecipe) :-
159
273
 
160
274
  load_coding_workflow_recipe("DeepClause Coding Workflow recipe unavailable. Follow standard DeepClause coding workflow guidance.").
161
275
 
162
- build_plan_review_message(FilePath, PlanMode, PlanTasks, PlanReviewMessage) :-
163
- build_step_review_lines(PlanTasks, 1, StepLines),
276
+ build_plan_review_message(FilePath, PlanMode, PlanSteps, PlanReviewMessage) :-
277
+ build_step_review_lines(PlanSteps, 1, StepLines),
164
278
  format(string(PlanReviewMessage), "Proposed plan overview\n- Output file: ~w\n- Plan mode: ~w\n\nPlanned steps:\n~s", [FilePath, PlanMode, StepLines]).
165
279
 
166
280
  build_step_review_lines([], _, "").
167
- build_step_review_lines([Task|RestTasks], StepNumber, StepLines) :-
168
- format(string(CurrentStep), "~w. ~w\n", [StepNumber, Task]),
281
+ build_step_review_lines([Step|RestSteps], StepNumber, StepLines) :-
282
+ Desc = Step.description,
283
+ Tools = Step.tools,
284
+ Reasoning = Step.reasoning,
285
+ ( Tools == all
286
+ -> format(string(CurrentStep), "~w. ~w [all tools, ~w]\n", [StepNumber, Desc, Reasoning])
287
+ ; format(string(CurrentStep), "~w. ~w [tools: ~w, ~w]\n", [StepNumber, Desc, Tools, Reasoning])
288
+ ),
169
289
  NextStepNumber is StepNumber + 1,
170
- build_step_review_lines(RestTasks, NextStepNumber, RestStepLines),
290
+ build_step_review_lines(RestSteps, NextStepNumber, RestStepLines),
171
291
  string_concat(CurrentStep, RestStepLines, StepLines).
172
292
 
173
293
  build_task_lines([], "").
174
- build_task_lines([Task|Rest], TaskLines) :-
175
- format(string(Line), " task(~q),~n", [Task]),
294
+ build_task_lines([Step|Rest], TaskLines) :-
295
+ build_single_task_line(Step, Line),
176
296
  build_task_lines(Rest, RestLines),
177
297
  string_concat(Line, RestLines, TaskLines).
178
298
 
299
+ build_single_task_line(Step, Line) :-
300
+ Desc = Step.description,
301
+ Tools = Step.tools,
302
+ Reasoning = Step.reasoning,
303
+ Recipe = Step.recipe,
304
+
305
+ % Build inner task with tool scoping
306
+ ( Tools == all
307
+ -> format(string(InnerTask), "task(~q)", [Desc])
308
+ ; format(string(InnerTask), "with_tools(~w, task(~q))", [Tools, Desc])
309
+ ),
310
+
311
+ % Wrap in with_reasoning if reasoning != none
312
+ ( Reasoning \= "none"
313
+ -> format(string(WithReasoning), "with_reasoning(~n ~w~n , ~w)", [InnerTask, Reasoning])
314
+ ; WithReasoning = InnerTask
315
+ ),
316
+
317
+ % Wrap in with_recipe if recipe != none
318
+ ( Recipe \= "none"
319
+ -> format(string(Line), " with_recipe(~n ~w~n , '~w'),~n", [WithReasoning, Recipe])
320
+ ; format(string(Line), " ~w,~n", [WithReasoning])
321
+ ).
322
+
179
323
  normalize_plan_mode(PlanModeRaw, PlanMode) :-
180
324
  format(string(PlanModeString), "~w", [PlanModeRaw]),
181
325
  normalize_plan_mode_string(PlanModeString, PlanMode).
@@ -213,27 +357,34 @@ conductor_tool_definitions(ToolBlock) :-
213
357
  ' exec(consult_recipes(query: Query, max_results: 3), Result).',
214
358
  '',
215
359
  'tool(search_web(Query, Results), "Search the web for current information. Returns search results.") :-',
360
+ '',
216
361
  ' exec(web_search(query: Query), Results).',
217
362
  '',
218
363
  'tool(search_news(Query, Results), "Search recent news articles. Returns news results.") :-',
364
+ '',
219
365
  ' exec(news_search(query: Query), Results).',
220
366
  '',
221
367
  'tool(fetch_url(Url, Content), "Fetch the content of a web page by URL. Returns the page body as text.") :-',
368
+ '',
222
369
  ' exec(url_fetch(url: Url), Result),',
223
370
  ' get_dict(body, Result, Content).',
224
371
  '',
225
372
  'tool(download_file(Url, FilePath, Size), "Download a file from a URL and save it to disk. Returns the file path and size.") :-',
373
+ '',
226
374
  ' exec(url_fetch(url: Url, save_to: FilePath), Result),',
227
375
  ' get_dict(file_path, Result, FilePath),',
228
376
  ' get_dict(size, Result, Size).',
229
377
  '',
230
378
  'tool(run_bash(Command, Output), "Run a shell command in the workspace.") :-',
379
+ '',
231
380
  ' exec(bash(command: Command), Output).',
232
381
  '',
233
382
  'tool(create_new_skill(Spec, Result), "Create and deploy a new reusable skill from a natural language spec.") :-',
383
+ '',
234
384
  ' exec(create_skill(spec: Spec), Result).',
235
385
  '',
236
386
  'tool(ask_user(Prompt, Response), "Ask the user a clarifying question and get their response.") :-',
387
+ '',
237
388
  ' exec(ask_user(prompt: Prompt), Result),',
238
389
  ' get_dict(user_response, Result, Response).',
239
390
  '',
@@ -256,4 +407,4 @@ load_dml_compiler_prompt(CompilerPrompt) :-
256
407
 
257
408
  agent_main(Request) :-
258
409
  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).
410
+ 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":"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"}
@@ -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) {