atom-lite 0.4.1 → 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.
Files changed (88) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +1 -1
  3. package/dist/agent/loop.d.ts +9 -0
  4. package/dist/agent/loop.js +233 -47
  5. package/dist/agent/loop.js.map +1 -1
  6. package/dist/agent/model-turn.d.ts +37 -0
  7. package/dist/agent/model-turn.js +53 -0
  8. package/dist/agent/model-turn.js.map +1 -0
  9. package/dist/agent/turn-recorder.d.ts +33 -0
  10. package/dist/agent/turn-recorder.js +74 -0
  11. package/dist/agent/turn-recorder.js.map +1 -0
  12. package/dist/agent/types.d.ts +4 -0
  13. package/dist/cli/app.js +373 -33
  14. package/dist/cli/app.js.map +1 -1
  15. package/dist/cli/commands.d.ts +3 -0
  16. package/dist/cli/commands.js +20 -5
  17. package/dist/cli/commands.js.map +1 -1
  18. package/dist/cli/main.js +2 -2
  19. package/dist/cli/main.js.map +1 -1
  20. package/dist/cli/mouse.js +4 -1
  21. package/dist/cli/mouse.js.map +1 -1
  22. package/dist/cli/stream-text.js +1 -0
  23. package/dist/cli/stream-text.js.map +1 -1
  24. package/dist/cli/theme.d.ts +1 -1
  25. package/dist/cli/theme.js +2 -0
  26. package/dist/cli/theme.js.map +1 -1
  27. package/dist/cli/transcript.d.ts +15 -1
  28. package/dist/cli/transcript.js +40 -1
  29. package/dist/cli/transcript.js.map +1 -1
  30. package/dist/cli/trust-prompt.d.ts +24 -0
  31. package/dist/cli/trust-prompt.js +89 -0
  32. package/dist/cli/trust-prompt.js.map +1 -0
  33. package/dist/config/defaults.d.ts +2 -0
  34. package/dist/config/defaults.js +2 -0
  35. package/dist/config/defaults.js.map +1 -1
  36. package/dist/config/load.js +4 -0
  37. package/dist/config/load.js.map +1 -1
  38. package/dist/config/paths.d.ts +2 -0
  39. package/dist/config/paths.js +12 -1
  40. package/dist/config/paths.js.map +1 -1
  41. package/dist/config/schema.d.ts +4 -0
  42. package/dist/config/schema.js +2 -0
  43. package/dist/config/schema.js.map +1 -1
  44. package/dist/context/manager.d.ts +17 -3
  45. package/dist/context/manager.js +129 -41
  46. package/dist/context/manager.js.map +1 -1
  47. package/dist/extensions/api.d.ts +51 -1
  48. package/dist/extensions/api.js +124 -6
  49. package/dist/extensions/api.js.map +1 -1
  50. package/dist/extensions/discovery.d.ts +16 -0
  51. package/dist/extensions/discovery.js +191 -108
  52. package/dist/extensions/discovery.js.map +1 -1
  53. package/dist/extensions/loader.d.ts +42 -1
  54. package/dist/extensions/loader.js +272 -32
  55. package/dist/extensions/loader.js.map +1 -1
  56. package/dist/extensions/session-manager.d.ts +44 -0
  57. package/dist/extensions/session-manager.js +137 -0
  58. package/dist/extensions/session-manager.js.map +1 -0
  59. package/dist/extensions/tool-adapter.d.ts +12 -0
  60. package/dist/extensions/tool-adapter.js +157 -0
  61. package/dist/extensions/tool-adapter.js.map +1 -0
  62. package/dist/extensions/trust.d.ts +2 -0
  63. package/dist/extensions/trust.js +32 -17
  64. package/dist/extensions/trust.js.map +1 -1
  65. package/dist/extensions/types.d.ts +45 -3
  66. package/dist/extensions/ui.d.ts +21 -0
  67. package/dist/extensions/ui.js +75 -0
  68. package/dist/extensions/ui.js.map +1 -0
  69. package/dist/index.d.ts +1 -0
  70. package/dist/index.js +1 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/mcp/stdio-transport.js +3 -20
  73. package/dist/mcp/stdio-transport.js.map +1 -1
  74. package/dist/runtime/scheduler.d.ts +4 -3
  75. package/dist/runtime/scheduler.js +7 -105
  76. package/dist/runtime/scheduler.js.map +1 -1
  77. package/dist/runtime/tool-executor.d.ts +18 -0
  78. package/dist/runtime/tool-executor.js +126 -0
  79. package/dist/runtime/tool-executor.js.map +1 -0
  80. package/dist/security/process.d.ts +10 -0
  81. package/dist/security/process.js +36 -0
  82. package/dist/security/process.js.map +1 -1
  83. package/dist/sessions/store.js +2 -3
  84. package/dist/sessions/store.js.map +1 -1
  85. package/dist/tools/bash.js +6 -3
  86. package/dist/tools/bash.js.map +1 -1
  87. package/dist/tools/types.d.ts +6 -0
  88. package/package.json +3 -1
@@ -1,113 +1,353 @@
1
- import { pathToFileURL } from "node:url";
2
- import { join } from "node:path";
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";
3
6
  import { discoverExtensions } from "./discovery.js";
4
- import { normalizeProjectPath } from "./trust.js";
5
7
  import { loadConfig } from "../config/load.js";
8
+ import { defaultAgentDir, userConfigDir } from "../config/paths.js";
6
9
  import { createExtensionAPI, createExtensionRegistries } from "./api.js";
10
+ import { createDefaultExtensionUI } from "./ui.js";
7
11
  export class ExtensionLoader {
8
12
  options;
9
13
  extensions = [];
14
+ discovered = [];
15
+ lifecycle = [];
16
+ jiti = null;
10
17
  constructor(options = {}) {
11
18
  this.options = options;
12
19
  }
13
- trustedProjectSet() {
14
- const projects = this.options.trustedProjects ??
15
- loadConfig().extensions?.trustedProjects ??
16
- [];
17
- return new Set(projects.map((project) => normalizeProjectPath(project)));
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
+ };
18
33
  }
19
34
  discover() {
20
- const trusted = this.trustedProjectSet();
21
- const projectExtDir = this.options.projectDir
22
- ? join(this.options.projectDir, ".atom-lite", "extensions")
23
- : undefined;
35
+ const cwd = this.workspace();
36
+ const decisions = this.decisions();
24
37
  const discovered = discoverExtensions({
25
38
  cliPaths: this.options.cliPaths,
26
- userDir: this.options.userDir,
27
- projectDir: projectExtDir,
39
+ cwd,
40
+ agentDir: this.options.agentDir ?? defaultAgentDir(),
41
+ userDir: this.options.userDir ?? join(userConfigDir(), "extensions"),
42
+ projectDir: join(cwd, ".atom-lite", "extensions"),
28
43
  packageRoots: this.options.packageRoots,
44
+ trustedProjects: decisions.trusted,
45
+ deniedProjects: decisions.denied,
29
46
  });
30
- return discovered.map((entry) => {
31
- if (entry.source === "project" &&
32
- !trusted.has(normalizeProjectPath(this.options.projectDir ?? process.cwd()))) {
33
- return { ...entry, errors: [...entry.errors, "project is not trusted"] };
34
- }
35
- return entry;
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,
36
59
  });
60
+ this.jiti = instance;
61
+ return instance;
37
62
  }
38
63
  async loadAll() {
39
64
  const discovered = this.discover();
40
65
  const loaded = [];
41
66
  for (const entry of discovered) {
42
67
  const registries = createExtensionRegistries();
43
- const trusted = this.trustedProjectSet();
44
68
  const ctx = {
45
- workspace: this.options.projectDir ?? process.cwd(),
46
- trusted: entry.source !== "project" ||
47
- trusted.has(normalizeProjectPath(this.options.projectDir ?? process.cwd())),
69
+ workspace: this.workspace(),
70
+ trusted: entry.trusted,
71
+ hasUI: this.options.hasUI ?? false,
72
+ ui: null,
48
73
  log: (message) => {
49
- // eslint-disable-next-line no-console
50
74
  console.error(`[extension:${entry.id}] ${message}`);
51
75
  },
52
76
  };
77
+ ctx.ui =
78
+ this.options.uiFactory?.(registries, ctx) ??
79
+ createDefaultExtensionUI(registries, ctx);
53
80
  if (entry.errors.length > 0) {
81
+ const error = entry.errors.join("; ");
82
+ this.recordLifecycle("extension_error", entry.id, error, registries, ctx);
54
83
  loaded.push({
55
84
  id: entry.id,
56
85
  source: entry.source,
86
+ origin: entry.origin,
57
87
  entryPath: entry.entryPath,
58
88
  status: "skipped",
59
- error: entry.errors.join("; "),
89
+ error,
60
90
  registries,
91
+ context: ctx,
61
92
  });
62
93
  continue;
63
94
  }
64
- if (entry.source === "project" && !this.trustedProjectSet().has(normalizeProjectPath(this.options.projectDir ?? process.cwd()))) {
95
+ if (entry.skipReason) {
65
96
  loaded.push({
66
97
  id: entry.id,
67
98
  source: entry.source,
99
+ origin: entry.origin,
68
100
  entryPath: entry.entryPath,
69
101
  status: "skipped",
70
- error: "project is not trusted",
102
+ error: entry.skipReason,
71
103
  registries,
104
+ context: ctx,
72
105
  });
73
106
  continue;
74
107
  }
75
108
  try {
76
- const moduleUrl = pathToFileURL(entry.entryPath).href;
77
- const imported = (await import(moduleUrl));
78
- const factory = imported.default ?? imported.activate;
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);
79
126
  if (typeof factory !== "function") {
80
127
  throw new Error("extension must export a default or activate function");
81
128
  }
82
129
  const api = createExtensionAPI(entry.id, ctx, registries, "current");
130
+ api.ui = ctx.ui;
83
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);
84
136
  loaded.push({
85
137
  id: entry.id,
86
138
  source: entry.source,
139
+ origin: entry.origin,
87
140
  entryPath: entry.entryPath,
88
141
  status: "loaded",
89
142
  registries,
143
+ context: ctx,
90
144
  });
91
145
  }
92
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);
93
150
  loaded.push({
94
151
  id: entry.id,
95
152
  source: entry.source,
153
+ origin: entry.origin,
96
154
  entryPath: entry.entryPath,
97
155
  status: "error",
98
- error: error instanceof Error ? error.message : String(error),
156
+ error: message,
99
157
  registries,
158
+ context: ctx,
100
159
  });
101
160
  }
102
161
  }
103
162
  this.extensions = loaded;
104
163
  return loaded;
105
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
+ }
106
202
  list() {
107
203
  return [...this.extensions];
108
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
+ }
109
247
  async unloadAll() {
248
+ for (const loaded of this.extensions) {
249
+ this.recordLifecycle("extension_unload", loaded.id, undefined, loaded.registries, loaded.context);
250
+ }
110
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
+ }
111
351
  }
112
352
  }
113
353
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/extensions/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAA4B,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAoB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAoBzE,MAAM,OAAO,eAAe;IAClB,OAAO,CAAyB;IAChC,UAAU,GAAsB,EAAE,CAAC;IAE3C,YAAY,UAAkC,EAAE;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEO,iBAAiB;QACvB,MAAM,QAAQ,GACZ,IAAI,CAAC,OAAO,CAAC,eAAe;YAC5B,UAAU,EAAE,CAAC,UAAU,EAAE,eAAe;YACxC,EAAE,CAAC;QACL,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU;YAC3C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC;YAC3D,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,UAAU,GAAG,kBAAkB,CAAC;YACpC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,UAAU,EAAE,aAAa;YACzB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;SACxC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,IACE,KAAK,CAAC,MAAM,KAAK,SAAS;gBAC1B,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAC5E,CAAC;gBACD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,wBAAwB,CAAC,EAAE,CAAC;YAC3E,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzC,MAAM,GAAG,GAAqB;gBAC5B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE;gBACnD,OAAO,EACL,KAAK,CAAC,MAAM,KAAK,SAAS;oBAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC7E,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;oBACf,sCAAsC;oBACtC,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;gBACtD,CAAC;aACF,CAAC;YAEF,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC9B,UAAU;iBACX,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;gBAChI,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,wBAAwB;oBAC/B,UAAU;iBACX,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;gBACtD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAGxC,CAAC;gBACF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC;gBACtD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBAC1E,CAAC;gBACD,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACrE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,QAAQ;oBAChB,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7D,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/extensions/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAW,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAY,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAA4B,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAoDnD,MAAM,OAAO,eAAe;IAClB,OAAO,CAAyB;IAChC,UAAU,GAAsB,EAAE,CAAC;IACnC,UAAU,GAA0B,EAAE,CAAC;IACvC,SAAS,GAA8B,EAAE,CAAC;IAC1C,IAAI,GAAyC,IAAI,CAAC;IAE1D,YAAY,UAAkC,EAAE;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEO,SAAS;QACf,OAAO,OAAO,CACZ,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAC7D,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EACL,IAAI,CAAC,OAAO,CAAC,eAAe;gBAC5B,MAAM,CAAC,UAAU,EAAE,eAAe;gBAClC,EAAE;YACJ,MAAM,EACJ,IAAI,CAAC,OAAO,CAAC,cAAc;gBAC3B,MAAM,CAAC,UAAU,EAAE,cAAc;gBACjC,EAAE;SACL,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,kBAAkB,CAAC;YACpC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,GAAG;YACH,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,EAAE;YACpD,OAAO,EACL,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,YAAY,CAAC;YAC7D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,YAAY,CAAC;YACjD,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,eAAe,EAAE,SAAS,CAAC,OAAO;YAClC,cAAc,EAAE,SAAS,CAAC,MAAM;SACjC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC;QAChC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3C,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,KAAK;YACd,KAAK;YACL,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAqB;gBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;gBAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK;gBAClC,EAAE,EAAE,IAAW;gBACf,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;gBACtD,CAAC;aACF,CAAC;YACF,GAAG,CAAC,EAAE;gBACJ,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC;oBACzC,wBAAwB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAE5C,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC1E,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,SAAS;oBACjB,KAAK;oBACL,UAAU;oBACV,OAAO,EAAE,GAAG;iBACb,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,KAAK,CAAC,UAAU;oBACvB,UAAU;oBACV,OAAO,EAAE,GAAG;iBACb,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE;oBACnD,OAAO,EAAE,IAAI;iBACd,CAAC,CAAY,CAAC;gBACf,kEAAkE;gBAClE,MAAM,aAAa,GACjB,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;oBACtC,CAAC,CAAE,QAAoC;oBACvC,CAAC,CAAC,EAAE,CAAC;gBACT,iDAAiD;gBACjD,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAGrD,CAAC;gBACF,MAAM,OAAO,GACX,CAAC,OAAO,UAAU,EAAE,OAAO,KAAK,UAAU;oBACxC,CAAC,CAAC,UAAU,CAAC,OAAO;oBACpB,CAAC,CAAC,SAAS,CAAC;oBACd,CAAC,OAAO,UAAU,EAAE,QAAQ,KAAK,UAAU;wBACzC,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACrB,CAAC,CAAC,SAAS,CAAC;oBACd,CAAC,OAAO,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAEpE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CACb,sDAAsD,CACvD,CAAC;gBACJ,CAAC;gBAED,MAAM,GAAG,GAAG,kBAAkB,CAC5B,KAAK,CAAC,EAAE,EACR,GAAG,EACH,UAAU,EACV,SAAS,CACV,CAAC;gBACF,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnE,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC7E,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;gBACjF,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,QAAQ;oBAChB,UAAU;oBACV,OAAO,EAAE,GAAG;iBACb,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC7E,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC5E,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,OAAO;oBACd,UAAU;oBACV,OAAO,EAAE,GAAG;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,eAAe,CACrB,IAAe,EACf,WAAmB,EACnB,KAAc,EACd,UAAyD,EACzD,GAAsB;QAEtB,MAAM,KAAK,GAA4B,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,UAAU;YACxB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC,CAAC;QACR,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YACxB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,KAAK,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,OAAQ,CAAC,CAAC;gBAC9D,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,gBAAgB,CACtB,UAAwD,EACxD,GAAqB,EACrB,IAAe,EACf,WAAmB,EACnB,KAAc;QAEd,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,KAAK,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CACzD,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACjD,OAAO;gBACL,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO;gBAChC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;gBACvE,KAAK,EACH,MAAM,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC;gBAChE,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBAC7C,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;aACpD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,kCAAkC;QACpC,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CACzD,CAAC;QACF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAC/E,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,MAAM;gBACnB,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,WAAW,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,cAAc,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,cAAc;gBACtI,CAAC,CAAC,YAAY,CAAC;YACjB,KAAK,CAAC,IAAI,CACR,GAAG,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE,OAAO,IAAI,GAAG,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACjL,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,CAClB,kBAAkB,EAClB,MAAM,CAAC,EAAE,EACT,SAAS,EACT,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAA2B,EAAE,CAAC;IAEzC,MAAM,SAAS,GAAG,WAAW,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;IAC1C,MAAM,eAAe,GACnB,WAAW,CAAC,+BAA+B,EAAE,OAAO,EAAE,aAAa,CAAC;QACpE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC5B,MAAM,QAAQ,GACZ,WAAW,CAAC,uBAAuB,EAAE,OAAO,EAAE,aAAa,CAAC;QAC5D,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEvC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExD,MAAM,KAAK,GAAwC;QACjD,CAAC,QAAQ,EAAE,SAAS,CAAC;QACrB,CAAC,wBAAwB,EAAE,SAAS,CAAC;QACrC,CAAC,sBAAsB,EAAE,SAAS,CAAC;QACnC,CAAC,SAAS,EAAE,WAAW,CAAC;QACxB,CAAC,mBAAmB,EAAE,WAAW,CAAC;QAClC,CAAC,eAAe,EAAE,eAAe,CAAC;QAClC,CAAC,+BAA+B,EAAE,eAAe,CAAC;QAClD,CAAC,6BAA6B,EAAE,eAAe,CAAC;QAChD,CAAC,OAAO,EAAE,QAAQ,CAAC;QACnB,CAAC,uBAAuB,EAAE,QAAQ,CAAC;QACnC,CAAC,qBAAqB,EAAE,QAAQ,CAAC;QACjC,CAAC,iCAAiC,EAAE,UAAU,CAAC;QAC/C,CAAC,+BAA+B,EAAE,UAAU,CAAC;KAC9C,CAAC;IAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,sBAAsB;IACtB,UAAU,CAAC,eAAe,CAAC,CAAC;IAC5B,UAAU,CAAC,OAAO,CAAC,CAAC;IACpB,UAAU,CAAC,SAAS,CAAC,CAAC;IAEtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAClB,SAAiB,EACjB,SAAsB,EACtB,UAA+B;IAE/B,IAAI,CAAC;QACH,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC/D,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;iBAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;iBAC/C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,qDAAqD;YACrD,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,OAAO;IACd,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,gBAAgB;YAChB,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACxD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7C,aAAa,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -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[];