indusagi 0.12.16 → 0.12.18

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 (245) hide show
  1. package/README.md +0 -1
  2. package/dist/agent/agent.d.ts +2 -108
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/agent.js +17 -210
  5. package/dist/agent/agent.js.map +1 -1
  6. package/dist/agent/event-bus.js +3 -1
  7. package/dist/agent/event-bus.js.map +1 -1
  8. package/dist/agent/index.d.ts +5 -11
  9. package/dist/agent/index.d.ts.map +1 -1
  10. package/dist/agent/index.js +8 -19
  11. package/dist/agent/index.js.map +1 -1
  12. package/dist/agent/messages.d.ts +48 -2
  13. package/dist/agent/messages.d.ts.map +1 -1
  14. package/dist/agent/messages.js.map +1 -1
  15. package/dist/agent/proxy.js.map +1 -1
  16. package/dist/agent/session-manager.d.ts +3 -2
  17. package/dist/agent/session-manager.d.ts.map +1 -1
  18. package/dist/agent/session-manager.js +6 -10
  19. package/dist/agent/session-manager.js.map +1 -1
  20. package/dist/agent/state-manager.js +0 -1
  21. package/dist/agent/state-manager.js.map +1 -1
  22. package/dist/agent/telemetry.js +3 -1
  23. package/dist/agent/telemetry.js.map +1 -1
  24. package/dist/agent/tools/bash.js +0 -1
  25. package/dist/agent/tools/bash.js.map +1 -1
  26. package/dist/agent/tools/index.d.ts +26 -26
  27. package/dist/agent/tools/registry.js +4 -2
  28. package/dist/agent/tools/registry.js.map +1 -1
  29. package/dist/agent/tools/todo-store.js +1 -2
  30. package/dist/agent/tools/todo-store.js.map +1 -1
  31. package/dist/agent/tools/utils/hook-runner.js +3 -1
  32. package/dist/agent/tools/utils/hook-runner.js.map +1 -1
  33. package/dist/agent/types.d.ts +1 -138
  34. package/dist/agent/types.d.ts.map +1 -1
  35. package/dist/agent/types.js.map +1 -1
  36. package/dist/ai/api-registry.js +3 -1
  37. package/dist/ai/api-registry.js.map +1 -1
  38. package/dist/ai/models.generated.d.ts +34 -0
  39. package/dist/ai/models.generated.d.ts.map +1 -1
  40. package/dist/ai/models.generated.js +34 -0
  41. package/dist/ai/models.generated.js.map +1 -1
  42. package/dist/ai/models.js +0 -1
  43. package/dist/ai/models.js.map +1 -1
  44. package/dist/ai/providers/amazon-bedrock.d.ts +0 -6
  45. package/dist/ai/providers/amazon-bedrock.d.ts.map +1 -1
  46. package/dist/ai/providers/amazon-bedrock.js +9 -47
  47. package/dist/ai/providers/amazon-bedrock.js.map +1 -1
  48. package/dist/ai/providers/anthropic.d.ts +0 -8
  49. package/dist/ai/providers/anthropic.d.ts.map +1 -1
  50. package/dist/ai/providers/anthropic.js +12 -28
  51. package/dist/ai/providers/anthropic.js.map +1 -1
  52. package/dist/ai/providers/azure-openai-responses.js +0 -1
  53. package/dist/ai/providers/azure-openai-responses.js.map +1 -1
  54. package/dist/ai/providers/google-shared.d.ts.map +1 -1
  55. package/dist/ai/providers/google-shared.js +22 -16
  56. package/dist/ai/providers/google-shared.js.map +1 -1
  57. package/dist/ai/providers/google-vertex.d.ts.map +1 -1
  58. package/dist/ai/providers/google-vertex.js +5 -28
  59. package/dist/ai/providers/google-vertex.js.map +1 -1
  60. package/dist/ai/providers/google.js +0 -1
  61. package/dist/ai/providers/google.js.map +1 -1
  62. package/dist/ai/providers/kimi.js +0 -1
  63. package/dist/ai/providers/kimi.js.map +1 -1
  64. package/dist/ai/providers/openai-codex-responses.js +0 -1
  65. package/dist/ai/providers/openai-codex-responses.js.map +1 -1
  66. package/dist/ai/providers/openai-completions.js +0 -2
  67. package/dist/ai/providers/openai-completions.js.map +1 -1
  68. package/dist/ai/providers/openai-responses.d.ts.map +1 -1
  69. package/dist/ai/providers/openai-responses.js +0 -30
  70. package/dist/ai/providers/openai-responses.js.map +1 -1
  71. package/dist/ai/providers/register-builtins.d.ts.map +1 -1
  72. package/dist/ai/providers/register-builtins.js +0 -6
  73. package/dist/ai/providers/register-builtins.js.map +1 -1
  74. package/dist/ai/providers/simple-options.js +0 -2
  75. package/dist/ai/providers/simple-options.js.map +1 -1
  76. package/dist/ai/providers/transform-messages.js +9 -3
  77. package/dist/ai/providers/transform-messages.js.map +1 -1
  78. package/dist/ai/stream.js +3 -1
  79. package/dist/ai/stream.js.map +1 -1
  80. package/dist/ai/types.d.ts +0 -34
  81. package/dist/ai/types.d.ts.map +1 -1
  82. package/dist/ai/types.js.map +1 -1
  83. package/dist/ai/utils/base-stream-handler.js +0 -1
  84. package/dist/ai/utils/base-stream-handler.js.map +1 -1
  85. package/dist/ai/utils/event-stream.js +4 -9
  86. package/dist/ai/utils/event-stream.js.map +1 -1
  87. package/dist/ai/utils/index.d.ts +0 -1
  88. package/dist/ai/utils/index.d.ts.map +1 -1
  89. package/dist/ai/utils/index.js +0 -1
  90. package/dist/ai/utils/index.js.map +1 -1
  91. package/dist/ai/utils/oauth/github-copilot.d.ts.map +1 -1
  92. package/dist/ai/utils/oauth/github-copilot.js +8 -19
  93. package/dist/ai/utils/oauth/github-copilot.js.map +1 -1
  94. package/dist/ai/utils/overflow.d.ts.map +1 -1
  95. package/dist/ai/utils/overflow.js +0 -4
  96. package/dist/ai/utils/overflow.js.map +1 -1
  97. package/dist/ai/utils/provider-adapter.js +0 -9
  98. package/dist/ai/utils/provider-adapter.js.map +1 -1
  99. package/dist/ai/utils/provider-client-builder.js +1 -1
  100. package/dist/ai/utils/provider-client-builder.js.map +1 -1
  101. package/dist/ai/utils/provider-errors.js +0 -2
  102. package/dist/ai/utils/provider-errors.js.map +1 -1
  103. package/dist/ai/utils/stream-event-helper.js +0 -3
  104. package/dist/ai/utils/stream-event-helper.js.map +1 -1
  105. package/dist/ai/utils/stream-handler-types.js +0 -5
  106. package/dist/ai/utils/stream-handler-types.js.map +1 -1
  107. package/dist/ai/utils/streaming-state-manager.js +2 -4
  108. package/dist/ai/utils/streaming-state-manager.js.map +1 -1
  109. package/dist/mcp/client-pool.js +2 -3
  110. package/dist/mcp/client-pool.js.map +1 -1
  111. package/dist/mcp/client.js +5 -18
  112. package/dist/mcp/client.js.map +1 -1
  113. package/dist/mcp/errors.js +0 -8
  114. package/dist/mcp/errors.js.map +1 -1
  115. package/dist/mcp/server.js +3 -8
  116. package/dist/mcp/server.js.map +1 -1
  117. package/dist/memory/embedder/openai.js +1 -7
  118. package/dist/memory/embedder/openai.js.map +1 -1
  119. package/dist/memory/memory.js +1 -6
  120. package/dist/memory/memory.js.map +1 -1
  121. package/dist/memory/processors/message-history.js +2 -4
  122. package/dist/memory/processors/message-history.js.map +1 -1
  123. package/dist/memory/processors/observational-memory/index.js +2 -7
  124. package/dist/memory/processors/observational-memory/index.js.map +1 -1
  125. package/dist/memory/processors/observational-memory/token-counter.js +3 -3
  126. package/dist/memory/processors/observational-memory/token-counter.js.map +1 -1
  127. package/dist/memory/processors/semantic-recall.js +2 -11
  128. package/dist/memory/processors/semantic-recall.js.map +1 -1
  129. package/dist/memory/processors/working-memory.js +2 -7
  130. package/dist/memory/processors/working-memory.js.map +1 -1
  131. package/dist/memory/storage/base.js +6 -4
  132. package/dist/memory/storage/base.js.map +1 -1
  133. package/dist/memory/storage/inmemory.js +2 -3
  134. package/dist/memory/storage/inmemory.js.map +1 -1
  135. package/dist/memory/vector/base.js +6 -4
  136. package/dist/memory/vector/base.js.map +1 -1
  137. package/dist/memory/vector/inmemory.js +5 -2
  138. package/dist/memory/vector/inmemory.js.map +1 -1
  139. package/dist/tui/autocomplete.js +1 -5
  140. package/dist/tui/autocomplete.js.map +1 -1
  141. package/dist/tui/components/box.js +1 -9
  142. package/dist/tui/components/box.js.map +1 -1
  143. package/dist/tui/components/cancellable-loader.js +4 -3
  144. package/dist/tui/components/cancellable-loader.js.map +1 -1
  145. package/dist/tui/components/editor.d.ts +3 -39
  146. package/dist/tui/components/editor.d.ts.map +1 -1
  147. package/dist/tui/components/editor.js +133 -162
  148. package/dist/tui/components/editor.js.map +1 -1
  149. package/dist/tui/components/image.js +0 -8
  150. package/dist/tui/components/image.js.map +1 -1
  151. package/dist/tui/components/input.js +11 -10
  152. package/dist/tui/components/input.js.map +1 -1
  153. package/dist/tui/components/loader.js +4 -7
  154. package/dist/tui/components/loader.js.map +1 -1
  155. package/dist/tui/components/markdown.js +0 -10
  156. package/dist/tui/components/markdown.js.map +1 -1
  157. package/dist/tui/components/select-list.js +4 -8
  158. package/dist/tui/components/select-list.js.map +1 -1
  159. package/dist/tui/components/settings-list.js +4 -12
  160. package/dist/tui/components/settings-list.js.map +1 -1
  161. package/dist/tui/components/spacer.js +0 -1
  162. package/dist/tui/components/spacer.js.map +1 -1
  163. package/dist/tui/components/text.js +0 -5
  164. package/dist/tui/components/text.js.map +1 -1
  165. package/dist/tui/components/truncated-text.js +0 -3
  166. package/dist/tui/components/truncated-text.js.map +1 -1
  167. package/dist/tui/fuzzy.js +1 -4
  168. package/dist/tui/fuzzy.js.map +1 -1
  169. package/dist/tui/keybindings.js +2 -3
  170. package/dist/tui/keybindings.js.map +1 -1
  171. package/dist/tui/keys.d.ts +1 -17
  172. package/dist/tui/keys.d.ts.map +1 -1
  173. package/dist/tui/keys.js +0 -56
  174. package/dist/tui/keys.js.map +1 -1
  175. package/dist/tui/stdin-buffer.js +5 -6
  176. package/dist/tui/stdin-buffer.js.map +1 -1
  177. package/dist/tui/terminal-image.js +3 -1
  178. package/dist/tui/terminal-image.js.map +1 -1
  179. package/dist/tui/terminal.d.ts +0 -13
  180. package/dist/tui/terminal.d.ts.map +1 -1
  181. package/dist/tui/terminal.js +7 -70
  182. package/dist/tui/terminal.js.map +1 -1
  183. package/dist/tui/tui.d.ts +0 -36
  184. package/dist/tui/tui.d.ts.map +1 -1
  185. package/dist/tui/tui.js +29 -101
  186. package/dist/tui/tui.js.map +1 -1
  187. package/dist/tui/utils.js +16 -12
  188. package/dist/tui/utils.js.map +1 -1
  189. package/package.json +1 -1
  190. package/dist/agent/agent-session.d.ts +0 -352
  191. package/dist/agent/agent-session.d.ts.map +0 -1
  192. package/dist/agent/agent-session.js +0 -870
  193. package/dist/agent/agent-session.js.map +0 -1
  194. package/dist/agent/agent-session.test.d.ts +0 -5
  195. package/dist/agent/agent-session.test.d.ts.map +0 -1
  196. package/dist/agent/agent-session.test.js +0 -129
  197. package/dist/agent/agent-session.test.js.map +0 -1
  198. package/dist/agent/bash-executor.d.ts +0 -33
  199. package/dist/agent/bash-executor.d.ts.map +0 -1
  200. package/dist/agent/bash-executor.js +0 -197
  201. package/dist/agent/bash-executor.js.map +0 -1
  202. package/dist/agent/compaction/compaction.d.ts +0 -87
  203. package/dist/agent/compaction/compaction.d.ts.map +0 -1
  204. package/dist/agent/compaction/compaction.js +0 -598
  205. package/dist/agent/compaction/compaction.js.map +0 -1
  206. package/dist/agent/compaction/index.d.ts +0 -6
  207. package/dist/agent/compaction/index.d.ts.map +0 -1
  208. package/dist/agent/compaction/index.js +0 -6
  209. package/dist/agent/compaction/index.js.map +0 -1
  210. package/dist/agent/compaction/utils.d.ts +0 -41
  211. package/dist/agent/compaction/utils.d.ts.map +0 -1
  212. package/dist/agent/compaction/utils.js +0 -240
  213. package/dist/agent/compaction/utils.js.map +0 -1
  214. package/dist/agent/settings-manager.d.ts +0 -204
  215. package/dist/agent/settings-manager.d.ts.map +0 -1
  216. package/dist/agent/settings-manager.js +0 -594
  217. package/dist/agent/settings-manager.js.map +0 -1
  218. package/dist/agent/tools/edit.test.d.ts +0 -6
  219. package/dist/agent/tools/edit.test.d.ts.map +0 -1
  220. package/dist/agent/tools/edit.test.js +0 -196
  221. package/dist/agent/tools/edit.test.js.map +0 -1
  222. package/dist/ai/providers/github-copilot-headers.d.ts +0 -33
  223. package/dist/ai/providers/github-copilot-headers.d.ts.map +0 -1
  224. package/dist/ai/providers/github-copilot-headers.js +0 -51
  225. package/dist/ai/providers/github-copilot-headers.js.map +0 -1
  226. package/dist/ai/providers/mistral.d.ts +0 -22
  227. package/dist/ai/providers/mistral.d.ts.map +0 -1
  228. package/dist/ai/providers/mistral.js +0 -497
  229. package/dist/ai/providers/mistral.js.map +0 -1
  230. package/dist/ai/types.test.d.ts +0 -8
  231. package/dist/ai/types.test.d.ts.map +0 -1
  232. package/dist/ai/types.test.js +0 -389
  233. package/dist/ai/types.test.js.map +0 -1
  234. package/dist/ai/utils/hash.d.ts +0 -6
  235. package/dist/ai/utils/hash.d.ts.map +0 -1
  236. package/dist/ai/utils/hash.js +0 -17
  237. package/dist/ai/utils/hash.js.map +0 -1
  238. package/dist/tui/kill-ring.d.ts +0 -28
  239. package/dist/tui/kill-ring.d.ts.map +0 -1
  240. package/dist/tui/kill-ring.js +0 -44
  241. package/dist/tui/kill-ring.js.map +0 -1
  242. package/dist/tui/undo-stack.d.ts +0 -17
  243. package/dist/tui/undo-stack.d.ts.map +0 -1
  244. package/dist/tui/undo-stack.js +0 -25
  245. package/dist/tui/undo-stack.js.map +0 -1
@@ -1,389 +0,0 @@
1
- /**
2
- * Types Test Suite
3
- *
4
- * This test file verifies all type guards, validators, and constants
5
- * defined in the types module.
6
- */
7
- import { describe, expect, it } from "vitest";
8
- import { API_NAMES, PROVIDER_NAMES, STOP_REASONS, isTextContent, isThinkingContent, isImageContent, isToolCall, isUserMessage, isAssistantMessage, isToolResultMessage, isMessage, validateTool, validateMessage, validateContext, } from "./types.js";
9
- describe("ai/types - Constants", () => {
10
- it("exposes API_NAMES constant", () => {
11
- expect(API_NAMES).toBeDefined();
12
- expect(Array.isArray(API_NAMES)).toBe(true);
13
- expect(API_NAMES.length).toBeGreaterThan(0);
14
- expect(API_NAMES).toContain("openai-completions");
15
- expect(API_NAMES).toContain("anthropic-messages");
16
- });
17
- it("exposes PROVIDER_NAMES constant", () => {
18
- expect(PROVIDER_NAMES).toBeDefined();
19
- expect(Array.isArray(PROVIDER_NAMES)).toBe(true);
20
- expect(PROVIDER_NAMES.length).toBeGreaterThan(0);
21
- expect(PROVIDER_NAMES).toContain("openai");
22
- expect(PROVIDER_NAMES).toContain("anthropic");
23
- });
24
- it("exposes STOP_REASONS constant", () => {
25
- expect(STOP_REASONS).toBeDefined();
26
- expect(Array.isArray(STOP_REASONS)).toBe(true);
27
- expect(STOP_REASONS.length).toBe(5);
28
- expect(STOP_REASONS).toContain("stop");
29
- expect(STOP_REASONS).toContain("length");
30
- expect(STOP_REASONS).toContain("toolUse");
31
- expect(STOP_REASONS).toContain("error");
32
- expect(STOP_REASONS).toContain("aborted");
33
- });
34
- });
35
- describe("ai/types - Content Type Guards", () => {
36
- it("detects TextContent correctly", () => {
37
- const textContent = { type: "text", text: "Hello, world!" };
38
- expect(isTextContent(textContent)).toBe(true);
39
- expect(isTextContent({ type: "text", text: "" })).toBe(true);
40
- expect(isTextContent({ type: "thinking", thinking: "test" })).toBe(false);
41
- expect(isTextContent(null)).toBe(false);
42
- expect(isTextContent(undefined)).toBe(false);
43
- expect(isTextContent("string")).toBe(false);
44
- });
45
- it("detects ThinkingContent correctly", () => {
46
- const thinkingContent = { type: "thinking", thinking: "Let me think..." };
47
- expect(isThinkingContent(thinkingContent)).toBe(true);
48
- expect(isThinkingContent({ type: "thinking", thinking: "" })).toBe(true);
49
- expect(isThinkingContent({ type: "text", text: "test" })).toBe(false);
50
- expect(isThinkingContent(null)).toBe(false);
51
- });
52
- it("detects ImageContent correctly", () => {
53
- const imageContent = {
54
- type: "image",
55
- data: "base64data",
56
- mimeType: "image/png",
57
- };
58
- expect(isImageContent(imageContent)).toBe(true);
59
- expect(isImageContent({
60
- type: "image",
61
- data: "data",
62
- mimeType: "image/jpeg",
63
- })).toBe(true);
64
- expect(isImageContent({ type: "text", text: "test" })).toBe(false);
65
- expect(isImageContent(null)).toBe(false);
66
- });
67
- it("detects ToolCall correctly", () => {
68
- const toolCall = {
69
- type: "toolCall",
70
- id: "call_123",
71
- name: "bash",
72
- arguments: { command: "ls" },
73
- };
74
- expect(isToolCall(toolCall)).toBe(true);
75
- expect(isToolCall({
76
- type: "toolCall",
77
- id: "1",
78
- name: "read",
79
- arguments: {},
80
- })).toBe(true);
81
- // Missing fields should fail
82
- expect(isToolCall({
83
- type: "toolCall",
84
- id: "1",
85
- })).toBe(false);
86
- expect(isToolCall(null)).toBe(false);
87
- });
88
- });
89
- describe("ai/types - Message Type Guards", () => {
90
- it("detects UserMessage correctly", () => {
91
- const userMessage = {
92
- role: "user",
93
- content: "Hello!",
94
- timestamp: Date.now(),
95
- };
96
- expect(isUserMessage(userMessage)).toBe(true);
97
- expect(isUserMessage({
98
- role: "user",
99
- content: [{ type: "text", text: "Hi" }],
100
- timestamp: Date.now(),
101
- })).toBe(true);
102
- expect(isUserMessage({ role: "assistant", content: [], api: "x", provider: "y", model: "z", usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } }, stopReason: "stop", timestamp: Date.now() })).toBe(false);
103
- expect(isUserMessage(null)).toBe(false);
104
- });
105
- it("detects AssistantMessage correctly", () => {
106
- const assistantMessage = {
107
- role: "assistant",
108
- content: [],
109
- api: "anthropic-messages",
110
- provider: "anthropic",
111
- model: "claude-sonnet-4-20250514",
112
- usage: { input: 10, output: 20, cacheRead: 0, cacheWrite: 0, totalTokens: 30, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
113
- stopReason: "stop",
114
- timestamp: Date.now(),
115
- };
116
- expect(isAssistantMessage(assistantMessage)).toBe(true);
117
- expect(isUserMessage(assistantMessage)).toBe(false);
118
- expect(isAssistantMessage(null)).toBe(false);
119
- });
120
- it("detects ToolResultMessage correctly", () => {
121
- const toolResult = {
122
- role: "toolResult",
123
- toolCallId: "call_123",
124
- toolName: "bash",
125
- content: [{ type: "text", text: "output" }],
126
- isError: false,
127
- timestamp: Date.now(),
128
- };
129
- expect(isToolResultMessage(toolResult)).toBe(true);
130
- expect(isToolResultMessage(null)).toBe(false);
131
- });
132
- it("isMessage detects all message types correctly", () => {
133
- const userMessage = {
134
- role: "user",
135
- content: "Hello!",
136
- timestamp: Date.now(),
137
- };
138
- const assistantMessage = {
139
- role: "assistant",
140
- content: [],
141
- api: "openai-completions",
142
- provider: "openai",
143
- model: "gpt-4",
144
- usage: { input: 10, output: 20, cacheRead: 0, cacheWrite: 0, totalTokens: 30, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
145
- stopReason: "stop",
146
- timestamp: Date.now(),
147
- };
148
- const toolResult = {
149
- role: "toolResult",
150
- toolCallId: "call_123",
151
- toolName: "bash",
152
- content: [],
153
- isError: false,
154
- timestamp: Date.now(),
155
- };
156
- expect(isMessage(userMessage)).toBe(true);
157
- expect(isMessage(assistantMessage)).toBe(true);
158
- expect(isMessage(toolResult)).toBe(true);
159
- expect(isMessage({ role: "invalid" })).toBe(false);
160
- expect(isMessage(null)).toBe(false);
161
- });
162
- });
163
- describe("ai/types - Validators", () => {
164
- describe("validateTool", () => {
165
- it("accepts valid tool definitions", () => {
166
- const validTool = {
167
- name: "bash",
168
- description: "Run bash commands",
169
- parameters: { type: "object", properties: {} },
170
- };
171
- expect(() => validateTool(validTool)).not.toThrow();
172
- });
173
- it("throws on null or undefined", () => {
174
- expect(() => validateTool(null)).toThrow("Invalid tool");
175
- expect(() => validateTool(undefined)).toThrow("Invalid tool");
176
- });
177
- it("throws on non-object", () => {
178
- expect(() => validateTool("string")).toThrow("Invalid tool");
179
- expect(() => validateTool(123)).toThrow("Invalid tool");
180
- });
181
- it("throws when name is missing or invalid", () => {
182
- expect(() => validateTool({
183
- description: "test",
184
- parameters: {},
185
- })).toThrow("name is required");
186
- expect(() => validateTool({
187
- name: "",
188
- description: "test",
189
- parameters: {},
190
- })).toThrow("name is required");
191
- });
192
- it("throws when description is missing or invalid", () => {
193
- expect(() => validateTool({
194
- name: "tool",
195
- parameters: {},
196
- })).toThrow("description is required");
197
- expect(() => validateTool({
198
- name: "tool",
199
- description: "",
200
- parameters: {},
201
- })).toThrow("description is required");
202
- });
203
- it("throws when parameters are missing", () => {
204
- expect(() => validateTool({
205
- name: "tool",
206
- description: "test",
207
- })).toThrow("parameters schema is required");
208
- });
209
- });
210
- describe("validateMessage", () => {
211
- it("accepts valid user messages", () => {
212
- expect(() => validateMessage({
213
- role: "user",
214
- content: "Hello",
215
- timestamp: Date.now(),
216
- })).not.toThrow();
217
- });
218
- it("accepts valid assistant messages", () => {
219
- expect(() => validateMessage({
220
- role: "assistant",
221
- content: [],
222
- api: "anthropic-messages",
223
- provider: "anthropic",
224
- model: "claude-sonnet-4-20250514",
225
- usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
226
- stopReason: "stop",
227
- timestamp: Date.now(),
228
- })).not.toThrow();
229
- });
230
- it("accepts valid tool result messages", () => {
231
- expect(() => validateMessage({
232
- role: "toolResult",
233
- toolCallId: "call_123",
234
- toolName: "bash",
235
- content: [],
236
- isError: false,
237
- timestamp: Date.now(),
238
- })).not.toThrow();
239
- });
240
- it("throws on invalid messages", () => {
241
- expect(() => validateMessage({ role: "invalid" })).toThrow("Invalid message");
242
- expect(() => validateMessage(null)).toThrow("Invalid message");
243
- });
244
- });
245
- describe("validateContext", () => {
246
- it("accepts valid context with messages only", () => {
247
- expect(() => validateContext({
248
- messages: [{
249
- role: "user",
250
- content: "Hello",
251
- timestamp: Date.now(),
252
- }],
253
- })).not.toThrow();
254
- });
255
- it("accepts valid context with tools", () => {
256
- expect(() => validateContext({
257
- messages: [{
258
- role: "user",
259
- content: "Hello",
260
- timestamp: Date.now(),
261
- }],
262
- tools: [{
263
- name: "bash",
264
- description: "Run bash",
265
- parameters: { type: "object" },
266
- }],
267
- })).not.toThrow();
268
- });
269
- it("accepts valid context with system prompt", () => {
270
- expect(() => validateContext({
271
- systemPrompt: "You are a helpful assistant",
272
- messages: [{
273
- role: "user",
274
- content: "Hello",
275
- timestamp: Date.now(),
276
- }],
277
- })).not.toThrow();
278
- });
279
- it("throws on null or undefined", () => {
280
- expect(() => validateContext(null)).toThrow("Invalid context");
281
- expect(() => validateContext(undefined)).toThrow("Invalid context");
282
- });
283
- it("throws when messages is not an array", () => {
284
- expect(() => validateContext({
285
- messages: "not an array",
286
- })).toThrow("messages must be an array");
287
- });
288
- it("throws when tools is not an array", () => {
289
- expect(() => validateContext({
290
- messages: [],
291
- tools: "not an array",
292
- })).toThrow("tools must be an array");
293
- });
294
- it("throws when message in context is invalid", () => {
295
- expect(() => validateContext({
296
- messages: [{ role: "invalid" }],
297
- })).toThrow("Invalid message");
298
- });
299
- it("throws when tool in context is invalid", () => {
300
- expect(() => validateContext({
301
- messages: [],
302
- tools: [{ name: "invalid" }],
303
- })).toThrow("Invalid tool");
304
- });
305
- });
306
- });
307
- describe("ai/types - Integration Tests", () => {
308
- it("can validate complete workflow context", () => {
309
- const validContext = {
310
- systemPrompt: "You are Claude",
311
- messages: [
312
- { role: "user", content: "Hello!", timestamp: Date.now() },
313
- {
314
- role: "assistant",
315
- content: [{ type: "text", text: "Hi there!" }],
316
- api: "anthropic-messages",
317
- provider: "anthropic",
318
- model: "claude-sonnet-4-20250514",
319
- usage: { input: 5, output: 3, cacheRead: 0, cacheWrite: 0, totalTokens: 8, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
320
- stopReason: "stop",
321
- timestamp: Date.now(),
322
- },
323
- ],
324
- tools: [
325
- {
326
- name: "bash",
327
- description: "Run commands",
328
- parameters: { type: "object", properties: {} },
329
- },
330
- ],
331
- };
332
- expect(() => validateContext(validContext)).not.toThrow();
333
- expect(isMessage(validContext.messages[0])).toBe(true);
334
- expect(isMessage(validContext.messages[1])).toBe(true);
335
- });
336
- });
337
- describe("ai/types - Edge Cases", () => {
338
- it("handles empty content arrays", () => {
339
- const assistantMsg = {
340
- role: "assistant",
341
- content: [],
342
- api: "openai-completions",
343
- provider: "openai",
344
- model: "gpt-4",
345
- usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
346
- stopReason: "stop",
347
- timestamp: Date.now(),
348
- };
349
- expect(isAssistantMessage(assistantMsg)).toBe(true);
350
- });
351
- it("handles complex content arrays", () => {
352
- const assistantMsg = {
353
- role: "assistant",
354
- content: [
355
- { type: "thinking", thinking: "Let me think..." },
356
- { type: "text", text: "Here's the answer" },
357
- {
358
- type: "toolCall",
359
- id: "call_123",
360
- name: "bash",
361
- arguments: { command: "ls" },
362
- },
363
- ],
364
- api: "anthropic-messages",
365
- provider: "anthropic",
366
- model: "claude-sonnet-4-20250514",
367
- usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
368
- stopReason: "toolUse",
369
- timestamp: Date.now(),
370
- };
371
- expect(isAssistantMessage(assistantMsg)).toBe(true);
372
- expect(isThinkingContent(assistantMsg.content[0])).toBe(true);
373
- expect(isTextContent(assistantMsg.content[1])).toBe(true);
374
- expect(isToolCall(assistantMsg.content[2])).toBe(true);
375
- });
376
- it("handles all stop reason values", () => {
377
- const stopReasons = [
378
- "stop",
379
- "length",
380
- "toolUse",
381
- "error",
382
- "aborted",
383
- ];
384
- stopReasons.forEach((reason) => {
385
- expect(STOP_REASONS).toContain(reason);
386
- });
387
- });
388
- });
389
- //# sourceMappingURL=types.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/ai/types.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Fast deterministic hash to shorten long strings
3
- * Used for generating short, deterministic identifiers for caching, deduplication, or conversation IDs.
4
- */
5
- export declare function shortHash(str: string): string;
6
- //# sourceMappingURL=hash.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/ai/utils/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW7C"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Fast deterministic hash to shorten long strings
3
- * Used for generating short, deterministic identifiers for caching, deduplication, or conversation IDs.
4
- */
5
- export function shortHash(str) {
6
- let h1 = 0xdeadbeef;
7
- let h2 = 0x41c6ce57;
8
- for (let i = 0; i < str.length; i++) {
9
- const ch = str.charCodeAt(i);
10
- h1 = Math.imul(h1 ^ ch, 2654435761);
11
- h2 = Math.imul(h2 ^ ch, 1597334677);
12
- }
13
- h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
14
- h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
15
- return (h2 >>> 0).toString(36) + (h1 >>> 0).toString(36);
16
- }
17
- //# sourceMappingURL=hash.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/ai/utils/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACpC,IAAI,EAAE,GAAG,UAAU,CAAC;IACpB,IAAI,EAAE,GAAG,UAAU,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7B,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QACpC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACvF,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACvF,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Ring buffer for Emacs-style kill/yank operations.
3
- *
4
- * Tracks killed (deleted) text entries. Consecutive kills can accumulate
5
- * into a single entry. Supports yank (paste most recent) and yank-pop
6
- * (cycle through older entries).
7
- */
8
- export declare class KillRing {
9
- private ring;
10
- /**
11
- * Add text to the kill ring.
12
- *
13
- * @param text - The killed text to add
14
- * @param opts - Push options
15
- * @param opts.prepend - If accumulating, prepend (backward deletion) or append (forward deletion)
16
- * @param opts.accumulate - Merge with the most recent entry instead of creating a new one
17
- */
18
- push(text: string, opts: {
19
- prepend: boolean;
20
- accumulate?: boolean;
21
- }): void;
22
- /** Get most recent entry without modifying the ring. */
23
- peek(): string | undefined;
24
- /** Move last entry to front (for yank-pop cycling). */
25
- rotate(): void;
26
- get length(): number;
27
- }
28
- //# sourceMappingURL=kill-ring.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kill-ring.d.ts","sourceRoot":"","sources":["../../src/tui/kill-ring.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,QAAQ;IACpB,OAAO,CAAC,IAAI,CAAgB;IAE5B;;;;;;;OAOG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAW1E,wDAAwD;IACxD,IAAI,IAAI,MAAM,GAAG,SAAS;IAI1B,uDAAuD;IACvD,MAAM,IAAI,IAAI;IAOd,IAAI,MAAM,IAAI,MAAM,CAEnB;CACD"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Ring buffer for Emacs-style kill/yank operations.
3
- *
4
- * Tracks killed (deleted) text entries. Consecutive kills can accumulate
5
- * into a single entry. Supports yank (paste most recent) and yank-pop
6
- * (cycle through older entries).
7
- */
8
- export class KillRing {
9
- ring = [];
10
- /**
11
- * Add text to the kill ring.
12
- *
13
- * @param text - The killed text to add
14
- * @param opts - Push options
15
- * @param opts.prepend - If accumulating, prepend (backward deletion) or append (forward deletion)
16
- * @param opts.accumulate - Merge with the most recent entry instead of creating a new one
17
- */
18
- push(text, opts) {
19
- if (!text)
20
- return;
21
- if (opts.accumulate && this.ring.length > 0) {
22
- const last = this.ring.pop();
23
- this.ring.push(opts.prepend ? text + last : last + text);
24
- }
25
- else {
26
- this.ring.push(text);
27
- }
28
- }
29
- /** Get most recent entry without modifying the ring. */
30
- peek() {
31
- return this.ring.length > 0 ? this.ring[this.ring.length - 1] : undefined;
32
- }
33
- /** Move last entry to front (for yank-pop cycling). */
34
- rotate() {
35
- if (this.ring.length > 1) {
36
- const last = this.ring.pop();
37
- this.ring.unshift(last);
38
- }
39
- }
40
- get length() {
41
- return this.ring.length;
42
- }
43
- }
44
- //# sourceMappingURL=kill-ring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kill-ring.js","sourceRoot":"","sources":["../../src/tui/kill-ring.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,QAAQ;IACZ,IAAI,GAAa,EAAE,CAAC;IAE5B;;;;;;;OAOG;IACH,IAAI,CAAC,IAAY,EAAE,IAAgD;QAClE,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IAED,wDAAwD;IACxD,IAAI;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAED,uDAAuD;IACvD,MAAM;QACL,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACzB,CAAC;CACD"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Generic undo stack with clone-on-push semantics.
3
- *
4
- * Stores deep clones of state snapshots. Popped snapshots are returned
5
- * directly (no re-cloning) since they are already detached.
6
- */
7
- export declare class UndoStack<S> {
8
- private stack;
9
- /** Push a deep clone of the given state onto the stack. */
10
- push(state: S): void;
11
- /** Pop and return the most recent snapshot, or undefined if empty. */
12
- pop(): S | undefined;
13
- /** Remove all snapshots. */
14
- clear(): void;
15
- get length(): number;
16
- }
17
- //# sourceMappingURL=undo-stack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"undo-stack.d.ts","sourceRoot":"","sources":["../../src/tui/undo-stack.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,CAAW;IAExB,2DAA2D;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAIpB,sEAAsE;IACtE,GAAG,IAAI,CAAC,GAAG,SAAS;IAIpB,4BAA4B;IAC5B,KAAK,IAAI,IAAI;IAIb,IAAI,MAAM,IAAI,MAAM,CAEnB;CACD"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Generic undo stack with clone-on-push semantics.
3
- *
4
- * Stores deep clones of state snapshots. Popped snapshots are returned
5
- * directly (no re-cloning) since they are already detached.
6
- */
7
- export class UndoStack {
8
- stack = [];
9
- /** Push a deep clone of the given state onto the stack. */
10
- push(state) {
11
- this.stack.push(structuredClone(state));
12
- }
13
- /** Pop and return the most recent snapshot, or undefined if empty. */
14
- pop() {
15
- return this.stack.pop();
16
- }
17
- /** Remove all snapshots. */
18
- clear() {
19
- this.stack.length = 0;
20
- }
21
- get length() {
22
- return this.stack.length;
23
- }
24
- }
25
- //# sourceMappingURL=undo-stack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"undo-stack.js","sourceRoot":"","sources":["../../src/tui/undo-stack.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,SAAS;IACb,KAAK,GAAQ,EAAE,CAAC;IAExB,2DAA2D;IAC3D,IAAI,CAAC,KAAQ;QACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,sEAAsE;IACtE,GAAG;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,4BAA4B;IAC5B,KAAK;QACJ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC1B,CAAC;CACD"}