@loicngr/kobo 1.11.43 → 1.11.44

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 (144) hide show
  1. package/AGENTS.md +36 -1
  2. package/CHANGELOG.md +6 -0
  3. package/dist/mcp-server/kobo-tasks-handlers.js +31 -74
  4. package/dist/mcp-server/kobo-tasks-server.js +51 -4
  5. package/dist/server/db/auto-loop-schema.js +44 -0
  6. package/dist/server/db/migrations.js +4 -0
  7. package/dist/server/db/review-return-schema.js +10 -0
  8. package/dist/server/db/schema.js +4 -0
  9. package/dist/server/index.js +10 -9
  10. package/dist/server/routes/auto-loop-messages.js +51 -0
  11. package/dist/server/routes/workspaces.js +46 -136
  12. package/dist/server/services/agent/engines/claude-code/engine.js +1 -0
  13. package/dist/server/services/agent/engines/codex/engine.js +91 -31
  14. package/dist/server/services/agent/orchestrator.js +237 -88
  15. package/dist/server/services/agent/session-controller.js +42 -2
  16. package/dist/server/services/auto-loop-message-service.js +79 -0
  17. package/dist/server/services/auto-loop-service.js +225 -86
  18. package/dist/server/services/auto-loop-state-service.js +30 -0
  19. package/dist/server/services/cron-service.js +30 -16
  20. package/dist/server/services/quota-backoff-service.js +42 -10
  21. package/dist/server/services/review-return-service.js +64 -0
  22. package/dist/server/services/review-service.js +187 -0
  23. package/dist/server/services/settings-service.js +3 -3
  24. package/dist/server/services/task-mutations.js +186 -0
  25. package/dist/server/services/wakeup-service.js +16 -1
  26. package/dist/server/services/workspace-message-service.js +16 -2
  27. package/dist/server/services/workspace-service.js +25 -36
  28. package/dist/shared/auto-loop-prompts.js +22 -11
  29. package/dist/shared/auto-loop-types.js +1 -0
  30. package/dist/shared/review.js +6 -0
  31. package/dist/shared/task-verification.js +11 -0
  32. package/package.json +12 -12
  33. package/src/client/dist/pwa/assets/{ActivityFeed-D1e-zV3O.js → ActivityFeed-D_y4aikp.js} +1 -1
  34. package/src/client/dist/pwa/assets/{ChangelogPage-DX1WGFea.js → ChangelogPage-DSKCvpr2.js} +1 -1
  35. package/src/client/dist/pwa/assets/{ClosePopup-BqW5dy-O.js → ClosePopup-CWjIRHxu.js} +1 -1
  36. package/src/client/dist/pwa/assets/{ComparisonPanel-B4ne55Xj.js → ComparisonPanel-DDxcsxyC.js} +1 -1
  37. package/src/client/dist/pwa/assets/{CreatePage-Bx_GpUni.js → CreatePage-DKVEknbL.js} +2 -2
  38. package/src/client/dist/pwa/assets/{DashboardPage-Cv6HJEcO.js → DashboardPage-Dg2s9nnv.js} +1 -1
  39. package/src/client/dist/pwa/assets/{DiffViewer-COwGxPt6.js → DiffViewer-BSzNScIr.js} +4 -4
  40. package/src/client/dist/pwa/assets/{DocumentsPanel-DCXpLLb7.js → DocumentsPanel-DfEoI_f7.js} +1 -1
  41. package/src/client/dist/pwa/assets/{DrawerToggleButton-DRL3RCkM.js → DrawerToggleButton-D85PwhKb.js} +1 -1
  42. package/src/client/dist/pwa/assets/GitPanel-CuG8MlgF.js +3 -0
  43. package/src/client/dist/pwa/assets/{HealthPage-XrOuMoDJ.js → HealthPage-CaLCpejR.js} +1 -1
  44. package/src/client/dist/pwa/assets/MainLayout-CDxYIJ_s.js +2 -0
  45. package/src/client/dist/pwa/assets/MainLayout-DTLNunOi.css +1 -0
  46. package/src/client/dist/pwa/assets/{QBadge-DbkxGtht.js → QBadge-FWC1zDCq.js} +1 -1
  47. package/src/client/dist/pwa/assets/{QBanner-DhqH95GW.js → QBanner-CcRI_QIy.js} +1 -1
  48. package/src/client/dist/pwa/assets/QBtn-DEdx_Y1V.js +1 -0
  49. package/src/client/dist/pwa/assets/{QBtnDropdown-163oM6T_.js → QBtnDropdown-qJWGcZpC.js} +1 -1
  50. package/src/client/dist/pwa/assets/{QBtnGroup-DELKYo3u.js → QBtnGroup-CAoD6G0Q.js} +1 -1
  51. package/src/client/dist/pwa/assets/{QBtnToggle-BI3k3Ch2.js → QBtnToggle-C_hQ2UCQ.js} +1 -1
  52. package/src/client/dist/pwa/assets/{QChip-owciRuZu.js → QChip-DCPUhqXX.js} +1 -1
  53. package/src/client/dist/pwa/assets/QDrawer-DX3PhMqC.js +1 -0
  54. package/src/client/dist/pwa/assets/{QItemSection-D_5_0UrX.js → QItemSection-BhqphaH6.js} +1 -1
  55. package/src/client/dist/pwa/assets/{QList-qupzuEqO.js → QList-CHm4JNP0.js} +1 -1
  56. package/src/client/dist/pwa/assets/{QMarkupTable-B9QuKtK_.js → QMarkupTable-CNpiA9oq.js} +1 -1
  57. package/src/client/dist/pwa/assets/{QPage-DaX9sMQC.js → QPage-BXBw2Alx.js} +1 -1
  58. package/src/client/dist/pwa/assets/QSelect-CY4TWW_j.js +1 -0
  59. package/src/client/dist/pwa/assets/{QSpinnerDots-DnCV3VzI.js → QSpinnerDots-BkFiCsH3.js} +1 -1
  60. package/src/client/dist/pwa/assets/{QTooltip-BQWY7aeM.js → QTooltip-cDK5AOQ5.js} +1 -1
  61. package/src/client/dist/pwa/assets/{SchedulePanel-Bos94OyR.js → SchedulePanel-LvHiZ6ZH.js} +1 -1
  62. package/src/client/dist/pwa/assets/{SearchPage-DOHkP5lj.js → SearchPage-BO-J4aNc.js} +1 -1
  63. package/src/client/dist/pwa/assets/{SettingsPage-DtGsd0XH.js → SettingsPage-Aw89fRSq.js} +2 -2
  64. package/src/client/dist/pwa/assets/{SplitWorkspacePage-DL4kp9Ah.js → SplitWorkspacePage-BIEceNwH.js} +1 -1
  65. package/src/client/dist/pwa/assets/{TerminalPanel-DHDnyiYh.js → TerminalPanel-DitOCad1.js} +1 -1
  66. package/src/client/dist/pwa/assets/{TouchPan-BnHXDR6F.js → TouchPan-DvPAhZsa.js} +1 -1
  67. package/src/client/dist/pwa/assets/{TourReplayButton-ClVcB6mO.js → TourReplayButton-CJYdH3Jf.js} +1 -1
  68. package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-Bxe6oIJI.js → WorkspaceAttentionLabels-CY-9z9nw.js} +1 -1
  69. package/src/client/dist/pwa/assets/WorkspacePage-DAVo-E4p.css +1 -0
  70. package/src/client/dist/pwa/assets/WorkspacePage-xH_OyA3r.js +4 -0
  71. package/src/client/dist/pwa/assets/{browser-Bkx4fbxl.js → browser-BsB6cFv4.js} +1 -1
  72. package/src/client/dist/pwa/assets/build-path-tree-CW-ER1Mt.js +1 -0
  73. package/src/client/dist/pwa/assets/{de-BU0dILBs.js → de-Mu7biceO.js} +2 -2
  74. package/src/client/dist/pwa/assets/documents-SCd3w8xV.js +1 -0
  75. package/src/client/dist/pwa/assets/{editor.api-DreEG0If.js → editor.api-BUdM7I6y.js} +1 -1
  76. package/src/client/dist/pwa/assets/editor.worker-iO5iN0DB.js +33 -0
  77. package/src/client/dist/pwa/assets/efforts-DTJQP9or.js +9 -0
  78. package/src/client/dist/pwa/assets/engineFeatures-B-9jHocY.css +1 -0
  79. package/src/client/dist/pwa/assets/engineFeatures-Bj6Ob41d.js +1 -0
  80. package/src/client/dist/pwa/assets/{es-CNp0s9na.js → es-BY5IfNI2.js} +2 -2
  81. package/src/client/dist/pwa/assets/expand-template-SM8vvYyO.js +1 -0
  82. package/src/client/dist/pwa/assets/{format-B7z3F-Mw.js → format-BjQxf4pe.js} +3 -3
  83. package/src/client/dist/pwa/assets/{formatters-BTBiU0v3.js → formatters-BejhmNTV.js} +1 -1
  84. package/src/client/dist/pwa/assets/{fr-RqJyWSdm.js → fr-BMXCzFCM.js} +2 -2
  85. package/src/client/dist/pwa/assets/{freemarker2-BZNTVQ3K.js → freemarker2-5d5GhyRp.js} +1 -1
  86. package/src/client/dist/pwa/assets/{handlebars-k8tN0dI3.js → handlebars-DaafEsDK.js} +1 -1
  87. package/src/client/dist/pwa/assets/{html-iZL3bbXq.js → html-CwHBDd2A.js} +1 -1
  88. package/src/client/dist/pwa/assets/i18n-CgWW5vfb.js +1 -0
  89. package/src/client/dist/pwa/assets/index-0wtBh1Xt.css +1 -0
  90. package/src/client/dist/pwa/assets/index-Di9Sz5E8.js +20 -0
  91. package/src/client/dist/pwa/assets/{it-DSxNuCwL.js → it-ByPZQK_K.js} +2 -2
  92. package/src/client/dist/pwa/assets/{javascript-TV6gg0MO.js → javascript-DSNIEEH5.js} +1 -1
  93. package/src/client/dist/pwa/assets/{liquid-Cifa5ujF.js → liquid-Dma1UpA1.js} +1 -1
  94. package/src/client/dist/pwa/assets/{mdx-Bnj_8yGE.js → mdx-D8rqEAws.js} +1 -1
  95. package/src/client/dist/pwa/assets/{monaco-contributions-pEh0n9Wk.js → monaco-contributions-2E7O2zoi.js} +1 -1
  96. package/src/client/dist/pwa/assets/{monaco.contribution-D7NmJUJH.js → monaco.contribution-DqOgo72G.js} +2 -2
  97. package/src/client/dist/pwa/assets/{network-auth-3_5p4fdc.js → network-auth-DNmhJTZn.js} +1 -1
  98. package/src/client/dist/pwa/assets/{notify-theme-D_nf9AeF.js → notify-theme-B6Hiwvwb.js} +1 -1
  99. package/src/client/dist/pwa/assets/{pending-diff-open-CUnxC1xw.js → pending-diff-open-CeiVIFZn.js} +1 -1
  100. package/src/client/dist/pwa/assets/permissionModes-DWdtf81n.js +36 -0
  101. package/src/client/dist/pwa/assets/{pinia-BKqmoVru.js → pinia-CTJ3OfP3.js} +1 -1
  102. package/src/client/dist/pwa/assets/{private.use-form-C7umbGO-.js → private.use-form-Bk8ti264.js} +1 -1
  103. package/src/client/dist/pwa/assets/{project-color-CihwpDAA.js → project-color-BCp9SWoI.js} +1 -1
  104. package/src/client/dist/pwa/assets/{python-DOoNBSNL.js → python-f-9NqRlI.js} +1 -1
  105. package/src/client/dist/pwa/assets/{razor-Bvq5vVpJ.js → razor-DsCmoX0h.js} +1 -1
  106. package/src/client/dist/pwa/assets/reactivity.esm-bundler-Bo9anJjg.js +1 -0
  107. package/src/client/dist/pwa/assets/render-chat-markdown-DK5BD9mU.js +67 -0
  108. package/src/client/dist/pwa/assets/{runtime-core.esm-bundler-CDnVUfeZ.js → runtime-core.esm-bundler-CNFKm4ij.js} +1 -1
  109. package/src/client/dist/pwa/assets/{typescript-VVzxoeyM.js → typescript-cEHg4L10.js} +1 -1
  110. package/src/client/dist/pwa/assets/{use-checkbox-FnauAgTp.js → use-checkbox-CnvHBhSK.js} +1 -1
  111. package/src/client/dist/pwa/assets/{use-id-BIuaWKkB.js → use-id-wXd4c8FA.js} +1 -1
  112. package/src/client/dist/pwa/assets/use-is-mobile-DpKI3XMy.js +1 -0
  113. package/src/client/dist/pwa/assets/{use-search-index-status-DtLzygcy.js → use-search-index-status-Bluf9L99.js} +1 -1
  114. package/src/client/dist/pwa/assets/use-tours-BmTbosmB.js +2 -0
  115. package/src/client/dist/pwa/assets/{workspace-templates-1ui80Kqo.js → workspace-templates-DUWDLMIX.js} +1 -1
  116. package/src/client/dist/pwa/assets/{xml-CzGFIxQa.js → xml-Plt-Y7we.js} +1 -1
  117. package/src/client/dist/pwa/assets/{yaml-Bl7nDJeC.js → yaml-ScEmaAeN.js} +1 -1
  118. package/src/client/dist/pwa/index.html +10 -10
  119. package/src/client/dist/pwa/sw.js +1 -1
  120. package/src/mcp-server/kobo-tasks-handlers.ts +68 -104
  121. package/src/mcp-server/kobo-tasks-server.ts +56 -4
  122. package/src/client/dist/pwa/assets/GitPanel-C9mz4GXF.js +0 -3
  123. package/src/client/dist/pwa/assets/MainLayout-BwV89R-l.css +0 -1
  124. package/src/client/dist/pwa/assets/MainLayout-CwWavQjV.js +0 -2
  125. package/src/client/dist/pwa/assets/QBtn-CZaBclNw.js +0 -1
  126. package/src/client/dist/pwa/assets/QDrawer-DNEj8wLZ.js +0 -1
  127. package/src/client/dist/pwa/assets/QSelect-BUlOQe5k.js +0 -1
  128. package/src/client/dist/pwa/assets/WorkspacePage-Clc4Fl3B.js +0 -4
  129. package/src/client/dist/pwa/assets/WorkspacePage-DCg9zSxz.css +0 -1
  130. package/src/client/dist/pwa/assets/build-path-tree-BpSY7N5O.js +0 -1
  131. package/src/client/dist/pwa/assets/documents-BIlWh3o-.js +0 -1
  132. package/src/client/dist/pwa/assets/editor.worker-CwQAd_xr.js +0 -30
  133. package/src/client/dist/pwa/assets/efforts-D_yTzymv.js +0 -9
  134. package/src/client/dist/pwa/assets/engineFeatures-C33LTVkK.js +0 -1
  135. package/src/client/dist/pwa/assets/expand-template-wRhAXT-1.js +0 -1
  136. package/src/client/dist/pwa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa-Dr0goTwe.woff +0 -0
  137. package/src/client/dist/pwa/assets/i18n--PCet00a.js +0 -1
  138. package/src/client/dist/pwa/assets/index-CPfrY38K.js +0 -20
  139. package/src/client/dist/pwa/assets/index-CUoUy6tH.css +0 -1
  140. package/src/client/dist/pwa/assets/permissionModes-DC51Pz84.js +0 -36
  141. package/src/client/dist/pwa/assets/reactivity.esm-bundler-DEJj9cFv.js +0 -1
  142. package/src/client/dist/pwa/assets/render-chat-markdown-BQ_saiy5.js +0 -67
  143. package/src/client/dist/pwa/assets/use-is-mobile-CWjqe8gC.js +0 -1
  144. package/src/client/dist/pwa/assets/use-tours-BKeYrJaQ.js +0 -2
@@ -1,9 +0,0 @@
1
- import{v as e}from"./reactivity.esm-bundler-DEJj9cFv.js";import{C as t,J as n,b as r,i,l as a}from"./runtime-core.esm-bundler-CDnVUfeZ.js";import{J as o,Q as s,S as c,X as l,Y as u,at as d,ct as f,et as p,h as m,nt as h,q as g,y as _}from"./QBtn-CZaBclNw.js";import{C as ee}from"./use-id-BIuaWKkB.js";import{N as v}from"./index-CPfrY38K.js";import{a as y,o as b}from"./QSelect-BUlOQe5k.js";import{u as x}from"./permissionModes-DC51Pz84.js";import{p as S}from"./use-tours-BKeYrJaQ.js";x(`superpowers`);function C(e,t){let n=["1. Call `kobo__list_tasks` FIRST to inspect any pre-existing tasks (they may have been seeded from Notion, a template, or the CreatePage form).","2. If tasks already exist: DO NOT delete or recreate them from scratch. Read each one, judge whether it is atomic and implementable in one session with clear completion criteria. Improve them in place:\n - Use `kobo__update_task` to rename unclear titles, add completion criteria, or flip `is_acceptance_criterion` when needed.\n - Use `kobo__create_task` to SPLIT a task that is too large into smaller atomic pieces (keep the original only if it still makes sense, otherwise update it to one of the split pieces and create the rest).\n - Use `kobo__create_task` to ADD missing acceptance criteria or missing implementation steps the plan requires.","3. If no tasks exist:\n - If a plan file exists in `docs/superpowers/plans/` or similar, read it and derive the task list from it.\n - If no plan exists, ask the user what the workspace goal is and propose tasks accordingly.\n - Create the tasks via `kobo__create_task`. For each task, decide `is_acceptance_criterion` appropriately."],r=4;if(e.framework){let t=e.skill?`Use the \`${e.skill}\` skill for this task. `:``,i=e.prompt?`Additional guidance: ${e.prompt}`:``;n.push(`${r}. **E2E review**: walk the task list and identify which tasks produce user-visible behavior (UI flows, form submissions, page renders, etc.). For each one that warrants regression coverage, INSERT a follow-up sub-task with title prefixed \`[E2E] \` describing the test to write. Place it in \`sort_order\` directly after the parent task. Skip tasks that don't produce user-visible behavior (refactors, infra, internal services) and briefly justify your choices in chat. The project uses \`${e.framework}\`. ${t}${i}`.trim()),r++}return t.prompt&&(n.push(`${r}. **Finalization task**: create ONE task with title prefixed \`[FINAL] <descriptive title>\`. Place it at the END of the task list (sort_order = max + 1, AFTER any [E2E] tasks). The agent will execute this task using the project's finalization prompt — do NOT inline the prompt content into the task title or description.`),r++),n.push(`${r}. Call \`kobo__mark_auto_loop_ready\`. This will automatically start the auto-loop, which will pick up the tasks one by one in fresh sessions.`),n.join(`
2
- `)}var w=C({framework:``,skill:``,prompt:``},{prompt:``}),T="Hard rules:\n- Do NOT touch any source file. No Edit, no Write, no Bash that changes the repo.\n- Do NOT run `kill`, `pkill`, `killall`, `pgrep -k`, or any process-killing command — you may tear down the Kōbō server itself or sibling dev servers.\n- Do NOT start implementation even if a plan is ready — auto-loop will drive that afterwards, one task per iteration.\n- If the user asks for changes, re-apply via MCP and re-check. Do NOT mark ready until they approve.",E=`Review your progress on the tasks and acceptance criteria. Use the kobo-tasks MCP server: call list_tasks() to check the current status, then update any tasks you have completed using mark_task_done(). Report what is done and what remains.
3
-
4
- Then suggest concrete next actions. Format them exactly like this so I can click on them:
5
-
6
- 1. **Short label** → Description of the action
7
- 2. **Short label** → Description of the action`,D=`${w}
8
-
9
- ${T}`;function O(){let e=v();return`${x(e.global.skillSuite,e.global.customAutoLoopGroomingIntro)}\n\n${D}`}var k=`${x(`superpowers`)}\n\n${D}`,A={"/kobo-check-progress":{prompt:E,descriptionKey:`koboCommand.checkProgressDesc`},"/kobo-prep-autoloop":{prompt:k,descriptionKey:`koboCommand.prepAutoloopDesc`}};function j(e,t,n){t.sendChatMessage(e,E),n.markRead(e),n.addActivityItem(e,{id:`user-${Date.now()}`,type:`text`,content:E,timestamp:new Date().toISOString(),meta:{sender:`user`,pending:!0}})}async function M(e,t,n){try{let t=n.workspaces.find(t=>t.id===e);t&&t.agentPermissionMode===`plan`&&await n.updateAgentPermissionMode(e,`bypass`)}catch{}let r=O();try{let t=await fetch(`/api/workspaces/${e}/prep-autoloop-prompt`,{cache:`no-store`});if(t.ok){let e=await t.json();e.prompt&&(r=e.prompt)}}catch{}t.sendChatMessage(e,r,void 0,`bypass`),n.markRead(e),n.addActivityItem(e,{id:`user-${Date.now()}`,type:`text`,content:r,timestamp:new Date().toISOString(),meta:{sender:`user`,pending:!0}})}var{passive:N,passiveCapture:P,notPassive:F,notPassiveCapture:I}=o,L=[.06,6,50];function R(e,t){if(e.arg=t,typeof t!=`string`||t.length===0){e.sensitivity=L;return}let n=[...L],r=t.split(`:`);for(let e=0;e<3&&e<r.length;e++){let t=Number.parseFloat(r[e]);t&&(n[e]=t)}e.sensitivity=n}function z(e,t,n){t.modifiers=n,t.direction=y(n);let r=n.mouseCapture||n.mousecapture,i=n.mouse?r?P:N:null;t.mouseMoveOpts=r?I:F,i!==t.mouseOpts&&(t.mouseOpts!==null&&e.removeEventListener(`mousedown`,B,t.mouseOpts),i!==null&&e.addEventListener(`mousedown`,B,i),t.mouseOpts=i);let a=d.has.touch?n.capture?P:N:null;a!==t.touchOpts&&(t.touchOpts!==null&&e.removeEventListener(`touchstart`,V,t.touchOpts),a!==null&&e.addEventListener(`touchstart`,V,a),t.touchOpts=a)}function B(e){let t=e.currentTarget.__qtouchswipe;b(e,t)&&g(e)&&(t.target=document,t.moveOpts=t.mouseMoveOpts,document.addEventListener(`mousemove`,t,t.moveOpts),document.addEventListener(`mouseup`,t,I),U(t,e,!0))}function V(e){let t=e.currentTarget.__qtouchswipe;if(b(e,t)){let{target:n}=e;t.target=n,n.addEventListener(`touchmove`,t,I),n.addEventListener(`touchcancel`,t,I),n.addEventListener(`touchend`,t,I),U(t,e,!1)}}function H(e){e.type===`mousemove`||e.type===`touchmove`?W(this,e):G(this,e)}function U(e,t,n){d.is.firefox&&s(e.el,!0);let r=l(t);e.event={x:r.left,y:r.top,time:Date.now(),mouse:n,dir:!1}}function W(e,t){let{event:n}=e;if(n===void 0)return;if(n.dir!==!1){p(t);return}let r=Date.now()-n.time;if(r===0)return;let i=l(t),a=i.left-n.x,o=Math.abs(a),s=i.top-n.y,c=Math.abs(s),{sensitivity:u,direction:d}=e;if(!n.mouse){if(o<u[1]&&c<u[1]){G(e,t);return}}else if(window.getSelection().toString()!==``){G(e,t);return}else if(o<u[2]&&c<u[2])return;let f=o/r,m=c/r;if(d.vertical&&o<c&&o<100&&m>u[0]&&(n.dir=s<0?`up`:`down`),d.horizontal&&o>c&&c<100&&f>u[0]&&(n.dir=a<0?`left`:`right`),d.up&&o<c&&s<0&&o<100&&m>u[0]&&(n.dir=`up`),d.down&&o<c&&s>0&&o<100&&m>u[0]&&(n.dir=`down`),d.left&&o>c&&a<0&&c<100&&f>u[0]&&(n.dir=`left`),d.right&&o>c&&a>0&&c<100&&f>u[0]&&(n.dir=`right`),n.dir===!1){G(e,t);return}p(t),n.mouse&&(e.styled=!0,document.body.classList.add(`no-pointer-events--children`,`non-selectable`),S()),e.handler({evt:t,touch:!n.mouse,mouse:n.mouse,direction:n.dir,duration:r,distance:{x:o,y:c}})}function G(e,t){let{event:n,target:r}=e;n!==void 0&&(n.mouse?(r.removeEventListener(`mousemove`,e,e.moveOpts),r.removeEventListener(`mouseup`,e,I)):(r.removeEventListener(`touchmove`,e,I),r.removeEventListener(`touchcancel`,e,I),r.removeEventListener(`touchend`,e,I)),d.is.firefox&&s(e.el,!1),e.styled&&(e.styled=!1,document.body.classList.remove(`no-pointer-events--children`,`non-selectable`)),t!==void 0&&n.dir!==!1&&p(t),e.event=void 0,e.target=null)}var K=h({name:`touch-swipe`,beforeMount(e,{value:t,arg:n,modifiers:r}){let i={handleEvent:H,el:e,handler:t,arg:void 0,sensitivity:void 0,modifiers:void 0,direction:void 0,mouseOpts:null,mouseMoveOpts:null,touchOpts:null,target:null,moveOpts:null,event:void 0,styled:!1};e.__qtouchswipe=i,R(i,n),z(e,i,r),i.touchOpts!==null&&e.addEventListener(`touchmove`,u,I)},updated(e,{oldValue:t,value:n,arg:r,modifiers:i}){let a=e.__qtouchswipe;a!==void 0&&(t!==n&&(typeof n!=`function`&&G(a),a.handler=n),r!==a.arg&&R(a,r),i!==a.modifiers&&z(e,a,i))},beforeUnmount(e){let t=e.__qtouchswipe;t!==void 0&&(G(t),t.mouseOpts!==null&&e.removeEventListener(`mousedown`,B,t.mouseOpts),t.touchOpts!==null&&(e.removeEventListener(`touchstart`,V,t.touchOpts),e.removeEventListener(`touchmove`,u,I)),e.__qtouchswipe=void 0)}});function q(){let e=Object.create(null);return{getCache:(t,n)=>Object.hasOwn(e,t)?e[t]:e[t]=typeof n==`function`?n():n,setCache(t,n){e[t]=n},hasCache(t){return Object.hasOwn(e,t)},clearCache(t){t===void 0?e=Object.create(null):delete e[t]}}}var J={name:{required:!0},disable:Boolean},Y={class:`q-panel scroll`},X={setup(e,{slots:n}){return()=>t(`div`,Y,c(n.default))}},Z={modelValue:{required:!0},animated:Boolean,infinite:Boolean,swipeable:Boolean,vertical:Boolean,transitionPrev:String,transitionNext:String,transitionDuration:{type:[String,Number],default:300},keepAlive:Boolean,keepAliveInclude:[String,Array,RegExp],keepAliveExclude:[String,Array,RegExp],keepAliveMax:Number},te=[`update:modelValue`,`beforeTransition`,`transition`];function Q(e){return e!=null&&e!==``}function ne(){let{props:o,emit:s,proxy:l}=r(),u=_(),{getCache:d}=q(),{registerTimeout:p}=ee(),h,g,v=e(null),y={value:null};function b(e){let t=o.vertical?`up`:`left`;N((!o.vertical&&u.lang.rtl?-1:1)*(e.direction===t?1:-1))}let x=a(()=>[[K,o.swipeable?b:void 0,void 0,{horizontal:!o.vertical,vertical:o.vertical,mouse:!0}]]);function S(){return o.transitionPrev||`slide-${o.vertical?`down`:u.lang.rtl?`left`:`right`}`}function C(){return o.transitionNext||`slide-${o.vertical?`up`:u.lang.rtl?`right`:`left`}`}function w(){return typeof o.modelValue==`string`||typeof o.modelValue==`number`?o.modelValue:String(o.modelValue)}let T=a(()=>({include:o.keepAliveInclude,exclude:o.keepAliveExclude,max:o.keepAliveMax})),E=a(()=>o.keepAliveInclude!==void 0||o.keepAliveExclude!==void 0);n(()=>o.modelValue,(e,t)=>{let n=Q(e)?A(e):-1;g||M(n===-1?0:n<A(t)?-1:1),y.value!==n&&(y.value=n,s(`beforeTransition`,e,t),p(()=>{s(`transition`,e,t)},o.transitionDuration))});function D(){N(1)}function O(){N(-1)}function k(e){s(`update:modelValue`,e)}function A(e){return h.findIndex(t=>t.props.name===e&&t.props.disable!==``&&t.props.disable!==!0)}function j(){return h.filter(e=>e.props.disable!==``&&e.props.disable!==!0)}function M(e){let t=e!==0&&o.animated&&y.value!==-1?`q-transition--`+(e===-1?S():C()):null;v.value!==t&&(v.value=t)}function N(e,t=y.value){let n=t+e;for(;n>=0&&n<h.length;){let t=h[n];if(t!==void 0&&t.props.disable!==``&&t.props.disable!==!0){M(e),g=!0,s(`update:modelValue`,t.props.name),setTimeout(()=>{g=!1},0);return}n+=e}o.infinite&&h.length!==0&&t!==-1&&t!==h.length&&N(e,e===-1?h.length:-1)}function P(){let e=A(o.modelValue);return y.value!==e&&(y.value=e),!0}function F(){let e=Q(o.modelValue)&&P()&&h[y.value],n=w(),r=`--q-transition-duration: ${o.transitionDuration}ms`;return o.keepAlive?[t(i,T.value,[t(E.value?d(n,()=>({...X,name:n})):X,{key:n,style:r},()=>e)])]:[t(`div`,{class:`q-panel scroll`,style:r,key:n},[e])]}function I(){if(h.length!==0)return o.animated?[t(f,{name:v.value},F)]:F()}function L(e){return h=m(c(e.default,[])).filter(e=>e.props!==null&&e.props.slot===void 0&&Q(e.props.name)),h.length}function R(){return h}return Object.assign(l,{next:D,previous:O,goTo:k}),{panelIndex:y,panelDirectives:x,updatePanelsList:L,updatePanelIndex:P,getPanelContent:I,getEnabledPanels:j,getPanels:R,isValidPanelName:Q,keepAliveProps:T,needsUniqueKeepAliveWrapper:E,goToPanelByOffset:N,goToPanel:k,nextPanel:D,previousPanel:O}}function $(e){return{value:e,i18nLabelKey:`reasoning.${e}`,i18nDescriptionKey:`reasoning.${e}Description`}}var re={"claude-code":[$(`auto`),$(`low`),$(`medium`),$(`high`),$(`xhigh`),$(`max`)],codex:[$(`auto`),$(`none`),$(`low`),$(`medium`),$(`high`),$(`xhigh`),$(`max`)]};export{Z as a,j as c,te as i,M as l,ne as n,q as o,J as r,A as s,re as t};
@@ -1 +0,0 @@
1
- import{j as e,ut as t}from"./reactivity.esm-bundler-DEJj9cFv.js";import{L as n,Y as r,_ as i,d as a,f as o,g as s,l as c,y as l}from"./runtime-core.esm-bundler-CDnVUfeZ.js";import{y as u}from"./QBtn-CZaBclNw.js";import{Tt as d,f,p}from"./index-CPfrY38K.js";import{t as m}from"./QTooltip-BQWY7aeM.js";import{t as h}from"./QChip-owciRuZu.js";var g=l({__name:`AutoLoopChip`,props:{workspace:{default:null}},setup(l){let u=l,{t:f}=d(),g=p(),_=c(()=>u.workspace??g.selectedWorkspace),v=c(()=>_.value?.id??null),y=c(()=>v.value?g.autoLoopStates[v.value]??null:null),b=c(()=>!!y.value?.auto_loop),x=c(()=>!!y.value?.auto_loop_ready),S=c(()=>v.value!==null&&g.selectedWorkspaceId===v.value),C=c(()=>S.value?g.tasks.filter(e=>e.status===`done`).length:y.value?.tasks_done??0),w=c(()=>S.value?g.tasks.length:y.value?.tasks_total??0);return(c,l)=>b.value&&!x.value?(n(),a(h,{key:0,dense:``,square:``,size:`sm`,color:`primary`,"text-color":`white`,icon:`hourglass_top`,class:`q-ml-sm`},{default:r(()=>[s(t(e(f)(`autoLoop.preparing`))+` `,1),i(m,null,{default:r(()=>[s(t(e(f)(`autoLoop.preparingTooltip`)),1)]),_:1})]),_:1})):b.value?(n(),a(h,{key:1,dense:``,square:``,size:`sm`,color:`amber-9`,"text-color":`white`,icon:`autorenew`,class:`q-ml-sm`},{default:r(()=>[s(t(e(f)(`autoLoop.progress`,{done:C.value,total:w.value})),1)]),_:1})):o(``,!0)}});function _(e,t){if(e===``)return 0;let n=e.toLowerCase(),r=t.toLowerCase(),i=0,a=0,o=-2;for(let e of n){let t=-1;for(let n=a;n<r.length;n++)if(r[n]===e){t=n;break}if(t===-1)return null;i+=t===o+1?5:1;let n=t>0?r[t-1]:``;(t===0||n===`/`||n===`-`||n===`_`||n===`.`)&&(i+=2),o=t,a=t+1}return i-t.length*.01}function v(e,t,n,r=_){if(n<=0)return[];let i=[];for(let a of t){let t=r(e,a);if(t===null||i.length===n&&t<=i[n-1].score)continue;let o=i.length;for(;o>0&&i[o-1].score<t;)o--;i.splice(o,0,{item:a,score:t}),i.length>n&&i.pop()}return i.map(e=>e.item)}var y=new Set([`not-found`,`not-purged`,`workspace-busy`,`worktree-not-owned`,`project-unavailable`,`path-conflict`,`branch-in-use`,`recovery-source-unavailable`,`git-failed`]),b=`https://github.com/loicngr/kobo/blob/develop/CONFIGURATION.md#restoring-a-purged-workspace`;function x(){let e=p(),t=u(),{t:n}=d();async function r(r){if(!e.restoringWorktreeIds.includes(r))try{await e.restoreWorktree(r),t.notify({type:`positive`,message:n(`workspacePage.worktreeRestoreSuccess`),position:`top`})}catch(e){let r=e instanceof f&&e.code&&y.has(e.code)?e.code:`git-failed`;t.notify({type:`negative`,message:n(`workspacePage.restoreError.${r}`),position:`top`,actions:[{label:n(`common.details`),handler:()=>window.open(b,`_blank`,`noopener,noreferrer`)}]})}}return{restoreWorktree:r}}var S={"claude-code":!0,codex:!0};function C(e){return e?S[e]??!0:!0}var w={"claude-code":!0,codex:!0};function T(e){return e?w[e]??!0:!0}var E={"claude-code":!0,codex:!0};function D(e){return e?E[e]??!1:!1}export{_ as a,x as i,T as n,v as o,C as r,g as s,D as t};
@@ -1 +0,0 @@
1
- import{S as e,j as t,ot as n,ut as r,v as i}from"./reactivity.esm-bundler-DEJj9cFv.js";import{C as a,J as o,L as s,R as c,T as l,X as u,_ as d,f,i as p,l as m,p as h,r as g,u as _,y as v,z as y}from"./runtime-core.esm-bundler-CDnVUfeZ.js";import{P as b,S as x,b as S,c as C,et as w,l as T,pt as E,tt as D,y as O,z as k}from"./QBtn-CZaBclNw.js";import{a as A,i as j}from"./pinia-BKqmoVru.js";import{Tt as M,ut as N}from"./index-CPfrY38K.js";import{f as ee}from"./permissionModes-DC51Pz84.js";import{a as te}from"./use-tours-BKeYrJaQ.js";import{a as P,i as F,n as I,o as L,r as R,s as z}from"./efforts-D_yTzymv.js";var B={"image/png":[`.png`],"image/jpeg":[`.jpg`,`.jpeg`],"image/gif":[`.gif`],"image/webp":[`.webp`]},V=[`.md`,`.markdown`,`.txt`,`.text`,`.pdf`,`.csv`,`.tsv`,`.json`,`.jsonl`,`.yaml`,`.yml`,`.xml`,`.log`,`.rst`,`.toml`],H=[...Object.keys(B),...Object.values(B).flat(),...V].join(`,`),U=52428800,W=52428800;function G(e){let t=/\.[^.\\/]+$/.exec(e.name??``)?.[0]?.toLowerCase()??``,n=B[e.type];return n?{kind:`image`,extension:n.includes(t)?t:n[0]}:V.includes(t)?{kind:`file`,extension:t}:(!e.type||e.type===`application/octet-stream`)&&Object.values(B).some(e=>e.includes(t))?{kind:`image`,extension:t}:null}function K(e){return e.length>10?`count`:e.some(e=>!G(e))?`type`:e.some(e=>e.size===0||e.size>52428800)?`size`:e.reduce((e,t)=>e+t.size,0)>52428800?`total`:null}function q(e){e.keyCode===32&&w(e)}var J=D({name:`StepHeader`,props:{stepper:{},step:{},goToPanel:Function},setup(t,{attrs:n}){let r=O(),i=e(null),o=m(()=>t.stepper.modelValue===t.step.name),s=m(()=>{let e=t.step.disable;return e===!0||e===``}),c=m(()=>{let e=t.step.error;return e===!0||e===``}),l=m(()=>{let e=t.step.done;return!s.value&&(e===!0||e===``)}),d=m(()=>{let e=t.step.headerNav;return t.stepper.headerNav===!0&&(e===!0||e===``||e===void 0)}),f=m(()=>!s.value&&d.value),p=m(()=>t.step.prefix&&(!o.value||t.stepper.activeIcon===`none`)&&(!c.value||t.stepper.errorIcon===`none`)&&(!l.value||t.stepper.doneIcon===`none`)),h=m(()=>{let e=t.step.icon||t.stepper.inactiveIcon;if(o.value){let n=t.step.activeIcon||t.stepper.activeIcon;return n===`none`?e:n||r.iconSet.stepper.active}if(c.value){let n=t.step.errorIcon||t.stepper.errorIcon;return n===`none`?e:n||r.iconSet.stepper.error}if(!s.value&&l.value){let n=t.step.doneIcon||t.stepper.doneIcon;return n===`none`?e:n||r.iconSet.stepper.done}return e}),g=m(()=>{let e=c.value?t.step.errorColor||t.stepper.errorColor:void 0;if(o.value){let n=t.step.activeColor||t.stepper.activeColor||t.step.color;return n===void 0?e:n}return e===void 0?!s.value&&l.value?t.step.doneColor||t.stepper.doneColor||t.step.color||t.stepper.inactiveColor:t.step.color||t.stepper.inactiveColor:e}),_=m(()=>`q-stepper__tab col-grow flex items-center no-wrap relative-position`+(g.value===void 0?``:` text-${g.value}`)+(c.value?` q-stepper__tab--error q-stepper__tab--error-with-`+(p.value?`prefix`:`icon`):``)+(o.value?` q-stepper__tab--active`:``)+(l.value?` q-stepper__tab--done`:``)+(f.value?` q-stepper__tab--navigation q-focusable q-hoverable`:``)+(s.value?` q-stepper__tab--disabled`:``)),v=m(()=>t.stepper.headerNav&&f.value);function y(){i.value?.focus({preventScroll:!0}),o.value||t.goToPanel(t.step.name)}function b(e){[13,32].includes(e.keyCode)&&(o.value||t.goToPanel(t.step.name),w(e))}return()=>{let e={class:_.value,"aria-current":o.value?`step`:void 0};d.value&&(e.role=`button`,s.value?(e.tabindex=-1,e[`aria-disabled`]=`true`):(e.onClick=y,e.onKeydown=q,e.onKeyup=b,e.tabindex=n.tabindex||0));let r=[a(`div`,{class:`q-focus-helper`,tabindex:-1,ref:i}),a(`div`,{class:`q-stepper__dot row flex-center q-stepper__line relative-position`},[a(`span`,{class:`row flex-center`},[p.value?t.step.prefix:a(T,{name:h.value})])])];if(t.step.title!==void 0&&t.step.title!==null){let e=[a(`div`,{class:`q-stepper__title`},t.step.title)];t.step.caption!==void 0&&t.step.caption!==null&&e.push(a(`div`,{class:`q-stepper__caption`},t.step.caption)),r.push(a(`div`,{class:`q-stepper__label q-stepper__line relative-position`},e))}return u(a(`div`,e,r),[[C,v.value]])}}});function Y(e){return a(`div`,{class:`q-stepper__step-content`},[a(`div`,{class:`q-stepper__step-inner`},x(e.default))])}var X={setup(e,{slots:t}){return()=>Y(t)}},Z=D({name:`QStep`,props:{...R,icon:String,color:String,title:{type:String,required:!0},caption:String,prefix:[String,Number],doneIcon:String,doneColor:String,activeIcon:String,activeColor:String,errorIcon:String,errorColor:String,headerNav:{type:Boolean,default:!0},done:Boolean,error:Boolean,onScroll:[Function,Array]},setup(t,{slots:n,emit:r}){let i=O(),o=l(k,b);if(o===b)return console.error(`QStep needs to be a child of QStepper`),b;let{getCache:s}=L(),c=e(null),u=m(()=>o.value.modelValue===t.name),d=m(()=>!i.platform.is.ios&&i.platform.is.chrome||!u.value||!o.value.vertical?{}:{onScroll(e){let{target:n}=e;n.scrollTop>0&&(n.scrollTop=0),t.onScroll!==void 0&&r(`scroll`,e)}}),f=m(()=>typeof t.name==`string`||typeof t.name==`number`?t.name:String(t.name));function h(){let e=o.value.vertical;return e&&o.value.keepAlive?a(p,o.value.keepAliveProps.value,u.value?[a(o.value.needsUniqueKeepAliveWrapper.value?s(f.value,()=>({...X,name:f.value})):X,{key:f.value},n.default)]:void 0):!e||u.value?Y(n):void 0}return()=>a(`div`,{ref:c,class:`q-stepper__step`,role:`group`,"aria-label":t.title,...d.value},o.value.vertical?[a(J,{stepper:o.value,step:t,goToPanel:o.value.goToPanel}),o.value.animated?a(ee,h):h()]:[h()])}}),Q=/(-\w)/g;function ne(e){let t={};for(let n in e){let r=n.replace(Q,e=>e[1].toUpperCase());t[r]=e[n]}return t}var re=D({name:`QStepper`,props:{...A,...P,flat:Boolean,bordered:Boolean,alternativeLabels:Boolean,headerNav:Boolean,contracted:Boolean,headerClass:String,inactiveColor:String,inactiveIcon:String,doneIcon:String,doneColor:String,activeIcon:String,activeColor:String,errorIcon:String,errorColor:String},emits:F,setup(e,{slots:t}){let n=O(),r=j(e,n),{updatePanelsList:i,isValidPanelName:o,updatePanelIndex:s,getPanelContent:l,getPanels:d,panelDirectives:f,goToPanel:p,keepAliveProps:h,needsUniqueKeepAliveWrapper:g}=I();c(k,m(()=>({goToPanel:p,keepAliveProps:h,needsUniqueKeepAliveWrapper:g,...e})));let _=m(()=>`q-stepper q-stepper--${e.vertical?`vertical`:`horizontal`}`+(e.flat?` q-stepper--flat`:``)+(e.bordered?` q-stepper--bordered`:``)+(r()?` q-stepper--dark q-dark`:``)),v=m(()=>`q-stepper__header row items-stretch justify-between q-stepper__header--${e.alternativeLabels?`alternative`:`standard`}-labels`+(e.bordered||!e.flat?` q-stepper__header--border`:``)+(e.contracted?` q-stepper__header--contracted`:``)+(e.headerClass===void 0?``:` ${e.headerClass}`));function y(){let n=x(t.message,[]);if(e.vertical){o(e.modelValue)&&s();let r=a(`div`,{class:`q-stepper__content`},x(t.default));return n===void 0?[r]:n.concat(r)}return[a(`div`,{class:v.value},d().map(t=>{let n=ne(t.props);return a(J,{key:n.name,stepper:e,step:n,goToPanel:p})})),n,u(a(`div`,{class:`q-stepper__content q-panel-parent`},l()),f.value)]}return()=>(i(t),a(`div`,{class:_.value},S(t.navigation,y())))}}),ie={class:`slash-suggestions rounded-borders`},ae={class:`slash-section-header`},oe=[`onMousedown`],se={class:`slash-name text-caption`},ce={class:`slash-section-header`},le=[`onMousedown`],ue={class:`slash-name text-caption`},de={key:0,class:`slash-description text-caption text-kobo-3 q-ml-xs`},fe={class:`slash-section-header`},pe=[`onMousedown`],$={class:`slash-name text-caption`},me={key:0,class:`slash-description text-caption text-kobo-3 q-ml-xs`},he=te(v({__name:`SlashSuggestionsPopup`,props:{groupedDropdown:{},flatDropdown:{},selectedIndex:{}},emits:[`select`],setup(e,{emit:i}){let{t:a}=M(),o=i;function c(e){let t=z[`/${e}`];if(!t)return``;let n=t.descriptionKey,r=a(n);return r===n?``:r}return(i,l)=>(s(),h(`div`,ie,[e.groupedDropdown.skills.length>0?(s(),h(g,{key:0},[_(`div`,ae,r(t(a)(`chatInput.dropdownSkills`)),1),(s(!0),h(g,null,y(e.groupedDropdown.skills,t=>(s(),h(`div`,{key:`skill-${t.name}`,class:n([`slash-item row items-center q-px-sm q-py-xs cursor-pointer`,{"slash-item--active":e.flatDropdown.indexOf(t)===e.selectedIndex}]),onMousedown:E(e=>o(`select`,t),[`prevent`])},[d(T,{name:`bolt`,size:`12px`,color:`primary`,class:`q-mr-xs`}),_(`span`,se,r(t.name),1)],42,oe))),128))],64)):f(``,!0),e.groupedDropdown.kobo.length>0?(s(),h(g,{key:1},[_(`div`,ce,r(t(a)(`chatInput.dropdownKobo`)),1),(s(!0),h(g,null,y(e.groupedDropdown.kobo,t=>(s(),h(`div`,{key:`kobo-${t.name}`,class:n([`slash-item row items-center q-px-sm q-py-xs cursor-pointer`,{"slash-item--active":e.flatDropdown.indexOf(t)===e.selectedIndex}]),onMousedown:E(e=>o(`select`,t),[`prevent`])},[d(T,{name:`terminal`,size:`12px`,color:`teal-4`,class:`q-mr-xs`}),_(`span`,ue,`/`+r(t.name),1),c(t.name)?(s(),h(`span`,de,`— `+r(c(t.name)),1)):f(``,!0)],42,le))),128))],64)):f(``,!0),e.groupedDropdown.templates.length>0?(s(),h(g,{key:2},[_(`div`,fe,r(t(a)(`chatInput.dropdownTemplates`)),1),(s(!0),h(g,null,y(e.groupedDropdown.templates,t=>(s(),h(`div`,{key:`tpl-${t.name}`,class:n([`slash-item row items-center q-px-sm q-py-xs cursor-pointer`,{"slash-item--active":e.flatDropdown.indexOf(t)===e.selectedIndex}]),onMousedown:E(e=>o(`select`,t),[`prevent`])},[d(T,{name:`description`,size:`12px`,color:`amber-4`,class:`q-mr-xs`}),_(`span`,$,`/`+r(t.name),1),t.description?(s(),h(`span`,me,`— `+r(t.description),1)):f(``,!0)],42,pe))),128))],64)):f(``,!0)]))}}),[[`__scopeId`,`data-v-931c9d69`]]);function ge(e,t,n={}){let r=N(),a=i([]),s=i(!1),c=i(``),l=i(0),u=0;async function d(){let e=Date.now();if(!(e-u<5e3&&a.value.length>0)){u=e;try{let e=await fetch(`/api/skills`);e.ok&&(a.value=await e.json())}catch{}}}function f(){let n=t();if(!n)return null;let r=n.selectionStart??e.value.length,i=e.value.slice(0,r).match(/\/([\w:.-]*)$/);return i?i[1]:null}async function p(){let e=f();e===null?s.value=!1:(await d(),c.value=e,s.value=!0,l.value=0)}function h(){s.value=!1}function g(n){let r=t();if(!r){e.value=n;return}let i=r.selectionStart??e.value.length,a=e.value.slice(0,i),o=e.value.slice(i),s=a.match(/\/[\w:.-]*$/);if(!s){e.value=n;return}let c=s.index??i;e.value=e.value.slice(0,c)+n+o}let _=m(()=>{let e=c.value.toLowerCase(),t=t=>e===``||t.toLowerCase().includes(e);return{skills:a.value.filter(e=>t(e)).map(e=>({type:`skill`,name:e})),kobo:n.excludeKoboCommands?[]:Object.keys(z).map(e=>e.replace(/^\//,``)).filter(e=>t(e)).map(e=>({type:`kobo`,name:e})),templates:r.templates.filter(e=>t(e.slug)).map(e=>({type:`template`,name:e.slug,description:e.description}))}}),v=m(()=>[..._.value.skills,..._.value.kobo,..._.value.templates]);return o(()=>v.value.length,e=>{if(e===0){l.value=0;return}l.value>=e&&(l.value=e-1)}),{skills:a,showSkills:s,skillFilter:c,selectedSkillIndex:l,groupedDropdown:_,flatDropdown:v,fetchSkills:d,detectSlashFragment:p,replaceFragmentWith:g,closeDropdown:h}}function _e(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>{let r=t[n];return r==null?e:String(r)})}function ve(e){let t={};return e.workspace&&(t.workspace_name=e.workspace.name,t.working_branch=e.workspace.workingBranch,t.source_branch=e.workspace.sourceBranch,t.project_path=e.workspace.projectPath,t.worktree_path=e.workspace.worktreePath??`${e.workspace.projectPath}/.worktrees/${e.workspace.workingBranch}`),e.gitStats&&(t.commit_count=e.gitStats.commitCount,t.unpushed_count=e.gitStats.unpushedCount,t.files_changed=e.gitStats.filesChanged,t.insertions=e.gitStats.insertions,t.deletions=e.gitStats.deletions,e.gitStats.prNumber!=null&&(t.pr_number=e.gitStats.prNumber),e.gitStats.prUrl&&(t.pr_url=e.gitStats.prUrl),e.gitStats.prState&&(t.pr_state=e.gitStats.prState)),e.sessionName&&(t.session_name=e.sessionName),t}export{re as a,W as c,K as d,he as i,U as l,_e as n,Z as o,ge as r,H as s,ve as t,G as u};
@@ -1 +0,0 @@
1
- import{at as e,it as t,ot as n,rt as r,u as i}from"./index-CPfrY38K.js";var a=i(async({app:i})=>{if(i.use(t),e!==`en`)try{await n(e)}catch(e){console.error(`[i18n] could not load the saved locale, staying in English:`,e)}r(e)});export{a as default};