wave-agent-sdk 0.12.8 → 0.12.10
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/settings/ENV.md +1 -0
- package/builtin/skills/settings/PERMISSIONS.md +57 -0
- package/builtin/skills/settings/SKILL.md +12 -3
- package/dist/managers/messageManager.d.ts +1 -5
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +1 -28
- package/dist/managers/permissionManager.d.ts +6 -0
- package/dist/managers/permissionManager.d.ts.map +1 -1
- package/dist/managers/permissionManager.js +9 -0
- package/dist/managers/slashCommandManager.d.ts.map +1 -1
- package/dist/managers/slashCommandManager.js +31 -46
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +8 -0
- package/dist/services/aiService.js +4 -4
- package/dist/services/configurationService.d.ts.map +1 -1
- package/dist/services/configurationService.js +1 -0
- package/dist/services/initializationService.d.ts.map +1 -1
- package/dist/services/initializationService.js +2 -0
- package/dist/types/messaging.d.ts +1 -11
- package/dist/types/messaging.d.ts.map +1 -1
- package/dist/utils/cacheControlUtils.d.ts +8 -1
- package/dist/utils/cacheControlUtils.d.ts.map +1 -1
- package/dist/utils/cacheControlUtils.js +25 -8
- package/dist/utils/containerSetup.d.ts.map +1 -1
- package/dist/utils/containerSetup.js +2 -0
- package/dist/utils/convertMessagesForAPI.d.ts.map +1 -1
- package/dist/utils/convertMessagesForAPI.js +0 -15
- package/dist/utils/messageOperations.d.ts +0 -26
- package/dist/utils/messageOperations.d.ts.map +1 -1
- package/dist/utils/messageOperations.js +0 -80
- package/package.json +1 -1
- package/src/managers/messageManager.ts +0 -40
- package/src/managers/permissionManager.ts +12 -0
- package/src/managers/slashCommandManager.ts +33 -49
- package/src/managers/subagentManager.ts +15 -0
- package/src/services/aiService.ts +4 -4
- package/src/services/configurationService.ts +1 -0
- package/src/services/initializationService.ts +2 -0
- package/src/types/messaging.ts +0 -12
- package/src/utils/cacheControlUtils.ts +27 -8
- package/src/utils/containerSetup.ts +2 -0
- package/src/utils/convertMessagesForAPI.ts +0 -16
- package/src/utils/messageOperations.ts +0 -114
|
@@ -30,6 +30,7 @@ Wave uses several environment variables to control its core functionality.
|
|
|
30
30
|
| `WAVE_MAX_OUTPUT_TOKENS` | Maximum number of output tokens allowed. | `8192` |
|
|
31
31
|
| `WAVE_DISABLE_AUTO_MEMORY` | Set to `1` or `true` to disable the auto-memory feature. | `false` |
|
|
32
32
|
| `WAVE_TASK_LIST_ID` | Explicitly set the task list ID for the session. | (Session ID) |
|
|
33
|
+
| `WAVE_PROMPT_CACHE_REGEX` | Regex pattern to match model names that support prompt caching. Models matching this pattern will have cache control markers applied. | `claude` |
|
|
33
34
|
|
|
34
35
|
## Configuration Scopes
|
|
35
36
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Tool Permissions & Safe Zone
|
|
2
|
+
|
|
3
|
+
Wave includes a robust permission system to protect your system while allowing the AI to be productive. This system is centered around the "Safe Zone" and configurable permission modes.
|
|
4
|
+
|
|
5
|
+
## The Safe Zone
|
|
6
|
+
|
|
7
|
+
The Safe Zone is a set of directories where Wave is allowed to perform potentially sensitive operations (like editing or writing files) with reduced friction.
|
|
8
|
+
|
|
9
|
+
By default, the Safe Zone includes:
|
|
10
|
+
- The current project directory.
|
|
11
|
+
- The Wave configuration directories (`~/.wave/` and `.wave/`).
|
|
12
|
+
- The system temporary directory.
|
|
13
|
+
|
|
14
|
+
You can extend the Safe Zone by adding `additionalDirectories` to your `permissions` configuration in `settings.json`.
|
|
15
|
+
|
|
16
|
+
## Permission Modes
|
|
17
|
+
|
|
18
|
+
The `permissionMode` setting determines how Wave handles requests to use restricted tools (e.g., `Bash`, `Edit`, `Write`, `AskUserQuestion`).
|
|
19
|
+
|
|
20
|
+
| Mode | Description |
|
|
21
|
+
| :--- | :--- |
|
|
22
|
+
| `default` | **Recommended.** Wave will ask for your permission before using any restricted tool. |
|
|
23
|
+
| `bypassPermissions` | **Use with caution.** Wave will execute all tools without asking for permission. |
|
|
24
|
+
| `acceptEdits` | Wave will automatically allow `Edit` and `Write` operations within the Safe Zone. It will still ask for permission for `Bash` and operations outside the Safe Zone. |
|
|
25
|
+
| `plan` | Restricted mode for editing the plan file (usually internal). |
|
|
26
|
+
| `dontAsk` | Wave will automatically deny all restricted tools without asking. This is the most restrictive mode. |
|
|
27
|
+
|
|
28
|
+
### Example Configuration
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"permissions": {
|
|
33
|
+
"permissionMode": "default",
|
|
34
|
+
"additionalDirectories": ["/home/user/my-exports"],
|
|
35
|
+
"allow": ["ls -R", "git status"],
|
|
36
|
+
"deny": ["rm -rf"]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Allow and Deny Rules
|
|
42
|
+
|
|
43
|
+
You can pre-approve or explicitly forbid specific operations using `allow` and `deny` rules.
|
|
44
|
+
|
|
45
|
+
- **`allow`**: An array of string patterns (e.g., bash commands or file paths) that are always permitted.
|
|
46
|
+
- **`deny`**: An array of string patterns that are always forbidden.
|
|
47
|
+
|
|
48
|
+
When a tool is called, Wave checks:
|
|
49
|
+
1. If the operation matches a `deny` rule, it is rejected.
|
|
50
|
+
2. If the operation matches an `allow` rule, it is permitted.
|
|
51
|
+
3. If no rules match, the behavior depends on the `permissionMode`.
|
|
52
|
+
|
|
53
|
+
## Managing Permissions via CLI
|
|
54
|
+
|
|
55
|
+
You can also manage permissions directly through the Wave interface:
|
|
56
|
+
- When Wave asks for permission, you can select "Always allow" to add a rule to your `settings.local.json`.
|
|
57
|
+
- You can ask Wave to "Update my permission mode to acceptEdits".
|
|
@@ -27,8 +27,12 @@ Hooks allow you to automate tasks when certain events occur (e.g., `WorktreeCrea
|
|
|
27
27
|
For detailed hook configuration, see [HOOKS.md](${WAVE_SKILL_DIR}/HOOKS.md).
|
|
28
28
|
|
|
29
29
|
### 2. Environment Variables
|
|
30
|
-
Set environment variables that will be available to all tools and hooks.
|
|
31
|
-
|
|
30
|
+
Set environment variables that will be available to all tools and hooks. Common `WAVE_*` variables include:
|
|
31
|
+
- `WAVE_MODEL`, `WAVE_FAST_MODEL`: Model selection
|
|
32
|
+
- `WAVE_MAX_INPUT_TOKENS`, `WAVE_MAX_OUTPUT_TOKENS`: Token limits
|
|
33
|
+
- `WAVE_API_KEY`, `WAVE_BASE_URL`: API configuration
|
|
34
|
+
|
|
35
|
+
For detailed configuration, see [ENV.md](${WAVE_SKILL_DIR}/ENV.md).
|
|
32
36
|
```json
|
|
33
37
|
{
|
|
34
38
|
"env": {
|
|
@@ -40,6 +44,7 @@ For detailed environment variable configuration and available `WAVE_*` variables
|
|
|
40
44
|
|
|
41
45
|
### 3. Permissions
|
|
42
46
|
Manage tool permissions and define the "Safe Zone". Changes to permissions take effect immediately with live reload.
|
|
47
|
+
For detailed permission configuration and available permission modes, see [PERMISSIONS.md](${WAVE_SKILL_DIR}/PERMISSIONS.md).
|
|
43
48
|
```json
|
|
44
49
|
{
|
|
45
50
|
"permissions": {
|
|
@@ -52,7 +57,7 @@ Manage tool permissions and define the "Safe Zone". Changes to permissions take
|
|
|
52
57
|
```
|
|
53
58
|
|
|
54
59
|
### 4. Model Configuration
|
|
55
|
-
Define which AI models Wave should use and set model-specific parameters like `temperature`, `reasoning_effort`, and `thinking`.
|
|
60
|
+
Define which AI models Wave should use and set model-specific parameters like `temperature`, `reasoning_effort`, and `thinking`. You can also configure model selection and token limits via environment variables in the `env` field.
|
|
56
61
|
For detailed model configuration, see [MODELS.md](${WAVE_SKILL_DIR}/MODELS.md).
|
|
57
62
|
```json
|
|
58
63
|
{
|
|
@@ -98,7 +103,11 @@ You can ask me to:
|
|
|
98
103
|
- "Update my project settings to enable auto-memory"
|
|
99
104
|
- "How do I configure a post-commit hook?"
|
|
100
105
|
- "What are the available permission modes?"
|
|
106
|
+
- "Update my permission mode to acceptEdits"
|
|
107
|
+
- "How do I extend the Safe Zone for permissions?"
|
|
101
108
|
- "How do I create a custom skill?"
|
|
102
109
|
- "How do I define a new subagent?"
|
|
110
|
+
- "How do I set max input tokens?"
|
|
111
|
+
- "How do I change the model?"
|
|
103
112
|
|
|
104
113
|
I will guide you through the process and ensure your configuration is valid.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UserMessageParams,
|
|
1
|
+
import { UserMessageParams, 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,8 +19,6 @@ 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;
|
|
24
22
|
onInfoBlockAdded?: (content: string) => void;
|
|
25
23
|
onShowRewind?: () => void;
|
|
26
24
|
onFileHistoryBlockAdded?: (snapshots: import("../types/reversion.js").FileSnapshot[]) => void;
|
|
@@ -122,8 +120,6 @@ export declare class MessageManager {
|
|
|
122
120
|
addBangMessage(command: string): void;
|
|
123
121
|
updateBangMessage(command: string, output: string): void;
|
|
124
122
|
completeBangMessage(command: string, exitCode: number, output?: string): void;
|
|
125
|
-
addSlashMessage(params: Omit<AddSlashParams, "messages">): string;
|
|
126
|
-
updateSlashBlock(params: Omit<UpdateSlashParams, "messages">): void;
|
|
127
123
|
/**
|
|
128
124
|
* Rebuild usage array from messages containing usage metadata
|
|
129
125
|
* Called during session restoration to reconstruct usage tracking
|
|
@@ -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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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addAssistantMessageToMessages, updateToolBlockInMessage, addErrorBlockToMessage, addUserMessageToMessages, updateUserMessageInMessages, addBangMessage, updateBangInMessage, completeBangInMessage,
|
|
1
|
+
import { addAssistantMessageToMessages, updateToolBlockInMessage, addErrorBlockToMessage, addUserMessageToMessages, updateUserMessageInMessages, addBangMessage, updateBangInMessage, completeBangInMessage, removeLastUserMessage, addToolBlockToMessageInMessages, generateMessageId, } from "../utils/messageOperations.js";
|
|
2
2
|
import { join, isAbsolute, relative } from "path";
|
|
3
3
|
import { appendMessages, createSession, generateSessionId, SESSION_DIR, } from "../services/session.js";
|
|
4
4
|
import { pathEncoder } from "../utils/pathEncoder.js";
|
|
@@ -394,33 +394,6 @@ export class MessageManager {
|
|
|
394
394
|
this.setMessages(updatedMessages);
|
|
395
395
|
this.callbacks.onCompleteBangMessage?.(command, exitCode);
|
|
396
396
|
}
|
|
397
|
-
// Slash related message operations
|
|
398
|
-
addSlashMessage(params) {
|
|
399
|
-
const id = params.id || generateMessageId();
|
|
400
|
-
const updatedMessages = addSlashMessageToMessages({
|
|
401
|
-
messages: this.messages,
|
|
402
|
-
...params,
|
|
403
|
-
id,
|
|
404
|
-
});
|
|
405
|
-
this.setMessages(updatedMessages);
|
|
406
|
-
this.callbacks.onAddSlashMessage?.({
|
|
407
|
-
messages: updatedMessages,
|
|
408
|
-
...params,
|
|
409
|
-
id,
|
|
410
|
-
});
|
|
411
|
-
return id;
|
|
412
|
-
}
|
|
413
|
-
updateSlashBlock(params) {
|
|
414
|
-
const updatedMessages = updateSlashBlockInMessage({
|
|
415
|
-
messages: this.messages,
|
|
416
|
-
...params,
|
|
417
|
-
});
|
|
418
|
-
this.setMessages(updatedMessages);
|
|
419
|
-
this.callbacks.onUpdateSlashBlock?.({
|
|
420
|
-
messages: updatedMessages,
|
|
421
|
-
...params,
|
|
422
|
-
});
|
|
423
|
-
}
|
|
424
397
|
/**
|
|
425
398
|
* Rebuild usage array from messages containing usage metadata
|
|
426
399
|
* Called during session restoration to reconstruct usage tracking
|
|
@@ -21,6 +21,8 @@ export interface PermissionManagerOptions {
|
|
|
21
21
|
instanceDeniedRules?: string[];
|
|
22
22
|
/** Additional directories considered part of the Safe Zone */
|
|
23
23
|
additionalDirectories?: string[];
|
|
24
|
+
/** System additional directories (persistent across reloads) */
|
|
25
|
+
systemAdditionalDirectories?: string[];
|
|
24
26
|
/** The main working directory */
|
|
25
27
|
workdir?: string;
|
|
26
28
|
/** Path to the current plan file */
|
|
@@ -77,6 +79,10 @@ export declare class PermissionManager {
|
|
|
77
79
|
* Get all additional directories
|
|
78
80
|
*/
|
|
79
81
|
getAdditionalDirectories(): string[];
|
|
82
|
+
/**
|
|
83
|
+
* Get all system additional directories
|
|
84
|
+
*/
|
|
85
|
+
getSystemAdditionalDirectories(): string[];
|
|
80
86
|
/**
|
|
81
87
|
* Get all default allowed rules
|
|
82
88
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionManager.d.ts","sourceRoot":"","sources":["../../src/managers/permissionManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAkBhD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAgElD,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,wBAAwB,CAAC,EAAE,cAAc,CAAC;IAC1C,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,8DAA8D;IAC9D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAiB1B,OAAO,CAAC,SAAS;IAhBnB,OAAO,CAAC,wBAAwB,CAAC,CAAiB;IAClD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,2BAA2B,CAAgB;IACnD,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,gCAAgC,CAAC,CAAiC;IAC1E,OAAO,CAAC,OAAO,CAAC,CAAS;gBAGf,SAAS,EAAE,SAAS,EAC5B,OAAO,GAAE,wBAA6B;
|
|
1
|
+
{"version":3,"file":"permissionManager.d.ts","sourceRoot":"","sources":["../../src/managers/permissionManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAkBhD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAgElD,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,wBAAwB,CAAC,EAAE,cAAc,CAAC;IAC1C,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,8DAA8D;IAC9D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,gEAAgE;IAChE,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;IACvC,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAiB1B,OAAO,CAAC,SAAS;IAhBnB,OAAO,CAAC,wBAAwB,CAAC,CAAiB;IAClD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,2BAA2B,CAAgB;IACnD,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,gCAAgC,CAAC,CAAiC;IAC1E,OAAO,CAAC,OAAO,CAAC,CAAS;gBAGf,SAAS,EAAE,SAAS,EAC5B,OAAO,GAAE,wBAA6B;IAmBxC;;OAEG;IACI,mCAAmC,CACxC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GACvC,IAAI;IAIP;;OAEG;IACH,8BAA8B,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI;IAcrE;;OAEG;IACI,2BAA2B,IAAI,cAAc,GAAG,SAAS;IAIhE;;OAEG;IACI,eAAe,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACI,cAAc,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACI,uBAAuB,IAAI,MAAM,EAAE;IAI1C;;OAEG;IACI,sBAAsB,IAAI,MAAM,EAAE;IAIzC;;OAEG;IACI,wBAAwB,IAAI,MAAM,EAAE;IAI3C;;OAEG;IACI,8BAA8B,IAAI,MAAM,EAAE;IAIjD;;OAEG;IACI,sBAAsB,IAAI,MAAM,EAAE;IAIzC;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIzC;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIxC;;OAEG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAI/C;;OAEG;IACI,mBAAmB,IAAI,IAAI;IAIlC;;OAEG;IACH,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;IASxD;;OAEG;IACI,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAW5D;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAItD;;OAEG;IACI,eAAe,IAAI,MAAM,GAAG,SAAS;IAI5C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,cAAc,GAAG,cAAc;IAI3E;;OAEG;IACH,8BAA8B,CAC5B,iBAAiB,CAAC,EAAE,cAAc,GACjC,cAAc;IAejB;;;OAGG;IACG,eAAe,CACnB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;IAqP9B;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAO3C;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAc9C;;OAEG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,qBAAqB;IAoFxB;;OAEG;IACH,OAAO,CAAC,WAAW;IA0EnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmHvB;;;;;;;OAOG;IACI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAgGjE;;;OAGG;IACU,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA4C5D"}
|
|
@@ -88,6 +88,9 @@ export class PermissionManager {
|
|
|
88
88
|
this.planFilePath = options.planFilePath;
|
|
89
89
|
this._logger = options.logger;
|
|
90
90
|
this.updateAdditionalDirectories(options.additionalDirectories || []);
|
|
91
|
+
for (const dir of options.systemAdditionalDirectories || []) {
|
|
92
|
+
this.addSystemAdditionalDirectory(dir);
|
|
93
|
+
}
|
|
91
94
|
this.worktreeName = this.container.get("WorktreeName");
|
|
92
95
|
this.mainRepoRoot = this.container.get("MainRepoRoot");
|
|
93
96
|
}
|
|
@@ -145,6 +148,12 @@ export class PermissionManager {
|
|
|
145
148
|
getAdditionalDirectories() {
|
|
146
149
|
return [...this.additionalDirectories];
|
|
147
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Get all system additional directories
|
|
153
|
+
*/
|
|
154
|
+
getSystemAdditionalDirectories() {
|
|
155
|
+
return [...this.systemAdditionalDirectories];
|
|
156
|
+
}
|
|
148
157
|
/**
|
|
149
158
|
* Get all default allowed rules
|
|
150
159
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slashCommandManager.d.ts","sourceRoot":"","sources":["../../src/managers/slashCommandManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ1E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAWlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,SAAS;IAPnB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,6BAA6B,CAAgC;gBAG3D,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,0BAA0B;IAK9B,UAAU,IAAI,IAAI;IAazB,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"slashCommandManager.d.ts","sourceRoot":"","sources":["../../src/managers/slashCommandManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ1E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAWlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,SAAS;IAPnB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,6BAA6B,CAAgC;gBAG3D,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,0BAA0B;IAK9B,UAAU,IAAI,IAAI;IAazB,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;OAEG;IACI,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IAuK3D;;OAEG;IACI,sBAAsB,CAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,IAAI;IAyCP;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAWnC;;OAEG;IACI,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACI,WAAW,IAAI,YAAY,EAAE;IAIpC;;OAEG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI9D;;OAEG;IACU,cAAc,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;IA2BnB;;;OAGG;IACI,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG;QAClD,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;IAeD;;OAEG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI7C;;OAEG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI1E;;OAEG;IACI,iBAAiB,IAAI,kBAAkB,EAAE;IAIhD;;OAEG;YACW,+BAA+B;IA4C7C;;OAEG;IACI,mBAAmB,IAAI,IAAI;CAQnC"}
|
|
@@ -76,7 +76,7 @@ export class SlashCommandManager {
|
|
|
76
76
|
if (args) {
|
|
77
77
|
processedContent = substituteCommandParameters(processedContent, args);
|
|
78
78
|
}
|
|
79
|
-
await this.executeCustomCommandInMainAgent(command.name, processedContent, command.config
|
|
79
|
+
await this.executeCustomCommandInMainAgent(command.name, processedContent, command.config);
|
|
80
80
|
},
|
|
81
81
|
});
|
|
82
82
|
}
|
|
@@ -112,23 +112,21 @@ export class SlashCommandManager {
|
|
|
112
112
|
skill_name: skill.name,
|
|
113
113
|
args,
|
|
114
114
|
});
|
|
115
|
-
// 2. Add slash message immediately
|
|
116
|
-
const messageId = this.messageManager.addSlashMessage({
|
|
117
|
-
command: skill.name,
|
|
118
|
-
args,
|
|
119
|
-
content: prepared.content,
|
|
120
|
-
});
|
|
121
115
|
if (!prepared.skill) {
|
|
122
|
-
// If skill not found or invalid,
|
|
123
|
-
this.messageManager.
|
|
124
|
-
command: skill.name,
|
|
125
|
-
messageId,
|
|
126
|
-
stage: "error",
|
|
127
|
-
error: prepared.content,
|
|
128
|
-
});
|
|
116
|
+
// If skill not found or invalid, add error
|
|
117
|
+
this.messageManager.addErrorBlock(prepared.content);
|
|
129
118
|
return;
|
|
130
119
|
}
|
|
131
120
|
if (skill.context === "fork") {
|
|
121
|
+
// Forked skill execution: add user message with text + tool block
|
|
122
|
+
const messageId = this.messageManager.addUserMessage({
|
|
123
|
+
content: `/${skill.name} ${args || ""}`,
|
|
124
|
+
});
|
|
125
|
+
const toolBlockId = this.messageManager.addToolBlockToMessage(messageId, {
|
|
126
|
+
name: skill.name,
|
|
127
|
+
parameters: prepared.content,
|
|
128
|
+
stage: "running",
|
|
129
|
+
});
|
|
132
130
|
// Forked skill execution
|
|
133
131
|
const subagentConfigs = await this.subagentManager.loadConfigurations();
|
|
134
132
|
const subagentType = skill.agent || "general-purpose";
|
|
@@ -143,7 +141,7 @@ export class SlashCommandManager {
|
|
|
143
141
|
subagent_type: subagentType,
|
|
144
142
|
model: skill.model,
|
|
145
143
|
}, false, () => {
|
|
146
|
-
// Update the
|
|
144
|
+
// Update the tool block with progress
|
|
147
145
|
const subagent = this.subagentManager.getInstance(instance.subagentId);
|
|
148
146
|
if (subagent) {
|
|
149
147
|
const messages = subagent.messages;
|
|
@@ -159,8 +157,8 @@ export class SlashCommandManager {
|
|
|
159
157
|
shortResult += `${lastTools.join(", ")} `;
|
|
160
158
|
}
|
|
161
159
|
shortResult += summary;
|
|
162
|
-
this.messageManager.
|
|
163
|
-
|
|
160
|
+
this.messageManager.updateToolBlock({
|
|
161
|
+
id: toolBlockId,
|
|
164
162
|
messageId,
|
|
165
163
|
shortResult,
|
|
166
164
|
});
|
|
@@ -168,12 +166,12 @@ export class SlashCommandManager {
|
|
|
168
166
|
});
|
|
169
167
|
try {
|
|
170
168
|
const result = await this.subagentManager.executeAgent(instance, prepared.content, signal);
|
|
171
|
-
// Update the
|
|
172
|
-
this.messageManager.
|
|
173
|
-
|
|
169
|
+
// Update the ToolBlock with final result
|
|
170
|
+
this.messageManager.updateToolBlock({
|
|
171
|
+
id: toolBlockId,
|
|
174
172
|
messageId,
|
|
175
173
|
result,
|
|
176
|
-
stage: "
|
|
174
|
+
stage: "end",
|
|
177
175
|
});
|
|
178
176
|
}
|
|
179
177
|
finally {
|
|
@@ -181,31 +179,27 @@ export class SlashCommandManager {
|
|
|
181
179
|
}
|
|
182
180
|
}
|
|
183
181
|
catch (error) {
|
|
184
|
-
// Update the
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
command: skill.name,
|
|
182
|
+
// Update the ToolBlock with error
|
|
183
|
+
this.messageManager.updateToolBlock({
|
|
184
|
+
id: toolBlockId,
|
|
188
185
|
messageId,
|
|
189
|
-
stage:
|
|
186
|
+
stage: "end",
|
|
190
187
|
error: error instanceof Error ? error.message : String(error),
|
|
191
188
|
});
|
|
192
189
|
throw error; // Re-throw to be caught by outer catch for logging/error block
|
|
193
190
|
}
|
|
194
191
|
return;
|
|
195
192
|
}
|
|
196
|
-
//
|
|
193
|
+
// Non-forked skill: execute and trigger AI response
|
|
197
194
|
const result = await this.skillManager.executeSkill({
|
|
198
195
|
skill_name: skill.name,
|
|
199
196
|
args,
|
|
200
197
|
});
|
|
201
|
-
//
|
|
202
|
-
this.messageManager.
|
|
203
|
-
command: skill.name,
|
|
204
|
-
messageId,
|
|
198
|
+
// Add user message with the processed content
|
|
199
|
+
this.messageManager.addUserMessage({
|
|
205
200
|
content: result.content,
|
|
206
|
-
stage: "success",
|
|
207
201
|
});
|
|
208
|
-
//
|
|
202
|
+
// Trigger AI response
|
|
209
203
|
await this.aiManager.sendAIMessage({
|
|
210
204
|
model: skill.model,
|
|
211
205
|
allowedRules: result.allowedTools,
|
|
@@ -241,7 +235,7 @@ export class SlashCommandManager {
|
|
|
241
235
|
if (args) {
|
|
242
236
|
processedContent = substituteCommandParameters(processedContent, args);
|
|
243
237
|
}
|
|
244
|
-
await this.executeCustomCommandInMainAgent(namespacedName, processedContent, command.config
|
|
238
|
+
await this.executeCustomCommandInMainAgent(namespacedName, processedContent, command.config);
|
|
245
239
|
},
|
|
246
240
|
});
|
|
247
241
|
}
|
|
@@ -353,14 +347,8 @@ export class SlashCommandManager {
|
|
|
353
347
|
/**
|
|
354
348
|
* Execute custom command in main agent instead of sub-agent
|
|
355
349
|
*/
|
|
356
|
-
async executeCustomCommandInMainAgent(commandName, content, config
|
|
350
|
+
async executeCustomCommandInMainAgent(commandName, content, config) {
|
|
357
351
|
try {
|
|
358
|
-
// Add slash command message immediately to show the command being executed
|
|
359
|
-
const messageId = this.messageManager.addSlashMessage({
|
|
360
|
-
command: commandName,
|
|
361
|
-
args,
|
|
362
|
-
content, // Initial content with bash placeholders
|
|
363
|
-
});
|
|
364
352
|
// Parse bash commands from the content
|
|
365
353
|
const { commands, processedContent } = parseBashCommands(content);
|
|
366
354
|
// Execute bash commands if any
|
|
@@ -369,12 +357,9 @@ export class SlashCommandManager {
|
|
|
369
357
|
const bashResults = await executeBashCommands(commands, this.workdir);
|
|
370
358
|
finalContent = replaceBashCommandsWithOutput(processedContent, bashResults);
|
|
371
359
|
}
|
|
372
|
-
//
|
|
373
|
-
this.messageManager.
|
|
374
|
-
command: commandName,
|
|
375
|
-
messageId,
|
|
360
|
+
// Add user message with the processed content
|
|
361
|
+
this.messageManager.addUserMessage({
|
|
376
362
|
content: finalContent,
|
|
377
|
-
stage: "success",
|
|
378
363
|
});
|
|
379
364
|
// Execute the AI conversation with custom configuration
|
|
380
365
|
await this.aiManager.sendAIMessage({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,6 +78,7 @@ export class SubagentManager {
|
|
|
78
78
|
AGENT_TOOL_NAME, // Always deny Agent tool in subagents to prevent recursion
|
|
79
79
|
],
|
|
80
80
|
additionalDirectories: parentPermissionManager?.getAdditionalDirectories(),
|
|
81
|
+
systemAdditionalDirectories: parentPermissionManager?.getSystemAdditionalDirectories(),
|
|
81
82
|
planFilePath: parentPermissionManager?.getPlanFilePath(),
|
|
82
83
|
});
|
|
83
84
|
subagentContainer.register("PermissionManager", subagentPermissionManager);
|
|
@@ -311,6 +312,11 @@ export class SubagentManager {
|
|
|
311
312
|
: undefined;
|
|
312
313
|
// If this was transitioned to background, update the background task
|
|
313
314
|
if (instance.backgroundTaskId && backgroundTaskManager) {
|
|
315
|
+
// Write final response and completion status to log before closing
|
|
316
|
+
if (instance.logStream && response) {
|
|
317
|
+
instance.logStream.write(`[${new Date().toISOString()}] Final response:\n${response}\n`);
|
|
318
|
+
}
|
|
319
|
+
instance.logStream?.write(`[${new Date().toISOString()}] Agent completed successfully\n`);
|
|
314
320
|
instance.logStream?.end();
|
|
315
321
|
const task = backgroundTaskManager.getTask(instance.backgroundTaskId);
|
|
316
322
|
if (task) {
|
|
@@ -330,6 +336,8 @@ export class SubagentManager {
|
|
|
330
336
|
: undefined;
|
|
331
337
|
// If this was transitioned to background, update the background task with error
|
|
332
338
|
if (instance.backgroundTaskId && backgroundTaskManager) {
|
|
339
|
+
// Write error to log before closing
|
|
340
|
+
instance.logStream?.write(`[${new Date().toISOString()}] Agent failed: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
333
341
|
instance.logStream?.end();
|
|
334
342
|
const task = backgroundTaskManager.getTask(instance.backgroundTaskId);
|
|
335
343
|
if (task) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OpenAIClient } from "../utils/openaiClient.js";
|
|
2
2
|
import { logger } from "../utils/globalLogger.js";
|
|
3
3
|
import { addOnceAbortListener } from "../utils/abortUtils.js";
|
|
4
|
-
import { transformMessagesForClaudeCache, addCacheControlToLastTool,
|
|
4
|
+
import { transformMessagesForClaudeCache, addCacheControlToLastTool, supportsPromptCaching, extendUsageWithCacheMetrics, } from "../utils/cacheControlUtils.js";
|
|
5
5
|
import * as os from "os";
|
|
6
6
|
import * as fs from "fs";
|
|
7
7
|
import * as path from "path";
|
|
@@ -96,7 +96,7 @@ export async function callAgent(options) {
|
|
|
96
96
|
const currentModel = model || modelConfig.model;
|
|
97
97
|
const resolvedMaxTokens = options.maxTokens ?? modelConfig.maxTokens;
|
|
98
98
|
processedTools = tools;
|
|
99
|
-
if (
|
|
99
|
+
if (supportsPromptCaching(currentModel)) {
|
|
100
100
|
openaiMessages = transformMessagesForClaudeCache(openaiMessages, currentModel);
|
|
101
101
|
// Apply cache control to tools separately
|
|
102
102
|
if (tools && tools.length > 0) {
|
|
@@ -163,7 +163,7 @@ export async function callAgent(options) {
|
|
|
163
163
|
}
|
|
164
164
|
: undefined;
|
|
165
165
|
// Extend usage with cache metrics for Claude models
|
|
166
|
-
if (totalUsage &&
|
|
166
|
+
if (totalUsage && supportsPromptCaching(currentModel) && response.usage) {
|
|
167
167
|
totalUsage = extendUsageWithCacheMetrics(totalUsage, response.usage);
|
|
168
168
|
}
|
|
169
169
|
const result = {};
|
|
@@ -313,7 +313,7 @@ async function processStreamingResponse(stream, onContentUpdate, onToolUpdate, o
|
|
|
313
313
|
total_tokens: chunk.usage.total_tokens,
|
|
314
314
|
};
|
|
315
315
|
// Extend usage with cache metrics for Claude models
|
|
316
|
-
if (modelName &&
|
|
316
|
+
if (modelName && supportsPromptCaching(modelName)) {
|
|
317
317
|
chunkUsage = extendUsageWithCacheMetrics(chunkUsage, chunk.usage);
|
|
318
318
|
}
|
|
319
319
|
usage = chunkUsage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configurationService.d.ts","sourceRoot":"","sources":["../../src/services/configurationService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACN,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,aAAa,EACb,WAAW,EAGX,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,GAAG,CAA8B;IACzC,OAAO,CAAC,OAAO,CAAoB;IAEnC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMvC;;OAEG;IACG,uBAAuB,CAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,CAAC;IA4DnC;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,gBAAgB;
|
|
1
|
+
{"version":3,"file":"configurationService.d.ts","sourceRoot":"","sources":["../../src/services/configurationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializationService.d.ts","sourceRoot":"","sources":["../../src/services/initializationService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initializationService.d.ts","sourceRoot":"","sources":["../../src/services/initializationService.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,YAAY,EACZ,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,wBAAwB,EAAE,MAAM,IAAI,CAAC;CACtC;AAED,qBAAa,qBAAqB;WACZ,UAAU,CAC5B,OAAO,EAAE,qBAAqB,EAC9B,OAAO,CAAC,EAAE;QACR,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,CAAC;CAuRjB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { handleSessionRestoration } from "./session.js";
|
|
2
2
|
import { setGlobalLogger } from "../utils/globalLogger.js";
|
|
3
3
|
import { LspManager } from "../managers/lspManager.js";
|
|
4
|
+
import { USER_MEMORY_FILE } from "../utils/constants.js";
|
|
4
5
|
export class InitializationService {
|
|
5
6
|
static async initialize(context, options) {
|
|
6
7
|
const { skillManager, subagentManager, container, toolManager, pluginManager, options: agentOptions, slashCommandManager, logger, mcpManager, workdir, lspManager, configurationService, hookManager, messageManager, memoryRuleManager, liveConfigManager, taskManager, setProjectMemory, setUserMemory, resolveAndValidateConfig, } = context;
|
|
@@ -108,6 +109,7 @@ export class InitializationService {
|
|
|
108
109
|
if (permissionManager) {
|
|
109
110
|
const autoMemoryDir = memoryService.getAutoMemoryDirectory(workdir);
|
|
110
111
|
permissionManager.addSystemAdditionalDirectory(autoMemoryDir);
|
|
112
|
+
permissionManager.addSystemAdditionalDirectory(USER_MEMORY_FILE);
|
|
111
113
|
}
|
|
112
114
|
}
|
|
113
115
|
}
|
|
@@ -15,22 +15,12 @@ export interface Message {
|
|
|
15
15
|
additionalFields?: Record<string, unknown>;
|
|
16
16
|
isMeta?: boolean;
|
|
17
17
|
}
|
|
18
|
-
export type MessageBlock = TextBlock | ErrorBlock | ToolBlock | ImageBlock | BangBlock |
|
|
18
|
+
export type MessageBlock = TextBlock | ErrorBlock | ToolBlock | ImageBlock | BangBlock | CompressBlock | ReasoningBlock | FileHistoryBlock;
|
|
19
19
|
export interface TextBlock {
|
|
20
20
|
type: "text";
|
|
21
21
|
content: string;
|
|
22
22
|
source?: MessageSource;
|
|
23
23
|
}
|
|
24
|
-
export interface SlashBlock {
|
|
25
|
-
type: "slash";
|
|
26
|
-
command: string;
|
|
27
|
-
args?: string;
|
|
28
|
-
content?: string;
|
|
29
|
-
result?: string;
|
|
30
|
-
stage: "running" | "success" | "error" | "aborted";
|
|
31
|
-
error?: string;
|
|
32
|
-
shortResult?: string;
|
|
33
|
-
}
|
|
34
24
|
export interface ErrorBlock {
|
|
35
25
|
type: "error";
|
|
36
26
|
content: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/types/messaging.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,
|
|
1
|
+
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/types/messaging.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,aAAa,GACb,cAAc,GACd,gBAAgB,CAAC;AAErB,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC;QAEb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,OAAO,gBAAgB,EAAE,YAAY,EAAE,CAAC;CACpD"}
|
|
@@ -42,12 +42,19 @@ export interface ClaudeUsage extends CompletionUsage {
|
|
|
42
42
|
ephemeral_1h_input_tokens: number;
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Determines if a model supports prompt caching
|
|
47
|
+
* @param modelName - Model identifier
|
|
48
|
+
* @returns True if model name matches the cache pattern (default: contains 'claude')
|
|
49
|
+
*/
|
|
50
|
+
export declare function supportsPromptCaching(modelName: string): boolean;
|
|
45
51
|
/**
|
|
46
52
|
* Determines if a model supports cache control
|
|
47
53
|
* @param modelName - Model identifier
|
|
48
54
|
* @returns True if model name contains 'claude' (case-insensitive)
|
|
55
|
+
* @deprecated Use supportsPromptCaching instead
|
|
49
56
|
*/
|
|
50
|
-
export declare
|
|
57
|
+
export declare const isClaudeModel: typeof supportsPromptCaching;
|
|
51
58
|
/**
|
|
52
59
|
* Validates cache control structure
|
|
53
60
|
* @param control - Object to validate
|