hoomanjs 1.35.3 → 1.37.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/README.md +17 -13
- package/dist/acp/acp-agent.d.ts +40 -66
- package/dist/acp/acp-agent.js +786 -398
- package/dist/acp/acp-agent.js.map +1 -1
- package/dist/acp/approvals.d.ts +2 -2
- package/dist/acp/approvals.js +66 -58
- package/dist/acp/approvals.js.map +1 -1
- package/dist/acp/commands.d.ts +20 -0
- package/dist/acp/commands.js +66 -0
- package/dist/acp/commands.js.map +1 -0
- package/dist/acp/index.d.ts +1 -1
- package/dist/acp/index.js +1 -1
- package/dist/acp/index.js.map +1 -1
- package/dist/acp/mcp-servers.js +14 -8
- package/dist/acp/mcp-servers.js.map +1 -1
- package/dist/acp/prompt-invoke.js +103 -49
- package/dist/acp/prompt-invoke.js.map +1 -1
- package/dist/acp/session-config.d.ts +18 -0
- package/dist/acp/session-config.js +52 -0
- package/dist/acp/session-config.js.map +1 -0
- package/dist/acp/sessions/replay.d.ts +2 -2
- package/dist/acp/sessions/replay.js +28 -44
- package/dist/acp/sessions/replay.js.map +1 -1
- package/dist/acp/sessions/store.d.ts +4 -0
- package/dist/acp/sessions/store.js +5 -1
- package/dist/acp/sessions/store.js.map +1 -1
- package/dist/acp/utils/tool-kind.js +2 -2
- package/dist/acp/utils/tool-kind.js.map +1 -1
- package/dist/acp/utils/tool-result-content.d.ts +7 -0
- package/dist/acp/utils/tool-result-content.js +18 -0
- package/dist/acp/utils/tool-result-content.js.map +1 -1
- package/dist/chat/app.js +117 -1
- package/dist/chat/app.js.map +1 -1
- package/dist/chat/components/BottomChrome.d.ts +2 -1
- package/dist/chat/components/BottomChrome.js +2 -2
- package/dist/chat/components/BottomChrome.js.map +1 -1
- package/dist/chat/components/ReasoningStrip.js +3 -1
- package/dist/chat/components/ReasoningStrip.js.map +1 -1
- package/dist/chat/components/StatusBar.d.ts +2 -1
- package/dist/chat/components/StatusBar.js +18 -3
- package/dist/chat/components/StatusBar.js.map +1 -1
- package/dist/chat/components/ThoughtEvent.d.ts +3 -1
- package/dist/chat/components/ThoughtEvent.js +6 -2
- package/dist/chat/components/ThoughtEvent.js.map +1 -1
- package/dist/chat/components/Transcript.d.ts +5 -2
- package/dist/chat/components/Transcript.js +4 -4
- package/dist/chat/components/Transcript.js.map +1 -1
- package/dist/chat/components/markdown/CodeBlock.js.map +1 -1
- package/dist/cli.js +24 -1
- package/dist/cli.js.map +1 -1
- package/dist/configure/app.js +287 -64
- package/dist/configure/app.js.map +1 -1
- package/dist/configure/components/MenuScreen.js +29 -5
- package/dist/configure/components/MenuScreen.js.map +1 -1
- package/dist/configure/types.d.ts +8 -2
- package/dist/core/agent/index.js +17 -4
- package/dist/core/agent/index.js.map +1 -1
- package/dist/core/approvals/allowlist.d.ts +52 -0
- package/dist/core/approvals/allowlist.js +265 -0
- package/dist/core/approvals/allowlist.js.map +1 -0
- package/dist/core/approvals/bash-arity.d.ts +10 -0
- package/dist/core/approvals/bash-arity.js +178 -0
- package/dist/core/approvals/bash-arity.js.map +1 -0
- package/dist/core/approvals/intervention.d.ts +1 -2
- package/dist/core/approvals/intervention.js +5 -20
- package/dist/core/approvals/intervention.js.map +1 -1
- package/dist/core/approvals/wildcard.d.ts +14 -0
- package/dist/core/approvals/wildcard.js +27 -0
- package/dist/core/approvals/wildcard.js.map +1 -0
- package/dist/core/config.d.ts +352 -22
- package/dist/core/config.js +40 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/models/anthropic.d.ts +7 -1
- package/dist/core/models/anthropic.js +36 -7
- package/dist/core/models/anthropic.js.map +1 -1
- package/dist/core/models/azure.js +13 -0
- package/dist/core/models/azure.js.map +1 -1
- package/dist/core/models/bedrock.js +33 -0
- package/dist/core/models/bedrock.js.map +1 -1
- package/dist/core/models/google.js +5 -0
- package/dist/core/models/google.js.map +1 -1
- package/dist/core/models/groq.js +14 -0
- package/dist/core/models/groq.js.map +1 -1
- package/dist/core/models/minimax.js +2 -2
- package/dist/core/models/minimax.js.map +1 -1
- package/dist/core/models/moonshot.js +5 -0
- package/dist/core/models/moonshot.js.map +1 -1
- package/dist/core/models/ollama/index.js +5 -3
- package/dist/core/models/ollama/index.js.map +1 -1
- package/dist/core/models/openai.js +21 -1
- package/dist/core/models/openai.js.map +1 -1
- package/dist/core/models/openrouter.d.ts +2 -2
- package/dist/core/models/openrouter.js +28 -10
- package/dist/core/models/openrouter.js.map +1 -1
- package/dist/core/models/types.d.ts +759 -51
- package/dist/core/models/types.js +43 -7
- package/dist/core/models/types.js.map +1 -1
- package/dist/core/models/xai.js +12 -0
- package/dist/core/models/xai.js.map +1 -1
- package/dist/core/session-config.d.ts +10 -1
- package/dist/core/session-config.js +16 -0
- package/dist/core/session-config.js.map +1 -1
- package/dist/core/skills/built-in/hooman-config/SKILL.md +20 -12
- package/dist/core/state/file-tool-display.d.ts +6 -0
- package/dist/core/state/file-tool-display.js.map +1 -1
- package/dist/core/state/todos.d.ts +11 -0
- package/dist/core/state/todos.js +2 -0
- package/dist/core/state/todos.js.map +1 -1
- package/dist/core/state/tool-approvals.d.ts +6 -7
- package/dist/core/state/tool-approvals.js +7 -50
- package/dist/core/state/tool-approvals.js.map +1 -1
- package/dist/core/tools/filesystem.js +83 -27
- package/dist/core/tools/filesystem.js.map +1 -1
- package/dist/core/tools/shell.js +39 -0
- package/dist/core/tools/shell.js.map +1 -1
- package/dist/core/tools/terminal-backend.d.ts +41 -0
- package/dist/core/tools/terminal-backend.js +9 -0
- package/dist/core/tools/terminal-backend.js.map +1 -0
- package/dist/core/tools/text-fs-backend.d.ts +25 -0
- package/dist/core/tools/text-fs-backend.js +9 -0
- package/dist/core/tools/text-fs-backend.js.map +1 -0
- package/dist/core/tools/todo.d.ts +1 -0
- package/dist/core/tools/todo.js +2 -1
- package/dist/core/tools/todo.js.map +1 -1
- package/dist/core/tools/web-search.js +56 -1
- package/dist/core/tools/web-search.js.map +1 -1
- package/dist/core/utils/attachments.js.map +1 -1
- package/dist/core/utils/paths.d.ts +1 -0
- package/dist/core/utils/paths.js +1 -0
- package/dist/core/utils/paths.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/acp/sessions/options.d.ts +0 -10
- package/dist/acp/sessions/options.js +0 -89
- package/dist/acp/sessions/options.js.map +0 -1
|
@@ -13,13 +13,40 @@ export var LlmProvider;
|
|
|
13
13
|
LlmProvider["OpenRouter"] = "openrouter";
|
|
14
14
|
LlmProvider["Xai"] = "xai";
|
|
15
15
|
})(LlmProvider || (LlmProvider = {}));
|
|
16
|
+
/**
|
|
17
|
+
* Effort -> `budget_tokens` for providers that take an explicit thinking budget
|
|
18
|
+
* (Anthropic/MiniMax via the Anthropic API, Bedrock Converse). We always send a
|
|
19
|
+
* budget rather than omitting it; `medium` is the default when no effort is set.
|
|
20
|
+
*/
|
|
21
|
+
export const REASONING_BUDGET_TOKENS = {
|
|
22
|
+
minimal: 1024,
|
|
23
|
+
low: 2048,
|
|
24
|
+
medium: 4096,
|
|
25
|
+
high: 8192,
|
|
26
|
+
};
|
|
16
27
|
const NonEmptyStringSchema = z.string().min(1);
|
|
17
28
|
const HeadersSchema = z.record(z.string(), z.string()).optional();
|
|
18
|
-
export const
|
|
19
|
-
export const
|
|
20
|
-
|
|
21
|
-
|
|
29
|
+
export const OpenAIApiSchema = z.enum(["chat", "responses"]);
|
|
30
|
+
export const ReasoningEffortSchema = z.enum([
|
|
31
|
+
"minimal",
|
|
32
|
+
"low",
|
|
33
|
+
"medium",
|
|
34
|
+
"high",
|
|
35
|
+
]);
|
|
36
|
+
export const ReasoningSummarySchema = z.enum([
|
|
37
|
+
"auto",
|
|
38
|
+
"concise",
|
|
39
|
+
"detailed",
|
|
40
|
+
"none",
|
|
22
41
|
]);
|
|
42
|
+
export const ReasoningDisplaySchema = z.enum(["summarized", "omitted"]);
|
|
43
|
+
export const ReasoningOptionsSchema = z
|
|
44
|
+
.object({
|
|
45
|
+
effort: ReasoningEffortSchema.optional(),
|
|
46
|
+
summary: ReasoningSummarySchema.optional(),
|
|
47
|
+
display: ReasoningDisplaySchema.optional(),
|
|
48
|
+
})
|
|
49
|
+
.strict();
|
|
23
50
|
export const LlmOptionsSchema = z
|
|
24
51
|
.object({
|
|
25
52
|
model: NonEmptyStringSchema,
|
|
@@ -32,7 +59,7 @@ export const AnthropicProviderOptionsSchema = z
|
|
|
32
59
|
apiKey: NonEmptyStringSchema.optional(),
|
|
33
60
|
baseURL: NonEmptyStringSchema.optional(),
|
|
34
61
|
headers: HeadersSchema,
|
|
35
|
-
|
|
62
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
36
63
|
})
|
|
37
64
|
.strict();
|
|
38
65
|
export const AzureProviderOptionsSchema = z
|
|
@@ -43,6 +70,7 @@ export const AzureProviderOptionsSchema = z
|
|
|
43
70
|
headers: HeadersSchema,
|
|
44
71
|
apiVersion: NonEmptyStringSchema.optional(),
|
|
45
72
|
useDeploymentBasedUrls: z.boolean().optional(),
|
|
73
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
46
74
|
})
|
|
47
75
|
.strict();
|
|
48
76
|
export const BedrockProviderOptionsSchema = z
|
|
@@ -52,6 +80,7 @@ export const BedrockProviderOptionsSchema = z
|
|
|
52
80
|
secretAccessKey: NonEmptyStringSchema.optional(),
|
|
53
81
|
sessionToken: NonEmptyStringSchema.optional(),
|
|
54
82
|
apiKey: NonEmptyStringSchema.optional(),
|
|
83
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
55
84
|
})
|
|
56
85
|
.strict()
|
|
57
86
|
.superRefine((value, ctx) => {
|
|
@@ -67,6 +96,7 @@ export const BedrockProviderOptionsSchema = z
|
|
|
67
96
|
export const GoogleProviderOptionsSchema = z
|
|
68
97
|
.object({
|
|
69
98
|
apiKey: NonEmptyStringSchema.optional(),
|
|
99
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
70
100
|
})
|
|
71
101
|
.strict();
|
|
72
102
|
export const GroqProviderOptionsSchema = z
|
|
@@ -74,13 +104,14 @@ export const GroqProviderOptionsSchema = z
|
|
|
74
104
|
apiKey: NonEmptyStringSchema.optional(),
|
|
75
105
|
baseURL: NonEmptyStringSchema.optional(),
|
|
76
106
|
headers: HeadersSchema,
|
|
107
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
77
108
|
})
|
|
78
109
|
.strict();
|
|
79
110
|
export const MinimaxProviderOptionsSchema = z
|
|
80
111
|
.object({
|
|
81
112
|
apiKey: NonEmptyStringSchema.optional(),
|
|
82
113
|
headers: HeadersSchema,
|
|
83
|
-
|
|
114
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
84
115
|
})
|
|
85
116
|
.strict();
|
|
86
117
|
export const MoonshotProviderOptionsSchema = z
|
|
@@ -88,12 +119,13 @@ export const MoonshotProviderOptionsSchema = z
|
|
|
88
119
|
apiKey: NonEmptyStringSchema.optional(),
|
|
89
120
|
baseURL: NonEmptyStringSchema.optional(),
|
|
90
121
|
headers: HeadersSchema,
|
|
122
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
91
123
|
})
|
|
92
124
|
.strict();
|
|
93
125
|
export const OllamaProviderOptionsSchema = z
|
|
94
126
|
.object({
|
|
95
127
|
baseURL: NonEmptyStringSchema.optional(),
|
|
96
|
-
|
|
128
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
97
129
|
})
|
|
98
130
|
.strict();
|
|
99
131
|
export const OpenAIProviderOptionsSchema = z
|
|
@@ -101,6 +133,8 @@ export const OpenAIProviderOptionsSchema = z
|
|
|
101
133
|
apiKey: NonEmptyStringSchema.optional(),
|
|
102
134
|
baseURL: NonEmptyStringSchema.optional(),
|
|
103
135
|
headers: HeadersSchema,
|
|
136
|
+
api: OpenAIApiSchema.optional(),
|
|
137
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
104
138
|
})
|
|
105
139
|
.strict();
|
|
106
140
|
export const OpenRouterProviderOptionsSchema = z
|
|
@@ -108,6 +142,7 @@ export const OpenRouterProviderOptionsSchema = z
|
|
|
108
142
|
apiKey: NonEmptyStringSchema.optional(),
|
|
109
143
|
baseURL: NonEmptyStringSchema.optional(),
|
|
110
144
|
headers: HeadersSchema,
|
|
145
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
111
146
|
})
|
|
112
147
|
.strict();
|
|
113
148
|
export const XaiProviderOptionsSchema = z
|
|
@@ -115,6 +150,7 @@ export const XaiProviderOptionsSchema = z
|
|
|
115
150
|
apiKey: NonEmptyStringSchema.optional(),
|
|
116
151
|
baseURL: NonEmptyStringSchema.optional(),
|
|
117
152
|
headers: HeadersSchema,
|
|
153
|
+
reasoning: ReasoningOptionsSchema.optional(),
|
|
118
154
|
})
|
|
119
155
|
.strict();
|
|
120
156
|
export const ProviderOptionsSchemas = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/models/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAN,IAAY,WAYX;AAZD,WAAY,WAAW;IACrB,sCAAuB,CAAA;IACvB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,4BAAa,CAAA;IACb,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;IACrB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,wCAAyB,CAAA;IACzB,0BAAW,CAAA;AACb,CAAC,EAZW,WAAW,KAAX,WAAW,QAYtB;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/models/types.ts"],"names":[],"mappings":"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"}
|
package/dist/core/models/xai.js
CHANGED
|
@@ -7,6 +7,15 @@ export function create(providerOptions, llmOptions) {
|
|
|
7
7
|
headers: providerOptions.headers,
|
|
8
8
|
}).filter((entry) => entry[1] !== undefined));
|
|
9
9
|
const provider = Object.keys(settings).length > 0 ? createXai(settings) : xai;
|
|
10
|
+
// xAI's chat surface only accepts `reasoning_effort` of `low`/`high`
|
|
11
|
+
// (via `providerOptions.xai`), so `minimal`/`low` -> `low`, `medium`/`high` ->
|
|
12
|
+
// `high`. Only reasoning models (e.g. grok-3-mini) honor it.
|
|
13
|
+
const effort = providerOptions.reasoning?.effort;
|
|
14
|
+
const reasoningEffort = effort === undefined
|
|
15
|
+
? undefined
|
|
16
|
+
: effort === "minimal" || effort === "low"
|
|
17
|
+
? "low"
|
|
18
|
+
: "high";
|
|
10
19
|
const config = {
|
|
11
20
|
...(llmOptions.temperature !== undefined
|
|
12
21
|
? { temperature: llmOptions.temperature }
|
|
@@ -14,6 +23,9 @@ export function create(providerOptions, llmOptions) {
|
|
|
14
23
|
...(llmOptions.maxTokens !== undefined
|
|
15
24
|
? { maxTokens: llmOptions.maxTokens }
|
|
16
25
|
: {}),
|
|
26
|
+
...(reasoningEffort
|
|
27
|
+
? { providerOptions: { xai: { reasoningEffort } } }
|
|
28
|
+
: {}),
|
|
17
29
|
};
|
|
18
30
|
return new VercelModel({
|
|
19
31
|
provider: provider(llmOptions.model),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xai.js","sourceRoot":"","sources":["../../../src/core/models/xai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAKhE,MAAM,UAAU,MAAM,CACpB,eAAmC,EACnC,UAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC;QACb,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,OAAO,EAAE,eAAe,CAAC,OAAO;KACjC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CACtB,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9E,MAAM,MAAM,GAA+B;QACzC,GAAG,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS;YACtC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,OAAO,IAAI,WAAW,CAAC;QACrB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QACpC,GAAG,MAAM;KACV,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"xai.js","sourceRoot":"","sources":["../../../src/core/models/xai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAKhE,MAAM,UAAU,MAAM,CACpB,eAAmC,EACnC,UAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC;QACb,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,OAAO,EAAE,eAAe,CAAC,OAAO;KACjC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CACtB,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9E,qEAAqE;IACrE,+EAA+E;IAC/E,6DAA6D;IAC7D,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC;IACjD,MAAM,eAAe,GACnB,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK;YACxC,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,MAAM,CAAC;IACf,MAAM,MAAM,GAA+B;QACzC,GAAG,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS;YACtC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe;YACjB,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE;YACnD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,OAAO,IAAI,WAAW,CAAC;QACrB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QACpC,GAAG,MAAM;KACV,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import { Config } from "./config.js";
|
|
1
|
+
import { Config, type ConfigData, type ConfigUpdateResult } from "./config.js";
|
|
2
2
|
/**
|
|
3
3
|
* Session-scoped config keeps runtime chat/ACP overrides in memory without
|
|
4
4
|
* rewriting the shared on-disk config file.
|
|
5
5
|
*/
|
|
6
6
|
export declare class SessionConfig extends Config {
|
|
7
7
|
persist(): void;
|
|
8
|
+
/**
|
|
9
|
+
* Persist an explicit user preference (e.g. the default model, reasoning
|
|
10
|
+
* effort) to the shared base config file. The change is derived from — and
|
|
11
|
+
* written to — a freshly loaded base config without project overlays, so the
|
|
12
|
+
* session's ephemeral overrides and any overlay-provided values never leak
|
|
13
|
+
* into the shared file. The live session's in-memory state is updated
|
|
14
|
+
* separately by the caller (via `update`).
|
|
15
|
+
*/
|
|
16
|
+
persistToDisk(build: (config: Config) => Partial<ConfigData> | null): ConfigUpdateResult;
|
|
8
17
|
}
|
|
9
18
|
export declare function createSessionConfig(): SessionConfig;
|
|
@@ -9,6 +9,22 @@ export class SessionConfig extends Config {
|
|
|
9
9
|
persist() {
|
|
10
10
|
// Session config overrides are intentionally ephemeral.
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Persist an explicit user preference (e.g. the default model, reasoning
|
|
14
|
+
* effort) to the shared base config file. The change is derived from — and
|
|
15
|
+
* written to — a freshly loaded base config without project overlays, so the
|
|
16
|
+
* session's ephemeral overrides and any overlay-provided values never leak
|
|
17
|
+
* into the shared file. The live session's in-memory state is updated
|
|
18
|
+
* separately by the caller (via `update`).
|
|
19
|
+
*/
|
|
20
|
+
persistToDisk(build) {
|
|
21
|
+
const base = new Config(this.path);
|
|
22
|
+
const partial = build(base);
|
|
23
|
+
if (!partial) {
|
|
24
|
+
return { ok: true };
|
|
25
|
+
}
|
|
26
|
+
return base.tryUpdate(partial);
|
|
27
|
+
}
|
|
12
28
|
}
|
|
13
29
|
export function createSessionConfig() {
|
|
14
30
|
return new SessionConfig(configJsonPath(), runtimeConfigOptions());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-config.js","sourceRoot":"","sources":["../../src/core/session-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"session-config.js","sourceRoot":"","sources":["../../src/core/session-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA4C,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,MAAM;IACvB,OAAO;QACrB,wDAAwD;IAC1D,CAAC;IAED;;;;;;;OAOG;IACa,aAAa,CAC3B,KAAqD;QAErD,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,aAAa,CAAC,cAAc,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -59,6 +59,7 @@ This is the default shape Hooman writes when `~/.hooman/config.json` is missing:
|
|
|
59
59
|
"brave": {},
|
|
60
60
|
"exa": {},
|
|
61
61
|
"firecrawl": {},
|
|
62
|
+
"litellm": {},
|
|
62
63
|
"serper": {},
|
|
63
64
|
"tavily": {}
|
|
64
65
|
},
|
|
@@ -160,17 +161,17 @@ Common shape:
|
|
|
160
161
|
|
|
161
162
|
Provider notes:
|
|
162
163
|
|
|
163
|
-
- `anthropic`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `
|
|
164
|
-
- `azure`: provider `options` support optional `resourceName`, optional `baseURL`, optional `apiKey`, optional `headers`, optional `apiVersion`, and optional `
|
|
165
|
-
- `bedrock`: provider `options` support `region`, `accessKeyId`, `secretAccessKey`, `sessionToken`, and optional `
|
|
166
|
-
- `google`: provider `options` support `apiKey
|
|
167
|
-
- `groq`: provider `options` support `apiKey`, optional `baseURL`, and optional `
|
|
168
|
-
- `minimax`: provider `options` support `apiKey`, optional `headers`, and optional `thinking
|
|
169
|
-
- `moonshot`: provider `options` support `apiKey`, optional `baseURL`, and optional `
|
|
170
|
-
- `ollama`: provider `options` support optional `baseURL` and optional `thinking
|
|
171
|
-
- `openai`: provider `options` support `apiKey`, optional `baseURL`, and optional `
|
|
172
|
-
- `openrouter`: provider `options` support `apiKey`, optional `baseURL`, and optional `
|
|
173
|
-
- `xai`: provider `options` support `apiKey`, optional `baseURL`, and optional `
|
|
164
|
+
- `anthropic`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `display` — `"summarized"` or `"omitted"`). Providing `reasoning` enables extended thinking (sent as `thinking: { type: "enabled", budget_tokens }`); `effort` defaults to `"medium"` and maps to an explicit budget (`minimal`→1024, `low`→2048, `medium`→4096, `high`→8192). When thinking is enabled Hooman drops any custom `temperature` (Anthropic requires it unset/`1`). `display` is for Bedrock Claude (via an Anthropic-compatible proxy) and MiniMax only: newer Bedrock Claude models (e.g. Opus 4.7+) hide reasoning by default and reject `type: "enabled"`, so set `display: "summarized"` to reveal reasoning — this switches the request to `thinking: { type: "adaptive", display }` with `output_config.effort` (`minimal`→`low`, else passthrough). Do NOT set `display` for the native Anthropic API (api.anthropic.com); it rejects `adaptive`/`display`/`output_config`. Omit `reasoning` to keep thinking off. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
165
|
+
- `azure`: provider `options` support optional `resourceName`, optional `baseURL`, optional `apiKey`, optional `headers`, optional `apiVersion`, optional `useDeploymentBasedUrls`, and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `summary` — `"auto"`, `"concise"`, `"detailed"`, `"none"`). `reasoning` uses the Azure OpenAI Responses API; only reasoning-capable deployments honor it. LLM `options` support `model`, `temperature`, and `maxTokens`. The `model` value should be your Azure deployment name.
|
|
166
|
+
- `bedrock`: provider `options` support `region`, `accessKeyId`, `secretAccessKey`, `sessionToken`, optional `apiKey`, and optional `reasoning` (an object with optional `effort` and optional `display` — `"summarized"` or `"omitted"`). Providing `reasoning` enables extended thinking on supported models (e.g. Claude); because Bedrock's Converse API requires a budget, `effort` (default `"medium"`) maps to `budget_tokens` (`minimal`→1024, `low`→2048, `medium`→4096, `high`→8192). Ensure the LLM `maxTokens` exceeds the budget. Newer Bedrock Claude (e.g. Opus 4.7+) hide reasoning by default and reject `type: "enabled"`; set `display: "summarized"` to reveal it — this switches to `thinking: { type: "adaptive", display }` with `output_config.effort` (`minimal`→`low`, else passthrough) sent via `additionalRequestFields`. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
167
|
+
- `google`: provider `options` support `apiKey` and optional `reasoning` (an object with optional `effort`). Setting `reasoning.effort` enables Gemini thinking with a dynamic budget (`thinkingConfig: { includeThoughts: true, thinkingBudget: -1 }`). LLM `options` support `model`, `temperature`, and `maxTokens` (Hooman maps this to the Google SDK's `maxOutputTokens` internally).
|
|
168
|
+
- `groq`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). `reasoning.effort` maps to Groq's `reasoning_effort` (`minimal`→`low`) and streams reasoning via `reasoning_format: "parsed"`. Only reasoning models honor it. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
169
|
+
- `minimax`: provider `options` support `apiKey`, optional `headers`, and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `display` — `"summarized"` or `"omitted"`). Providing `reasoning` enables thinking, normalized to MiniMax's `thinking: { type: "adaptive", budget_tokens }`; `effort` defaults to `"medium"` and maps to an explicit budget (`minimal`→1024, `low`→2048, `medium`→4096, `high`→8192). Setting `display` switches to `thinking: { type: "adaptive", display }` with `output_config.effort` instead of a budget. Omit `reasoning` to keep thinking off. Hooman routes this through the Anthropic-compatible MiniMax endpoint automatically.
|
|
170
|
+
- `moonshot`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). Setting `reasoning.effort` enables Kimi thinking (`thinking: { type: "enabled" }`). Served through the reasoning-aware openai-compatible adapter, so Kimi's `reasoning_content` is surfaced as thinking. When `baseURL` is omitted, Hooman defaults it to `https://api.moonshot.ai/v1`. To reach Kimi through an OpenAI-compatible proxy (e.g. LiteLLM), use this provider with `baseURL` set to the proxy's `/v1` endpoint — the `openai` provider's Chat adapter would otherwise drop Kimi's reasoning.
|
|
171
|
+
- `ollama`: provider `options` support optional `baseURL` and optional `reasoning` (an object with optional `effort`). Setting `reasoning.effort` enables thinking, mapped to Ollama's `think` level (`minimal`/`low`→`"low"`, `medium`→`"medium"`, `high`→`"high"`). LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
172
|
+
- `openai`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, optional `api` (`"responses"` or `"chat"`, defaults to `"responses"`), and optional `reasoning` (an object with optional `effort` — `"minimal"`, `"low"`, `"medium"`, `"high"` — and optional `summary` — `"auto"` (default), `"concise"`, `"detailed"`, `"none"`). LLM `options` support `model`, `temperature`, and `maxTokens`. Use `"responses"` (the default) to surface model reasoning/thinking; set `"chat"` for OpenAI-compatible endpoints/proxies that do not implement the Responses API. Reasoning summaries stream only on the Responses API, and some models (e.g. GPT-5) require `reasoning.effort` of `"medium"` or higher to emit them; set `reasoning.summary` to `"none"` for non-reasoning models that reject the `reasoning` parameter. Note: `"chat"` mode does NOT surface reasoning (the Chat adapter drops `reasoning_content`); for a proxy that only exposes thinking via chat `reasoning_content` (e.g. Kimi/Moonshot), use the `moonshot` or `openrouter` provider instead. Also note the Responses API may return an empty reasoning item for non-OpenAI backends behind a proxy (they won't stream summary text).
|
|
173
|
+
- `openrouter`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). Served through the reasoning-aware openai-compatible adapter, so `reasoning`/`reasoning_content` deltas are surfaced as thinking. `reasoning.effort` maps to `reasoning_effort`, which OpenRouter normalizes for reasoning models. LLM `options` support `model`, `temperature`, and `maxTokens`. The `model` value is usually a provider-qualified OpenRouter model id such as `anthropic/claude-3.5-sonnet`.
|
|
174
|
+
- `xai`: provider `options` support `apiKey`, optional `baseURL`, optional `headers`, and optional `reasoning` (an object with optional `effort`). `reasoning.effort` maps to xAI's `reasoning_effort` (`low`/`high`; `minimal`/`low`→`low`, `medium`/`high`→`high`). Only reasoning models (e.g. grok-3-mini) honor it. LLM `options` support `model`, `temperature`, and `maxTokens`.
|
|
174
175
|
|
|
175
176
|
Examples:
|
|
176
177
|
|
|
@@ -246,7 +247,7 @@ When editing `providers` or `llms`, preserve unrelated entries and API keys unle
|
|
|
246
247
|
|
|
247
248
|
## Search
|
|
248
249
|
|
|
249
|
-
`search.provider` must be `"brave"`, `"exa"`, `"firecrawl"`, `"serper"`, or `"tavily"`.
|
|
250
|
+
`search.provider` must be `"brave"`, `"exa"`, `"firecrawl"`, `"litellm"`, `"serper"`, or `"tavily"`.
|
|
250
251
|
|
|
251
252
|
```json
|
|
252
253
|
{
|
|
@@ -262,6 +263,11 @@ When editing `providers` or `llms`, preserve unrelated entries and API keys unle
|
|
|
262
263
|
"firecrawl": {
|
|
263
264
|
"apiKey": "..."
|
|
264
265
|
},
|
|
266
|
+
"litellm": {
|
|
267
|
+
"baseURL": "https://your-litellm-host",
|
|
268
|
+
"apiKey": "sk-...",
|
|
269
|
+
"tool": "perplexity-search"
|
|
270
|
+
},
|
|
265
271
|
"serper": {
|
|
266
272
|
"apiKey": "..."
|
|
267
273
|
},
|
|
@@ -276,6 +282,8 @@ Hooman calls Exa through the official **`exa-js`** SDK ([Exa search API](https:/
|
|
|
276
282
|
|
|
277
283
|
Hooman calls Firecrawl through **`@mendable/firecrawl-js`** ([Firecrawl search API](https://docs.firecrawl.dev/api-reference/endpoint/search)).
|
|
278
284
|
|
|
285
|
+
The `litellm` provider calls a [LiteLLM](https://docs.litellm.ai/docs/search/) proxy's Perplexity-compatible `POST {baseURL}/v1/search/{tool}` endpoint using the virtual key as `apiKey`. It requires `baseURL`, `apiKey`, and `tool` (the `search_tool_name` registered on the proxy). The actual upstream search provider (perplexity, tavily, exa, brave, etc.) is chosen by the proxy config, so no provider API key is stored in Hooman.
|
|
286
|
+
|
|
279
287
|
Defaults: `enabled: false`, `provider: "brave"`, all provider API keys unset.
|
|
280
288
|
|
|
281
289
|
## Prompts
|
|
@@ -9,6 +9,12 @@ export type StructuredPatchHunk = {
|
|
|
9
9
|
export type FileToolDisplay = {
|
|
10
10
|
previews?: string[];
|
|
11
11
|
structuredPatch?: StructuredPatchHunk[];
|
|
12
|
+
/** Absolute path of the file this tool modified (ACP diffs + follow-along). */
|
|
13
|
+
path?: string;
|
|
14
|
+
/** Full content before the change; `null` when the file was newly created. */
|
|
15
|
+
oldText?: string | null;
|
|
16
|
+
/** Full content after the change. */
|
|
17
|
+
newText?: string;
|
|
12
18
|
};
|
|
13
19
|
type DisplayStateStore = {
|
|
14
20
|
get(key: string): JSONValue | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-tool-display.js","sourceRoot":"","sources":["../../../src/core/state/file-tool-display.ts"],"names":[],"mappings":"AAEA,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"file-tool-display.js","sourceRoot":"","sources":["../../../src/core/state/file-tool-display.ts"],"names":[],"mappings":"AAEA,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;AA2BtD,SAAS,gBAAgB,CACvB,QAA2B;IAE3B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACxD,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAE,KAAyC;QAC5C,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAA2B,EAC3B,SAA6B,EAC7B,OAAwB;IAExB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,GAAG,CAAC,2BAA2B,EAAE;QACxC,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAC7B,CAAC,SAAS,CAAC,EAAE,OAAO;KACrB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAA2B,EAC3B,SAAwB;IAExB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IACtD,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,QAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,GAAG,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -6,6 +6,11 @@ export declare const TodoStatusSchema: z.ZodEnum<{
|
|
|
6
6
|
completed: "completed";
|
|
7
7
|
in_progress: "in_progress";
|
|
8
8
|
}>;
|
|
9
|
+
export declare const TodoPrioritySchema: z.ZodEnum<{
|
|
10
|
+
low: "low";
|
|
11
|
+
medium: "medium";
|
|
12
|
+
high: "high";
|
|
13
|
+
}>;
|
|
9
14
|
export declare const TodoItemSchema: z.ZodObject<{
|
|
10
15
|
content: z.ZodString;
|
|
11
16
|
status: z.ZodEnum<{
|
|
@@ -14,8 +19,14 @@ export declare const TodoItemSchema: z.ZodObject<{
|
|
|
14
19
|
in_progress: "in_progress";
|
|
15
20
|
}>;
|
|
16
21
|
activeForm: z.ZodString;
|
|
22
|
+
priority: z.ZodDefault<z.ZodEnum<{
|
|
23
|
+
low: "low";
|
|
24
|
+
medium: "medium";
|
|
25
|
+
high: "high";
|
|
26
|
+
}>>;
|
|
17
27
|
}, z.core.$strip>;
|
|
18
28
|
export type TodoStatus = z.infer<typeof TodoStatusSchema>;
|
|
29
|
+
export type TodoPriority = z.infer<typeof TodoPrioritySchema>;
|
|
19
30
|
export type TodoItem = z.infer<typeof TodoItemSchema>;
|
|
20
31
|
type AppStateLike = {
|
|
21
32
|
get<T = unknown>(key: string): T;
|
package/dist/core/state/todos.js
CHANGED
|
@@ -2,10 +2,12 @@ import { z } from "zod";
|
|
|
2
2
|
export const TODO_ITEMS_STATE_KEY = "todo.items";
|
|
3
3
|
export const TODO_VISIBLE_STATE_KEY = "todo.visible";
|
|
4
4
|
export const TodoStatusSchema = z.enum(["pending", "in_progress", "completed"]);
|
|
5
|
+
export const TodoPrioritySchema = z.enum(["high", "medium", "low"]);
|
|
5
6
|
export const TodoItemSchema = z.object({
|
|
6
7
|
content: z.string().trim().min(1),
|
|
7
8
|
status: TodoStatusSchema,
|
|
8
9
|
activeForm: z.string().trim().min(1),
|
|
10
|
+
priority: TodoPrioritySchema.default("medium"),
|
|
9
11
|
});
|
|
10
12
|
function normalizeTodoItems(value) {
|
|
11
13
|
if (!Array.isArray(value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos.js","sourceRoot":"","sources":["../../../src/core/state/todos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAErD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"todos.js","sourceRoot":"","sources":["../../../src/core/state/todos.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,19 +11,18 @@ export declare const EXIT_PLAN_MODE_TOOL = "exit_plan_mode";
|
|
|
11
11
|
export declare const INTERNAL_ALWAYS_ALLOWED: Set<string>;
|
|
12
12
|
/**
|
|
13
13
|
* In session mode `plan`, block `write_file` / `edit_file` unless the target path resolves
|
|
14
|
-
* under the app plans directory. Runs before
|
|
14
|
+
* under the app plans directory. Runs before any “always allow” grant so plan boundaries
|
|
15
15
|
* cannot be overridden by tooling preferences.
|
|
16
16
|
*/
|
|
17
17
|
export declare function planModeWriteEditRejectionMessage(agent: AgentLike, toolName: string, toolInput: unknown): string | null;
|
|
18
|
-
export declare function getSessionAllowedTools(agent: AgentLike): string[];
|
|
19
18
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* plans
|
|
19
|
+
* Implicit, always-on allow for filesystem tools whose targets stay inside
|
|
20
|
+
* trusted app-home dirs: reads under attachments or plans, writes/edits under
|
|
21
|
+
* plans. Persistent "always allow" grants are handled separately by the
|
|
22
|
+
* on-disk {@link Allowlist} (see `../approvals/allowlist.ts`).
|
|
23
23
|
*/
|
|
24
|
-
export declare function
|
|
24
|
+
export declare function isImplicitlyAllowed(toolName: string, toolInput?: unknown): boolean;
|
|
25
25
|
export declare function isToolVisible(mode: SessionMode, toolName: string, options?: {
|
|
26
26
|
mcpReadOnlyHint?: boolean;
|
|
27
27
|
}): boolean;
|
|
28
|
-
export declare function allowToolForSession(agent: AgentLike, toolName: string): void;
|
|
29
28
|
export {};
|
|
@@ -2,7 +2,6 @@ import { getModeTools } from "../modes/definitions.js";
|
|
|
2
2
|
import { getModeState } from "./session-mode.js";
|
|
3
3
|
import { isResolvedPathInsideDir, normalizeUserPath, } from "../utils/normalize-user-path.js";
|
|
4
4
|
import { attachmentsPath, plansPath } from "../utils/paths.js";
|
|
5
|
-
const SESSION_ALLOWED_TOOLS_KEY = "allowedTools";
|
|
6
5
|
const READ_FILE_TOOL = "read_file";
|
|
7
6
|
const READ_MULTIPLE_FILES_TOOL = "read_multiple_files";
|
|
8
7
|
const WRITE_FILE_TOOL = "write_file";
|
|
@@ -44,7 +43,7 @@ function isPlainObjectRecord(value) {
|
|
|
44
43
|
}
|
|
45
44
|
/**
|
|
46
45
|
* In session mode `plan`, block `write_file` / `edit_file` unless the target path resolves
|
|
47
|
-
* under the app plans directory. Runs before
|
|
46
|
+
* under the app plans directory. Runs before any “always allow” grant so plan boundaries
|
|
48
47
|
* cannot be overridden by tooling preferences.
|
|
49
48
|
*/
|
|
50
49
|
export function planModeWriteEditRejectionMessage(agent, toolName, toolInput) {
|
|
@@ -108,45 +107,14 @@ function isImplicitPathAllowed(toolName, toolInput) {
|
|
|
108
107
|
}
|
|
109
108
|
return false;
|
|
110
109
|
}
|
|
111
|
-
function normalizeAllowedTools(value) {
|
|
112
|
-
if (!Array.isArray(value)) {
|
|
113
|
-
return [];
|
|
114
|
-
}
|
|
115
|
-
const unique = new Set();
|
|
116
|
-
for (const entry of value) {
|
|
117
|
-
if (typeof entry !== "string") {
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
const normalized = entry.trim();
|
|
121
|
-
if (!normalized) {
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
unique.add(normalized);
|
|
125
|
-
}
|
|
126
|
-
return [...unique];
|
|
127
|
-
}
|
|
128
|
-
export function getSessionAllowedTools(agent) {
|
|
129
|
-
const current = normalizeAllowedTools(agent.appState.get(SESSION_ALLOWED_TOOLS_KEY));
|
|
130
|
-
const raw = agent.appState.get(SESSION_ALLOWED_TOOLS_KEY);
|
|
131
|
-
if (!Array.isArray(raw) || current.length !== raw.length) {
|
|
132
|
-
agent.appState.set(SESSION_ALLOWED_TOOLS_KEY, current);
|
|
133
|
-
}
|
|
134
|
-
return current;
|
|
135
|
-
}
|
|
136
110
|
/**
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
* plans
|
|
111
|
+
* Implicit, always-on allow for filesystem tools whose targets stay inside
|
|
112
|
+
* trusted app-home dirs: reads under attachments or plans, writes/edits under
|
|
113
|
+
* plans. Persistent "always allow" grants are handled separately by the
|
|
114
|
+
* on-disk {@link Allowlist} (see `../approvals/allowlist.ts`).
|
|
140
115
|
*/
|
|
141
|
-
export function
|
|
142
|
-
|
|
143
|
-
return true;
|
|
144
|
-
}
|
|
145
|
-
if (isPlainObjectRecord(toolInput) &&
|
|
146
|
-
isImplicitPathAllowed(toolName, toolInput)) {
|
|
147
|
-
return true;
|
|
148
|
-
}
|
|
149
|
-
return false;
|
|
116
|
+
export function isImplicitlyAllowed(toolName, toolInput) {
|
|
117
|
+
return (isPlainObjectRecord(toolInput) && isImplicitPathAllowed(toolName, toolInput));
|
|
150
118
|
}
|
|
151
119
|
export function isToolVisible(mode, toolName, options) {
|
|
152
120
|
const readOnlyHinted = options?.mcpReadOnlyHint === true;
|
|
@@ -162,15 +130,4 @@ export function isToolVisible(mode, toolName, options) {
|
|
|
162
130
|
}
|
|
163
131
|
return false;
|
|
164
132
|
}
|
|
165
|
-
export function allowToolForSession(agent, toolName) {
|
|
166
|
-
const normalized = toolName.trim();
|
|
167
|
-
if (!normalized) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
const allowed = getSessionAllowedTools(agent);
|
|
171
|
-
if (allowed.includes(normalized)) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
agent.appState.set(SESSION_ALLOWED_TOOLS_KEY, [...allowed, normalized]);
|
|
175
|
-
}
|
|
176
133
|
//# sourceMappingURL=tool-approvals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-approvals.js","sourceRoot":"","sources":["../../../src/core/state/tool-approvals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAW/D,MAAM,
|
|
1
|
+
{"version":3,"file":"tool-approvals.js","sourceRoot":"","sources":["../../../src/core/state/tool-approvals.ts"],"names":[],"mappings":"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"}
|