atom-lite 0.4.1 → 0.6.2
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/CHANGELOG.md +35 -1
- package/README.md +41 -108
- package/dist/agent/loop.d.ts +15 -0
- package/dist/agent/loop.js +277 -57
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/model-turn.d.ts +37 -0
- package/dist/agent/model-turn.js +53 -0
- package/dist/agent/model-turn.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +1 -0
- package/dist/agent/system-prompt.js +23 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/turn-recorder.d.ts +33 -0
- package/dist/agent/turn-recorder.js +74 -0
- package/dist/agent/turn-recorder.js.map +1 -0
- package/dist/agent/types.d.ts +15 -0
- package/dist/cli/app.js +570 -68
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands.d.ts +3 -0
- package/dist/cli/commands.js +20 -5
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/diff-view.d.ts +18 -0
- package/dist/cli/diff-view.js +66 -0
- package/dist/cli/diff-view.js.map +1 -0
- package/dist/cli/main.js +2 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mouse.js +4 -1
- package/dist/cli/mouse.js.map +1 -1
- package/dist/cli/panel.js +8 -8
- package/dist/cli/panel.js.map +1 -1
- package/dist/cli/status-line.d.ts +2 -0
- package/dist/cli/status-line.js +9 -1
- package/dist/cli/status-line.js.map +1 -1
- package/dist/cli/stream-text.js +1 -0
- package/dist/cli/stream-text.js.map +1 -1
- package/dist/cli/theme.d.ts +1 -1
- package/dist/cli/theme.js +2 -0
- package/dist/cli/theme.js.map +1 -1
- package/dist/cli/tool-box.d.ts +1 -1
- package/dist/cli/tool-box.js +44 -39
- package/dist/cli/tool-box.js.map +1 -1
- package/dist/cli/transcript.d.ts +15 -1
- package/dist/cli/transcript.js +40 -1
- package/dist/cli/transcript.js.map +1 -1
- package/dist/cli/trust-prompt.d.ts +24 -0
- package/dist/cli/trust-prompt.js +89 -0
- package/dist/cli/trust-prompt.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -5
- package/dist/config/defaults.js +8 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/load.js +33 -3
- package/dist/config/load.js.map +1 -1
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.js +12 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.d.ts +14 -14
- package/dist/config/schema.js +6 -5
- package/dist/config/schema.js.map +1 -1
- package/dist/context/manager.d.ts +17 -3
- package/dist/context/manager.js +129 -41
- package/dist/context/manager.js.map +1 -1
- package/dist/extensions/api.d.ts +51 -1
- package/dist/extensions/api.js +124 -6
- package/dist/extensions/api.js.map +1 -1
- package/dist/extensions/discovery.d.ts +16 -0
- package/dist/extensions/discovery.js +191 -108
- package/dist/extensions/discovery.js.map +1 -1
- package/dist/extensions/loader.d.ts +42 -1
- package/dist/extensions/loader.js +272 -32
- package/dist/extensions/loader.js.map +1 -1
- package/dist/extensions/session-manager.d.ts +44 -0
- package/dist/extensions/session-manager.js +137 -0
- package/dist/extensions/session-manager.js.map +1 -0
- package/dist/extensions/tool-adapter.d.ts +12 -0
- package/dist/extensions/tool-adapter.js +157 -0
- package/dist/extensions/tool-adapter.js.map +1 -0
- package/dist/extensions/trust.d.ts +2 -0
- package/dist/extensions/trust.js +32 -17
- package/dist/extensions/trust.js.map +1 -1
- package/dist/extensions/types.d.ts +45 -3
- package/dist/extensions/ui.d.ts +21 -0
- package/dist/extensions/ui.js +75 -0
- package/dist/extensions/ui.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/stdio-transport.js +3 -20
- package/dist/mcp/stdio-transport.js.map +1 -1
- package/dist/runtime/modes.d.ts +3 -0
- package/dist/runtime/modes.js +8 -0
- package/dist/runtime/modes.js.map +1 -0
- package/dist/runtime/scheduler.d.ts +4 -3
- package/dist/runtime/scheduler.js +7 -105
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/runtime/tool-executor.d.ts +18 -0
- package/dist/runtime/tool-executor.js +136 -0
- package/dist/runtime/tool-executor.js.map +1 -0
- package/dist/security/process.d.ts +10 -0
- package/dist/security/process.js +36 -0
- package/dist/security/process.js.map +1 -1
- package/dist/sessions/store.js +2 -3
- package/dist/sessions/store.js.map +1 -1
- package/dist/skills/registry.js +8 -1
- package/dist/skills/registry.js.map +1 -1
- package/dist/tools/bash.js +7 -4
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/glob.d.ts +2 -0
- package/dist/tools/glob.js +97 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +2 -0
- package/dist/tools/grep.js +290 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/types.d.ts +8 -0
- package/dist/types.d.ts +0 -3
- package/dist/types.js +1 -4
- package/dist/types.js.map +1 -1
- package/package.json +5 -2
- package/skills/atom-lite-extensions/SKILL.md +240 -0
- package/skills/caveman/SKILL.md +89 -0
- package/skills/code-review/SKILL.md +46 -0
- package/skills/optimization/SKILL.md +51 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
export function coerceToolArguments(schema, input) {
|
|
2
|
+
const result = { ...(input ?? {}) };
|
|
3
|
+
const properties = (schema?.properties ?? {});
|
|
4
|
+
const required = Array.isArray(schema?.required)
|
|
5
|
+
? schema.required
|
|
6
|
+
: [];
|
|
7
|
+
for (const [key, prop] of Object.entries(properties)) {
|
|
8
|
+
if (result[key] === undefined)
|
|
9
|
+
continue;
|
|
10
|
+
const type = prop?.type;
|
|
11
|
+
if (result[key] === null && !required.includes(key)) {
|
|
12
|
+
delete result[key];
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
if (type === "number" || type === "integer") {
|
|
16
|
+
if (typeof result[key] === "string") {
|
|
17
|
+
const n = Number(result[key]);
|
|
18
|
+
if (!Number.isNaN(n))
|
|
19
|
+
result[key] = n;
|
|
20
|
+
}
|
|
21
|
+
else if (typeof result[key] === "boolean") {
|
|
22
|
+
result[key] = result[key] ? 1 : 0;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else if (type === "boolean") {
|
|
26
|
+
if (typeof result[key] === "string") {
|
|
27
|
+
if (result[key] === "true")
|
|
28
|
+
result[key] = true;
|
|
29
|
+
if (result[key] === "false")
|
|
30
|
+
result[key] = false;
|
|
31
|
+
}
|
|
32
|
+
else if (typeof result[key] === "number") {
|
|
33
|
+
result[key] = result[key] !== 0;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (type === "string") {
|
|
37
|
+
if (result[key] !== null && typeof result[key] !== "string") {
|
|
38
|
+
result[key] = String(result[key]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (type === "array") {
|
|
42
|
+
if (!Array.isArray(result[key]) && result[key] !== null) {
|
|
43
|
+
result[key] = [result[key]];
|
|
44
|
+
}
|
|
45
|
+
if (Array.isArray(result[key]) && prop?.items) {
|
|
46
|
+
result[key] = result[key].map((item) => typeof prop.items === "object" && prop.items?.type
|
|
47
|
+
? coerceScalar(prop.items, item)
|
|
48
|
+
: item);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else if (type === "object" && prop?.properties) {
|
|
52
|
+
if (result[key] && typeof result[key] === "object") {
|
|
53
|
+
result[key] = coerceToolArguments(prop, result[key]);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
function coerceScalar(prop, value) {
|
|
60
|
+
if (value === null)
|
|
61
|
+
return value;
|
|
62
|
+
const type = prop?.type;
|
|
63
|
+
if (type === "number" || type === "integer") {
|
|
64
|
+
if (typeof value === "string") {
|
|
65
|
+
const n = Number(value);
|
|
66
|
+
if (!Number.isNaN(n))
|
|
67
|
+
return n;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (type === "boolean" && typeof value === "string") {
|
|
71
|
+
if (value === "true")
|
|
72
|
+
return true;
|
|
73
|
+
if (value === "false")
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
if (type === "string" && value !== null && typeof value !== "string") {
|
|
77
|
+
return String(value);
|
|
78
|
+
}
|
|
79
|
+
return value;
|
|
80
|
+
}
|
|
81
|
+
export function extensionToolToAgentTool(extensionTool, extensionContext) {
|
|
82
|
+
const tool = {
|
|
83
|
+
definition: {
|
|
84
|
+
name: extensionTool.name,
|
|
85
|
+
description: extensionTool.description,
|
|
86
|
+
parameters: extensionTool.parameters ?? {},
|
|
87
|
+
},
|
|
88
|
+
annotations: extensionTool.annotations,
|
|
89
|
+
exposure: extensionTool.exposure,
|
|
90
|
+
execute: async (call, toolCtx) => {
|
|
91
|
+
const coerced = coerceToolArguments(extensionTool.parameters, call.arguments ?? {});
|
|
92
|
+
call.arguments = coerced;
|
|
93
|
+
const signal = toolCtx.signal;
|
|
94
|
+
const onUpdate = (partial) => {
|
|
95
|
+
toolCtx.onToolOutput?.(call, "stdout", JSON.stringify(partial));
|
|
96
|
+
};
|
|
97
|
+
const ctx = { ...extensionContext };
|
|
98
|
+
let raw;
|
|
99
|
+
try {
|
|
100
|
+
if (extensionTool.execute.length >= 3) {
|
|
101
|
+
raw = await extensionTool.execute(call.id, coerced, signal, onUpdate, ctx);
|
|
102
|
+
}
|
|
103
|
+
else if (extensionTool.execute.length === 2) {
|
|
104
|
+
raw = await extensionTool.execute(coerced, ctx);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
raw = await extensionTool.execute(coerced);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
return {
|
|
112
|
+
toolCallId: call.id,
|
|
113
|
+
name: call.name,
|
|
114
|
+
content: `COMMAND_FAILED: ${error instanceof Error ? error.message : String(error)}`,
|
|
115
|
+
isError: true,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
const content = Array.isArray(raw?.content)
|
|
119
|
+
? raw.content
|
|
120
|
+
.map((part) => part?.type === "text" ? String(part.text ?? "") : "")
|
|
121
|
+
.join("")
|
|
122
|
+
: typeof raw === "string"
|
|
123
|
+
? raw
|
|
124
|
+
: raw === undefined
|
|
125
|
+
? ""
|
|
126
|
+
: JSON.stringify(raw);
|
|
127
|
+
return {
|
|
128
|
+
toolCallId: call.id,
|
|
129
|
+
name: call.name,
|
|
130
|
+
content,
|
|
131
|
+
isError: raw?.isError === true,
|
|
132
|
+
details: raw?.details,
|
|
133
|
+
structuredContent: raw?.structuredContent,
|
|
134
|
+
usage: raw?.usage,
|
|
135
|
+
diff: raw?.diff,
|
|
136
|
+
};
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
return tool;
|
|
140
|
+
}
|
|
141
|
+
export function collectExtensionTools(loader) {
|
|
142
|
+
const out = [];
|
|
143
|
+
for (const loaded of loader.list()) {
|
|
144
|
+
const ctx = loaded.context ?? {
|
|
145
|
+
workspace: process.cwd(),
|
|
146
|
+
trusted: true,
|
|
147
|
+
hasUI: false,
|
|
148
|
+
ui: null,
|
|
149
|
+
log: () => { },
|
|
150
|
+
};
|
|
151
|
+
for (const tool of loaded.registries.tools.values()) {
|
|
152
|
+
out.push(extensionToolToAgentTool(tool, ctx));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return out;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=tool-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../../src/extensions/tool-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export declare function normalizeProjectPath(projectDir: string): string;
|
|
2
2
|
export declare function isProjectTrusted(projectDir: string, configPath?: string): boolean;
|
|
3
|
+
export declare function isProjectDenied(projectDir: string, configPath?: string): boolean;
|
|
3
4
|
export declare function trustProject(projectDir: string, configPath?: string): void;
|
|
5
|
+
export declare function denyProject(projectDir: string, configPath?: string): void;
|
|
4
6
|
export declare function untrustProject(projectDir: string, configPath?: string): void;
|
package/dist/extensions/trust.js
CHANGED
|
@@ -4,12 +4,22 @@ import { resolve } from "node:path";
|
|
|
4
4
|
export function normalizeProjectPath(projectDir) {
|
|
5
5
|
return resolve(projectDir);
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
function readExtensions(configPath) {
|
|
8
8
|
const config = loadConfig(configPath ? { userConfigPath: configPath } : undefined);
|
|
9
|
+
return {
|
|
10
|
+
trustedProjects: [...(config.extensions?.trustedProjects ?? [])],
|
|
11
|
+
deniedProjects: [...(config.extensions?.deniedProjects ?? [])],
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export function isProjectTrusted(projectDir, configPath) {
|
|
9
15
|
const normalized = normalizeProjectPath(projectDir);
|
|
10
|
-
return (
|
|
16
|
+
return readExtensions(configPath).trustedProjects.includes(normalized);
|
|
11
17
|
}
|
|
12
|
-
export function
|
|
18
|
+
export function isProjectDenied(projectDir, configPath) {
|
|
19
|
+
const normalized = normalizeProjectPath(projectDir);
|
|
20
|
+
return readExtensions(configPath).deniedProjects.includes(normalized);
|
|
21
|
+
}
|
|
22
|
+
function writeDecision(projectDir, decision, configPath) {
|
|
13
23
|
const normalized = normalizeProjectPath(projectDir);
|
|
14
24
|
updateUserConfig((config) => {
|
|
15
25
|
const extensions = config.extensions && typeof config.extensions === "object"
|
|
@@ -18,23 +28,28 @@ export function trustProject(projectDir, configPath) {
|
|
|
18
28
|
const trusted = Array.isArray(extensions.trustedProjects)
|
|
19
29
|
? [...extensions.trustedProjects]
|
|
20
30
|
: [];
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
const denied = Array.isArray(extensions.deniedProjects)
|
|
32
|
+
? [...extensions.deniedProjects]
|
|
33
|
+
: [];
|
|
34
|
+
const without = (paths) => paths.filter((path) => path !== normalized);
|
|
35
|
+
extensions.trustedProjects =
|
|
36
|
+
decision === "trusted"
|
|
37
|
+
? [...without(trusted), normalized]
|
|
38
|
+
: without(trusted);
|
|
39
|
+
extensions.deniedProjects =
|
|
40
|
+
decision === "denied"
|
|
41
|
+
? [...without(denied), normalized]
|
|
42
|
+
: without(denied);
|
|
24
43
|
config.extensions = extensions;
|
|
25
44
|
}, configPath);
|
|
26
45
|
}
|
|
46
|
+
export function trustProject(projectDir, configPath) {
|
|
47
|
+
writeDecision(projectDir, "trusted", configPath);
|
|
48
|
+
}
|
|
49
|
+
export function denyProject(projectDir, configPath) {
|
|
50
|
+
writeDecision(projectDir, "denied", configPath);
|
|
51
|
+
}
|
|
27
52
|
export function untrustProject(projectDir, configPath) {
|
|
28
|
-
|
|
29
|
-
updateUserConfig((config) => {
|
|
30
|
-
const extensions = config.extensions && typeof config.extensions === "object"
|
|
31
|
-
? config.extensions
|
|
32
|
-
: {};
|
|
33
|
-
const trusted = Array.isArray(extensions.trustedProjects)
|
|
34
|
-
? extensions.trustedProjects.filter((path) => path !== normalized)
|
|
35
|
-
: [];
|
|
36
|
-
extensions.trustedProjects = trusted;
|
|
37
|
-
config.extensions = extensions;
|
|
38
|
-
}, configPath);
|
|
53
|
+
writeDecision(projectDir, "none", configPath);
|
|
39
54
|
}
|
|
40
55
|
//# sourceMappingURL=trust.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/extensions/trust.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7B,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/extensions/trust.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,25 +4,67 @@ export interface ExtensionTool {
|
|
|
4
4
|
label: string;
|
|
5
5
|
description: string;
|
|
6
6
|
parameters?: Record<string, unknown>;
|
|
7
|
-
exposure?: "direct" | "model-only" | "hidden";
|
|
8
|
-
|
|
7
|
+
exposure?: "direct" | "model-only" | "hidden" | "codemode" | "deferred";
|
|
8
|
+
annotations?: Record<string, unknown>;
|
|
9
|
+
execute: (...args: any[]) => Promise<unknown>;
|
|
9
10
|
}
|
|
10
11
|
export interface ExtensionCommand {
|
|
11
12
|
name: string;
|
|
12
13
|
description: string;
|
|
13
14
|
argumentHint?: string;
|
|
14
15
|
category?: string;
|
|
15
|
-
|
|
16
|
+
getArgumentCompletions?: (prefix: string) => unknown;
|
|
17
|
+
run?: (args: string, ctx: ExtensionContext) => void | Promise<void>;
|
|
18
|
+
handler?: (args: string, ctx: any) => void | Promise<void>;
|
|
16
19
|
}
|
|
17
20
|
export interface ExtensionWidget {
|
|
18
21
|
id: string;
|
|
19
22
|
location: "aboveInput" | "belowInput" | "footer";
|
|
20
23
|
render: (width: number) => string[];
|
|
21
24
|
}
|
|
25
|
+
export interface ExtensionUIContext {
|
|
26
|
+
select(title: string, options: string[], opts?: any): Promise<string | undefined>;
|
|
27
|
+
confirm(title: string, message: string, opts?: any): Promise<boolean>;
|
|
28
|
+
input(title: string, placeholder?: string, opts?: any): Promise<string | undefined>;
|
|
29
|
+
editor(title: string, prefill?: string, opts?: any): Promise<string | undefined>;
|
|
30
|
+
notify(message: string, type?: "info" | "warning" | "error"): void;
|
|
31
|
+
onTerminalInput(handler: (data: string) => {
|
|
32
|
+
consume?: boolean;
|
|
33
|
+
data?: string;
|
|
34
|
+
} | undefined): () => void;
|
|
35
|
+
setStatus(key: string, text: string | undefined): void;
|
|
36
|
+
setWorkingMessage(message?: string): void;
|
|
37
|
+
setWorkingVisible(visible: boolean): void;
|
|
38
|
+
setWorkingIndicator(options?: {
|
|
39
|
+
frames?: string[];
|
|
40
|
+
intervalMs?: number;
|
|
41
|
+
}): void;
|
|
42
|
+
setHiddenThinkingLabel(label?: string): void;
|
|
43
|
+
setWidget(key: string, content: string[] | ((tui: any, theme: any) => any) | undefined, options?: {
|
|
44
|
+
placement?: "aboveEditor" | "belowEditor";
|
|
45
|
+
}): void;
|
|
46
|
+
setFooter(factory: ((tui: any, theme: any, footerData: any) => any) | undefined): void;
|
|
47
|
+
setHeader(factory: ((tui: any, theme: any) => any) | undefined): void;
|
|
48
|
+
setTitle(title: string): void;
|
|
49
|
+
custom<T>(factory: any, options?: any): Promise<T>;
|
|
50
|
+
pasteToEditor(text: string): void;
|
|
51
|
+
setEditorText(text: string): void;
|
|
52
|
+
getEditorText(): string;
|
|
53
|
+
getToolsExpanded(): boolean;
|
|
54
|
+
setToolsExpanded(expanded: boolean): void;
|
|
55
|
+
getTheme(name: string): any;
|
|
56
|
+
setTheme(theme: string | any): {
|
|
57
|
+
success: boolean;
|
|
58
|
+
error?: string;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
22
61
|
export interface ExtensionContext {
|
|
23
62
|
workspace: string;
|
|
24
63
|
trusted: boolean;
|
|
64
|
+
hasUI: boolean;
|
|
65
|
+
ui: ExtensionUIContext;
|
|
25
66
|
log: (message: string) => void;
|
|
67
|
+
sessionManager?: any;
|
|
26
68
|
}
|
|
27
69
|
export interface ExtensionProvider {
|
|
28
70
|
name: string;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ExtensionContext, ExtensionUIContext } from "./types.js";
|
|
2
|
+
import type { ExtensionRegistries } from "./api.js";
|
|
3
|
+
export interface ExtensionUICallbacks {
|
|
4
|
+
notify?: (message: string, type?: "info" | "warning" | "error") => void;
|
|
5
|
+
requestRender?: () => void;
|
|
6
|
+
getToolsExpanded?: () => boolean;
|
|
7
|
+
setToolsExpanded?: (expanded: boolean) => void;
|
|
8
|
+
select?: (title: string, options: string[], opts?: any) => Promise<string | undefined>;
|
|
9
|
+
confirm?: (title: string, message: string, opts?: any) => Promise<boolean>;
|
|
10
|
+
input?: (title: string, placeholder?: string, opts?: any) => Promise<string | undefined>;
|
|
11
|
+
editor?: (title: string, prefill?: string, opts?: any) => Promise<string | undefined>;
|
|
12
|
+
custom?: <T>(factory: any, options?: any) => Promise<T>;
|
|
13
|
+
pasteToEditor?: (text: string) => void;
|
|
14
|
+
setEditorText?: (text: string) => void;
|
|
15
|
+
getEditorText?: () => string;
|
|
16
|
+
onTerminalInput?: (handler: (data: string) => {
|
|
17
|
+
consume?: boolean;
|
|
18
|
+
data?: string;
|
|
19
|
+
} | undefined) => () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function createDefaultExtensionUI(registries: ExtensionRegistries, ctx: ExtensionContext, callbacks?: ExtensionUICallbacks): ExtensionUIContext;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export function createDefaultExtensionUI(registries, ctx, callbacks = {}) {
|
|
2
|
+
const noopUnsubscribe = () => { };
|
|
3
|
+
return {
|
|
4
|
+
notify: (message, type) => {
|
|
5
|
+
if (callbacks.notify)
|
|
6
|
+
callbacks.notify(message, type);
|
|
7
|
+
else {
|
|
8
|
+
// eslint-disable-next-line no-console
|
|
9
|
+
console.error(`[extension] ${type ?? "info"}: ${message}`);
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
setStatus: (key, text) => {
|
|
13
|
+
if (text === undefined)
|
|
14
|
+
registries.status.delete(key);
|
|
15
|
+
else
|
|
16
|
+
registries.status.set(key, text);
|
|
17
|
+
callbacks.requestRender?.();
|
|
18
|
+
},
|
|
19
|
+
setWorkingMessage: (message) => {
|
|
20
|
+
registries.workingMessage = message;
|
|
21
|
+
},
|
|
22
|
+
setWorkingVisible: (visible) => {
|
|
23
|
+
registries.workingVisible = visible;
|
|
24
|
+
},
|
|
25
|
+
setWorkingIndicator: (options) => {
|
|
26
|
+
registries.workingIndicator = options;
|
|
27
|
+
},
|
|
28
|
+
setHiddenThinkingLabel: (label) => {
|
|
29
|
+
registries.hiddenThinkingLabel = label;
|
|
30
|
+
},
|
|
31
|
+
setWidget: (key, content, options) => {
|
|
32
|
+
if (content === undefined)
|
|
33
|
+
registries.uiWidgets.delete(key);
|
|
34
|
+
else
|
|
35
|
+
registries.uiWidgets.set(key, {
|
|
36
|
+
key,
|
|
37
|
+
content,
|
|
38
|
+
placement: options?.placement ?? "aboveEditor",
|
|
39
|
+
});
|
|
40
|
+
callbacks.requestRender?.();
|
|
41
|
+
},
|
|
42
|
+
setFooter: (factory) => {
|
|
43
|
+
registries.footerFactory = factory;
|
|
44
|
+
callbacks.requestRender?.();
|
|
45
|
+
},
|
|
46
|
+
setHeader: (factory) => {
|
|
47
|
+
registries.headerFactory = factory;
|
|
48
|
+
callbacks.requestRender?.();
|
|
49
|
+
},
|
|
50
|
+
setTitle: (title) => {
|
|
51
|
+
registries.title = title;
|
|
52
|
+
callbacks.requestRender?.();
|
|
53
|
+
},
|
|
54
|
+
select: (title, options, opts) => callbacks.select ? callbacks.select(title, options, opts) : Promise.resolve(undefined),
|
|
55
|
+
confirm: (title, message, opts) => callbacks.confirm ? callbacks.confirm(title, message, opts) : Promise.resolve(false),
|
|
56
|
+
input: (title, placeholder, opts) => callbacks.input ? callbacks.input(title, placeholder, opts) : Promise.resolve(undefined),
|
|
57
|
+
editor: (title, prefill, opts) => callbacks.editor ? callbacks.editor(title, prefill, opts) : Promise.resolve(undefined),
|
|
58
|
+
custom: (factory, options) => callbacks.custom ? callbacks.custom(factory, options) : Promise.resolve(undefined),
|
|
59
|
+
pasteToEditor: (text) => callbacks.pasteToEditor?.(text),
|
|
60
|
+
setEditorText: (text) => callbacks.setEditorText?.(text),
|
|
61
|
+
getEditorText: () => (callbacks.getEditorText ? callbacks.getEditorText() : ""),
|
|
62
|
+
onTerminalInput: (handler) => callbacks.onTerminalInput ? callbacks.onTerminalInput(handler) : () => { },
|
|
63
|
+
getToolsExpanded: () => (callbacks.getToolsExpanded ? callbacks.getToolsExpanded() : registries.toolsExpanded),
|
|
64
|
+
setToolsExpanded: (expanded) => {
|
|
65
|
+
registries.toolsExpanded = expanded;
|
|
66
|
+
if (callbacks.setToolsExpanded)
|
|
67
|
+
callbacks.setToolsExpanded(expanded);
|
|
68
|
+
else
|
|
69
|
+
callbacks.requestRender?.();
|
|
70
|
+
},
|
|
71
|
+
getTheme: () => undefined,
|
|
72
|
+
setTheme: () => ({ success: false, error: "theme switching is not available" }),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/extensions/ui.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export { createProvider } from "./providers/factory.js";
|
|
|
8
8
|
export { InMemoryProviderRegistry } from "./providers/registry.js";
|
|
9
9
|
export { InMemorySession } from "./sessions/store.js";
|
|
10
10
|
export * from "./sessions/store.js";
|
|
11
|
+
export * from "./extensions/session-manager.js";
|
|
11
12
|
export * from "./sessions/events.js";
|
|
12
13
|
export * from "./sessions/recovery.js";
|
|
13
14
|
export { OllamaAdapter, OllamaProvider } from "./providers/ollama.js";
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export { createProvider } from "./providers/factory.js";
|
|
|
7
7
|
export { InMemoryProviderRegistry } from "./providers/registry.js";
|
|
8
8
|
export { InMemorySession } from "./sessions/store.js";
|
|
9
9
|
export * from "./sessions/store.js";
|
|
10
|
+
export * from "./extensions/session-manager.js";
|
|
10
11
|
export * from "./sessions/events.js";
|
|
11
12
|
export * from "./sessions/recovery.js";
|
|
12
13
|
export { OllamaAdapter, OllamaProvider } from "./providers/ollama.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { createInterface } from "node:readline";
|
|
3
|
+
import { terminateProcessTree } from "../security/process.js";
|
|
3
4
|
const ENV_ALLOWLIST = new Set([
|
|
4
5
|
"PATH",
|
|
5
6
|
"HOME",
|
|
@@ -157,28 +158,10 @@ export class StdioTransport {
|
|
|
157
158
|
}
|
|
158
159
|
if (child.exitCode !== null || child.signalCode !== null)
|
|
159
160
|
return;
|
|
160
|
-
|
|
161
|
-
const killGroup = (signal) => {
|
|
162
|
-
if (process.platform !== "win32" && pid) {
|
|
163
|
-
try {
|
|
164
|
-
process.kill(-pid, signal);
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
catch {
|
|
168
|
-
// Fall through to direct child kill.
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
try {
|
|
172
|
-
child.kill(signal);
|
|
173
|
-
}
|
|
174
|
-
catch {
|
|
175
|
-
// Ignore.
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
killGroup("SIGTERM");
|
|
161
|
+
terminateProcessTree(child, "SIGTERM");
|
|
179
162
|
await new Promise((resolve) => {
|
|
180
163
|
const timer = setTimeout(() => {
|
|
181
|
-
|
|
164
|
+
terminateProcessTree(child, "SIGKILL");
|
|
182
165
|
resolve();
|
|
183
166
|
}, 750);
|
|
184
167
|
child.once("close", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-transport.js","sourceRoot":"","sources":["../../src/mcp/stdio-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAkB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"stdio-transport.js","sourceRoot":"","sources":["../../src/mcp/stdio-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Tools disabled in plan mode. */
|
|
2
|
+
export const PLAN_BLOCKED_TOOLS = new Set(["write", "edit", "bash"]);
|
|
3
|
+
export function isToolAllowed(mode, toolName) {
|
|
4
|
+
if (mode === "yolo")
|
|
5
|
+
return true;
|
|
6
|
+
return !PLAN_BLOCKED_TOOLS.has(toolName);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=modes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/runtime/modes.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAErE,MAAM,UAAU,aAAa,CAAC,IAAqB,EAAE,QAAgB;IACnE,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ToolCall } from "../types.js";
|
|
2
2
|
import type { Tool, ToolContext } from "../tools/types.js";
|
|
3
3
|
import type { ToolResult } from "../tools/types.js";
|
|
4
|
-
import { LockManager
|
|
5
|
-
export
|
|
4
|
+
import { LockManager } from "./locks.js";
|
|
5
|
+
export { ToolExecutor } from "./tool-executor.js";
|
|
6
6
|
export { LockManager };
|
|
7
|
-
export type { Release };
|
|
7
|
+
export type { Release } from "./locks.js";
|
|
8
|
+
export declare function executeToolBatch(calls: ToolCall[], toolMap: Map<string, Tool>, ctx: ToolContext, maxParallel: number, signal: AbortSignal, lockManager?: LockManager, bashConcurrency?: "serial" | "parallel"): Promise<ToolResult[]>;
|