deepclause-sdk 0.0.12 → 0.0.13

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.
@@ -631,6 +631,12 @@ set_context_stack(StateIn, Stack, StateOut) :-
631
631
  set_memory(StateIn, Memory, StateOut) :-
632
632
  StateOut = StateIn.put(memory, Memory).
633
633
 
634
+ %% is_system_memory_message(+Message)
635
+ %% True if the memory message has role=system
636
+ is_system_memory_message(Message) :-
637
+ is_dict(Message),
638
+ get_dict(role, Message, system).
639
+
634
640
  %% ============================================================
635
641
  %% Tool Scope Helpers
636
642
  %% ============================================================
@@ -999,8 +1005,11 @@ mi_call(task(Desc), StateIn, StateOut) :-
999
1005
  ),
1000
1006
  % Use full messages from agent loop result
1001
1007
  ( get_dict(messages, Result, Messages), Messages \= []
1002
- -> % Replace memory with all messages from agent (includes system, history, and new messages)
1003
- set_memory(StateAfterAgent, Messages, StateOut)
1008
+ -> % Preserve system messages from current memory (agent only returns user/assistant)
1009
+ get_memory(StateAfterAgent, OldMemory),
1010
+ include(is_system_memory_message, OldMemory, SystemMessages),
1011
+ append(SystemMessages, Messages, NewMemory),
1012
+ set_memory(StateAfterAgent, NewMemory, StateOut)
1004
1013
  ; % Fallback: just add task description and response (old behavior)
1005
1014
  add_memory(StateAfterAgent, user, InterpDesc, State1),
1006
1015
  ( get_dict(response, Result, Response), Response \= ""
@@ -1111,8 +1120,11 @@ mi_call_task_n(Desc, Vars, VarNames, StateIn, StateOut) :-
1111
1120
  bind_task_variables(Result.variables, VarNames, Vars),
1112
1121
  % Use full messages from agent loop result
1113
1122
  ( get_dict(messages, Result, Messages), Messages \= []
1114
- -> % Replace memory with all messages from agent
1115
- set_memory(StateAfterAgent, Messages, StateOut)
1123
+ -> % Preserve system messages from current memory (agent only returns user/assistant)
1124
+ get_memory(StateAfterAgent, OldMemory),
1125
+ include(is_system_memory_message, OldMemory, SystemMessages),
1126
+ append(SystemMessages, Messages, NewMemory),
1127
+ set_memory(StateAfterAgent, NewMemory, StateOut)
1116
1128
  ; % Fallback: just add task description and response (old behavior)
1117
1129
  add_memory(StateAfterAgent, user, InterpDesc, State1),
1118
1130
  ( get_dict(response, Result, Response), Response \= ""
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepclause-sdk",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "description": "DeepClause CLI Tool and Typescript SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -631,6 +631,12 @@ set_context_stack(StateIn, Stack, StateOut) :-
631
631
  set_memory(StateIn, Memory, StateOut) :-
632
632
  StateOut = StateIn.put(memory, Memory).
633
633
 
634
+ %% is_system_memory_message(+Message)
635
+ %% True if the memory message has role=system
636
+ is_system_memory_message(Message) :-
637
+ is_dict(Message),
638
+ get_dict(role, Message, system).
639
+
634
640
  %% ============================================================
635
641
  %% Tool Scope Helpers
636
642
  %% ============================================================
@@ -999,8 +1005,11 @@ mi_call(task(Desc), StateIn, StateOut) :-
999
1005
  ),
1000
1006
  % Use full messages from agent loop result
1001
1007
  ( get_dict(messages, Result, Messages), Messages \= []
1002
- -> % Replace memory with all messages from agent (includes system, history, and new messages)
1003
- set_memory(StateAfterAgent, Messages, StateOut)
1008
+ -> % Preserve system messages from current memory (agent only returns user/assistant)
1009
+ get_memory(StateAfterAgent, OldMemory),
1010
+ include(is_system_memory_message, OldMemory, SystemMessages),
1011
+ append(SystemMessages, Messages, NewMemory),
1012
+ set_memory(StateAfterAgent, NewMemory, StateOut)
1004
1013
  ; % Fallback: just add task description and response (old behavior)
1005
1014
  add_memory(StateAfterAgent, user, InterpDesc, State1),
1006
1015
  ( get_dict(response, Result, Response), Response \= ""
@@ -1111,8 +1120,11 @@ mi_call_task_n(Desc, Vars, VarNames, StateIn, StateOut) :-
1111
1120
  bind_task_variables(Result.variables, VarNames, Vars),
1112
1121
  % Use full messages from agent loop result
1113
1122
  ( get_dict(messages, Result, Messages), Messages \= []
1114
- -> % Replace memory with all messages from agent
1115
- set_memory(StateAfterAgent, Messages, StateOut)
1123
+ -> % Preserve system messages from current memory (agent only returns user/assistant)
1124
+ get_memory(StateAfterAgent, OldMemory),
1125
+ include(is_system_memory_message, OldMemory, SystemMessages),
1126
+ append(SystemMessages, Messages, NewMemory),
1127
+ set_memory(StateAfterAgent, NewMemory, StateOut)
1116
1128
  ; % Fallback: just add task description and response (old behavior)
1117
1129
  add_memory(StateAfterAgent, user, InterpDesc, State1),
1118
1130
  ( get_dict(response, Result, Response), Response \= ""