tarsk 0.4.19 → 0.4.21

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 (57) hide show
  1. package/dist/index.js +140 -19
  2. package/dist/public/assets/{account-view-Bbhl_jIc.js → account-view-D1kGyryt.js} +1 -1
  3. package/dist/public/assets/alert-dialog-Bk7neo_n.js +1 -0
  4. package/dist/public/assets/{api-B28NOxKR.js → api-DL5XaoTS.js} +1 -1
  5. package/dist/public/assets/browser-tab-BUOT-D_w.js +1 -0
  6. package/dist/public/assets/chat-input-container-2a99CMGs.js +1 -0
  7. package/dist/public/assets/{context-menu-Bs2ogSXU.js → context-menu-DHHElhQ1.js} +1 -1
  8. package/dist/public/assets/conversation-history-view-HVFzgO9e.js +1 -0
  9. package/dist/public/assets/{dialogs-config-D3xml4W2.js → dialogs-config-DmDjliuA.js} +6 -6
  10. package/dist/public/assets/diff-view-DXIv51Tn.js +3 -0
  11. package/dist/public/assets/{dist-OF8pavjm.js → dist-CIGnaqp2.js} +7 -7
  12. package/dist/public/assets/explorer-tab-view-tyn_6pBh.js +2 -0
  13. package/dist/public/assets/explorer-tree-DOg67ane.js +1 -0
  14. package/dist/public/assets/explorer-view-Bw3-gTSX.js +1 -0
  15. package/dist/public/assets/history-view-BOjZoBCb.js +1 -0
  16. package/dist/public/assets/index-BPF49zet.css +1 -0
  17. package/dist/public/assets/index-DAw9BEzt.js +50 -0
  18. package/dist/public/assets/onboarding-BgEjTEKs.js +1 -0
  19. package/dist/public/assets/onboarding-dialog-EiVl-ynw.js +1 -0
  20. package/dist/public/assets/page-toolbar-CvreDTwj.js +1 -0
  21. package/dist/public/assets/{project-settings-view-BsGGUbat.js → project-settings-view-BJYR_l3u.js} +1 -1
  22. package/dist/public/assets/provider-details-view-B1eTEo0M.js +1 -0
  23. package/dist/public/assets/providers-sidebar-Df50eL_5.js +1 -0
  24. package/dist/public/assets/react-vendor-CaS5zjF7.js +17 -0
  25. package/dist/public/assets/resizable-DJ5w1ZWX.js +1 -0
  26. package/dist/public/assets/run-stop-button-iZHomql0.js +2 -0
  27. package/dist/public/assets/settings-view-C38jeeqJ.js +2 -0
  28. package/dist/public/assets/side-panel-container-BqWSTCOr.js +2 -0
  29. package/dist/public/assets/standard-list-item-CpBjveM0.js +1 -0
  30. package/dist/public/assets/store-CAPnOXso.js +2 -0
  31. package/dist/public/assets/{tab-context-CnzSKG0L.js → tab-context-Bmd79Rk0.js} +1 -1
  32. package/dist/public/assets/tabs-DEmnnGvq.js +1 -0
  33. package/dist/public/assets/{terminal-panel-BhJSKgOW.js → terminal-panel-r8cb3-tk.js} +1 -1
  34. package/dist/public/assets/{textarea-C1e4J_5m.js → textarea-BjfyGfGR.js} +1 -1
  35. package/dist/public/assets/todos-view-MAb840dD.js +1 -0
  36. package/dist/public/assets/{use-toast-BZ7ir6gB.js → use-toast-C9B1H3P9.js} +1 -1
  37. package/dist/public/assets/{utils-CLxr_0Ql.js → utils-BG_JNnOl.js} +1 -1
  38. package/dist/public/index.html +20 -12
  39. package/package.json +16 -16
  40. package/dist/public/assets/browser-tab-os7ReSAI.js +0 -1
  41. package/dist/public/assets/conversation-history-view-DjyJh65Y.js +0 -1
  42. package/dist/public/assets/diff-view-702Bpg9H.js +0 -3
  43. package/dist/public/assets/explorer-tab-view-BvmxzUAs.js +0 -2
  44. package/dist/public/assets/explorer-tree-mCR_Wwfz.js +0 -1
  45. package/dist/public/assets/explorer-view-BN9RAXjq.js +0 -1
  46. package/dist/public/assets/history-view-BnRtfSte.js +0 -1
  47. package/dist/public/assets/index-BQ391mCU.css +0 -1
  48. package/dist/public/assets/index-CSGl7zru.js +0 -51
  49. package/dist/public/assets/onboarding-dialog-Ic62dkfi.js +0 -1
  50. package/dist/public/assets/onboarding-eQed-ZzK.js +0 -1
  51. package/dist/public/assets/provider-details-view-Di1Hw9Bi.js +0 -1
  52. package/dist/public/assets/providers-sidebar-klkFVN5y.js +0 -1
  53. package/dist/public/assets/react-vendor-DcsTuVun.js +0 -17
  54. package/dist/public/assets/settings-view-CF-gBfNl.js +0 -2
  55. package/dist/public/assets/store-erJP4KTe.js +0 -2
  56. package/dist/public/assets/todos-view-BtDv09d6.js +0 -1
  57. /package/dist/public/assets/{monaco-DvsnxTfD.js → monaco-c-HyCuEi.js} +0 -0
package/dist/index.js CHANGED
@@ -4196,7 +4196,7 @@ function createGenerateImageTool(options) {
4196
4196
  let apiKey = providerConfig.env && providerConfig.env.length > 0 ? process.env[providerConfig.env[0]] : void 0;
4197
4197
  if (!apiKey) {
4198
4198
  const providerKeys = await metadataManager.getProviderKeys();
4199
- apiKey = providerKeys[providerConfig.name];
4199
+ apiKey = providerKeys[providerConfig.id];
4200
4200
  }
4201
4201
  if (!apiKey) {
4202
4202
  return {
@@ -5070,7 +5070,7 @@ async function executeSubagent(options) {
5070
5070
  let apiKey = providerConfig.env && providerConfig.env.length > 0 ? process.env[providerConfig.env[0]] : void 0;
5071
5071
  if (!apiKey) {
5072
5072
  const providerKeys = await metadataManager.getProviderKeys();
5073
- apiKey = providerKeys[providerConfig.name];
5073
+ apiKey = providerKeys[providerConfig.id];
5074
5074
  }
5075
5075
  if (!apiKey) {
5076
5076
  throw new Error(
@@ -5951,6 +5951,7 @@ var PiExecutorImpl = class {
5951
5951
  constructor(metadataManager) {
5952
5952
  this.metadataManager = metadataManager;
5953
5953
  }
5954
+ metadataManager;
5954
5955
  async *execute(userPrompt, context, signal, conversationHistory) {
5955
5956
  try {
5956
5957
  const providerName = context.provider;
@@ -5978,7 +5979,7 @@ var PiExecutorImpl = class {
5978
5979
  if (!apiKey) {
5979
5980
  try {
5980
5981
  const providerKeys = await this.metadataManager.getProviderKeys();
5981
- apiKey = providerKeys[providerConfig.name];
5982
+ apiKey = providerKeys[providerConfig.id];
5982
5983
  apiKeySource = "configuration";
5983
5984
  } catch (error) {
5984
5985
  console.error(`[ai] Failed to retrieve provider keys from configuration:`, error);
@@ -7823,7 +7824,7 @@ $ ${validationScript}`
7823
7824
  console.log("[ChatRoute] Validation script passed");
7824
7825
  const passEvent = {
7825
7826
  type: "thinking",
7826
- content: `[Validating] Validation passed (exit code 0)${result.output ? `
7827
+ content: `[Validated] Validation passed (exit code 0)${result.output ? `
7827
7828
  ${result.output}` : ""}`
7828
7829
  };
7829
7830
  processingStateManager.pushEvent(threadId, passEvent);
@@ -7833,7 +7834,7 @@ ${result.output}` : ""}`
7833
7834
  console.log(`[ChatRoute] Validation script failed (exit code ${result.exitCode})`);
7834
7835
  const failEvent = {
7835
7836
  type: "thinking",
7836
- content: `[Validating] Validation failed (exit code ${result.exitCode})
7837
+ content: `[Validated] Validation failed (exit code ${result.exitCode})
7837
7838
  ${result.output}`
7838
7839
  };
7839
7840
  processingStateManager.pushEvent(threadId, failEvent);
@@ -7883,7 +7884,7 @@ ${result.output}`;
7883
7884
  if (attempt >= MAX_VALIDATION_ATTEMPTS) {
7884
7885
  const maxAttemptsEvent = {
7885
7886
  type: "thinking",
7886
- content: `[Validating] Validation script still failing after ${MAX_VALIDATION_ATTEMPTS} attempts. Stopping.`
7887
+ content: `[Validated] Validation script still failing after ${MAX_VALIDATION_ATTEMPTS} attempts. Stopping.`
7887
7888
  };
7888
7889
  processingStateManager.pushEvent(threadId, maxAttemptsEvent);
7889
7890
  yield maxAttemptsEvent;
@@ -10260,6 +10261,8 @@ var OpenWithHandler = class {
10260
10261
  this.getProject = getProject2;
10261
10262
  this.metadataManager = metadataManager;
10262
10263
  }
10264
+ getProject;
10265
+ metadataManager;
10263
10266
  async openWith(projectId, program) {
10264
10267
  console.log("[openWith] Request: projectId=%s program=%s", projectId, program);
10265
10268
  const programError = validateProgram(program);
@@ -10957,6 +10960,9 @@ function validateFilePath(projectPath, filePath) {
10957
10960
  async function handleGetAIFiles(c, projectManager) {
10958
10961
  try {
10959
10962
  const projectId = c.req.param("id");
10963
+ if (!projectId) {
10964
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Project ID is required", 400);
10965
+ }
10960
10966
  const project = await projectManager.getProject(projectId);
10961
10967
  if (!project) {
10962
10968
  return errorResponse(c, ErrorCodes.PROJECT_NOT_FOUND, `Project not found: ${projectId}`, 404);
@@ -10976,6 +10982,9 @@ async function handleGetAIFiles(c, projectManager) {
10976
10982
  async function handleGetAIFile(c, projectManager) {
10977
10983
  try {
10978
10984
  const projectId = c.req.param("id");
10985
+ if (!projectId) {
10986
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Project ID is required", 400);
10987
+ }
10979
10988
  const filePath = c.req.query("path");
10980
10989
  if (!filePath) {
10981
10990
  return c.json(
@@ -11046,6 +11055,9 @@ Links to important documentation, tools, or references.
11046
11055
  async function handleSaveAIFile(c, projectManager) {
11047
11056
  try {
11048
11057
  const projectId = c.req.param("id");
11058
+ if (!projectId) {
11059
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Project ID is required", 400);
11060
+ }
11049
11061
  let body;
11050
11062
  try {
11051
11063
  body = await c.req.json();
@@ -11084,6 +11096,9 @@ async function handleSaveAIFile(c, projectManager) {
11084
11096
  async function handleDeleteAIFile(c, projectManager) {
11085
11097
  try {
11086
11098
  const projectId = c.req.param("id");
11099
+ if (!projectId) {
11100
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Project ID is required", 400);
11101
+ }
11087
11102
  const filePath = c.req.query("path");
11088
11103
  if (!filePath) {
11089
11104
  return c.json(
@@ -11122,6 +11137,9 @@ async function handleDeleteAIFile(c, projectManager) {
11122
11137
  async function handleCreateSkill(c, projectManager) {
11123
11138
  try {
11124
11139
  const projectId = c.req.param("id");
11140
+ if (!projectId) {
11141
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Project ID is required", 400);
11142
+ }
11125
11143
  let body;
11126
11144
  try {
11127
11145
  body = await c.req.json();
@@ -12657,6 +12675,11 @@ var ProjectCreator = class {
12657
12675
  this.processingStateManager = processingStateManager;
12658
12676
  this.runCommandCallbacks = runCommandCallbacks;
12659
12677
  }
12678
+ rootFolder;
12679
+ metadataManager;
12680
+ gitManager;
12681
+ processingStateManager;
12682
+ runCommandCallbacks;
12660
12683
  async *createProject(gitUrl, commitMethod = CommitMethods.PullRequest) {
12661
12684
  if (!this.gitManager.validateGitUrl(gitUrl)) {
12662
12685
  yield {
@@ -13827,6 +13850,14 @@ async function getAIHubMixCredits(apiKey) {
13827
13850
  // src/features/providers/providers-get-credits.route.ts
13828
13851
  async function getProviderCredits(c, metadataManager) {
13829
13852
  const name = c.req.param("name");
13853
+ if (!name) {
13854
+ const { response, statusCode } = ResponseBuilder.error(
13855
+ ErrorCodes.INVALID_REQUEST,
13856
+ "Provider name is required",
13857
+ 400
13858
+ );
13859
+ return c.json(response, statusCode);
13860
+ }
13830
13861
  if (name.toLowerCase() === "openrouter") {
13831
13862
  try {
13832
13863
  const keys = await metadataManager.getProviderKeys();
@@ -15488,13 +15519,9 @@ async function getScriptsByProject(db, projectId) {
15488
15519
  async function upsertProjectScripts(projectId, scripts) {
15489
15520
  const db = await getDatabase();
15490
15521
  const now = (/* @__PURE__ */ new Date()).toISOString();
15491
- await db.execute({
15492
- sql: `DELETE FROM project_scripts WHERE projectId = ?`,
15493
- args: [projectId]
15494
- });
15495
15522
  for (const script of scripts) {
15496
15523
  await db.execute({
15497
- sql: `INSERT INTO project_scripts (id, projectId, workspace, name, command, friendlyName, updatedAt)
15524
+ sql: `INSERT OR REPLACE INTO project_scripts (id, projectId, workspace, name, command, friendlyName, updatedAt)
15498
15525
  VALUES (?, ?, ?, ?, ?, ?, ?)`,
15499
15526
  args: [
15500
15527
  randomUUID9(),
@@ -15605,9 +15632,8 @@ async function resolvePackageJsonWorkspaces(projectPath) {
15605
15632
  for (const folder of folders) {
15606
15633
  const absPath = join22(projectPath, folder);
15607
15634
  if (existsSync14(join22(absPath, "package.json"))) {
15608
- const wsPkg = await readPackageJson(absPath);
15609
15635
  workspaces.push({
15610
- name: wsPkg?.name ?? basename4(folder),
15636
+ name: basename4(folder),
15611
15637
  folder: absPath,
15612
15638
  relativePath: folder
15613
15639
  });
@@ -15764,9 +15790,8 @@ async function resolveFolderWorkspaces(projectPath) {
15764
15790
  const folders = await detectFolderBasedWorkspaces(projectPath);
15765
15791
  const workspaces = [];
15766
15792
  for (const folder of folders) {
15767
- const wsPkg = await readPackageJson(folder.absPath);
15768
15793
  workspaces.push({
15769
- name: wsPkg?.name ?? folder.name,
15794
+ name: folder.name,
15770
15795
  folder: folder.absPath,
15771
15796
  relativePath: folder.name
15772
15797
  });
@@ -16102,6 +16127,9 @@ async function getIgnoredPaths(repoPath, relativePaths) {
16102
16127
  async function handleListThreadExplorerDir(c, threadManager) {
16103
16128
  try {
16104
16129
  const threadId = c.req.param("id");
16130
+ if (!threadId) {
16131
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16132
+ }
16105
16133
  const queryPath = c.req.query("path") ?? "";
16106
16134
  const thread = await threadManager.getThread(threadId);
16107
16135
  if (!thread) {
@@ -16154,6 +16182,9 @@ async function handleListThreadExplorerDir(c, threadManager) {
16154
16182
  async function handleDeleteExplorerItem(c, threadManager) {
16155
16183
  try {
16156
16184
  const threadId = c.req.param("id");
16185
+ if (!threadId) {
16186
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16187
+ }
16157
16188
  const filePath = c.req.query("path");
16158
16189
  if (!filePath) {
16159
16190
  return c.json({ error: { code: "BAD_REQUEST", message: "path is required" } }, 400);
@@ -16191,6 +16222,9 @@ async function handleDeleteExplorerItem(c, threadManager) {
16191
16222
  async function handleRenameExplorerItem(c, threadManager) {
16192
16223
  try {
16193
16224
  const threadId = c.req.param("id");
16225
+ if (!threadId) {
16226
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16227
+ }
16194
16228
  let body;
16195
16229
  try {
16196
16230
  body = await c.req.json();
@@ -16236,6 +16270,9 @@ async function handleRenameExplorerItem(c, threadManager) {
16236
16270
  async function handleCreateExplorerFile(c, threadManager) {
16237
16271
  try {
16238
16272
  const threadId = c.req.param("id");
16273
+ if (!threadId) {
16274
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16275
+ }
16239
16276
  let body;
16240
16277
  try {
16241
16278
  body = await c.req.json();
@@ -16296,6 +16333,9 @@ var MEDIA_MIME_TYPES = {
16296
16333
  async function handleGetExplorerMedia(c, threadManager) {
16297
16334
  try {
16298
16335
  const threadId = c.req.param("id");
16336
+ if (!threadId) {
16337
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16338
+ }
16299
16339
  const filePath = c.req.query("path");
16300
16340
  if (!filePath) {
16301
16341
  return c.json(
@@ -16333,6 +16373,9 @@ async function handleGetExplorerMedia(c, threadManager) {
16333
16373
  async function handleCreateExplorerFolder(c, threadManager) {
16334
16374
  try {
16335
16375
  const threadId = c.req.param("id");
16376
+ if (!threadId) {
16377
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16378
+ }
16336
16379
  let body;
16337
16380
  try {
16338
16381
  body = await c.req.json();
@@ -16593,6 +16636,12 @@ async function downloadGithubFolder(repoUrl, srcPath, destPath, options = {}) {
16593
16636
  async function handleGetThreadAIFiles(c, threadManager) {
16594
16637
  try {
16595
16638
  const threadId = c.req.param("id");
16639
+ if (!threadId) {
16640
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16641
+ }
16642
+ if (!threadId) {
16643
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16644
+ }
16596
16645
  const thread = await threadManager.getThread(threadId);
16597
16646
  if (!thread) {
16598
16647
  return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, `Thread not found: ${threadId}`, 404);
@@ -16612,6 +16661,9 @@ async function handleGetThreadAIFiles(c, threadManager) {
16612
16661
  async function handleGetThreadAIFile(c, threadManager) {
16613
16662
  try {
16614
16663
  const threadId = c.req.param("id");
16664
+ if (!threadId) {
16665
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16666
+ }
16615
16667
  const filePath = c.req.query("path");
16616
16668
  if (!filePath) {
16617
16669
  return c.json(
@@ -16682,6 +16734,9 @@ Links to important documentation, tools, or references.
16682
16734
  async function handleSaveThreadAIFile(c, threadManager) {
16683
16735
  try {
16684
16736
  const threadId = c.req.param("id");
16737
+ if (!threadId) {
16738
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16739
+ }
16685
16740
  let body;
16686
16741
  try {
16687
16742
  body = await c.req.json();
@@ -16720,6 +16775,9 @@ async function handleSaveThreadAIFile(c, threadManager) {
16720
16775
  async function handleDeleteThreadAIFile(c, threadManager) {
16721
16776
  try {
16722
16777
  const threadId = c.req.param("id");
16778
+ if (!threadId) {
16779
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16780
+ }
16723
16781
  const filePath = c.req.query("path");
16724
16782
  if (!filePath) {
16725
16783
  return c.json(
@@ -16758,6 +16816,9 @@ async function handleDeleteThreadAIFile(c, threadManager) {
16758
16816
  async function handleCreateThreadAgent(c, threadManager) {
16759
16817
  try {
16760
16818
  const threadId = c.req.param("id");
16819
+ if (!threadId) {
16820
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16821
+ }
16761
16822
  let body;
16762
16823
  try {
16763
16824
  body = await c.req.json();
@@ -16825,6 +16886,9 @@ Place your agent system prompt here as markdown. This will be used as the system
16825
16886
  async function handleCreateThreadSkill(c, threadManager) {
16826
16887
  try {
16827
16888
  const threadId = c.req.param("id");
16889
+ if (!threadId) {
16890
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16891
+ }
16828
16892
  let body;
16829
16893
  try {
16830
16894
  body = await c.req.json();
@@ -16890,6 +16954,9 @@ Place your skill instructions here as markdown. This will be used when Tarsk is
16890
16954
  async function handleInstallGithubFolder(c, threadManager) {
16891
16955
  try {
16892
16956
  const threadId = c.req.param("id");
16957
+ if (!threadId) {
16958
+ return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
16959
+ }
16893
16960
  let body;
16894
16961
  try {
16895
16962
  body = await c.req.json();
@@ -19154,6 +19221,14 @@ import { existsSync as existsSync19 } from "fs";
19154
19221
  async function gitUnifiedStatusHandler(c, metadataManager, db) {
19155
19222
  try {
19156
19223
  const threadId = c.req.param("threadId");
19224
+ if (!threadId) {
19225
+ const { response, statusCode } = ResponseBuilder.error(
19226
+ ErrorCodes.INVALID_REQUEST,
19227
+ "Thread ID is required",
19228
+ 400
19229
+ );
19230
+ return c.json(response, statusCode);
19231
+ }
19157
19232
  const fresh = c.req.query("fresh") === "true";
19158
19233
  if (!fresh) {
19159
19234
  const cached = await getGitStatusCache(db, threadId);
@@ -19961,7 +20036,26 @@ function stashWithLabel(gitRoot, label) {
19961
20036
  }
19962
20037
  proc.on("close", (code) => {
19963
20038
  if (code === 0) {
19964
- resolve6(!out.includes("No local changes to save"));
20039
+ const nothingSaved = out.includes("No local changes to save");
20040
+ if (nothingSaved) {
20041
+ resolve6(false);
20042
+ return;
20043
+ }
20044
+ const apply = spawnProcess("git", ["stash", "apply", "--index"], { cwd: gitRoot });
20045
+ let applyErr = "";
20046
+ if (apply.stderr) {
20047
+ apply.stderr.on("data", (d) => {
20048
+ applyErr += d.toString();
20049
+ });
20050
+ }
20051
+ apply.on("close", (applyCode) => {
20052
+ if (applyCode === 0) {
20053
+ resolve6(true);
20054
+ } else {
20055
+ reject(new Error(applyErr || "Failed to re-apply stash after checkpoint"));
20056
+ }
20057
+ });
20058
+ apply.on("error", reject);
19965
20059
  } else {
19966
20060
  reject(new Error(err || "Failed to create checkpoint"));
19967
20061
  }
@@ -20858,7 +20952,7 @@ async function generateImage(c, metadataManager, conversationManager, threadMana
20858
20952
  let apiKey = providerConfig.env && providerConfig.env.length > 0 ? process.env[providerConfig.env[0]] : void 0;
20859
20953
  if (!apiKey) {
20860
20954
  const providerKeys = await metadataManager.getProviderKeys();
20861
- apiKey = providerKeys[providerConfig.name];
20955
+ apiKey = providerKeys[providerConfig.id];
20862
20956
  }
20863
20957
  if (!apiKey) {
20864
20958
  return c.json({ error: `No API key found for provider: ${provider}` }, 400);
@@ -20948,8 +21042,35 @@ async function callStandard(apiKey, baseUrl, rawModel, provider, prompt) {
20948
21042
  const rawText = await response.text();
20949
21043
  if (!response.ok) {
20950
21044
  const isHtml = rawText.trimStart().startsWith("<");
20951
- const errorDetail = isHtml ? `Provider returned an HTML page (status ${response.status}). The model may not support image generation or the provider endpoint is misconfigured.` : rawText;
20952
- throw new Error(errorDetail);
21045
+ if (isHtml) {
21046
+ throw new Error(
21047
+ `Provider returned an HTML page (status ${response.status}). The model may not support image generation or the provider endpoint is misconfigured.`
21048
+ );
21049
+ }
21050
+ try {
21051
+ const errorData = JSON.parse(rawText);
21052
+ if (errorData.error) {
21053
+ const errorCode = errorData.error.code;
21054
+ const errorMessage = errorData.error.message;
21055
+ if (errorCode === "1113" || errorMessage?.toLowerCase().includes("balance")) {
21056
+ throw new Error(
21057
+ `Insufficient balance for provider: ${provider}. Please recharge your account or check your resource package.`
21058
+ );
21059
+ }
21060
+ if (errorCode === "1101" || errorMessage?.toLowerCase().includes("invalid api key")) {
21061
+ throw new Error(
21062
+ `Invalid API key for provider: ${provider}. Please check your API key configuration.`
21063
+ );
21064
+ }
21065
+ throw new Error(`${provider} API error: ${errorMessage || rawText}`);
21066
+ }
21067
+ } catch (parseError) {
21068
+ if (parseError instanceof SyntaxError) {
21069
+ throw new Error(`Provider error (${provider}): ${rawText}`);
21070
+ }
21071
+ throw parseError;
21072
+ }
21073
+ throw new Error(`Provider error (${provider}): ${rawText}`);
20953
21074
  }
20954
21075
  let data;
20955
21076
  try {
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{$i as t,Cr as n,Gt as r,Pn as i,Wn as a,Z as o,fi as s,la as c,sa as l,zi as u}from"./dialogs-config-D3xml4W2.js";import{t as d}from"./use-toast-BZ7ir6gB.js";var f=e(c(),1),p=l(),m=n();function h(e){let t=(0,p.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=a(`animate-pulse rounded-md bg-muted`,n),t[3]=n,t[4]=i);let o;return t[5]!==r||t[6]!==i?(o=(0,m.jsx)(`div`,{className:i,...r}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function g(){let[e,n]=(0,f.useState)(null),[a,c]=(0,f.useState)(!0);(0,f.useEffect)(()=>{l();let e=()=>{document.visibilityState===`visible`&&l()};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]);async function l(){c(!0);try{n(await o())}catch(e){d({title:`Error`,description:e instanceof Error?e.message:`Failed to load account info`,variant:`destructive`})}finally{c(!1)}}function p(){r(`https://buy.stripe.com/14AcN6feK0Jjbheb2H3Nm03?client_reference_id=${e?.clientReferenceId??``}`)}function g(){r(`https://buy.stripe.com/9B67sMd6CgIh70Y0o33Nm04?client_reference_id=${e?.clientReferenceId??``}`)}if(a)return(0,m.jsxs)(`div`,{className:`max-w-2xl mx-auto p-6`,children:[(0,m.jsxs)(`div`,{className:`mb-6`,children:[(0,m.jsx)(h,{className:`h-8 w-32 mb-2`}),(0,m.jsx)(h,{className:`h-4 w-64`})]}),(0,m.jsxs)(`div`,{className:`space-y-6`,children:[(0,m.jsxs)(`div`,{className:`flex gap-4`,children:[(0,m.jsxs)(`div`,{className:`flex-1 rounded-xl border bg-card p-5 space-y-2`,children:[(0,m.jsx)(h,{className:`h-4 w-20`}),(0,m.jsx)(h,{className:`h-9 w-28`})]}),(0,m.jsxs)(`div`,{className:`flex-1 rounded-xl border bg-card p-5 space-y-3`,children:[(0,m.jsx)(h,{className:`h-4 w-24`}),(0,m.jsx)(h,{className:`h-6 w-32`}),(0,m.jsx)(h,{className:`h-4 w-full`})]})]}),(0,m.jsxs)(`div`,{className:`space-y-3`,children:[(0,m.jsx)(h,{className:`h-4 w-24`}),(0,m.jsxs)(`div`,{className:`rounded-xl border bg-card p-5 flex items-center justify-between gap-4`,children:[(0,m.jsxs)(`div`,{className:`space-y-1 flex-1`,children:[(0,m.jsx)(h,{className:`h-5 w-28`}),(0,m.jsx)(h,{className:`h-4 w-64`})]}),(0,m.jsx)(h,{className:`h-9 w-28 shrink-0`})]}),(0,m.jsxs)(`div`,{className:`rounded-xl border bg-card p-5 flex items-center justify-between gap-4`,children:[(0,m.jsxs)(`div`,{className:`space-y-1 flex-1`,children:[(0,m.jsx)(h,{className:`h-5 w-36`}),(0,m.jsx)(h,{className:`h-4 w-56`}),(0,m.jsx)(h,{className:`h-4 w-32`})]}),(0,m.jsx)(h,{className:`h-9 w-24 shrink-0`})]})]})]})]});let _=e?.plan===`unlimited-pro`;return(0,m.jsxs)(`div`,{className:`max-w-2xl mx-auto p-6`,children:[(0,m.jsxs)(`div`,{className:`mb-6`,children:[(0,m.jsx)(`h1`,{className:`text-2xl font-bold`,children:`Account`}),(0,m.jsx)(`p`,{className:`text-muted-foreground`,children:`Manage your Tarsk plan and prompt balance.`})]}),(0,m.jsxs)(`div`,{className:`space-y-6`,children:[(0,m.jsxs)(`div`,{className:`flex gap-4`,children:[(0,m.jsxs)(`div`,{className:`flex-1 rounded-xl border bg-card p-5 space-y-2`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-muted-foreground`,children:[(0,m.jsx)(s,{className:`h-4 w-4`}),`Balance`]}),(0,m.jsx)(`div`,{className:`flex items-end gap-2`,children:_?(0,m.jsx)(`span`,{className:`text-3xl font-bold`,children:`Unlimited`}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`span`,{className:`text-3xl font-bold`,children:e?.promptsRemaining.toLocaleString()??0}),(0,m.jsx)(`span`,{className:`text-muted-foreground mb-1 text-sm`,children:`prompts remaining`})]})})]}),(0,m.jsxs)(`div`,{className:`flex-1 rounded-xl border bg-card p-5 space-y-3`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-muted-foreground`,children:[(0,m.jsx)(u,{className:`h-4 w-4`}),`Current Plan`]}),(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsx)(`span`,{className:`text-lg font-semibold`,children:_?`Unlimited Pro`:`Pay as you go`}),_&&(0,m.jsx)(`span`,{className:`rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary`,children:`Active`})]}),(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:_?`You have unlimited prompts with no restrictions.`:`Purchase prompts as needed. Upgrade to Pro for unlimited access.`})]})]}),!_&&(0,m.jsxs)(`div`,{className:`space-y-3`,children:[(0,m.jsx)(`h2`,{className:`text-sm font-semibold text-muted-foreground uppercase tracking-wide`,children:`Add Prompts`}),(0,m.jsxs)(`div`,{className:`rounded-xl border bg-card p-5 flex items-center justify-between gap-4`,children:[(0,m.jsxs)(`div`,{className:`space-y-1`,children:[(0,m.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,m.jsx)(`span`,{className:`font-semibold`,children:`1,000 Prompts`})}),(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Top up your balance with 1,000 additional prompts for $5.`})]}),(0,m.jsx)(i,{onClick:p,className:`shrink-0`,children:`Top Up Balance`})]}),(0,m.jsxs)(`div`,{className:`rounded-xl border bg-card p-5 flex items-center justify-between gap-4`,children:[(0,m.jsxs)(`div`,{className:`space-y-1`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsx)(u,{className:`h-4 w-4 text-primary`}),(0,m.jsx)(`span`,{className:`font-semibold`,children:`Unlimited Pro Plan`})]}),(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Unlimited prompts for $100 and lifetime access to Tarsk.`}),(0,m.jsxs)(`ul`,{className:`text-sm text-muted-foreground space-y-0.5`,children:[(0,m.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,m.jsx)(t,{className:`h-3 w-3 text-primary`}),`Unlimited prompts`]}),(0,m.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,m.jsx)(t,{className:`h-3 w-3 text-primary`}),`Priority access`]})]})]}),(0,m.jsx)(i,{onClick:g,className:`shrink-0`,children:`Purchase`})]})]})]})]})}export{g as default};
1
+ import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{$i as t,Cr as n,Gt as r,Pn as i,Wn as a,Z as o,fi as s,la as c,sa as l,zi as u}from"./dialogs-config-DmDjliuA.js";import{t as d}from"./use-toast-C9B1H3P9.js";var f=e(c(),1),p=l(),m=n();function h(e){let t=(0,p.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=a(`animate-pulse rounded-md bg-muted`,n),t[3]=n,t[4]=i);let o;return t[5]!==r||t[6]!==i?(o=(0,m.jsx)(`div`,{className:i,...r}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function g(){let[e,n]=(0,f.useState)(null),[a,c]=(0,f.useState)(!0);(0,f.useEffect)(()=>{l();let e=()=>{document.visibilityState===`visible`&&l()};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]);async function l(){c(!0);try{n(await o())}catch(e){d({title:`Error`,description:e instanceof Error?e.message:`Failed to load account info`,variant:`destructive`})}finally{c(!1)}}function p(){r(`https://buy.stripe.com/14AcN6feK0Jjbheb2H3Nm03?client_reference_id=${e?.clientReferenceId??``}`)}function g(){r(`https://buy.stripe.com/9B67sMd6CgIh70Y0o33Nm04?client_reference_id=${e?.clientReferenceId??``}`)}if(a)return(0,m.jsxs)(`div`,{className:`max-w-2xl mx-auto p-6`,children:[(0,m.jsxs)(`div`,{className:`mb-6`,children:[(0,m.jsx)(h,{className:`h-8 w-32 mb-2`}),(0,m.jsx)(h,{className:`h-4 w-64`})]}),(0,m.jsxs)(`div`,{className:`space-y-6`,children:[(0,m.jsxs)(`div`,{className:`flex gap-4`,children:[(0,m.jsxs)(`div`,{className:`flex-1 rounded-xl border bg-card p-5 space-y-2`,children:[(0,m.jsx)(h,{className:`h-4 w-20`}),(0,m.jsx)(h,{className:`h-9 w-28`})]}),(0,m.jsxs)(`div`,{className:`flex-1 rounded-xl border bg-card p-5 space-y-3`,children:[(0,m.jsx)(h,{className:`h-4 w-24`}),(0,m.jsx)(h,{className:`h-6 w-32`}),(0,m.jsx)(h,{className:`h-4 w-full`})]})]}),(0,m.jsxs)(`div`,{className:`space-y-3`,children:[(0,m.jsx)(h,{className:`h-4 w-24`}),(0,m.jsxs)(`div`,{className:`rounded-xl border bg-card p-5 flex items-center justify-between gap-4`,children:[(0,m.jsxs)(`div`,{className:`space-y-1 flex-1`,children:[(0,m.jsx)(h,{className:`h-5 w-28`}),(0,m.jsx)(h,{className:`h-4 w-64`})]}),(0,m.jsx)(h,{className:`h-9 w-28 shrink-0`})]}),(0,m.jsxs)(`div`,{className:`rounded-xl border bg-card p-5 flex items-center justify-between gap-4`,children:[(0,m.jsxs)(`div`,{className:`space-y-1 flex-1`,children:[(0,m.jsx)(h,{className:`h-5 w-36`}),(0,m.jsx)(h,{className:`h-4 w-56`}),(0,m.jsx)(h,{className:`h-4 w-32`})]}),(0,m.jsx)(h,{className:`h-9 w-24 shrink-0`})]})]})]})]});let _=e?.plan===`unlimited-pro`;return(0,m.jsxs)(`div`,{className:`max-w-2xl mx-auto p-6`,children:[(0,m.jsxs)(`div`,{className:`mb-6`,children:[(0,m.jsx)(`h1`,{className:`text-2xl font-bold`,children:`Account`}),(0,m.jsx)(`p`,{className:`text-muted-foreground`,children:`Manage your Tarsk plan and prompt balance.`})]}),(0,m.jsxs)(`div`,{className:`space-y-6`,children:[(0,m.jsxs)(`div`,{className:`flex gap-4`,children:[(0,m.jsxs)(`div`,{className:`flex-1 rounded-xl border bg-card p-5 space-y-2`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-muted-foreground`,children:[(0,m.jsx)(s,{className:`h-4 w-4`}),`Balance`]}),(0,m.jsx)(`div`,{className:`flex items-end gap-2`,children:_?(0,m.jsx)(`span`,{className:`text-3xl font-bold`,children:`Unlimited`}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`span`,{className:`text-3xl font-bold`,children:e?.promptsRemaining.toLocaleString()??0}),(0,m.jsx)(`span`,{className:`text-muted-foreground mb-1 text-sm`,children:`prompts remaining`})]})})]}),(0,m.jsxs)(`div`,{className:`flex-1 rounded-xl border bg-card p-5 space-y-3`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-muted-foreground`,children:[(0,m.jsx)(u,{className:`h-4 w-4`}),`Current Plan`]}),(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsx)(`span`,{className:`text-lg font-semibold`,children:_?`Unlimited Pro`:`Pay as you go`}),_&&(0,m.jsx)(`span`,{className:`rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary`,children:`Active`})]}),(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:_?`You have unlimited prompts with no restrictions.`:`Purchase prompts as needed. Upgrade to Pro for unlimited access.`})]})]}),!_&&(0,m.jsxs)(`div`,{className:`space-y-3`,children:[(0,m.jsx)(`h2`,{className:`text-sm font-semibold text-muted-foreground uppercase tracking-wide`,children:`Add Prompts`}),(0,m.jsxs)(`div`,{className:`rounded-xl border bg-card p-5 flex items-center justify-between gap-4`,children:[(0,m.jsxs)(`div`,{className:`space-y-1`,children:[(0,m.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,m.jsx)(`span`,{className:`font-semibold`,children:`1,000 Prompts`})}),(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Top up your balance with 1,000 additional prompts for $5.`})]}),(0,m.jsx)(i,{onClick:p,className:`shrink-0`,children:`Top Up Balance`})]}),(0,m.jsxs)(`div`,{className:`rounded-xl border bg-card p-5 flex items-center justify-between gap-4`,children:[(0,m.jsxs)(`div`,{className:`space-y-1`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsx)(u,{className:`h-4 w-4 text-primary`}),(0,m.jsx)(`span`,{className:`font-semibold`,children:`Unlimited Pro Plan`})]}),(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Unlimited prompts for $100 and lifetime access to Tarsk.`}),(0,m.jsxs)(`ul`,{className:`text-sm text-muted-foreground space-y-0.5`,children:[(0,m.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,m.jsx)(t,{className:`h-3 w-3 text-primary`}),`Unlimited prompts`]}),(0,m.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,m.jsx)(t,{className:`h-3 w-3 text-primary`}),`Priority access`]})]})]}),(0,m.jsx)(i,{onClick:g,className:`shrink-0`,children:`Purchase`})]})]})]})]})}export{g as default};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{Cr as t,Fn as n,Wn as r,la as i,sa as a}from"./dialogs-config-DmDjliuA.js";import{at as o,ct as s,it as c,lt as l,ot as u,rt as d,st as f,ut as p}from"./react-vendor-CaS5zjF7.js";var m=a(),h=e(i(),1),g=t(),_=l,v=s,y=h.forwardRef((e,t)=>{let n=(0,m.c)(9),i,a;n[0]===e?(i=n[1],a=n[2]):({className:i,...a}=e,n[0]=e,n[1]=i,n[2]=a);let o;n[3]===i?o=n[4]:(o=r(`fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,i),n[3]=i,n[4]=o);let s;return n[5]!==a||n[6]!==t||n[7]!==o?(s=(0,g.jsx)(f,{className:o,...a,ref:t}),n[5]=a,n[6]=t,n[7]=o,n[8]=s):s=n[8],s});y.displayName=f.displayName;var b=h.forwardRef((e,t)=>{let n=(0,m.c)(10),i,a;n[0]===e?(i=n[1],a=n[2]):({className:i,...a}=e,n[0]=e,n[1]=i,n[2]=a);let s;n[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,g.jsx)(y,{}),n[3]=s):s=n[3];let c;n[4]===i?c=n[5]:(c=r(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg`,i),n[4]=i,n[5]=c);let l;return n[6]!==a||n[7]!==t||n[8]!==c?(l=(0,g.jsxs)(v,{children:[s,(0,g.jsx)(o,{ref:t,className:c,...a})]}),n[6]=a,n[7]=t,n[8]=c,n[9]=l):l=n[9],l});b.displayName=o.displayName;var x=e=>{let t=(0,m.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`flex flex-col space-y-2 text-center sm:text-left`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,g.jsx)(`div`,{className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o};x.displayName=`AlertDialogHeader`;var S=e=>{let t=(0,m.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,g.jsx)(`div`,{className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o};S.displayName=`AlertDialogFooter`;var C=h.forwardRef((e,t)=>{let n=(0,m.c)(9),i,a;n[0]===e?(i=n[1],a=n[2]):({className:i,...a}=e,n[0]=e,n[1]=i,n[2]=a);let o;n[3]===i?o=n[4]:(o=r(`text-lg font-semibold`,i),n[3]=i,n[4]=o);let s;return n[5]!==a||n[6]!==t||n[7]!==o?(s=(0,g.jsx)(p,{ref:t,className:o,...a}),n[5]=a,n[6]=t,n[7]=o,n[8]=s):s=n[8],s});C.displayName=p.displayName;var w=h.forwardRef((e,t)=>{let n=(0,m.c)(9),i,a;n[0]===e?(i=n[1],a=n[2]):({className:i,...a}=e,n[0]=e,n[1]=i,n[2]=a);let o;n[3]===i?o=n[4]:(o=r(`text-sm text-muted-foreground`,i),n[3]=i,n[4]=o);let s;return n[5]!==a||n[6]!==t||n[7]!==o?(s=(0,g.jsx)(u,{ref:t,className:o,...a}),n[5]=a,n[6]=t,n[7]=o,n[8]=s):s=n[8],s});w.displayName=u.displayName;var T=h.forwardRef((e,t)=>{let i=(0,m.c)(9),a,o;i[0]===e?(a=i[1],o=i[2]):({className:a,...o}=e,i[0]=e,i[1]=a,i[2]=o);let s;i[3]===a?s=i[4]:(s=r(n(),a),i[3]=a,i[4]=s);let c;return i[5]!==o||i[6]!==t||i[7]!==s?(c=(0,g.jsx)(d,{ref:t,className:s,...o}),i[5]=o,i[6]=t,i[7]=s,i[8]=c):c=i[8],c});T.displayName=d.displayName;var E=h.forwardRef((e,t)=>{let i=(0,m.c)(9),a,o;i[0]===e?(a=i[1],o=i[2]):({className:a,...o}=e,i[0]=e,i[1]=a,i[2]=o);let s;i[3]===a?s=i[4]:(s=r(n({variant:`outline`}),`mt-2 sm:mt-0`,a),i[3]=a,i[4]=s);let l;return i[5]!==o||i[6]!==t||i[7]!==s?(l=(0,g.jsx)(c,{ref:t,className:s,...o}),i[5]=o,i[6]=t,i[7]=s,i[8]=l):l=i[8],l});E.displayName=c.displayName;export{w as a,C as c,b as i,T as n,S as o,E as r,x as s,_ as t};
@@ -1 +1 @@
1
- import{Cn as e,Dn as t,En as n,On as r,Sn as i,Tn as a,wn as o}from"./dialogs-config-D3xml4W2.js";async function s(t,n){return o(`api/threads/${e(t)}/explorer?path=${encodeURIComponent(n)}`)}async function c(t,n){return o(`api/threads/${e(t)}/ai-file?path=${encodeURIComponent(n)}`)}async function l(t,n,i){return r(`api/threads/${e(t)}/ai-file`,{path:n,content:i})}async function u(t,n){return i(`api/threads/${e(t)}/explorer?path=${encodeURIComponent(n)}`)}async function d(t,r,i){return n(`api/threads/${e(t)}/explorer`,{path:r,newName:i})}async function f(n,r,i){return t(`api/threads/${e(n)}/explorer/file`,{dirPath:r,name:i})}function p(t,n){return`${a()}/api/threads/${e(t)}/explorer/media?path=${encodeURIComponent(n)}`}async function m(n,r,i){return t(`api/threads/${e(n)}/explorer/folder`,{dirPath:r,name:i})}export{p as a,l as c,c as i,m as n,s as o,u as r,d as s,f as t};
1
+ import{Cn as e,Dn as t,En as n,On as r,Sn as i,Tn as a,wn as o}from"./dialogs-config-DmDjliuA.js";async function s(t,n){return o(`api/threads/${e(t)}/explorer?path=${encodeURIComponent(n)}`)}async function c(t,n){return o(`api/threads/${e(t)}/ai-file?path=${encodeURIComponent(n)}`)}async function l(t,n,i){return r(`api/threads/${e(t)}/ai-file`,{path:n,content:i})}async function u(t,n){return i(`api/threads/${e(t)}/explorer?path=${encodeURIComponent(n)}`)}async function d(t,r,i){return n(`api/threads/${e(t)}/explorer`,{path:r,newName:i})}async function f(n,r,i){return t(`api/threads/${e(n)}/explorer/file`,{dirPath:r,name:i})}function p(t,n){return`${a()}/api/threads/${e(t)}/explorer/media?path=${encodeURIComponent(n)}`}async function m(n,r,i){return t(`api/threads/${e(n)}/explorer/folder`,{dirPath:r,name:i})}export{p as a,l as c,c as i,m as n,s as o,u as r,d as s,f as t};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{Cr as t,Gt as n,Ii as r,Rr as i,Wr as a,Xr as o,la as s,sa as c,si as l}from"./dialogs-config-DmDjliuA.js";import{a as u}from"./store-CAPnOXso.js";import{n as d}from"./tab-context-Bmd79Rk0.js";import{t as f}from"./run-stop-button-iZHomql0.js";var p=c(),m=e(s(),1),h=t();function g(){let e=(0,p.c)(41),{devServerUrl:t,browserResetTrigger:s}=d(),{state:c}=u(),{selectedProjectId:g,projects:_}=c,v;if(e[0]!==_||e[1]!==g){let t;e[3]===g?t=e[4]:(t=e=>e.projectId===g,e[3]=g,e[4]=t),v=_.find(t),e[0]=_,e[1]=g,e[2]=v}else v=e[2];let y=v,[b,x]=(0,m.useState)(``),[S,C]=(0,m.useState)(``),[w,T]=(0,m.useState)(`desktop`),E=(0,m.useRef)(null),D;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(D=()=>{C(``),x(``),E.current&&(E.current.src=``)},e[5]=D):D=e[5];let O;e[6]===s?O=e[7]:(O=[s],e[6]=s,e[7]=O),(0,m.useEffect)(D,O);let k,A;e[8]===t?(k=e[9],A=e[10]):(k=()=>{t&&(x(t),C(t))},A=[t],e[8]=t,e[9]=k,e[10]=A),(0,m.useEffect)(k,A);let j;e[11]===Symbol.for(`react.memo_cache_sentinel`)?(j=e=>{let t=e.trim();t&&(!t.startsWith(`http://`)&&!t.startsWith(`https://`)&&(t=`http://`+t),x(t),C(t))},e[11]=j):j=e[11];let M=j,N;e[12]===b?N=e[13]:(N=e=>{e.key===`Enter`&&M(b)},e[12]=b,e[13]=N);let P=N,F;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(F=()=>{if(E.current){let e=E.current.src;E.current.src=``,setTimeout(()=>{E.current&&(E.current.src=e)},0)}},e[14]=F):F=e[14];let I=F,L;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(L={desktop:{width:`100%`,height:`100%`},tablet:{width:`768px`,height:`1024px`},mobile:{width:`375px`,height:`667px`}},e[15]=L):L=e[15];let R=L[w],z;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(z=e=>x(e.target.value),e[16]=z):z=e[16];let B;e[17]!==P||e[18]!==b?(B=(0,h.jsx)(`input`,{type:`text`,value:b,onChange:z,onKeyDown:P,placeholder:`Enter URL...`,className:`flex-1 px-4 py-1.5 text-sm bg-muted rounded-full border border-border outline-none focus:ring-1 focus:ring-ring font-mono`,spellCheck:!1}),e[17]=P,e[18]=b,e[19]=B):B=e[19];let V;e[20]===S?V=e[21]:(V=S&&(0,h.jsx)(`button`,{onClick:I,title:`Refresh page`,className:`p-1.5 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors`,children:(0,h.jsx)(o,{size:15})}),e[20]=S,e[21]=V);let H;e[22]!==w||e[23]!==S?(H=S&&(0,h.jsxs)(`div`,{className:`flex items-center bg-muted rounded-md p-0.5`,children:[(0,h.jsx)(`button`,{onClick:()=>T(`desktop`),title:`Desktop view`,className:`p-1.5 rounded transition-colors ${w===`desktop`?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground hover:bg-background/50`}`,children:(0,h.jsx)(l,{size:15})}),(0,h.jsx)(`button`,{onClick:()=>T(`tablet`),title:`Tablet view`,className:`p-1.5 rounded transition-colors ${w===`tablet`?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground hover:bg-background/50`}`,children:(0,h.jsx)(i,{size:15})}),(0,h.jsx)(`button`,{onClick:()=>T(`mobile`),title:`Mobile view`,className:`p-1.5 rounded transition-colors ${w===`mobile`?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground hover:bg-background/50`}`,children:(0,h.jsx)(a,{size:15})})]}),e[22]=w,e[23]=S,e[24]=H):H=e[24];let U;e[25]===S?U=e[26]:(U=S&&(0,h.jsx)(`button`,{onClick:()=>void n(S),title:`Open in external browser`,className:`p-1.5 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors`,children:(0,h.jsx)(r,{size:15})}),e[25]=S,e[26]=U);let W;e[27]!==B||e[28]!==V||e[29]!==H||e[30]!==U?(W=(0,h.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-b border-border shrink-0`,children:[B,V,H,U]}),e[27]=B,e[28]=V,e[29]=H,e[30]=U,e[31]=W):W=e[31];let G;e[32]!==R||e[33]!==w||e[34]!==S||e[35]!==y||e[36]!==g?(G=S?(0,h.jsx)(`div`,{className:`flex-1 flex items-center justify-center bg-background`,children:w===`desktop`?(0,h.jsx)(`iframe`,{ref:E,src:S,className:`flex-1 w-full h-full border-none`,title:`Browser`}):(0,h.jsx)(`div`,{className:`bg-white border border-border rounded-lg shadow-lg overflow-hidden transition-all duration-200`,style:{width:R.width,height:R.height,maxWidth:`100%`,maxHeight:`100%`},children:(0,h.jsx)(`iframe`,{ref:E,src:S,className:`w-full h-full border-none`,title:`Browser`})})}):(0,h.jsx)(`div`,{className:`flex-1 flex flex-col items-center justify-center gap-6 text-muted-foreground`,children:g&&y?.runCommand?(0,h.jsx)(f,{projectId:g,runCommand:y.runCommand,large:!0}):(0,h.jsx)(`p`,{className:`text-sm`,children:`Enter a URL to browse`})}),e[32]=R,e[33]=w,e[34]=S,e[35]=y,e[36]=g,e[37]=G):G=e[37];let K;return e[38]!==W||e[39]!==G?(K=(0,h.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[W,G]}),e[38]=W,e[39]=G,e[40]=K):K=e[40],K}export{g as BrowserTab};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{$ as t,$i as n,Cr as r,D as i,Jr as a,Lr as o,Mi as s,Ni as c,Nr as l,Or as u,Pn as d,Q as f,Qr as p,Si as m,Tn as h,Tt as g,Vr as _,Wn as v,Y as y,Yi as b,Yt as x,_i as S,bi as C,bn as w,cn as T,d as E,di as D,fn as O,ki as k,kr as A,kt as j,la as M,m as N,nt as P,on as F,pn as I,ra as L,sa as R,ti as z,tt as ee,ui as te,w as B,y as ne}from"./dialogs-config-DmDjliuA.js";import{gt as V}from"./react-vendor-CaS5zjF7.js";import{a as re,l as H,s as ie,t as U,u as W}from"./store-CAPnOXso.js";import{c as G,s as K,u as q}from"./history-view-BOjZoBCb.js";import{a as J,c as Y,i as ae,o as oe,s as se,t as ce}from"./alert-dialog-Bk7neo_n.js";import{r as le}from"./onboarding-BgEjTEKs.js";var X=R(),Z=e(M(),1),Q=r();function ue(e){let t=(0,X.c)(24),{node:n,level:r,renderNode:i,defaultOpen:a,indent:o,childContainerClassName:s,openState:c,onToggle:l}=e,u=!!(n.children&&n.children.length>0),d=c[n.id]??a,f;t[0]!==n.id||t[1]!==l?(f=()=>l(n.id),t[0]=n.id,t[1]=l,t[2]=f):f=t[2];let p=f,m;t[3]!==u||t[4]!==d||t[5]!==r||t[6]!==n||t[7]!==i||t[8]!==p?(m=i(n,{isOpen:d,level:r,toggle:p,hasChildren:u}),t[3]=u,t[4]=d,t[5]=r,t[6]=n,t[7]=i,t[8]=p,t[9]=m):m=t[9];let h;t[10]!==s||t[11]!==a||t[12]!==u||t[13]!==o||t[14]!==d||t[15]!==r||t[16]!==n.children||t[17]!==l||t[18]!==c||t[19]!==i?(h=u&&d&&(0,Q.jsx)(`div`,{style:{paddingLeft:o},className:s,children:n.children.map(e=>(0,Q.jsx)(ue,{node:e,level:r+1,renderNode:i,defaultOpen:a,indent:o,childContainerClassName:s,openState:c,onToggle:l},e.id))}),t[10]=s,t[11]=a,t[12]=u,t[13]=o,t[14]=d,t[15]=r,t[16]=n.children,t[17]=l,t[18]=c,t[19]=i,t[20]=h):h=t[20];let g;return t[21]!==m||t[22]!==h?(g=(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[m,h]}),t[21]=m,t[22]=h,t[23]=g):g=t[23],g}function de(e){let t=(0,X.c)(23),{nodes:n,renderNode:r,resetKey:i,defaultOpen:a,indent:o,childContainerClassName:s,className:c}=e,l=a===void 0?!1:a,u=o===void 0?16:o,d;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(d={},t[0]=d):d=t[0];let[f,p]=(0,Z.useState)(d),[m,h]=(0,Z.useState)(i);i!==m&&(h(i),p({}));let g;t[1]===l?g=t[2]:(g=e=>{p(t=>({...t,[e]:!(t[e]??l)}))},t[1]=l,t[2]=g);let _=g,y;t[3]===c?y=t[4]:(y=v(`min-w-0`,c),t[3]=c,t[4]=y);let b;if(t[5]!==s||t[6]!==l||t[7]!==_||t[8]!==u||t[9]!==n||t[10]!==f||t[11]!==r){let e;t[13]!==s||t[14]!==l||t[15]!==_||t[16]!==u||t[17]!==f||t[18]!==r?(e=e=>(0,Q.jsx)(ue,{node:e,level:0,renderNode:r,defaultOpen:l,indent:u,childContainerClassName:s,openState:f,onToggle:_},e.id),t[13]=s,t[14]=l,t[15]=_,t[16]=u,t[17]=f,t[18]=r,t[19]=e):e=t[19],b=n.map(e),t[5]=s,t[6]=l,t[7]=_,t[8]=u,t[9]=n,t[10]=f,t[11]=r,t[12]=b}else b=t[12];let x;return t[20]!==y||t[21]!==b?(x=(0,Q.jsx)(`div`,{className:y,children:b}),t[20]=y,t[21]=b,t[22]=x):x=t[22],x}var $=new Map,fe=new Map;function pe(e){return $.get(e)}function me(e,t){let n=fe.get(e);return n||(n=new Set,fe.set(e,n)),n.add(t),()=>{n.delete(t),n.size===0&&fe.delete(e)}}function he(e){let t=fe.get(e);if(t)for(let e of t)e()}function ge(e,t){return async function(n,r){let i=await fetch(e+`/api/browser-js/execute-tool`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({threadId:t,toolName:n,params:r})});if(!i.ok){let e=await i.text();try{let t=JSON.parse(e).error||{};e=t.details||t.message||e}catch{}return{text:null,error:`Tool `+n+` failed: `+e}}let a=await i.json();return{text:a.content&&a.content[0]?a.content[0].text:null,error:null}}}function _e(e,t,n){if($.has(e))return;$.set(e,{status:`running`}),he(e);let r=h();(async()=>{try{let i=ge(r,n),a=Object.getPrototypeOf(async function(){}).constructor,o=await new a(`callTool`,t)(i),s=o===void 0?null:o;$.set(e,{status:`success`,result:s}),he(e),await O(e,s)}catch(t){let n=t instanceof Error?t.stack||t.message:String(t);$.set(e,{status:`error`,error:n}),he(e);try{await O(e,{error:n})}catch(e){console.error(`[browser-js-executor] failed to submit error result`,e)}}})()}var ve=()=>{if(typeof window>`u`)return null;let e=window.SpeechRecognition||window.webkitSpeechRecognition;return e?new e:null};function ye(){let e=(0,X.c)(14),[t,n]=(0,Z.useState)(!1),[r,i]=(0,Z.useState)(``),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(!1),l=(0,Z.useRef)(null),u=(0,Z.useRef)(``),d,f;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>{try{let e=ve();e?(e.continuous=!0,e.interimResults=!0,e.lang=`en-US`,e.onstart=()=>{n(!0),o(null),u.current=``},e.onresult=e=>{let t=``;for(let n=e.resultIndex;n<e.results.length;n++){let r=e.results[n][0].transcript;e.results[n].isFinal?i(e=>e+r+` `):t+=r}u.current=t},e.onerror=e=>{console.error(`Speech recognition error:`,e.error),o(e.error||`An error occurred during speech recognition`)},e.onend=()=>{n(!1)},l.current=e,c(!0)):(c(!1),o(`Speech Recognition API is not supported in your browser`))}catch(e){console.error(`Failed to initialize speech recognition:`,e),c(!1),o(`Failed to initialize speech recognition`)}return()=>{l.current&&l.current.abort()}},f=[],e[0]=d,e[1]=f):(d=e[0],f=e[1]),(0,Z.useEffect)(d,f);let p;e[2]===t?p=e[3]:(p=()=>{l.current&&!t&&l.current.start()},e[2]=t,e[3]=p);let m=p,h;e[4]===t?h=e[5]:(h=()=>{l.current&&t&&l.current.stop()},e[4]=t,e[5]=h);let g=h,_;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>{i(``),u.current=``},e[6]=_):_=e[6];let v=_,y;return e[7]!==a||e[8]!==t||e[9]!==s||e[10]!==m||e[11]!==g||e[12]!==r?(y={isListening:t,transcript:r,error:a,startListening:m,stopListening:g,resetTranscript:v,isSupported:s},e[7]=a,e[8]=t,e[9]=s,e[10]=m,e[11]=g,e[12]=r,e[13]=y):y=e[13],y}function be({initialValue:e}={}){let{state:n,dispatch:r}=re(),[i,a]=(0,Z.useState)(e??``),[o,s]=(0,Z.useState)(-1),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(0),[p,m]=(0,Z.useState)([]),[h,_]=(0,Z.useState)(()=>(n.selectedThreadId?n.projectModelSelections[n.selectedThreadId]:void 0)??null),v=(0,Z.useRef)(h?.id??``),y=(0,Z.useRef)(h?.provider??``),b=(0,Z.useRef)(null),[x,S]=(0,Z.useState)(!1),[C,T]=(0,Z.useState)(!1),[E,D]=(0,Z.useState)([]),[O,k]=(0,Z.useState)(!1),[A,j]=(0,Z.useState)(!1),[M,N]=(0,Z.useState)([]),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)([]),[R,z]=(0,Z.useState)(!1),[te,ne]=(0,Z.useState)(``),[V,H]=(0,Z.useState)(0),[ie,W]=(0,Z.useState)([]),[G,K]=(0,Z.useState)([]),[q,J]=(0,Z.useState)(!1),[Y,ae]=(0,Z.useState)(``),oe=(0,Z.useRef)(null),se=(0,Z.useRef)(null),ce=(0,Z.useRef)(null),le=(0,Z.useRef)(null),X=(0,Z.useRef)(null),Q=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{v.current=h?.id??``,y.current=h?.provider??``},[h?.id,h?.provider]);let ue=(0,Z.useCallback)((e,t)=>{_(e);let i=n.selectedThreadId;if(!i||(r({type:U.SetProjectModel,threadId:i,model:e}),t?.persist===!1))return;let a=`${i}:${e.provider??``}:${e.id}`;b.current!==a&&(b.current=a,console.log(`[useChatInputState] Persisting model to thread:`,{threadId:i,model:{id:e.id,provider:e.provider}}),w(i,{model:e.id,modelProvider:e.provider}).then(()=>{b.current===a&&(b.current=null),console.log(`[useChatInputState] Model persisted successfully`)}).catch(e=>{b.current===a&&(b.current=null),console.error(`Failed to save model to thread:`,e)}))},[n.selectedThreadId,r]);(0,Z.useEffect)(()=>{(async()=>{let e=n.selectedProjectId?n.projects.find(e=>e.projectId===n.selectedProjectId)?.threads.find(e=>e.threadId===n.selectedThreadId):void 0,r=n.selectedThreadId?n.projectModelSelections[n.selectedThreadId]:void 0,i=e?.model??r?.id??null,a=e?.modelProvider??r?.provider??null;console.log(`[useChatInputState] Loading models for thread:`,{threadId:n.selectedThreadId,projectId:n.selectedProjectId,currentThread:e?{model:e.model,modelProvider:e.modelProvider}:void 0,storedModel:r?{id:r.id,provider:r.provider}:void 0,savedModelId:i,savedModelProvider:a});try{let e=await t(),n=Object.values(e).flat();if(n.length===0){m([]),_(null);return}m(n);let r=i&&a?n.find(e=>e.id===i&&e.provider===a)??null:null,o=n[0],s=r??o,c=!r&&!!(i||a),l=v.current===s.id&&y.current===s.provider;console.log(`[useChatInputState] Model selection decision:`,{matchedSavedModel:r?{id:r.id}:null,fallbackModel:{id:o.id},modelToSelect:{id:s.id},shouldPersistFallback:c,hasSameSelection:l,currentSelected:{id:v.current,provider:y.current}}),l||ue(s,{persist:c})}catch(e){console.error(`Failed to load enabled models:`,e)}})()},[n.selectedThreadId,n.selectedProjectId,n.projects,ue]);let de=(0,Z.useRef)(ue);(0,Z.useEffect)(()=>{de.current=ue},[ue]),(0,Z.useEffect)(()=>{n.configUpdatedAt!==0&&(async()=>{try{let e=await t(),n=Object.values(e).flat();if(n.length>0){m(n);let e=v.current,t=y.current;n.some(n=>n.id===e&&n.provider===t)||de.current(n[0],{persist:!0})}}catch(e){console.error(`Failed to reload enabled models:`,e)}})()},[n.configUpdatedAt]),(0,Z.useEffect)(()=>{!A||M.length>0||(async()=>{try{let e=await f(),t=Object.values(e).flat();t.length>0&&(N(t),F(e=>e??t[0]))}catch(e){console.error(`Failed to load image models:`,e)}})()},[A,M.length]);let[$,fe]=(0,Z.useState)(n.selectedThreadId);return(0,Z.useEffect)(()=>{n.selectedThreadId!==$&&setTimeout(()=>{fe(n.selectedThreadId),L([]),z(!1),W([]),K([]),J(!1),k(!1),j(!1)},0)},[n.selectedThreadId,$]),(0,Z.useEffect)(()=>{n.selectedThreadId&&g(n.selectedThreadId).then(({commands:e,skills:t})=>{console.log(`Loaded slash commands:`,e,`skills:`,t),W(e),K(t)}).catch(e=>console.error(`Failed to load slash commands and skills:`,e))},[n.selectedThreadId]),(0,Z.useEffect)(()=>{n.focusChatInput&&n.selectedThreadId&&!n.isStreaming&&(se.current?.focus(),r({type:U.ClearFocusChatInput}))},[n.focusChatInput,n.selectedThreadId,n.isStreaming,r]),(0,Z.useEffect)(()=>{let e=e=>{ce.current&&!ce.current.contains(e.target)&&S(!1),le.current&&!le.current.contains(e.target)&&T(!1)};if(x||C)return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[x,C]),{message:i,setMessage:a,historyIndex:o,setHistoryIndex:s,draftMessage:c,setDraftMessage:l,cursorPosition:u,setCursorPosition:d,availableModels:p,setAvailableModels:m,selectedModel:h,setSelectedModel:ue,selectedModelIdRef:v,showModelMenu:x,setShowModelMenu:S,showPlusMenu:C,setShowPlusMenu:T,attachments:E,setAttachments:D,planMode:O,setPlanMode:k,imageMode:A,setImageMode:j,availableImageModels:M,setAvailableImageModels:N,selectedImageModel:P,setSelectedImageModel:F,allFiles:I,setAllFiles:L,showSuggestions:R,setShowSuggestions:z,suggestionQuery:te,setSuggestionQuery:ne,selectedIndex:V,setSelectedIndex:H,slashCommands:ie,setSlashCommands:W,skills:G,setSkills:K,showCommandSuggestions:q,setShowCommandSuggestions:J,commandQuery:Y,setCommandQuery:ae,fileInputRef:oe,textareaRef:se,modelMenuRef:ce,plusMenuRef:le,suggestionsRef:X,commandSuggestionsRef:Q,handleNewChat:async()=>{if(n.selectedThreadId)try{let e=await B(n.selectedThreadId);r({type:U.ClearMessages}),console.log(`New conversation started:`,e);let t=await ee(n.selectedThreadId);r({type:U.SetMessages,messages:t.messages})}catch(e){console.error(`Failed to start new chat:`,e)}},state:n,dispatch:r}}var xe=e=>{E(e)};function Se(e){let t=(0,X.c)(99),{message:n,setMessage:r,attachments:i,selectedModel:a,onSend:o,isStreaming:s,selectedThreadId:c,isListening:l,stopListening:u,resetTranscript:d,dispatch:f,historyIndex:p,setHistoryIndex:m,draftMessage:h,setDraftMessage:g,cursorPosition:_,setCursorPosition:v,showSuggestions:y,setShowSuggestions:b,suggestionQuery:x,setSuggestionQuery:S,allFiles:C,setAllFiles:w,selectedIndex:T,setSelectedIndex:E,showCommandSuggestions:D,setShowCommandSuggestions:O,commandQuery:k,setCommandQuery:A,slashCommands:M,skills:P,textareaRef:F,setAttachments:I,planMode:L,setPlanMode:R,imageMode:z,selectedImageModel:ee}=e,te;t[0]!==i||t[1]!==f||t[2]!==z||t[3]!==l||t[4]!==s||t[5]!==n||t[6]!==o||t[7]!==L||t[8]!==d||t[9]!==ee||t[10]!==a||t[11]!==c||t[12]!==I||t[13]!==g||t[14]!==m||t[15]!==r||t[16]!==u||t[17]!==F?(te=()=>{if(!n.trim()&&i.length===0||!c)return;let e=z?ee:a;e&&(l&&(u(),d()),s?f({type:U.EnqueueChatMessage,message:{id:`queued-${Date.now()}`,threadId:c,message:n,model:e.id,attachments:i,provider:e.provider,planMode:L,imageMode:z}}):o(n,e.id,i,e.provider,L,z),xe(n),r(``),I([]),m(-1),g(``),F.current&&(F.current.style.height=`auto`))},t[0]=i,t[1]=f,t[2]=z,t[3]=l,t[4]=s,t[5]=n,t[6]=o,t[7]=L,t[8]=d,t[9]=ee,t[10]=a,t[11]=c,t[12]=I,t[13]=g,t[14]=m,t[15]=r,t[16]=u,t[17]=F,t[18]=te):te=t[18];let B=te,ne;t[19]!==_||t[20]!==n||t[21]!==r||t[22]!==b||t[23]!==x||t[24]!==F?(ne=e=>{let t=n.substring(0,_-x.length-1);r(`${t}${e} ${n.substring(_)}`),b(!1),setTimeout(()=>{if(F.current){F.current.focus();let n=t.length+e.length+1;F.current.setSelectionRange(n,n)}},0)},t[19]=_,t[20]=n,t[21]=r,t[22]=b,t[23]=x,t[24]=F,t[25]=ne):ne=t[25];let V=ne,re;t[26]!==k||t[27]!==_||t[28]!==n||t[29]!==r||t[30]!==R||t[31]!==O||t[32]!==F?(re=e=>{let t=n.substring(0,_-k.length-1),i=n.substring(_);r(`${t}${e.content}${i}`),O(!1),setTimeout(()=>{if(F.current){F.current.focus();let n=t.length+e.content.length;F.current.setSelectionRange(n,n)}},0),e.metadata.mode===`plan`&&R(!0)},t[26]=k,t[27]=_,t[28]=n,t[29]=r,t[30]=R,t[31]=O,t[32]=F,t[33]=re):re=t[33];let H=re,ie;t[34]!==k||t[35]!==_||t[36]!==n||t[37]!==r||t[38]!==O||t[39]!==F?(ie=e=>{let t=n.substring(0,_-k.length-1),i=n.substring(_),a=e.name.includes(` `)?`/"${e.name}"`:`/${e.name}`;r(`${t}${a}${i}`),O(!1),setTimeout(()=>{if(F.current){F.current.focus();let e=t.length+a.length;F.current.setSelectionRange(e,e)}},0)},t[34]=k,t[35]=_,t[36]=n,t[37]=r,t[38]=O,t[39]=F,t[40]=ie):ie=t[40];let W=ie,G,K,q,J;if(t[41]!==C||t[42]!==k||t[43]!==h||t[44]!==B||t[45]!==p||t[46]!==H||t[47]!==V||t[48]!==W||t[49]!==n||t[50]!==T||t[51]!==c||t[52]!==w||t[53]!==A||t[54]!==v||t[55]!==g||t[56]!==m||t[57]!==r||t[58]!==E||t[59]!==O||t[60]!==b||t[61]!==S||t[62]!==D||t[63]!==y||t[64]!==P||t[65]!==M||t[66]!==x){q=e=>{if(D){if(e.key===`ArrowDown`){e.preventDefault(),E((T+1)%G.length);return}if(e.key===`ArrowUp`){e.preventDefault(),E((T-1+G.length)%G.length);return}if(e.key===`Enter`||e.key===`Tab`){e.preventDefault();let t=G[T];t&&(t.type===`command`?H(t.data):W(t.data));return}if(e.key===`Escape`){O(!1);return}}if(y){let t=K.length>0;if(e.key===`ArrowDown`&&t){e.preventDefault(),E((T+1)%K.length);return}if(e.key===`ArrowUp`&&t){e.preventDefault(),E((T-1+K.length)%K.length);return}if(e.key===`Enter`||e.key===`Tab`){e.preventDefault(),K[T]&&V(K[T]);return}if(e.key===`Escape`){b(!1);return}}if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),B();return}let t=N();t.length!==0&&(e.key===`ArrowUp`?(e.preventDefault(),p===-1?(g(n),m(t.length-1),r(t[t.length-1])):p>0&&(m(p-1),r(t[p-1]))):e.key===`ArrowDown`&&(e.preventDefault(),p>0?(m(p-1),r(t[p-1])):p===0&&(m(-1),r(h))))};let e;t[71]!==C||t[72]!==c||t[73]!==w||t[74]!==A||t[75]!==v||t[76]!==r||t[77]!==E||t[78]!==O||t[79]!==b||t[80]!==S?(e=e=>{let t=e.target.value,n=e.target.selectionStart;r(t),v(n);let i=t.substring(0,n),a=i.lastIndexOf(`/`);if(a!==-1){let e=a>0?i[a-1]:``;if(a===0||/\s/.test(e)){let e=i.substring(a+1);e.includes(` `)?O(!1):(A(e),O(!0),b(!1),E(0))}else O(!1)}else{O(!1);let e=i.lastIndexOf(`#`);if(e!==-1){let t=e>0?i[e-1]:``;if(e===0||/\s/.test(t)){let t=i.substring(e+1);t.includes(` `)?b(!1):(S(t),b(!0),E(0),C.length===0&&c&&j(c).then(e=>{w(e)}).catch(Te))}else b(!1)}else b(!1)}let o=e.target;o.style.height=`auto`,o.style.height=`${Math.min(o.scrollHeight,160)}px`},t[71]=C,t[72]=c,t[73]=w,t[74]=A,t[75]=v,t[76]=r,t[77]=E,t[78]=O,t[79]=b,t[80]=S,t[81]=e):e=t[81],J=e;let i;if(t[82]!==k||t[83]!==P||t[84]!==M){let e;t[86]===k?e=t[87]:(e=e=>e.name.toLowerCase().includes(k.toLowerCase()),t[86]=k,t[87]=e);let n=M.filter(e),r;t[88]===k?r=t[89]:(r=e=>e.name.toLowerCase().includes(k.toLowerCase()),t[88]=k,t[89]=r);let a=P.filter(r);i=[...n.map(we),...a.map(Ce)],t[82]=k,t[83]=P,t[84]=M,t[85]=i}else i=t[85];G=i.slice(0,10),K=y?C.filter(e=>e.toLowerCase().includes(x.toLowerCase())).slice(0,10):[],t[41]=C,t[42]=k,t[43]=h,t[44]=B,t[45]=p,t[46]=H,t[47]=V,t[48]=W,t[49]=n,t[50]=T,t[51]=c,t[52]=w,t[53]=A,t[54]=v,t[55]=g,t[56]=m,t[57]=r,t[58]=E,t[59]=O,t[60]=b,t[61]=S,t[62]=D,t[63]=y,t[64]=P,t[65]=M,t[66]=x,t[67]=G,t[68]=K,t[69]=q,t[70]=J}else G=t[67],K=t[68],q=t[69],J=t[70];let Y;return t[90]!==G||t[91]!==K||t[92]!==q||t[93]!==B||t[94]!==J||t[95]!==H||t[96]!==V||t[97]!==W?(Y={handleSend:B,handleKeyDown:q,handleTextareaInput:J,insertFileReference:V,insertCommand:H,insertSkill:W,allSuggestions:G,fileSuggestions:K},t[90]=G,t[91]=K,t[92]=q,t[93]=B,t[94]=J,t[95]=H,t[96]=V,t[97]=W,t[98]=Y):Y=t[98],Y}function Ce(e){return{type:`skill`,data:e}}function we(e){return{type:`command`,data:e}}function Te(e){return console.error(`Failed to fetch files:`,e)}function Ee(e){let t=(0,X.c)(21),{visible:n,commands:r,skills:i,query:a,selectedIndex:s,onSelectCommand:c,onSelectSkill:l,onMouseEnterSuggestion:d,containerRef:f}=e;if(!n)return null;let p;if(t[0]!==r||t[1]!==a||t[2]!==i){let e;t[4]===a?e=t[5]:(e=e=>e.name.toLowerCase().includes(a.toLowerCase()),t[4]=a,t[5]=e);let n=r.filter(e),o;t[6]===a?o=t[7]:(o=e=>e.name.toLowerCase().includes(a.toLowerCase()),t[6]=a,t[7]=o);let s=i.filter(o);p=[...n.map(Oe),...s.map(De)].slice(0,10),t[0]=r,t[1]=a,t[2]=i,t[3]=p}else p=t[3];let m=p,h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,Q.jsx)(o,{className:`h-3 w-3`}),t[8]=h):h=t[8];let g=a&&` matching "${a}"`,_;t[9]===g?_=t[10]:(_=(0,Q.jsxs)(`div`,{className:`px-2 py-1.5 text-xs font-semibold text-muted-foreground border-b border-border/50 mb-1 flex items-center gap-2`,children:[h,`Commands & Skills`,g]}),t[9]=g,t[10]=_);let y;t[11]!==m||t[12]!==d||t[13]!==c||t[14]!==l||t[15]!==s?(y=m.length>0?m.map((e,t)=>{let n=t===s;if(e.type===`command`){let r=e.data;return(0,Q.jsxs)(`button`,{type:`button`,className:v(`flex w-full flex-col gap-1 rounded-lg px-3 py-2 text-left transition-colors`,n?`bg-accent text-accent-foreground`:`text-popover-foreground hover:bg-accent/50`),onClick:()=>c(r),onMouseEnter:()=>d(t),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(o,{className:`h-3 w-3 text-muted-foreground`}),(0,Q.jsxs)(`span`,{className:`font-medium`,children:[`/`,r.name]}),r.metadata.argumentHint&&(0,Q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:r.metadata.argumentHint}),r.scope===`project`&&(0,Q.jsx)(`span`,{className:`ml-auto text-[10px] rounded-full bg-primary/10 px-1.5 py-0.5 text-primary`,children:`project`})]}),r.metadata.description&&(0,Q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:r.metadata.description})]},`cmd-${r.name}`)}else{let r=e.data;return(0,Q.jsxs)(`button`,{type:`button`,className:v(`flex w-full flex-col gap-1 rounded-lg px-3 py-2 text-left transition-colors`,n?`bg-accent text-accent-foreground`:`text-popover-foreground hover:bg-accent/50`),onClick:()=>l(r),onMouseEnter:()=>d(t),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(u,{className:`h-3 w-3 text-amber-500`}),(0,Q.jsxs)(`span`,{className:`font-medium`,children:[`/`,r.name]}),(0,Q.jsx)(`span`,{className:`ml-auto text-[10px] rounded-full bg-amber-500/10 px-1.5 py-0.5 text-amber-700 dark:text-amber-400`,children:`skill`}),r.scope===`project`&&(0,Q.jsx)(`span`,{className:`text-[10px] rounded-full bg-primary/10 px-1.5 py-0.5 text-primary`,children:`project`})]}),(0,Q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:r.description})]},`skill-${r.name}`)}}):(0,Q.jsxs)(`div`,{className:`px-3 py-4 text-center text-xs text-muted-foreground`,children:[`No commands or skills found.`,(0,Q.jsx)(`br`,{}),(0,Q.jsxs)(`span`,{className:`text-[10px]`,children:[`Create commands in `,(0,Q.jsx)(`code`,{className:`bg-muted px-1 rounded`,children:`.agents/commands/`}),` or skills in `,(0,Q.jsx)(`code`,{className:`bg-muted px-1 rounded`,children:`.agents/skills/`})]})]}),t[11]=m,t[12]=d,t[13]=c,t[14]=l,t[15]=s,t[16]=y):y=t[16];let b;return t[17]!==f||t[18]!==_||t[19]!==y?(b=(0,Q.jsxs)(`div`,{ref:f,className:`absolute bottom-full left-0 mb-2 w-full max-h-64 overflow-y-auto rounded-xl border border-border bg-popover p-1 shadow-lg z-50 animate-in fade-in slide-in-from-bottom-2`,children:[_,y]}),t[17]=f,t[18]=_,t[19]=y,t[20]=b):b=t[20],b}function De(e){return{type:`skill`,data:e}}function Oe(e){return{type:`command`,data:e}}function ke(e){return e.startsWith(`image/`)}function Ae(e){let t=(0,X.c)(7),{attachments:n,onRemove:r}=e;if(n.length===0)return null;let i;if(t[0]!==n||t[1]!==r){let e;t[3]===r?e=t[4]:(e=(e,t)=>(0,Q.jsx)(`div`,{className:`group relative flex items-center gap-1 rounded-md bg-muted text-xs text-muted-foreground`,children:ke(e.mimeType)?(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`img`,{src:`data:${e.mimeType};base64,${e.content}`,alt:e.fileName,className:`h-16 w-16 rounded-md object-cover`}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>r(t),className:`absolute -right-1.5 -top-1.5 flex h-4 w-4 items-center justify-center rounded-full bg-foreground text-background opacity-0 transition-opacity group-hover:opacity-100`,children:[(0,Q.jsx)(A,{className:`h-2.5 w-2.5`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:`Remove attachment`})]})]}):(0,Q.jsxs)(`span`,{className:`flex items-center gap-1 px-2 py-1`,children:[(0,Q.jsx)(z,{className:`h-3 w-3`}),e.fileName,(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>r(t),className:`ml-1 hover:text-foreground`,children:[(0,Q.jsx)(A,{className:`h-3 w-3`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:`Remove attachment`})]})]})},t),t[3]=r,t[4]=e),i=n.map(e),t[0]=n,t[1]=r,t[2]=i}else i=t[2];let a;return t[5]===i?a=t[6]:(a=(0,Q.jsx)(`div`,{className:`mb-2 flex flex-wrap gap-1.5`,children:i}),t[5]=i,t[6]=a),a}function je(e,t){let n=e.target.files;if(!n||n.length===0)return;let r=Array.from(n),i=r.length,a=Array.from({length:i}),o=0;e.target.value=``,r.forEach((e,n)=>{let r=new FileReader;r.onload=()=>{let s=r.result.split(`,`)[1];a[n]={fileName:e.name,content:s,mimeType:e.type||`application/octet-stream`},o+=1,o===i&&t(a)},r.readAsDataURL(e)})}function Me(e){let t=(0,X.c)(16),{showSuggestions:n,fileSuggestions:r,suggestionQuery:i,selectedIndex:o,onSelectFile:l,onMouseEnterSuggestion:u,containerRef:d}=e;if(!n||r.length===0)return null;let f;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,Q.jsx)(a,{className:`h-3 w-3`}),t[0]=f):f=t[0];let p;t[1]===i?p=t[2]:(p=(0,Q.jsxs)(`div`,{className:`px-2 py-1.5 text-xs font-semibold text-muted-foreground border-b border-border/50 mb-1 flex items-center gap-2`,children:[f,`Files matching "`,i,`"`]}),t[1]=i,t[2]=p);let m;if(t[3]!==r||t[4]!==u||t[5]!==l||t[6]!==o){let e;t[8]!==u||t[9]!==l||t[10]!==o?(e=(e,t)=>{let n=e.split(`/`).pop()??e;return(0,Q.jsxs)(`button`,{type:`button`,className:v(`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm text-left transition-colors`,t===o?`bg-accent text-accent-foreground`:`text-popover-foreground hover:bg-accent/50`),onClick:()=>l(e),onMouseEnter:()=>u(t),children:[e.endsWith(`.ts`)||e.endsWith(`.tsx`)||e.endsWith(`.js`)||e.endsWith(`.jsx`)?(0,Q.jsx)(c,{className:`h-4 w-4 text-blue-500`}):(0,Q.jsx)(s,{className:`h-4 w-4 text-muted-foreground`}),(0,Q.jsxs)(`div`,{className:`flex flex-col overflow-hidden`,children:[(0,Q.jsx)(`span`,{className:`truncate font-medium`,children:n}),(0,Q.jsx)(`span`,{className:`truncate text-[10px] text-muted-foreground opacity-70`,children:e})]})]},e)},t[8]=u,t[9]=l,t[10]=o,t[11]=e):e=t[11],m=r.map(e),t[3]=r,t[4]=u,t[5]=l,t[6]=o,t[7]=m}else m=t[7];let h;return t[12]!==d||t[13]!==p||t[14]!==m?(h=(0,Q.jsxs)(`div`,{ref:d,className:`absolute bottom-full left-0 mb-2 w-full max-h-64 overflow-y-auto rounded-xl border border-border bg-popover p-1 shadow-lg z-50 animate-in fade-in slide-in-from-bottom-2`,children:[p,m]}),t[12]=d,t[13]=p,t[14]=m,t[15]=h):h=t[15],h}function Ne(e){let t=(0,X.c)(3),{provider:n}=e;if(!n)return null;let r=`https://models.tarsk.io/svg/${n}.svg`,i=`${n} logo`,a;return t[0]!==r||t[1]!==i?(a=(0,Q.jsx)(`img`,{src:r,alt:i,className:`h-3.5 w-3.5 flex-shrink-0`,onError:Pe}),t[0]=r,t[1]=i,t[2]=a):a=t[2],a}function Pe(e){e.currentTarget.style.visibility=`hidden`}function Fe(e){let t=(0,X.c)(26),{availableModels:n,selectedModel:r,onModelSelect:i}=e,[a,o]=Z.useState(!1),s=Z.useRef(null),c,l;t[0]===a?(c=t[1],l=t[2]):(c=()=>{let e=e=>{s.current&&!s.current.contains(e.target)&&o(!1)};if(a)return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},l=[a],t[0]=a,t[1]=c,t[2]=l),Z.useEffect(c,l);let u;t[3]===i?u=t[4]:(u=e=>{i(e),o(!1)},t[3]=i,t[4]=u);let f=u,p;t[5]===a?p=t[6]:(p=()=>o(!a),t[5]=a,t[6]=p);let m=r?.provider,h;t[7]===m?h=t[8]:(h=(0,Q.jsx)(Ne,{provider:m}),t[7]=m,t[8]=h);let g;t[9]===r?g=t[10]:(g=r?le(r.id):`No model`,t[9]=r,t[10]=g);let _;t[11]===g?_=t[12]:(_=(0,Q.jsx)(`span`,{className:`text-xs font-medium`,children:g}),t[11]=g,t[12]=_);let v;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Q.jsx)(b,{className:`h-3 w-3`}),t[13]=v):v=t[13];let y;t[14]!==p||t[15]!==h||t[16]!==_?(y=(0,Q.jsxs)(d,{variant:`action`,size:`icon-sm`,className:`gap-1 w-auto px-2`,onClick:p,children:[h,_,v]}),t[14]=p,t[15]=h,t[16]=_,t[17]=y):y=t[17];let x;t[18]!==n||t[19]!==f||t[20]!==r?.id||t[21]!==a?(x=a&&(0,Q.jsx)(`div`,{className:`absolute bottom-full left-0 mb-1 w-80 max-h-80 overflow-y-auto rounded-lg border border-border bg-popover p-1 shadow-md z-50`,children:Object.entries(n.reduce(Ie,{})).map(e=>{let[t,n]=e;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 px-3 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wide`,children:[(0,Q.jsx)(Ne,{provider:t}),t]}),n.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`flex w-full items-center whitespace-nowrap rounded-md px-3 py-1.5 pl-8 text-sm text-popover-foreground hover:bg-accent ${e.id===r?.id?`bg-accent font-medium`:``}`,onClick:()=>f(e),children:le(e.id)},e.id))]},t)})}),t[18]=n,t[19]=f,t[20]=r?.id,t[21]=a,t[22]=x):x=t[22];let S;return t[23]!==y||t[24]!==x?(S=(0,Q.jsxs)(`div`,{className:`relative`,ref:s,children:[y,x]}),t[23]=y,t[24]=x,t[25]=S):S=t[25],S}function Ie(e,t){let n=t.provider??`Other`;return e[n]||(e[n]=[]),e[n].push(t),e}var Le=[{value:`build`,label:`Build`,icon:m},{value:`plan`,label:`Plan`,icon:S},{value:`image`,label:`Image`,icon:C}];function Re(e,t){return e?`plan`:t?`image`:`build`}function ze(e){let t=(0,X.c)(29),{planMode:r,imageMode:i,setPlanMode:a,setImageMode:o}=e,[s,c]=Z.useState(!1),l=Z.useRef(null),u;t[0]!==i||t[1]!==r?(u=Re(r,i),t[0]=i,t[1]=r,t[2]=u):u=t[2];let f=u,p;t[3]===f?p=t[4]:(p=Le.find(e=>e.value===f),t[3]=f,t[4]=p);let m=p,h=m.icon,g,_;t[5]===s?(g=t[6],_=t[7]):(g=()=>{let e=function(e){l.current&&!l.current.contains(e.target)&&c(!1)};if(s)return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},_=[s],t[5]=s,t[6]=g,t[7]=_),Z.useEffect(g,_);let v;t[8]!==o||t[9]!==a?(v=function(e){a(e===`plan`),o(e===`image`),c(!1)},t[8]=o,t[9]=a,t[10]=v):v=t[10];let y=v,x;t[11]===s?x=t[12]:(x=()=>c(!s),t[11]=s,t[12]=x);let S;t[13]===h?S=t[14]:(S=(0,Q.jsx)(h,{className:`h-3.5 w-3.5`}),t[13]=h,t[14]=S);let C;t[15]===m.label?C=t[16]:(C=(0,Q.jsx)(`span`,{className:`text-xs font-medium`,children:m.label}),t[15]=m.label,t[16]=C);let w;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,Q.jsx)(b,{className:`h-3 w-3`}),t[17]=w):w=t[17];let T;t[18]!==x||t[19]!==S||t[20]!==C?(T=(0,Q.jsxs)(d,{variant:`action`,size:`icon-sm`,className:`gap-1 w-auto px-2`,onClick:x,children:[S,C,w]}),t[18]=x,t[19]=S,t[20]=C,t[21]=T):T=t[21];let E;t[22]!==f||t[23]!==s||t[24]!==y?(E=s&&(0,Q.jsx)(`div`,{className:`absolute bottom-full right-0 mb-1 w-40 rounded-lg border border-border bg-popover p-1 shadow-md z-50`,children:Le.map(e=>{let t=e.icon,r=e.value===f;return(0,Q.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 rounded-md px-3 py-2 text-sm text-popover-foreground hover:bg-accent`,onClick:()=>y(e.value),children:[(0,Q.jsx)(t,{className:`h-3.5 w-3.5`}),e.label,r&&(0,Q.jsx)(n,{className:`ml-auto h-3.5 w-3.5`})]},e.value)})}),t[22]=f,t[23]=s,t[24]=y,t[25]=E):E=t[25];let D;return t[26]!==T||t[27]!==E?(D=(0,Q.jsxs)(`div`,{className:`relative`,ref:l,children:[T,E]}),t[26]=T,t[27]=E,t[28]=D):D=t[28],D}function Be(e){let t=(0,X.c)(17),{onFileAttach:n}=e,[r,i]=Z.useState(!1),a=Z.useRef(null),o,s;t[0]===r?(o=t[1],s=t[2]):(o=()=>{let e=e=>{a.current&&!a.current.contains(e.target)&&i(!1)};if(r)return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},s=[r],t[0]=r,t[1]=o,t[2]=s),Z.useEffect(o,s);let c;t[3]===n?c=t[4]:(c=function(){n(),i(!1)},t[3]=n,t[4]=c);let l=c,u;t[5]===r?u=t[6]:(u=()=>i(!r),t[5]=r,t[6]=u);let f,m;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,Q.jsx)(p,{}),m=(0,Q.jsx)(`span`,{className:`sr-only`,children:`More options`}),t[7]=f,t[8]=m):(f=t[7],m=t[8]);let h;t[9]===u?h=t[10]:(h=(0,Q.jsxs)(d,{variant:`action`,size:`icon-sm`,onClick:u,children:[f,m]}),t[9]=u,t[10]=h);let g;t[11]!==l||t[12]!==r?(g=r&&(0,Q.jsx)(`div`,{className:`absolute bottom-full left-0 mb-1 w-48 rounded-lg border border-border bg-popover p-1 shadow-md z-50`,children:(0,Q.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 rounded-md px-3 py-2 text-sm text-popover-foreground hover:bg-accent`,onClick:l,children:[(0,Q.jsx)(z,{className:`h-3.5 w-3.5`}),`Attach File`]})}),t[11]=l,t[12]=r,t[13]=g):g=t[13];let _;return t[14]!==h||t[15]!==g?(_=(0,Q.jsxs)(`div`,{className:`relative`,ref:a,children:[h,g]}),t[14]=h,t[15]=g,t[16]=_):_=t[16],_}function Ve(e){let t=(0,X.c)(14),{onToggleSpeech:n}=e,{isListening:r,isSupported:i}=ye();if(!i)return null;let a=r?`bg-red-500/20 text-red-500 hover:bg-red-500/30`:`text-muted-foreground hover:text-background`,o;t[0]===r?o=t[1]:(o=r?(0,Q.jsx)(D,{}):(0,Q.jsx)(te,{}),t[0]=r,t[1]=o);let s=r?`Stop listening`:`Start listening`,c;t[2]===s?c=t[3]:(c=(0,Q.jsx)(`span`,{className:`sr-only`,children:s}),t[2]=s,t[3]=c);let l;t[4]!==n||t[5]!==a||t[6]!==o||t[7]!==c?(l=(0,Q.jsx)(q,{asChild:!0,children:(0,Q.jsxs)(d,{variant:`ghost`,size:`icon-sm`,className:a,onClick:n,children:[o,c]})}),t[4]=n,t[5]=a,t[6]=o,t[7]=c,t[8]=l):l=t[8];let u=r?`Stop listening`:`Start listening`,f;t[9]===u?f=t[10]:(f=(0,Q.jsx)(G,{side:`top`,className:`bg-popover text-popover-foreground`,children:u}),t[9]=u,t[10]=f);let p;return t[11]!==l||t[12]!==f?(p=(0,Q.jsxs)(K,{children:[l,f]}),t[11]=l,t[12]=f,t[13]=p):p=t[13],p}function He(e){let t=(0,X.c)(8),{queuedMessages:n,onRemoveQueuedMessage:r}=e;if(n.length===0)return null;let i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,Q.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:`Queued messages`}),t[0]=i):i=t[0];let a;if(t[1]!==r||t[2]!==n){let e;t[4]===r?e=t[5]:(e=e=>(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3 rounded-md border border-border/60 bg-background px-3 py-2 text-sm`,children:[(0,Q.jsx)(`p`,{className:`flex-1 whitespace-pre-wrap text-foreground`,children:e.message}),(0,Q.jsx)(`button`,{type:`button`,className:`rounded-full p-1 text-muted-foreground transition-colors hover:bg-foreground hover:text-background`,onClick:()=>r(e.id),"aria-label":`Remove queued message`,children:(0,Q.jsx)(A,{className:`h-3.5 w-3.5`})})]},e.id),t[4]=r,t[5]=e),a=n.map(e),t[1]=r,t[2]=n,t[3]=a}else a=t[3];let o;return t[6]===a?o=t[7]:(o=(0,Q.jsxs)(`div`,{className:`mb-3 rounded-lg border border-border/60 bg-muted/30 px-4 py-3`,children:[i,(0,Q.jsx)(`div`,{className:`mt-2 flex flex-col gap-2`,children:a})]}),t[6]=a,t[7]=o),o}function Ue(e){let t=(0,X.c)(141),{onSend:n,onStop:r,isStreaming:i,disabled:a,initialValue:o,queuedMessages:s,onRemoveQueuedMessage:c,isOverlay:u}=e,f=i===void 0?!1:i,p=u===void 0?!1:u,{isListening:m,transcript:h,startListening:g,stopListening:v,resetTranscript:y}=ye(),b;t[0]===o?b=t[1]:(b={initialValue:o},t[0]=o,t[1]=b);let{message:x,setMessage:S,historyIndex:C,setHistoryIndex:w,draftMessage:T,setDraftMessage:E,cursorPosition:D,setCursorPosition:O,availableModels:k,selectedModel:A,setSelectedModel:j,attachments:M,setAttachments:N,planMode:P,setPlanMode:F,imageMode:I,setImageMode:R,availableImageModels:z,selectedImageModel:ee,setSelectedImageModel:te,allFiles:B,setAllFiles:ne,showSuggestions:V,setShowSuggestions:re,suggestionQuery:H,setSuggestionQuery:ie,selectedIndex:U,setSelectedIndex:W,slashCommands:G,skills:K,showCommandSuggestions:q,setShowCommandSuggestions:J,commandQuery:Y,setCommandQuery:ae,fileInputRef:oe,textareaRef:se,suggestionsRef:ce,commandSuggestionsRef:le,state:ue,dispatch:de}=be(b),$=I?ee:A,fe=I?z:k,pe=ue.selectedThreadId??void 0,me;t[2]!==B||t[3]!==M||t[4]!==Y||t[5]!==D||t[6]!==de||t[7]!==T||t[8]!==C||t[9]!==I||t[10]!==m||t[11]!==f||t[12]!==x||t[13]!==n||t[14]!==P||t[15]!==y||t[16]!==ee||t[17]!==U||t[18]!==A||t[19]!==ne||t[20]!==N||t[21]!==ae||t[22]!==O||t[23]!==E||t[24]!==w||t[25]!==S||t[26]!==F||t[27]!==W||t[28]!==J||t[29]!==re||t[30]!==ie||t[31]!==q||t[32]!==V||t[33]!==K||t[34]!==G||t[35]!==v||t[36]!==H||t[37]!==pe||t[38]!==se?(me={message:x,setMessage:S,attachments:M,selectedModel:A,onSend:n,isStreaming:f,selectedThreadId:pe,isListening:m,stopListening:v,resetTranscript:y,dispatch:de,historyIndex:C,setHistoryIndex:w,draftMessage:T,setDraftMessage:E,cursorPosition:D,setCursorPosition:O,showSuggestions:V,setShowSuggestions:re,suggestionQuery:H,setSuggestionQuery:ie,allFiles:B,setAllFiles:ne,selectedIndex:U,setSelectedIndex:W,showCommandSuggestions:q,setShowCommandSuggestions:J,commandQuery:Y,setCommandQuery:ae,slashCommands:G,skills:K,textareaRef:se,setAttachments:N,planMode:P,setPlanMode:F,imageMode:I,selectedImageModel:ee},t[2]=B,t[3]=M,t[4]=Y,t[5]=D,t[6]=de,t[7]=T,t[8]=C,t[9]=I,t[10]=m,t[11]=f,t[12]=x,t[13]=n,t[14]=P,t[15]=y,t[16]=ee,t[17]=U,t[18]=A,t[19]=ne,t[20]=N,t[21]=ae,t[22]=O,t[23]=E,t[24]=w,t[25]=S,t[26]=F,t[27]=W,t[28]=J,t[29]=re,t[30]=ie,t[31]=q,t[32]=V,t[33]=K,t[34]=G,t[35]=v,t[36]=H,t[37]=pe,t[38]=se,t[39]=me):me=t[39];let{handleSend:he,handleKeyDown:ge,handleTextareaInput:_e,insertFileReference:ve,insertCommand:xe,insertSkill:Ce,fileSuggestions:we}=Se(me),Te=Z.useRef(``),De,Oe;t[40]!==S||t[41]!==h?(De=()=>{if(h&&h!==Te.current){let e=h.substring(Te.current.length);S(t=>(t.endsWith(` `),t+e)),Te.current=h}},Oe=[h,S],t[40]=S,t[41]=h,t[42]=De,t[43]=Oe):(De=t[42],Oe=t[43]),Z.useEffect(De,Oe);let ke;t[44]===N?ke=t[45]:(ke=e=>{let t=e.clipboardData?.items;if(!t)return;let n=Array.from(t).filter(Ge);if(n.length!==0){e.preventDefault();for(let e of n){let t=e.getAsFile();if(!t)continue;let n=new FileReader;n.onload=()=>{let e=n.result.split(`,`)[1];N(n=>[...n,{fileName:t.name||`pasted-image.${t.type.split(`/`)[1]||`png`}`,content:e,mimeType:t.type}])},n.readAsDataURL(t)}}},t[44]=N,t[45]=ke);let Ne=ke,Pe;t[46]!==m||t[47]!==y||t[48]!==g||t[49]!==v?(Pe=()=>{m?(v(),y()):(y(),g())},t[46]=m,t[47]=y,t[48]=g,t[49]=v,t[50]=Pe):Pe=t[50];let Ie=Pe,Le=p?`absolute inset-x-0 bottom-0 mx-auto w-full max-w-3xl px-4 pb-4 pointer-events-none`:`relative mx-auto w-full max-w-3xl px-4 pb-4`,Re=`flex flex-col rounded-2xl border focus-within:ring-2 focus-within:ring-brand pointer-events-auto ${p?`border-border/50 bg-background/80 shadow-lg backdrop-blur-sm`:`border-border bg-background shadow-2xl`}`,Ue;t[51]!==c||t[52]!==s?(Ue=(0,Q.jsx)(He,{queuedMessages:s,onRemoveQueuedMessage:c}),t[51]=c,t[52]=s,t[53]=Ue):Ue=t[53];let Ke=P?`Describe what you want Tarsk to plan...`:I?`Describe the image you want to generate...`:`Ask Tarsk anything, # for files, / for commands & skills`,qe;t[54]!==a||t[55]!==ge||t[56]!==Ne||t[57]!==_e||t[58]!==x||t[59]!==Ke||t[60]!==se?(qe=(0,Q.jsx)(`textarea`,{ref:se,value:x,onChange:_e,onKeyDown:ge,onPaste:Ne,placeholder:Ke,rows:1,className:`w-full resize-none bg-transparent px-6 pt-4 pb-4 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none`,disabled:a}),t[54]=a,t[55]=ge,t[56]=Ne,t[57]=_e,t[58]=x,t[59]=Ke,t[60]=se,t[61]=qe):qe=t[61];let Je;t[62]!==Y||t[63]!==le||t[64]!==xe||t[65]!==Ce||t[66]!==U||t[67]!==W||t[68]!==q||t[69]!==K||t[70]!==G?(Je=(0,Q.jsx)(Ee,{visible:q,commands:G,skills:K,query:Y,selectedIndex:U,onSelectCommand:xe,onSelectSkill:Ce,onMouseEnterSuggestion:W,containerRef:le}),t[62]=Y,t[63]=le,t[64]=xe,t[65]=Ce,t[66]=U,t[67]=W,t[68]=q,t[69]=K,t[70]=G,t[71]=Je):Je=t[71];let Ye;t[72]!==we||t[73]!==ve||t[74]!==U||t[75]!==W||t[76]!==V||t[77]!==H||t[78]!==ce?(Ye=(0,Q.jsx)(Me,{showSuggestions:V,fileSuggestions:we,suggestionQuery:H,selectedIndex:U,onSelectFile:ve,onMouseEnterSuggestion:W,containerRef:ce}),t[72]=we,t[73]=ve,t[74]=U,t[75]=W,t[76]=V,t[77]=H,t[78]=ce,t[79]=Ye):Ye=t[79];let Xe;t[80]!==M||t[81]!==A?.id||t[82]!==A?.name||t[83]!==A?.supportsImages||t[84]!==N?(Xe=M.length>0&&(0,Q.jsxs)(`div`,{className:`px-4`,children:[(0,Q.jsx)(Ae,{attachments:M,onRemove:e=>N(t=>t.filter((t,n)=>n!==e))}),M.some(We)&&A?.supportsImages===!1&&(0,Q.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5 text-xs text-amber-500`,children:[(0,Q.jsx)(l,{className:`h-3 w-3 shrink-0`}),(0,Q.jsxs)(`span`,{children:[`Images are not supported by `,A?.name||A?.id]})]})]}),t[80]=M,t[81]=A?.id,t[82]=A?.name,t[83]=A?.supportsImages,t[84]=N,t[85]=Xe):Xe=t[85];let Ze;t[86]===oe?Ze=t[87]:(Ze=(0,Q.jsx)(Be,{onFileAttach:()=>oe.current?.click()}),t[86]=oe,t[87]=Ze);let Qe;t[88]===Ie?Qe=t[89]:(Qe=(0,Q.jsx)(Ve,{onToggleSpeech:Ie}),t[88]=Ie,t[89]=Qe);let $e=I?te:j,et;t[90]!==fe||t[91]!==$||t[92]!==$e?(et=(0,Q.jsx)(Fe,{availableModels:fe,selectedModel:$,onModelSelect:$e}),t[90]=fe,t[91]=$,t[92]=$e,t[93]=et):et=t[93];let tt;t[94]!==Ze||t[95]!==Qe||t[96]!==et?(tt=(0,Q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[Ze,Qe,et]}),t[94]=Ze,t[95]=Qe,t[96]=et,t[97]=tt):tt=t[97];let nt;t[98]!==I||t[99]!==P||t[100]!==R||t[101]!==F?(nt=(0,Q.jsx)(ze,{planMode:P,imageMode:I,setPlanMode:F,setImageMode:R}),t[98]=I,t[99]=P,t[100]=R,t[101]=F,t[102]=nt):nt=t[102];let rt=f?r:he,it;t[103]!==M.length||t[104]!==a||t[105]!==$||t[106]!==f||t[107]!==x?(it=!f&&((a??!1)||!x.trim()&&M.length===0||!$),t[103]=M.length,t[104]=a,t[105]=$,t[106]=f,t[107]=x,t[108]=it):it=t[108];let at;t[109]===f?at=t[110]:(at=f?(0,Q.jsx)(_,{className:`h-3 w-3 fill-current`}):(0,Q.jsx)(L,{className:`h-3 w-3`}),t[109]=f,t[110]=at);let ot=f?`Stop generation`:`Send message`,st;t[111]===ot?st=t[112]:(st=(0,Q.jsx)(`span`,{className:`sr-only`,children:ot}),t[111]=ot,t[112]=st);let ct;t[113]!==rt||t[114]!==it||t[115]!==at||t[116]!==st?(ct=(0,Q.jsxs)(d,{size:`icon`,className:`h-7 w-7 rounded-full`,onClick:rt,disabled:it,children:[at,st]}),t[113]=rt,t[114]=it,t[115]=at,t[116]=st,t[117]=ct):ct=t[117];let lt;t[118]!==nt||t[119]!==ct?(lt=(0,Q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[nt,ct]}),t[118]=nt,t[119]=ct,t[120]=lt):lt=t[120];let ut;t[121]!==tt||t[122]!==lt?(ut=(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-3 pb-2`,children:[tt,lt]}),t[121]=tt,t[122]=lt,t[123]=ut):ut=t[123];let dt;t[124]!==Re||t[125]!==Ue||t[126]!==qe||t[127]!==Je||t[128]!==Ye||t[129]!==Xe||t[130]!==ut?(dt=(0,Q.jsxs)(`div`,{className:Re,children:[Ue,qe,Je,Ye,Xe,ut]}),t[124]=Re,t[125]=Ue,t[126]=qe,t[127]=Je,t[128]=Ye,t[129]=Xe,t[130]=ut,t[131]=dt):dt=t[131];let ft;t[132]===N?ft=t[133]:(ft=e=>je(e,e=>N(t=>[...t,...e])),t[132]=N,t[133]=ft);let pt;t[134]!==oe||t[135]!==ft?(pt=(0,Q.jsx)(`input`,{ref:oe,type:`file`,multiple:!0,className:`hidden`,onChange:ft}),t[134]=oe,t[135]=ft,t[136]=pt):pt=t[136];let mt;return t[137]!==Le||t[138]!==dt||t[139]!==pt?(mt=(0,Q.jsxs)(`div`,{className:Le,children:[dt,pt]}),t[137]=Le,t[138]=dt,t[139]=pt,t[140]=mt):mt=t[140],mt}function We(e){return e.mimeType.startsWith(`image/`)}function Ge(e){return e.type.startsWith(`image/`)}function Ke({threadId:e}){let[t,n]=(0,Z.useState)(!1),[r,i]=(0,Z.useState)(null);return(0,Z.useEffect)(()=>{e&&P(e).then(i).catch(()=>{})},[e]),(0,Q.jsx)(`div`,{className:`flex items-center justify-end gap-2 px-8 py-2 mt-[-1rem] min-h-[2.25rem]`,children:e&&(0,Q.jsxs)(K,{children:[(0,Q.jsx)(q,{asChild:!0,children:(0,Q.jsx)(d,{variant:`ghost`,size:`icon`,className:`h-6 w-6 opacity-50 hover:opacity-80`,onClick:async()=>{if(!(!e||t)){n(!0);try{let t=await P(e);await navigator.clipboard.writeText(t)}finally{n(!1)}}},disabled:t,"aria-label":`Copy repository folder path`,children:(0,Q.jsx)(k,{className:`h-3 w-3`})})}),(0,Q.jsxs)(G,{side:`top`,className:`bg-slate-900 text-white`,children:[(0,Q.jsx)(`div`,{children:`Copy repository folder path`}),r&&(0,Q.jsx)(`div`,{className:`opacity-70 text-xs`,children:r})]})]})})}function qe(e,t){if(!(!t||!e.includes(`"run_js"`)))try{let n=JSON.parse(e.trim());if(!Array.isArray(n))return;for(let e of n)e?.type===`tool_use`&&e?.name===`run_js`&&e?.id&&e?.input?.code&&_e(e.id,e.input.code,t)}catch{}}function Je(){let{state:e,dispatch:t}=re(),[n,r]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(!1),s=(0,Z.useRef)(``),c=(0,Z.useRef)(``),l=(0,Z.useRef)([]),u=(0,Z.useRef)(!1),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),p=(0,Z.useRef)(()=>{}),[m,h]=(0,Z.useState)(null),g=(0,Z.useRef)(!1),_=(0,Z.useRef)(!1),v=(0,Z.useRef)(null),b=(0,Z.useRef)(null),S=(0,Z.useRef)(null),{selectedThreadId:C,selectedProjectId:E,messages:D,queuedChatMessages:O,isStreaming:k,streamingModel:A,processingThreadIds:j}=e,M=!!(C&&j.includes(C)),N=(0,Z.useCallback)(n=>{if(d.current=null,f.current=null,g.current){g.current=!1;return}let r=l.current,i=ie(r)||`...`;if(v.current&&(r.length===0||i===`...`)){let r={messageId:`msg-${Date.now()}-error`,sender:`agent`,content:`Error: ${v.current}`,contentType:`text`,timestamp:new Date().toISOString(),model:e.streamingModel||n,isThinking:!1};t({type:U.AddMessage,message:r}),t({type:U.ResetStream}),C&&t({type:U.RemoveProcessingThread,threadId:C}),v.current=null;return}let a={messageId:`msg-${Date.now()}-agent`,sender:`agent`,content:i,contentType:`markdown`,timestamp:new Date().toISOString(),model:e.streamingModel||n,isThinking:!1};s.current=``,c.current=``,l.current=[],v.current=null,t({type:U.AddMessage,message:a}),t({type:U.ResetStream}),C&&(t({type:U.MarkThreadCompleted,threadId:C}),t({type:U.RemoveProcessingThread,threadId:C}))},[e.streamingModel,t,C]);(0,Z.useEffect)(()=>{p.current=N},[N]);let P=(0,Z.useCallback)(()=>{C&&h(C),g.current=!0,C&&T(C),d.current&&=(d.current.abort(),null),f.current&&=(f.current(),null),s.current=``,c.current=``,l.current=[],v.current=null;let n={messageId:`msg-${Date.now()}-stopped`,sender:`agent`,content:`I've stopped working on your request.`,contentType:`text`,timestamp:new Date().toISOString(),model:e.streamingModel||`default`,isThinking:!1};t({type:U.AddMessage,message:n}),t({type:U.ResetStream}),C&&(t({type:U.MarkThreadCompleted,threadId:C}),t({type:U.RemoveProcessingThread,threadId:C}))},[C,t,e.streamingModel]);(0,Z.useEffect)(()=>{_.current&&!k&&d.current&&(d.current.abort(),d.current=null,f.current&&=(f.current(),null),p.current(A||`default`)),_.current=k},[k,A]),(0,Z.useEffect)(()=>{if(b.current&&=(clearTimeout(b.current),null),k){let e=12e4,t=n=>{b.current&&=(clearTimeout(b.current),null),b.current=setTimeout(()=>{let n=Date.now(),r=S?.current??null;if(r!=null){let i=n-r;if(i<e){t(e-i);return}}console.warn(`[stream-safety] Streaming stuck for 2 minutes with no activity, auto-finalizing`),d.current&&=(d.current.abort(),null),f.current&&=(f.current(),null),p.current(A||`default`)},n)},n=e;if(S?.current!=null){let t=Date.now()-S.current;n=t>=e?0:e-t}t(n)}return()=>{b.current&&=(clearTimeout(b.current),null)}},[k,A]),(0,Z.useEffect)(()=>()=>{d.current&&=(d.current.abort(),null),f.current&&=(f.current(),null),s.current=``,c.current=``,l.current=[],u.current=!1,v.current=null,t({type:U.ResetStream})},[C,t]),(0,Z.useEffect)(()=>{if(!C)return;let e=!1;async function n(){try{let n=await ee(C);e||t({type:U.SetMessages,messages:n.messages})}catch(n){console.error(`Failed to load chat history:`,n),e||t({type:U.SetMessages,messages:[]})}}return n(),()=>{e=!0}},[C,E,t]),(0,Z.useEffect)(()=>{if(!C||!M||k)return;let e=new AbortController;return d.current=e,t({type:U.ResetStream}),t({type:U.SetStreaming,isStreaming:!0}),s.current=``,c.current=``,l.current=[],u.current=!1,v.current=null,I(C,e.signal).then(n=>{if(!n||e.signal.aborted){p.current(`default`);return}f.current=x(n,e=>{if(e.type===`error`){let t=e.content||`Unknown error occurred`;v.current=t,r(t);return}if(e.type!==`message`){if(e.type===`toolcall_delta`){e.partial?.content?.[0]?.id&&e.delta&&t({type:U.UpdateToolCallProgress,toolCallId:e.partial.content[0].id,progress:{toolCallId:e.partial.content[0].id,toolName:e.partial.content[0].name,delta:e.delta,partial:e.partial}});return}if(e.model&&t({type:U.SetStreamModel,model:e.model}),e.type===`thinking`||e.isThinking){let n=e.content??``;qe(n,C),c.current+=n;let r=H(l.current,`thinking`,n);l.current=r,t({type:U.AppendStreamChunk,chunkType:`thinking`,content:n,segments:r})}else if(e.type===`result`)u.current=!0,s.current=e.content??``,l.current=W(l.current,e.content??``),t({type:U.SetStreamContent,content:e.content??``});else{if(u.current)return;s.current+=e.content??``;let n=H(l.current,`content`,e.content??``);l.current=n,t({type:U.AppendStreamChunk,chunkType:`content`,content:e.content??``,segments:n})}}},()=>{p.current(`default`)},e=>{if(e.includes(`AbortError`)||e.includes(`canceled`)||e.includes(`BodyStreamBuffer was aborted`)){p.current(`default`);return}v.current=e,r(e)},e=>{if(e.role===`assistant`){let n=e.content??``,r=typeof n==`string`?n:JSON.stringify(n);if(e.isThinking??!1){c.current+=r;let e=H(l.current,`thinking`,r);l.current=e,t({type:U.AppendStreamChunk,chunkType:`thinking`,content:r,segments:e});return}let i=!1;if(typeof n==`object`&&Array.isArray(n)&&n.length>0)i=!0;else if(typeof r==`string`&&r.trim().startsWith(`[`))try{let e=JSON.parse(r);i=Array.isArray(e)&&e.length>0}catch{}if(i)u.current=!0,s.current=r,l.current=W(l.current,r),t({type:U.SetStreamContent,content:r});else{s.current+=r;let e=H(l.current,`content`,r);l.current=e,t({type:U.AppendStreamChunk,chunkType:`content`,content:r,segments:e})}}else if(e.role===`tool`){let n=e.content??``,r=typeof n==`string`?n:JSON.stringify(n);if(r){s.current+=r;let e=H(l.current,`content`,r);l.current=e,t({type:U.AppendStreamChunk,chunkType:`content`,content:r,segments:e})}}})}).catch(e=>{if(e instanceof Error&&e.name===`AbortError`){t({type:U.ResetStream});return}if(e instanceof Error&&e.message.includes(`not currently processing`)){t({type:U.ResetStream});return}console.error(`Failed to subscribe to chat stream:`,e),t({type:U.ResetStream})}),()=>{e.abort(),f.current&&=(f.current(),null)}},[C,M]);let L=(0,Z.useCallback)(async(n,a,m,g,_,b)=>{if(!C)return;r(null),h(null),d.current&&d.current.abort(),f.current&&f.current();let S=`msg-${Date.now()}`,T;try{let e=await i(C,S);e.success&&e.stashed&&e.checkpointRef&&(T=e.checkpointRef)}catch{}let D={messageId:S,sender:`user`,content:n,contentType:`text`,timestamp:new Date().toISOString(),model:a,attachments:m.map(e=>({fileName:e.fileName,content:e.content,mimeType:e.mimeType})),checkpointRef:T};t({type:U.AddMessage,message:D});let O=n.trim().replace(/\n/g,` `).slice(0,100);if(E&&C&&(w(C,{title:O}).catch(e=>{console.error(`Failed to update thread title:`,e)}),t({type:U.UpdateThreadTitle,projectId:E,threadId:C,title:O})),b){let e=g??void 0;if(!e&&typeof a==`string`){let t=a.split(/[:/]/)[0]?.trim();t&&(e=t)}if(!e){let e={messageId:`msg-${Date.now()}-error`,sender:`agent`,content:`Image generation is not available because no provider is configured for the selected model.`,contentType:`text`,timestamp:new Date().toISOString(),model:a,isThinking:!1};t({type:U.AddMessage,message:e}),t({type:U.ResetStream});return}t({type:U.SetStreaming,isStreaming:!0});try{let r=await y(n,a,e,C),i={messageId:`msg-${Date.now()}-agent`,sender:`agent`,content:n,contentType:`text`,timestamp:new Date().toISOString(),model:a,isThinking:!1,generatedImageUrl:r.imageUrl,generatedImageData:r.imageData};t({type:U.AddMessage,message:i})}catch(e){let n=e instanceof Error?e.message:`Image generation failed`,r={messageId:`msg-${Date.now()}-error`,sender:`agent`,content:`Error: ${n}`,contentType:`text`,timestamp:new Date().toISOString(),model:a,isThinking:!1};t({type:U.AddMessage,message:r})}finally{t({type:U.ResetStream})}return}t({type:U.ResetStream}),t({type:U.SetStreaming,isStreaming:!0}),s.current=``,u.current=!1;let k=new AbortController;d.current=k;try{let i=await F(C,n,a,m,k.signal,g,_);if(!i){p.current(a);return}f.current=x(i,n=>{if(n.type===`error`){let e=n.content||`Unknown error occurred`;v.current=e,r(e);return}if(n.type!==`message`){if(n.type===`toolcall_delta`){if(n.partial?.content?.[0]?.id&&n.delta){let e=n.partial.content[0].id,r=n.partial.content[0].name;t({type:U.UpdateToolCallProgress,toolCallId:e,progress:{toolCallId:e,toolName:r,delta:n.delta,partial:n.partial}})}return}if(n.model&&t({type:U.SetStreamModel,model:n.model}),n.type===`thinking`||n.isThinking){let r=n.content??``;qe(r,e.selectedThreadId),c.current+=r;let i=H(l.current,`thinking`,r);l.current=i,t({type:U.AppendStreamChunk,chunkType:`thinking`,content:r,segments:i})}else if(n.type===`result`)u.current=!0,s.current=n.content??``,l.current=W(l.current,n.content??``),t({type:U.SetStreamContent,content:n.content??``});else{if(u.current)return;s.current+=n.content??``;let e=H(l.current,`content`,n.content??``);l.current=e,t({type:U.AppendStreamChunk,chunkType:`content`,content:n.content??``,segments:e})}}},()=>{p.current(a)},e=>{if(e.includes(`AbortError`)||e.includes(`canceled`)||e.includes(`BodyStreamBuffer was aborted`)){p.current(a);return}v.current=e,r(e)},e=>{if(e.role===`assistant`){let n=e.content??``,r=typeof n==`string`?n:JSON.stringify(n);if(e.isThinking??!1){c.current+=r;let e=H(l.current,`thinking`,r);l.current=e,t({type:U.AppendStreamChunk,chunkType:`thinking`,content:r,segments:e});return}let i=!1;if(typeof n==`object`&&Array.isArray(n)&&n.length>0)i=!0;else if(typeof r==`string`&&r.trim().startsWith(`[`))try{let e=JSON.parse(r);i=Array.isArray(e)&&e.length>0}catch{}if(i)u.current=!0,s.current=r,l.current=W(l.current,r),t({type:U.SetStreamContent,content:r});else{s.current+=r;let e=H(l.current,`content`,r);l.current=e,t({type:U.AppendStreamChunk,chunkType:`content`,content:r,segments:e})}}else if(e.role===`tool`){let n=e.content??``,r=typeof n==`string`?n:JSON.stringify(n);if(r){s.current+=r;let e=H(l.current,`content`,r);l.current=e,t({type:U.AppendStreamChunk,chunkType:`content`,content:r,segments:e})}}})}catch(e){if(e instanceof Error&&e.name===`AbortError`||e instanceof Error&&e.message.includes(`BodyStreamBuffer was aborted`))return;if(e instanceof ne){t({type:U.ResetStream}),o(!0);return}r(e instanceof Error?e.message:`Failed to send message. Please ensure the CLI server is running on localhost:641`),v.current=e instanceof Error?e.message:`Failed to send message. Please ensure the CLI server is running on localhost:641`,t({type:U.ResetStream})}},[C,E,t]);(0,Z.useEffect)(()=>{let n=e.pendingChatMessage;if(!n||k||n.threadId!==C)return;let r=setTimeout(()=>{t({type:U.ClearPendingChatMessage}),L(n.message,n.model,[],n.provider)},100);return()=>clearTimeout(r)},[e.pendingChatMessage,k,C,t,L]);let R=(0,Z.useMemo)(()=>C?O.filter(e=>e.threadId===C):[],[C,O]),z=(0,Z.useRef)(!1);return(0,Z.useEffect)(()=>{if(k||!C||R.length===0||z.current)return;let[e]=R;z.current=!0,t({type:U.RemoveQueuedChatMessage,queuedMessageId:e.id});let n=setTimeout(()=>{L(e.message,e.model,e.attachments,e.provider,e.planMode),z.current=!1},0);return()=>{clearTimeout(n),z.current=!1}},[t,L,k,R,C]),{error:n,setError:r,handleSend:L,handleStop:P,isStreaming:k,selectedThreadId:C,queuedMessagesForThread:R,handleRemoveQueuedMessage:(0,Z.useCallback)(e=>{let n=R.find(t=>t.id===e);t({type:U.RemoveQueuedChatMessage,queuedMessageId:e}),!(!n||k||D.length>0||!C)&&L(n.message,n.model,n.attachments,n.provider,n.planMode)},[t,L,k,D.length,R,C]),showEmptyBalanceDialog:a,setShowEmptyBalanceDialog:o}}function Ye(e){let t=(0,X.c)(10),{open:n,onClose:r}=e,i=V(),a;t[0]===r?a=t[1]:(a=e=>{e||r()},t[0]=r,t[1]=a);let o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,Q.jsxs)(se,{children:[(0,Q.jsx)(Y,{children:`Balance empty`}),(0,Q.jsx)(J,{children:`You have no prompts remaining. Purchase additional prompts to continue.`})]}),t[2]=o):o=t[2];let s;t[3]!==i||t[4]!==r?(s=(0,Q.jsxs)(ae,{children:[o,(0,Q.jsx)(oe,{children:(0,Q.jsx)(d,{onClick:()=>{r(),i(`/settings/account`)},children:`Go to Account`})})]}),t[3]=i,t[4]=r,t[5]=s):s=t[5];let c;return t[6]!==n||t[7]!==a||t[8]!==s?(c=(0,Q.jsx)(ce,{open:n,onOpenChange:a,children:s}),t[6]=n,t[7]=a,t[8]=s,t[9]=c):c=t[9],c}function Xe(e){let t=(0,X.c)(31),{messages:n}=e,r;t[0]===n?r=t[1]:(r=n===void 0?[]:n,t[0]=n,t[1]=r);let i=r,{state:a,dispatch:o}=re(),{isCreatingProject:s,selectedThreadId:c}=a,{handleSend:l,handleStop:u,isStreaming:f,queuedMessagesForThread:m,handleRemoveQueuedMessage:h,showEmptyBalanceDialog:g,setShowEmptyBalanceDialog:_}=Je(),v=a.pendingChatMessage?.threadId===c,y=f||v,b=i.length>0,x;t[2]!==o||t[3]!==c?(x=async()=>{if(c)try{let e=await B(c);o({type:U.ClearMessages}),console.log(`New conversation started:`,e);let t=await ee(c);o({type:U.SetMessages,messages:t.messages})}catch(e){console.error(`Failed to start new chat:`,e)}},t[2]=o,t[3]=c,t[4]=x):x=t[4];let S=x,C;t[5]===_?C=t[6]:(C=()=>_(!1),t[5]=_,t[6]=C);let w;t[7]!==g||t[8]!==C?(w=(0,Q.jsx)(Ye,{open:g,onClose:C}),t[7]=g,t[8]=C,t[9]=w):w=t[9];let T;t[10]!==S||t[11]!==b?(T=b&&(0,Q.jsx)(`div`,{className:`absolute -top-8 left-0 z-10 ml-8`,children:(0,Q.jsxs)(d,{variant:`outline`,size:`sm`,className:`h-7 px-2 text-xs bg-background`,onClick:S,children:[(0,Q.jsx)(p,{className:`h-3.5 w-3.5 mr-1`}),`New Chat`]})}),t[10]=S,t[11]=b,t[12]=T):T=t[12];let E=!c&&!s,D;t[13]!==y||t[14]!==h||t[15]!==l||t[16]!==u||t[17]!==m||t[18]!==E?(D=(0,Q.jsx)(Ue,{onSend:l,onStop:u,isStreaming:y,disabled:E,initialValue:``,queuedMessages:m,onRemoveQueuedMessage:h,isOverlay:!1}),t[13]=y,t[14]=h,t[15]=l,t[16]=u,t[17]=m,t[18]=E,t[19]=D):D=t[19];let O;t[20]!==T||t[21]!==D?(O=(0,Q.jsxs)(`div`,{className:`relative`,children:[T,D]}),t[20]=T,t[21]=D,t[22]=O):O=t[22];let k=c??void 0,A;t[23]===k?A=t[24]:(A=(0,Q.jsx)(Ke,{threadId:k}),t[23]=k,t[24]=A);let j;t[25]!==A||t[26]!==O?(j=(0,Q.jsxs)(`div`,{className:`relative mx-auto min-w-[400px] w-[90vw] max-w-3xl`,children:[O,A]}),t[25]=A,t[26]=O,t[27]=j):j=t[27];let M;return t[28]!==j||t[29]!==w?(M=(0,Q.jsxs)(Q.Fragment,{children:[w,j]}),t[28]=j,t[29]=w,t[30]=M):M=t[30],M}export{de as a,me as i,_e as n,pe as r,Xe as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{$i as t,Cr as n,Gi as r,Wn as i,Xi as a,la as o,sa as s}from"./dialogs-config-D3xml4W2.js";import{a as c,d as l,h as u,i as d,l as f,m as p,n as m,o as h,p as g,s as _,t as v,u as y}from"./react-vendor-DcsTuVun.js";var b=s(),x=e(o(),1),S=n(),C=y,w=u,T=x.forwardRef((e,t)=>{let n=(0,b.c)(14),r,o,s,c;n[0]===e?(r=n[1],o=n[2],s=n[3],c=n[4]):({className:o,inset:s,children:r,...c}=e,n[0]=e,n[1]=r,n[2]=o,n[3]=s,n[4]=c);let l=s&&`pl-8`,u;n[5]!==o||n[6]!==l?(u=i(`flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground`,l,o),n[5]=o,n[6]=l,n[7]=u):u=n[7];let d;n[8]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,S.jsx)(a,{className:`ml-auto h-4 w-4`}),n[8]=d):d=n[8];let f;return n[9]!==r||n[10]!==c||n[11]!==t||n[12]!==u?(f=(0,S.jsxs)(p,{ref:t,className:u,...c,children:[r,d]}),n[9]=r,n[10]=c,n[11]=t,n[12]=u,n[13]=f):f=n[13],f});T.displayName=p.displayName;var E=x.forwardRef((e,t)=>{let n=(0,b.c)(9),r,a;n[0]===e?(r=n[1],a=n[2]):({className:r,...a}=e,n[0]=e,n[1]=r,n[2]=a);let o;n[3]===r?o=n[4]:(o=i(`z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,r),n[3]=r,n[4]=o);let s;return n[5]!==a||n[6]!==t||n[7]!==o?(s=(0,S.jsx)(g,{ref:t,className:o,...a}),n[5]=a,n[6]=t,n[7]=o,n[8]=s):s=n[8],s});E.displayName=g.displayName;var D=x.forwardRef((e,t)=>{let n=(0,b.c)(9),r,a;n[0]===e?(r=n[1],a=n[2]):({className:r,...a}=e,n[0]=e,n[1]=r,n[2]=a);let o;n[3]===r?o=n[4]:(o=i(`z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,r),n[3]=r,n[4]=o);let s;return n[5]!==a||n[6]!==t||n[7]!==o?(s=(0,S.jsx)(_,{children:(0,S.jsx)(m,{ref:t,className:o,...a})}),n[5]=a,n[6]=t,n[7]=o,n[8]=s):s=n[8],s});D.displayName=m.displayName;var O=x.forwardRef((e,t)=>{let n=(0,b.c)(11),r,a,o;n[0]===e?(r=n[1],a=n[2],o=n[3]):({className:r,inset:a,...o}=e,n[0]=e,n[1]=r,n[2]=a,n[3]=o);let s=a&&`pl-8`,c;n[4]!==r||n[5]!==s?(c=i(`relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,s,r),n[4]=r,n[5]=s,n[6]=c):c=n[6];let l;return n[7]!==o||n[8]!==t||n[9]!==c?(l=(0,S.jsx)(d,{ref:t,className:c,...o}),n[7]=o,n[8]=t,n[9]=c,n[10]=l):l=n[10],l});O.displayName=d.displayName;var k=x.forwardRef((e,n)=>{let r=(0,b.c)(14),a,o,s,l;r[0]===e?(a=r[1],o=r[2],s=r[3],l=r[4]):({className:s,children:o,checked:a,...l}=e,r[0]=e,r[1]=a,r[2]=o,r[3]=s,r[4]=l);let u;r[5]===s?u=r[6]:(u=i(`relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,s),r[5]=s,r[6]=u);let d;r[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,S.jsx)(`span`,{className:`absolute left-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,S.jsx)(c,{children:(0,S.jsx)(t,{className:`h-4 w-4`})})}),r[7]=d):d=r[7];let f;return r[8]!==a||r[9]!==o||r[10]!==l||r[11]!==n||r[12]!==u?(f=(0,S.jsxs)(v,{ref:n,className:u,checked:a,...l,children:[d,o]}),r[8]=a,r[9]=o,r[10]=l,r[11]=n,r[12]=u,r[13]=f):f=r[13],f});k.displayName=v.displayName;var A=x.forwardRef((e,t)=>{let n=(0,b.c)(12),a,o,s;n[0]===e?(a=n[1],o=n[2],s=n[3]):({className:o,children:a,...s}=e,n[0]=e,n[1]=a,n[2]=o,n[3]=s);let l;n[4]===o?l=n[5]:(l=i(`relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,o),n[4]=o,n[5]=l);let u;n[6]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,S.jsx)(`span`,{className:`absolute left-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,S.jsx)(c,{children:(0,S.jsx)(r,{className:`h-2 w-2 fill-current`})})}),n[6]=u):u=n[6];let d;return n[7]!==a||n[8]!==s||n[9]!==t||n[10]!==l?(d=(0,S.jsxs)(f,{ref:t,className:l,...s,children:[u,a]}),n[7]=a,n[8]=s,n[9]=t,n[10]=l,n[11]=d):d=n[11],d});A.displayName=f.displayName;var j=x.forwardRef((e,t)=>{let n=(0,b.c)(11),r,a,o;n[0]===e?(r=n[1],a=n[2],o=n[3]):({className:r,inset:a,...o}=e,n[0]=e,n[1]=r,n[2]=a,n[3]=o);let s=a&&`pl-8`,c;n[4]!==r||n[5]!==s?(c=i(`px-2 py-1.5 text-sm font-semibold text-foreground`,s,r),n[4]=r,n[5]=s,n[6]=c):c=n[6];let l;return n[7]!==o||n[8]!==t||n[9]!==c?(l=(0,S.jsx)(h,{ref:t,className:c,...o}),n[7]=o,n[8]=t,n[9]=c,n[10]=l):l=n[10],l});j.displayName=h.displayName;var M=x.forwardRef((e,t)=>{let n=(0,b.c)(9),r,a;n[0]===e?(r=n[1],a=n[2]):({className:r,...a}=e,n[0]=e,n[1]=r,n[2]=a);let o;n[3]===r?o=n[4]:(o=i(`-mx-1 my-1 h-px bg-border`,r),n[3]=r,n[4]=o);let s;return n[5]!==a||n[6]!==t||n[7]!==o?(s=(0,S.jsx)(l,{ref:t,className:o,...a}),n[5]=a,n[6]=t,n[7]=o,n[8]=s):s=n[8],s});M.displayName=l.displayName;var N=e=>{let t=(0,b.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`ml-auto text-xs tracking-widest text-muted-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,S.jsx)(`span`,{className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o};N.displayName=`ContextMenuShortcut`;export{w as a,M as i,D as n,O as r,C as t};
1
+ import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{$i as t,Cr as n,Gi as r,Wn as i,Xi as a,la as o,sa as s}from"./dialogs-config-DmDjliuA.js";import{a as c,d as l,h as u,i as d,l as f,m as p,n as m,o as h,p as g,s as _,t as v,u as y}from"./react-vendor-CaS5zjF7.js";var b=s(),x=e(o(),1),S=n(),C=y,w=u,T=x.forwardRef((e,t)=>{let n=(0,b.c)(14),r,o,s,c;n[0]===e?(r=n[1],o=n[2],s=n[3],c=n[4]):({className:o,inset:s,children:r,...c}=e,n[0]=e,n[1]=r,n[2]=o,n[3]=s,n[4]=c);let l=s&&`pl-8`,u;n[5]!==o||n[6]!==l?(u=i(`flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground`,l,o),n[5]=o,n[6]=l,n[7]=u):u=n[7];let d;n[8]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,S.jsx)(a,{className:`ml-auto h-4 w-4`}),n[8]=d):d=n[8];let f;return n[9]!==r||n[10]!==c||n[11]!==t||n[12]!==u?(f=(0,S.jsxs)(p,{ref:t,className:u,...c,children:[r,d]}),n[9]=r,n[10]=c,n[11]=t,n[12]=u,n[13]=f):f=n[13],f});T.displayName=p.displayName;var E=x.forwardRef((e,t)=>{let n=(0,b.c)(9),r,a;n[0]===e?(r=n[1],a=n[2]):({className:r,...a}=e,n[0]=e,n[1]=r,n[2]=a);let o;n[3]===r?o=n[4]:(o=i(`z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,r),n[3]=r,n[4]=o);let s;return n[5]!==a||n[6]!==t||n[7]!==o?(s=(0,S.jsx)(g,{ref:t,className:o,...a}),n[5]=a,n[6]=t,n[7]=o,n[8]=s):s=n[8],s});E.displayName=g.displayName;var D=x.forwardRef((e,t)=>{let n=(0,b.c)(9),r,a;n[0]===e?(r=n[1],a=n[2]):({className:r,...a}=e,n[0]=e,n[1]=r,n[2]=a);let o;n[3]===r?o=n[4]:(o=i(`z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,r),n[3]=r,n[4]=o);let s;return n[5]!==a||n[6]!==t||n[7]!==o?(s=(0,S.jsx)(_,{children:(0,S.jsx)(m,{ref:t,className:o,...a})}),n[5]=a,n[6]=t,n[7]=o,n[8]=s):s=n[8],s});D.displayName=m.displayName;var O=x.forwardRef((e,t)=>{let n=(0,b.c)(11),r,a,o;n[0]===e?(r=n[1],a=n[2],o=n[3]):({className:r,inset:a,...o}=e,n[0]=e,n[1]=r,n[2]=a,n[3]=o);let s=a&&`pl-8`,c;n[4]!==r||n[5]!==s?(c=i(`relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,s,r),n[4]=r,n[5]=s,n[6]=c):c=n[6];let l;return n[7]!==o||n[8]!==t||n[9]!==c?(l=(0,S.jsx)(d,{ref:t,className:c,...o}),n[7]=o,n[8]=t,n[9]=c,n[10]=l):l=n[10],l});O.displayName=d.displayName;var k=x.forwardRef((e,n)=>{let r=(0,b.c)(14),a,o,s,l;r[0]===e?(a=r[1],o=r[2],s=r[3],l=r[4]):({className:s,children:o,checked:a,...l}=e,r[0]=e,r[1]=a,r[2]=o,r[3]=s,r[4]=l);let u;r[5]===s?u=r[6]:(u=i(`relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,s),r[5]=s,r[6]=u);let d;r[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,S.jsx)(`span`,{className:`absolute left-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,S.jsx)(c,{children:(0,S.jsx)(t,{className:`h-4 w-4`})})}),r[7]=d):d=r[7];let f;return r[8]!==a||r[9]!==o||r[10]!==l||r[11]!==n||r[12]!==u?(f=(0,S.jsxs)(v,{ref:n,className:u,checked:a,...l,children:[d,o]}),r[8]=a,r[9]=o,r[10]=l,r[11]=n,r[12]=u,r[13]=f):f=r[13],f});k.displayName=v.displayName;var A=x.forwardRef((e,t)=>{let n=(0,b.c)(12),a,o,s;n[0]===e?(a=n[1],o=n[2],s=n[3]):({className:o,children:a,...s}=e,n[0]=e,n[1]=a,n[2]=o,n[3]=s);let l;n[4]===o?l=n[5]:(l=i(`relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,o),n[4]=o,n[5]=l);let u;n[6]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,S.jsx)(`span`,{className:`absolute left-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,S.jsx)(c,{children:(0,S.jsx)(r,{className:`h-2 w-2 fill-current`})})}),n[6]=u):u=n[6];let d;return n[7]!==a||n[8]!==s||n[9]!==t||n[10]!==l?(d=(0,S.jsxs)(f,{ref:t,className:l,...s,children:[u,a]}),n[7]=a,n[8]=s,n[9]=t,n[10]=l,n[11]=d):d=n[11],d});A.displayName=f.displayName;var j=x.forwardRef((e,t)=>{let n=(0,b.c)(11),r,a,o;n[0]===e?(r=n[1],a=n[2],o=n[3]):({className:r,inset:a,...o}=e,n[0]=e,n[1]=r,n[2]=a,n[3]=o);let s=a&&`pl-8`,c;n[4]!==r||n[5]!==s?(c=i(`px-2 py-1.5 text-sm font-semibold text-foreground`,s,r),n[4]=r,n[5]=s,n[6]=c):c=n[6];let l;return n[7]!==o||n[8]!==t||n[9]!==c?(l=(0,S.jsx)(h,{ref:t,className:c,...o}),n[7]=o,n[8]=t,n[9]=c,n[10]=l):l=n[10],l});j.displayName=h.displayName;var M=x.forwardRef((e,t)=>{let n=(0,b.c)(9),r,a;n[0]===e?(r=n[1],a=n[2]):({className:r,...a}=e,n[0]=e,n[1]=r,n[2]=a);let o;n[3]===r?o=n[4]:(o=i(`-mx-1 my-1 h-px bg-border`,r),n[3]=r,n[4]=o);let s;return n[5]!==a||n[6]!==t||n[7]!==o?(s=(0,S.jsx)(l,{ref:t,className:o,...a}),n[5]=a,n[6]=t,n[7]=o,n[8]=s):s=n[8],s});M.displayName=l.displayName;var N=e=>{let t=(0,b.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`ml-auto text-xs tracking-widest text-muted-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,S.jsx)(`span`,{className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o};N.displayName=`ContextMenuShortcut`;export{w as a,M as i,D as n,O as r,C as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./history-view-BOjZoBCb.js";export{e as ConversationHistoryView,e as default};