deepclause-sdk 0.0.77 → 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.
- package/README.md +1 -1
- package/dist/agent.d.ts +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +4 -1
- package/dist/agent.js.map +1 -1
- package/dist/cli/config.d.ts +108 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +30 -2
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +149 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/run.d.ts +9 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +9 -1
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/tui.d.ts.map +1 -1
- package/dist/cli/tui.js +21 -4
- package/dist/cli/tui.js.map +1 -1
- package/dist/compaction.d.ts +6 -1
- package/dist/compaction.d.ts.map +1 -1
- package/dist/compaction.js +16 -5
- package/dist/compaction.js.map +1 -1
- package/dist/compiler.d.ts +3 -1
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +34 -8
- package/dist/compiler.js.map +1 -1
- package/dist/prolog/bridge.d.ts +9 -3
- package/dist/prolog/bridge.d.ts.map +1 -1
- package/dist/prolog/bridge.js +15 -5
- package/dist/prolog/bridge.js.map +1 -1
- package/dist/prolog-src/deepclause_mi.pl +92 -6
- package/dist/runner.d.ts +4 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +89 -13
- package/dist/runner.js.map +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +3 -0
- package/dist/sdk.js.map +1 -1
- package/dist/system/assets/compactors/default-loop-compactor.dml +17 -4
- package/dist/system/assets/model-database.json +64 -0
- package/dist/system/assets/skills/plan.dml +178 -18
- package/dist/system/config/model-database.d.ts +37 -0
- package/dist/system/config/model-database.d.ts.map +1 -0
- package/dist/system/config/model-database.js +69 -0
- package/dist/system/config/model-database.js.map +1 -0
- package/dist/system/config/model-slots.d.ts +16 -0
- package/dist/system/config/model-slots.d.ts.map +1 -1
- package/dist/system/config/model-slots.js +15 -0
- package/dist/system/config/model-slots.js.map +1 -1
- package/dist/system/runtime/conductor.d.ts.map +1 -1
- package/dist/system/runtime/conductor.js +19 -1
- package/dist/system/runtime/conductor.js.map +1 -1
- package/dist/system/runtime/dml-executor.d.ts +2 -0
- package/dist/system/runtime/dml-executor.d.ts.map +1 -1
- package/dist/system/runtime/dml-executor.js +20 -2
- package/dist/system/runtime/dml-executor.js.map +1 -1
- package/dist/system/runtime/skill-creator.js +1 -1
- package/dist/system/runtime/skill-creator.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- 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
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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(
|
|
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,
|
|
163
|
-
build_step_review_lines(
|
|
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([
|
|
168
|
-
|
|
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(
|
|
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([
|
|
175
|
-
|
|
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;
|
|
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":"
|
|
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) {
|