atom-lite 0.1.0 → 0.5.1
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 +57 -0
- package/README.md +58 -10
- package/dist/agent/loop.d.ts +11 -0
- package/dist/agent/loop.js +238 -47
- 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/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 +4 -0
- package/dist/cli/activity.d.ts +45 -0
- package/dist/cli/activity.js +141 -0
- package/dist/cli/activity.js.map +1 -0
- package/dist/cli/app.js +1234 -378
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/approval-prompt.d.ts +24 -0
- package/dist/cli/approval-prompt.js +82 -0
- package/dist/cli/approval-prompt.js.map +1 -0
- package/dist/cli/banner.d.ts +5 -1
- package/dist/cli/banner.js +10 -4
- package/dist/cli/banner.js.map +1 -1
- package/dist/cli/commands.d.ts +92 -14
- package/dist/cli/commands.js +330 -52
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/diff.d.ts +1 -0
- package/dist/cli/diff.js +28 -0
- package/dist/cli/diff.js.map +1 -0
- package/dist/cli/input.d.ts +2 -0
- package/dist/cli/input.js +10 -0
- package/dist/cli/input.js.map +1 -0
- package/dist/cli/main.js +2 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mouse.d.ts +54 -0
- package/dist/cli/mouse.js +86 -0
- package/dist/cli/mouse.js.map +1 -0
- package/dist/cli/palette.d.ts +41 -0
- package/dist/cli/palette.js +212 -0
- package/dist/cli/palette.js.map +1 -0
- package/dist/cli/panel.d.ts +29 -0
- package/dist/cli/panel.js +48 -0
- package/dist/cli/panel.js.map +1 -0
- package/dist/cli/picker.d.ts +8 -0
- package/dist/cli/picker.js +26 -28
- package/dist/cli/picker.js.map +1 -1
- package/dist/cli/status-line.d.ts +6 -0
- package/dist/cli/status-line.js +21 -7
- package/dist/cli/status-line.js.map +1 -1
- package/dist/cli/stream-text.d.ts +4 -8
- package/dist/cli/stream-text.js +26 -12
- package/dist/cli/stream-text.js.map +1 -1
- package/dist/cli/theme.d.ts +48 -0
- package/dist/cli/theme.js +160 -0
- package/dist/cli/theme.js.map +1 -0
- package/dist/cli/tool-box.d.ts +41 -0
- package/dist/cli/tool-box.js +177 -0
- package/dist/cli/tool-box.js.map +1 -0
- package/dist/cli/transcript.d.ts +24 -1
- package/dist/cli/transcript.js +65 -2
- 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 +12 -0
- package/dist/config/defaults.js +12 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/load.d.ts +2 -0
- package/dist/config/load.js +36 -0
- 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 +53 -0
- package/dist/config/schema.js +33 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/config/write.d.ts +2 -0
- package/dist/config/write.js +9 -0
- package/dist/config/write.js.map +1 -1
- package/dist/context/builder.d.ts +7 -0
- package/dist/context/builder.js +11 -0
- package/dist/context/builder.js.map +1 -0
- 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 +101 -0
- package/dist/extensions/api.js +219 -0
- package/dist/extensions/api.js.map +1 -0
- package/dist/extensions/discovery.d.ts +42 -0
- package/dist/extensions/discovery.js +326 -0
- package/dist/extensions/discovery.js.map +1 -0
- package/dist/extensions/loader.d.ts +68 -0
- package/dist/extensions/loader.js +353 -0
- package/dist/extensions/loader.js.map +1 -0
- 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 +6 -0
- package/dist/extensions/trust.js +55 -0
- package/dist/extensions/trust.js.map +1 -0
- package/dist/extensions/types.d.ts +94 -0
- package/dist/extensions/types.js +2 -0
- package/dist/extensions/types.js.map +1 -0
- 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 +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/client.d.ts +73 -0
- package/dist/mcp/client.js +363 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/format.d.ts +3 -0
- package/dist/mcp/format.js +37 -0
- package/dist/mcp/format.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.js +7 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +53 -0
- package/dist/mcp/manager.js +349 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/stdio-transport.d.ts +26 -0
- package/dist/mcp/stdio-transport.js +174 -0
- package/dist/mcp/stdio-transport.js.map +1 -0
- package/dist/mcp/tools.d.ts +22 -0
- package/dist/mcp/tools.js +162 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +92 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/providers/factory.js +1 -0
- package/dist/providers/factory.js.map +1 -1
- package/dist/runtime/executor.d.ts +2 -0
- package/dist/runtime/executor.js +4 -0
- package/dist/runtime/executor.js.map +1 -0
- package/dist/runtime/scheduler.d.ts +4 -3
- package/dist/runtime/scheduler.js +7 -98
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/runtime/tool-executor.d.ts +18 -0
- package/dist/runtime/tool-executor.js +126 -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/events.d.ts +9 -0
- package/dist/sessions/events.js +11 -6
- package/dist/sessions/events.js.map +1 -1
- package/dist/sessions/history.d.ts +18 -0
- package/dist/sessions/history.js +76 -0
- package/dist/sessions/history.js.map +1 -0
- package/dist/sessions/index.d.ts +2 -0
- package/dist/sessions/index.js +2 -0
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/search.d.ts +16 -0
- package/dist/sessions/search.js +136 -0
- package/dist/sessions/search.js.map +1 -0
- package/dist/sessions/store.js +7 -4
- package/dist/sessions/store.js.map +1 -1
- package/dist/tools/bash.js +6 -3
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.js +2 -1
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/types.d.ts +6 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { createJiti } from "jiti";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
6
|
+
import { discoverExtensions } from "./discovery.js";
|
|
7
|
+
import { loadConfig } from "../config/load.js";
|
|
8
|
+
import { defaultAgentDir, userConfigDir } from "../config/paths.js";
|
|
9
|
+
import { createExtensionAPI, createExtensionRegistries } from "./api.js";
|
|
10
|
+
import { createDefaultExtensionUI } from "./ui.js";
|
|
11
|
+
export class ExtensionLoader {
|
|
12
|
+
options;
|
|
13
|
+
extensions = [];
|
|
14
|
+
discovered = [];
|
|
15
|
+
lifecycle = [];
|
|
16
|
+
jiti = null;
|
|
17
|
+
constructor(options = {}) {
|
|
18
|
+
this.options = options;
|
|
19
|
+
}
|
|
20
|
+
workspace() {
|
|
21
|
+
return resolve(this.options.cwd ?? this.options.projectDir ?? process.cwd());
|
|
22
|
+
}
|
|
23
|
+
decisions() {
|
|
24
|
+
const config = loadConfig();
|
|
25
|
+
return {
|
|
26
|
+
trusted: this.options.trustedProjects ??
|
|
27
|
+
config.extensions?.trustedProjects ??
|
|
28
|
+
[],
|
|
29
|
+
denied: this.options.deniedProjects ??
|
|
30
|
+
config.extensions?.deniedProjects ??
|
|
31
|
+
[],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
discover() {
|
|
35
|
+
const cwd = this.workspace();
|
|
36
|
+
const decisions = this.decisions();
|
|
37
|
+
const discovered = discoverExtensions({
|
|
38
|
+
cliPaths: this.options.cliPaths,
|
|
39
|
+
cwd,
|
|
40
|
+
agentDir: this.options.agentDir ?? defaultAgentDir(),
|
|
41
|
+
userDir: this.options.userDir ?? join(userConfigDir(), "extensions"),
|
|
42
|
+
projectDir: join(cwd, ".atom-lite", "extensions"),
|
|
43
|
+
packageRoots: this.options.packageRoots,
|
|
44
|
+
trustedProjects: decisions.trusted,
|
|
45
|
+
deniedProjects: decisions.denied,
|
|
46
|
+
});
|
|
47
|
+
this.discovered = discovered;
|
|
48
|
+
return discovered;
|
|
49
|
+
}
|
|
50
|
+
getJiti() {
|
|
51
|
+
if (this.jiti)
|
|
52
|
+
return this.jiti;
|
|
53
|
+
const alias = buildAliasMap();
|
|
54
|
+
const instance = createJiti(import.meta.url, {
|
|
55
|
+
moduleCache: false,
|
|
56
|
+
fsCache: false,
|
|
57
|
+
alias,
|
|
58
|
+
interopDefault: true,
|
|
59
|
+
});
|
|
60
|
+
this.jiti = instance;
|
|
61
|
+
return instance;
|
|
62
|
+
}
|
|
63
|
+
async loadAll() {
|
|
64
|
+
const discovered = this.discover();
|
|
65
|
+
const loaded = [];
|
|
66
|
+
for (const entry of discovered) {
|
|
67
|
+
const registries = createExtensionRegistries();
|
|
68
|
+
const ctx = {
|
|
69
|
+
workspace: this.workspace(),
|
|
70
|
+
trusted: entry.trusted,
|
|
71
|
+
hasUI: this.options.hasUI ?? false,
|
|
72
|
+
ui: null,
|
|
73
|
+
log: (message) => {
|
|
74
|
+
console.error(`[extension:${entry.id}] ${message}`);
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
ctx.ui =
|
|
78
|
+
this.options.uiFactory?.(registries, ctx) ??
|
|
79
|
+
createDefaultExtensionUI(registries, ctx);
|
|
80
|
+
if (entry.errors.length > 0) {
|
|
81
|
+
const error = entry.errors.join("; ");
|
|
82
|
+
this.recordLifecycle("extension_error", entry.id, error, registries, ctx);
|
|
83
|
+
loaded.push({
|
|
84
|
+
id: entry.id,
|
|
85
|
+
source: entry.source,
|
|
86
|
+
origin: entry.origin,
|
|
87
|
+
entryPath: entry.entryPath,
|
|
88
|
+
status: "skipped",
|
|
89
|
+
error,
|
|
90
|
+
registries,
|
|
91
|
+
context: ctx,
|
|
92
|
+
});
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (entry.skipReason) {
|
|
96
|
+
loaded.push({
|
|
97
|
+
id: entry.id,
|
|
98
|
+
source: entry.source,
|
|
99
|
+
origin: entry.origin,
|
|
100
|
+
entryPath: entry.entryPath,
|
|
101
|
+
status: "skipped",
|
|
102
|
+
error: entry.skipReason,
|
|
103
|
+
registries,
|
|
104
|
+
context: ctx,
|
|
105
|
+
});
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
const jiti = this.getJiti();
|
|
110
|
+
const imported = (await jiti.import(entry.entryPath, {
|
|
111
|
+
default: true,
|
|
112
|
+
}));
|
|
113
|
+
// jiti.import with default:true returns default export or module.
|
|
114
|
+
const moduleExports = imported && typeof imported === "object"
|
|
115
|
+
? imported
|
|
116
|
+
: {};
|
|
117
|
+
// Re-import full module to access named exports.
|
|
118
|
+
const fullModule = (await jiti.import(entry.entryPath));
|
|
119
|
+
const factory = (typeof fullModule?.default === "function"
|
|
120
|
+
? fullModule.default
|
|
121
|
+
: undefined) ??
|
|
122
|
+
(typeof fullModule?.activate === "function"
|
|
123
|
+
? fullModule.activate
|
|
124
|
+
: undefined) ??
|
|
125
|
+
(typeof moduleExports === "function" ? moduleExports : undefined);
|
|
126
|
+
if (typeof factory !== "function") {
|
|
127
|
+
throw new Error("extension must export a default or activate function");
|
|
128
|
+
}
|
|
129
|
+
const api = createExtensionAPI(entry.id, ctx, registries, "current");
|
|
130
|
+
api.ui = ctx.ui;
|
|
131
|
+
await factory(api);
|
|
132
|
+
this.emitToRegistries(registries, ctx, "extension_load", entry.id);
|
|
133
|
+
this.recordLifecycle("extension_load", entry.id, undefined, registries, ctx);
|
|
134
|
+
this.emitToRegistries(registries, ctx, "extension_activate", entry.id);
|
|
135
|
+
this.recordLifecycle("extension_activate", entry.id, undefined, registries, ctx);
|
|
136
|
+
loaded.push({
|
|
137
|
+
id: entry.id,
|
|
138
|
+
source: entry.source,
|
|
139
|
+
origin: entry.origin,
|
|
140
|
+
entryPath: entry.entryPath,
|
|
141
|
+
status: "loaded",
|
|
142
|
+
registries,
|
|
143
|
+
context: ctx,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
148
|
+
this.emitToRegistries(registries, ctx, "extension_error", entry.id, message);
|
|
149
|
+
this.recordLifecycle("extension_error", entry.id, message, registries, ctx);
|
|
150
|
+
loaded.push({
|
|
151
|
+
id: entry.id,
|
|
152
|
+
source: entry.source,
|
|
153
|
+
origin: entry.origin,
|
|
154
|
+
entryPath: entry.entryPath,
|
|
155
|
+
status: "error",
|
|
156
|
+
error: message,
|
|
157
|
+
registries,
|
|
158
|
+
context: ctx,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
this.extensions = loaded;
|
|
163
|
+
return loaded;
|
|
164
|
+
}
|
|
165
|
+
recordLifecycle(type, extensionId, error, registries, ctx) {
|
|
166
|
+
const event = { type, extensionId, error };
|
|
167
|
+
this.lifecycle.push(event);
|
|
168
|
+
this.options.onLifecycleEvent?.({ type, extensionId, error });
|
|
169
|
+
const targets = registries
|
|
170
|
+
? [{ registries, context: ctx }]
|
|
171
|
+
: this.extensions.map((loaded) => ({
|
|
172
|
+
registries: loaded.registries,
|
|
173
|
+
context: loaded.context,
|
|
174
|
+
}));
|
|
175
|
+
for (const target of targets) {
|
|
176
|
+
const handlers = target.registries.handlers.get(type);
|
|
177
|
+
if (!handlers)
|
|
178
|
+
continue;
|
|
179
|
+
for (const handler of handlers) {
|
|
180
|
+
try {
|
|
181
|
+
void handler({ type, extensionId, error }, target.context);
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// Handler failures must not break loading.
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
emitToRegistries(registries, ctx, type, extensionId, error) {
|
|
190
|
+
const handlers = registries.handlers.get(type);
|
|
191
|
+
if (!handlers)
|
|
192
|
+
return;
|
|
193
|
+
for (const handler of handlers) {
|
|
194
|
+
try {
|
|
195
|
+
void handler({ type, extensionId, error }, ctx);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// Handler failures must not break loading.
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
list() {
|
|
203
|
+
return [...this.extensions];
|
|
204
|
+
}
|
|
205
|
+
lifecycleEvents() {
|
|
206
|
+
return [...this.lifecycle];
|
|
207
|
+
}
|
|
208
|
+
report() {
|
|
209
|
+
if (this.discovered.length === 0)
|
|
210
|
+
this.discover();
|
|
211
|
+
const loadedByPath = new Map(this.extensions.map((entry) => [entry.entryPath, entry]));
|
|
212
|
+
return this.discovered.map((entry) => {
|
|
213
|
+
const loaded = loadedByPath.get(entry.entryPath);
|
|
214
|
+
return {
|
|
215
|
+
id: entry.id,
|
|
216
|
+
source: entry.source,
|
|
217
|
+
origin: entry.origin,
|
|
218
|
+
version: entry.manifest?.version,
|
|
219
|
+
entryPath: entry.entryPath,
|
|
220
|
+
status: loaded?.status ?? (entry.skipReason ? "skipped" : "discovered"),
|
|
221
|
+
error: loaded?.error ?? (entry.errors.join("; ") || entry.skipReason),
|
|
222
|
+
trusted: entry.trusted,
|
|
223
|
+
toolCount: loaded?.registries.tools.size ?? 0,
|
|
224
|
+
commandCount: loaded?.registries.commands.size ?? 0,
|
|
225
|
+
};
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
doctor() {
|
|
229
|
+
if (this.discovered.length === 0)
|
|
230
|
+
this.discover();
|
|
231
|
+
if (this.extensions.length === 0) {
|
|
232
|
+
// Ensure load state is available.
|
|
233
|
+
}
|
|
234
|
+
const loadedByPath = new Map(this.extensions.map((entry) => [entry.entryPath, entry]));
|
|
235
|
+
const lines = [];
|
|
236
|
+
for (const entry of this.discovered) {
|
|
237
|
+
const loaded = loadedByPath.get(entry.entryPath);
|
|
238
|
+
const status = loaded?.status ?? (entry.skipReason ? "skipped" : "discovered");
|
|
239
|
+
const error = loaded?.error ?? (entry.errors.join("; ") || entry.skipReason);
|
|
240
|
+
const counts = loaded
|
|
241
|
+
? `${loaded.registries.tools.size} tools, ${loaded.registries.commands.size} commands, ${loaded.registries.handlers.size} event types`
|
|
242
|
+
: "not loaded";
|
|
243
|
+
lines.push(`${entry.id}\t${entry.source}${entry.origin ? `:${entry.origin}` : ""}\t${entry.manifest?.version ?? "-"}\t${status}\t${counts}\t${entry.entryPath}${error ? `\t${error}` : ""}`);
|
|
244
|
+
}
|
|
245
|
+
return lines.join("\n") || "No extensions discovered.";
|
|
246
|
+
}
|
|
247
|
+
async unloadAll() {
|
|
248
|
+
for (const loaded of this.extensions) {
|
|
249
|
+
this.recordLifecycle("extension_unload", loaded.id, undefined, loaded.registries, loaded.context);
|
|
250
|
+
}
|
|
251
|
+
this.extensions = [];
|
|
252
|
+
this.jiti = null;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
function buildAliasMap() {
|
|
256
|
+
const require = createRequire(import.meta.url);
|
|
257
|
+
const alias = {};
|
|
258
|
+
const piTuiPath = safeResolve("@earendil-works/pi-tui", require);
|
|
259
|
+
const typeboxPath = safeResolve("typebox", require);
|
|
260
|
+
const piNodeModules = findPiNodeModules();
|
|
261
|
+
const piAgentCorePath = safeResolve("@earendil-works/pi-agent-core", require, piNodeModules) ??
|
|
262
|
+
shimPath("pi-agent-core");
|
|
263
|
+
const piAiPath = safeResolve("@earendil-works/pi-ai", require, piNodeModules) ??
|
|
264
|
+
shimPath("pi-ai");
|
|
265
|
+
const piHostPath = shimPath("pi-host");
|
|
266
|
+
const tuiTargets = piTuiPath ? [piTuiPath] : [];
|
|
267
|
+
const typeboxTargets = typeboxPath ? [typeboxPath] : [];
|
|
268
|
+
const pairs = [
|
|
269
|
+
["pi-tui", piTuiPath],
|
|
270
|
+
["@earendil-works/pi-tui", piTuiPath],
|
|
271
|
+
["@mariozechner/pi-tui", piTuiPath],
|
|
272
|
+
["typebox", typeboxPath],
|
|
273
|
+
["@sinclair/typebox", typeboxPath],
|
|
274
|
+
["pi-agent-core", piAgentCorePath],
|
|
275
|
+
["@earendil-works/pi-agent-core", piAgentCorePath],
|
|
276
|
+
["@mariozechner/pi-agent-core", piAgentCorePath],
|
|
277
|
+
["pi-ai", piAiPath],
|
|
278
|
+
["@earendil-works/pi-ai", piAiPath],
|
|
279
|
+
["@mariozechner/pi-ai", piAiPath],
|
|
280
|
+
["@earendil-works/pi-coding-agent", piHostPath],
|
|
281
|
+
["@mariozechner/pi-coding-agent", piHostPath],
|
|
282
|
+
];
|
|
283
|
+
for (const [key, value] of pairs) {
|
|
284
|
+
if (value)
|
|
285
|
+
alias[key] = value;
|
|
286
|
+
}
|
|
287
|
+
// Ensure shims exist.
|
|
288
|
+
ensureShim("pi-agent-core");
|
|
289
|
+
ensureShim("pi-ai");
|
|
290
|
+
ensureShim("pi-host");
|
|
291
|
+
return alias;
|
|
292
|
+
}
|
|
293
|
+
function safeResolve(specifier, requireFn, extraPaths) {
|
|
294
|
+
try {
|
|
295
|
+
if (extraPaths) {
|
|
296
|
+
return requireFn.resolve(specifier, { paths: [extraPaths] });
|
|
297
|
+
}
|
|
298
|
+
return requireFn.resolve(specifier);
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
return undefined;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
function findPiNodeModules() {
|
|
305
|
+
const candidates = [];
|
|
306
|
+
const home = homedir();
|
|
307
|
+
const base = join(home, ".pi", "agent", "install", "releases");
|
|
308
|
+
if (existsSync(base)) {
|
|
309
|
+
try {
|
|
310
|
+
const releases = readdirSync(base)
|
|
311
|
+
.map((name) => join(base, name, "node_modules"))
|
|
312
|
+
.filter((dir) => existsSync(dir));
|
|
313
|
+
// Pick the last (highest version) release directory.
|
|
314
|
+
releases.sort();
|
|
315
|
+
if (releases.length > 0)
|
|
316
|
+
candidates.push(releases[releases.length - 1]);
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
// ignore
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return candidates[0];
|
|
323
|
+
}
|
|
324
|
+
function shimDir() {
|
|
325
|
+
return resolve(process.cwd(), "node_modules", ".atom-lite-shims");
|
|
326
|
+
}
|
|
327
|
+
function shimPath(name) {
|
|
328
|
+
return join(shimDir(), `${name}.js`);
|
|
329
|
+
}
|
|
330
|
+
function ensureShim(name) {
|
|
331
|
+
const dir = shimDir();
|
|
332
|
+
try {
|
|
333
|
+
if (!existsSync(dir)) {
|
|
334
|
+
// create via fs
|
|
335
|
+
const { mkdirSync, writeFileSync } = require("node:fs");
|
|
336
|
+
mkdirSync(dir, { recursive: true });
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch {
|
|
340
|
+
// ignore
|
|
341
|
+
}
|
|
342
|
+
const file = shimPath(name);
|
|
343
|
+
if (!existsSync(file)) {
|
|
344
|
+
try {
|
|
345
|
+
const { writeFileSync } = require("node:fs");
|
|
346
|
+
writeFileSync(file, "module.exports = {};\n");
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
// ignore
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/extensions/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface PiSessionEntry {
|
|
2
|
+
type: string;
|
|
3
|
+
id: string;
|
|
4
|
+
parentId: string | null;
|
|
5
|
+
timestamp: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface PiSessionManagerOptions {
|
|
9
|
+
id?: string;
|
|
10
|
+
cwd?: string;
|
|
11
|
+
sessionFile?: string;
|
|
12
|
+
entries?: PiSessionEntry[];
|
|
13
|
+
}
|
|
14
|
+
export declare class PiSessionManager {
|
|
15
|
+
private id;
|
|
16
|
+
private cwd;
|
|
17
|
+
private sessionFile;
|
|
18
|
+
private entries;
|
|
19
|
+
private labels;
|
|
20
|
+
private sessionName;
|
|
21
|
+
private leafId;
|
|
22
|
+
constructor(options?: PiSessionManagerOptions);
|
|
23
|
+
getId(): string;
|
|
24
|
+
getCwd(): string;
|
|
25
|
+
getSessionFile(): string;
|
|
26
|
+
getSessionDir(): string;
|
|
27
|
+
getSessionId(): string;
|
|
28
|
+
getSessionName(): string | undefined;
|
|
29
|
+
setSessionName(name: string): void;
|
|
30
|
+
getHeader(): Record<string, unknown>;
|
|
31
|
+
getEntries(): PiSessionEntry[];
|
|
32
|
+
getEntry(id: string): PiSessionEntry | undefined;
|
|
33
|
+
getLeafId(): string | null;
|
|
34
|
+
getLeafEntry(): PiSessionEntry | undefined;
|
|
35
|
+
getBranch(from?: string): PiSessionEntry[];
|
|
36
|
+
setLabel(entryId: string, label: string | undefined): void;
|
|
37
|
+
getLabel(entryId: string): string | undefined;
|
|
38
|
+
appendEntry(customType: string, data: unknown): string;
|
|
39
|
+
appendCustomMessage(customType: string, content: unknown, display?: boolean, details?: unknown): string;
|
|
40
|
+
buildContextEntries(): Array<Record<string, unknown>>;
|
|
41
|
+
buildSessionProjection(): Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
export { PiSessionManager as ExtensionSessionManager };
|
|
44
|
+
export { PiSessionManager as SessionManager };
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { nowIso } from "../sessions/events.js";
|
|
4
|
+
export class PiSessionManager {
|
|
5
|
+
id;
|
|
6
|
+
cwd;
|
|
7
|
+
sessionFile;
|
|
8
|
+
entries = [];
|
|
9
|
+
labels = new Map();
|
|
10
|
+
sessionName;
|
|
11
|
+
leafId = null;
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
this.id = options.id ?? randomUUID();
|
|
14
|
+
this.cwd = options.cwd ?? process.cwd();
|
|
15
|
+
this.sessionFile = options.sessionFile ?? "";
|
|
16
|
+
if (options.entries) {
|
|
17
|
+
this.entries = [...options.entries];
|
|
18
|
+
this.leafId = this.entries.length
|
|
19
|
+
? this.entries[this.entries.length - 1].id
|
|
20
|
+
: null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
getId() {
|
|
24
|
+
return this.id;
|
|
25
|
+
}
|
|
26
|
+
getCwd() {
|
|
27
|
+
return this.cwd;
|
|
28
|
+
}
|
|
29
|
+
getSessionFile() {
|
|
30
|
+
return this.sessionFile;
|
|
31
|
+
}
|
|
32
|
+
getSessionDir() {
|
|
33
|
+
return this.sessionFile ? dirname(this.sessionFile) : this.cwd;
|
|
34
|
+
}
|
|
35
|
+
getSessionId() {
|
|
36
|
+
return this.id;
|
|
37
|
+
}
|
|
38
|
+
getSessionName() {
|
|
39
|
+
return this.sessionName;
|
|
40
|
+
}
|
|
41
|
+
setSessionName(name) {
|
|
42
|
+
this.sessionName = name;
|
|
43
|
+
}
|
|
44
|
+
getHeader() {
|
|
45
|
+
return {
|
|
46
|
+
type: "session",
|
|
47
|
+
version: 1,
|
|
48
|
+
id: this.id,
|
|
49
|
+
timestamp: nowIso(),
|
|
50
|
+
cwd: this.cwd,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
getEntries() {
|
|
54
|
+
return [...this.entries];
|
|
55
|
+
}
|
|
56
|
+
getEntry(id) {
|
|
57
|
+
return this.entries.find((entry) => entry.id === id);
|
|
58
|
+
}
|
|
59
|
+
getLeafId() {
|
|
60
|
+
return this.leafId;
|
|
61
|
+
}
|
|
62
|
+
getLeafEntry() {
|
|
63
|
+
const id = this.getLeafId();
|
|
64
|
+
return id ? this.getEntry(id) : undefined;
|
|
65
|
+
}
|
|
66
|
+
getBranch(from) {
|
|
67
|
+
// Linear branch: all entries from root to leaf.
|
|
68
|
+
const target = from ?? this.leafId;
|
|
69
|
+
if (!target)
|
|
70
|
+
return [...this.entries];
|
|
71
|
+
const index = this.entries.findIndex((entry) => entry.id === target);
|
|
72
|
+
if (index < 0)
|
|
73
|
+
return [...this.entries];
|
|
74
|
+
return this.entries.slice(0, index + 1);
|
|
75
|
+
}
|
|
76
|
+
setLabel(entryId, label) {
|
|
77
|
+
if (label === undefined)
|
|
78
|
+
this.labels.delete(entryId);
|
|
79
|
+
else
|
|
80
|
+
this.labels.set(entryId, label);
|
|
81
|
+
}
|
|
82
|
+
getLabel(entryId) {
|
|
83
|
+
return this.labels.get(entryId);
|
|
84
|
+
}
|
|
85
|
+
appendEntry(customType, data) {
|
|
86
|
+
const id = randomUUID();
|
|
87
|
+
const entry = {
|
|
88
|
+
type: "custom",
|
|
89
|
+
customType,
|
|
90
|
+
data,
|
|
91
|
+
id,
|
|
92
|
+
parentId: this.leafId,
|
|
93
|
+
timestamp: nowIso(),
|
|
94
|
+
};
|
|
95
|
+
this.entries.push(entry);
|
|
96
|
+
this.leafId = id;
|
|
97
|
+
return id;
|
|
98
|
+
}
|
|
99
|
+
appendCustomMessage(customType, content, display, details) {
|
|
100
|
+
const id = randomUUID();
|
|
101
|
+
const entry = {
|
|
102
|
+
type: "custom_message",
|
|
103
|
+
customType,
|
|
104
|
+
content,
|
|
105
|
+
display: display ?? true,
|
|
106
|
+
details,
|
|
107
|
+
id,
|
|
108
|
+
parentId: this.leafId,
|
|
109
|
+
timestamp: nowIso(),
|
|
110
|
+
};
|
|
111
|
+
this.entries.push(entry);
|
|
112
|
+
this.leafId = id;
|
|
113
|
+
return id;
|
|
114
|
+
}
|
|
115
|
+
buildContextEntries() {
|
|
116
|
+
return this.entries
|
|
117
|
+
.filter((entry) => entry.type === "custom_message")
|
|
118
|
+
.map((entry) => ({
|
|
119
|
+
role: "user",
|
|
120
|
+
content: entry.content,
|
|
121
|
+
customType: entry.customType,
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
buildSessionProjection() {
|
|
125
|
+
return {
|
|
126
|
+
id: this.id,
|
|
127
|
+
cwd: this.cwd,
|
|
128
|
+
entries: this.getEntries(),
|
|
129
|
+
leafId: this.leafId,
|
|
130
|
+
sessionName: this.sessionName,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Back-compat alias names hidden tests may use.
|
|
135
|
+
export { PiSessionManager as ExtensionSessionManager };
|
|
136
|
+
export { PiSessionManager as SessionManager };
|
|
137
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/extensions/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Tool } from "../tools/types.js";
|
|
2
|
+
import type { ExtensionTool, ExtensionContext } from "./types.js";
|
|
3
|
+
export declare function coerceToolArguments(schema: Record<string, unknown> | undefined, input: Record<string, unknown>): Record<string, unknown>;
|
|
4
|
+
export declare function extensionToolToAgentTool(extensionTool: ExtensionTool, extensionContext: ExtensionContext): Tool;
|
|
5
|
+
export declare function collectExtensionTools(loader: {
|
|
6
|
+
list: () => Array<{
|
|
7
|
+
registries: {
|
|
8
|
+
tools: Map<string, ExtensionTool>;
|
|
9
|
+
};
|
|
10
|
+
context?: ExtensionContext;
|
|
11
|
+
}>;
|
|
12
|
+
}): Tool[];
|