wave-agent-sdk 0.11.6 → 0.12.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.
- package/builtin/skills/init/SKILL.md +2 -0
- package/builtin/skills/settings/MODELS.md +67 -0
- package/builtin/skills/settings/SKILL.md +13 -7
- package/builtin/skills/settings/SKILLS.md +3 -2
- package/builtin/skills/settings/SUBAGENTS.md +1 -3
- package/dist/agent.d.ts +16 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +34 -2
- package/dist/constants/tools.d.ts +1 -1
- package/dist/constants/tools.d.ts.map +1 -1
- package/dist/constants/tools.js +1 -1
- package/dist/managers/MemoryRuleManager.d.ts.map +1 -1
- package/dist/managers/MemoryRuleManager.js +1 -9
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +23 -3
- package/dist/managers/liveConfigManager.d.ts +2 -0
- package/dist/managers/liveConfigManager.d.ts.map +1 -1
- package/dist/managers/liveConfigManager.js +3 -0
- package/dist/managers/messageManager.d.ts +18 -6
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +89 -34
- package/dist/managers/pluginManager.d.ts.map +1 -1
- package/dist/managers/pluginManager.js +4 -2
- package/dist/managers/slashCommandManager.d.ts +2 -0
- package/dist/managers/slashCommandManager.d.ts.map +1 -1
- package/dist/managers/slashCommandManager.js +113 -22
- package/dist/managers/toolManager.d.ts +1 -0
- package/dist/managers/toolManager.d.ts.map +1 -1
- package/dist/managers/toolManager.js +8 -2
- package/dist/prompts/index.d.ts +2 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +5 -0
- package/dist/services/GitService.d.ts +1 -0
- package/dist/services/GitService.d.ts.map +1 -1
- package/dist/services/GitService.js +16 -0
- package/dist/services/MarketplaceService.d.ts +7 -0
- package/dist/services/MarketplaceService.d.ts.map +1 -1
- package/dist/services/MarketplaceService.js +321 -252
- package/dist/services/aiService.d.ts +34 -0
- package/dist/services/aiService.d.ts.map +1 -1
- package/dist/services/aiService.js +154 -6
- package/dist/services/configurationService.d.ts +8 -0
- package/dist/services/configurationService.d.ts.map +1 -1
- package/dist/services/configurationService.js +67 -1
- package/dist/services/initializationService.d.ts.map +1 -1
- package/dist/services/initializationService.js +18 -0
- package/dist/tools/agentTool.js +3 -3
- package/dist/tools/bashTool.d.ts.map +1 -1
- package/dist/tools/bashTool.js +4 -4
- package/dist/tools/editTool.d.ts.map +1 -1
- package/dist/tools/editTool.js +2 -0
- package/dist/tools/globTool.d.ts.map +1 -1
- package/dist/tools/globTool.js +15 -3
- package/dist/tools/grepTool.d.ts.map +1 -1
- package/dist/tools/grepTool.js +38 -12
- package/dist/tools/readTool.d.ts.map +1 -1
- package/dist/tools/readTool.js +61 -0
- package/dist/tools/skillTool.d.ts.map +1 -1
- package/dist/tools/skillTool.js +6 -3
- package/dist/tools/types.d.ts +17 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/webFetchTool.d.ts +3 -0
- package/dist/tools/webFetchTool.d.ts.map +1 -0
- package/dist/tools/webFetchTool.js +171 -0
- package/dist/tools/writeTool.d.ts.map +1 -1
- package/dist/tools/writeTool.js +2 -0
- package/dist/types/agent.d.ts +3 -0
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/commands.d.ts +1 -1
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/configuration.d.ts +3 -0
- package/dist/types/configuration.d.ts.map +1 -1
- package/dist/types/messaging.d.ts +12 -2
- package/dist/types/messaging.d.ts.map +1 -1
- package/dist/utils/bashParser.d.ts +14 -0
- package/dist/utils/bashParser.d.ts.map +1 -1
- package/dist/utils/bashParser.js +243 -142
- package/dist/utils/configValidator.d.ts +4 -5
- package/dist/utils/configValidator.d.ts.map +1 -1
- package/dist/utils/configValidator.js +4 -4
- package/dist/utils/containerSetup.d.ts.map +1 -1
- package/dist/utils/containerSetup.js +7 -1
- package/dist/utils/convertMessagesForAPI.d.ts.map +1 -1
- package/dist/utils/convertMessagesForAPI.js +23 -1
- package/dist/utils/fileUtils.d.ts +8 -0
- package/dist/utils/fileUtils.d.ts.map +1 -1
- package/dist/utils/fileUtils.js +52 -0
- package/dist/utils/messageOperations.d.ts +39 -5
- package/dist/utils/messageOperations.d.ts.map +1 -1
- package/dist/utils/messageOperations.js +155 -15
- package/package.json +4 -2
- package/src/agent.ts +37 -5
- package/src/constants/tools.ts +1 -1
- package/src/managers/MemoryRuleManager.ts +1 -10
- package/src/managers/aiManager.ts +24 -3
- package/src/managers/liveConfigManager.ts +5 -1
- package/src/managers/messageManager.ts +116 -38
- package/src/managers/pluginManager.ts +4 -2
- package/src/managers/slashCommandManager.ts +142 -23
- package/src/managers/toolManager.ts +12 -2
- package/src/prompts/index.ts +6 -0
- package/src/services/GitService.ts +20 -0
- package/src/services/MarketplaceService.ts +397 -324
- package/src/services/aiService.ts +255 -6
- package/src/services/configurationService.ts +81 -1
- package/src/services/initializationService.ts +38 -0
- package/src/tools/agentTool.ts +3 -3
- package/src/tools/bashTool.ts +3 -4
- package/src/tools/editTool.ts +3 -0
- package/src/tools/globTool.ts +16 -3
- package/src/tools/grepTool.ts +41 -13
- package/src/tools/readTool.ts +69 -0
- package/src/tools/skillTool.ts +14 -4
- package/src/tools/types.ts +14 -0
- package/src/tools/webFetchTool.ts +194 -0
- package/src/tools/writeTool.ts +3 -0
- package/src/types/agent.ts +3 -0
- package/src/types/commands.ts +1 -1
- package/src/types/config.ts +1 -0
- package/src/types/configuration.ts +3 -0
- package/src/types/messaging.ts +13 -1
- package/src/utils/bashParser.ts +268 -157
- package/src/utils/configValidator.ts +6 -4
- package/src/utils/containerSetup.ts +7 -1
- package/src/utils/convertMessagesForAPI.ts +25 -1
- package/src/utils/fileUtils.ts +69 -0
- package/src/utils/messageOperations.ts +195 -17
- package/dist/tools/taskOutputTool.d.ts +0 -3
- package/dist/tools/taskOutputTool.d.ts.map +0 -1
- package/dist/tools/taskOutputTool.js +0 -198
- package/src/tools/taskOutputTool.ts +0 -222
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Model Configuration
|
|
2
|
+
|
|
3
|
+
Wave allows you to configure model-specific parameters directly in your `settings.json`. This gives you fine-grained control over reasoning quality, token cost, and latency for different models.
|
|
4
|
+
|
|
5
|
+
## Model Overrides
|
|
6
|
+
|
|
7
|
+
You can define overrides for specific models in the `models` field. The key should be the exact model name used by Wave.
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"models": {
|
|
12
|
+
"claude-3-7-sonnet-20250219": {
|
|
13
|
+
"thinking": {
|
|
14
|
+
"type": "enabled",
|
|
15
|
+
"budget_tokens": 1024
|
|
16
|
+
},
|
|
17
|
+
"temperature": 1.0
|
|
18
|
+
},
|
|
19
|
+
"o3-mini": {
|
|
20
|
+
"reasoning_effort": "high"
|
|
21
|
+
},
|
|
22
|
+
"gpt-4o": {
|
|
23
|
+
"temperature": 0.5
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Supported Parameters
|
|
30
|
+
|
|
31
|
+
Wave supports passing arbitrary parameters to the underlying AI provider. Common parameters include:
|
|
32
|
+
|
|
33
|
+
- `temperature`: Controls randomness (0.0 to 2.0).
|
|
34
|
+
- `maxTokens`: Maximum number of tokens to generate in the response.
|
|
35
|
+
- `reasoning_effort`: (OpenAI specific) Controls the reasoning effort for models like `o1` and `o3-mini`. Values: `low`, `medium`, `high`.
|
|
36
|
+
- `thinking`: (Claude specific) Configures the thinking/reasoning capabilities for Claude 3.7+ models.
|
|
37
|
+
- `type`: `"enabled"` or `"disabled"`.
|
|
38
|
+
- `budget_tokens`: Maximum tokens to use for thinking.
|
|
39
|
+
|
|
40
|
+
## Unsetting Default Parameters
|
|
41
|
+
|
|
42
|
+
If a model does not support a default parameter (like `temperature` for some reasoning models), you can explicitly set it to `null` to ensure it is not sent to the provider.
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"models": {
|
|
47
|
+
"o1-preview": {
|
|
48
|
+
"temperature": null
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Global Model Selection
|
|
55
|
+
|
|
56
|
+
You can also set the default models Wave uses via environment variables in `settings.json`:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"env": {
|
|
61
|
+
"WAVE_MODEL": "gemini-3-flash",
|
|
62
|
+
"WAVE_FAST_MODEL": "gemini-2.5-flash",
|
|
63
|
+
"WAVE_MAX_INPUT_TOKENS": "100000",
|
|
64
|
+
"WAVE_MAX_OUTPUT_TOKENS": "4096"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
@@ -47,15 +47,21 @@ Manage tool permissions and define the "Safe Zone".
|
|
|
47
47
|
}
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
### 4. Model
|
|
51
|
-
Define which AI models Wave should use and set
|
|
50
|
+
### 4. Model Configuration
|
|
51
|
+
Define which AI models Wave should use and set model-specific parameters like `temperature`, `reasoning_effort`, and `thinking`.
|
|
52
|
+
For detailed model configuration, see [MODELS.md](${WAVE_SKILL_DIR}/MODELS.md).
|
|
52
53
|
```json
|
|
53
54
|
{
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
"models": {
|
|
56
|
+
"claude-3-7-sonnet-20250219": {
|
|
57
|
+
"thinking": {
|
|
58
|
+
"type": "enabled",
|
|
59
|
+
"budget_tokens": 1024
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"o3-mini": {
|
|
63
|
+
"reasoning_effort": "high"
|
|
64
|
+
}
|
|
59
65
|
}
|
|
60
66
|
}
|
|
61
67
|
```
|
|
@@ -16,12 +16,13 @@ my-skill/
|
|
|
16
16
|
|
|
17
17
|
## The `SKILL.md` File
|
|
18
18
|
|
|
19
|
-
The `SKILL.md` file uses YAML frontmatter for configuration and Markdown for instructions.
|
|
19
|
+
The `SKILL.md` file uses YAML frontmatter for configuration and Markdown for instructions. When `context: fork` is used, the Markdown body is passed as the initial prompt to the subagent.
|
|
20
20
|
|
|
21
21
|
```markdown
|
|
22
22
|
---
|
|
23
23
|
name: my-skill
|
|
24
24
|
description: A brief description of what the skill does.
|
|
25
|
+
context: fork
|
|
25
26
|
allowed-tools:
|
|
26
27
|
- Bash
|
|
27
28
|
- Read
|
|
@@ -40,7 +41,7 @@ When this skill is invoked, follow these steps:
|
|
|
40
41
|
- `description`: (Required) Explains when the AI should use this skill.
|
|
41
42
|
- `allowed-tools`: (Optional) List of tools the skill can use.
|
|
42
43
|
- `context: fork`: (Optional) Run the skill in a separate subagent.
|
|
43
|
-
- `agent`: (Optional) Specify the subagent type (
|
|
44
|
+
- `agent`: (Optional) Specify the subagent type (default: `general-purpose`).
|
|
44
45
|
|
|
45
46
|
## Skill Locations
|
|
46
47
|
|
|
@@ -13,7 +13,7 @@ A subagent is defined by a Markdown file with YAML frontmatter.
|
|
|
13
13
|
|
|
14
14
|
## The `subagent.md` File
|
|
15
15
|
|
|
16
|
-
The `subagent.md` file uses YAML frontmatter for configuration and Markdown for the system prompt.
|
|
16
|
+
The `subagent.md` file uses YAML frontmatter for configuration and Markdown for the system prompt. The Markdown content (excluding frontmatter) is passed directly as the system prompt to the subagent. Avoid using top-level Markdown headers (like `# My Subagent`) unless you want them to be part of the system prompt.
|
|
17
17
|
|
|
18
18
|
```markdown
|
|
19
19
|
---
|
|
@@ -25,8 +25,6 @@ tools:
|
|
|
25
25
|
model: gemini-3-flash
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
# My Subagent System Prompt
|
|
29
|
-
|
|
30
28
|
You are a specialized subagent for a specific task. Your goal is to:
|
|
31
29
|
1. Use the `Read` tool to examine the project structure.
|
|
32
30
|
2. Use the `Bash` tool to run `npm test`.
|
package/dist/agent.d.ts
CHANGED
|
@@ -34,6 +34,16 @@ export declare class Agent {
|
|
|
34
34
|
getModelConfig(): ModelConfig;
|
|
35
35
|
getMaxInputTokens(): number;
|
|
36
36
|
getLanguage(): string | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Set the active model for the agent session
|
|
39
|
+
* @param model - The ID of the model to use
|
|
40
|
+
*/
|
|
41
|
+
setModel(model: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get all configured models from settings.json and defaults
|
|
44
|
+
* @returns Array of model IDs
|
|
45
|
+
*/
|
|
46
|
+
getConfiguredModels(): string[];
|
|
37
47
|
/**
|
|
38
48
|
* Agent constructor - handles configuration resolution and validation
|
|
39
49
|
*
|
|
@@ -167,6 +177,12 @@ export declare class Agent {
|
|
|
167
177
|
* Trigger the rewind UI callback
|
|
168
178
|
*/
|
|
169
179
|
triggerShowRewind(): void;
|
|
180
|
+
/**
|
|
181
|
+
* Ask a side question without tool use
|
|
182
|
+
* @param question - The side question to ask
|
|
183
|
+
* @returns Promise that resolves to the AI's answer
|
|
184
|
+
*/
|
|
185
|
+
askBtw(question: string): Promise<string>;
|
|
170
186
|
/**
|
|
171
187
|
* Send a message to the AI agent with optional images
|
|
172
188
|
*
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAElB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,aAAa,EACb,WAAW,EACX,KAAK,EACL,cAAc,EACd,cAAc,EACf,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { LspManager } from "./managers/lspManager.js";
|
|
2
2
|
import { configValidator } from "./utils/configValidator.js";
|
|
3
|
+
import { btw } from "./services/aiService.js";
|
|
4
|
+
import { convertMessagesForAPI } from "./utils/convertMessagesForAPI.js";
|
|
3
5
|
import { InitializationService } from "./services/initializationService.js";
|
|
4
6
|
import { InteractionService } from "./services/interactionService.js";
|
|
5
7
|
import { ConfigurationService } from "./services/configurationService.js";
|
|
@@ -18,6 +20,21 @@ export class Agent {
|
|
|
18
20
|
getLanguage() {
|
|
19
21
|
return this.configurationService.resolveLanguage();
|
|
20
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Set the active model for the agent session
|
|
25
|
+
* @param model - The ID of the model to use
|
|
26
|
+
*/
|
|
27
|
+
setModel(model) {
|
|
28
|
+
this.configurationService.setModel(model);
|
|
29
|
+
this.options.callbacks?.onModelChange?.(model);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get all configured models from settings.json and defaults
|
|
33
|
+
* @returns Array of model IDs
|
|
34
|
+
*/
|
|
35
|
+
getConfiguredModels() {
|
|
36
|
+
return this.configurationService.getConfiguredModels();
|
|
37
|
+
}
|
|
21
38
|
/**
|
|
22
39
|
* Agent constructor - handles configuration resolution and validation
|
|
23
40
|
*
|
|
@@ -107,7 +124,7 @@ export class Agent {
|
|
|
107
124
|
return this.messageManager.getTranscriptPath();
|
|
108
125
|
}
|
|
109
126
|
get latestTotalTokens() {
|
|
110
|
-
return this.messageManager.
|
|
127
|
+
return this.messageManager.getLatestTotalTokens();
|
|
111
128
|
}
|
|
112
129
|
/** Get working directory */
|
|
113
130
|
get workingDirectory() {
|
|
@@ -216,7 +233,7 @@ export class Agent {
|
|
|
216
233
|
// Validate resolved configuration
|
|
217
234
|
configValidator.validateGatewayConfig(gatewayConfig);
|
|
218
235
|
configValidator.validateMaxInputTokens(maxInputTokens);
|
|
219
|
-
configValidator.validateModelConfig(modelConfig
|
|
236
|
+
configValidator.validateModelConfig(modelConfig);
|
|
220
237
|
}
|
|
221
238
|
/** Private initialization method, handles async initialization logic */
|
|
222
239
|
async initialize(options) {
|
|
@@ -343,6 +360,21 @@ export class Agent {
|
|
|
343
360
|
triggerShowRewind() {
|
|
344
361
|
this.messageManager.triggerShowRewind();
|
|
345
362
|
}
|
|
363
|
+
/**
|
|
364
|
+
* Ask a side question without tool use
|
|
365
|
+
* @param question - The side question to ask
|
|
366
|
+
* @returns Promise that resolves to the AI's answer
|
|
367
|
+
*/
|
|
368
|
+
async askBtw(question) {
|
|
369
|
+
const messages = convertMessagesForAPI(this.messageManager.getMessages());
|
|
370
|
+
const result = await btw({
|
|
371
|
+
gatewayConfig: this.getGatewayConfig(),
|
|
372
|
+
modelConfig: this.getModelConfig(),
|
|
373
|
+
messages,
|
|
374
|
+
question,
|
|
375
|
+
});
|
|
376
|
+
return result.content;
|
|
377
|
+
}
|
|
346
378
|
/**
|
|
347
379
|
* Send a message to the AI agent with optional images
|
|
348
380
|
*
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export declare const ASK_USER_QUESTION_TOOL_NAME = "AskUserQuestion";
|
|
2
2
|
export declare const BASH_TOOL_NAME = "Bash";
|
|
3
|
-
export declare const TASK_OUTPUT_TOOL_NAME = "TaskOutput";
|
|
4
3
|
export declare const TASK_STOP_TOOL_NAME = "TaskStop";
|
|
5
4
|
export declare const EDIT_TOOL_NAME = "Edit";
|
|
6
5
|
export declare const EXIT_PLAN_MODE_TOOL_NAME = "ExitPlanMode";
|
|
@@ -18,4 +17,5 @@ export declare const WRITE_TOOL_NAME = "Write";
|
|
|
18
17
|
export declare const CRON_CREATE_TOOL_NAME = "CronCreate";
|
|
19
18
|
export declare const CRON_DELETE_TOOL_NAME = "CronDelete";
|
|
20
19
|
export declare const CRON_LIST_TOOL_NAME = "CronList";
|
|
20
|
+
export declare const WEB_FETCH_TOOL_NAME = "WebFetch";
|
|
21
21
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/constants/tools.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAC7D,eAAO,MAAM,cAAc,SAAS,CAAC;AACrC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/constants/tools.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAC7D,eAAO,MAAM,cAAc,SAAS,CAAC;AACrC,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,cAAc,SAAS,CAAC;AACrC,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,cAAc,SAAS,CAAC;AACrC,eAAO,MAAM,cAAc,SAAS,CAAC;AACrC,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,cAAc,SAAS,CAAC;AACrC,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAC5C,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,mBAAmB,aAAa,CAAC"}
|
package/dist/constants/tools.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export const ASK_USER_QUESTION_TOOL_NAME = "AskUserQuestion";
|
|
2
2
|
export const BASH_TOOL_NAME = "Bash";
|
|
3
|
-
export const TASK_OUTPUT_TOOL_NAME = "TaskOutput";
|
|
4
3
|
export const TASK_STOP_TOOL_NAME = "TaskStop";
|
|
5
4
|
export const EDIT_TOOL_NAME = "Edit";
|
|
6
5
|
export const EXIT_PLAN_MODE_TOOL_NAME = "ExitPlanMode";
|
|
@@ -18,3 +17,4 @@ export const WRITE_TOOL_NAME = "Write";
|
|
|
18
17
|
export const CRON_CREATE_TOOL_NAME = "CronCreate";
|
|
19
18
|
export const CRON_DELETE_TOOL_NAME = "CronDelete";
|
|
20
19
|
export const CRON_LIST_TOOL_NAME = "CronList";
|
|
20
|
+
export const WEB_FETCH_TOOL_NAME = "WebFetch";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryRuleManager.d.ts","sourceRoot":"","sources":["../../src/managers/MemoryRuleManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,0DAA0D;IAC1D,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAU1B,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,KAAK,CAGX;IAEF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAoB;gBAGzB,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,wBAAwB;IAMnC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryRuleManager.d.ts","sourceRoot":"","sources":["../../src/managers/MemoryRuleManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,0DAA0D;IAC1D,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAU1B,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,KAAK,CAGX;IAEF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAoB;gBAGzB,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,wBAAwB;IAMnC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBtB,aAAa;YAyDb,YAAY;IAsB1B;;OAEG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE;IAUtD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
|
|
@@ -29,16 +29,8 @@ export class MemoryRuleManager {
|
|
|
29
29
|
await this.scanDirectory(projectRulesDir, "project", newRules);
|
|
30
30
|
this.state.rules = newRules;
|
|
31
31
|
const ruleCount = Object.keys(newRules).length;
|
|
32
|
+
// Removed verbose logging of all discovered rules
|
|
32
33
|
logger.debug(`Discovered ${ruleCount} modular memory rules`);
|
|
33
|
-
if (ruleCount > 0) {
|
|
34
|
-
logger.debug("Loaded memory rules:");
|
|
35
|
-
for (const [id, rule] of Object.entries(newRules)) {
|
|
36
|
-
const pathInfo = rule.metadata.paths
|
|
37
|
-
? `paths: ${JSON.stringify(rule.metadata.paths)}`
|
|
38
|
-
: "global (no path restriction)";
|
|
39
|
-
logger.debug(` - ${id} (${rule.source}): ${pathInfo}`);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
34
|
}
|
|
43
35
|
async scanDirectory(dir, source, registry, visited = new Set()) {
|
|
44
36
|
const realDir = await fs.realpath(dir).catch(() => dir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,KAAK,EAGN,MAAM,mBAAmB,CAAC;AAY3B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD,MAAM,WAAW,kBAAkB;IACjC,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IAYlB,OAAO,CAAC,SAAS;IAXZ,SAAS,EAAE,OAAO,CAAS;IAClC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,aAAa,CAAC,CAAS;gBAIrB,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,gBAAgB;IAU3B,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAIxB;IAED,OAAO,KAAK,WAAW,GAItB;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,gBAAgB,GAM3B;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAGM,gBAAgB,IAAI,aAAa;IAIjC,cAAc,IAAI,WAAW;IA6B7B,iBAAiB,IAAI,MAAM;IAI3B,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,oBAAoB,IAAI,OAAO;IAItC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,SAAS,CAAqB;IAEtC;;OAEG;IACH,OAAO,CAAC,sBAAsB;
|
|
1
|
+
{"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,KAAK,EAGN,MAAM,mBAAmB,CAAC;AAY3B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD,MAAM,WAAW,kBAAkB;IACjC,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IAYlB,OAAO,CAAC,SAAS;IAXZ,SAAS,EAAE,OAAO,CAAS;IAClC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,aAAa,CAAC,CAAS;gBAIrB,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,gBAAgB;IAU3B,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAIxB;IAED,OAAO,KAAK,WAAW,GAItB;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,gBAAgB,GAM3B;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAGM,gBAAgB,IAAI,aAAa;IAIjC,cAAc,IAAI,WAAW;IA6B7B,iBAAiB,IAAI,MAAM;IAI3B,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,oBAAoB,IAAI,OAAO;IAItC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,SAAS,CAAqB;IAEtC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAevB,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAItC,cAAc,IAAI,IAAI;IAuB7B,OAAO,CAAC,qBAAqB;YAsBf,8BAA8B;IAgFrC,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAOrD,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,YAAY,GAEvB;IAEY,aAAa,CACxB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,oEAAoE;QACpE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACf,GACL,OAAO,CAAC,IAAI,CAAC;IAsmBhB;;;;OAIG;YACW,gBAAgB;IAiE9B;;;OAGG;YACW,sBAAsB;IA6DpC;;OAEG;YACW,uBAAuB;CAwDtC"}
|
|
@@ -88,6 +88,7 @@ export class AIManager {
|
|
|
88
88
|
availableSubagents,
|
|
89
89
|
availableSkills,
|
|
90
90
|
workdir: this.workdir,
|
|
91
|
+
isSubagent: !!this.subagentType,
|
|
91
92
|
});
|
|
92
93
|
}
|
|
93
94
|
setIsLoading(isLoading) {
|
|
@@ -212,6 +213,24 @@ export class AIManager {
|
|
|
212
213
|
if (recursionDepth === 0 && this.isLoading) {
|
|
213
214
|
return;
|
|
214
215
|
}
|
|
216
|
+
// Scan for file mentions in the last user message
|
|
217
|
+
if (recursionDepth === 0) {
|
|
218
|
+
const messages = this.messageManager.getMessages();
|
|
219
|
+
const lastMessage = messages[messages.length - 1];
|
|
220
|
+
if (lastMessage && lastMessage.role === "user") {
|
|
221
|
+
for (const block of lastMessage.blocks) {
|
|
222
|
+
if (block.type === "text") {
|
|
223
|
+
const content = block.content;
|
|
224
|
+
const fileMentionRegex = /(?:^|\s)@([\w.\-/]+)/g;
|
|
225
|
+
let match;
|
|
226
|
+
while ((match = fileMentionRegex.exec(content)) !== null) {
|
|
227
|
+
const filePath = match[1];
|
|
228
|
+
this.messageManager.touchFile(filePath);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
215
234
|
// Save session in each recursion to ensure message persistence
|
|
216
235
|
await this.messageManager.saveSession();
|
|
217
236
|
// Only create new AbortControllers for the initial call (recursionDepth === 0)
|
|
@@ -562,10 +581,11 @@ export class AIManager {
|
|
|
562
581
|
logger?.info("Some tools were manually backgrounded, stopping recursion.");
|
|
563
582
|
}
|
|
564
583
|
else if (!isCurrentlyAborted) {
|
|
565
|
-
// If response was truncated
|
|
566
|
-
if (result.finish_reason === "length"
|
|
584
|
+
// If response was truncated, add a hidden continuation message
|
|
585
|
+
if (result.finish_reason === "length") {
|
|
567
586
|
this.messageManager.addUserMessage({
|
|
568
|
-
content: "
|
|
587
|
+
content: "Output token limit hit. Resume directly — no apology, no recap of what you were doing. Pick up mid-thought if that is where the cut happened. Break remaining work into smaller pieces.",
|
|
588
|
+
isMeta: true,
|
|
569
589
|
});
|
|
570
590
|
}
|
|
571
591
|
// Duplicate Tool Call Detection
|
|
@@ -10,9 +10,11 @@ import { Container } from "../utils/container.js";
|
|
|
10
10
|
import type { WaveConfiguration } from "../types/configuration.js";
|
|
11
11
|
export interface LiveConfigManagerOptions {
|
|
12
12
|
workdir: string;
|
|
13
|
+
onReload?: (config: WaveConfiguration) => void;
|
|
13
14
|
}
|
|
14
15
|
export declare class LiveConfigManager {
|
|
15
16
|
private container;
|
|
17
|
+
private options;
|
|
16
18
|
private readonly workdir;
|
|
17
19
|
private isInitialized;
|
|
18
20
|
private currentConfiguration;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveConfigManager.d.ts","sourceRoot":"","sources":["../../src/managers/liveConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AAInC,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"liveConfigManager.d.ts","sourceRoot":"","sources":["../../src/managers/liveConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AAInC,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAChD;AAED,qBAAa,iBAAiB;IAgB1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IAhBjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,aAAa,CAAkB;IAGvC,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,sBAAsB,CAAkC;IAGhE,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAW;IACtC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,gBAAgB,CAAkB;gBAGhC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,wBAAwB;IAO3C,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAED;;;;OAIG;YACW,kBAAkB;IA0ChC;;OAEG;IACH,uBAAuB,IAAI,iBAAiB,GAAG,IAAI;IAInD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB/B;;;OAGG;YACW,mBAAmB;IA0IjC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI1C;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,gBAAgB;;;;;;;;;;;;IAgBhB,OAAO,CAAC,sBAAsB;YAMhB,gBAAgB;IAmC9B,OAAO,CAAC,aAAa;IAuDrB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAU9B"}
|
|
@@ -14,6 +14,7 @@ import { logger } from "../utils/globalLogger.js";
|
|
|
14
14
|
export class LiveConfigManager {
|
|
15
15
|
constructor(container, options) {
|
|
16
16
|
this.container = container;
|
|
17
|
+
this.options = options;
|
|
17
18
|
this.isInitialized = false;
|
|
18
19
|
// Configuration state
|
|
19
20
|
this.currentConfiguration = null;
|
|
@@ -180,6 +181,8 @@ export class LiveConfigManager {
|
|
|
180
181
|
this.permissionManager.updateDeniedRules(this.currentConfiguration.permissions?.deny || []);
|
|
181
182
|
this.permissionManager.updateAdditionalDirectories(this.currentConfiguration.permissions?.additionalDirectories || []);
|
|
182
183
|
}
|
|
184
|
+
// Trigger reload callback
|
|
185
|
+
this.options.onReload?.(this.currentConfiguration);
|
|
183
186
|
return this.currentConfiguration;
|
|
184
187
|
}
|
|
185
188
|
catch (error) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UserMessageParams, type AgentToolBlockUpdateParams } from "../utils/messageOperations.js";
|
|
1
|
+
import { UserMessageParams, AddSlashParams, UpdateSlashParams, type AgentToolBlockUpdateParams } from "../utils/messageOperations.js";
|
|
2
2
|
import type { Message, Usage } from "../types/index.js";
|
|
3
3
|
import { SessionData } from "../services/session.js";
|
|
4
4
|
import { ChatCompletionMessageFunctionToolCall } from "openai/resources.js";
|
|
@@ -19,6 +19,8 @@ export interface MessageManagerCallbacks {
|
|
|
19
19
|
onAddBangMessage?: (command: string) => void;
|
|
20
20
|
onUpdateBangMessage?: (command: string, output: string) => void;
|
|
21
21
|
onCompleteBangMessage?: (command: string, exitCode: number) => void;
|
|
22
|
+
onAddSlashMessage?: (params: import("../utils/messageOperations.js").AddSlashParams) => void;
|
|
23
|
+
onUpdateSlashBlock?: (params: import("../utils/messageOperations.js").UpdateSlashParams) => void;
|
|
22
24
|
onInfoBlockAdded?: (content: string) => void;
|
|
23
25
|
onShowRewind?: () => void;
|
|
24
26
|
onFileHistoryBlockAdded?: (snapshots: import("../types/reversion.js").FileSnapshot[]) => void;
|
|
@@ -53,7 +55,7 @@ export declare class MessageManager {
|
|
|
53
55
|
getParentSessionId(): string | undefined;
|
|
54
56
|
getMessages(): Message[];
|
|
55
57
|
getUsages(): Usage[];
|
|
56
|
-
|
|
58
|
+
getLatestTotalTokens(): number;
|
|
57
59
|
getWorkdir(): string;
|
|
58
60
|
/**
|
|
59
61
|
* Returns all files mentioned in the current conversation context.
|
|
@@ -75,6 +77,14 @@ export declare class MessageManager {
|
|
|
75
77
|
* Create session if needed (async helper)
|
|
76
78
|
*/
|
|
77
79
|
private createSessionIfNeeded;
|
|
80
|
+
/**
|
|
81
|
+
* Adds a file path to the set of files in context, normalizing it if necessary.
|
|
82
|
+
*/
|
|
83
|
+
touchFile(filePath: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* Extracts and adds file paths from a message's tool blocks.
|
|
86
|
+
*/
|
|
87
|
+
private addPathsFromMessage;
|
|
78
88
|
setMessages(messages: Message[]): void;
|
|
79
89
|
/**
|
|
80
90
|
* Save current session
|
|
@@ -98,6 +108,10 @@ export declare class MessageManager {
|
|
|
98
108
|
addAssistantMessage(content?: string, toolCalls?: ChatCompletionMessageFunctionToolCall[], usage?: Usage, additionalFields?: Record<string, unknown>): void;
|
|
99
109
|
mergeAssistantAdditionalFields(additionalFields: Record<string, unknown>): void;
|
|
100
110
|
updateToolBlock(params: AgentToolBlockUpdateParams): void;
|
|
111
|
+
/**
|
|
112
|
+
* Add a tool block to a specific message by ID.
|
|
113
|
+
*/
|
|
114
|
+
addToolBlockToMessage(messageId: string, params: Omit<AgentToolBlockUpdateParams, "id">): string;
|
|
101
115
|
addErrorBlock(error: string): void;
|
|
102
116
|
addInfoBlock(content: string): void;
|
|
103
117
|
/**
|
|
@@ -108,6 +122,8 @@ export declare class MessageManager {
|
|
|
108
122
|
addBangMessage(command: string): void;
|
|
109
123
|
updateBangMessage(command: string, output: string): void;
|
|
110
124
|
completeBangMessage(command: string, exitCode: number, output?: string): void;
|
|
125
|
+
addSlashMessage(params: Omit<AddSlashParams, "messages">): string;
|
|
126
|
+
updateSlashBlock(params: Omit<UpdateSlashParams, "messages">): void;
|
|
111
127
|
/**
|
|
112
128
|
* Rebuild usage array from messages containing usage metadata
|
|
113
129
|
* Called during session restoration to reconstruct usage tracking
|
|
@@ -152,10 +168,6 @@ export declare class MessageManager {
|
|
|
152
168
|
* Rewrite the session file with the current messages.
|
|
153
169
|
*/
|
|
154
170
|
private rewriteSessionFile;
|
|
155
|
-
/**
|
|
156
|
-
* Updates the set of files mentioned in the conversation.
|
|
157
|
-
*/
|
|
158
|
-
private updateFilesInContext;
|
|
159
171
|
private extractPathsFromParams;
|
|
160
172
|
}
|
|
161
173
|
//# sourceMappingURL=messageManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"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"}
|