openhorse 0.1.22 → 0.2.0

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 (143) hide show
  1. package/README.md +76 -427
  2. package/dist/cli.d.ts +1 -3
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +125 -1028
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +91 -19
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/types.d.ts +1 -0
  10. package/dist/commands/types.d.ts.map +1 -1
  11. package/dist/commands/types.js.map +1 -1
  12. package/dist/framework/index.d.ts +2 -2
  13. package/dist/framework/index.d.ts.map +1 -1
  14. package/dist/framework/index.js +6 -1
  15. package/dist/framework/index.js.map +1 -1
  16. package/dist/framework/query.d.ts +2 -0
  17. package/dist/framework/query.d.ts.map +1 -1
  18. package/dist/framework/query.js +5 -2
  19. package/dist/framework/query.js.map +1 -1
  20. package/dist/harness/assembler.d.ts +14 -2
  21. package/dist/harness/assembler.d.ts.map +1 -1
  22. package/dist/harness/assembler.js +167 -32
  23. package/dist/harness/assembler.js.map +1 -1
  24. package/dist/harness/capsule.d.ts +2 -1
  25. package/dist/harness/capsule.d.ts.map +1 -1
  26. package/dist/harness/capsule.js +64 -0
  27. package/dist/harness/capsule.js.map +1 -1
  28. package/dist/harness/context-harness.d.ts +23 -3
  29. package/dist/harness/context-harness.d.ts.map +1 -1
  30. package/dist/harness/context-harness.js +97 -7
  31. package/dist/harness/context-harness.js.map +1 -1
  32. package/dist/harness/contract.d.ts +2 -2
  33. package/dist/harness/contract.d.ts.map +1 -1
  34. package/dist/harness/contract.js +7 -3
  35. package/dist/harness/contract.js.map +1 -1
  36. package/dist/harness/evidence.d.ts +15 -0
  37. package/dist/harness/evidence.d.ts.map +1 -0
  38. package/dist/harness/evidence.js +171 -0
  39. package/dist/harness/evidence.js.map +1 -0
  40. package/dist/harness/index.d.ts +9 -3
  41. package/dist/harness/index.d.ts.map +1 -1
  42. package/dist/harness/index.js +15 -1
  43. package/dist/harness/index.js.map +1 -1
  44. package/dist/harness/intent.d.ts +4 -0
  45. package/dist/harness/intent.d.ts.map +1 -0
  46. package/dist/harness/intent.js +139 -0
  47. package/dist/harness/intent.js.map +1 -0
  48. package/dist/harness/state.d.ts +12 -0
  49. package/dist/harness/state.d.ts.map +1 -0
  50. package/dist/harness/state.js +84 -0
  51. package/dist/harness/state.js.map +1 -0
  52. package/dist/harness/turn-summary.d.ts +25 -0
  53. package/dist/harness/turn-summary.d.ts.map +1 -0
  54. package/dist/harness/turn-summary.js +120 -0
  55. package/dist/harness/turn-summary.js.map +1 -0
  56. package/dist/harness/types.d.ts +103 -0
  57. package/dist/harness/types.d.ts.map +1 -1
  58. package/dist/index.d.ts +2 -2
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +6 -1
  61. package/dist/index.js.map +1 -1
  62. package/dist/ink-ui/App.d.ts +6 -0
  63. package/dist/ink-ui/App.d.ts.map +1 -0
  64. package/dist/ink-ui/App.js +12 -0
  65. package/dist/ink-ui/App.js.map +1 -0
  66. package/dist/ink-ui/components/Markdown.d.ts +9 -0
  67. package/dist/ink-ui/components/Markdown.d.ts.map +1 -0
  68. package/dist/ink-ui/components/Markdown.js +188 -0
  69. package/dist/ink-ui/components/Markdown.js.map +1 -0
  70. package/dist/ink-ui/components/PixelHorseBanner.d.ts +8 -0
  71. package/dist/ink-ui/components/PixelHorseBanner.d.ts.map +1 -0
  72. package/dist/ink-ui/components/PixelHorseBanner.js +97 -0
  73. package/dist/ink-ui/components/PixelHorseBanner.js.map +1 -0
  74. package/dist/ink-ui/components/PromptInput.d.ts +9 -0
  75. package/dist/ink-ui/components/PromptInput.d.ts.map +1 -0
  76. package/dist/ink-ui/components/PromptInput.js +24 -0
  77. package/dist/ink-ui/components/PromptInput.js.map +1 -0
  78. package/dist/ink-ui/components/SelectList.d.ts +15 -0
  79. package/dist/ink-ui/components/SelectList.d.ts.map +1 -0
  80. package/dist/ink-ui/components/SelectList.js +39 -0
  81. package/dist/ink-ui/components/SelectList.js.map +1 -0
  82. package/dist/ink-ui/components/StatusLine.d.ts +9 -0
  83. package/dist/ink-ui/components/StatusLine.d.ts.map +1 -0
  84. package/dist/ink-ui/components/StatusLine.js +71 -0
  85. package/dist/ink-ui/components/StatusLine.js.map +1 -0
  86. package/dist/ink-ui/components/TerminalCursor.d.ts +13 -0
  87. package/dist/ink-ui/components/TerminalCursor.d.ts.map +1 -0
  88. package/dist/ink-ui/components/TerminalCursor.js +74 -0
  89. package/dist/ink-ui/components/TerminalCursor.js.map +1 -0
  90. package/dist/ink-ui/components/Transcript.d.ts +8 -0
  91. package/dist/ink-ui/components/Transcript.d.ts.map +1 -0
  92. package/dist/ink-ui/components/Transcript.js +29 -0
  93. package/dist/ink-ui/components/Transcript.js.map +1 -0
  94. package/dist/ink-ui/controllers/chat-controller.d.ts +15 -0
  95. package/dist/ink-ui/controllers/chat-controller.d.ts.map +1 -0
  96. package/dist/ink-ui/controllers/chat-controller.js +410 -0
  97. package/dist/ink-ui/controllers/chat-controller.js.map +1 -0
  98. package/dist/ink-ui/launch.d.ts +3 -0
  99. package/dist/ink-ui/launch.d.ts.map +1 -0
  100. package/dist/ink-ui/launch.js +14 -0
  101. package/dist/ink-ui/launch.js.map +1 -0
  102. package/dist/ink-ui/runtime/prompt-layout.d.ts +11 -0
  103. package/dist/ink-ui/runtime/prompt-layout.d.ts.map +1 -0
  104. package/dist/ink-ui/runtime/prompt-layout.js +51 -0
  105. package/dist/ink-ui/runtime/prompt-layout.js.map +1 -0
  106. package/dist/ink-ui/screens/ReplScreen.d.ts +14 -0
  107. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -0
  108. package/dist/ink-ui/screens/ReplScreen.js +470 -0
  109. package/dist/ink-ui/screens/ReplScreen.js.map +1 -0
  110. package/dist/ink-ui/types.d.ts +43 -0
  111. package/dist/ink-ui/types.d.ts.map +1 -0
  112. package/dist/ink-ui/types.js +3 -0
  113. package/dist/ink-ui/types.js.map +1 -0
  114. package/dist/services/compact/auto-compact.d.ts +3 -1
  115. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  116. package/dist/services/compact/auto-compact.js +10 -0
  117. package/dist/services/compact/auto-compact.js.map +1 -1
  118. package/dist/services/compact/compact.d.ts +5 -1
  119. package/dist/services/compact/compact.d.ts.map +1 -1
  120. package/dist/services/compact/compact.js +11 -1
  121. package/dist/services/compact/compact.js.map +1 -1
  122. package/dist/services/config-dir.d.ts +2 -0
  123. package/dist/services/config-dir.d.ts.map +1 -1
  124. package/dist/services/config-dir.js +5 -0
  125. package/dist/services/config-dir.js.map +1 -1
  126. package/dist/services/config.js +2 -2
  127. package/dist/services/config.js.map +1 -1
  128. package/dist/services/global-config.d.ts +1 -1
  129. package/dist/services/global-config.d.ts.map +1 -1
  130. package/dist/services/session-storage.d.ts +4 -1
  131. package/dist/services/session-storage.d.ts.map +1 -1
  132. package/dist/services/session-storage.js +76 -6
  133. package/dist/services/session-storage.js.map +1 -1
  134. package/dist/tools/mcp.js +1 -1
  135. package/dist/ui-v2/components/session-picker.d.ts +2 -0
  136. package/dist/ui-v2/components/session-picker.d.ts.map +1 -1
  137. package/dist/ui-v2/components/session-picker.js +34 -5
  138. package/dist/ui-v2/components/session-picker.js.map +1 -1
  139. package/dist/ui-v2/state/sessions.d.ts +1 -0
  140. package/dist/ui-v2/state/sessions.d.ts.map +1 -1
  141. package/dist/ui-v2/state/sessions.js +18 -0
  142. package/dist/ui-v2/state/sessions.js.map +1 -1
  143. package/package.json +5 -1
@@ -4,20 +4,49 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.renderSessionPicker = renderSessionPicker;
7
+ exports.getSessionWindowStart = getSessionWindowStart;
7
8
  const command_palette_1 = require("./command-palette");
8
9
  const sessions_1 = require("../state/sessions");
9
10
  function renderSessionPicker(options) {
11
+ const selectedIndex = clamp(options.selectedIndex ?? 0, 0, Math.max(0, options.sessions.length - 1));
12
+ const maxVisibleItems = options.maxVisibleItems && options.maxVisibleItems > 0
13
+ ? Math.floor(options.maxVisibleItems)
14
+ : options.sessions.length;
15
+ const windowStart = getSessionWindowStart(selectedIndex, options.sessions.length, maxVisibleItems);
16
+ const windowEnd = Math.min(options.sessions.length, windowStart + maxVisibleItems);
17
+ const allItems = (0, sessions_1.buildSessionSuggestions)(options.sessions, {
18
+ showProject: options.showProject,
19
+ });
20
+ const visibleItems = allItems.slice(windowStart, windowEnd);
21
+ const viewportLabel = options.sessions.length > visibleItems.length
22
+ ? `Showing ${windowStart + 1}-${windowEnd}/${options.sessions.length}`
23
+ : undefined;
24
+ const footer = [
25
+ options.footer ?? ' ↑↓ Select Enter Resume Esc Cancel',
26
+ viewportLabel,
27
+ ].filter(Boolean).join(' ');
10
28
  return (0, command_palette_1.renderCommandPalette)({
11
29
  title: options.title ?? 'Pick a Session',
12
- items: (0, sessions_1.buildSessionSuggestions)(options.sessions, {
13
- showProject: options.showProject,
14
- }),
15
- selectedIndex: options.selectedIndex ?? 0,
30
+ items: visibleItems,
31
+ selectedIndex: selectedIndex - windowStart,
16
32
  width: options.width,
17
33
  moreCount: options.moreCount,
18
34
  emptyLabel: 'No sessions found',
19
- footer: options.footer ?? ' ↑↓ Select Enter Resume Esc Cancel',
35
+ footer,
20
36
  theme: options.theme,
21
37
  });
22
38
  }
39
+ function getSessionWindowStart(selectedIndex, total, maxVisibleItems) {
40
+ if (total <= 0 || maxVisibleItems <= 0 || total <= maxVisibleItems)
41
+ return 0;
42
+ const clamped = clamp(selectedIndex, 0, total - 1);
43
+ if (clamped < maxVisibleItems)
44
+ return 0;
45
+ return Math.min(total - maxVisibleItems, clamped - maxVisibleItems + 1);
46
+ }
47
+ function clamp(value, min, max) {
48
+ if (max < min)
49
+ return min;
50
+ return Math.max(min, Math.min(max, value));
51
+ }
23
52
  //# sourceMappingURL=session-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-picker.js","sourceRoot":"","sources":["../../../src/ui-v2/components/session-picker.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAkBH,kDAaC;AA3BD,uDAAyD;AACzD,gDAA4D;AAa5D,SAAgB,mBAAmB,CAAC,OAAmC;IACrE,OAAO,IAAA,sCAAoB,EAAC;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,gBAAgB;QACxC,KAAK,EAAE,IAAA,kCAAuB,EAAC,OAAO,CAAC,QAAQ,EAAE;YAC/C,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC;QACF,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC;QACzC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,uCAAuC;QACjE,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"session-picker.js","sourceRoot":"","sources":["../../../src/ui-v2/components/session-picker.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAmBH,kDA6BC;AAED,sDAKC;AAnDD,uDAAyD;AACzD,gDAA4D;AAc5D,SAAgB,mBAAmB,CAAC,OAAmC;IACrE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC;QAC5E,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QACrC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5B,MAAM,WAAW,GAAG,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACnG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,IAAA,kCAAuB,EAAC,OAAO,CAAC,QAAQ,EAAE;QACzD,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;QACjE,CAAC,CAAC,WAAW,WAAW,GAAG,CAAC,IAAI,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;QACtE,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,MAAM,GAAG;QACb,OAAO,CAAC,MAAM,IAAI,uCAAuC;QACzD,aAAa;KACd,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,OAAO,IAAA,sCAAoB,EAAC;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,gBAAgB;QACxC,KAAK,EAAE,YAAY;QACnB,aAAa,EAAE,aAAa,GAAG,WAAW;QAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,qBAAqB,CAAC,aAAqB,EAAE,KAAa,EAAE,eAAuB;IACjG,IAAI,KAAK,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,IAAI,KAAK,IAAI,eAAe;QAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,GAAG,eAAe;QAAE,OAAO,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,eAAe,EAAE,OAAO,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,IAAI,GAAG,GAAG,GAAG;QAAE,OAAO,GAAG,CAAC;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -11,4 +11,5 @@ export declare function buildSessionSuggestions(sessions: SessionMeta[], options
11
11
  export declare function sessionToSuggestion(session: SessionMeta, index: number, options?: BuildSessionSuggestionsOptions): SuggestionItem;
12
12
  export declare function sessionDisplayTitle(session: SessionMeta): string;
13
13
  export declare function formatRelativeTime(timestamp: number, now?: number): string;
14
+ export declare function formatBytes(bytes: number): string;
14
15
  //# sourceMappingURL=sessions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/state/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,8BAA8B;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,8BAAmC,GAC3C,cAAc,EAAE,CAElB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,8BAAmC,GAC3C,cAAc,CA6BhB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,CAmBtF"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/state/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,8BAA8B;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,8BAAmC,GAC3C,cAAc,EAAE,CAElB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,8BAAmC,GAC3C,cAAc,CA8BhB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,CAmBtF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD"}
@@ -7,6 +7,7 @@ exports.buildSessionSuggestions = buildSessionSuggestions;
7
7
  exports.sessionToSuggestion = sessionToSuggestion;
8
8
  exports.sessionDisplayTitle = sessionDisplayTitle;
9
9
  exports.formatRelativeTime = formatRelativeTime;
10
+ exports.formatBytes = formatBytes;
10
11
  const path_1 = require("path");
11
12
  function buildSessionSuggestions(sessions, options = {}) {
12
13
  return sessions.map((session, index) => sessionToSuggestion(session, index, options));
@@ -19,6 +20,7 @@ function sessionToSuggestion(session, index, options = {}) {
19
20
  shortId,
20
21
  session.model,
21
22
  `${session.messageCount ?? 0} msg`,
23
+ formatBytes(session.historySizeBytes ?? 0),
22
24
  formatRelativeTime(updatedAt, options.now ?? Date.now()),
23
25
  ];
24
26
  if (options.showProject && session.projectPath) {
@@ -62,4 +64,20 @@ function formatRelativeTime(timestamp, now = Date.now()) {
62
64
  const years = Math.floor(months / 12);
63
65
  return `${years}y ago`;
64
66
  }
67
+ function formatBytes(bytes) {
68
+ if (!Number.isFinite(bytes) || bytes <= 0)
69
+ return '0 B';
70
+ if (bytes < 1024)
71
+ return `${bytes} B`;
72
+ const kb = bytes / 1024;
73
+ if (kb < 1024)
74
+ return `${formatNumber(kb)} KB`;
75
+ const mb = kb / 1024;
76
+ if (mb < 1024)
77
+ return `${formatNumber(mb)} MB`;
78
+ return `${formatNumber(mb / 1024)} GB`;
79
+ }
80
+ function formatNumber(value) {
81
+ return value >= 10 ? value.toFixed(0) : value.toFixed(1);
82
+ }
65
83
  //# sourceMappingURL=sessions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/ui-v2/state/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/ui-v2/state/sessions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openhorse",
3
- "version": "0.1.22",
3
+ "version": "0.2.0",
4
4
  "description": "OpenHorse - Universal Agent Harness Framework. A complete coding CLI agent with tools, MCP, memory system.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -58,13 +58,16 @@
58
58
  "dotenv": "^16.6.1",
59
59
  "eventemitter3": "^5.0.1",
60
60
  "figlet": "^1.11.0",
61
+ "ink": "^3.2.0",
61
62
  "js-yaml": "^4.1.1",
62
63
  "lodash-es": "^4.18.1",
63
64
  "marked": "^11.2.0",
64
65
  "marked-terminal": "^6.2.0",
65
66
  "openai": "^4.0.0",
67
+ "react": "^17.0.2",
66
68
  "signal-exit": "^4.1.0",
67
69
  "sqlite-vec": "^0.1.9",
70
+ "string-width": "^4.2.3",
68
71
  "throttle": "^1.0.3",
69
72
  "type-fest": "^5.6.0",
70
73
  "uuid": "^9.0.0"
@@ -74,6 +77,7 @@
74
77
  "@types/jest": "^30.0.0",
75
78
  "@types/js-yaml": "^4.0.9",
76
79
  "@types/node": "^20.0.0",
80
+ "@types/react": "^17.0.83",
77
81
  "@types/uuid": "^9.0.0",
78
82
  "eslint": "^8.56.0",
79
83
  "jest": "^29.7.0",