@alivault/pico 0.7.4 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import { i as __toESM } from "../_runtime.mjs";
2
2
  import { X as require_react, Y as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { a as createRouter, c as createRootRoute, n as Scripts, r as HeadContent, s as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
4
4
  import { a as TriangleAlert, g as OctagonX, j as CircleCheck, y as Info } from "../_libs/lucide-react.mjs";
5
- import { B as extractMessageText$1, I as createCompactionSummaryItem, N as assistantBlocksFromMessage, P as buildItemsFromSync, V as extractToolText, W as mergeAssistantBlocksForStreaming, _ as Route$48, bt as toolCategoryFromTool, k as TooltipProvider, n as APPLIED_THEME_STORAGE_KEY, t as APPLIED_THEME_CLASSES, x as Spinner, z as extractMessageImages } from "./routes-CWyvexcp.mjs";
5
+ import { B as extractMessageText$1, I as createCompactionSummaryItem, N as assistantBlocksFromMessage, P as buildItemsFromSync, V as extractToolText, W as mergeAssistantBlocksForStreaming, _ as Route$49, bt as toolCategoryFromTool, k as TooltipProvider, n as APPLIED_THEME_STORAGE_KEY, t as APPLIED_THEME_CLASSES, x as Spinner, z as extractMessageImages } from "./routes-bPw2DezY.mjs";
6
6
  import { t as QueryClient } from "../_libs/tanstack__query-core.mjs";
7
7
  import { t as setupRouterSsrQueryIntegration } from "../_libs/@tanstack/react-router-ssr-query+[...].mjs";
8
8
  import { n as HotkeysProvider } from "../_libs/tanstack__react-hotkeys.mjs";
@@ -20,7 +20,7 @@ import os, { homedir } from "node:os";
20
20
  import { performance } from "node:perf_hooks";
21
21
  import { isMainThread } from "node:worker_threads";
22
22
  import { execSync, spawn } from "node:child_process";
23
- //#region node_modules/.nitro/vite/services/ssr/assets/router-3sUOvxBd.js
23
+ //#region node_modules/.nitro/vite/services/ssr/assets/router-DIdiRf-y.js
24
24
  var import_react = /* @__PURE__ */ __toESM(require_react());
25
25
  var import_jsx_runtime = require_jsx_runtime();
26
26
  var Toaster$1 = ({ ...props }) => {
@@ -71,7 +71,7 @@ function AppProviders({ children }) {
71
71
  })
72
72
  });
73
73
  }
74
- var styles_default = "/assets/styles-CmDCF-hF.css";
74
+ var styles_default = "/assets/styles-DueiniTy.css";
75
75
  var TANSTACK_DEVTOOLS_SETTINGS_KEY = "tanstack_devtools_settings";
76
76
  var TANSTACK_DEVTOOLS_DEFAULTS_STORAGE_KEY = "pico-tanstack-devtools-defaults-v1";
77
77
  var TANSTACK_DEVTOOLS_CONFIG = {
@@ -79,7 +79,7 @@ var TANSTACK_DEVTOOLS_CONFIG = {
79
79
  openHotkey: ["Control", "`"],
80
80
  triggerHidden: true
81
81
  };
82
- var Route$47 = createRootRoute({
82
+ var Route$48 = createRootRoute({
83
83
  head: () => ({
84
84
  meta: [
85
85
  { charSet: "utf-8" },
@@ -2986,6 +2986,45 @@ function debugJson(details) {
2986
2986
  return JSON.stringify({ details: "[unserializable]" });
2987
2987
  }
2988
2988
  }
2989
+ function defaultSessionDirectoryForCwd(agentDir, cwd) {
2990
+ return join(agentDir, "sessions", `--${cwd.replace(/^[/\\]/, "").replace(/[/\\:]/g, "-")}--`);
2991
+ }
2992
+ function splitSessionFileLines(content) {
2993
+ const lines = content.split("\n");
2994
+ if (lines.at(-1) === "") lines.pop();
2995
+ return lines;
2996
+ }
2997
+ function updateSessionFileCwdContent(content, nextCwd) {
2998
+ const lines = splitSessionFileLines(content);
2999
+ const headerIndex = lines.findIndex((line) => line.trim());
3000
+ if (headerIndex < 0) throw new Error("Session file is empty");
3001
+ let header;
3002
+ try {
3003
+ header = JSON.parse(lines[headerIndex] || "");
3004
+ } catch {
3005
+ throw new Error("Session file header is invalid");
3006
+ }
3007
+ if (!header || typeof header !== "object") throw new Error("Session file header is invalid");
3008
+ if (header.type !== "session") throw new Error("Session file header is missing");
3009
+ lines[headerIndex] = JSON.stringify({
3010
+ ...header,
3011
+ cwd: nextCwd
3012
+ });
3013
+ return `${lines.join("\n")}\n`;
3014
+ }
3015
+ async function uniqueSessionMovePath(sessionPath, targetDirectory) {
3016
+ const targetPath = join(targetDirectory, basename(sessionPath));
3017
+ if (resolve(targetPath) === resolve(sessionPath)) return targetPath;
3018
+ try {
3019
+ await stat(targetPath);
3020
+ } catch (error) {
3021
+ if (error?.code === "ENOENT") return targetPath;
3022
+ throw error;
3023
+ }
3024
+ const extension = ".jsonl";
3025
+ const fileName = basename(sessionPath);
3026
+ return join(targetDirectory, `${fileName.endsWith(extension) ? fileName.slice(0, -6) : fileName}-${randomUUID()}${extension}`);
3027
+ }
2989
3028
  var identityTheme = {
2990
3029
  fg: (_color, text) => text,
2991
3030
  bg: (_color, text) => text,
@@ -5493,6 +5532,65 @@ var PicoRuntime = class {
5493
5532
  name: nextName
5494
5533
  };
5495
5534
  }
5535
+ async writeMovedSessionFile(sessionPath, nextCwd, targetSessionDirectory) {
5536
+ const sourcePath = resolve(sessionPath);
5537
+ const targetPath = resolve(await uniqueSessionMovePath(sourcePath, targetSessionDirectory));
5538
+ const nextContent = updateSessionFileCwdContent(await readFile(sourcePath, "utf8"), nextCwd);
5539
+ if (targetPath === sourcePath) {
5540
+ await writeFile(sourcePath, nextContent);
5541
+ return targetPath;
5542
+ }
5543
+ await writeFile(targetPath, nextContent, { flag: "wx" });
5544
+ try {
5545
+ await unlink(sourcePath);
5546
+ } catch (error) {
5547
+ await unlink(targetPath).catch(() => void 0);
5548
+ throw error;
5549
+ }
5550
+ return targetPath;
5551
+ }
5552
+ async moveSession(request, body) {
5553
+ await this.resolveRequest(request);
5554
+ const sessionPath = typeof body.path === "string" ? body.path.trim() : "";
5555
+ const nextCwd = typeof body.cwd === "string" ? body.cwd.trim() : "";
5556
+ if (!sessionPath) throw new Error("path is required");
5557
+ if (!nextCwd) throw new Error("cwd is required");
5558
+ if (!(await stat(nextCwd)).isDirectory()) throw new Error("Destination must be a directory");
5559
+ const loadedEntries = [...this.sessionEntries.values()].filter((entry) => this.getSessionPath(entry) === sessionPath);
5560
+ for (const loadedEntry of loadedEntries) if (this.isSessionBusyForDone(loadedEntry)) throw new Error("Wait for the session to finish before moving it.");
5561
+ const targetSessionDirectory = defaultSessionDirectoryForCwd((await this.getSdk()).getAgentDir(), nextCwd);
5562
+ await mkdir(targetSessionDirectory, { recursive: true });
5563
+ const previousPath = resolve(sessionPath);
5564
+ const previousEntry = loadedEntries[0];
5565
+ const previousCwd = previousEntry?.cwd || "";
5566
+ const affectedContexts = [...this.contexts.values()].map((context) => ({
5567
+ context,
5568
+ wasActive: loadedEntries.some((entry) => context.activeKey === entry.key),
5569
+ wasDraft: loadedEntries.some((entry) => context.draftKey === entry.key)
5570
+ })).filter((entry) => entry.wasActive || entry.wasDraft);
5571
+ const nextPath = await this.writeMovedSessionFile(previousPath, nextCwd, targetSessionDirectory);
5572
+ for (const loadedEntry of loadedEntries) await this.disposeSessionEntry(loadedEntry);
5573
+ let nextEntry;
5574
+ if (affectedContexts.some((entry) => entry.wasActive)) {
5575
+ nextEntry = await this.ensureSessionEntryByPath(nextPath);
5576
+ for (const affected of affectedContexts) {
5577
+ if (affected.wasDraft) affected.context.draftKey = void 0;
5578
+ if (affected.wasActive) await this.activateContextSession(affected.context, nextEntry, { refreshSessions: false });
5579
+ }
5580
+ } else for (const affected of affectedContexts) if (affected.wasDraft) affected.context.draftKey = void 0;
5581
+ for (const context of this.contexts.values()) if (context.unreadFinished.delete(previousPath)) context.unreadFinished.add(nextPath);
5582
+ this.invalidateSessionIndexCache();
5583
+ await this.broadcastSessionsAll();
5584
+ if (nextEntry) await this.broadcastEntryState(nextEntry);
5585
+ return {
5586
+ ok: true,
5587
+ previousPath,
5588
+ previousCwd,
5589
+ path: nextPath,
5590
+ cwd: nextCwd,
5591
+ sessionId: nextEntry?.session.sessionId || previousEntry?.session.sessionId
5592
+ };
5593
+ }
5496
5594
  async trashOrDeleteSessionFile(sessionPath) {
5497
5595
  if (process.platform === "darwin") {
5498
5596
  const trashDirectory = join(homedir(), ".Trash");
@@ -5906,7 +6004,7 @@ function getPicoRuntime() {
5906
6004
  globalThis.__picoRuntime ??= new PicoRuntime();
5907
6005
  return globalThis.__picoRuntime;
5908
6006
  }
5909
- var Route$46 = createFileRoute("/events")({ server: { handlers: { GET: ({ request }) => getPicoRuntime().createEventsResponse(request) } } });
6007
+ var Route$47 = createFileRoute("/events")({ server: { handlers: { GET: ({ request }) => getPicoRuntime().createEventsResponse(request) } } });
5910
6008
  function jsonResponse(data, init = 200) {
5911
6009
  const responseInit = typeof init === "number" ? { status: init } : init;
5912
6010
  const headers = new Headers(responseInit.headers);
@@ -5942,7 +6040,7 @@ function routeErrorResponse(error, fallbackMessage) {
5942
6040
  async function readRequestJson(request) {
5943
6041
  return await request.json().catch(() => ({}));
5944
6042
  }
5945
- var Route$45 = createFileRoute("/api/thinking")({ server: { handlers: { POST: async ({ request }) => {
6043
+ var Route$46 = createFileRoute("/api/thinking")({ server: { handlers: { POST: async ({ request }) => {
5946
6044
  try {
5947
6045
  const body = await readRequestJson(request);
5948
6046
  return jsonResponse(await getPicoRuntime().setThinking(request, body));
@@ -5950,7 +6048,7 @@ var Route$45 = createFileRoute("/api/thinking")({ server: { handlers: { POST: as
5950
6048
  return routeErrorResponse(error, "Failed to update thinking level");
5951
6049
  }
5952
6050
  } } } });
5953
- var Route$44 = createFileRoute("/api/slash-command")({ server: { handlers: { POST: async ({ request }) => {
6051
+ var Route$45 = createFileRoute("/api/slash-command")({ server: { handlers: { POST: async ({ request }) => {
5954
6052
  try {
5955
6053
  const body = await readRequestJson(request);
5956
6054
  return jsonResponse(await getPicoRuntime().runSlashCommand(request, body));
@@ -5958,7 +6056,7 @@ var Route$44 = createFileRoute("/api/slash-command")({ server: { handlers: { POS
5958
6056
  return routeErrorResponse(error, "Failed to run slash command");
5959
6057
  }
5960
6058
  } } } });
5961
- var Route$43 = createFileRoute("/api/provider-usage")({ server: { handlers: { GET: async ({ request }) => {
6059
+ var Route$44 = createFileRoute("/api/provider-usage")({ server: { handlers: { GET: async ({ request }) => {
5962
6060
  const provider = new URL(request.url).searchParams.get("provider") || void 0;
5963
6061
  try {
5964
6062
  return jsonResponse({
@@ -5969,7 +6067,7 @@ var Route$43 = createFileRoute("/api/provider-usage")({ server: { handlers: { GE
5969
6067
  return routeErrorResponse(error, "Failed to read provider usage");
5970
6068
  }
5971
6069
  } } } });
5972
- var Route$42 = createFileRoute("/api/prompt")({ server: { handlers: { POST: async ({ request }) => {
6070
+ var Route$43 = createFileRoute("/api/prompt")({ server: { handlers: { POST: async ({ request }) => {
5973
6071
  try {
5974
6072
  const body = await readRequestJson(request);
5975
6073
  return jsonResponse(await getPicoRuntime().prompt(request, body));
@@ -6490,7 +6588,7 @@ async function listFileReferenceEntries(query, baseCwd, { isQuotedPrefix = false
6490
6588
  };
6491
6589
  });
6492
6590
  }
6493
- var Route$41 = createFileRoute("/api/path-completions")({ server: { handlers: { POST: async ({ request }) => {
6591
+ var Route$42 = createFileRoute("/api/path-completions")({ server: { handlers: { POST: async ({ request }) => {
6494
6592
  try {
6495
6593
  const body = await readRequestJson(request);
6496
6594
  const { context, activeEntry } = await getPicoRuntime().resolveRequest(request);
@@ -6506,7 +6604,7 @@ var Route$41 = createFileRoute("/api/path-completions")({ server: { handlers: {
6506
6604
  return routeErrorResponse(error, "Failed to list path completions");
6507
6605
  }
6508
6606
  } } } });
6509
- var Route$40 = createFileRoute("/api/model")({ server: { handlers: { POST: async ({ request }) => {
6607
+ var Route$41 = createFileRoute("/api/model")({ server: { handlers: { POST: async ({ request }) => {
6510
6608
  try {
6511
6609
  const body = await readRequestJson(request);
6512
6610
  return jsonResponse(await getPicoRuntime().setModel(request, body));
@@ -6514,7 +6612,7 @@ var Route$40 = createFileRoute("/api/model")({ server: { handlers: { POST: async
6514
6612
  return routeErrorResponse(error, "Failed to update model");
6515
6613
  }
6516
6614
  } } } });
6517
- var Route$39 = createFileRoute("/api/highlight")({ server: { handlers: { POST: async ({ request }) => {
6615
+ var Route$40 = createFileRoute("/api/highlight")({ server: { handlers: { POST: async ({ request }) => {
6518
6616
  try {
6519
6617
  const body = await readRequestJson(request);
6520
6618
  return jsonResponse(await getPicoRuntime().highlightCode(body.code, body.language));
@@ -6522,7 +6620,7 @@ var Route$39 = createFileRoute("/api/highlight")({ server: { handlers: { POST: a
6522
6620
  return routeErrorResponse(error, "Failed to highlight code");
6523
6621
  }
6524
6622
  } } } });
6525
- var Route$38 = createFileRoute("/api/git-status")({ server: { handlers: { GET: async ({ request }) => {
6623
+ var Route$39 = createFileRoute("/api/git-status")({ server: { handlers: { GET: async ({ request }) => {
6526
6624
  const requestedCwd = new URL(request.url).searchParams.get("cwd") || "";
6527
6625
  if (!requestedCwd.trim()) return errorResponse("cwd is required");
6528
6626
  try {
@@ -6537,7 +6635,7 @@ var Route$38 = createFileRoute("/api/git-status")({ server: { handlers: { GET: a
6537
6635
  return routeErrorResponse(error, "Failed to read git status");
6538
6636
  }
6539
6637
  } } } });
6540
- var Route$37 = createFileRoute("/api/git-stage")({ server: { handlers: { POST: async ({ request }) => {
6638
+ var Route$38 = createFileRoute("/api/git-stage")({ server: { handlers: { POST: async ({ request }) => {
6541
6639
  try {
6542
6640
  const body = await readRequestJson(request);
6543
6641
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -6558,7 +6656,7 @@ var Route$37 = createFileRoute("/api/git-stage")({ server: { handlers: { POST: a
6558
6656
  return routeErrorResponse(error, "Failed to stage changes");
6559
6657
  }
6560
6658
  } } } });
6561
- var Route$36 = createFileRoute("/api/git-review")({ server: { handlers: { GET: async ({ request }) => {
6659
+ var Route$37 = createFileRoute("/api/git-review")({ server: { handlers: { GET: async ({ request }) => {
6562
6660
  const url = new URL(request.url);
6563
6661
  const requestedCwd = url.searchParams.get("cwd") || "";
6564
6662
  const requestedPath = url.searchParams.get("path") || "";
@@ -6581,7 +6679,7 @@ var Route$36 = createFileRoute("/api/git-review")({ server: { handlers: { GET: a
6581
6679
  return routeErrorResponse(error, "Failed to read git review file");
6582
6680
  }
6583
6681
  } } } });
6584
- var Route$35 = createFileRoute("/api/git-push")({ server: { handlers: { POST: async ({ request }) => {
6682
+ var Route$36 = createFileRoute("/api/git-push")({ server: { handlers: { POST: async ({ request }) => {
6585
6683
  try {
6586
6684
  const body = await readRequestJson(request);
6587
6685
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -6600,7 +6698,7 @@ var Route$35 = createFileRoute("/api/git-push")({ server: { handlers: { POST: as
6600
6698
  return routeErrorResponse(error, "Failed to push changes");
6601
6699
  }
6602
6700
  } } } });
6603
- var Route$34 = createFileRoute("/api/git-pull")({ server: { handlers: { POST: async ({ request }) => {
6701
+ var Route$35 = createFileRoute("/api/git-pull")({ server: { handlers: { POST: async ({ request }) => {
6604
6702
  try {
6605
6703
  const body = await readRequestJson(request);
6606
6704
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -6618,7 +6716,7 @@ var Route$34 = createFileRoute("/api/git-pull")({ server: { handlers: { POST: as
6618
6716
  return routeErrorResponse(error, "Failed to pull changes");
6619
6717
  }
6620
6718
  } } } });
6621
- var Route$33 = createFileRoute("/api/git-discard")({ server: { handlers: { POST: async ({ request }) => {
6719
+ var Route$34 = createFileRoute("/api/git-discard")({ server: { handlers: { POST: async ({ request }) => {
6622
6720
  try {
6623
6721
  const body = await readRequestJson(request);
6624
6722
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -6640,7 +6738,7 @@ var Route$33 = createFileRoute("/api/git-discard")({ server: { handlers: { POST:
6640
6738
  return routeErrorResponse(error, "Failed to discard changes");
6641
6739
  }
6642
6740
  } } } });
6643
- var Route$32 = createFileRoute("/api/git-diff")({ server: { handlers: { GET: async ({ request }) => {
6741
+ var Route$33 = createFileRoute("/api/git-diff")({ server: { handlers: { GET: async ({ request }) => {
6644
6742
  const url = new URL(request.url);
6645
6743
  const requestedCwd = url.searchParams.get("cwd") || "";
6646
6744
  const requestedPath = url.searchParams.get("path") || "";
@@ -6660,7 +6758,7 @@ var Route$32 = createFileRoute("/api/git-diff")({ server: { handlers: { GET: asy
6660
6758
  return routeErrorResponse(error, "Failed to read git diff");
6661
6759
  }
6662
6760
  } } } });
6663
- var Route$31 = createFileRoute("/api/git-commit-message")({ server: { handlers: { POST: async ({ request }) => {
6761
+ var Route$32 = createFileRoute("/api/git-commit-message")({ server: { handlers: { POST: async ({ request }) => {
6664
6762
  try {
6665
6763
  const body = await readRequestJson(request);
6666
6764
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -6679,7 +6777,7 @@ var Route$31 = createFileRoute("/api/git-commit-message")({ server: { handlers:
6679
6777
  return routeErrorResponse(error, "Failed to generate commit message");
6680
6778
  }
6681
6779
  } } } });
6682
- var Route$30 = createFileRoute("/api/git-commit")({ server: { handlers: { POST: async ({ request }) => {
6780
+ var Route$31 = createFileRoute("/api/git-commit")({ server: { handlers: { POST: async ({ request }) => {
6683
6781
  try {
6684
6782
  const body = await readRequestJson(request);
6685
6783
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -6704,7 +6802,7 @@ var Route$30 = createFileRoute("/api/git-commit")({ server: { handlers: { POST:
6704
6802
  return routeErrorResponse(error, "Failed to commit changes");
6705
6803
  }
6706
6804
  } } } });
6707
- var Route$29 = createFileRoute("/api/git-checkout")({ server: { handlers: { POST: async ({ request }) => {
6805
+ var Route$30 = createFileRoute("/api/git-checkout")({ server: { handlers: { POST: async ({ request }) => {
6708
6806
  try {
6709
6807
  const body = await readRequestJson(request);
6710
6808
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -6754,7 +6852,7 @@ function getRuntimeRequestForGitChanges(request, url) {
6754
6852
  method: request.method
6755
6853
  });
6756
6854
  }
6757
- var Route$28 = createFileRoute("/api/git-changes")({ server: { handlers: { GET: async ({ request }) => {
6855
+ var Route$29 = createFileRoute("/api/git-changes")({ server: { handlers: { GET: async ({ request }) => {
6758
6856
  const url = new URL(request.url);
6759
6857
  const requestedCwd = url.searchParams.get("cwd") || "";
6760
6858
  const gitScope = getGitChangesScope(url);
@@ -6824,7 +6922,7 @@ var Route$28 = createFileRoute("/api/git-changes")({ server: { handlers: { GET:
6824
6922
  return routeErrorResponse(error, "Failed to read git changes");
6825
6923
  }
6826
6924
  } } } });
6827
- var Route$27 = createFileRoute("/api/file-completions")({ server: { handlers: { POST: async ({ request }) => {
6925
+ var Route$28 = createFileRoute("/api/file-completions")({ server: { handlers: { POST: async ({ request }) => {
6828
6926
  try {
6829
6927
  const body = await readRequestJson(request);
6830
6928
  const { context, activeEntry } = await getPicoRuntime().resolveRequest(request);
@@ -6841,7 +6939,7 @@ var Route$27 = createFileRoute("/api/file-completions")({ server: { handlers: {
6841
6939
  return routeErrorResponse(error, "Failed to list file completions");
6842
6940
  }
6843
6941
  } } } });
6844
- var Route$26 = createFileRoute("/api/directory-sessions-indexes")({ server: { handlers: { GET: async ({ request }) => {
6942
+ var Route$27 = createFileRoute("/api/directory-sessions-indexes")({ server: { handlers: { GET: async ({ request }) => {
6845
6943
  const directories = new URL(request.url).searchParams.getAll("directory");
6846
6944
  if (directories.length === 0) return errorResponse("at least one directory is required");
6847
6945
  try {
@@ -6850,7 +6948,7 @@ var Route$26 = createFileRoute("/api/directory-sessions-indexes")({ server: { ha
6850
6948
  return routeErrorResponse(error, "Failed to list directory session indexes");
6851
6949
  }
6852
6950
  } } } });
6853
- var Route$25 = createFileRoute("/api/directory-sessions-index")({ server: { handlers: { GET: async ({ request }) => {
6951
+ var Route$26 = createFileRoute("/api/directory-sessions-index")({ server: { handlers: { GET: async ({ request }) => {
6854
6952
  const directory = new URL(request.url).searchParams.get("directory") || "";
6855
6953
  if (!directory.trim()) return errorResponse("directory is required");
6856
6954
  try {
@@ -6859,7 +6957,7 @@ var Route$25 = createFileRoute("/api/directory-sessions-index")({ server: { hand
6859
6957
  return routeErrorResponse(error, "Failed to list directory session index");
6860
6958
  }
6861
6959
  } } } });
6862
- var Route$24 = createFileRoute("/api/directory-sessions")({ server: { handlers: { GET: async ({ request }) => {
6960
+ var Route$25 = createFileRoute("/api/directory-sessions")({ server: { handlers: { GET: async ({ request }) => {
6863
6961
  const url = new URL(request.url);
6864
6962
  const directory = url.searchParams.get("directory") || "";
6865
6963
  const offset = Number.parseInt(url.searchParams.get("offset") || "0", 10);
@@ -6874,7 +6972,7 @@ var Route$24 = createFileRoute("/api/directory-sessions")({ server: { handlers:
6874
6972
  return routeErrorResponse(error, "Failed to list directory sessions");
6875
6973
  }
6876
6974
  } } } });
6877
- var Route$23 = createFileRoute("/api/directory-search")({ server: { handlers: { POST: async ({ request }) => {
6975
+ var Route$24 = createFileRoute("/api/directory-search")({ server: { handlers: { POST: async ({ request }) => {
6878
6976
  try {
6879
6977
  const body = await readRequestJson(request);
6880
6978
  const { context, activeEntry } = await getPicoRuntime().resolveRequest(request);
@@ -6890,14 +6988,14 @@ var Route$23 = createFileRoute("/api/directory-search")({ server: { handlers: {
6890
6988
  return routeErrorResponse(error, "Failed to search directories");
6891
6989
  }
6892
6990
  } } } });
6893
- var Route$22 = createFileRoute("/api/abort")({ server: { handlers: { POST: async ({ request }) => {
6991
+ var Route$23 = createFileRoute("/api/abort")({ server: { handlers: { POST: async ({ request }) => {
6894
6992
  try {
6895
6993
  return jsonResponse(await getPicoRuntime().abort(request));
6896
6994
  } catch (error) {
6897
6995
  return routeErrorResponse(error, "Failed to abort session");
6898
6996
  }
6899
6997
  } } } });
6900
- var Route$21 = createFileRoute("/api/ui/$id")({ server: { handlers: { POST: async ({ request, params }) => {
6998
+ var Route$22 = createFileRoute("/api/ui/$id")({ server: { handlers: { POST: async ({ request, params }) => {
6901
6999
  try {
6902
7000
  const body = await readRequestJson(request);
6903
7001
  return jsonResponse(await getPicoRuntime().resolveUiRequest(params.id, body));
@@ -6905,7 +7003,7 @@ var Route$21 = createFileRoute("/api/ui/$id")({ server: { handlers: { POST: asyn
6905
7003
  return routeErrorResponse(error, "Failed to resolve UI request");
6906
7004
  }
6907
7005
  } } } });
6908
- var Route$20 = createFileRoute("/api/settings/hide-thinking")({ server: { handlers: { POST: async ({ request }) => {
7006
+ var Route$21 = createFileRoute("/api/settings/hide-thinking")({ server: { handlers: { POST: async ({ request }) => {
6909
7007
  try {
6910
7008
  const body = await readRequestJson(request);
6911
7009
  return jsonResponse(await getPicoRuntime().setHideThinking(body));
@@ -6913,7 +7011,7 @@ var Route$20 = createFileRoute("/api/settings/hide-thinking")({ server: { handle
6913
7011
  return routeErrorResponse(error, "Failed to update hide-thinking setting");
6914
7012
  }
6915
7013
  } } } });
6916
- var Route$19 = createFileRoute("/api/sessions/delete")({ server: { handlers: { POST: async ({ request }) => {
7014
+ var Route$20 = createFileRoute("/api/sessions/delete")({ server: { handlers: { POST: async ({ request }) => {
6917
7015
  try {
6918
7016
  const body = await readRequestJson(request);
6919
7017
  return jsonResponse(await getPicoRuntime().deleteSessions(request, body));
@@ -6921,7 +7019,7 @@ var Route$19 = createFileRoute("/api/sessions/delete")({ server: { handlers: { P
6921
7019
  return routeErrorResponse(error, "Failed to delete sessions");
6922
7020
  }
6923
7021
  } } } });
6924
- var Route$18 = createFileRoute("/api/session/tree")({ server: { handlers: {
7022
+ var Route$19 = createFileRoute("/api/session/tree")({ server: { handlers: {
6925
7023
  GET: async ({ request }) => {
6926
7024
  try {
6927
7025
  return jsonResponse(await getPicoRuntime().getSessionTreeForRequest(request));
@@ -6938,14 +7036,14 @@ var Route$18 = createFileRoute("/api/session/tree")({ server: { handlers: {
6938
7036
  }
6939
7037
  }
6940
7038
  } } });
6941
- var Route$17 = createFileRoute("/api/session/select")({ server: { handlers: { POST: async ({ request }) => {
7039
+ var Route$18 = createFileRoute("/api/session/select")({ server: { handlers: { POST: async ({ request }) => {
6942
7040
  try {
6943
7041
  return jsonResponse(await getPicoRuntime().selectSession(request));
6944
7042
  } catch (error) {
6945
7043
  return routeErrorResponse(error, "Failed to select session");
6946
7044
  }
6947
7045
  } } } });
6948
- var Route$16 = createFileRoute("/api/session/rename")({ server: { handlers: { POST: async ({ request }) => {
7046
+ var Route$17 = createFileRoute("/api/session/rename")({ server: { handlers: { POST: async ({ request }) => {
6949
7047
  try {
6950
7048
  const body = await readRequestJson(request);
6951
7049
  return jsonResponse(await getPicoRuntime().renameSession(body));
@@ -6953,7 +7051,7 @@ var Route$16 = createFileRoute("/api/session/rename")({ server: { handlers: { PO
6953
7051
  return routeErrorResponse(error, "Failed to rename session");
6954
7052
  }
6955
7053
  } } } });
6956
- var Route$15 = createFileRoute("/api/session/new")({ server: { handlers: { POST: async ({ request }) => {
7054
+ var Route$16 = createFileRoute("/api/session/new")({ server: { handlers: { POST: async ({ request }) => {
6957
7055
  try {
6958
7056
  const body = await readRequestJson(request);
6959
7057
  return jsonResponse(await getPicoRuntime().createNewSession(request, body));
@@ -6961,6 +7059,14 @@ var Route$15 = createFileRoute("/api/session/new")({ server: { handlers: { POST:
6961
7059
  return routeErrorResponse(error, "Failed to create session");
6962
7060
  }
6963
7061
  } } } });
7062
+ var Route$15 = createFileRoute("/api/session/move")({ server: { handlers: { POST: async ({ request }) => {
7063
+ try {
7064
+ const body = await readRequestJson(request);
7065
+ return jsonResponse(await getPicoRuntime().moveSession(request, body));
7066
+ } catch (error) {
7067
+ return routeErrorResponse(error, "Failed to move session");
7068
+ }
7069
+ } } } });
6964
7070
  var Route$14 = createFileRoute("/api/session/history")({ server: { handlers: { GET: async ({ request }) => {
6965
7071
  try {
6966
7072
  const url = new URL(request.url);
@@ -7118,215 +7224,220 @@ var Route = createFileRoute("/api/session/tree/label")({ server: { handlers: { P
7118
7224
  return routeErrorResponse(error, "Failed to update tree label");
7119
7225
  }
7120
7226
  } } } });
7121
- var EventsRoute = Route$46.update({
7227
+ var EventsRoute = Route$47.update({
7122
7228
  id: "/events",
7123
7229
  path: "/events",
7124
- getParentRoute: () => Route$47
7230
+ getParentRoute: () => Route$48
7125
7231
  });
7126
- var IndexRoute = Route$48.update({
7232
+ var IndexRoute = Route$49.update({
7127
7233
  id: "/",
7128
7234
  path: "/",
7129
- getParentRoute: () => Route$47
7235
+ getParentRoute: () => Route$48
7130
7236
  });
7131
- var ApiThinkingRoute = Route$45.update({
7237
+ var ApiThinkingRoute = Route$46.update({
7132
7238
  id: "/api/thinking",
7133
7239
  path: "/api/thinking",
7134
- getParentRoute: () => Route$47
7240
+ getParentRoute: () => Route$48
7135
7241
  });
7136
- var ApiSlashCommandRoute = Route$44.update({
7242
+ var ApiSlashCommandRoute = Route$45.update({
7137
7243
  id: "/api/slash-command",
7138
7244
  path: "/api/slash-command",
7139
- getParentRoute: () => Route$47
7245
+ getParentRoute: () => Route$48
7140
7246
  });
7141
- var ApiProviderUsageRoute = Route$43.update({
7247
+ var ApiProviderUsageRoute = Route$44.update({
7142
7248
  id: "/api/provider-usage",
7143
7249
  path: "/api/provider-usage",
7144
- getParentRoute: () => Route$47
7250
+ getParentRoute: () => Route$48
7145
7251
  });
7146
- var ApiPromptRoute = Route$42.update({
7252
+ var ApiPromptRoute = Route$43.update({
7147
7253
  id: "/api/prompt",
7148
7254
  path: "/api/prompt",
7149
- getParentRoute: () => Route$47
7255
+ getParentRoute: () => Route$48
7150
7256
  });
7151
- var ApiPathCompletionsRoute = Route$41.update({
7257
+ var ApiPathCompletionsRoute = Route$42.update({
7152
7258
  id: "/api/path-completions",
7153
7259
  path: "/api/path-completions",
7154
- getParentRoute: () => Route$47
7260
+ getParentRoute: () => Route$48
7155
7261
  });
7156
- var ApiModelRoute = Route$40.update({
7262
+ var ApiModelRoute = Route$41.update({
7157
7263
  id: "/api/model",
7158
7264
  path: "/api/model",
7159
- getParentRoute: () => Route$47
7265
+ getParentRoute: () => Route$48
7160
7266
  });
7161
- var ApiHighlightRoute = Route$39.update({
7267
+ var ApiHighlightRoute = Route$40.update({
7162
7268
  id: "/api/highlight",
7163
7269
  path: "/api/highlight",
7164
- getParentRoute: () => Route$47
7270
+ getParentRoute: () => Route$48
7165
7271
  });
7166
- var ApiGitStatusRoute = Route$38.update({
7272
+ var ApiGitStatusRoute = Route$39.update({
7167
7273
  id: "/api/git-status",
7168
7274
  path: "/api/git-status",
7169
- getParentRoute: () => Route$47
7275
+ getParentRoute: () => Route$48
7170
7276
  });
7171
- var ApiGitStageRoute = Route$37.update({
7277
+ var ApiGitStageRoute = Route$38.update({
7172
7278
  id: "/api/git-stage",
7173
7279
  path: "/api/git-stage",
7174
- getParentRoute: () => Route$47
7280
+ getParentRoute: () => Route$48
7175
7281
  });
7176
- var ApiGitReviewRoute = Route$36.update({
7282
+ var ApiGitReviewRoute = Route$37.update({
7177
7283
  id: "/api/git-review",
7178
7284
  path: "/api/git-review",
7179
- getParentRoute: () => Route$47
7285
+ getParentRoute: () => Route$48
7180
7286
  });
7181
- var ApiGitPushRoute = Route$35.update({
7287
+ var ApiGitPushRoute = Route$36.update({
7182
7288
  id: "/api/git-push",
7183
7289
  path: "/api/git-push",
7184
- getParentRoute: () => Route$47
7290
+ getParentRoute: () => Route$48
7185
7291
  });
7186
- var ApiGitPullRoute = Route$34.update({
7292
+ var ApiGitPullRoute = Route$35.update({
7187
7293
  id: "/api/git-pull",
7188
7294
  path: "/api/git-pull",
7189
- getParentRoute: () => Route$47
7295
+ getParentRoute: () => Route$48
7190
7296
  });
7191
- var ApiGitDiscardRoute = Route$33.update({
7297
+ var ApiGitDiscardRoute = Route$34.update({
7192
7298
  id: "/api/git-discard",
7193
7299
  path: "/api/git-discard",
7194
- getParentRoute: () => Route$47
7300
+ getParentRoute: () => Route$48
7195
7301
  });
7196
- var ApiGitDiffRoute = Route$32.update({
7302
+ var ApiGitDiffRoute = Route$33.update({
7197
7303
  id: "/api/git-diff",
7198
7304
  path: "/api/git-diff",
7199
- getParentRoute: () => Route$47
7305
+ getParentRoute: () => Route$48
7200
7306
  });
7201
- var ApiGitCommitMessageRoute = Route$31.update({
7307
+ var ApiGitCommitMessageRoute = Route$32.update({
7202
7308
  id: "/api/git-commit-message",
7203
7309
  path: "/api/git-commit-message",
7204
- getParentRoute: () => Route$47
7310
+ getParentRoute: () => Route$48
7205
7311
  });
7206
- var ApiGitCommitRoute = Route$30.update({
7312
+ var ApiGitCommitRoute = Route$31.update({
7207
7313
  id: "/api/git-commit",
7208
7314
  path: "/api/git-commit",
7209
- getParentRoute: () => Route$47
7315
+ getParentRoute: () => Route$48
7210
7316
  });
7211
- var ApiGitCheckoutRoute = Route$29.update({
7317
+ var ApiGitCheckoutRoute = Route$30.update({
7212
7318
  id: "/api/git-checkout",
7213
7319
  path: "/api/git-checkout",
7214
- getParentRoute: () => Route$47
7320
+ getParentRoute: () => Route$48
7215
7321
  });
7216
- var ApiGitChangesRoute = Route$28.update({
7322
+ var ApiGitChangesRoute = Route$29.update({
7217
7323
  id: "/api/git-changes",
7218
7324
  path: "/api/git-changes",
7219
- getParentRoute: () => Route$47
7325
+ getParentRoute: () => Route$48
7220
7326
  });
7221
- var ApiFileCompletionsRoute = Route$27.update({
7327
+ var ApiFileCompletionsRoute = Route$28.update({
7222
7328
  id: "/api/file-completions",
7223
7329
  path: "/api/file-completions",
7224
- getParentRoute: () => Route$47
7330
+ getParentRoute: () => Route$48
7225
7331
  });
7226
- var ApiDirectorySessionsIndexesRoute = Route$26.update({
7332
+ var ApiDirectorySessionsIndexesRoute = Route$27.update({
7227
7333
  id: "/api/directory-sessions-indexes",
7228
7334
  path: "/api/directory-sessions-indexes",
7229
- getParentRoute: () => Route$47
7335
+ getParentRoute: () => Route$48
7230
7336
  });
7231
- var ApiDirectorySessionsIndexRoute = Route$25.update({
7337
+ var ApiDirectorySessionsIndexRoute = Route$26.update({
7232
7338
  id: "/api/directory-sessions-index",
7233
7339
  path: "/api/directory-sessions-index",
7234
- getParentRoute: () => Route$47
7340
+ getParentRoute: () => Route$48
7235
7341
  });
7236
- var ApiDirectorySessionsRoute = Route$24.update({
7342
+ var ApiDirectorySessionsRoute = Route$25.update({
7237
7343
  id: "/api/directory-sessions",
7238
7344
  path: "/api/directory-sessions",
7239
- getParentRoute: () => Route$47
7345
+ getParentRoute: () => Route$48
7240
7346
  });
7241
- var ApiDirectorySearchRoute = Route$23.update({
7347
+ var ApiDirectorySearchRoute = Route$24.update({
7242
7348
  id: "/api/directory-search",
7243
7349
  path: "/api/directory-search",
7244
- getParentRoute: () => Route$47
7350
+ getParentRoute: () => Route$48
7245
7351
  });
7246
- var ApiAbortRoute = Route$22.update({
7352
+ var ApiAbortRoute = Route$23.update({
7247
7353
  id: "/api/abort",
7248
7354
  path: "/api/abort",
7249
- getParentRoute: () => Route$47
7355
+ getParentRoute: () => Route$48
7250
7356
  });
7251
- var ApiUiIdRoute = Route$21.update({
7357
+ var ApiUiIdRoute = Route$22.update({
7252
7358
  id: "/api/ui/$id",
7253
7359
  path: "/api/ui/$id",
7254
- getParentRoute: () => Route$47
7360
+ getParentRoute: () => Route$48
7255
7361
  });
7256
- var ApiSettingsHideThinkingRoute = Route$20.update({
7362
+ var ApiSettingsHideThinkingRoute = Route$21.update({
7257
7363
  id: "/api/settings/hide-thinking",
7258
7364
  path: "/api/settings/hide-thinking",
7259
- getParentRoute: () => Route$47
7365
+ getParentRoute: () => Route$48
7260
7366
  });
7261
- var ApiSessionsDeleteRoute = Route$19.update({
7367
+ var ApiSessionsDeleteRoute = Route$20.update({
7262
7368
  id: "/api/sessions/delete",
7263
7369
  path: "/api/sessions/delete",
7264
- getParentRoute: () => Route$47
7370
+ getParentRoute: () => Route$48
7265
7371
  });
7266
- var ApiSessionTreeRoute = Route$18.update({
7372
+ var ApiSessionTreeRoute = Route$19.update({
7267
7373
  id: "/api/session/tree",
7268
7374
  path: "/api/session/tree",
7269
- getParentRoute: () => Route$47
7375
+ getParentRoute: () => Route$48
7270
7376
  });
7271
- var ApiSessionSelectRoute = Route$17.update({
7377
+ var ApiSessionSelectRoute = Route$18.update({
7272
7378
  id: "/api/session/select",
7273
7379
  path: "/api/session/select",
7274
- getParentRoute: () => Route$47
7380
+ getParentRoute: () => Route$48
7275
7381
  });
7276
- var ApiSessionRenameRoute = Route$16.update({
7382
+ var ApiSessionRenameRoute = Route$17.update({
7277
7383
  id: "/api/session/rename",
7278
7384
  path: "/api/session/rename",
7279
- getParentRoute: () => Route$47
7385
+ getParentRoute: () => Route$48
7280
7386
  });
7281
- var ApiSessionNewRoute = Route$15.update({
7387
+ var ApiSessionNewRoute = Route$16.update({
7282
7388
  id: "/api/session/new",
7283
7389
  path: "/api/session/new",
7284
- getParentRoute: () => Route$47
7390
+ getParentRoute: () => Route$48
7391
+ });
7392
+ var ApiSessionMoveRoute = Route$15.update({
7393
+ id: "/api/session/move",
7394
+ path: "/api/session/move",
7395
+ getParentRoute: () => Route$48
7285
7396
  });
7286
7397
  var ApiSessionHistoryRoute = Route$14.update({
7287
7398
  id: "/api/session/history",
7288
7399
  path: "/api/session/history",
7289
- getParentRoute: () => Route$47
7400
+ getParentRoute: () => Route$48
7290
7401
  });
7291
7402
  var ApiSessionForkRoute = Route$13.update({
7292
7403
  id: "/api/session/fork",
7293
7404
  path: "/api/session/fork",
7294
- getParentRoute: () => Route$47
7405
+ getParentRoute: () => Route$48
7295
7406
  });
7296
7407
  var ApiSessionDeleteRoute = Route$12.update({
7297
7408
  id: "/api/session/delete",
7298
7409
  path: "/api/session/delete",
7299
- getParentRoute: () => Route$47
7410
+ getParentRoute: () => Route$48
7300
7411
  });
7301
7412
  var ApiSessionCloneRoute = Route$11.update({
7302
7413
  id: "/api/session/clone",
7303
7414
  path: "/api/session/clone",
7304
- getParentRoute: () => Route$47
7415
+ getParentRoute: () => Route$48
7305
7416
  });
7306
7417
  var ApiPendingMessagesReorderRoute = Route$10.update({
7307
7418
  id: "/api/pending-messages/reorder",
7308
7419
  path: "/api/pending-messages/reorder",
7309
- getParentRoute: () => Route$47
7420
+ getParentRoute: () => Route$48
7310
7421
  });
7311
7422
  var ApiPendingMessageRemoveRoute = Route$9.update({
7312
7423
  id: "/api/pending-message/remove",
7313
7424
  path: "/api/pending-message/remove",
7314
- getParentRoute: () => Route$47
7425
+ getParentRoute: () => Route$48
7315
7426
  });
7316
7427
  var ApiFilesTreeRoute = Route$8.update({
7317
7428
  id: "/api/files/tree",
7318
7429
  path: "/api/files/tree",
7319
- getParentRoute: () => Route$47
7430
+ getParentRoute: () => Route$48
7320
7431
  });
7321
7432
  var ApiFilesReadRoute = Route$7.update({
7322
7433
  id: "/api/files/read",
7323
7434
  path: "/api/files/read",
7324
- getParentRoute: () => Route$47
7435
+ getParentRoute: () => Route$48
7325
7436
  });
7326
7437
  var ApiDirectoryResolveRoute = Route$6.update({
7327
7438
  id: "/api/directory/resolve",
7328
7439
  path: "/api/directory/resolve",
7329
- getParentRoute: () => Route$47
7440
+ getParentRoute: () => Route$48
7330
7441
  });
7331
7442
  var ApiDirectorySessionsCleanupRoute = Route$5.update({
7332
7443
  id: "/cleanup",
@@ -7336,22 +7447,22 @@ var ApiDirectorySessionsCleanupRoute = Route$5.update({
7336
7447
  var ApiAuthProvidersRoute = Route$4.update({
7337
7448
  id: "/api/auth/providers",
7338
7449
  path: "/api/auth/providers",
7339
- getParentRoute: () => Route$47
7450
+ getParentRoute: () => Route$48
7340
7451
  });
7341
7452
  var ApiAuthOauthRoute = Route$3.update({
7342
7453
  id: "/api/auth/oauth",
7343
7454
  path: "/api/auth/oauth",
7344
- getParentRoute: () => Route$47
7455
+ getParentRoute: () => Route$48
7345
7456
  });
7346
7457
  var ApiAuthLogoutRoute = Route$2.update({
7347
7458
  id: "/api/auth/logout",
7348
7459
  path: "/api/auth/logout",
7349
- getParentRoute: () => Route$47
7460
+ getParentRoute: () => Route$48
7350
7461
  });
7351
7462
  var ApiAuthApiKeyRoute = Route$1.update({
7352
7463
  id: "/api/auth/api-key",
7353
7464
  path: "/api/auth/api-key",
7354
- getParentRoute: () => Route$47
7465
+ getParentRoute: () => Route$48
7355
7466
  });
7356
7467
  var ApiSessionTreeLabelRoute = Route.update({
7357
7468
  id: "/label",
@@ -7401,6 +7512,7 @@ var rootRouteChildren = {
7401
7512
  ApiSessionDeleteRoute,
7402
7513
  ApiSessionForkRoute,
7403
7514
  ApiSessionHistoryRoute,
7515
+ ApiSessionMoveRoute,
7404
7516
  ApiSessionNewRoute,
7405
7517
  ApiSessionRenameRoute,
7406
7518
  ApiSessionSelectRoute,
@@ -7409,7 +7521,7 @@ var rootRouteChildren = {
7409
7521
  ApiSettingsHideThinkingRoute,
7410
7522
  ApiUiIdRoute
7411
7523
  };
7412
- var routeTree = Route$47._addFileChildren(rootRouteChildren)._addFileTypes();
7524
+ var routeTree = Route$48._addFileChildren(rootRouteChildren)._addFileTypes();
7413
7525
  function getRouter() {
7414
7526
  const queryClient = new QueryClient({ defaultOptions: { queries: {
7415
7527
  retry: 1,