@dyyz1993/pi-coding-agent 0.70.0 → 0.70.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.
@@ -19,6 +19,7 @@ import { DefaultPackageManager } from "../../core/package-manager.js";
19
19
  import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../core/session-cwd.js";
20
20
  import { SessionManager } from "../../core/session-manager.js";
21
21
  import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
22
+ import { getCwdDataDir, getGlobalDataDir, getProjectDataDir, getSessionDataDir, resolveProjectRoot, } from "../../core/storage.js";
22
23
  import { isInstallTelemetryEnabled } from "../../core/telemetry.js";
23
24
  import { getChangelogPath, getNewEntries, parseChangelog } from "../../utils/changelog.js";
24
25
  import { copyToClipboard } from "../../utils/clipboard.js";
@@ -1211,10 +1212,16 @@ export class InteractiveMode {
1211
1212
  if (shortcuts.size === 0)
1212
1213
  return;
1213
1214
  // Create a context for shortcut handlers
1214
- const createContext = () => ({
1215
+ const createContext = (extName = "unknown") => ({
1215
1216
  ui: this.createExtensionUIContext(),
1216
1217
  hasUI: true,
1217
1218
  cwd: this.sessionManager.getCwd(),
1219
+ extensionName: extName,
1220
+ projectRoot: resolveProjectRoot(this.sessionManager.getCwd()),
1221
+ sessionDataDir: getSessionDataDir(this.sessionManager.getSessionDir(), this.sessionManager.getSessionId(), extName),
1222
+ projectDataDir: getProjectDataDir(resolveProjectRoot(this.sessionManager.getCwd()), extName),
1223
+ cwdDataDir: getCwdDataDir(this.sessionManager.getCwd(), extName),
1224
+ globalDataDir: getGlobalDataDir(extName),
1218
1225
  sessionManager: this.sessionManager,
1219
1226
  modelRegistry: this.session.modelRegistry,
1220
1227
  model: this.session.model,
@@ -1247,8 +1254,9 @@ export class InteractiveMode {
1247
1254
  for (const [shortcutStr, shortcut] of shortcuts) {
1248
1255
  // Cast to KeyId - extension shortcuts use the same format
1249
1256
  if (matchesKey(data, shortcutStr)) {
1257
+ const extName = extensionRunner.getExtensionNameByPath(shortcut.extensionPath) ?? "unknown";
1250
1258
  // Run handler async, don't block input
1251
- Promise.resolve(shortcut.handler(createContext())).catch((err) => {
1259
+ Promise.resolve(shortcut.handler(createContext(extName))).catch((err) => {
1252
1260
  this.showError(`Shortcut handler error: ${err instanceof Error ? err.message : String(err)}`);
1253
1261
  });
1254
1262
  return true;