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.
- 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 +138 -3
- package/dist/cli/index.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 -27
- 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.js +12 -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
|
@@ -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
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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(
|
|
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,
|
|
163
|
-
build_step_review_lines(
|
|
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([
|
|
168
|
-
|
|
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(
|
|
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([
|
|
175
|
-
|
|
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;
|
|
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) {
|