wave-agent-sdk 0.0.6 → 0.0.8

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 (180) hide show
  1. package/dist/agent.d.ts +32 -20
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +209 -24
  4. package/dist/constants/events.d.ts +28 -0
  5. package/dist/constants/events.d.ts.map +1 -0
  6. package/dist/constants/events.js +27 -0
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +2 -0
  10. package/dist/managers/aiManager.d.ts +34 -1
  11. package/dist/managers/aiManager.d.ts.map +1 -1
  12. package/dist/managers/aiManager.js +248 -132
  13. package/dist/managers/backgroundBashManager.d.ts.map +1 -1
  14. package/dist/managers/backgroundBashManager.js +7 -6
  15. package/dist/managers/hookManager.d.ts +13 -16
  16. package/dist/managers/hookManager.d.ts.map +1 -1
  17. package/dist/managers/hookManager.js +81 -44
  18. package/dist/managers/liveConfigManager.d.ts +58 -0
  19. package/dist/managers/liveConfigManager.d.ts.map +1 -0
  20. package/dist/managers/liveConfigManager.js +160 -0
  21. package/dist/managers/messageManager.d.ts +41 -24
  22. package/dist/managers/messageManager.d.ts.map +1 -1
  23. package/dist/managers/messageManager.js +168 -49
  24. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  25. package/dist/managers/slashCommandManager.js +9 -3
  26. package/dist/managers/subagentManager.d.ts +51 -0
  27. package/dist/managers/subagentManager.d.ts.map +1 -1
  28. package/dist/managers/subagentManager.js +190 -19
  29. package/dist/services/aiService.d.ts +13 -5
  30. package/dist/services/aiService.d.ts.map +1 -1
  31. package/dist/services/aiService.js +350 -74
  32. package/dist/services/configurationWatcher.d.ts +120 -0
  33. package/dist/services/configurationWatcher.d.ts.map +1 -0
  34. package/dist/services/configurationWatcher.js +439 -0
  35. package/dist/services/fileWatcher.d.ts +69 -0
  36. package/dist/services/fileWatcher.d.ts.map +1 -0
  37. package/dist/services/fileWatcher.js +213 -0
  38. package/dist/services/hook.d.ts +91 -9
  39. package/dist/services/hook.d.ts.map +1 -1
  40. package/dist/services/hook.js +393 -43
  41. package/dist/services/jsonlHandler.d.ts +62 -0
  42. package/dist/services/jsonlHandler.d.ts.map +1 -0
  43. package/dist/services/jsonlHandler.js +257 -0
  44. package/dist/services/memory.d.ts +9 -0
  45. package/dist/services/memory.d.ts.map +1 -1
  46. package/dist/services/memory.js +81 -12
  47. package/dist/services/memoryStore.d.ts +81 -0
  48. package/dist/services/memoryStore.d.ts.map +1 -0
  49. package/dist/services/memoryStore.js +200 -0
  50. package/dist/services/session.d.ts +64 -49
  51. package/dist/services/session.d.ts.map +1 -1
  52. package/dist/services/session.js +310 -132
  53. package/dist/tools/bashTool.d.ts.map +1 -1
  54. package/dist/tools/bashTool.js +5 -4
  55. package/dist/tools/deleteFileTool.d.ts.map +1 -1
  56. package/dist/tools/deleteFileTool.js +2 -1
  57. package/dist/tools/editTool.d.ts.map +1 -1
  58. package/dist/tools/editTool.js +3 -2
  59. package/dist/tools/multiEditTool.d.ts.map +1 -1
  60. package/dist/tools/multiEditTool.js +4 -3
  61. package/dist/tools/readTool.d.ts.map +1 -1
  62. package/dist/tools/readTool.js +2 -1
  63. package/dist/tools/todoWriteTool.d.ts.map +1 -1
  64. package/dist/tools/todoWriteTool.js +3 -10
  65. package/dist/tools/writeTool.d.ts.map +1 -1
  66. package/dist/tools/writeTool.js +5 -6
  67. package/dist/types/commands.d.ts +4 -0
  68. package/dist/types/commands.d.ts.map +1 -1
  69. package/dist/types/core.d.ts +35 -0
  70. package/dist/types/core.d.ts.map +1 -1
  71. package/dist/types/environment.d.ts +42 -0
  72. package/dist/types/environment.d.ts.map +1 -0
  73. package/dist/types/environment.js +21 -0
  74. package/dist/types/hooks.d.ts +8 -2
  75. package/dist/types/hooks.d.ts.map +1 -1
  76. package/dist/types/hooks.js +8 -2
  77. package/dist/types/index.d.ts +2 -0
  78. package/dist/types/index.d.ts.map +1 -1
  79. package/dist/types/index.js +2 -0
  80. package/dist/types/memoryStore.d.ts +82 -0
  81. package/dist/types/memoryStore.d.ts.map +1 -0
  82. package/dist/types/memoryStore.js +7 -0
  83. package/dist/types/messaging.d.ts +21 -9
  84. package/dist/types/messaging.d.ts.map +1 -1
  85. package/dist/types/messaging.js +5 -1
  86. package/dist/types/session.d.ts +20 -0
  87. package/dist/types/session.d.ts.map +1 -0
  88. package/dist/types/session.js +7 -0
  89. package/dist/utils/bashHistory.d.ts.map +1 -1
  90. package/dist/utils/bashHistory.js +27 -26
  91. package/dist/utils/cacheControlUtils.d.ts +121 -0
  92. package/dist/utils/cacheControlUtils.d.ts.map +1 -0
  93. package/dist/utils/cacheControlUtils.js +367 -0
  94. package/dist/utils/commandPathResolver.d.ts +52 -0
  95. package/dist/utils/commandPathResolver.d.ts.map +1 -0
  96. package/dist/utils/commandPathResolver.js +145 -0
  97. package/dist/utils/configPaths.d.ts +85 -0
  98. package/dist/utils/configPaths.d.ts.map +1 -0
  99. package/dist/utils/configPaths.js +121 -0
  100. package/dist/utils/configResolver.d.ts +37 -10
  101. package/dist/utils/configResolver.d.ts.map +1 -1
  102. package/dist/utils/configResolver.js +127 -23
  103. package/dist/utils/constants.d.ts +1 -1
  104. package/dist/utils/constants.js +1 -1
  105. package/dist/utils/convertMessagesForAPI.d.ts.map +1 -1
  106. package/dist/utils/convertMessagesForAPI.js +8 -13
  107. package/dist/utils/customCommands.d.ts.map +1 -1
  108. package/dist/utils/customCommands.js +66 -21
  109. package/dist/utils/fileUtils.d.ts +15 -0
  110. package/dist/utils/fileUtils.d.ts.map +1 -0
  111. package/dist/utils/fileUtils.js +61 -0
  112. package/dist/utils/globalLogger.d.ts +102 -0
  113. package/dist/utils/globalLogger.d.ts.map +1 -0
  114. package/dist/utils/globalLogger.js +136 -0
  115. package/dist/utils/hookMatcher.d.ts +1 -6
  116. package/dist/utils/hookMatcher.d.ts.map +1 -1
  117. package/dist/utils/mcpUtils.d.ts.map +1 -1
  118. package/dist/utils/mcpUtils.js +25 -3
  119. package/dist/utils/messageOperations.d.ts +27 -27
  120. package/dist/utils/messageOperations.d.ts.map +1 -1
  121. package/dist/utils/messageOperations.js +46 -36
  122. package/dist/utils/pathEncoder.d.ts +104 -0
  123. package/dist/utils/pathEncoder.d.ts.map +1 -0
  124. package/dist/utils/pathEncoder.js +272 -0
  125. package/dist/utils/subagentParser.d.ts.map +1 -1
  126. package/dist/utils/subagentParser.js +2 -1
  127. package/dist/utils/tokenCalculation.d.ts +26 -0
  128. package/dist/utils/tokenCalculation.d.ts.map +1 -0
  129. package/dist/utils/tokenCalculation.js +36 -0
  130. package/package.json +6 -3
  131. package/src/agent.ts +301 -37
  132. package/src/constants/events.ts +38 -0
  133. package/src/index.ts +2 -0
  134. package/src/managers/aiManager.ts +325 -173
  135. package/src/managers/backgroundBashManager.ts +7 -6
  136. package/src/managers/hookManager.ts +106 -84
  137. package/src/managers/liveConfigManager.ts +248 -0
  138. package/src/managers/messageManager.ts +237 -100
  139. package/src/managers/slashCommandManager.ts +9 -7
  140. package/src/managers/subagentManager.ts +284 -22
  141. package/src/services/aiService.ts +474 -83
  142. package/src/services/configurationWatcher.ts +622 -0
  143. package/src/services/fileWatcher.ts +301 -0
  144. package/src/services/hook.ts +538 -47
  145. package/src/services/jsonlHandler.ts +319 -0
  146. package/src/services/memory.ts +92 -12
  147. package/src/services/memoryStore.ts +279 -0
  148. package/src/services/session.ts +381 -157
  149. package/src/tools/bashTool.ts +5 -4
  150. package/src/tools/deleteFileTool.ts +2 -1
  151. package/src/tools/editTool.ts +3 -2
  152. package/src/tools/multiEditTool.ts +4 -3
  153. package/src/tools/readTool.ts +2 -1
  154. package/src/tools/todoWriteTool.ts +3 -11
  155. package/src/tools/writeTool.ts +7 -6
  156. package/src/types/commands.ts +6 -0
  157. package/src/types/core.ts +44 -0
  158. package/src/types/environment.ts +60 -0
  159. package/src/types/hooks.ts +21 -8
  160. package/src/types/index.ts +2 -0
  161. package/src/types/memoryStore.ts +94 -0
  162. package/src/types/messaging.ts +21 -10
  163. package/src/types/session.ts +25 -0
  164. package/src/utils/bashHistory.ts +27 -27
  165. package/src/utils/cacheControlUtils.ts +540 -0
  166. package/src/utils/commandPathResolver.ts +189 -0
  167. package/src/utils/configPaths.ts +163 -0
  168. package/src/utils/configResolver.ts +182 -22
  169. package/src/utils/constants.ts +1 -1
  170. package/src/utils/convertMessagesForAPI.ts +8 -14
  171. package/src/utils/customCommands.ts +90 -22
  172. package/src/utils/fileUtils.ts +65 -0
  173. package/src/utils/globalLogger.ts +145 -0
  174. package/src/utils/hookMatcher.ts +1 -12
  175. package/src/utils/mcpUtils.ts +34 -3
  176. package/src/utils/messageOperations.ts +77 -60
  177. package/src/utils/pathEncoder.ts +379 -0
  178. package/src/utils/subagentParser.ts +2 -1
  179. package/src/utils/tokenCalculation.ts +43 -0
  180. package/src/types/index.ts.backup +0 -357
@@ -1,18 +1,18 @@
1
1
  import type { Message, Usage } from "../types/index.js";
2
+ import { MessageSource } from "../types/index.js";
3
+ import type { SubagentConfiguration } from "./subagentParser.js";
2
4
  import { ChatCompletionMessageFunctionToolCall } from "openai/resources.js";
3
- export interface AddUserMessageParams {
4
- messages: Message[];
5
+ export interface UserMessageParams {
5
6
  content: string;
6
7
  images?: Array<{
7
8
  path: string;
8
9
  mimeType: string;
9
10
  }>;
10
- customCommandBlock?: {
11
- type: "custom_command";
12
- commandName: string;
13
- content: string;
14
- originalInput?: string;
15
- };
11
+ customCommandContent?: string;
12
+ source?: MessageSource;
13
+ }
14
+ export interface AddUserMessageParams extends UserMessageParams {
15
+ messages: Message[];
16
16
  }
17
17
  export interface UpdateToolBlockParams {
18
18
  messages: Message[];
@@ -21,7 +21,14 @@ export interface UpdateToolBlockParams {
21
21
  result?: string;
22
22
  success?: boolean;
23
23
  error?: string;
24
- isRunning?: boolean;
24
+ /**
25
+ * Tool execution stage:
26
+ * - 'start': Tool call initiated during AI streaming
27
+ * - 'streaming': Tool parameters being received incrementally
28
+ * - 'running': Tool execution in progress
29
+ * - 'end': Tool execution completed with final result
30
+ */
31
+ stage: "start" | "streaming" | "running" | "end";
25
32
  name?: string;
26
33
  shortResult?: string;
27
34
  images?: Array<{
@@ -29,18 +36,9 @@ export interface UpdateToolBlockParams {
29
36
  mediaType?: string;
30
37
  }>;
31
38
  compactParams?: string;
39
+ parametersChunk?: string;
32
40
  }
33
- export interface AgentToolBlockUpdateParams {
34
- toolId: string;
35
- args?: string;
36
- result?: string;
37
- success?: boolean;
38
- error?: string;
39
- isRunning?: boolean;
40
- name?: string;
41
- shortResult?: string;
42
- compactParams?: string;
43
- }
41
+ export type AgentToolBlockUpdateParams = Omit<UpdateToolBlockParams, "messages">;
44
42
  export interface AddDiffBlockParams {
45
43
  messages: Message[];
46
44
  path: string;
@@ -77,6 +75,7 @@ export interface CompleteCommandParams {
77
75
  }
78
76
  /**
79
77
  * Extract text content from user messages in the messages array
78
+ * Excludes messages with source HOOK to prevent hook-generated content from entering user history
80
79
  */
81
80
  export declare const extractUserInputHistory: (messages: Message[]) => string[];
82
81
  /**
@@ -85,10 +84,10 @@ export declare const extractUserInputHistory: (messages: Message[]) => string[];
85
84
  * @returns base64 format image data URL
86
85
  */
87
86
  export declare const convertImageToBase64: (imagePath: string) => string;
88
- export declare const addUserMessageToMessages: ({ messages, content, images, customCommandBlock, }: AddUserMessageParams) => Message[];
89
- export declare const addAssistantMessageToMessages: (messages: Message[], content?: string, toolCalls?: ChatCompletionMessageFunctionToolCall[], usage?: Usage) => Message[];
87
+ export declare const addUserMessageToMessages: ({ messages, content, images, customCommandContent, source, }: AddUserMessageParams) => Message[];
88
+ export declare const addAssistantMessageToMessages: (messages: Message[], content?: string, toolCalls?: ChatCompletionMessageFunctionToolCall[], usage?: Usage, metadata?: Record<string, unknown>) => Message[];
90
89
  export declare const addDiffBlockToMessage: ({ messages, path, diffResult, }: AddDiffBlockParams) => Message[];
91
- export declare const updateToolBlockInMessage: ({ messages, id, parameters, result, success, error, isRunning, name, shortResult, images, compactParams, }: UpdateToolBlockParams) => Message[];
90
+ export declare const updateToolBlockInMessage: ({ messages, id, parameters, result, success, error, stage, name, shortResult, images, compactParams, parametersChunk, }: UpdateToolBlockParams) => Message[];
92
91
  export declare const addErrorBlockToMessage: ({ messages, error, }: AddErrorBlockParams) => Message[];
93
92
  export declare const addMemoryBlockToMessage: ({ messages, content, isSuccess, memoryType, storagePath, }: AddMemoryBlockParams) => Message[];
94
93
  /**
@@ -120,18 +119,19 @@ export interface AddSubagentBlockParams {
120
119
  subagentId: string;
121
120
  subagentName: string;
122
121
  status: "active" | "completed" | "error" | "aborted";
123
- subagentMessages?: Message[];
122
+ sessionId: string;
123
+ configuration: SubagentConfiguration;
124
124
  }
125
125
  export interface UpdateSubagentBlockParams {
126
126
  messages: Message[];
127
127
  subagentId: string;
128
128
  status: "active" | "completed" | "error" | "aborted";
129
- subagentMessages: Message[];
129
+ sessionId?: string;
130
130
  }
131
- export declare const addSubagentBlockToMessage: ({ messages, subagentId, subagentName, status, subagentMessages, }: AddSubagentBlockParams) => Message[];
131
+ export declare const addSubagentBlockToMessage: ({ messages, subagentId, subagentName, status, sessionId, configuration, }: AddSubagentBlockParams) => Message[];
132
132
  export declare const updateSubagentBlockInMessage: (messages: Message[], subagentId: string, updates: Partial<{
133
133
  status: "active" | "completed" | "error" | "aborted";
134
- messages: Message[];
134
+ sessionId: string;
135
135
  }>) => Message[];
136
136
  /**
137
137
  * Removes the last user message from the messages array
@@ -1 +1 @@
1
- {"version":3,"file":"messageOperations.d.ts","sourceRoot":"","sources":["../../src/utils/messageOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageOperations.d.ts","sourceRoot":"","sources":["../../src/utils/messageOperations.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,17 @@
1
+ import { MessageSource } from "../types/index.js";
1
2
  import { readFileSync } from "fs";
2
3
  import { extname } from "path";
4
+ import { logger } from "./globalLogger.js";
3
5
  /**
4
6
  * Extract text content from user messages in the messages array
7
+ * Excludes messages with source HOOK to prevent hook-generated content from entering user history
5
8
  */
6
9
  export const extractUserInputHistory = (messages) => {
7
10
  return messages
8
11
  .filter((message) => message.role === "user")
9
12
  .map((message) => {
10
- // Extract all text block content and merge
11
- const textBlocks = message.blocks.filter((block) => block.type === "text");
13
+ // Extract text block content, excluding HOOK-sourced blocks
14
+ const textBlocks = message.blocks.filter((block) => block.type === "text" && block.source !== MessageSource.HOOK);
12
15
  return textBlocks
13
16
  .map((block) => block.content)
14
17
  .join(" ")
@@ -50,22 +53,23 @@ export const convertImageToBase64 = (imagePath) => {
50
53
  const base64String = imageBuffer.toString("base64");
51
54
  return `data:${mimeType};base64,${base64String}`;
52
55
  }
53
- catch {
54
- // logger.error(`Failed to convert image to base64: ${imagePath}`, error);
56
+ catch (error) {
57
+ logger.error(`Failed to convert image to base64: ${imagePath}`, error);
55
58
  // Return an error placeholder or throw error
56
59
  return `data:image/png;base64,`; // Empty base64, avoid program crash
57
60
  }
58
61
  };
59
62
  // Add user message
60
- export const addUserMessageToMessages = ({ messages, content, images, customCommandBlock, }) => {
63
+ export const addUserMessageToMessages = ({ messages, content, images, customCommandContent, source, }) => {
61
64
  const blocks = [];
62
- // If there's a custom command block, use it instead of text content
63
- if (customCommandBlock) {
64
- blocks.push(customCommandBlock);
65
- }
66
- else {
67
- blocks.push({ type: "text", content });
68
- }
65
+ // Create text block with optional customCommandContent and source
66
+ const textBlock = {
67
+ type: "text",
68
+ content,
69
+ ...(customCommandContent && { customCommandContent }),
70
+ ...(source && { source }),
71
+ };
72
+ blocks.push(textBlock);
69
73
  // If there are images, add image block
70
74
  if (images && images.length > 0) {
71
75
  const imageUrls = images.map((img) => img.path);
@@ -81,7 +85,7 @@ export const addUserMessageToMessages = ({ messages, content, images, customComm
81
85
  return [...messages, userMessage];
82
86
  };
83
87
  // Add assistant message (support one-time addition of answer and tool calls)
84
- export const addAssistantMessageToMessages = (messages, content, toolCalls, usage) => {
88
+ export const addAssistantMessageToMessages = (messages, content, toolCalls, usage, metadata) => {
85
89
  const blocks = [];
86
90
  // If there's answer content, add text block
87
91
  if (content) {
@@ -96,7 +100,7 @@ export const addAssistantMessageToMessages = (messages, content, toolCalls, usag
96
100
  result: "",
97
101
  id: toolCall.id || "",
98
102
  name: toolCall.function?.name || "",
99
- isRunning: false,
103
+ stage: "start",
100
104
  });
101
105
  });
102
106
  }
@@ -104,6 +108,7 @@ export const addAssistantMessageToMessages = (messages, content, toolCalls, usag
104
108
  role: "assistant",
105
109
  blocks,
106
110
  usage, // Include usage data if provided
111
+ ...(metadata ? { metadata: { ...metadata } } : {}),
107
112
  };
108
113
  return [...messages, initialAssistantMessage];
109
114
  };
@@ -125,7 +130,7 @@ export const addDiffBlockToMessage = ({ messages, path, diffResult, }) => {
125
130
  return newMessages;
126
131
  };
127
132
  // Update Tool Block of the last assistant message
128
- export const updateToolBlockInMessage = ({ messages, id, parameters, result, success, error, isRunning, name, shortResult, images, compactParams, }) => {
133
+ export const updateToolBlockInMessage = ({ messages, id, parameters, result, success, error, stage, name, shortResult, images, compactParams, parametersChunk, }) => {
129
134
  const newMessages = [...messages];
130
135
  // Find the last assistant message
131
136
  for (let i = newMessages.length - 1; i >= 0; i--) {
@@ -144,26 +149,30 @@ export const updateToolBlockInMessage = ({ messages, id, parameters, result, suc
144
149
  toolBlock.success = success;
145
150
  if (error !== undefined)
146
151
  toolBlock.error = error;
147
- if (isRunning !== undefined)
148
- toolBlock.isRunning = isRunning;
152
+ if (stage !== undefined)
153
+ toolBlock.stage = stage;
149
154
  if (compactParams !== undefined)
150
155
  toolBlock.compactParams = compactParams;
156
+ if (parametersChunk !== undefined)
157
+ toolBlock.parametersChunk = parametersChunk;
151
158
  }
152
159
  }
153
- else if (result !== undefined) {
160
+ else {
154
161
  // If existing block not found, create new one
162
+ // This handles cases where we're streaming tool parameters before execution
155
163
  newMessages[i].blocks.push({
156
164
  type: "tool",
157
165
  parameters: parameters,
158
- result: result,
166
+ result: result || "",
159
167
  shortResult: shortResult,
160
168
  images: images, // Add image data
161
169
  id: id,
162
170
  name: name || "unknown",
163
171
  success: success,
164
172
  error: error,
165
- isRunning: isRunning ?? false,
173
+ stage: stage ?? "start",
166
174
  compactParams: compactParams,
175
+ parametersChunk: parametersChunk,
167
176
  });
168
177
  }
169
178
  break;
@@ -174,23 +183,23 @@ export const updateToolBlockInMessage = ({ messages, id, parameters, result, suc
174
183
  // Add Error Block to the last assistant message
175
184
  export const addErrorBlockToMessage = ({ messages, error, }) => {
176
185
  const newMessages = [...messages];
177
- // Find the last assistant message
178
- let assistantMessageFound = false;
179
- for (let i = newMessages.length - 1; i >= 0; i--) {
180
- if (newMessages[i].role === "assistant") {
181
- newMessages[i].blocks = [
182
- ...newMessages[i].blocks,
186
+ // Check if the last message is an assistant message
187
+ const lastMessage = newMessages[newMessages.length - 1];
188
+ if (lastMessage && lastMessage.role === "assistant") {
189
+ // Create a new message object with the error block added
190
+ newMessages[newMessages.length - 1] = {
191
+ ...lastMessage,
192
+ blocks: [
193
+ ...lastMessage.blocks,
183
194
  {
184
195
  type: "error",
185
196
  content: error,
186
197
  },
187
- ];
188
- assistantMessageFound = true;
189
- break;
190
- }
198
+ ],
199
+ };
191
200
  }
192
- // If no assistant message found, create a new assistant message with only error block
193
- if (!assistantMessageFound) {
201
+ else {
202
+ // If the last message is not an assistant message, create a new assistant message
194
203
  newMessages.push({
195
204
  role: "assistant",
196
205
  blocks: [
@@ -333,7 +342,7 @@ export const completeCommandInMessage = ({ messages, command, exitCode, }) => {
333
342
  }
334
343
  return newMessages;
335
344
  };
336
- export const addSubagentBlockToMessage = ({ messages, subagentId, subagentName, status, subagentMessages = [], }) => {
345
+ export const addSubagentBlockToMessage = ({ messages, subagentId, subagentName, status, sessionId, configuration, }) => {
337
346
  const newMessages = [...messages];
338
347
  // Find the last assistant message or create one
339
348
  let lastAssistantMessage = newMessages[newMessages.length - 1];
@@ -351,7 +360,8 @@ export const addSubagentBlockToMessage = ({ messages, subagentId, subagentName,
351
360
  subagentId,
352
361
  subagentName,
353
362
  status,
354
- messages: subagentMessages,
363
+ sessionId,
364
+ configuration,
355
365
  });
356
366
  return newMessages;
357
367
  };
@@ -366,8 +376,8 @@ export const updateSubagentBlockInMessage = (messages, subagentId, updates) => {
366
376
  if (updates.status !== undefined) {
367
377
  block.status = updates.status;
368
378
  }
369
- if (updates.messages !== undefined) {
370
- block.messages = updates.messages;
379
+ if (updates.sessionId !== undefined) {
380
+ block.sessionId = updates.sessionId;
371
381
  }
372
382
  return newMessages;
373
383
  }
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Path encoding utility for converting working directory paths to filesystem-safe names
3
+ * Handles cross-platform directory name encoding for project-based session organization
4
+ */
5
+ /**
6
+ * Project directory information
7
+ */
8
+ export interface ProjectDirectory {
9
+ readonly originalPath: string;
10
+ readonly encodedName: string;
11
+ readonly encodedPath: string;
12
+ readonly pathHash?: string;
13
+ readonly isSymbolicLink: boolean;
14
+ }
15
+ /**
16
+ * Path encoding configuration options
17
+ */
18
+ export interface PathEncodingOptions {
19
+ maxLength?: number;
20
+ pathSeparatorReplacement?: string;
21
+ spaceReplacement?: string;
22
+ invalidCharReplacement?: string;
23
+ preserveCase?: boolean;
24
+ hashLength?: number;
25
+ }
26
+ /**
27
+ * Platform-specific filesystem constraints
28
+ */
29
+ export interface FilesystemConstraints {
30
+ readonly maxDirectoryNameLength: number;
31
+ readonly maxPathLength: number;
32
+ readonly invalidCharacters: string[];
33
+ readonly reservedNames: string[];
34
+ readonly caseSensitive: boolean;
35
+ }
36
+ /**
37
+ * Path validation result
38
+ */
39
+ export interface PathValidationResult {
40
+ readonly isValid: boolean;
41
+ readonly errors: string[];
42
+ readonly warnings: string[];
43
+ readonly suggestedFix?: string;
44
+ }
45
+ /**
46
+ * PathEncoder class for converting working directory paths to filesystem-safe names
47
+ */
48
+ export declare class PathEncoder {
49
+ private readonly options;
50
+ private readonly constraints;
51
+ constructor(options?: PathEncodingOptions);
52
+ /**
53
+ * Encode a working directory path to a filesystem-safe directory name
54
+ */
55
+ encode(originalPath: string): Promise<string>;
56
+ /**
57
+ * Synchronously encode a path to a filesystem-safe directory name
58
+ * Note: Does not resolve symbolic links - use encode() for full path resolution
59
+ */
60
+ encodeSync(pathToEncode: string): string;
61
+ /**
62
+ * Decode an encoded directory name back to original path (limited functionality)
63
+ * Note: This is best-effort as encoding is lossy
64
+ */
65
+ decode(encodedName: string): Promise<string | null>;
66
+ /**
67
+ * Synchronously decode an encoded directory name back to original path (limited functionality)
68
+ * Note: This is best-effort as encoding is lossy
69
+ */
70
+ decodeSync(encodedName: string): string | null;
71
+ /**
72
+ * Resolve symbolic links and normalize path before encoding
73
+ */
74
+ resolvePath(path: string): Promise<string>;
75
+ /**
76
+ * Create project directory entity from original path
77
+ */
78
+ createProjectDirectory(originalPath: string, baseSessionDir: string): Promise<ProjectDirectory>;
79
+ /**
80
+ * Validate that an encoded name is filesystem-safe
81
+ */
82
+ validateEncodedName(encodedName: string): boolean;
83
+ /**
84
+ * Handle encoding collisions by generating unique names
85
+ */
86
+ resolveCollision(baseName: string, existingNames: Set<string>): string;
87
+ /**
88
+ * Get platform-specific filesystem constraints
89
+ */
90
+ private getFilesystemConstraints;
91
+ /**
92
+ * Generate hash for collision resolution
93
+ */
94
+ private generateHash;
95
+ /**
96
+ * Expand tilde (~) to home directory
97
+ */
98
+ private expandTilde;
99
+ }
100
+ /**
101
+ * Default PathEncoder instance
102
+ */
103
+ export declare const pathEncoder: PathEncoder;
104
+ //# sourceMappingURL=pathEncoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/pathEncoder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;gBAExC,OAAO,GAAE,mBAAwB;IAY7C;;OAEG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnD;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAyCxC;;;OAGG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIzD;;;OAGG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgC9C;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBhD;;OAEG;IACG,sBAAsB,CAC1B,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,gBAAgB,CAAC;IA0C5B;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IA+BjD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM;IAqBtE;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAsDhC;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,WAAW;CAMpB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC"}