@leanandmean/coding-agent 0.74.1-scramjet.7 → 0.74.1-scramjet.71

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 (226) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE +202 -0
  3. package/README.md +37 -9
  4. package/dist/cli/args.d.ts +2 -0
  5. package/dist/cli/args.d.ts.map +1 -1
  6. package/dist/cli/args.js +45 -1
  7. package/dist/cli/args.js.map +1 -1
  8. package/dist/cli/initial-message.d.ts +1 -0
  9. package/dist/cli/initial-message.d.ts.map +1 -1
  10. package/dist/cli/initial-message.js +3 -0
  11. package/dist/cli/initial-message.js.map +1 -1
  12. package/dist/cli/list-models.d.ts +2 -0
  13. package/dist/cli/list-models.d.ts.map +1 -1
  14. package/dist/cli/list-models.js +4 -1
  15. package/dist/cli/list-models.js.map +1 -1
  16. package/dist/config.d.ts +9 -2
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +33 -22
  19. package/dist/config.js.map +1 -1
  20. package/dist/core/agent-session-runtime.d.ts +12 -3
  21. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  22. package/dist/core/agent-session-runtime.js +64 -38
  23. package/dist/core/agent-session-runtime.js.map +1 -1
  24. package/dist/core/agent-session-services.d.ts +2 -0
  25. package/dist/core/agent-session-services.d.ts.map +1 -1
  26. package/dist/core/agent-session-services.js +3 -0
  27. package/dist/core/agent-session-services.js.map +1 -1
  28. package/dist/core/agent-session.d.ts +84 -17
  29. package/dist/core/agent-session.d.ts.map +1 -1
  30. package/dist/core/agent-session.js +1082 -209
  31. package/dist/core/agent-session.js.map +1 -1
  32. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  33. package/dist/core/compaction/branch-summarization.js +21 -17
  34. package/dist/core/compaction/branch-summarization.js.map +1 -1
  35. package/dist/core/compaction/compaction.d.ts +3 -5
  36. package/dist/core/compaction/compaction.d.ts.map +1 -1
  37. package/dist/core/compaction/compaction.js +43 -10
  38. package/dist/core/compaction/compaction.js.map +1 -1
  39. package/dist/core/exec.d.ts +12 -0
  40. package/dist/core/exec.d.ts.map +1 -1
  41. package/dist/core/exec.js +74 -28
  42. package/dist/core/exec.js.map +1 -1
  43. package/dist/core/export-html/template.js +4 -0
  44. package/dist/core/extensions/index.d.ts +1 -1
  45. package/dist/core/extensions/index.d.ts.map +1 -1
  46. package/dist/core/extensions/index.js.map +1 -1
  47. package/dist/core/extensions/runner.d.ts +9 -5
  48. package/dist/core/extensions/runner.d.ts.map +1 -1
  49. package/dist/core/extensions/runner.js +160 -3
  50. package/dist/core/extensions/runner.js.map +1 -1
  51. package/dist/core/extensions/types.d.ts +85 -8
  52. package/dist/core/extensions/types.d.ts.map +1 -1
  53. package/dist/core/extensions/types.js.map +1 -1
  54. package/dist/core/keybindings.d.ts +8 -0
  55. package/dist/core/keybindings.d.ts.map +1 -1
  56. package/dist/core/model-registry.d.ts +103 -0
  57. package/dist/core/model-registry.d.ts.map +1 -1
  58. package/dist/core/model-registry.js +272 -28
  59. package/dist/core/model-registry.js.map +1 -1
  60. package/dist/core/model-resolver.d.ts.map +1 -1
  61. package/dist/core/model-resolver.js +24 -6
  62. package/dist/core/model-resolver.js.map +1 -1
  63. package/dist/core/output-throughput-history.d.ts +25 -0
  64. package/dist/core/output-throughput-history.d.ts.map +1 -0
  65. package/dist/core/output-throughput-history.js +240 -0
  66. package/dist/core/output-throughput-history.js.map +1 -0
  67. package/dist/core/output-throughput.d.ts +43 -0
  68. package/dist/core/output-throughput.d.ts.map +1 -0
  69. package/dist/core/output-throughput.js +161 -0
  70. package/dist/core/output-throughput.js.map +1 -0
  71. package/dist/core/resource-loader.d.ts +6 -0
  72. package/dist/core/resource-loader.d.ts.map +1 -1
  73. package/dist/core/resource-loader.js +76 -21
  74. package/dist/core/resource-loader.js.map +1 -1
  75. package/dist/core/scramjet-command-parser.d.ts +4 -0
  76. package/dist/core/scramjet-command-parser.d.ts.map +1 -1
  77. package/dist/core/scramjet-command-parser.js +72 -1
  78. package/dist/core/scramjet-command-parser.js.map +1 -1
  79. package/dist/core/sdk.d.ts +4 -0
  80. package/dist/core/sdk.d.ts.map +1 -1
  81. package/dist/core/sdk.js +70 -11
  82. package/dist/core/sdk.js.map +1 -1
  83. package/dist/core/session-manager.d.ts +11 -3
  84. package/dist/core/session-manager.d.ts.map +1 -1
  85. package/dist/core/session-manager.js +46 -11
  86. package/dist/core/session-manager.js.map +1 -1
  87. package/dist/core/settings-manager.d.ts +19 -6
  88. package/dist/core/settings-manager.d.ts.map +1 -1
  89. package/dist/core/settings-manager.js +131 -17
  90. package/dist/core/settings-manager.js.map +1 -1
  91. package/dist/core/skills.d.ts.map +1 -1
  92. package/dist/core/skills.js +6 -2
  93. package/dist/core/skills.js.map +1 -1
  94. package/dist/core/system-prompt.d.ts +2 -0
  95. package/dist/core/system-prompt.d.ts.map +1 -1
  96. package/dist/core/system-prompt.js +5 -2
  97. package/dist/core/system-prompt.js.map +1 -1
  98. package/dist/core/tools/bash.d.ts.map +1 -1
  99. package/dist/core/tools/bash.js +4 -3
  100. package/dist/core/tools/bash.js.map +1 -1
  101. package/dist/index.d.ts +4 -3
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +3 -2
  104. package/dist/index.js.map +1 -1
  105. package/dist/main.d.ts +119 -0
  106. package/dist/main.d.ts.map +1 -1
  107. package/dist/main.js +113 -11
  108. package/dist/main.js.map +1 -1
  109. package/dist/modes/interactive/components/armin.d.ts +4 -2
  110. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  111. package/dist/modes/interactive/components/armin.js +14 -8
  112. package/dist/modes/interactive/components/armin.js.map +1 -1
  113. package/dist/modes/interactive/components/assistant-message.d.ts +3 -1
  114. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  115. package/dist/modes/interactive/components/assistant-message.js +19 -8
  116. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  117. package/dist/modes/interactive/components/daxnuts.d.ts +4 -1
  118. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  119. package/dist/modes/interactive/components/daxnuts.js +14 -6
  120. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  121. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  122. package/dist/modes/interactive/components/extension-editor.js +5 -3
  123. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  124. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  125. package/dist/modes/interactive/components/extension-selector.js +4 -3
  126. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  127. package/dist/modes/interactive/components/footer.d.ts +4 -0
  128. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  129. package/dist/modes/interactive/components/footer.js +24 -20
  130. package/dist/modes/interactive/components/footer.js.map +1 -1
  131. package/dist/modes/interactive/components/model-selector.d.ts +3 -3
  132. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  133. package/dist/modes/interactive/components/model-selector.js +10 -7
  134. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  135. package/dist/modes/interactive/components/scoped-models-selector.d.ts +3 -1
  136. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  137. package/dist/modes/interactive/components/scoped-models-selector.js +8 -2
  138. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  139. package/dist/modes/interactive/components/settings-selector.d.ts +17 -3
  140. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  141. package/dist/modes/interactive/components/settings-selector.js +87 -16
  142. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  143. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  144. package/dist/modes/interactive/components/thinking-selector.js +2 -1
  145. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  146. package/dist/modes/interactive/components/tool-execution.d.ts +19 -1
  147. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  148. package/dist/modes/interactive/components/tool-execution.js +129 -36
  149. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  150. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  151. package/dist/modes/interactive/components/user-message.js +3 -2
  152. package/dist/modes/interactive/components/user-message.js.map +1 -1
  153. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  154. package/dist/modes/interactive/components/visual-truncate.js +2 -2
  155. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  156. package/dist/modes/interactive/interactive-mode.d.ts +37 -1
  157. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  158. package/dist/modes/interactive/interactive-mode.js +902 -177
  159. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  160. package/dist/modes/interactive/spellcheck.d.ts +26 -0
  161. package/dist/modes/interactive/spellcheck.d.ts.map +1 -0
  162. package/dist/modes/interactive/spellcheck.js +144 -0
  163. package/dist/modes/interactive/spellcheck.js.map +1 -0
  164. package/dist/modes/interactive/theme/{dark.json → pi-dark.json} +3 -2
  165. package/dist/modes/interactive/theme/{light.json → pi-light.json} +27 -26
  166. package/dist/modes/interactive/theme/theme-schema.json +6 -1
  167. package/dist/modes/interactive/theme/theme.d.ts +24 -4
  168. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  169. package/dist/modes/interactive/theme/theme.js +123 -22
  170. package/dist/modes/interactive/theme/theme.js.map +1 -1
  171. package/dist/modes/print-mode.d.ts.map +1 -1
  172. package/dist/modes/print-mode.js +5 -0
  173. package/dist/modes/print-mode.js.map +1 -1
  174. package/dist/modes/rpc/rpc-client.d.ts +3 -1
  175. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  176. package/dist/modes/rpc/rpc-client.js.map +1 -1
  177. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  178. package/dist/modes/rpc/rpc-mode.js +6 -1
  179. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  180. package/dist/package-manager-cli.d.ts.map +1 -1
  181. package/dist/package-manager-cli.js +33 -14
  182. package/dist/package-manager-cli.js.map +1 -1
  183. package/dist/utils/clipboard-native.d.ts +1 -0
  184. package/dist/utils/clipboard-native.d.ts.map +1 -1
  185. package/dist/utils/clipboard-native.js.map +1 -1
  186. package/dist/utils/clipboard.d.ts +6 -0
  187. package/dist/utils/clipboard.d.ts.map +1 -1
  188. package/dist/utils/clipboard.js +278 -10
  189. package/dist/utils/clipboard.js.map +1 -1
  190. package/dist/utils/tools-manager.d.ts +1 -1
  191. package/dist/utils/tools-manager.d.ts.map +1 -1
  192. package/dist/utils/tools-manager.js +7 -6
  193. package/dist/utils/tools-manager.js.map +1 -1
  194. package/dist/utils/version-check.d.ts +17 -5
  195. package/dist/utils/version-check.d.ts.map +1 -1
  196. package/dist/utils/version-check.js +88 -21
  197. package/dist/utils/version-check.js.map +1 -1
  198. package/docs/compaction.md +21 -3
  199. package/docs/custom-provider.md +33 -4
  200. package/docs/extensions.md +150 -24
  201. package/docs/json.md +8 -0
  202. package/docs/keybindings.md +25 -1
  203. package/docs/models.md +103 -4
  204. package/docs/packages.md +2 -0
  205. package/docs/prompt-templates.md +2 -0
  206. package/docs/quickstart.md +1 -4
  207. package/docs/rpc.md +16 -6
  208. package/docs/sdk.md +48 -3
  209. package/docs/session-format.md +5 -1
  210. package/docs/settings.md +19 -5
  211. package/docs/skills.md +7 -5
  212. package/docs/terminal-setup.md +79 -2
  213. package/docs/terminal-verification.md +71 -0
  214. package/docs/themes.md +63 -10
  215. package/docs/tui.md +120 -25
  216. package/docs/usage.md +6 -4
  217. package/examples/extensions/border-status-editor.ts +2 -3
  218. package/examples/extensions/doom-overlay/doom-component.ts +3 -3
  219. package/examples/extensions/mac-system-theme.ts +3 -2
  220. package/examples/extensions/modal-editor.ts +13 -8
  221. package/examples/extensions/overlay-qa-tests.ts +22 -9
  222. package/examples/extensions/overlay-test.ts +5 -3
  223. package/examples/extensions/snake.ts +3 -1
  224. package/examples/extensions/space-invaders.ts +6 -3
  225. package/examples/extensions/subagent/index.ts +20 -17
  226. package/package.json +69 -58
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import type { ExtensionAPI, ExtensionCommandContext, Theme } from "@leanandmean/coding-agent";
12
- import { CURSOR_MARKER, type Focusable, matchesKey, visibleWidth } from "@leanandmean/tui";
12
+ import { CURSOR_MARKER, decodeKittyPrintable, type Focusable, matchesKey, visibleWidth } from "@leanandmean/tui";
13
13
 
14
14
  export default function (pi: ExtensionAPI) {
15
15
  pi.registerCommand("overlay-test", {
@@ -48,6 +48,8 @@ class OverlayTestComponent implements Focusable {
48
48
  ) {}
49
49
 
50
50
  handleInput(data: string): void {
51
+ // SCRAMJET-DIVERGENCE: retained terminals encode printable input explicitly.
52
+ const printable = decodeKittyPrintable(data) ?? data;
51
53
  if (matchesKey(data, "escape")) {
52
54
  this.done(undefined);
53
55
  return;
@@ -74,8 +76,8 @@ class OverlayTestComponent implements Focusable {
74
76
  current.cursor = Math.max(0, current.cursor - 1);
75
77
  } else if (matchesKey(data, "right")) {
76
78
  current.cursor = Math.min(current.text.length, current.cursor + 1);
77
- } else if (data.length === 1 && data.charCodeAt(0) >= 32) {
78
- current.text = current.text.slice(0, current.cursor) + data + current.text.slice(current.cursor);
79
+ } else if (printable.length === 1 && printable.charCodeAt(0) >= 32) {
80
+ current.text = current.text.slice(0, current.cursor) + printable + current.text.slice(current.cursor);
79
81
  current.cursor++;
80
82
  }
81
83
  }
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import type { ExtensionAPI } from "@leanandmean/coding-agent";
6
- import { matchesKey, visibleWidth } from "@leanandmean/tui";
6
+ import { decodeKittyPrintable, matchesKey, visibleWidth } from "@leanandmean/tui";
7
7
 
8
8
  const GAME_WIDTH = 40;
9
9
  const GAME_HEIGHT = 15;
@@ -148,6 +148,8 @@ class SnakeComponent {
148
148
  }
149
149
 
150
150
  handleInput(data: string): void {
151
+ // SCRAMJET-DIVERGENCE: retained terminals encode printable input explicitly.
152
+ data = decodeKittyPrintable(data) ?? data;
151
153
  // If paused (resuming), wait for any key
152
154
  if (this.paused) {
153
155
  if (matchesKey(data, "escape") || data === "q" || data === "Q") {
@@ -319,10 +319,12 @@ class SpaceInvadersComponent {
319
319
 
320
320
  handleInput(data: string): void {
321
321
  const released = isKeyRelease(data);
322
+ // SCRAMJET-DIVERGENCE: viewport terminals explicitly encode printable quit keys.
323
+ const quit = matchesKey(data, "q") || matchesKey(data, "shift+q");
322
324
 
323
325
  // Pause handling
324
326
  if (this.paused && !released) {
325
- if (matchesKey(data, Key.escape) || data === "q" || data === "Q") {
327
+ if (matchesKey(data, Key.escape) || quit) {
326
328
  this.dispose();
327
329
  this.onClose();
328
330
  return;
@@ -341,7 +343,7 @@ class SpaceInvadersComponent {
341
343
  }
342
344
 
343
345
  // Q to quit without saving
344
- if (!released && (data === "q" || data === "Q")) {
346
+ if (!released && quit) {
345
347
  this.dispose();
346
348
  this.onSave(null);
347
349
  this.onClose();
@@ -363,7 +365,8 @@ class SpaceInvadersComponent {
363
365
 
364
366
  // Restart on game over or victory
365
367
  if (!released && (this.state.gameOver || this.state.victory)) {
366
- if (data === "r" || data === "R" || data === " ") {
368
+ // SCRAMJET-DIVERGENCE: restart keys also arrive as explicit Kitty sequences.
369
+ if (matchesKey(data, "r") || matchesKey(data, "shift+r") || matchesKey(data, Key.space)) {
367
370
  const highScore = this.state.highScore;
368
371
  const nextLevel = this.state.victory ? this.state.level + 1 : 1;
369
372
  this.state = createInitialState(highScore, nextLevel);
@@ -675,19 +675,16 @@ export default function (pi: ExtensionAPI) {
675
675
  theme.fg("toolTitle", theme.bold("subagent ")) +
676
676
  theme.fg("accent", `chain (${args.chain.length} steps)`) +
677
677
  theme.fg("muted", ` [${scope}]`);
678
- for (let i = 0; i < Math.min(args.chain.length, 3); i++) {
678
+ for (let i = 0; i < args.chain.length; i++) {
679
679
  const step = args.chain[i];
680
- // Clean up {previous} placeholder for display
681
680
  const cleanTask = step.task.replace(/\{previous\}/g, "").trim();
682
- const preview = cleanTask.length > 40 ? `${cleanTask.slice(0, 40)}...` : cleanTask;
683
681
  text +=
684
682
  "\n " +
685
683
  theme.fg("muted", `${i + 1}.`) +
686
684
  " " +
687
685
  theme.fg("accent", step.agent) +
688
- theme.fg("dim", ` ${preview}`);
686
+ theme.fg("dim", ` ${cleanTask}`);
689
687
  }
690
- if (args.chain.length > 3) text += `\n ${theme.fg("muted", `... +${args.chain.length - 3} more`)}`;
691
688
  return new Text(text, 0, 0);
692
689
  }
693
690
  if (args.tasks && args.tasks.length > 0) {
@@ -695,20 +692,18 @@ export default function (pi: ExtensionAPI) {
695
692
  theme.fg("toolTitle", theme.bold("subagent ")) +
696
693
  theme.fg("accent", `parallel (${args.tasks.length} tasks)`) +
697
694
  theme.fg("muted", ` [${scope}]`);
698
- for (const t of args.tasks.slice(0, 3)) {
699
- const preview = t.task.length > 40 ? `${t.task.slice(0, 40)}...` : t.task;
700
- text += `\n ${theme.fg("accent", t.agent)}${theme.fg("dim", ` ${preview}`)}`;
695
+ for (const t of args.tasks) {
696
+ text += `\n ${theme.fg("accent", t.agent)}${theme.fg("dim", ` ${t.task}`)}`;
701
697
  }
702
- if (args.tasks.length > 3) text += `\n ${theme.fg("muted", `... +${args.tasks.length - 3} more`)}`;
703
698
  return new Text(text, 0, 0);
704
699
  }
705
700
  const agentName = args.agent || "...";
706
- const preview = args.task ? (args.task.length > 60 ? `${args.task.slice(0, 60)}...` : args.task) : "...";
701
+ const taskText = args.task || "...";
707
702
  let text =
708
703
  theme.fg("toolTitle", theme.bold("subagent ")) +
709
704
  theme.fg("accent", agentName) +
710
705
  theme.fg("muted", ` [${scope}]`);
711
- text += `\n ${theme.fg("dim", preview)}`;
706
+ text += `\n ${theme.fg("dim", taskText)}`;
712
707
  return new Text(text, 0, 0);
713
708
  },
714
709
 
@@ -719,6 +714,10 @@ export default function (pi: ExtensionAPI) {
719
714
  return new Text(text?.type === "text" ? text.text : "(no output)", 0, 0);
720
715
  }
721
716
 
717
+ const modelTag = (model: string | undefined): string => {
718
+ return model ? ` ${theme.fg("dim", model)}` : "";
719
+ };
720
+
722
721
  const mdTheme = getMarkdownTheme();
723
722
 
724
723
  const renderDisplayItems = (items: DisplayItem[], limit?: number) => {
@@ -746,7 +745,7 @@ export default function (pi: ExtensionAPI) {
746
745
 
747
746
  if (expanded) {
748
747
  const container = new Container();
749
- let header = `${icon} ${theme.fg("toolTitle", theme.bold(r.agent))}${theme.fg("muted", ` (${r.agentSource})`)}`;
748
+ let header = `${icon} ${theme.fg("toolTitle", theme.bold(r.agent))}${theme.fg("muted", ` (${r.agentSource})`)}${modelTag(r.model)}`;
750
749
  if (isError && r.stopReason) header += ` ${theme.fg("error", `[${r.stopReason}]`)}`;
751
750
  container.addChild(new Text(header, 0, 0));
752
751
  if (isError && r.errorMessage)
@@ -782,7 +781,7 @@ export default function (pi: ExtensionAPI) {
782
781
  return container;
783
782
  }
784
783
 
785
- let text = `${icon} ${theme.fg("toolTitle", theme.bold(r.agent))}${theme.fg("muted", ` (${r.agentSource})`)}`;
784
+ let text = `${icon} ${theme.fg("toolTitle", theme.bold(r.agent))}${theme.fg("muted", ` (${r.agentSource})`)}${modelTag(r.model)}`;
786
785
  if (isError && r.stopReason) text += ` ${theme.fg("error", `[${r.stopReason}]`)}`;
787
786
  if (isError && r.errorMessage) text += `\n${theme.fg("error", `Error: ${r.errorMessage}`)}`;
788
787
  else if (displayItems.length === 0) text += `\n${theme.fg("muted", "(no output)")}`;
@@ -833,7 +832,7 @@ export default function (pi: ExtensionAPI) {
833
832
  container.addChild(new Spacer(1));
834
833
  container.addChild(
835
834
  new Text(
836
- `${theme.fg("muted", `─── Step ${r.step}: `) + theme.fg("accent", r.agent)} ${rIcon}`,
835
+ `${theme.fg("muted", `─── Step ${r.step}: `) + theme.fg("accent", r.agent)} ${rIcon}${modelTag(r.model)}`,
837
836
  0,
838
837
  0,
839
838
  ),
@@ -880,7 +879,7 @@ export default function (pi: ExtensionAPI) {
880
879
  for (const r of details.results) {
881
880
  const rIcon = r.exitCode === 0 ? theme.fg("success", "✓") : theme.fg("error", "✗");
882
881
  const displayItems = getDisplayItems(r.messages);
883
- text += `\n\n${theme.fg("muted", `─── Step ${r.step}: `)}${theme.fg("accent", r.agent)} ${rIcon}`;
882
+ text += `\n\n${theme.fg("muted", `─── Step ${r.step}: `)}${theme.fg("accent", r.agent)} ${rIcon}${modelTag(r.model)}`;
884
883
  if (displayItems.length === 0) text += `\n${theme.fg("muted", "(no output)")}`;
885
884
  else text += `\n${renderDisplayItems(displayItems, 5)}`;
886
885
  }
@@ -921,7 +920,11 @@ export default function (pi: ExtensionAPI) {
921
920
 
922
921
  container.addChild(new Spacer(1));
923
922
  container.addChild(
924
- new Text(`${theme.fg("muted", "─── ") + theme.fg("accent", r.agent)} ${rIcon}`, 0, 0),
923
+ new Text(
924
+ `${theme.fg("muted", "─── ") + theme.fg("accent", r.agent)} ${rIcon}${modelTag(r.model)}`,
925
+ 0,
926
+ 0,
927
+ ),
925
928
  );
926
929
  container.addChild(new Text(theme.fg("muted", "Task: ") + theme.fg("dim", r.task), 0, 0));
927
930
 
@@ -966,7 +969,7 @@ export default function (pi: ExtensionAPI) {
966
969
  ? theme.fg("success", "✓")
967
970
  : theme.fg("error", "✗");
968
971
  const displayItems = getDisplayItems(r.messages);
969
- text += `\n\n${theme.fg("muted", "─── ")}${theme.fg("accent", r.agent)} ${rIcon}`;
972
+ text += `\n\n${theme.fg("muted", "─── ")}${theme.fg("accent", r.agent)} ${rIcon}${modelTag(r.model)}`;
970
973
  if (displayItems.length === 0)
971
974
  text += `\n${theme.fg("muted", r.exitCode === -1 ? "(running...)" : "(no output)")}`;
972
975
  else text += `\n${renderDisplayItems(displayItems, 5)}`;
package/package.json CHANGED
@@ -1,60 +1,71 @@
1
1
  {
2
- "name": "@leanandmean/coding-agent",
3
- "version": "0.74.1-scramjet.7",
4
- "publishConfig": {
5
- "access": "public"
6
- },
7
- "description": "Coding agent CLI with read, bash, edit, write tools and session management",
8
- "license": "MIT",
9
- "type": "module",
10
- "piConfig": {
11
- "name": "scramjet",
12
- "configDir": ".scramjet"
13
- },
14
- "main": "./dist/index.js",
15
- "types": "./dist/index.d.ts",
16
- "exports": {
17
- ".": {
18
- "types": "./dist/index.d.ts",
19
- "import": "./dist/index.js"
20
- }
21
- },
22
- "files": ["dist", "docs", "examples", "CHANGELOG.md"],
23
- "scripts": {
24
- "clean": "shx rm -rf dist",
25
- "dev": "tsgo -p tsconfig.build.json --watch --preserveWatchOutput",
26
- "build": "tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js && npm run copy-assets",
27
- "copy-assets": "shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/",
28
- "test": "vitest --run --passWithNoTests"
29
- },
30
- "dependencies": {
31
- "@leanandmean/agent": "0.74.1-scramjet.6",
32
- "@leanandmean/ai": "0.74.1-scramjet.5",
33
- "@leanandmean/tui": "0.74.1-scramjet.4",
34
- "@silvia-odwyer/photon-node": "^0.3.4",
35
- "chalk": "^5.5.0",
36
- "diff": "^8.0.2",
37
- "glob": "^13.0.1",
38
- "highlight.js": "^10.7.3",
39
- "hosted-git-info": "^9.0.2",
40
- "ignore": "^7.0.5",
41
- "jiti": "^2.7.0",
42
- "minimatch": "^10.2.3",
43
- "proper-lockfile": "^4.1.2",
44
- "typebox": "^1.1.24",
45
- "undici": "^7.19.1",
46
- "yaml": "^2.8.2"
47
- },
48
- "optionalDependencies": {
49
- "@mariozechner/clipboard": "^0.3.6"
50
- },
51
- "devDependencies": {
52
- "@types/diff": "^7.0.2",
53
- "@types/hosted-git-info": "^3.0.5",
54
- "@types/ms": "^2.1.0",
55
- "@types/proper-lockfile": "^4.1.4"
56
- },
57
- "engines": {
58
- "node": ">=20.6.0"
59
- }
2
+ "name": "@leanandmean/coding-agent",
3
+ "version": "0.74.1-scramjet.71",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "description": "Coding agent CLI with read, bash, edit, write tools and session management",
8
+ "license": "Apache-2.0",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/LeanAndMean/scramjet.git"
12
+ },
13
+ "type": "module",
14
+ "piConfig": {
15
+ "name": "scramjet",
16
+ "configDir": ".scramjet"
17
+ },
18
+ "main": "./dist/index.js",
19
+ "types": "./dist/index.d.ts",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "import": "./dist/index.js"
24
+ }
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "docs",
29
+ "examples",
30
+ "CHANGELOG.md"
31
+ ],
32
+ "scripts": {
33
+ "clean": "shx rm -rf dist",
34
+ "dev": "tsgo -p tsconfig.build.json --watch --preserveWatchOutput",
35
+ "build": "tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js && npm run copy-assets",
36
+ "copy-assets": "shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/",
37
+ "test": "vitest --run --passWithNoTests"
38
+ },
39
+ "dependencies": {
40
+ "@leanandmean/agent": "0.74.1-scramjet.50",
41
+ "@leanandmean/ai": "0.74.1-scramjet.46",
42
+ "@leanandmean/tui": "0.74.1-scramjet.43",
43
+ "@silvia-odwyer/photon-node": "^0.3.4",
44
+ "chalk": "^5.5.0",
45
+ "dictionary-en": "^4.0.0",
46
+ "diff": "^8.0.2",
47
+ "glob": "^13.0.1",
48
+ "highlight.js": "^10.7.3",
49
+ "hosted-git-info": "^9.0.2",
50
+ "ignore": "^7.0.5",
51
+ "jiti": "^2.7.0",
52
+ "minimatch": "^10.2.3",
53
+ "nspell": "^2.1.5",
54
+ "proper-lockfile": "^4.1.2",
55
+ "typebox": "^1.1.24",
56
+ "undici": "^7.19.1",
57
+ "yaml": "^2.8.2"
58
+ },
59
+ "optionalDependencies": {
60
+ "@mariozechner/clipboard": "^0.3.6"
61
+ },
62
+ "devDependencies": {
63
+ "@types/diff": "^7.0.2",
64
+ "@types/hosted-git-info": "^3.0.5",
65
+ "@types/ms": "^2.1.0",
66
+ "@types/proper-lockfile": "^4.1.4"
67
+ },
68
+ "engines": {
69
+ "node": ">=20.6.0"
70
+ }
60
71
  }