@tjamescouch/gro 1.3.9 → 1.3.10

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/dist/main.js CHANGED
@@ -528,6 +528,8 @@ async function executeTurn(driver, memory, mcp, cfg, sessionId) {
528
528
  const newModel = resolveModelAlias(marker.arg);
529
529
  Logger.info(`Stream marker: model-change '${marker.arg}' → ${newModel}`);
530
530
  activeModel = newModel;
531
+ cfg.model = newModel; // persist across turns
532
+ memory.setModel(newModel); // persist in session metadata on save
531
533
  }
532
534
  else {
533
535
  Logger.debug(`Stream marker: ${marker.name}('${marker.arg}')`);
@@ -684,6 +686,12 @@ async function singleShot(cfg, driver, mcp, sessionId, positionalArgs) {
684
686
  // Resume existing session if requested
685
687
  if (cfg.continueSession || cfg.resumeSession) {
686
688
  await memory.load(sessionId);
689
+ const sess = loadSession(sessionId);
690
+ if (sess?.meta.model && sess.meta.model !== cfg.model) {
691
+ Logger.info(`Restoring model from session: ${cfg.model} → ${sess.meta.model}`);
692
+ cfg.model = sess.meta.model;
693
+ memory.setModel(sess.meta.model);
694
+ }
687
695
  }
688
696
  await memory.add({ role: "user", from: "User", content: prompt });
689
697
  let text;
@@ -733,6 +741,12 @@ async function interactive(cfg, driver, mcp, sessionId) {
733
741
  if (sess) {
734
742
  const msgCount = sess.messages.filter((m) => m.role !== "system").length;
735
743
  Logger.info(C.gray(`Resumed session ${sessionId} (${msgCount} messages)`));
744
+ // Restore model from session metadata (e.g. after a stream marker model-change)
745
+ if (sess.meta.model && sess.meta.model !== cfg.model) {
746
+ Logger.info(`Restoring model from session: ${cfg.model} → ${sess.meta.model}`);
747
+ cfg.model = sess.meta.model;
748
+ memory.setModel(sess.meta.model);
749
+ }
736
750
  }
737
751
  }
738
752
  const rl = readline.createInterface({
@@ -24,6 +24,9 @@ export class AdvancedMemory extends AgentMemory {
24
24
  this.keepRecentPerLane = Math.max(1, Math.floor(args.keepRecentPerLane ?? 4));
25
25
  this.keepRecentTools = Math.max(0, Math.floor(args.keepRecentTools ?? 3));
26
26
  }
27
+ setModel(model) {
28
+ this.model = model;
29
+ }
27
30
  async load(id) {
28
31
  const session = loadSession(id);
29
32
  if (session) {
@@ -22,6 +22,8 @@ export class AgentMemory {
22
22
  await this.onAfterAdd();
23
23
  }
24
24
  }
25
+ /** Update the active model (used by stream markers to persist model changes across turns). */
26
+ setModel(_model) { }
25
27
  messages() {
26
28
  return [...this.messagesBuffer];
27
29
  }
@@ -15,6 +15,9 @@ export class SimpleMemory extends AgentMemory {
15
15
  this.provider = provider;
16
16
  this.model = model;
17
17
  }
18
+ setModel(model) {
19
+ this.model = model;
20
+ }
18
21
  async load(id) {
19
22
  const session = loadSession(id);
20
23
  if (session) {
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tjamescouch/gro",
3
- "version": "1.3.9",
3
+ "version": "1.3.10",
4
4
  "description": "Provider-agnostic LLM runtime with context management",
5
5
  "bin": {
6
6
  "gro": "./dist/main.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tjamescouch/gro",
3
- "version": "1.3.9",
3
+ "version": "1.3.10",
4
4
  "description": "Provider-agnostic LLM runtime with context management",
5
5
  "bin": {
6
6
  "gro": "./dist/main.js"