@loicngr/kobo 1.4.10 → 1.4.12

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 (74) hide show
  1. package/AGENTS.md +16 -10
  2. package/README.md +5 -1
  3. package/dist/mcp-server/kobo-tasks-server.js +1 -1
  4. package/dist/server/db/migrations.js +31 -0
  5. package/dist/server/db/schema.js +2 -1
  6. package/dist/server/index.js +119 -6
  7. package/dist/server/routes/plans.js +89 -0
  8. package/dist/server/routes/templates.js +82 -0
  9. package/dist/server/routes/workspaces.js +121 -11
  10. package/dist/server/services/agent-manager.js +74 -21
  11. package/dist/server/services/templates-service.js +173 -0
  12. package/dist/server/services/terminal-service.js +44 -0
  13. package/dist/server/services/workspace-service.js +49 -0
  14. package/dist/server/utils/git-ops.js +10 -0
  15. package/dist/server/utils/paths.js +7 -0
  16. package/package.json +2 -1
  17. package/src/client/dist/spa/assets/ActivityFeed-CgZWB0-0.js +10 -0
  18. package/src/client/dist/spa/assets/ActivityFeed-ko_rO-2M.css +1 -0
  19. package/src/client/dist/spa/assets/ClosePopup-jSuaV6dg.js +1 -0
  20. package/src/client/dist/spa/assets/{CreatePage-3gOfOT7H.js → CreatePage-PV9pH1-i.js} +2 -2
  21. package/src/client/dist/spa/assets/DiffViewer-eROI3K7I.js +2 -0
  22. package/src/client/dist/spa/assets/MainLayout-BKRJcjMN.css +1 -0
  23. package/src/client/dist/spa/assets/MainLayout-w7f2vykG.js +37 -0
  24. package/src/client/dist/spa/assets/QExpansionItem-KaA2BBuV.js +1 -0
  25. package/src/client/dist/spa/assets/{QList-CwbqTC_9.js → QList-lLY9TMz0.js} +1 -1
  26. package/src/client/dist/spa/assets/QMenu-IaCFq9U1.js +1 -0
  27. package/src/client/dist/spa/assets/QPage-D5bnOxz0.js +1 -0
  28. package/src/client/dist/spa/assets/SettingsPage-ai7Q_1KB.css +1 -0
  29. package/src/client/dist/spa/assets/SettingsPage-tK2WhdGt.js +1 -0
  30. package/src/client/dist/spa/assets/{TouchPan-Dc-xrSIS.js → TouchPan-DuISf80E.js} +1 -1
  31. package/src/client/dist/spa/assets/WorkspacePage-B7LByhzW.js +4 -0
  32. package/src/client/dist/spa/assets/WorkspacePage-XUHKUmuQ.css +1 -0
  33. package/src/client/dist/spa/assets/_plugin-vue_export-helper-fkfRoKj2.js +1 -0
  34. package/src/client/dist/spa/assets/{cssMode-CWtayDKW.js → cssMode-DxID_rwU.js} +1 -1
  35. package/src/client/dist/spa/assets/{editor.api-DeuH5Z7J.js → editor.api-6HHa4uDw.js} +1 -1
  36. package/src/client/dist/spa/assets/{editor.main-CHvDgl6E.js → editor.main-BY_NEoTM.js} +3 -3
  37. package/src/client/dist/spa/assets/{freemarker2-3a7cf3Uc.js → freemarker2-ChUzpgbV.js} +1 -1
  38. package/src/client/dist/spa/assets/{handlebars-BjDKZgtm.js → handlebars-BEqiXFje.js} +1 -1
  39. package/src/client/dist/spa/assets/{html-CxHAAoPw.js → html-BMS_L0RV.js} +1 -1
  40. package/src/client/dist/spa/assets/{htmlMode-DhXtvpCN.js → htmlMode-C68CMSi2.js} +1 -1
  41. package/src/client/dist/spa/assets/i18n-C9sStiuf.js +1 -0
  42. package/src/client/dist/spa/assets/i18n-DAQcMG9d.js +1 -0
  43. package/src/client/dist/spa/assets/index-DSx45TKH.js +5 -0
  44. package/src/client/dist/spa/assets/{javascript-CFSWGGGJ.js → javascript-BKkV2qqm.js} +1 -1
  45. package/src/client/dist/spa/assets/{jsonMode-k2An8_pW.js → jsonMode-Bk1XwYG8.js} +1 -1
  46. package/src/client/dist/spa/assets/{liquid-Cq4t-XTr.js → liquid-QLO1u8by.js} +1 -1
  47. package/src/client/dist/spa/assets/marked.esm-CtWESN18.js +60 -0
  48. package/src/client/dist/spa/assets/{mdx-UB8RrpeD.js → mdx-Cgznl219.js} +1 -1
  49. package/src/client/dist/spa/assets/{monaco.contribution-B9W_lLWp.js → monaco.contribution-CDhgtrdW.js} +2 -2
  50. package/src/client/dist/spa/assets/{python-n8QHA1-s.js → python-DCFlVqvF.js} +1 -1
  51. package/src/client/dist/spa/assets/{razor-DQrmL_Eu.js → razor-BHddvwQ2.js} +1 -1
  52. package/src/client/dist/spa/assets/{tsMode-DqHf0yz_.js → tsMode-BZkc6l5_.js} +1 -1
  53. package/src/client/dist/spa/assets/{typescript-C2OgYZBp.js → typescript-B0g45tCE.js} +1 -1
  54. package/src/client/dist/spa/assets/{xml-BD4Y8hNI.js → xml-CfmQqdO8.js} +1 -1
  55. package/src/client/dist/spa/assets/{yaml-dxD-q88Q.js → yaml-B1F9_T4A.js} +1 -1
  56. package/src/client/dist/spa/index.html +2 -2
  57. package/src/mcp-server/kobo-tasks-server.ts +1 -1
  58. package/src/client/dist/spa/assets/ActivityFeed-5m7j8KXA.css +0 -1
  59. package/src/client/dist/spa/assets/ActivityFeed-CWcNkgNz.js +0 -68
  60. package/src/client/dist/spa/assets/DiffViewer-BB0uMnDB.js +0 -2
  61. package/src/client/dist/spa/assets/MainLayout-Di4zIHM4.js +0 -2
  62. package/src/client/dist/spa/assets/MainLayout-Drv4zYbW.css +0 -1
  63. package/src/client/dist/spa/assets/QExpansionItem-dnmzWHId.js +0 -1
  64. package/src/client/dist/spa/assets/QMenu-C_LDF5uF.js +0 -1
  65. package/src/client/dist/spa/assets/QPage-0Qoiu-SJ.js +0 -1
  66. package/src/client/dist/spa/assets/QTooltip-DKxEdudV.js +0 -1
  67. package/src/client/dist/spa/assets/SettingsPage-2D1mycBC.js +0 -1
  68. package/src/client/dist/spa/assets/SettingsPage-CdWgxXBN.css +0 -1
  69. package/src/client/dist/spa/assets/WorkspacePage-D6ilyDGt.js +0 -4
  70. package/src/client/dist/spa/assets/WorkspacePage-DrDOZvHX.css +0 -1
  71. package/src/client/dist/spa/assets/_plugin-vue_export-helper-CLHv3piE.js +0 -1
  72. package/src/client/dist/spa/assets/i18n-BG0I8c3l.js +0 -1
  73. package/src/client/dist/spa/assets/i18n-BvyUMouA.js +0 -1
  74. package/src/client/dist/spa/assets/index-Dh7opLow.js +0 -5
@@ -248,6 +248,7 @@ function mapSession(row) {
248
248
  status: row.status,
249
249
  startedAt: row.started_at,
250
250
  endedAt: row.ended_at,
251
+ name: row.name,
251
252
  };
252
253
  }
253
254
  /** List all agent sessions for a workspace, most recent first. */
@@ -266,3 +267,51 @@ export function getLatestSession(workspaceId) {
266
267
  .get(workspaceId);
267
268
  return row ? mapSession(row) : null;
268
269
  }
270
+ /**
271
+ * Return the "active" session for tagging events like push/pull/open-pr traces
272
+ * or resumed chat messages. Skips idle sessions (never started) and prefers a
273
+ * running session, falling back to the most recent session that has actually
274
+ * been started (any non-idle status).
275
+ */
276
+ export function getActiveSession(workspaceId) {
277
+ const db = getDb();
278
+ // Prefer a running session first (the agent the user is actively interacting with)
279
+ const running = db
280
+ .prepare("SELECT * FROM agent_sessions WHERE workspace_id = ? AND status = 'running' ORDER BY started_at DESC LIMIT 1")
281
+ .get(workspaceId);
282
+ if (running)
283
+ return mapSession(running);
284
+ // Otherwise the most recent non-idle session (completed, error, quota, etc.)
285
+ const latestNonIdle = db
286
+ .prepare("SELECT * FROM agent_sessions WHERE workspace_id = ? AND status != 'idle' ORDER BY started_at DESC LIMIT 1")
287
+ .get(workspaceId);
288
+ return latestNonIdle ? mapSession(latestNonIdle) : null;
289
+ }
290
+ /** Create an idle agent session (no Claude process yet) for a workspace. */
291
+ export function createIdleSession(workspaceId) {
292
+ const db = getDb();
293
+ const id = nanoid();
294
+ const now = new Date().toISOString();
295
+ db.prepare('INSERT INTO agent_sessions (id, workspace_id, pid, status, started_at) VALUES (?, ?, NULL, ?, ?)').run(id, workspaceId, 'idle', now);
296
+ return {
297
+ id,
298
+ workspaceId,
299
+ pid: null,
300
+ claudeSessionId: null,
301
+ status: 'idle',
302
+ startedAt: now,
303
+ endedAt: null,
304
+ name: null,
305
+ };
306
+ }
307
+ /** Rename an agent session. Returns the updated session or null if not found. */
308
+ export function renameSession(sessionId, workspaceId, name) {
309
+ const db = getDb();
310
+ const result = db
311
+ .prepare('UPDATE agent_sessions SET name = ? WHERE id = ? AND workspace_id = ?')
312
+ .run(name, sessionId, workspaceId);
313
+ if (result.changes === 0)
314
+ return null;
315
+ const row = db.prepare('SELECT * FROM agent_sessions WHERE id = ?').get(sessionId);
316
+ return row ? mapSession(row) : null;
317
+ }
@@ -109,6 +109,16 @@ export function pushBranch(repoPath, branchName, remote = 'origin') {
109
109
  throw new Error(`Failed to push branch '${branchName}' to '${remote}': ${message}`);
110
110
  }
111
111
  }
112
+ /** Pull the current branch from the remote using fast-forward only. */
113
+ export function pullBranch(repoPath, branchName, remote = 'origin') {
114
+ try {
115
+ git(repoPath, ['pull', '--ff-only', remote, branchName]);
116
+ }
117
+ catch (err) {
118
+ const message = err instanceof Error ? err.message : String(err);
119
+ throw new Error(`Failed to pull branch '${branchName}' from '${remote}': ${message}`);
120
+ }
121
+ }
112
122
  /** Rebase the current branch onto the given base branch. Fetches origin first to get latest changes. */
113
123
  export function rebaseBranch(repoPath, baseBranch) {
114
124
  try {
@@ -69,6 +69,13 @@ export function getSettingsPath() {
69
69
  export function getSkillsPath() {
70
70
  return path.join(getKoboHome(), 'skills.json');
71
71
  }
72
+ /**
73
+ * Absolute path to templates.json under the Kōbō home — user's personal
74
+ * prompt templates library, editable via Settings > Templates.
75
+ */
76
+ export function getTemplatesPath() {
77
+ return path.join(getKoboHome(), 'templates.json');
78
+ }
72
79
  /**
73
80
  * Absolute path to the compiled MCP server entry (shipped in the published
74
81
  * package as dist/mcp-server/kobo-tasks-server.js). Returns null if not
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loicngr/kobo",
3
- "version": "1.4.10",
3
+ "version": "1.4.12",
4
4
  "description": "Kōbō — multi-workspace agent manager for Claude Code. Orchestrates isolated git worktrees with dev servers, Notion integration, and MCP tools.",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0-or-later",
@@ -71,6 +71,7 @@
71
71
  "better-sqlite3": "^12.8.0",
72
72
  "hono": "^4.12.12",
73
73
  "nanoid": "^5.1.7",
74
+ "node-pty": "^1.1.0",
74
75
  "ws": "^8.20.0"
75
76
  },
76
77
  "devDependencies": {
@@ -0,0 +1,10 @@
1
+ import{E as e,F as t,H as n,L as r,M as i,N as a,Q as o,U as s,_ as c,_t as l,a as u,d,f,g as p,m,n as ee,p as h,rt as te,u as g,y as ne,yt as _}from"./vue-i18n-nv59vAyH.js";import{L as v,T as y,bt as re}from"./scroll-CWjBCoBR.js";import{E as ie,O as ae}from"./index-DSx45TKH.js";import{t as b}from"./QSpinnerDots-FJCnAvfw.js";import{n as x,p as S,t as C}from"./_plugin-vue_export-helper-fkfRoKj2.js";import{n as oe,t as se}from"./marked.esm-CtWESN18.js";var ce={key:0,class:`af-empty column items-center justify-center text-center q-pa-xl`},le={class:`text-grey-6 q-mt-md text-body2`},ue={class:`text-grey-8 text-caption q-mt-xs`},de={key:1,class:`row justify-center q-my-sm`},fe=[`data-item-id`],pe={class:`af-tool row items-center q-gutter-xs`},me={class:`af-tool-label text-indigo-4`},he={class:`af-time`},ge={key:0,class:`text-grey-4 q-mb-xs`},_e={class:`af-ask-options-list q-mb-sm`},ve={class:`text-weight-bold text-grey-3`},ye={key:0},be={key:1,class:`af-ask-buttons q-gutter-xs`},xe={key:0,class:`q-mt-sm row justify-end`},Se=[`onClick`],Ce={class:`af-file-header row items-center no-wrap q-gutter-xs`},we={class:`af-file-path text-grey-4 ellipsis`},Te={class:`af-diff-stats`},Ee={key:0,class:`text-green-5`},De={key:1,class:`text-red-5 q-ml-xs`},Oe={class:`af-time`},ke={key:1,class:`af-diff-line af-diff-del`},w={key:0,class:`af-diff-line text-grey-7 text-italic`},Ae=[`onClick`],je={class:`af-tool-label text-grey-7`},Me={key:0,class:`af-tool-desc text-grey-8`},Ne={class:`af-time`},Pe={key:0,class:`af-tool-args q-mt-xs rounded-borders`},Fe={class:`af-args-pre`},Ie={class:`af-text-header row items-center q-mb-xs`},Le={class:`af-time`},Re=[`innerHTML`],ze={key:0,class:`text-grey-7 text-caption q-mt-xs`},Be=[`onClick`],Ve={class:`af-system-content text-caption text-amber-6`},He={class:`af-time`},Ue={key:0,class:`af-system-details q-mt-xs rounded-borders`},We={class:`af-args-pre`},Ge={key:5,class:`row items-center`},Ke={class:`af-error-content text-red-5`},qe={class:`af-time`},Je={key:6,class:`row items-center`},Ye={class:`af-raw-content text-grey-7`},Xe={class:`af-time`},Ze={class:`scroll-buttons`},T=50,Qe=50,E=C(ne({__name:`ActivityFeed`,setup(ne){function C(e){let t=se.parse(e,{async:!1,breaks:!0,gfm:!0});return oe.sanitize(t)}let{t:E}=ee(),D=ae(),$e=ie(),O=o(null),k=o(!1),A=o(new Set),j=new Map;function M(e,t){return j.has(e)||j.set(e,pt(t)),j.get(e)}let N=new Map;function et(e,t){return N.has(e)||N.set(e,C(t)),N.get(e)}let P=g(()=>{let e=D.activityFeed;for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.meta?.sender===`user`)return null;if(n.type===`tool_use`&&n.content===`AskUserQuestion`)return n.id}return null}),F=o(new Map);function tt(e,t,n){F.value.has(e)||F.value.set(e,new Map);let r=F.value.get(e);r.get(t)===n?r.delete(t):r.set(t,n)}function I(e,t,n){return F.value.get(e)?.get(t)===n}function nt(e){let t=F.value.get(e);return!!t&&t.size>0}function rt(e,t){let n=D.selectedWorkspaceId;if(!n)return;let r=F.value.get(e);if(!r||r.size===0)return;let i=[];for(let[e,n]of r.entries()){let r=t[e];if(!r)continue;let a=r.options[n];a&&i.push(`${r.question}: ${a.label}`)}i.length>0&&$e.sendChatMessage(n,i.join(`
2
+ `))}let L=o(-1);function it(){let t=D.activityFeed,n=t.map((e,t)=>({item:e,idx:t})).filter(({item:e})=>e.meta?.sender===`user`);if(n.length===0)return;L.value<=0?L.value=n.length-1:L.value--;let r=n[L.value].idx,i=n[L.value].item.id,a=t.length-r;a>R.value&&(R.value=Math.min(a+10,t.length)),e(()=>{let e=O.value?.querySelector(`[data-item-id="${i}"]`);e&&e.scrollIntoView({behavior:`smooth`,block:`center`})})}n(()=>D.selectedWorkspaceId,()=>{L.value=-1,j.clear(),F.value.clear(),N.clear(),V=0,k.value=!1});let R=o(T),z=g(()=>{let e=D.activityFeed;return e.length<=R.value?e:e.slice(-R.value)});n(()=>D.selectedWorkspaceId,()=>{R.value=T}),n(z,e=>{let t=new Set(e.map(e=>e.id));for(let e of j.keys())t.has(e)||j.delete(e);for(let e of F.value.keys())t.has(e)||F.value.delete(e);for(let e of N.keys())t.has(e)||N.delete(e)},{flush:`post`});let B=o(!1),V=0;function H(){let t=O.value;if(t&&(t.scrollHeight-t.scrollTop-t.clientHeight<50?B.value=!1:t.scrollTop<V&&(B.value=!0),V=t.scrollTop,t.scrollTop<200&&!k.value)){let n=D.activityFeed.length;if(R.value<n){k.value=!0;let r=t.scrollHeight;R.value=Math.min(R.value+Qe,n),e(()=>{O.value&&(O.value.scrollTop+=O.value.scrollHeight-r),k.value=!1})}else if(D.selectedWorkspaceId&&D.hasMoreEvents[D.selectedWorkspaceId]!==!1){k.value=!0;let n=t.scrollHeight;D.fetchOlderEvents(D.selectedWorkspaceId).then(t=>{t?(R.value=D.activityFeed.length,e(()=>{O.value&&(O.value.scrollTop+=O.value.scrollHeight-n),k.value=!1})):k.value=!1})}}}function U(){if(B.value)return;let e=O.value;e&&(e.scrollTop=e.scrollHeight)}function at(){B.value=!1,R.value=T,e(()=>{let e=O.value;e&&(e.scrollTop=e.scrollHeight)})}n(()=>D.activityFeed.length,()=>{e(U)}),i(()=>{O.value?.addEventListener(`scroll`,H),e(U)}),a(()=>{O.value?.removeEventListener(`scroll`,H)});function W(e){return new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function G(e){if(e.type!==`tool_use`)return null;let t=e.meta?.input;if(e.content===`Edit`){if(!t?.file_path)return null;let e=t.file_path,n=t.old_string??``,r=t.new_string??``,i=n.split(`
3
+ `),a=r.split(`
4
+ `);return{toolName:`Edit`,filePath:e,oldString:n,newString:r,replaceAll:t.replace_all??!1,additions:a.length,deletions:i.length}}if(e.content===`Write`){if(!t?.file_path)return null;let e=t.file_path,n=t.content??``;return{toolName:`Write`,filePath:e,content:n,additions:n.split(`
5
+ `).length,deletions:0}}if(e.content===`Bash`){let e=(t?.command??``).match(/^\s*rm\s+(?:-[a-zA-Z]*\s+)*(.+)/);if(e)return{toolName:`Bash:rm`,filePath:e[1].trim().replace(/["']/g,``),additions:0,deletions:1}}return null}function K(e){let t=D.selectedWorkspace;if(t){let n=`${t.projectPath}/.worktrees/${t.workingBranch}/`;if(e.startsWith(n))return e.slice(n.length);if(e.startsWith(`${t.projectPath}/`))return e.slice(t.projectPath.length+1)}return e.startsWith(`/`)&&e.split(`/`).length>4?`…/${e.split(`/`).slice(-3).join(`/`)}`:e}function ot(e){return e.split(`/`).pop()??e}function q(e){let t=ot(e),n=t.lastIndexOf(`.`);return n>=0?t.substring(n+1):``}function st(e){return{ts:`JS`,tsx:`TS`,js:`JS`,jsx:`JS`,vue:`VU`,py:`PY`,rs:`RS`,go:`GO`,java:`JA`,php:`PH`,css:`CS`,scss:`SC`,html:`HT`,md:`MD`,json:`JS`,sql:`SQ`,sh:`SH`,yaml:`YA`,yml:`YA`,toml:`TM`}[e.toLowerCase()]??e.substring(0,2).toUpperCase()}function ct(e){return{ts:`blue-5`,tsx:`blue-5`,js:`yellow-8`,jsx:`yellow-8`,vue:`green-5`,py:`blue-4`,rs:`orange-5`,go:`cyan-5`,java:`red-5`,php:`indigo-4`,css:`purple-4`,scss:`pink-4`,html:`orange-4`,md:`grey-5`,json:`yellow-6`}[e.toLowerCase()]??`grey-5`}function lt(e){let t=e.toLowerCase();return t.includes(`read`)||t.includes(`grep`)||t.includes(`glob`)?`search`:t.includes(`write`)||t.includes(`edit`)?`edit`:t.includes(`bash`)||t.includes(`terminal`)?`terminal`:t.includes(`agent`)||t.includes(`task`)?`smart_toy`:`build`}function J(e){switch(e.type){case`text`:return e.meta?.sender===`system-prompt`?`af-item--prompt`:e.meta?.sender===`user`?`af-item--user`:`af-item--text`;case`system`:return`af-item--system`;case`error`:return`af-item--error`;case`tool_use`:return`af-item--tool`;case`raw`:return`af-item--raw`;default:return``}}function ut(e){switch(e.meta?.sender){case`system-prompt`:return E(`activityFeed.initialPrompt`);case`user`:return E(`activityFeed.you`);default:return E(`activityFeed.agent`)}}function dt(e){switch(e.meta?.sender){case`system-prompt`:return`text-indigo-4`;case`user`:return`text-green-4`;default:return`text-blue-4`}}function ft(e){if(e.content===`Skill`&&e.meta){let t=e.meta.input;if(t&&typeof t.skill==`string`)return`Skill — ${t.skill}`}return e.content}function Y(e){if(!e.meta)return``;let t=e.meta.input;if(!t)return``;if(typeof t.description==`string`)return t.description;if(typeof t.file_path==`string`)return K(t.file_path);if(typeof t.pattern==`string`)return`${typeof t.path==`string`?`${K(t.path)}/`:``}${t.pattern}`;if(typeof t.path==`string`)return K(t.path);if(typeof t.command==`string`){let e=t.command;return e.length>80?`${e.slice(0,80)}…`:e}return``}function pt(e){if(e.type!==`tool_use`||e.content!==`AskUserQuestion`)return null;let t=e.meta?.input;return!t?.questions||!Array.isArray(t.questions)?null:t.questions.filter(e=>Array.isArray(e.options)&&e.options.length>0).map(e=>({question:e.question??``,options:e.options.map(e=>({label:e.label??``,description:e.description??``}))}))}function X(e){if(!e.meta)return!1;let t=e.meta;return t.input!==void 0&&t.input!==null}function Z(e){A.value.has(e)?A.value.delete(e):A.value.add(e)}function Q(e){return A.value.has(e)}function mt(e){if(!e.meta)return``;let t=e.meta;if(!t.input)return``;try{return JSON.stringify(t.input,null,2)}catch{return String(t.input)}}let ht=g(()=>D.activityFeed.some(e=>e.meta?.sender===`user`));function $(e){return e.type!==`system`||!e.meta?!1:Object.keys(e.meta).length>0}function gt(e){if(!e.meta)return``;try{return JSON.stringify(e.meta,null,2)}catch{return``}}return(e,n)=>(t(),m(`div`,{ref_key:`feedContainer`,ref:O,class:`activity-feed q-pa-sm`},[te(D).activityFeed.length===0?(t(),m(`div`,ce,[c(v,{name:`forum`,size:`48px`,color:`grey-8`}),d(`div`,le,_(e.$t(`activityFeed.empty`)),1),d(`div`,ue,_(e.$t(`activityFeed.emptyHint`)),1)])):h(``,!0),k.value?(t(),m(`div`,de,[c(b,{size:`24px`,color:`grey-6`})])):h(``,!0),(t(!0),m(u,null,r(z.value,i=>(t(),m(`div`,{key:i.id,"data-item-id":i.id,class:l([`af-item text-caption rounded-borders`,J(i)])},[i.type===`tool_use`&&M(i.id,i)?(t(),m(u,{key:0},[d(`div`,pe,[c(v,{name:`help_outline`,size:`14px`,color:`indigo-4`}),d(`span`,me,_(e.$t(`activityFeed.question`)),1),c(S),d(`span`,he,_(W(i.timestamp)),1)]),(t(!0),m(u,null,r(M(i.id,i),(e,n)=>(t(),m(`div`,{key:n,class:`q-mt-sm`},[e.question?(t(),m(`div`,ge,_(e.question),1)):h(``,!0),d(`div`,_e,[(t(!0),m(u,null,r(e.options,(e,n)=>(t(),m(`div`,{key:n,class:`af-ask-option-item text-caption text-grey-5`},[d(`span`,ve,_(n+1)+`. `+_(e.label),1),e.description?(t(),m(`span`,ye,` — `+_(e.description),1)):h(``,!0)]))),128))]),i.id===P.value?(t(),m(`div`,be,[(t(!0),m(u,null,r(e.options,(e,r)=>(t(),f(y,{key:e.label,"no-caps":``,dense:``,outline:!I(i.id,n,r),unelevated:I(i.id,n,r),color:I(i.id,n,r)?`indigo-6`:`indigo-4`,"text-color":I(i.id,n,r)?`white`:void 0,class:`af-option-btn`,onClick:e=>tt(i.id,n,r)},{default:s(()=>[p(_(e.label),1)]),_:2},1032,[`outline`,`unelevated`,`color`,`text-color`,`onClick`]))),128))])):h(``,!0)]))),128)),i.id===P.value?(t(),m(`div`,xe,[c(y,{"no-caps":``,unelevated:``,dense:``,color:`indigo-6`,label:e.$t(`activityFeed.sendAnswers`),icon:`send`,disable:!nt(i.id),onClick:e=>rt(i.id,M(i.id,i))},null,8,[`label`,`disable`,`onClick`])])):h(``,!0)],64)):i.type===`tool_use`&&G(i)?(t(),m(`div`,{key:1,class:`af-file-change cursor-pointer`,onClick:e=>Z(i.id)},[d(`div`,Ce,[d(`span`,{class:l([`af-lang-badge`,`text-${ct(q(G(i).filePath))}`])},_(st(q(G(i).filePath))),3),d(`span`,we,_(K(G(i).filePath)),1),d(`span`,Te,[G(i).additions?(t(),m(`span`,Ee,`+`+_(G(i).additions),1)):h(``,!0),G(i).deletions?(t(),m(`span`,De,`-`+_(G(i).deletions),1)):h(``,!0)]),c(v,{name:Q(i.id)?`expand_less`:`expand_more`,size:`14px`,color:`grey-6`},null,8,[`name`]),c(S),d(`span`,Oe,_(W(i.timestamp)),1)]),Q(i.id)?(t(),m(`div`,{key:0,class:`af-diff-body q-mt-xs`,onClick:n[0]||=re(()=>{},[`stop`])},[G(i).toolName===`Edit`?(t(),m(u,{key:0},[(t(!0),m(u,null,r((G(i).oldString??``).split(`
6
+ `),(e,r)=>(t(),m(`div`,{key:`del-${r}`,class:`af-diff-line af-diff-del`},[n[1]||=d(`span`,{class:`af-diff-sign`},`-`,-1),p(_(e),1)]))),128)),(t(!0),m(u,null,r((G(i).newString??``).split(`
7
+ `),(e,r)=>(t(),m(`div`,{key:`add-${r}`,class:`af-diff-line af-diff-add`},[n[2]||=d(`span`,{class:`af-diff-sign`},`+`,-1),p(_(e),1)]))),128))],64)):G(i).toolName===`Bash:rm`?(t(),m(`div`,ke,[...n[3]||=[d(`span`,{class:`af-diff-sign`},`-`,-1),p(`File deleted`,-1)]])):(t(),m(u,{key:2},[(t(!0),m(u,null,r((G(i).content??``).split(`
8
+ `).slice(0,30),(e,r)=>(t(),m(`div`,{key:`w-${r}`,class:`af-diff-line af-diff-add`},[n[4]||=d(`span`,{class:`af-diff-sign`},`+`,-1),p(_(e),1)]))),128)),(G(i).content??``).split(`
9
+ `).length>30?(t(),m(`div`,w,`… `+_((G(i).content??``).split(`
10
+ `).length-30)+` more lines`,1)):h(``,!0)],64))])):h(``,!0)],8,Se)):i.type===`tool_use`?(t(),m(u,{key:2},[d(`div`,{class:l([`af-tool row items-center q-gutter-xs`,{"cursor-pointer":X(i)}]),onClick:e=>X(i)&&Z(i.id)},[c(v,{name:lt(i.content),size:`14px`,color:`grey-6`},null,8,[`name`]),d(`span`,je,_(ft(i)),1),Y(i)?(t(),m(`span`,Me,`— `+_(Y(i)),1)):h(``,!0),X(i)?(t(),f(v,{key:1,name:Q(i.id)?`expand_less`:`expand_more`,size:`14px`,color:`grey-7`},null,8,[`name`])):h(``,!0),c(S),d(`span`,Ne,_(W(i.timestamp)),1)],10,Ae),Q(i.id)?(t(),m(`div`,Pe,[d(`pre`,Fe,_(mt(i)),1)])):h(``,!0)],64)):i.type===`text`?(t(),m(u,{key:3},[d(`div`,Ie,[d(`span`,{class:l([`text-caption text-weight-bold`,dt(i)])},_(ut(i)),3),i.meta?.pending?(t(),f(b,{key:0,size:`14px`,color:`grey-5`,class:`q-ml-sm`})):h(``,!0),c(S),d(`span`,Le,_(W(i.timestamp)),1)]),d(`div`,{class:`af-text-content af-markdown`,innerHTML:et(i.id,i.content)},null,8,Re),i.meta?.pending?(t(),m(`div`,ze,_(e.$t(`agentBusy.pendingMessage`)),1)):h(``,!0)],64)):i.type===`system`?(t(),m(u,{key:4},[d(`div`,{class:l([`row items-center`,{"cursor-pointer":$(i)}]),onClick:e=>$(i)&&Z(i.id)},[c(v,{name:`info`,size:`14px`,color:`amber-6`,class:`q-mr-xs`}),d(`span`,Ve,_(i.content),1),$(i)?(t(),f(v,{key:0,name:Q(i.id)?`expand_less`:`expand_more`,size:`14px`,color:`amber-8`,class:`q-ml-xs`},null,8,[`name`])):h(``,!0),c(S),d(`span`,He,_(W(i.timestamp)),1)],10,Be),Q(i.id)&&$(i)?(t(),m(`div`,Ue,[d(`pre`,We,_(gt(i)),1)])):h(``,!0)],64)):i.type===`error`?(t(),m(`div`,Ge,[c(v,{name:`error`,size:`14px`,color:`red-5`,class:`q-mr-xs`}),d(`span`,Ke,_(i.content),1),c(S),d(`span`,qe,_(W(i.timestamp)),1)])):(t(),m(`div`,Je,[d(`span`,Ye,_(i.content),1),c(S),d(`span`,Xe,_(W(i.timestamp)),1)]))],10,fe))),128)),d(`div`,Ze,[ht.value?(t(),f(y,{key:0,round:``,dense:``,size:`sm`,icon:`person_search`,color:`indigo-8`,class:`scroll-btn`,onClick:it},{default:s(()=>[c(x,null,{default:s(()=>[p(_(e.$t(`activityFeed.goToPrevious`)),1)]),_:1})]),_:1})):h(``,!0),B.value?(t(),f(y,{key:1,round:``,dense:``,size:`sm`,icon:`keyboard_double_arrow_down`,color:`indigo-8`,class:`scroll-btn`,onClick:at},{default:s(()=>[c(x,null,{default:s(()=>[p(_(e.$t(`activityFeed.scrollToBottom`)),1)]),_:1})]),_:1})):h(``,!0)])],512))}}),[[`__scopeId`,`data-v-bbcd11cc`]]);export{E as default};
@@ -0,0 +1 @@
1
+ .activity-feed[data-v-bbcd11cc]{flex-direction:column;gap:4px;display:flex;position:relative;overflow:hidden auto}.af-item[data-v-bbcd11cc]{word-break:break-word;overflow-wrap:break-word;flex-shrink:0;padding:6px 10px;overflow-x:hidden}.af-time[data-v-bbcd11cc]{color:#555;flex-shrink:0;font-size:10px}.af-tool-label[data-v-bbcd11cc]{font-family:Roboto Mono,monospace;font-size:11px}.af-tool-desc[data-v-bbcd11cc]{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.af-ask-option-item[data-v-bbcd11cc]{padding:2px 0}.af-tool-args[data-v-bbcd11cc]{background-color:#ffffff0a;padding:6px 8px;overflow-x:auto}.af-args-pre[data-v-bbcd11cc]{color:#888;white-space:pre-wrap;word-break:break-word;margin:0;font-family:Roboto Mono,monospace;font-size:10px}.af-file-change[data-v-bbcd11cc]{background:#ffffff08;border:1px solid #ffffff0f;border-radius:6px;padding:6px 8px}.af-file-header[data-v-bbcd11cc]{font-family:Roboto Mono,monospace;font-size:11px}.af-lang-badge[data-v-bbcd11cc]{text-align:center;background:#ffffff0f;border-radius:3px;min-width:20px;padding:1px 4px;font-family:Roboto Mono,monospace;font-size:9px;font-weight:700}.af-file-path[data-v-bbcd11cc]{max-width:70%;font-size:11px}.af-diff-stats[data-v-bbcd11cc]{white-space:nowrap;font-family:Roboto Mono,monospace;font-size:10px}.af-diff-body[data-v-bbcd11cc]{background:#0003;border-radius:4px;max-height:300px;padding:4px 0;overflow:auto}.af-diff-line[data-v-bbcd11cc]{white-space:pre;min-width:-moz-fit-content;min-width:fit-content;padding:0 8px;font-family:Roboto Mono,monospace;font-size:10px;line-height:1.5}.af-diff-sign[data-v-bbcd11cc]{-webkit-user-select:none;user-select:none;width:12px;display:inline-block}.af-diff-del[data-v-bbcd11cc]{color:#f85149;background:#f851491a}.af-diff-add[data-v-bbcd11cc]{color:#3fb950;background:#3fb9501a}.af-item--text[data-v-bbcd11cc]{background-color:#1a2a3a;border-left:3px solid #3b82f6}.af-item--user[data-v-bbcd11cc]{background-color:#1a2a1a;border-left:3px solid #22c55e}.af-item--prompt[data-v-bbcd11cc]{background-color:#1a1a2e;border-left:3px solid #6c63ff}.af-text-content[data-v-bbcd11cc]{color:#d0d0d0;word-break:break-word;line-height:1.5}.af-markdown[data-v-bbcd11cc] p{margin:0 0 8px}.af-markdown[data-v-bbcd11cc] p:last-child{margin-bottom:0}.af-markdown[data-v-bbcd11cc] h1,.af-markdown[data-v-bbcd11cc] h2,.af-markdown[data-v-bbcd11cc] h3{color:#e0e0e0;margin:12px 0 6px}.af-markdown[data-v-bbcd11cc] h1{font-size:16px}.af-markdown[data-v-bbcd11cc] h2{font-size:14px}.af-markdown[data-v-bbcd11cc] h3{font-size:13px}.af-markdown[data-v-bbcd11cc] ul,.af-markdown[data-v-bbcd11cc] ol{margin:4px 0;padding-left:20px}.af-markdown[data-v-bbcd11cc] li{margin:2px 0}.af-markdown[data-v-bbcd11cc] code{background-color:#ffffff14;border-radius:3px;padding:1px 4px;font-family:Roboto Mono,monospace;font-size:11px}.af-markdown[data-v-bbcd11cc] pre{background-color:#0000004d;border-radius:4px;margin:6px 0;padding:8px;overflow-x:auto}.af-markdown[data-v-bbcd11cc] pre code{background:0 0;padding:0}.af-markdown[data-v-bbcd11cc] strong{color:#fff}.af-markdown[data-v-bbcd11cc] a{color:#6c63ff}.af-markdown[data-v-bbcd11cc] blockquote{color:#aaa;border-left:3px solid #6c63ff;margin:6px 0;padding:4px 12px}.af-markdown[data-v-bbcd11cc] table{border-collapse:collapse;margin:6px 0;font-size:11px}.af-markdown[data-v-bbcd11cc] table th,.af-markdown[data-v-bbcd11cc] table td{border:1px solid #2a2a4a;padding:4px 8px}.af-markdown[data-v-bbcd11cc] table th{background-color:#ffffff0d}.af-item--system[data-v-bbcd11cc]{background-color:#2a2a1a;border-left:3px solid #f59e0b}.af-system-details[data-v-bbcd11cc]{background-color:#ffffff0a;padding:6px 8px;overflow-x:auto}.af-system-content[data-v-bbcd11cc]{white-space:pre-wrap}.af-item--error[data-v-bbcd11cc]{background-color:#2a1a1a;border-left:3px solid #ef4444}.af-item--raw[data-v-bbcd11cc]{white-space:pre-wrap;font-family:Roboto Mono,monospace}.scroll-buttons[data-v-bbcd11cc]{align-self:flex-end;gap:6px;margin-right:8px;display:flex;position:sticky;bottom:8px}.scroll-btn[data-v-bbcd11cc]{opacity:.7;transition:opacity .15s}.scroll-btn[data-v-bbcd11cc]:hover{opacity:1}
@@ -0,0 +1 @@
1
+ import{J as e,d as t,f as n,lt as r}from"./scroll-CWjBCoBR.js";function i(e){if(e===!1)return 0;if(e===!0||e===void 0)return 1;let t=parseInt(e,10);return isNaN(t)?0:t}var a=r({name:`close-popup`,beforeMount(r,{value:a}){let o={depth:i(a),handler(e){o.depth!==0&&setTimeout(()=>{let i=n(r);i!==void 0&&t(i,e,o.depth)})},handlerKey(t){e(t,13)===!0&&o.handler(t)}};r.__qclosepopup=o,r.addEventListener(`click`,o.handler),r.addEventListener(`keyup`,o.handlerKey)},updated(e,{value:t,oldValue:n}){t!==n&&(e.__qclosepopup.depth=i(t))},beforeUnmount(e){let t=e.__qclosepopup;e.removeEventListener(`click`,t.handler),e.removeEventListener(`keyup`,t.handlerKey),delete e.__qclosepopup}});export{a as t};
@@ -1,2 +1,2 @@
1
- import{F as e,H as t,L as n,M as r,N as i,Q as a,T as ee,U as o,_ as s,a as c,d as l,f as u,g as d,m as f,n as te,p,rt as ne,u as m,y as re,yt as h}from"./vue-i18n-nv59vAyH.js";import{L as g,T as _,bt as v,ht as ie,yt as y}from"./scroll-CWjBCoBR.js";import{i as b}from"./private.use-form-1cZLVjGN.js";import{t as ae}from"./settings-CuK-S6HH.js";import{E as oe,O as se,r as x,w as ce}from"./index-Dh7opLow.js";import{p as S,t as C}from"./_plugin-vue_export-helper-CLHv3piE.js";import{t as w}from"./QTooltip-DKxEdudV.js";import{i as le,n as T,r as E}from"./QMenu-C_LDF5uF.js";import{n as D,r as ue,t as de}from"./QPage-0Qoiu-SJ.js";import{t as fe}from"./QExpansionItem-dnmzWHId.js";var pe={class:`create-inner`},me={class:`create-title text-center text-weight-bold q-mb-lg text-grey-3`},he={class:`create-card rounded-borders`},ge={class:`card-top-bar row items-center q-px-md q-py-xs`},_e={class:`model-badge cursor-default row items-center q-gutter-xs`},ve={class:`text-indigo-3 text-weight-medium text-caption`},ye={key:0,class:`notion-url-wrap`},be={key:0,class:`notion-error text-caption q-px-md q-pb-xs text-red-5`},xe={key:1,class:`notion-valid text-caption q-px-md q-pb-xs text-green-4`},Se={class:`card-name-wrap`},Ce={class:`card-textarea-wrap`},we={class:`manual-hint q-px-md q-py-sm text-caption text-grey-6`},Te={class:`q-pa-sm manual-section-body`},Ee={class:`row items-center q-gutter-sm q-mb-sm`},De={class:`col text-caption text-grey-4`},Oe={class:`q-pa-sm manual-section-body`},ke={class:`row items-center q-gutter-sm q-mb-sm`},Ae={class:`col text-caption text-grey-4`},je={class:`card-bottom-bar row items-center wrap q-px-sm q-py-xs q-gutter-xs`},Me={class:`bottom-select-label row items-center no-wrap`},Ne={class:`bottom-select-label row items-center no-wrap`},Pe={class:`bottom-select-label row items-center no-wrap`},Fe={class:`bottom-select-label row items-center no-wrap`},Ie={class:`create-hint text-center text-body2 q-mt-md text-grey-8`},O=C(re({__name:`CreatePage`,setup(re){let C=ce(),O=le(),k=se(),A=ae(),{t:j}=te(),M=a([]),N=a(``),P=a(``),F=a(``),I=a(!1),L=a(`auto`),R=a(``),z=a(null),B=a(!1),V=a(A.global.defaultPermissionMode||`plan`),H=a([]),U=a(!1),W=a(!1),Le=m(()=>[{label:j(`model.auto`),value:`auto`,description:`Claude picks the optimal model`},{label:j(`model.opus`),value:`claude-opus-4-6`,description:`Most powerful`},{label:j(`model.sonnet`),value:`claude-sonnet-4-6`,description:`Balanced`},{label:j(`model.haiku`),value:`claude-haiku-4-5-20251001`,description:`Fastest`}]),G=m(()=>F.value.trim().startsWith(`https://www.notion.so/`)),K=a([]),q=a([]),J=a(``),Y=a(``),X=m(()=>!I.value||!G.value);function Re(){let e=J.value.trim();e&&(K.value.push(e),J.value=``)}function ze(e){K.value.splice(e,1)}function Be(){let e=Y.value.trim();e&&(q.value.push(e),Y.value=``)}function Ve(e){q.value.splice(e,1)}function He(){I.value=!I.value,I.value||(F.value=``)}async function Ue(e){if(!e.trim()){H.value=[],z.value=null;return}U.value=!0;try{let t=await fetch(`/api/git/branches?path=${encodeURIComponent(e.trim())}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();H.value=n.local??n.branches??[],H.value.length>0&&!z.value&&(z.value=H.value[0]??null)}catch{H.value=[],z.value=null}finally{U.value=!1}}function We(e){let t=A.getProjectByPath(e);t&&(t.defaultSourceBranch&&(z.value=t.defaultSourceBranch),t.defaultModel?L.value=t.defaultModel:A.global.defaultModel&&(L.value=A.global.defaultModel))}let Z=null;t(R,e=>{Z&&clearTimeout(Z),Z=setTimeout(()=>{z.value=null,Ue(e),We(e)},500)});function Ge(e,t){t(()=>{M.value=A.projectPaths.filter(t=>t.toLowerCase().includes(e.toLowerCase()))})}r(()=>{A.fetchSettings()}),i(()=>{Z&&clearTimeout(Z)});function Ke(e){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,``).trim().replace(/\s+/g,`-`).replace(/-+/g,`-`).substring(0,50)}function Q(){return N.value.trim()?N.value.trim().substring(0,80):!I.value&&P.value.trim()&&(P.value.trim().split(`
2
- `)[0]??``).substring(0,80)||`workspace`}function qe(e){let t=(e.split(`/`).pop()??``).split(`-`);return t.length>1&&/^[0-9a-f]{12,}$/i.test(t[t.length-1])&&t.pop(),t.join(`-`).toLowerCase().substring(0,50)||`task-${Date.now()}`}function Je(){return I.value&&!G.value?j(`createPage.validationNotionUrl`):!I.value&&!P.value.trim()?j(`createPage.validationDescription`):!I.value&&(!Q()||Q()===`workspace`)&&!N.value.trim()&&!P.value.trim()?j(`createPage.validationName`):R.value.trim()?z.value?null:j(`createPage.validationBranch`):j(`createPage.validationPath`)}async function $(){let e=Je();if(e){O.notify({type:`negative`,message:e,position:`top`});return}W.value=!0;try{let e=Q(),t;t=e===`workspace`?I.value&&G.value?qe(F.value.trim()):`task-${Date.now()}`:Ke(e);let n=`feature/${t}`,r={name:e,projectPath:R.value.trim(),sourceBranch:z.value,workingBranch:n,model:L.value,...I.value&&G.value?{notionUrl:F.value.trim()}:{},...X.value&&K.value.length>0?{tasks:K.value}:{},...X.value&&q.value.length>0?{acceptanceCriteria:q.value}:{},...B.value?{skipSetupScript:!0}:{},...P.value.trim()?{description:P.value.trim()}:{},permissionMode:V.value},i=await k.createWorkspace(r);oe().subscribe(i.id),k.selectWorkspace(i.id),C.push({name:`workspace`,params:{id:i.id}})}catch{O.notify({type:`negative`,message:j(`createPage.errorCreating`),position:`top`})}finally{W.value=!1}}return(t,r)=>(e(),u(de,{class:`create-page flex flex-center column`},{default:o(()=>[l(`div`,pe,[l(`div`,me,h(t.$t(`createPage.title`)),1),l(`div`,he,[l(`div`,ge,[l(`span`,_e,[s(g,{name:`auto_awesome`,size:`14px`,color:`indigo-4`}),l(`span`,ve,h(t.$t(`createPage.claudeCode`)),1)]),s(S),s(_,{flat:``,dense:``,"no-caps":``,size:`sm`,color:I.value?`green-4`:`grey-5`,class:`notion-toggle-btn text-caption rounded-borders`,onClick:He},{default:o(()=>[s(g,{name:`description`,size:`14px`,class:`q-mr-xs`}),d(` `+h(I.value?t.$t(`createPage.notionEnabled`):t.$t(`createPage.importNotion`)),1)]),_:1},8,[`color`])]),s(b,{color:`grey-9`}),s(ie,{name:`slide`},{default:o(()=>[I.value?(e(),f(`div`,ye,[s(x,{modelValue:F.value,"onUpdate:modelValue":r[0]||=e=>F.value=e,borderless:``,dense:``,placeholder:t.$t(`createPage.notionPlaceholder`),class:`notion-url-input`,"input-class":`notion-url-input-inner`},{prepend:o(()=>[s(g,{name:`link`,size:`16px`,color:G.value?`green-4`:`grey-6`},null,8,[`color`])]),_:1},8,[`modelValue`,`placeholder`]),F.value.trim()&&!G.value?(e(),f(`div`,be,h(t.$t(`createPage.notionValidation`)),1)):p(``,!0),G.value?(e(),f(`div`,xe,h(t.$t(`createPage.notionAutoExtract`)),1)):p(``,!0)])):p(``,!0)]),_:1}),I.value?(e(),u(b,{key:0,color:`grey-9`})):p(``,!0),l(`div`,Se,[s(x,{modelValue:N.value,"onUpdate:modelValue":r[1]||=e=>N.value=e,borderless:``,dense:``,placeholder:I.value&&G.value?t.$t(`createPage.workspaceName`):t.$t(`createPage.workspaceNamePlaceholder`),class:`name-input`,"input-class":`name-input-inner`},null,8,[`modelValue`,`placeholder`])]),s(b,{color:`grey-9`}),l(`div`,Ce,[s(x,{modelValue:P.value,"onUpdate:modelValue":r[2]||=e=>P.value=e,type:`textarea`,borderless:``,autogrow:``,rows:3,placeholder:I.value?t.$t(`createPage.instructions`):t.$t(`createPage.instructionsPlaceholder`),class:`create-textarea`,"input-class":`create-textarea-input`,onKeydown:[y(v($,[`ctrl`]),[`enter`]),y(v($,[`meta`]),[`enter`])]},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),s(b,{color:`grey-9`}),X.value?(e(),f(c,{key:1},[l(`div`,we,h(t.$t(`createPage.manualHint`)),1),s(fe,{dark:``,dense:``,label:t.$t(`createPage.tasks`,{count:K.value.length}),"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm`},{default:o(()=>[l(`div`,Te,[l(`div`,Ee,[s(x,{modelValue:J.value,"onUpdate:modelValue":r[3]||=e=>J.value=e,dark:``,dense:``,borderless:``,placeholder:t.$t(`createPage.addTask`),class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:y(v(Re,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`]),s(_,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!J.value.trim(),onClick:Re},{default:o(()=>[s(w,null,{default:o(()=>[d(h(t.$t(`tooltip.addTask`)),1)]),_:1})]),_:1},8,[`disable`])]),(e(!0),f(c,null,n(K.value,(n,r)=>(e(),f(`div`,{key:`task-${r}`,class:`row items-center q-py-xs manual-item`},[l(`span`,De,h(n),1),s(_,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>ze(r)},{default:o(()=>[s(w,null,{default:o(()=>[d(h(t.$t(`tooltip.removeTask`)),1)]),_:1})]),_:1},8,[`onClick`])]))),128))])]),_:1},8,[`label`]),s(fe,{dark:``,dense:``,label:t.$t(`createPage.acceptanceCriteria`,{count:q.value.length}),"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm q-mb-sm`},{default:o(()=>[l(`div`,Oe,[l(`div`,ke,[s(x,{modelValue:Y.value,"onUpdate:modelValue":r[4]||=e=>Y.value=e,dark:``,dense:``,borderless:``,placeholder:t.$t(`createPage.addCriterion`),class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:y(v(Be,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`]),s(_,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!Y.value.trim(),onClick:Be},{default:o(()=>[s(w,null,{default:o(()=>[d(h(t.$t(`tooltip.addCriterion`)),1)]),_:1})]),_:1},8,[`disable`])]),(e(!0),f(c,null,n(q.value,(n,r)=>(e(),f(`div`,{key:`crit-${r}`,class:`row items-center q-py-xs manual-item`},[l(`span`,Ae,h(n),1),s(_,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>Ve(r)},{default:o(()=>[s(w,null,{default:o(()=>[d(h(t.$t(`tooltip.removeCriterion`)),1)]),_:1})]),_:1},8,[`onClick`])]))),128))])]),_:1},8,[`label`]),s(b,{color:`grey-9`})],64)):p(``,!0),l(`div`,je,[s(D,{modelValue:L.value,"onUpdate:modelValue":r[5]||=e=>L.value=e,options:Le.value,dense:``,borderless:``,class:`bottom-select rounded-borders model-select`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`},{selected:o(()=>[l(`span`,Me,[d(h(Le.value.find(e=>e.value===L.value)?.label??L.value)+` `,1),s(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),option:o(({opt:e,itemProps:t})=>[s(T,ee(t,{class:`model-option`}),{default:o(()=>[s(E,null,{default:o(()=>[s(ue,{class:`text-white`},{default:o(()=>[d(h(e.label),1)]),_:2},1024),s(ue,{caption:``,class:`text-grey-5`},{default:o(()=>[d(h(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`,`options`]),s(D,{modelValue:V.value,"onUpdate:modelValue":r[6]||=e=>V.value=e,options:[{label:t.$t(`permissionMode.plan`),value:`plan`},{label:t.$t(`permissionMode.autoAccept`),value:`auto-accept`}],dense:``,borderless:``,class:`bottom-select rounded-borders`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``},{selected:o(()=>[l(`span`,Ne,[s(g,{name:V.value===`plan`?`visibility`:`flash_on`,size:`12px`,color:`amber-6`,class:`q-mr-xs`},null,8,[`name`]),d(` `+h(V.value===`plan`?t.$t(`permissionMode.plan`):t.$t(`permissionMode.autoAccept`))+` `,1),s(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),_:1},8,[`modelValue`,`options`]),s(_,{flat:``,round:``,dense:``,size:`sm`,icon:B.value?`play_disabled`:`play_circle`,color:B.value?`orange-4`:`grey-6`,onClick:r[7]||=e=>B.value=!B.value},{default:o(()=>[s(w,null,{default:o(()=>[d(h(t.$t(`createPage.skipSetupScript`)),1)]),_:1})]),_:1},8,[`icon`,`color`]),s(S),s(D,{modelValue:R.value,"onUpdate:modelValue":r[8]||=e=>R.value=e,options:M.value,dense:``,borderless:``,"use-input":``,"hide-selected":``,"fill-input":``,"input-debounce":`0`,"new-value-mode":`add`,class:`bottom-select rounded-borders repo-select`,"hide-dropdown-icon":``,behavior:ne(A).projectPaths.length>0?`menu`:`dialog`,onFilter:Ge,onInputValue:r[9]||=e=>{R.value=e}},{prepend:o(()=>[s(g,{name:`attach_file`,size:`12px`,color:`grey-5`})]),selected:o(()=>[l(`span`,Pe,h(R.value||t.$t(`createPage.projectPath`)),1)]),"no-option":o(()=>[s(T,null,{default:o(()=>[s(E,{class:`text-grey-6 text-caption`},{default:o(()=>[d(h(t.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`behavior`]),s(D,{modelValue:z.value,"onUpdate:modelValue":r[10]||=e=>z.value=e,options:H.value,dense:``,borderless:``,class:`bottom-select rounded-borders branch-select`,"hide-dropdown-icon":``,loading:U.value,disable:!R.value.trim()||U.value},{selected:o(()=>[l(`span`,Fe,[s(g,{name:`call_split`,size:`12px`,color:`grey-5`,class:`q-mr-xs`}),d(` `+h(z.value??t.$t(`createPage.branch`))+` `,1),s(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),"no-option":o(()=>[s(T,null,{default:o(()=>[s(E,{class:`text-grey-6 text-caption`},{default:o(()=>[d(h(R.value.trim()?t.$t(`createPage.noBranches`):t.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`loading`,`disable`]),s(_,{label:t.$t(`createPage.create`),"no-caps":``,unelevated:``,class:`create-btn text-weight-bold rounded-borders`,loading:W.value,onClick:$},null,8,[`label`,`loading`])])]),l(`div`,Ie,h(I.value?t.$t(`createPage.notionExtractHint`):t.$t(`createPage.notionImportHint`)),1)])]),_:1}))}}),[[`__scopeId`,`data-v-9b31762d`]]);export{O as default};
1
+ import{F as e,H as t,L as n,M as r,N as i,Q as a,T as ee,U as o,_ as s,a as c,d as l,f as u,g as d,m as f,n as te,p,rt as ne,u as m,y as re,yt as h}from"./vue-i18n-nv59vAyH.js";import{L as g,T as _,bt as v,ht as ie,yt as y}from"./scroll-CWjBCoBR.js";import{i as b}from"./private.use-form-1cZLVjGN.js";import{t as ae}from"./settings-CuK-S6HH.js";import{E as oe,O as se,r as x,w as ce}from"./index-DSx45TKH.js";import{n as S,p as C,t as w}from"./_plugin-vue_export-helper-fkfRoKj2.js";import{a as le,i as T,n as E,r as ue}from"./QMenu-IaCFq9U1.js";import{t as de}from"./QExpansionItem-KaA2BBuV.js";import{n as D,t as fe}from"./QPage-D5bnOxz0.js";var pe={class:`create-inner`},me={class:`create-title text-center text-weight-bold q-mb-lg text-grey-3`},he={class:`create-card rounded-borders`},ge={class:`card-top-bar row items-center q-px-md q-py-xs`},_e={class:`model-badge cursor-default row items-center q-gutter-xs`},ve={class:`text-indigo-3 text-weight-medium text-caption`},ye={key:0,class:`notion-url-wrap`},be={key:0,class:`notion-error text-caption q-px-md q-pb-xs text-red-5`},xe={key:1,class:`notion-valid text-caption q-px-md q-pb-xs text-green-4`},Se={class:`card-name-wrap`},Ce={class:`card-textarea-wrap`},we={class:`manual-hint q-px-md q-py-sm text-caption text-grey-6`},Te={class:`q-pa-sm manual-section-body`},Ee={class:`row items-center q-gutter-sm q-mb-sm`},De={class:`col text-caption text-grey-4`},Oe={class:`q-pa-sm manual-section-body`},ke={class:`row items-center q-gutter-sm q-mb-sm`},Ae={class:`col text-caption text-grey-4`},je={class:`card-bottom-bar row items-center wrap q-px-sm q-py-xs q-gutter-xs`},Me={class:`bottom-select-label row items-center no-wrap`},Ne={class:`bottom-select-label row items-center no-wrap`},Pe={class:`bottom-select-label row items-center no-wrap`},Fe={class:`bottom-select-label row items-center no-wrap`},Ie={class:`create-hint text-center text-body2 q-mt-md text-grey-8`},O=w(re({__name:`CreatePage`,setup(re){let w=ce(),O=le(),k=se(),A=ae(),{t:j}=te(),M=a([]),N=a(``),P=a(``),F=a(``),I=a(!1),L=a(`auto`),R=a(``),z=a(null),B=a(!1),V=a(A.global.defaultPermissionMode||`plan`),H=a([]),U=a(!1),W=a(!1),Le=m(()=>[{label:j(`model.auto`),value:`auto`,description:`Claude picks the optimal model`},{label:j(`model.opus`),value:`claude-opus-4-6`,description:`Most powerful`},{label:j(`model.sonnet`),value:`claude-sonnet-4-6`,description:`Balanced`},{label:j(`model.haiku`),value:`claude-haiku-4-5-20251001`,description:`Fastest`}]),G=m(()=>F.value.trim().startsWith(`https://www.notion.so/`)),K=a([]),q=a([]),J=a(``),Y=a(``),X=m(()=>!I.value||!G.value);function Re(){let e=J.value.trim();e&&(K.value.push(e),J.value=``)}function ze(e){K.value.splice(e,1)}function Be(){let e=Y.value.trim();e&&(q.value.push(e),Y.value=``)}function Ve(e){q.value.splice(e,1)}function He(){I.value=!I.value,I.value||(F.value=``)}async function Ue(e){if(!e.trim()){H.value=[],z.value=null;return}U.value=!0;try{let t=await fetch(`/api/git/branches?path=${encodeURIComponent(e.trim())}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();H.value=n.local??n.branches??[],H.value.length>0&&!z.value&&(z.value=H.value[0]??null)}catch{H.value=[],z.value=null}finally{U.value=!1}}function We(e){let t=A.getProjectByPath(e);t&&(t.defaultSourceBranch&&(z.value=t.defaultSourceBranch),t.defaultModel?L.value=t.defaultModel:A.global.defaultModel&&(L.value=A.global.defaultModel))}let Z=null;t(R,e=>{Z&&clearTimeout(Z),Z=setTimeout(()=>{z.value=null,Ue(e),We(e)},500)});function Ge(e,t){t(()=>{M.value=A.projectPaths.filter(t=>t.toLowerCase().includes(e.toLowerCase()))})}r(()=>{A.fetchSettings()}),i(()=>{Z&&clearTimeout(Z)});function Ke(e){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,``).trim().replace(/\s+/g,`-`).replace(/-+/g,`-`).substring(0,50)}function Q(){return N.value.trim()?N.value.trim().substring(0,80):!I.value&&P.value.trim()&&(P.value.trim().split(`
2
+ `)[0]??``).substring(0,80)||`workspace`}function qe(e){let t=(e.split(`/`).pop()??``).split(`-`);return t.length>1&&/^[0-9a-f]{12,}$/i.test(t[t.length-1])&&t.pop(),t.join(`-`).toLowerCase().substring(0,50)||`task-${Date.now()}`}function Je(){return I.value&&!G.value?j(`createPage.validationNotionUrl`):!I.value&&!P.value.trim()?j(`createPage.validationDescription`):!I.value&&(!Q()||Q()===`workspace`)&&!N.value.trim()&&!P.value.trim()?j(`createPage.validationName`):R.value.trim()?z.value?null:j(`createPage.validationBranch`):j(`createPage.validationPath`)}async function $(){let e=Je();if(e){O.notify({type:`negative`,message:e,position:`top`});return}W.value=!0;try{let e=Q(),t;t=e===`workspace`?I.value&&G.value?qe(F.value.trim()):`task-${Date.now()}`:Ke(e);let n=`feature/${t}`,r={name:e,projectPath:R.value.trim(),sourceBranch:z.value,workingBranch:n,model:L.value,...I.value&&G.value?{notionUrl:F.value.trim()}:{},...X.value&&K.value.length>0?{tasks:K.value}:{},...X.value&&q.value.length>0?{acceptanceCriteria:q.value}:{},...B.value?{skipSetupScript:!0}:{},...P.value.trim()?{description:P.value.trim()}:{},permissionMode:V.value},i=await k.createWorkspace(r);oe().subscribe(i.id),k.selectWorkspace(i.id),w.push({name:`workspace`,params:{id:i.id}})}catch{O.notify({type:`negative`,message:j(`createPage.errorCreating`),position:`top`})}finally{W.value=!1}}return(t,r)=>(e(),u(fe,{class:`create-page flex flex-center column`},{default:o(()=>[l(`div`,pe,[l(`div`,me,h(t.$t(`createPage.title`)),1),l(`div`,he,[l(`div`,ge,[l(`span`,_e,[s(g,{name:`auto_awesome`,size:`14px`,color:`indigo-4`}),l(`span`,ve,h(t.$t(`createPage.claudeCode`)),1)]),s(C),s(_,{flat:``,dense:``,"no-caps":``,size:`sm`,color:I.value?`green-4`:`grey-5`,class:`notion-toggle-btn text-caption rounded-borders`,onClick:He},{default:o(()=>[s(g,{name:`description`,size:`14px`,class:`q-mr-xs`}),d(` `+h(I.value?t.$t(`createPage.notionEnabled`):t.$t(`createPage.importNotion`)),1)]),_:1},8,[`color`])]),s(b,{color:`grey-9`}),s(ie,{name:`slide`},{default:o(()=>[I.value?(e(),f(`div`,ye,[s(x,{modelValue:F.value,"onUpdate:modelValue":r[0]||=e=>F.value=e,borderless:``,dense:``,placeholder:t.$t(`createPage.notionPlaceholder`),class:`notion-url-input`,"input-class":`notion-url-input-inner`},{prepend:o(()=>[s(g,{name:`link`,size:`16px`,color:G.value?`green-4`:`grey-6`},null,8,[`color`])]),_:1},8,[`modelValue`,`placeholder`]),F.value.trim()&&!G.value?(e(),f(`div`,be,h(t.$t(`createPage.notionValidation`)),1)):p(``,!0),G.value?(e(),f(`div`,xe,h(t.$t(`createPage.notionAutoExtract`)),1)):p(``,!0)])):p(``,!0)]),_:1}),I.value?(e(),u(b,{key:0,color:`grey-9`})):p(``,!0),l(`div`,Se,[s(x,{modelValue:N.value,"onUpdate:modelValue":r[1]||=e=>N.value=e,borderless:``,dense:``,placeholder:I.value&&G.value?t.$t(`createPage.workspaceName`):t.$t(`createPage.workspaceNamePlaceholder`),class:`name-input`,"input-class":`name-input-inner`},null,8,[`modelValue`,`placeholder`])]),s(b,{color:`grey-9`}),l(`div`,Ce,[s(x,{modelValue:P.value,"onUpdate:modelValue":r[2]||=e=>P.value=e,type:`textarea`,borderless:``,autogrow:``,rows:3,placeholder:I.value?t.$t(`createPage.instructions`):t.$t(`createPage.instructionsPlaceholder`),class:`create-textarea`,"input-class":`create-textarea-input`,onKeydown:[y(v($,[`ctrl`]),[`enter`]),y(v($,[`meta`]),[`enter`])]},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),s(b,{color:`grey-9`}),X.value?(e(),f(c,{key:1},[l(`div`,we,h(t.$t(`createPage.manualHint`)),1),s(de,{dark:``,dense:``,label:t.$t(`createPage.tasks`,{count:K.value.length}),"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm`},{default:o(()=>[l(`div`,Te,[l(`div`,Ee,[s(x,{modelValue:J.value,"onUpdate:modelValue":r[3]||=e=>J.value=e,dark:``,dense:``,borderless:``,placeholder:t.$t(`createPage.addTask`),class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:y(v(Re,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`]),s(_,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!J.value.trim(),onClick:Re},{default:o(()=>[s(S,null,{default:o(()=>[d(h(t.$t(`tooltip.addTask`)),1)]),_:1})]),_:1},8,[`disable`])]),(e(!0),f(c,null,n(K.value,(n,r)=>(e(),f(`div`,{key:`task-${r}`,class:`row items-center q-py-xs manual-item`},[l(`span`,De,h(n),1),s(_,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>ze(r)},{default:o(()=>[s(S,null,{default:o(()=>[d(h(t.$t(`tooltip.removeTask`)),1)]),_:1})]),_:1},8,[`onClick`])]))),128))])]),_:1},8,[`label`]),s(de,{dark:``,dense:``,label:t.$t(`createPage.acceptanceCriteria`,{count:q.value.length}),"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm q-mb-sm`},{default:o(()=>[l(`div`,Oe,[l(`div`,ke,[s(x,{modelValue:Y.value,"onUpdate:modelValue":r[4]||=e=>Y.value=e,dark:``,dense:``,borderless:``,placeholder:t.$t(`createPage.addCriterion`),class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:y(v(Be,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`]),s(_,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!Y.value.trim(),onClick:Be},{default:o(()=>[s(S,null,{default:o(()=>[d(h(t.$t(`tooltip.addCriterion`)),1)]),_:1})]),_:1},8,[`disable`])]),(e(!0),f(c,null,n(q.value,(n,r)=>(e(),f(`div`,{key:`crit-${r}`,class:`row items-center q-py-xs manual-item`},[l(`span`,Ae,h(n),1),s(_,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>Ve(r)},{default:o(()=>[s(S,null,{default:o(()=>[d(h(t.$t(`tooltip.removeCriterion`)),1)]),_:1})]),_:1},8,[`onClick`])]))),128))])]),_:1},8,[`label`]),s(b,{color:`grey-9`})],64)):p(``,!0),l(`div`,je,[s(D,{modelValue:L.value,"onUpdate:modelValue":r[5]||=e=>L.value=e,options:Le.value,dense:``,borderless:``,class:`bottom-select rounded-borders model-select`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`},{selected:o(()=>[l(`span`,Me,[d(h(Le.value.find(e=>e.value===L.value)?.label??L.value)+` `,1),s(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),option:o(({opt:e,itemProps:t})=>[s(E,ee(t,{class:`model-option`}),{default:o(()=>[s(T,null,{default:o(()=>[s(ue,{class:`text-white`},{default:o(()=>[d(h(e.label),1)]),_:2},1024),s(ue,{caption:``,class:`text-grey-5`},{default:o(()=>[d(h(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`,`options`]),s(D,{modelValue:V.value,"onUpdate:modelValue":r[6]||=e=>V.value=e,options:[{label:t.$t(`permissionMode.plan`),value:`plan`},{label:t.$t(`permissionMode.autoAccept`),value:`auto-accept`}],dense:``,borderless:``,class:`bottom-select rounded-borders`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``},{selected:o(()=>[l(`span`,Ne,[s(g,{name:V.value===`plan`?`visibility`:`flash_on`,size:`12px`,color:`amber-6`,class:`q-mr-xs`},null,8,[`name`]),d(` `+h(V.value===`plan`?t.$t(`permissionMode.plan`):t.$t(`permissionMode.autoAccept`))+` `,1),s(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),_:1},8,[`modelValue`,`options`]),s(_,{flat:``,round:``,dense:``,size:`sm`,icon:B.value?`play_disabled`:`play_circle`,color:B.value?`orange-4`:`grey-6`,onClick:r[7]||=e=>B.value=!B.value},{default:o(()=>[s(S,null,{default:o(()=>[d(h(t.$t(`createPage.skipSetupScript`)),1)]),_:1})]),_:1},8,[`icon`,`color`]),s(C),s(D,{modelValue:R.value,"onUpdate:modelValue":r[8]||=e=>R.value=e,options:M.value,dense:``,borderless:``,"use-input":``,"hide-selected":``,"fill-input":``,"input-debounce":`0`,"new-value-mode":`add`,class:`bottom-select rounded-borders repo-select`,"hide-dropdown-icon":``,behavior:ne(A).projectPaths.length>0?`menu`:`dialog`,onFilter:Ge,onInputValue:r[9]||=e=>{R.value=e}},{prepend:o(()=>[s(g,{name:`attach_file`,size:`12px`,color:`grey-5`})]),selected:o(()=>[l(`span`,Pe,h(R.value||t.$t(`createPage.projectPath`)),1)]),"no-option":o(()=>[s(E,null,{default:o(()=>[s(T,{class:`text-grey-6 text-caption`},{default:o(()=>[d(h(t.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`behavior`]),s(D,{modelValue:z.value,"onUpdate:modelValue":r[10]||=e=>z.value=e,options:H.value,dense:``,borderless:``,class:`bottom-select rounded-borders branch-select`,"hide-dropdown-icon":``,loading:U.value,disable:!R.value.trim()||U.value},{selected:o(()=>[l(`span`,Fe,[s(g,{name:`call_split`,size:`12px`,color:`grey-5`,class:`q-mr-xs`}),d(` `+h(z.value??t.$t(`createPage.branch`))+` `,1),s(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),"no-option":o(()=>[s(E,null,{default:o(()=>[s(T,{class:`text-grey-6 text-caption`},{default:o(()=>[d(h(R.value.trim()?t.$t(`createPage.noBranches`):t.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`loading`,`disable`]),s(_,{label:t.$t(`createPage.create`),"no-caps":``,unelevated:``,class:`create-btn text-weight-bold rounded-borders`,loading:W.value,onClick:$},null,8,[`label`,`loading`])])]),l(`div`,Ie,h(I.value?t.$t(`createPage.notionExtractHint`):t.$t(`createPage.notionImportHint`)),1)])]),_:1}))}}),[[`__scopeId`,`data-v-9b31762d`]]);export{O as default};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/editor.main-BY_NEoTM.js","assets/index-DSx45TKH.js","assets/vue-i18n-nv59vAyH.js","assets/scroll-CWjBCoBR.js","assets/settings-CuK-S6HH.js","assets/use-checkbox-DwkIkUAc.js","assets/private.use-form-1cZLVjGN.js","assets/i18n-DAQcMG9d.js","assets/index-eX_lKHSg.css","assets/editor.api-6HHa4uDw.js","assets/editor-COGk2gAX.css","assets/monaco.contribution-CDhgtrdW.js","assets/editor-CS3NEPi9.css"])))=>i.map(i=>d[i]);
2
+ import{D as e,F as t,H as n,L as r,M as i,N as a,Q as o,S as s,U as c,W as l,_ as u,_t as d,a as f,b as p,d as m,f as h,g,j as ee,k as _,m as v,n as y,p as b,u as x,vt as S,y as C,yt as w}from"./vue-i18n-nv59vAyH.js";import{E as T,L as E,T as D,V as O,c as k,ct as A,s as j,z as M}from"./scroll-CWjBCoBR.js";import{a as N,i as P,o as F,r as I,s as L,t as R}from"./private.use-form-1cZLVjGN.js";import{S as z}from"./index-DSx45TKH.js";import{t as B}from"./QSpinnerDots-FJCnAvfw.js";import{n as V,p as te,t as H}from"./_plugin-vue_export-helper-fkfRoKj2.js";import{t as U}from"./QBadge-xNMZEqT-.js";import{r as W}from"./touch-Bojc73iM.js";import{n as G,t as K}from"./TouchPan-DuISf80E.js";import{t as q}from"./format-Ex4UmWdz.js";var J=A({name:`QBtnGroup`,props:{unelevated:Boolean,outline:Boolean,flat:Boolean,rounded:Boolean,square:Boolean,push:Boolean,stretch:Boolean,glossy:Boolean,spread:Boolean},setup(e,{slots:t}){let n=x(()=>{let t=[`unelevated`,`outline`,`flat`,`rounded`,`square`,`push`,`stretch`,`glossy`].filter(t=>e[t]===!0).map(e=>`q-btn-group--${e}`).join(` `);return`q-btn-group row no-wrap${t.length===0?``:` `+t}`+(e.spread===!0?` q-btn-group--spread`:` inline`)});return()=>s(`div`,{class:n.value},O(t.default))}}),ne=A({name:`QBtnToggle`,props:{...I,modelValue:{required:!0},options:{type:Array,required:!0,validator:e=>e.every(e=>(`label`in e||`icon`in e||`slot`in e)&&`value`in e)},color:String,textColor:String,toggleColor:{type:String,default:`primary`},toggleTextColor:String,outline:Boolean,flat:Boolean,unelevated:Boolean,rounded:Boolean,push:Boolean,glossy:Boolean,size:String,padding:String,noCaps:Boolean,noWrap:Boolean,dense:Boolean,readonly:Boolean,disable:Boolean,stack:Boolean,stretch:Boolean,spread:Boolean,clearable:Boolean,ripple:{type:[Boolean,Object],default:!0}},emits:[`update:modelValue`,`clear`,`click`],setup(e,{slots:t,emit:n}){let r=x(()=>e.options.find(t=>t.value===e.modelValue)!==void 0),i=R(x(()=>({type:`hidden`,name:e.name,value:e.modelValue}))),a=x(()=>T(e)),o=x(()=>({rounded:e.rounded,dense:e.dense,...a.value})),c=x(()=>e.options.map((t,n)=>{let{attrs:r,value:i,slot:a,...s}=t;return{slot:a,props:{key:n,"aria-pressed":i===e.modelValue?`true`:`false`,...r,...s,...o.value,disable:e.disable===!0||s.disable===!0,color:i===e.modelValue?u(s,`toggleColor`):u(s,`color`),textColor:i===e.modelValue?u(s,`toggleTextColor`):u(s,`textColor`),noCaps:u(s,`noCaps`)===!0,noWrap:u(s,`noWrap`)===!0,size:u(s,`size`),padding:u(s,`padding`),ripple:u(s,`ripple`),stack:u(s,`stack`)===!0,stretch:u(s,`stretch`)===!0,onClick(e){l(i,t,e)}}}}));function l(t,r,i){e.readonly!==!0&&(e.modelValue===t?e.clearable===!0&&(n(`update:modelValue`,null,null),n(`clear`)):n(`update:modelValue`,t,r),n(`click`,i))}function u(t,n){return t[n]===void 0?e[n]:t[n]}function d(){let n=c.value.map(e=>s(D,e.props,e.slot===void 0?void 0:t[e.slot]));return e.name!==void 0&&e.disable!==!0&&r.value===!0&&i(n,`push`),M(t.default,n)}return()=>s(J,{class:`q-btn-toggle`,...a.value,rounded:e.rounded,stretch:e.stretch,glossy:e.glossy,spread:e.spread},d)}}),Y=A({props:[`store`,`barStyle`,`verticalBarStyle`,`horizontalBarStyle`],setup(e){return()=>[s(`div`,{class:e.store.scroll.vertical.barClass.value,style:[e.barStyle,e.verticalBarStyle],"aria-hidden":`true`,onMousedown:e.store.onVerticalMousedown}),s(`div`,{class:e.store.scroll.horizontal.barClass.value,style:[e.barStyle,e.horizontalBarStyle],"aria-hidden":`true`,onMousedown:e.store.onHorizontalMousedown}),l(s(`div`,{ref:e.store.scroll.vertical.ref,class:e.store.scroll.vertical.thumbClass.value,style:e.store.scroll.vertical.style.value,"aria-hidden":`true`}),e.store.thumbVertDir),l(s(`div`,{ref:e.store.scroll.horizontal.ref,class:e.store.scroll.horizontal.thumbClass.value,style:e.store.scroll.horizontal.style.value,"aria-hidden":`true`}),e.store.thumbHorizDir)]}}),X=[`vertical`,`horizontal`],Z={vertical:{offset:`offsetY`,scroll:`scrollTop`,dir:`down`,dist:`y`},horizontal:{offset:`offsetX`,scroll:`scrollLeft`,dir:`right`,dist:`x`}},Q={prevent:!0,mouse:!0,mouseAllDir:!0},$=e=>e>=250?50:Math.ceil(e/5),re=A({name:`QScrollArea`,props:{...F,thumbStyle:Object,verticalThumbStyle:Object,horizontalThumbStyle:Object,barStyle:[Array,String,Object],verticalBarStyle:[Array,String,Object],horizontalBarStyle:[Array,String,Object],verticalOffset:{type:Array,default:[0,0]},horizontalOffset:{type:Array,default:[0,0]},contentStyle:[Array,String,Object],contentActiveStyle:[Array,String,Object],delay:{type:[String,Number],default:1e3},visible:{type:Boolean,default:null},tabindex:[String,Number],onScroll:Function},setup(t,{slots:r,emit:i}){let a=o(!1),c=o(!1),l=o(!1),u={vertical:o(0),horizontal:o(0)},d={vertical:{ref:o(null),position:o(0),size:o(0)},horizontal:{ref:o(null),position:o(0),size:o(0)}},{proxy:f}=p(),m=N(t,f.$q),h=null,g,v=o(null),y=x(()=>`q-scrollarea`+(m.value===!0?` q-scrollarea--dark`:``));Object.assign(u,{verticalInner:x(()=>u.vertical.value-t.verticalOffset[0]-t.verticalOffset[1]),horizontalInner:x(()=>u.horizontal.value-t.horizontalOffset[0]-t.horizontalOffset[1])}),d.vertical.percentage=x(()=>{let e=d.vertical.size.value-u.vertical.value;if(e<=0)return 0;let t=q(d.vertical.position.value/e,0,1);return Math.round(t*1e4)/1e4}),d.vertical.thumbHidden=x(()=>(t.visible===null?l.value:t.visible)!==!0&&a.value===!1&&c.value===!1||d.vertical.size.value<=u.vertical.value+1),d.vertical.thumbStart=x(()=>t.verticalOffset[0]+d.vertical.percentage.value*(u.verticalInner.value-d.vertical.thumbSize.value)),d.vertical.thumbSize=x(()=>Math.round(q(u.verticalInner.value*u.verticalInner.value/d.vertical.size.value,$(u.verticalInner.value),u.verticalInner.value))),d.vertical.style=x(()=>({...t.thumbStyle,...t.verticalThumbStyle,top:`${d.vertical.thumbStart.value}px`,height:`${d.vertical.thumbSize.value}px`,right:`${t.horizontalOffset[1]}px`})),d.vertical.thumbClass=x(()=>`q-scrollarea__thumb q-scrollarea__thumb--v absolute-right`+(d.vertical.thumbHidden.value===!0?` q-scrollarea__thumb--invisible`:``)),d.vertical.barClass=x(()=>`q-scrollarea__bar q-scrollarea__bar--v absolute-right`+(d.vertical.thumbHidden.value===!0?` q-scrollarea__bar--invisible`:``)),d.horizontal.percentage=x(()=>{let e=d.horizontal.size.value-u.horizontal.value;if(e<=0)return 0;let t=q(Math.abs(d.horizontal.position.value)/e,0,1);return Math.round(t*1e4)/1e4}),d.horizontal.thumbHidden=x(()=>(t.visible===null?l.value:t.visible)!==!0&&a.value===!1&&c.value===!1||d.horizontal.size.value<=u.horizontal.value+1),d.horizontal.thumbStart=x(()=>t.horizontalOffset[0]+d.horizontal.percentage.value*(u.horizontalInner.value-d.horizontal.thumbSize.value)),d.horizontal.thumbSize=x(()=>Math.round(q(u.horizontalInner.value*u.horizontalInner.value/d.horizontal.size.value,$(u.horizontalInner.value),u.horizontalInner.value))),d.horizontal.style=x(()=>({...t.thumbStyle,...t.horizontalThumbStyle,[f.$q.lang.rtl===!0?`right`:`left`]:`${d.horizontal.thumbStart.value}px`,width:`${d.horizontal.thumbSize.value}px`,bottom:`${t.verticalOffset[1]}px`})),d.horizontal.thumbClass=x(()=>`q-scrollarea__thumb q-scrollarea__thumb--h absolute-bottom`+(d.horizontal.thumbHidden.value===!0?` q-scrollarea__thumb--invisible`:``)),d.horizontal.barClass=x(()=>`q-scrollarea__bar q-scrollarea__bar--h absolute-bottom`+(d.horizontal.thumbHidden.value===!0?` q-scrollarea__bar--invisible`:``));let b=x(()=>d.vertical.thumbHidden.value===!0&&d.horizontal.thumbHidden.value===!0?t.contentStyle:t.contentActiveStyle);function S(){let e={};return X.forEach(t=>{let n=d[t];Object.assign(e,{[t+`Position`]:n.position.value,[t+`Percentage`]:n.percentage.value,[t+`Size`]:n.size.value,[t+`ContainerSize`]:u[t].value,[t+`ContainerInnerSize`]:u[t+`Inner`].value})}),e}let C=L(()=>{let e=S();e.ref=f,i(`scroll`,e)},0);function w(e,t,n){if(X.includes(e)===!1){console.error(`[QScrollArea]: wrong first param of setScrollPosition (vertical/horizontal)`);return}(e===`vertical`?k:j)(v.value,t,n)}function T({height:e,width:t}){let n=!1;u.vertical.value!==e&&(u.vertical.value=e,n=!0),u.horizontal.value!==t&&(u.horizontal.value=t,n=!0),n===!0&&P()}function E({position:e}){let t=!1;d.vertical.position.value!==e.top&&(d.vertical.position.value=e.top,t=!0),d.horizontal.position.value!==e.left&&(d.horizontal.position.value=e.left,t=!0),t===!0&&P()}function D({height:e,width:t}){d.horizontal.size.value!==t&&(d.horizontal.size.value=t,P()),d.vertical.size.value!==e&&(d.vertical.size.value=e,P())}function O(e,t){let n=d[t];if(e.isFirst===!0){if(n.thumbHidden.value===!0)return;g=n.position.value,c.value=!0}else if(c.value!==!0)return;e.isFinal===!0&&(c.value=!1);let r=Z[t],i=(n.size.value-u[t].value)/(u[t+`Inner`].value-n.thumbSize.value),a=e.distance[r.dist];F(g+(e.direction===r.dir?1:-1)*a*i,t)}function A(e,n){let r=d[n];if(r.thumbHidden.value!==!0){let i=n===`vertical`?t.verticalOffset[0]:t.horizontalOffset[0],a=e[Z[n].offset]-i,o=r.thumbStart.value-i;(a<o||a>o+r.thumbSize.value)&&F(q((a-r.thumbSize.value/2)/(u[n+`Inner`].value-r.thumbSize.value),0,1)*Math.max(0,r.size.value-u[n].value),n),r.ref.value!==null&&r.ref.value.dispatchEvent(new MouseEvent(e.type,e))}}function P(){a.value=!0,h!==null&&clearTimeout(h),h=setTimeout(()=>{h=null,a.value=!1},t.delay),t.onScroll!==void 0&&C()}function F(e,t){v.value[Z[t].scroll]=e}let I=null;function R(){I!==null&&clearTimeout(I),I=setTimeout(()=>{I=null,l.value=!0},f.$q.platform.is.ios?50:0)}function z(){I!==null&&(clearTimeout(I),I=null),l.value=!1}let B=null;n(()=>f.$q.lang.rtl,e=>{v.value!==null&&j(v.value,Math.abs(d.horizontal.position.value)*(e===!0?-1:1))}),ee(()=>{B={top:d.vertical.position.value,left:d.horizontal.position.value}}),e(()=>{if(B===null)return;let e=v.value;e!==null&&(j(e,B.left),k(e,B.top))}),_(C.cancel),Object.assign(f,{getScrollTarget:()=>v.value,getScroll:S,getScrollPosition:()=>({top:d.vertical.position.value,left:d.horizontal.position.value}),getScrollPercentage:()=>({top:d.vertical.percentage.value,left:d.horizontal.percentage.value}),setScrollPosition:w,setScrollPercentage(e,t,n){w(e,t*(d[e].size.value-u[e].value)*(e===`horizontal`&&f.$q.lang.rtl===!0?-1:1),n)}});let V={scroll:d,thumbVertDir:[[K,e=>{O(e,`vertical`)},void 0,{vertical:!0,...Q}]],thumbHorizDir:[[K,e=>{O(e,`horizontal`)},void 0,{horizontal:!0,...Q}]],onVerticalMousedown(e){A(e,`vertical`)},onHorizontalMousedown(e){A(e,`horizontal`)}};return()=>s(`div`,{class:y.value,onMouseenter:R,onMouseleave:z},[s(`div`,{ref:v,class:`q-scrollarea__container scroll relative-position fit hide-scrollbar`,tabindex:t.tabindex===void 0?void 0:t.tabindex},[s(`div`,{class:`q-scrollarea__content absolute`,style:b.value},M(r.default,[s(W,{debounce:0,onResize:D})])),s(G,{axis:`both`,onScroll:E})]),s(W,{debounce:0,onResize:T}),s(Y,{store:V,barStyle:t.barStyle,verticalBarStyle:t.verticalBarStyle,horizontalBarStyle:t.horizontalBarStyle})])}}),ie={class:`diff-viewer column full-height`},ae={class:`diff-header row items-center q-px-md q-py-sm no-wrap`},oe={class:`text-body1 text-weight-medium text-grey-3`},se={key:0,class:`text-caption text-grey-6 q-ml-md`,style:{"font-size":`11px`}},ce={class:`text-grey-7`},le={class:`text-green-4`},ue={key:1,class:`text-caption text-grey-5 q-ml-md ellipsis`,style:{"font-size":`11px`,"font-family":`'Roboto Mono', monospace`,"max-width":`400px`}},de={class:`row col no-wrap`,style:{"min-height":`0`}},fe={key:1,class:`text-caption text-grey-8 q-pa-sm`},pe=[`onClick`],me={class:`text-caption text-grey-4`,style:{"font-size":`11px`}},he=[`onClick`],ge={class:`text-caption text-grey-3 ellipsis`,style:{"font-size":`11px`}},_e={class:`col column`,style:{"min-width":`0`,position:`relative`}},ve={key:0,class:`col column items-center justify-center`},ye={key:1,class:`col column items-center justify-center text-grey-8 text-caption`},be=H(C({__name:`DiffViewer`,props:{workspaceId:{}},emits:[`close`,`sendToChat`],setup(e,{emit:s}){let l=e,p=s,{t:ee}=y(),_=o([]),C=o(``),T=o(``),O=o(null),k=o(!1),A=o(!1),j=o(null),M=o(`side`),N=o(new Set),F=null,I=null,L=[];function R(e){let t=0;for(let n of e)n.isDir?t+=R(n.children):t++;return t}let H=x(()=>{let e=[];for(let t of _.value){let n=t.path.split(`/`),r=e;for(let e=0;e<n.length;e++){let i=n[e],a=e===n.length-1,o=n.slice(0,e+1).join(`/`),s=r.find(e=>e.name===i&&e.isDir===!a);s||(s={name:i,path:a?t.path:o,isDir:!a,status:a?t.status:void 0,children:[]},r.push(s)),r=s.children}}function t(e){e.sort((e,t)=>e.isDir===t.isDir?e.name.localeCompare(t.name):e.isDir?-1:1);for(let n of e)n.children.length>0&&t(n.children)}return t(e),e}),W=x(()=>{let e=[];function t(n,r){for(let i of n)i.isDir?(e.push({name:i.name,path:i.path,isDir:!0,depth:r,fileCount:R(i.children)}),N.value.has(i.path)||t(i.children,r+1)):e.push({name:i.name,path:i.path,isDir:!1,depth:r,status:i.status})}return t(H.value,0),e});function G(e){N.value.has(e)?N.value.delete(e):N.value.add(e)}async function K(){k.value=!0;try{let e=await fetch(`/api/workspaces/${l.workspaceId}/diff`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();_.value=t.files,C.value=t.sourceBranch??``,T.value=t.workingBranch??``}catch(e){console.error(`Failed to load diff files:`,e)}finally{k.value=!1}}async function q(e){if(j.value){A.value=!0;try{F||(self.MonacoEnvironment={getWorker(e,t){return t===`json`?new Worker(new URL(`/assets/json.worker-C9p7xCYk.js`,``+import.meta.url),{type:`module`}):t===`css`||t===`scss`||t===`less`?new Worker(new URL(`/assets/css.worker-D1piIYC4.js`,``+import.meta.url),{type:`module`}):t===`html`||t===`handlebars`||t===`razor`?new Worker(new URL(`/assets/html.worker-C4q4XMPn.js`,``+import.meta.url),{type:`module`}):t===`typescript`||t===`javascript`?new Worker(new URL(`/assets/ts.worker-Cj3zTgVE.js`,``+import.meta.url),{type:`module`}):new Worker(new URL(`/assets/editor.worker-CJ9iTmkr.js`,``+import.meta.url),{type:`module`})}},F=await z(()=>import(`./editor.main-BY_NEoTM.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])),F.editor.defineTheme(`kobo-dark`,{base:`vs-dark`,inherit:!0,rules:[],colors:{"editor.background":`#1a1a2e`,"diffEditor.insertedTextBackground":`#22c55e20`,"diffEditor.removedTextBackground":`#ef444420`}}));let t=await fetch(`/api/workspaces/${l.workspaceId}/diff-file?path=${encodeURIComponent(e)}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json(),r={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,vue:`html`,html:`html`,css:`css`,scss:`scss`,json:`json`,md:`markdown`,yaml:`yaml`,yml:`yaml`,sh:`shell`,sql:`sql`,py:`python`,rs:`rust`,go:`go`}[e.split(`.`).pop()??``]??`plaintext`;if(I){for(let e of L)e.dispose();L=[];let e=I.getModel();I.dispose(),I=null,e?.original?.dispose(),e?.modified?.dispose()}let i=F.editor.createModel(n.original??``,r),a=F.editor.createModel(n.modified??``,r);I=F.editor.createDiffEditor(j.value,{theme:`kobo-dark`,readOnly:!0,renderSideBySide:M.value===`side`,automaticLayout:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,lineHeight:18}),I.setModel({original:i,modified:a}),Y()}catch(e){console.error(`Failed to load file diff:`,e)}finally{A.value=!1}}}let J=o(!1);function Y(){if(!I)return;for(let e of L)e.dispose();L=[];let e=I.getModifiedEditor(),t=I.getOriginalEditor();for(let n of[e,t]){let e=n.onDidChangeCursorSelection(()=>{let e=n.getSelection();J.value=!!(e&&!e.isEmpty())});L.push(e)}}function X(){if(!(!I||!O.value))for(let e of[I.getModifiedEditor(),I.getOriginalEditor()]){let t=e.getSelection();if(t&&!t.isEmpty()){let n=e.getModel();if(!n)continue;let r=n.getValueInRange(t),i=e===I.getModifiedEditor()?`modified`:`original`;p(`sendToChat`,`\`\`\`\n// ${O.value} (${i}) L${t.startLineNumber}-L${t.endLineNumber}\n${r}\n\`\`\``);return}}}n(O,e=>{e&&q(e)}),n(M,()=>{I&&I.updateOptions({renderSideBySide:M.value===`side`})});function Z(e){switch(e){case`added`:return`add_circle`;case`deleted`:return`remove_circle`;case`renamed`:return`drive_file_rename_outline`;default:return`edit`}}function Q(e){switch(e){case`added`:return`#4ade80`;case`deleted`:return`#f87171`;case`renamed`:return`#60a5fa`;default:return`#f59e0b`}}return i(K),a(()=>{for(let e of L)e.dispose();if(L=[],I){let e=I.getModel();I.dispose(),I=null,e?.original?.dispose(),e?.modified?.dispose()}}),(e,n)=>(t(),v(`div`,ie,[m(`div`,ae,[u(E,{name:`difference`,size:`18px`,color:`indigo-4`,class:`q-mr-xs`}),m(`span`,oe,w(e.$t(`diff.title`)),1),u(U,{label:`${_.value.length}`,color:`grey-8`,"text-color":`grey-4`,class:`q-ml-sm`,style:{"font-size":`10px`}},null,8,[`label`]),C.value?(t(),v(`span`,se,[m(`span`,ce,w(C.value),1),u(E,{name:`arrow_forward`,size:`11px`,color:`grey-8`,class:`q-mx-xs`}),m(`span`,le,w(T.value),1)])):b(``,!0),O.value?(t(),v(`span`,ue,w(O.value),1)):b(``,!0),u(te),u(ne,{modelValue:M.value,"onUpdate:modelValue":n[0]||=e=>M.value=e,dense:``,"no-caps":``,size:`sm`,"toggle-color":`indigo-8`,color:`grey-9`,"text-color":`grey-5`,options:[{label:e.$t(`diff.side`),value:`side`},{label:e.$t(`diff.inline`),value:`inline`}],class:`q-mr-sm`},null,8,[`modelValue`,`options`]),u(D,{flat:``,round:``,dense:``,icon:`close`,color:`grey-5`,size:`sm`,onClick:n[1]||=e=>p(`close`)},{default:c(()=>[u(V,null,{default:c(()=>[g(w(e.$t(`tooltip.closeDiffViewer`)),1)]),_:1})]),_:1})]),u(P,{dark:``}),m(`div`,de,[u(re,{class:`diff-file-list q-pa-xs`,style:{width:`280px`,"min-width":`200px`,height:`100%`,"border-right":`1px solid #2a2a4a`}},{default:c(()=>[k.value?(t(),h(B,{key:0,size:`24px`,color:`grey-6`,class:`q-ma-md`})):_.value.length===0?(t(),v(`div`,fe,w(e.$t(`diff.noChanges`)),1)):(t(!0),v(f,{key:2},r(W.value,e=>(t(),v(f,{key:e.path},[e.isDir?(t(),v(`div`,{key:0,class:`diff-dir-item cursor-pointer`,style:S({paddingLeft:`${e.depth*12+4}px`}),onClick:t=>G(e.path)},[u(E,{name:N.value.has(e.path)?`chevron_right`:`expand_more`,size:`14px`,color:`grey-6`},null,8,[`name`]),u(E,{name:`folder`,size:`13px`,color:`amber-7`,class:`q-mx-xs`}),m(`span`,me,w(e.name),1),u(U,{label:e.fileCount,color:`grey-9`,"text-color":`grey-5`,class:`q-ml-xs`,style:{"font-size":`9px`}},null,8,[`label`])],12,pe)):(t(),v(`div`,{key:1,class:d([`diff-file-item cursor-pointer`,{"diff-file-item--active":O.value===e.path}]),style:S({paddingLeft:`${e.depth*12+20}px`}),onClick:t=>O.value=e.path},[u(E,{name:Z(e.status),size:`11px`,style:S({color:Q(e.status)}),class:`q-mr-xs`},null,8,[`name`,`style`]),m(`span`,ge,w(e.name),1)],14,he))],64))),128))]),_:1}),m(`div`,_e,[A.value?(t(),v(`div`,ve,[u(B,{size:`32px`,color:`indigo-4`})])):O.value?b(``,!0):(t(),v(`div`,ye,w(e.$t(`diff.selectFile`)),1)),m(`div`,{ref_key:`editorContainer`,ref:j,class:`col`,style:{"min-height":`0`}},null,512),J.value?(t(),h(D,{key:2,"no-caps":``,dense:``,size:`sm`,color:`primary`,icon:`chat`,label:e.$t(`diff.addToChat`),class:`send-to-chat-btn`,onClick:X},null,8,[`label`])):b(``,!0)])])]))}}),[[`__scopeId`,`data-v-4ed3860e`]]);export{be as default};
@@ -0,0 +1 @@
1
+ .acceptance-item[data-v-63b144ad]{padding:2px 0}.acceptance-item[data-v-63b144ad]:hover{background-color:#ffffff08}.acceptance-item:hover .criterion-delete-btn[data-v-63b144ad]{opacity:1}.criterion-delete-btn[data-v-63b144ad]{opacity:0;transition:opacity .15s}.acceptance-title[data-v-63b144ad]{word-break:break-word;cursor:text;line-height:1.4}.text-strike[data-v-63b144ad]{opacity:.7;text-decoration:line-through}.criterion-input[data-v-63b144ad] .q-field__control{height:22px;min-height:22px;padding:0}.criterion-input[data-v-63b144ad] input{color:#e0e0e0;font-size:12px}.criterion-input[data-v-63b144ad] input::placeholder{color:#555}.criterion-add-row[data-v-63b144ad],.todo-item[data-v-4eddf754]{padding:2px 0}.todo-title[data-v-4eddf754]{word-break:break-word;line-height:1.4}.text-strike[data-v-4eddf754]{opacity:.7;text-decoration:line-through}.log-content[data-v-9e03d2b2]{max-height:60vh;overflow-y:auto}.log-text[data-v-9e03d2b2]{color:#ccc;white-space:pre-wrap;word-break:break-all;background:#0d0d1a;margin:0;font-family:JetBrains Mono,Fira Code,monospace;font-size:11px}.dd-panel[data-v-20c5f4bd]{min-height:48px}.git-btn[data-v-0e9ea4fb]{padding:2px 10px;font-size:11px}.notion-link[data-v-99e38dbd]{text-decoration:none;display:inline-flex}.notion-link[data-v-99e38dbd]:hover{text-decoration:underline}.task-item[data-v-99e38dbd]{padding:2px 0}.task-item[data-v-99e38dbd]:hover{background-color:#ffffff08}.task-item:hover .task-delete-btn[data-v-99e38dbd]{opacity:1}.task-delete-btn[data-v-99e38dbd]{opacity:0;transition:opacity .15s}.task-title[data-v-99e38dbd]{word-break:break-word;cursor:text;line-height:1.4}.text-strike[data-v-99e38dbd]{opacity:.7;text-decoration:line-through}.task-input[data-v-99e38dbd] .q-field__control{height:22px;min-height:22px;padding:0}.task-input[data-v-99e38dbd] input{color:#e0e0e0;font-size:12px}.task-input[data-v-99e38dbd] input::placeholder{color:#555}.task-add-row[data-v-99e38dbd]{padding:2px 0}.plan-content[data-v-442c2eef]{color:#d0d0d0;overflow-wrap:break-word;font-size:12px;line-height:1.6}.plan-content[data-v-442c2eef] h1{color:#e0e0e0;margin:16px 0 8px;font-size:16px}.plan-content[data-v-442c2eef] h2{color:#e0e0e0;margin:14px 0 6px;font-size:14px}.plan-content[data-v-442c2eef] h3{color:#e0e0e0;margin:12px 0 4px;font-size:13px}.plan-content[data-v-442c2eef] code{background:#1a1a2e;border-radius:3px;padding:1px 4px;font-family:Roboto Mono,monospace;font-size:11px}.plan-content[data-v-442c2eef] pre{background:#1a1a2e;border-radius:6px;padding:8px 12px;font-size:11px;overflow-x:auto}.plan-content[data-v-442c2eef] pre code{background:0 0;padding:0}.plan-content[data-v-442c2eef] ul,.plan-content[data-v-442c2eef] ol{padding-left:20px}.plan-content[data-v-442c2eef] li{margin-bottom:2px}.plan-content[data-v-442c2eef] input[type=checkbox]{pointer-events:none;margin-right:6px}.plan-content[data-v-442c2eef] table{border-collapse:collapse;width:100%;margin:8px 0;font-size:11px}.plan-content[data-v-442c2eef] th,.plan-content[data-v-442c2eef] td{text-align:left;border:1px solid #2a2a4a;padding:4px 8px}.plan-content[data-v-442c2eef] th{color:#e0e0e0;background:#1a1a2e}.plan-content[data-v-442c2eef] blockquote{color:#a0a0b0;border-left:3px solid #4a4a6a;margin:8px 0;padding:4px 12px}.plan-content[data-v-442c2eef] a{color:#818cf8}.plan-content[data-v-442c2eef] hr{border:none;border-top:1px solid #2a2a4a;margin:12px 0}.stat-group-label[data-v-3d3e6cd8]{text-transform:uppercase;letter-spacing:.05em;color:#888;font-size:10px;font-weight:600}.stat-row[data-v-3d3e6cd8]{justify-content:space-between;align-items:center;padding:2px 0;display:flex}.stat-label[data-v-3d3e6cd8]{color:#999;font-size:12px}.stat-value[data-v-3d3e6cd8]{color:#ddd;font-family:Roboto Mono,monospace;font-size:12px;font-weight:500}.stat-value-ellipsis[data-v-3d3e6cd8]{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.stat-section[data-v-3d3e6cd8]{justify-content:space-between;align-items:center;display:flex}.subagents-panel[data-v-81ad2481]{overflow-y:auto}.subagent-item[data-v-81ad2481]{background:#1e1e3a;border:1px solid #2a2a4a}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.xterm .xterm-accessibility-tree:not(.debug) ::-moz-selection{color:#0000}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:-moz-fit-content;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}.tools-panel[data-v-64fae402]{min-height:48px}.workspace-list[data-v-69c12879]{background-color:#16162a;overflow-x:hidden}.wl-search[data-v-69c12879]{background-color:#224;padding:0 8px}.wl-search[data-v-69c12879] .q-field__control{height:32px}.wl-search[data-v-69c12879] input{color:#ccc;font-size:12px}.wl-group-header[data-v-69c12879]:hover{background-color:#ffffff08}.wl-project-group+.wl-project-group[data-v-69c12879]{margin-top:6px}.wl-project-label[data-v-69c12879]{align-items:center;padding-bottom:2px;font-size:11px;display:flex}.wl-item[data-v-69c12879]{background-color:#224;margin-bottom:4px;transition:background-color .15s;position:relative}.wl-item[data-v-69c12879]:last-child{margin-bottom:0}.wl-item[data-v-69c12879]:hover{background-color:#2a2a4a}.wl-item--selected[data-v-69c12879]{background-color:#2a2a4a;outline:1px solid #6c63ff66}.wl-item-action[data-v-69c12879]{position:absolute;top:4px;right:4px}.wl-item--archived .wl-item-action[data-v-69c12879]{opacity:0;transition:opacity .15s}.wl-item--archived:hover .wl-item-action[data-v-69c12879]{opacity:1}.wl-item-unarchive[data-v-69c12879]{right:28px}.wl-item-delete[data-v-69c12879]{right:4px}.wl-item--archived[data-v-69c12879]{opacity:.6;background-color:#1a1a30}.wl-item--archived[data-v-69c12879]:hover{opacity:.85}.wl-item--archived.wl-item--selected[data-v-69c12879]{opacity:1}.dd-dot[data-v-69c12879]{border-radius:50%;flex-shrink:0;width:6px;height:6px}.dd-dot--running[data-v-69c12879]{background-color:#22c55e;box-shadow:0 0 4px #22c55e80}.bg-dark[data-v-e8e0e89d]{background-color:#16162a!important;border-color:#2a2a4a!important}.resize-handle[data-v-e8e0e89d]{cursor:col-resize;z-index:10;width:4px;height:100%;transition:background-color .15s;position:absolute;top:0;right:-2px}.resize-handle[data-v-e8e0e89d]:hover,.resize-handle[data-v-e8e0e89d]:active{background-color:#6c63ff80}.vertical-resize-handle[data-v-e8e0e89d]{cursor:row-resize;background-color:#2a2a4a;height:4px;transition:background-color .15s}.vertical-resize-handle[data-v-e8e0e89d]:hover,.vertical-resize-handle[data-v-e8e0e89d]:active{background-color:#6c63ff80}