@qelos/aidev 1.2.0 → 1.3.1

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 (215) hide show
  1. package/.env.aidev.example +12 -1
  2. package/README.md +23 -6
  3. package/dist/ai/devin.d.ts +7 -0
  4. package/dist/ai/devin.d.ts.map +1 -0
  5. package/dist/ai/devin.js +91 -0
  6. package/dist/ai/devin.js.map +1 -0
  7. package/dist/ai/index.js +2 -2
  8. package/dist/ai/index.js.map +1 -1
  9. package/dist/cli.js +31 -0
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/help.js +1 -1
  12. package/dist/commands/help.js.map +1 -1
  13. package/dist/commands/hooks.d.ts +5 -0
  14. package/dist/commands/hooks.d.ts.map +1 -0
  15. package/dist/commands/hooks.js +86 -0
  16. package/dist/commands/hooks.js.map +1 -0
  17. package/dist/commands/init.d.ts +1 -0
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +18 -109
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/run.d.ts +1 -1
  22. package/dist/commands/run.d.ts.map +1 -1
  23. package/dist/commands/run.js +78 -63
  24. package/dist/commands/run.js.map +1 -1
  25. package/dist/commands/schedule.js +2 -2
  26. package/dist/commands/schedule.js.map +1 -1
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +8 -1
  29. package/dist/config.js.map +1 -1
  30. package/dist/diagnostics.d.ts.map +1 -1
  31. package/dist/diagnostics.js +1 -2
  32. package/dist/diagnostics.js.map +1 -1
  33. package/dist/hooks.d.ts +18 -0
  34. package/dist/hooks.d.ts.map +1 -1
  35. package/dist/hooks.js +16 -0
  36. package/dist/hooks.js.map +1 -1
  37. package/dist/hooksTemplate.d.ts +14 -0
  38. package/dist/hooksTemplate.d.ts.map +1 -0
  39. package/dist/hooksTemplate.js +274 -0
  40. package/dist/hooksTemplate.js.map +1 -0
  41. package/dist/logger.d.ts +1 -0
  42. package/dist/logger.d.ts.map +1 -1
  43. package/dist/logger.js +32 -0
  44. package/dist/logger.js.map +1 -1
  45. package/dist/platform.d.ts +2 -2
  46. package/dist/platform.js +2 -2
  47. package/dist/safeMode.d.ts +32 -0
  48. package/dist/safeMode.d.ts.map +1 -0
  49. package/dist/safeMode.js +192 -0
  50. package/dist/safeMode.js.map +1 -0
  51. package/dist/types.d.ts +3 -1
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +2 -2
  54. package/ui/.output/nitro.json +1 -1
  55. package/ui/.output/public/_nuxt/6wLLp9Nc.js +1 -0
  56. package/ui/.output/public/_nuxt/BGkU0f28.js +1 -0
  57. package/ui/.output/public/_nuxt/BOIhDy_l.js +4 -0
  58. package/ui/.output/public/_nuxt/BWJzzHTi.js +1 -0
  59. package/ui/.output/public/_nuxt/{3LZdFtk_.js → By4xSvKt.js} +3 -3
  60. package/ui/.output/public/_nuxt/ByAMJ0xS.js +1 -0
  61. package/ui/.output/public/_nuxt/C1xk3ymy.js +1 -0
  62. package/ui/.output/public/_nuxt/CBV5GuL6.js +11 -0
  63. package/ui/.output/public/_nuxt/CTtW-0zG.js +1 -0
  64. package/ui/.output/public/_nuxt/CX0vIr0s.js +131 -0
  65. package/ui/.output/public/_nuxt/{LzHPbXPK.js → CYm8nRCj.js} +1 -1
  66. package/ui/.output/public/_nuxt/CdHqKVo4.js +1 -0
  67. package/ui/.output/public/_nuxt/CnXdKLRd.js +16 -0
  68. package/ui/.output/public/_nuxt/Cz9dogwK.js +1 -0
  69. package/ui/.output/public/_nuxt/DGHfexQZ.js +1 -0
  70. package/ui/.output/public/_nuxt/{CWjftssB.js → DOoocm0F.js} +1 -1
  71. package/ui/.output/public/_nuxt/{DZd8Jv5H.js → D_gcbXK2.js} +1 -1
  72. package/ui/.output/public/_nuxt/{CO4XMBYO.js → Dfhp6TEA.js} +11 -11
  73. package/ui/.output/public/_nuxt/{BtD1YBwM.js → G5BjvTWO.js} +1 -1
  74. package/ui/.output/public/_nuxt/H73b_QUy.js +1 -0
  75. package/ui/.output/public/_nuxt/{BMTHyzVP.js → LCoCV2KL.js} +1 -1
  76. package/ui/.output/public/_nuxt/Zrl3Utak.js +1 -0
  77. package/ui/.output/public/_nuxt/config.CaB_F_OT.css +1 -0
  78. package/ui/.output/public/_nuxt/default.D13_FS9T.css +1 -0
  79. package/ui/.output/public/_nuxt/hooks.B03-GWTh.css +1 -0
  80. package/ui/.output/public/_nuxt/kPPYUzXr.js +2 -0
  81. package/ui/.output/public/_nuxt/logs.DLMkvOEl.css +1 -0
  82. package/ui/.output/public/_nuxt/mHp9eItY.js +1 -0
  83. package/ui/.output/public/_nuxt/{BTfAgCfF.js → tyaD1vVi.js} +1 -1
  84. package/ui/.output/public/_nuxt/{BGlShnpS.js → ynXKxjpn.js} +1 -1
  85. package/ui/.output/public/_nuxt/{B8sr5ZW-.js → yqBy-NAR.js} +2 -2
  86. package/ui/.output/server/chunks/_/hooksTemplate.mjs +365 -0
  87. package/ui/.output/server/chunks/_/hooksTemplate.mjs.map +1 -0
  88. package/ui/.output/server/chunks/build/{Badge-YPOjmkfv.mjs → Badge-nNgbDd8N.mjs} +2 -2
  89. package/ui/.output/server/chunks/build/{Badge-YPOjmkfv.mjs.map → Badge-nNgbDd8N.mjs.map} +1 -1
  90. package/ui/.output/server/chunks/build/{Button-CZHl6fpI.mjs → Button-CQZG7w2L.mjs} +117 -3
  91. package/ui/.output/server/chunks/build/Button-CQZG7w2L.mjs.map +1 -0
  92. package/ui/.output/server/chunks/build/{Card--ibiHV_r.mjs → Card-DdEnDTQW.mjs} +2 -2
  93. package/ui/.output/server/chunks/build/{Card--ibiHV_r.mjs.map → Card-DdEnDTQW.mjs.map} +1 -1
  94. package/ui/.output/server/chunks/build/{FormGroup-CX5VmH8y.mjs → FormGroup-BfYiVGgN.mjs} +2 -2
  95. package/ui/.output/server/chunks/build/{FormGroup-CX5VmH8y.mjs.map → FormGroup-BfYiVGgN.mjs.map} +1 -1
  96. package/ui/.output/server/chunks/build/{Input-kmqS1oY_.mjs → Input-Cnk3P_aB.mjs} +5 -60
  97. package/ui/.output/server/chunks/build/Input-Cnk3P_aB.mjs.map +1 -0
  98. package/ui/.output/server/chunks/build/{Modal-DmZs0Ekg.mjs → Modal-DfVO6DJD.mjs} +10 -5
  99. package/ui/.output/server/chunks/build/Modal-DfVO6DJD.mjs.map +1 -0
  100. package/ui/.output/server/chunks/build/{Select-n4_YfXfk.mjs → Select-Dc9_TJIR.mjs} +3 -3
  101. package/ui/.output/server/chunks/build/{Select-n4_YfXfk.mjs.map → Select-Dc9_TJIR.mjs.map} +1 -1
  102. package/ui/.output/server/chunks/build/client.precomputed.mjs +1 -1
  103. package/ui/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  104. package/ui/.output/server/chunks/build/{config-Bkb2wy7R.mjs → config-BUokZPak.mjs} +78 -58
  105. package/ui/.output/server/chunks/build/config-BUokZPak.mjs.map +1 -0
  106. package/ui/.output/server/chunks/build/config-styles.irltMnuD.mjs +8 -0
  107. package/ui/.output/server/chunks/build/config-styles.irltMnuD.mjs.map +1 -0
  108. package/ui/.output/server/chunks/build/{default-DmD3qBXZ.mjs → default-6TcwTt3p.mjs} +10 -9
  109. package/ui/.output/server/chunks/build/default-6TcwTt3p.mjs.map +1 -0
  110. package/ui/.output/server/chunks/build/default-styles.BqL9zxh4.mjs +8 -0
  111. package/ui/.output/server/chunks/build/default-styles.BqL9zxh4.mjs.map +1 -0
  112. package/ui/.output/server/chunks/build/entry-styles.q-b4rEBh.mjs +11 -0
  113. package/ui/.output/server/chunks/build/entry-styles.q-b4rEBh.mjs.map +1 -0
  114. package/ui/.output/server/chunks/build/hooks-k2ZmlVpA.mjs +4181 -0
  115. package/ui/.output/server/chunks/build/hooks-k2ZmlVpA.mjs.map +1 -0
  116. package/ui/.output/server/chunks/build/hooks-styles.Ddk4F_Gj.mjs +8 -0
  117. package/ui/.output/server/chunks/build/hooks-styles.Ddk4F_Gj.mjs.map +1 -0
  118. package/ui/.output/server/chunks/build/{index-Dy4Tu7MB.mjs → index-DwMIJp2e.mjs} +7 -3
  119. package/ui/.output/server/chunks/build/index-DwMIJp2e.mjs.map +1 -0
  120. package/ui/.output/server/chunks/build/{index-BvfXQQ2n.mjs → index-JLPhao-C.mjs} +5 -5
  121. package/ui/.output/server/chunks/build/{index-BvfXQQ2n.mjs.map → index-JLPhao-C.mjs.map} +1 -1
  122. package/ui/.output/server/chunks/build/{interval-DHZqEf-n.mjs → interval-DPa3fpS0.mjs} +3 -3
  123. package/ui/.output/server/chunks/build/{interval-DHZqEf-n.mjs.map → interval-DPa3fpS0.mjs.map} +1 -1
  124. package/ui/.output/server/chunks/build/{login-B5YkLJCV.mjs → login-D9DpNq3o.mjs} +6 -5
  125. package/ui/.output/server/chunks/build/login-D9DpNq3o.mjs.map +1 -0
  126. package/ui/.output/server/chunks/build/{logs-BvD1Y3HI.mjs → logs-BVuWOSb6.mjs} +49 -31
  127. package/ui/.output/server/chunks/build/logs-BVuWOSb6.mjs.map +1 -0
  128. package/ui/.output/server/chunks/build/logs-styles.C2Mi0JvX.mjs +8 -0
  129. package/ui/.output/server/chunks/build/logs-styles.C2Mi0JvX.mjs.map +1 -0
  130. package/ui/.output/server/chunks/build/{run-BStPkbGg.mjs → run-BVQZSGcX.mjs} +5 -5
  131. package/ui/.output/server/chunks/build/{run-BStPkbGg.mjs.map → run-BVQZSGcX.mjs.map} +1 -1
  132. package/ui/.output/server/chunks/build/{schedule-B2UKsnRW.mjs → schedule-rRz2CwWh.mjs} +10 -9
  133. package/ui/.output/server/chunks/build/schedule-rRz2CwWh.mjs.map +1 -0
  134. package/ui/.output/server/chunks/build/server.mjs +14 -9
  135. package/ui/.output/server/chunks/build/server.mjs.map +1 -1
  136. package/ui/.output/server/chunks/build/styles.mjs +6 -5
  137. package/ui/.output/server/chunks/build/styles.mjs.map +1 -1
  138. package/ui/.output/server/chunks/build/{tasks-DBH3Z6lg.mjs → tasks-DJjZQWcq.mjs} +10 -9
  139. package/ui/.output/server/chunks/build/tasks-DJjZQWcq.mjs.map +1 -0
  140. package/ui/.output/server/chunks/build/{useApi-Bqajqsuz.mjs → useApi-Brbyp7hV.mjs} +3 -3
  141. package/ui/.output/server/chunks/build/useApi-Brbyp7hV.mjs.map +1 -0
  142. package/ui/.output/server/chunks/build/useFormGroup-DqE91r20.mjs +61 -0
  143. package/ui/.output/server/chunks/build/useFormGroup-DqE91r20.mjs.map +1 -0
  144. package/ui/.output/server/chunks/nitro/nitro.mjs +189 -151
  145. package/ui/.output/server/chunks/routes/api/config/test.post.mjs +1 -1
  146. package/ui/.output/server/chunks/routes/api/config/test.post.mjs.map +1 -1
  147. package/ui/.output/server/chunks/routes/api/hooks-execute.post.mjs +83 -0
  148. package/ui/.output/server/chunks/routes/api/hooks-execute.post.mjs.map +1 -0
  149. package/ui/.output/server/chunks/routes/api/hooks-regenerate.post.mjs +31 -0
  150. package/ui/.output/server/chunks/routes/api/hooks-regenerate.post.mjs.map +1 -0
  151. package/ui/.output/server/chunks/routes/api/hooks-update.post.mjs +31 -0
  152. package/ui/.output/server/chunks/routes/api/hooks-update.post.mjs.map +1 -0
  153. package/ui/.output/server/chunks/routes/api/hooks.get.mjs +28 -0
  154. package/ui/.output/server/chunks/routes/api/hooks.get.mjs.map +1 -0
  155. package/ui/.output/server/chunks/routes/api/hooks.put.mjs +33 -0
  156. package/ui/.output/server/chunks/routes/api/hooks.put.mjs.map +1 -0
  157. package/ui/.output/server/chunks/routes/api/logs.get.mjs +7 -2
  158. package/ui/.output/server/chunks/routes/api/logs.get.mjs.map +1 -1
  159. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/_virtual/_rollupPluginBabelHelpers.js +123 -0
  160. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/config/index.js +11 -0
  161. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/index.js +9 -0
  162. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/loader/index.js +175 -0
  163. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/compose.js +16 -0
  164. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/curry.js +20 -0
  165. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/deepMerge.js +18 -0
  166. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/isObject.js +9 -0
  167. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/makeCancelable.js +25 -0
  168. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/validators/index.js +49 -0
  169. package/ui/.output/server/node_modules/@monaco-editor/loader/package.json +51 -0
  170. package/ui/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +1197 -0
  171. package/ui/.output/server/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +34 -0
  172. package/ui/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +74 -0
  173. package/ui/.output/server/node_modules/@tanstack/virtual-core/package.json +56 -0
  174. package/ui/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +66 -0
  175. package/ui/.output/server/node_modules/@tanstack/vue-virtual/package.json +68 -0
  176. package/ui/.output/server/node_modules/state-local/lib/cjs/state-local.js +195 -0
  177. package/ui/.output/server/node_modules/state-local/package.json +59 -0
  178. package/ui/.output/server/package.json +4 -0
  179. package/ui/package.json +1 -0
  180. package/ui/.output/public/_nuxt/B93YYUZf.js +0 -1
  181. package/ui/.output/public/_nuxt/BAs1isOw.js +0 -1
  182. package/ui/.output/public/_nuxt/BrZL2iQr.js +0 -1
  183. package/ui/.output/public/_nuxt/Bv6Ws9vz.js +0 -1
  184. package/ui/.output/public/_nuxt/C2WdrjFS.js +0 -1
  185. package/ui/.output/public/_nuxt/CVTgFccA.js +0 -2
  186. package/ui/.output/public/_nuxt/Ceb2855t.js +0 -1
  187. package/ui/.output/public/_nuxt/Cg55PjEy.js +0 -4
  188. package/ui/.output/public/_nuxt/D0ZgktSu.js +0 -1
  189. package/ui/.output/public/_nuxt/DZIUG6ZX.js +0 -1
  190. package/ui/.output/public/_nuxt/DihqGT4A.js +0 -1
  191. package/ui/.output/public/_nuxt/MzK2TZ-I.js +0 -16
  192. package/ui/.output/public/_nuxt/TJXLPQOj.js +0 -1
  193. package/ui/.output/public/_nuxt/VuiIFQtE.js +0 -1
  194. package/ui/.output/public/_nuxt/config.C19X1GwO.css +0 -1
  195. package/ui/.output/public/_nuxt/default.Dw-0Xw5D.css +0 -1
  196. package/ui/.output/public/_nuxt/logs.PK6CTQHM.css +0 -1
  197. package/ui/.output/server/chunks/build/Button-CZHl6fpI.mjs.map +0 -1
  198. package/ui/.output/server/chunks/build/Input-kmqS1oY_.mjs.map +0 -1
  199. package/ui/.output/server/chunks/build/Modal-DmZs0Ekg.mjs.map +0 -1
  200. package/ui/.output/server/chunks/build/config-Bkb2wy7R.mjs.map +0 -1
  201. package/ui/.output/server/chunks/build/config-styles.B4mTchgT.mjs +0 -8
  202. package/ui/.output/server/chunks/build/config-styles.B4mTchgT.mjs.map +0 -1
  203. package/ui/.output/server/chunks/build/default-DmD3qBXZ.mjs.map +0 -1
  204. package/ui/.output/server/chunks/build/default-styles.DmprFUrQ.mjs +0 -8
  205. package/ui/.output/server/chunks/build/default-styles.DmprFUrQ.mjs.map +0 -1
  206. package/ui/.output/server/chunks/build/entry-styles.Cg1Sndbr.mjs +0 -11
  207. package/ui/.output/server/chunks/build/entry-styles.Cg1Sndbr.mjs.map +0 -1
  208. package/ui/.output/server/chunks/build/index-Dy4Tu7MB.mjs.map +0 -1
  209. package/ui/.output/server/chunks/build/login-B5YkLJCV.mjs.map +0 -1
  210. package/ui/.output/server/chunks/build/logs-BvD1Y3HI.mjs.map +0 -1
  211. package/ui/.output/server/chunks/build/logs-styles.CU5b1wKf.mjs +0 -8
  212. package/ui/.output/server/chunks/build/logs-styles.CU5b1wKf.mjs.map +0 -1
  213. package/ui/.output/server/chunks/build/schedule-B2UKsnRW.mjs.map +0 -1
  214. package/ui/.output/server/chunks/build/tasks-DBH3Z6lg.mjs.map +0 -1
  215. package/ui/.output/server/chunks/build/useApi-Bqajqsuz.mjs.map +0 -1
@@ -0,0 +1,34 @@
1
+ function createLazyMeasurementsView(count, flat, getItemKey) {
2
+ const cache = new Array(count);
3
+ return new Proxy(cache, {
4
+ get(target, prop, receiver) {
5
+ if (typeof prop === "string") {
6
+ const c = prop.charCodeAt(0);
7
+ if (c >= 48 && c <= 57) {
8
+ const i = +prop;
9
+ if (Number.isInteger(i) && i >= 0 && i < count) {
10
+ let v = target[i];
11
+ if (!v) {
12
+ const s = flat[i * 2];
13
+ v = target[i] = {
14
+ index: i,
15
+ key: getItemKey(i),
16
+ start: s,
17
+ size: flat[i * 2 + 1],
18
+ end: s + flat[i * 2 + 1],
19
+ lane: 0
20
+ };
21
+ }
22
+ return v;
23
+ }
24
+ }
25
+ if (prop === "length") return count;
26
+ }
27
+ return Reflect.get(target, prop, receiver);
28
+ }
29
+ });
30
+ }
31
+ export {
32
+ createLazyMeasurementsView
33
+ };
34
+ //# sourceMappingURL=lazy-measurements.js.map
@@ -0,0 +1,74 @@
1
+ function memo(getDeps, fn, opts) {
2
+ let deps = opts.initialDeps ?? [];
3
+ let result;
4
+ let isInitial = true;
5
+ function memoizedFunction() {
6
+ var _a;
7
+ const debugEnabled = process.env.NODE_ENV !== "production" && !!opts.key && !!((_a = opts.debug) == null ? void 0 : _a.call(opts));
8
+ let depTime = 0;
9
+ if (debugEnabled) depTime = Date.now();
10
+ const newDeps = getDeps();
11
+ const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);
12
+ if (!depsChanged) {
13
+ return result;
14
+ }
15
+ deps = newDeps;
16
+ let resultTime = 0;
17
+ if (debugEnabled) resultTime = Date.now();
18
+ result = fn(...newDeps);
19
+ if (debugEnabled) {
20
+ const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;
21
+ const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;
22
+ const resultFpsPercentage = resultEndTime / 16;
23
+ const pad = (str, num) => {
24
+ str = String(str);
25
+ while (str.length < num) {
26
+ str = " " + str;
27
+ }
28
+ return str;
29
+ };
30
+ console.info(
31
+ `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,
32
+ `
33
+ font-size: .6rem;
34
+ font-weight: bold;
35
+ color: hsl(${Math.max(
36
+ 0,
37
+ Math.min(120 - 120 * resultFpsPercentage, 120)
38
+ )}deg 100% 31%);`,
39
+ opts == null ? void 0 : opts.key
40
+ );
41
+ }
42
+ if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) {
43
+ opts.onChange(result);
44
+ }
45
+ isInitial = false;
46
+ return result;
47
+ }
48
+ memoizedFunction.updateDeps = (newDeps) => {
49
+ deps = newDeps;
50
+ };
51
+ return memoizedFunction;
52
+ }
53
+ function notUndefined(value, msg) {
54
+ if (value === void 0) {
55
+ throw new Error(`Unexpected undefined${msg ? `: ${msg}` : ""}`);
56
+ } else {
57
+ return value;
58
+ }
59
+ }
60
+ const approxEqual = (a, b) => Math.abs(a - b) < 1.01;
61
+ const debounce = (targetWindow, fn, ms) => {
62
+ let timeoutId;
63
+ return function(...args) {
64
+ targetWindow.clearTimeout(timeoutId);
65
+ timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);
66
+ };
67
+ };
68
+ export {
69
+ approxEqual,
70
+ debounce,
71
+ memo,
72
+ notUndefined
73
+ };
74
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@tanstack/virtual-core",
3
+ "version": "3.16.0",
4
+ "description": "Headless UI for virtualizing scrollable elements in TS/JS + Frameworks",
5
+ "author": "Tanner Linsley",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/TanStack/virtual.git",
10
+ "directory": "packages/virtual-core"
11
+ },
12
+ "homepage": "https://tanstack.com/virtual",
13
+ "funding": {
14
+ "type": "github",
15
+ "url": "https://github.com/sponsors/tannerlinsley"
16
+ },
17
+ "keywords": [
18
+ "react",
19
+ "vue",
20
+ "solid",
21
+ "virtual",
22
+ "virtual-core",
23
+ "datagrid"
24
+ ],
25
+ "type": "module",
26
+ "types": "dist/esm/index.d.ts",
27
+ "main": "dist/cjs/index.cjs",
28
+ "module": "dist/esm/index.js",
29
+ "exports": {
30
+ ".": {
31
+ "import": {
32
+ "types": "./dist/esm/index.d.ts",
33
+ "default": "./dist/esm/index.js"
34
+ },
35
+ "require": {
36
+ "types": "./dist/cjs/index.d.cts",
37
+ "default": "./dist/cjs/index.cjs"
38
+ }
39
+ },
40
+ "./package.json": "./package.json"
41
+ },
42
+ "sideEffects": false,
43
+ "files": [
44
+ "dist",
45
+ "src"
46
+ ],
47
+ "scripts": {
48
+ "clean": "premove ./dist ./coverage",
49
+ "test:eslint": "eslint ./src",
50
+ "test:types": "tsc",
51
+ "test:lib": "vitest",
52
+ "test:lib:dev": "pnpm run test:lib --watch",
53
+ "test:build": "publint --strict",
54
+ "build": "vite build"
55
+ }
56
+ }
@@ -0,0 +1,66 @@
1
+ import { elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect, Virtualizer } from "@tanstack/virtual-core";
2
+ export * from "@tanstack/virtual-core";
3
+ import { computed, unref, shallowRef, watch, triggerRef, onScopeDispose } from "vue";
4
+ function useVirtualizerBase(options) {
5
+ const virtualizer = new Virtualizer(unref(options));
6
+ const state = shallowRef(virtualizer);
7
+ const cleanup = virtualizer._didMount();
8
+ watch(
9
+ () => unref(options).getScrollElement(),
10
+ (el) => {
11
+ if (el) {
12
+ virtualizer._willUpdate();
13
+ }
14
+ },
15
+ {
16
+ immediate: true
17
+ }
18
+ );
19
+ watch(
20
+ () => unref(options),
21
+ (options2) => {
22
+ virtualizer.setOptions({
23
+ ...options2,
24
+ onChange: (instance, sync) => {
25
+ var _a;
26
+ triggerRef(state);
27
+ (_a = options2.onChange) == null ? void 0 : _a.call(options2, instance, sync);
28
+ }
29
+ });
30
+ virtualizer._willUpdate();
31
+ triggerRef(state);
32
+ },
33
+ {
34
+ immediate: true
35
+ }
36
+ );
37
+ onScopeDispose(cleanup);
38
+ return state;
39
+ }
40
+ function useVirtualizer(options) {
41
+ return useVirtualizerBase(
42
+ computed(() => ({
43
+ observeElementRect,
44
+ observeElementOffset,
45
+ scrollToFn: elementScroll,
46
+ ...unref(options)
47
+ }))
48
+ );
49
+ }
50
+ function useWindowVirtualizer(options) {
51
+ return useVirtualizerBase(
52
+ computed(() => ({
53
+ getScrollElement: () => typeof document !== "undefined" ? window : null,
54
+ observeElementRect: observeWindowRect,
55
+ observeElementOffset: observeWindowOffset,
56
+ scrollToFn: windowScroll,
57
+ initialOffset: () => typeof document !== "undefined" ? window.scrollY : 0,
58
+ ...unref(options)
59
+ }))
60
+ );
61
+ }
62
+ export {
63
+ useVirtualizer,
64
+ useWindowVirtualizer
65
+ };
66
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "@tanstack/vue-virtual",
3
+ "version": "3.13.26",
4
+ "description": "Headless UI for virtualizing scrollable elements in Vue",
5
+ "author": "Tanner Linsley",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/TanStack/virtual.git",
10
+ "directory": "packages/vue-virtual"
11
+ },
12
+ "homepage": "https://tanstack.com/virtual",
13
+ "publishConfig": {
14
+ "registry": "https://registry.npmjs.org/"
15
+ },
16
+ "funding": {
17
+ "type": "github",
18
+ "url": "https://github.com/sponsors/tannerlinsley"
19
+ },
20
+ "keywords": [
21
+ "react",
22
+ "vue",
23
+ "solid",
24
+ "svelte",
25
+ "virtual",
26
+ "virtual-core",
27
+ "datagrid"
28
+ ],
29
+ "type": "module",
30
+ "types": "dist/esm/index.d.ts",
31
+ "main": "dist/cjs/index.cjs",
32
+ "module": "dist/esm/index.js",
33
+ "exports": {
34
+ ".": {
35
+ "import": {
36
+ "types": "./dist/esm/index.d.ts",
37
+ "default": "./dist/esm/index.js"
38
+ },
39
+ "require": {
40
+ "types": "./dist/cjs/index.d.cts",
41
+ "default": "./dist/cjs/index.cjs"
42
+ }
43
+ },
44
+ "./package.json": "./package.json"
45
+ },
46
+ "sideEffects": false,
47
+ "files": [
48
+ "dist",
49
+ "src"
50
+ ],
51
+ "dependencies": {
52
+ "@tanstack/virtual-core": "3.16.0"
53
+ },
54
+ "devDependencies": {
55
+ "@vitejs/plugin-vue": "^5.2.4",
56
+ "vue": "^3.5.16"
57
+ },
58
+ "peerDependencies": {
59
+ "vue": "^2.7.0 || ^3.0.0"
60
+ },
61
+ "scripts": {
62
+ "clean": "premove ./dist ./coverage",
63
+ "test:eslint": "eslint ./src",
64
+ "test:types": "tsc",
65
+ "test:build": "publint --strict",
66
+ "build": "vite build"
67
+ }
68
+ }
@@ -0,0 +1,195 @@
1
+ 'use strict';
2
+
3
+ function _defineProperty(obj, key, value) {
4
+ if (key in obj) {
5
+ Object.defineProperty(obj, key, {
6
+ value: value,
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true
10
+ });
11
+ } else {
12
+ obj[key] = value;
13
+ }
14
+
15
+ return obj;
16
+ }
17
+
18
+ function ownKeys(object, enumerableOnly) {
19
+ var keys = Object.keys(object);
20
+
21
+ if (Object.getOwnPropertySymbols) {
22
+ var symbols = Object.getOwnPropertySymbols(object);
23
+ if (enumerableOnly) symbols = symbols.filter(function (sym) {
24
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
25
+ });
26
+ keys.push.apply(keys, symbols);
27
+ }
28
+
29
+ return keys;
30
+ }
31
+
32
+ function _objectSpread2(target) {
33
+ for (var i = 1; i < arguments.length; i++) {
34
+ var source = arguments[i] != null ? arguments[i] : {};
35
+
36
+ if (i % 2) {
37
+ ownKeys(Object(source), true).forEach(function (key) {
38
+ _defineProperty(target, key, source[key]);
39
+ });
40
+ } else if (Object.getOwnPropertyDescriptors) {
41
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
42
+ } else {
43
+ ownKeys(Object(source)).forEach(function (key) {
44
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
45
+ });
46
+ }
47
+ }
48
+
49
+ return target;
50
+ }
51
+
52
+ function compose() {
53
+ for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {
54
+ fns[_key] = arguments[_key];
55
+ }
56
+
57
+ return function (x) {
58
+ return fns.reduceRight(function (y, f) {
59
+ return f(y);
60
+ }, x);
61
+ };
62
+ }
63
+
64
+ function curry(fn) {
65
+ return function curried() {
66
+ var _this = this;
67
+
68
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
69
+ args[_key2] = arguments[_key2];
70
+ }
71
+
72
+ return args.length >= fn.length ? fn.apply(this, args) : function () {
73
+ for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
74
+ nextArgs[_key3] = arguments[_key3];
75
+ }
76
+
77
+ return curried.apply(_this, [].concat(args, nextArgs));
78
+ };
79
+ };
80
+ }
81
+
82
+ function isObject(value) {
83
+ return {}.toString.call(value).includes('Object');
84
+ }
85
+
86
+ function isEmpty(obj) {
87
+ return !Object.keys(obj).length;
88
+ }
89
+
90
+ function isFunction(value) {
91
+ return typeof value === 'function';
92
+ }
93
+
94
+ function hasOwnProperty(object, property) {
95
+ return Object.prototype.hasOwnProperty.call(object, property);
96
+ }
97
+
98
+ function validateChanges(initial, changes) {
99
+ if (!isObject(changes)) errorHandler('changeType');
100
+ if (Object.keys(changes).some(function (field) {
101
+ return !hasOwnProperty(initial, field);
102
+ })) errorHandler('changeField');
103
+ return changes;
104
+ }
105
+
106
+ function validateSelector(selector) {
107
+ if (!isFunction(selector)) errorHandler('selectorType');
108
+ }
109
+
110
+ function validateHandler(handler) {
111
+ if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType');
112
+ if (isObject(handler) && Object.values(handler).some(function (_handler) {
113
+ return !isFunction(_handler);
114
+ })) errorHandler('handlersType');
115
+ }
116
+
117
+ function validateInitial(initial) {
118
+ if (!initial) errorHandler('initialIsRequired');
119
+ if (!isObject(initial)) errorHandler('initialType');
120
+ if (isEmpty(initial)) errorHandler('initialContent');
121
+ }
122
+
123
+ function throwError(errorMessages, type) {
124
+ throw new Error(errorMessages[type] || errorMessages["default"]);
125
+ }
126
+
127
+ var errorMessages = {
128
+ initialIsRequired: 'initial state is required',
129
+ initialType: 'initial state should be an object',
130
+ initialContent: 'initial state shouldn\'t be an empty object',
131
+ handlerType: 'handler should be an object or a function',
132
+ handlersType: 'all handlers should be a functions',
133
+ selectorType: 'selector should be a function',
134
+ changeType: 'provided value of changes should be an object',
135
+ changeField: 'it seams you want to change a field in the state which is not specified in the "initial" state',
136
+ "default": 'an unknown error accured in `state-local` package'
137
+ };
138
+ var errorHandler = curry(throwError)(errorMessages);
139
+ var validators = {
140
+ changes: validateChanges,
141
+ selector: validateSelector,
142
+ handler: validateHandler,
143
+ initial: validateInitial
144
+ };
145
+
146
+ function create(initial) {
147
+ var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
148
+ validators.initial(initial);
149
+ validators.handler(handler);
150
+ var state = {
151
+ current: initial
152
+ };
153
+ var didUpdate = curry(didStateUpdate)(state, handler);
154
+ var update = curry(updateState)(state);
155
+ var validate = curry(validators.changes)(initial);
156
+ var getChanges = curry(extractChanges)(state);
157
+
158
+ function getState() {
159
+ var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) {
160
+ return state;
161
+ };
162
+ validators.selector(selector);
163
+ return selector(state.current);
164
+ }
165
+
166
+ function setState(causedChanges) {
167
+ compose(didUpdate, update, validate, getChanges)(causedChanges);
168
+ }
169
+
170
+ return [getState, setState];
171
+ }
172
+
173
+ function extractChanges(state, causedChanges) {
174
+ return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges;
175
+ }
176
+
177
+ function updateState(state, changes) {
178
+ state.current = _objectSpread2(_objectSpread2({}, state.current), changes);
179
+ return changes;
180
+ }
181
+
182
+ function didStateUpdate(state, handler, changes) {
183
+ isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) {
184
+ var _handler$field;
185
+
186
+ return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]);
187
+ });
188
+ return changes;
189
+ }
190
+
191
+ var index = {
192
+ create: create
193
+ };
194
+
195
+ module.exports = index;
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "state-local",
3
+ "version": "1.0.7",
4
+ "description": "Tiny, simple, and robust technique for defining and acting with local states",
5
+ "main": "lib/cjs/state-local.js",
6
+ "module": "lib/es/state-local.js",
7
+ "unpkg": "lib/umd/state-local.min.js",
8
+ "jsdelivr": "lib/umd/state-local.min.js",
9
+ "types": "lib/types.d.ts",
10
+ "author": "Suren Atoyan <contact@surenatoyan.com>",
11
+ "license": "MIT",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/suren-atoyan/state-local"
15
+ },
16
+ "bugs": {
17
+ "url": "https://github.com/suren-atoyan/state-local/issues"
18
+ },
19
+ "homepage": "https://github.com/suren-atoyan/state-local#readme",
20
+ "keywords": [
21
+ "state",
22
+ "state management",
23
+ "local state"
24
+ ],
25
+ "scripts": {
26
+ "test": "jest",
27
+ "test-watch": "npm run build && jest --watch",
28
+ "coverage": "jest --collect-coverage",
29
+ "lint": "npx eslint src",
30
+ "prepublish": "npm test && npm run lint && npm run build",
31
+ "build": "rollup -c && cp ./src/types.d.ts ./lib/"
32
+ },
33
+ "babel": {
34
+ "presets": [
35
+ "@babel/preset-env"
36
+ ]
37
+ },
38
+ "husky": {
39
+ "hooks": {
40
+ "pre-commit": "npm test && npm run lint"
41
+ }
42
+ },
43
+ "devDependencies": {
44
+ "@babel/core": "^7.11.0",
45
+ "@babel/preset-env": "^7.11.0",
46
+ "@rollup/plugin-babel": "^5.2.2",
47
+ "@rollup/plugin-commonjs": "^17.0.0",
48
+ "@rollup/plugin-node-resolve": "^11.0.1",
49
+ "@rollup/plugin-replace": "^2.3.4",
50
+ "babel-jest": "^26.2.2",
51
+ "babel-loader": "^8.1.0",
52
+ "eslint": "^7.6.0",
53
+ "husky": "^4.2.5",
54
+ "jest": "^26.2.2",
55
+ "rollup": "^2.35.1",
56
+ "rollup-plugin-terser": "^7.0.2"
57
+ },
58
+ "dependencies": {}
59
+ }
@@ -19,6 +19,9 @@
19
19
  "@exodus/bytes": "1.15.1",
20
20
  "@iconify/utils": "2.3.0",
21
21
  "@iconify/vue": "5.0.1",
22
+ "@monaco-editor/loader": "1.7.0",
23
+ "@tanstack/virtual-core": "3.16.0",
24
+ "@tanstack/vue-virtual": "3.13.26",
22
25
  "@vue/compiler-core": "3.5.35",
23
26
  "@vue/compiler-dom": "3.5.35",
24
27
  "@vue/compiler-ssr": "3.5.35",
@@ -56,6 +59,7 @@
56
59
  "punycode": "2.3.1",
57
60
  "saxes": "6.0.0",
58
61
  "source-map-js": "1.2.1",
62
+ "state-local": "1.0.7",
59
63
  "supports-color": "7.2.0",
60
64
  "symbol-tree": "3.2.4",
61
65
  "tailwind-merge": "2.6.1",
package/ui/package.json CHANGED
@@ -13,6 +13,7 @@
13
13
  "typecheck": "nuxi typecheck"
14
14
  },
15
15
  "dependencies": {
16
+ "@monaco-editor/loader": "^1.4.0",
16
17
  "@nuxt/ui": "^2.18.0",
17
18
  "dotenv": "^16.4.5",
18
19
  "isomorphic-dompurify": "^3.15.0",
@@ -1 +0,0 @@
1
- import{a as Ve}from"./Ceb2855t.js";import{_ as Se}from"./C2WdrjFS.js";import{_ as he}from"./DihqGT4A.js";import{_ as De}from"./DZIUG6ZX.js";import{_ as be}from"./DZd8Jv5H.js";import{_ as Ue}from"./Bv6Ws9vz.js";import{_ as Pe}from"./BrZL2iQr.js";import{_ as Ce}from"./Cg55PjEy.js";import{u as Ge}from"./BtD1YBwM.js";import{l as Le,L as xe,i as f,k as a,ai as n,v as H,a6 as l,V as v,U as B,O as u,g as k,h as O,j as T,f as i,a1 as C,F as W,W as j,e as G}from"./MzK2TZ-I.js";import{_ as Ke}from"./DlAUqK2U.js";import"./B8sr5ZW-.js";import"./BAs1isOw.js";const we={class:"config-page"},Me={class:"flex items-center justify-between gap-3"},He={class:"text-xs text-gray-500 mt-1"},Be={key:0,class:"ml-2 text-amber-600"},We={key:1,class:"ml-2 text-emerald-600"},je={class:"flex items-center gap-2"},Fe={key:2,class:"mb-4"},Ye={class:"flex items-center justify-between gap-3"},ze={class:"grid gap-4 md:grid-cols-2"},$e={class:"flex items-center justify-between gap-3"},Je={class:"flex items-center gap-2"},Xe={class:"space-y-3"},Ze={class:"flex items-center justify-between gap-3 mb-3"},qe={class:"flex items-center gap-2 min-w-0"},Qe={class:"flex flex-col gap-0.5"},el={key:1,class:"text-xs text-gray-400"},ll={key:0,class:"grid gap-4 md:grid-cols-2"},tl={key:1,class:"text-sm text-gray-500"},ol={class:"grid gap-4 md:grid-cols-2"},al={class:"grid gap-4 md:grid-cols-2"},sl={class:"flex items-center justify-between gap-3"},nl={key:0,class:"text-sm text-gray-500"},rl={key:1,class:"grid gap-4 md:grid-cols-2"},dl={class:"flex items-center gap-2"},il={class:"space-y-3"},ul={key:0,class:"text-sm text-red-500"},pl={class:"flex justify-end gap-2"},z="PROVIDER",_l=Le({__name:"config",setup(cl){const V=Ge(),$=v(""),L=v(null),x=v(!1),N=v(""),R=v(!1),K=v(!1),J=v(0),s=B({}),S=B({}),g=B({provider:!1,ai:!1}),E=B({provider:null,ai:null}),I=v(""),h=v(!1),D=v(""),b=v(""),U=v(""),ne=[{label:"ClickUp",value:"clickup"},{label:"Jira",value:"jira"},{label:"Linear",value:"linear"},{label:"Monday",value:"monday"},{label:"Notion",value:"notion"},{label:"Trello",value:"trello"},{label:"Local",value:"local"}],F=["antigravity","anthropic-sdk","claude","codex","cursor","windsurf"],re=F.map(t=>({label:t,value:t})),de={claude:[{key:"CLAUDE_MODEL",help:"Model passed to `claude --model`. Default routes plan→opus and code→sonnet.",placeholder:"opusplan"}],"anthropic-sdk":[{key:"ANTHROPIC_API_KEY",help:"Accepts a single key or comma-separated pool; the runner rotates round-robin.",secret:!0},{key:"ANTHROPIC_MODEL",placeholder:"claude-opus-4-6"},{key:"ANTHROPIC_BASE_URL",help:"Optional — leave blank for default.",placeholder:"https://api.anthropic.com"},{key:"ANTHROPIC_SDK_MAX_RETRIES",help:"Retries after transient SDK errors. Set 0 to disable. Default: 3.",placeholder:"3"}],windsurf:[{key:"WINDSURF_TOKEN",help:"Required for Docker mode on Windows.",secret:!0},{key:"WINDSURF_DOCKER_IMAGE",help:"Docker image for headless Windsurf on Windows.",placeholder:"windsurfinabox"},{key:"WINDSURF_CONFIG_DIR",help:"Optional — defaults to ~/.config/Windsurf."}],cursor:[],codex:[],antigravity:[]},X={cursor:"Uses the `agent` CLI — no extra env keys.",codex:"Uses the `codex` CLI. Set OPENAI_API_KEY or run `codex login`.",antigravity:"Uses the `agy` or `antigravity` CLI — no extra env keys."};let w=0;const m=v([]),ie=G(()=>m.value.map(t=>({label:t.type,value:t.type}))),Z={clickup:[{key:"CLICKUP_API_KEY",secret:!0},{key:"CLICKUP_TEAM_ID"},{key:"CLICKUP_TAG",help:"Tag used to scope tasks to this project."},{key:"CLICKUP_LIST_ID",help:"Optional — required to create tasks."},{key:"CLICKUP_PENDING_STATUS",placeholder:"pending"},{key:"CLICKUP_OPEN_STATUS",placeholder:"open"},{key:"CLICKUP_IN_REVIEW_STATUS",placeholder:"review"}],jira:[{key:"JIRA_BASE_URL",placeholder:"https://mycompany.atlassian.net"},{key:"JIRA_EMAIL"},{key:"JIRA_API_TOKEN",secret:!0},{key:"JIRA_PROJECT"},{key:"JIRA_LABEL"},{key:"JIRA_PENDING_STATUS",placeholder:"To Do"},{key:"JIRA_IN_REVIEW_STATUS",placeholder:"In Review"}],linear:[{key:"LINEAR_API_KEY",secret:!0},{key:"LINEAR_TEAM_ID"},{key:"LINEAR_LABEL"},{key:"LINEAR_PENDING_STATUS",placeholder:"Pending"},{key:"LINEAR_IN_REVIEW_STATUS",placeholder:"In Review"}],monday:[{key:"MONDAY_API_TOKEN",secret:!0},{key:"MONDAY_BOARD_ID"},{key:"MONDAY_STATUS_COLUMN_ID",placeholder:"status"},{key:"MONDAY_GROUP_ID"}],notion:[{key:"NOTION_API_KEY",secret:!0},{key:"NOTION_DATABASE_ID"},{key:"NOTION_STATUS_PROPERTY",placeholder:"Status"},{key:"NOTION_PENDING_STATUS",placeholder:"pending"},{key:"NOTION_IN_REVIEW_STATUS",placeholder:"review"}],trello:[{key:"TRELLO_TOKEN",secret:!0},{key:"TRELLO_BOARD_ID"},{key:"TRELLO_LABEL"},{key:"TRELLO_OPEN_LIST",placeholder:"To Do"},{key:"TRELLO_PENDING_LIST",placeholder:"Blocked"},{key:"TRELLO_IN_PROGRESS_LIST",placeholder:"Doing"},{key:"TRELLO_IN_REVIEW_LIST",placeholder:"In Review"}],local:[]},q=["AGENTS","CLAUDE_MODEL","ANTHROPIC_API_KEY","ANTHROPIC_MODEL","ANTHROPIC_BASE_URL","ANTHROPIC_SDK_MAX_RETRIES","WINDSURF_TOKEN","WINDSURF_DOCKER_IMAGE","WINDSURF_CONFIG_DIR"],ue=[{label:"smart",value:"smart"},{label:"always",value:"always"}],Q=["DEV_NOTES_MODE","ASSIGNEE_TAG","AIDEV_TRIGGER_WORD","THINKING_TAG","PLANNING_TAG","ACCEPTED_TAG","DONE_STATUS","AIDEV_COMMENT_PREFIX","AIDEV_HOOKS_PATH","AIDEV_AUTO_COMPRESS","AIDEV_COMPRESS_THRESHOLD","GIT_REMOTE","GITHUB_BASE_BRANCH","GITHUB_REPO"],ee=["AIDEV_LOG_PATH"],pe=G(()=>{const t=(s.PROVIDER||"clickup").toLowerCase();return Z[t]??[]}),_e=G(()=>{const t=new Set([z,...q,...Q,...ee]);for(const e of Object.values(Z))for(const r of e)t.add(r.key);return t}),le=G(()=>Object.keys(s).filter(t=>!_e.value.has(t)).sort()),ce=G(()=>{const t=Object.keys(s),e=Object.keys(S);if(t.length!==e.length)return!0;for(const r of t)if((s[r]??"")!==(S[r]??""))return!0;return!1});function me(t){return/(KEY|TOKEN|SECRET|PASSWORD)$/i.test(t)}function te(t){return de[t]??[]}function fe(t){const e=t.split(",").map(r=>r.trim()).filter(Boolean).filter(r=>F.includes(r));return e.length===0?[{uid:w++,type:"claude"},{uid:w++,type:"cursor"}]:e.map(r=>({uid:w++,type:r}))}function P(){s.AGENTS=m.value.map(t=>t.type).join(",")}function Ee(){const t=new Set(m.value.map(r=>r.type)),e=F.find(r=>!t.has(r))??"claude";m.value.push({uid:w++,type:e}),P()}function ve(t){m.value.length<=1||(m.value.splice(t,1),P())}function oe(t,e){const r=t+e,d=m.value[t];if(!d||r<0||r>=m.value.length)return;const c=[...m.value];c.splice(t,1),c.splice(r,0,d),m.value=c,P()}function Y(t){$.value=t.path,L.value=t.exists;for(const d of Object.keys(s))delete s[d];for(const d of Object.keys(S))delete S[d];const e={};e[z]=t.values[z]||"clickup";for(const d of q)e[d]=t.values[d]??"";for(const d of Q)e[d]=t.values[d]??"";for(const d of ee)e[d]=t.values[d]??"";for(const[d,c]of Object.entries(t.values))e[d]=c;for(const[d,c]of Object.entries(e))s[d]=c,S[d]=c;m.value=fe(s.AGENTS||""),P();const r=m.value.map(d=>d.type);(!I.value||!r.includes(I.value))&&(I.value=r[0]??"")}async function ae(){x.value=!0,N.value="";try{const t=await V("/api/config");Y(t)}catch(t){N.value=t instanceof Error?t.message:String(t)}finally{x.value=!1}}async function ye(){R.value=!0,K.value=!1,N.value="";try{const t=await V("/api/config",{method:"PUT",body:{values:{...s}}});J.value=Object.keys(t.values).length,Y(t),K.value=!0,setTimeout(()=>K.value=!1,3e3)}catch(t){N.value=t instanceof Error?t.message:String(t)}finally{R.value=!1}}async function Ae(){const t={PROVIDER:"clickup",AGENTS:"claude,cursor",DEV_NOTES_MODE:"smart",AIDEV_TRIGGER_WORD:"aidev-continue",THINKING_TAG:"thinking",PLANNING_TAG:"planning"};R.value=!0;try{const e=await V("/api/config",{method:"PUT",body:{values:t}});Y(e)}catch(e){N.value=e instanceof Error?e.message:String(e)}finally{R.value=!1}}async function Ie(){g.provider=!0,E.provider=null;try{E.provider=await V("/api/config/test",{method:"POST",body:{provider:!0}})}catch(t){E.provider={ok:!1,message:t instanceof Error?t.message:String(t)}}finally{g.provider=!1}}async function Te(){if(I.value){g.ai=!0,E.ai=null;try{E.ai=await V("/api/config/test",{method:"POST",body:{ai:I.value}})}catch(t){E.ai={ok:!1,message:t instanceof Error?t.message:String(t)}}finally{g.ai=!1}}}function ge(t){delete s[t]}function se(){h.value=!1,D.value="",b.value="",U.value=""}function ke(){const t=D.value.trim();if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t)){U.value="Key must match [A-Za-z_][A-Za-z0-9_]*";return}if(t in s){U.value=`Key ${t} already exists`;return}s[t]=b.value,se()}return xe(ae),(t,e)=>{const r=Ve,d=Se,c=he,M=De,p=be,_=Ue,Oe=Pe,Ne=Ce;return u(),f("div",we,[a(c,null,{header:n(()=>[i("div",Me,[i("div",null,[e[21]||(e[21]=i("h1",{class:"text-lg font-semibold"},"Config",-1)),i("p",He,[i("code",null,C(l($)||"—"),1),l(L)===!1?(u(),f("span",Be,"not found")):l(L)?(u(),f("span",We,"loaded")):O("",!0)])]),i("div",je,[a(r,{color:"gray",variant:"ghost",size:"sm",loading:l(x),disabled:l(x),onClick:ae},{default:n(()=>[...e[22]||(e[22]=[T(" Reload ",-1)])]),_:1},8,["loading","disabled"]),a(r,{color:"primary",size:"sm",loading:l(R),disabled:l(R)||!l(ce),onClick:ye},{default:n(()=>[...e[23]||(e[23]=[T(" Save changes ",-1)])]),_:1},8,["loading","disabled"])])])]),default:n(()=>[l(N)?(u(),k(d,{key:0,color:"red",variant:"soft",title:l(N),class:"mb-4"},null,8,["title"])):O("",!0),l(L)===!1?(u(),k(d,{key:1,color:"amber",variant:"soft",title:".env.aidev does not exist",description:"Press “Create with defaults” to seed the file with the minimum keys needed to start configuring.",class:"mb-4"},{actions:n(()=>[a(r,{size:"sm",color:"amber",loading:l(R),onClick:Ae},{default:n(()=>[...e[24]||(e[24]=[T(" Create with defaults ",-1)])]),_:1},8,["loading"])]),_:1})):O("",!0),l(K)?(u(),f("div",Fe,[a(d,{color:"green",variant:"soft",title:"Saved",description:`Wrote ${l(J)} key(s).`},null,8,["description"])])):O("",!0)]),_:1}),a(c,{class:"mt-4"},{header:n(()=>[i("div",Ye,[e[26]||(e[26]=i("h2",{class:"text-base font-semibold"},"Task provider",-1)),a(r,{size:"sm",color:"gray",variant:"soft",loading:l(g).provider,disabled:l(g).provider,onClick:Ie},{default:n(()=>[...e[25]||(e[25]=[T(" Test connection ",-1)])]),_:1},8,["loading","disabled"])])]),default:n(()=>[i("div",ze,[a(p,{label:"PROVIDER",help:"Which task backend aidev should talk to."},{default:n(()=>[a(M,{modelValue:l(s).PROVIDER,"onUpdate:modelValue":e[0]||(e[0]=o=>l(s).PROVIDER=o),options:ne},null,8,["modelValue"])]),_:1}),(u(!0),f(W,null,j(l(pe),o=>(u(),k(p,{key:o.key,label:o.key,help:o.help},{default:n(()=>[a(_,{modelValue:l(s)[o.key],"onUpdate:modelValue":y=>l(s)[o.key]=y,type:o.secret?"password":"text",placeholder:o.placeholder??"",autocomplete:"off"},null,8,["modelValue","onUpdate:modelValue","type","placeholder"])]),_:2},1032,["label","help"]))),128))]),l(E).provider?(u(),k(d,{key:0,color:l(E).provider.ok?"green":"red",variant:"soft",title:l(E).provider.ok?"Provider OK":"Provider failed",description:l(E).provider.message,class:"mt-3"},null,8,["color","title","description"])):O("",!0)]),_:1}),a(c,{class:"mt-4"},{header:n(()=>[i("div",$e,[e[27]||(e[27]=i("h2",{class:"text-base font-semibold"},"AI runners",-1)),i("div",Je,[a(M,{modelValue:l(I),"onUpdate:modelValue":e[1]||(e[1]=o=>H(I)?I.value=o:null),options:l(ie),size:"sm",class:"w-44"},null,8,["modelValue","options"]),a(r,{size:"sm",color:"gray",variant:"soft",loading:l(g).ai,disabled:l(g).ai||!l(I),onClick:Te},{default:n(()=>[T(" Test "+C(l(I)||"agent"),1)]),_:1},8,["loading","disabled"])])])]),default:n(()=>[e[30]||(e[30]=i("p",{class:"text-sm text-gray-500 mb-3"}," Agents in fallback order — first is primary, rest are tried when the previous fails. ",-1)),i("div",Xe,[(u(!0),f(W,null,j(l(m),(o,y)=>(u(),f("div",{key:o.uid,class:"agent-block rounded-lg border border-gray-200 dark:border-gray-700 p-4"},[i("div",Ze,[i("div",qe,[i("div",Qe,[a(r,{size:"xs",color:"gray",variant:"ghost",icon:"i-heroicons-chevron-up",disabled:y===0,"aria-label":"Move up",onClick:A=>oe(y,-1)},null,8,["disabled","onClick"]),a(r,{size:"xs",color:"gray",variant:"ghost",icon:"i-heroicons-chevron-down",disabled:y===l(m).length-1,"aria-label":"Move down",onClick:A=>oe(y,1)},null,8,["disabled","onClick"])]),a(M,{modelValue:o.type,"onUpdate:modelValue":[A=>o.type=A,P],options:l(re),class:"w-52"},null,8,["modelValue","onUpdate:modelValue","options"]),y===0?(u(),k(Oe,{key:0,color:"primary",variant:"subtle",size:"xs"},{default:n(()=>[...e[28]||(e[28]=[T(" primary ",-1)])]),_:1})):(u(),f("span",el,"fallback "+C(y),1))]),a(r,{size:"xs",color:"red",variant:"ghost",icon:"i-heroicons-trash",disabled:l(m).length<=1,"aria-label":"Remove agent",onClick:A=>ve(y)},null,8,["disabled","onClick"])]),te(o.type).length>0?(u(),f("div",ll,[(u(!0),f(W,null,j(te(o.type),A=>(u(),k(p,{key:A.key,label:A.key,help:A.help},{default:n(()=>[a(_,{modelValue:l(s)[A.key],"onUpdate:modelValue":Re=>l(s)[A.key]=Re,type:A.secret?"password":"text",placeholder:A.placeholder??"",autocomplete:"off"},null,8,["modelValue","onUpdate:modelValue","type","placeholder"])]),_:2},1032,["label","help"]))),128))])):X[o.type]?(u(),f("p",tl,C(X[o.type]),1)):O("",!0)]))),128)),a(r,{size:"sm",color:"gray",variant:"soft",icon:"i-heroicons-plus",onClick:Ee},{default:n(()=>[...e[29]||(e[29]=[T(" Add agent ",-1)])]),_:1})]),l(E).ai?(u(),k(d,{key:0,color:l(E).ai.ok?"green":"red",variant:"soft",title:l(E).ai.ok?"AI runner OK":"AI runner failed",description:l(E).ai.message,class:"mt-3"},null,8,["color","title","description"])):O("",!0)]),_:1}),a(c,{class:"mt-4"},{header:n(()=>[...e[31]||(e[31]=[i("h2",{class:"text-base font-semibold"},"Logging",-1)])]),default:n(()=>[i("div",ol,[a(p,{label:"AIDEV_LOG_PATH",help:"Path to the aidev log file. Defaults to ./aidev.log when blank."},{default:n(()=>[a(_,{modelValue:l(s).AIDEV_LOG_PATH,"onUpdate:modelValue":e[2]||(e[2]=o=>l(s).AIDEV_LOG_PATH=o),placeholder:"aidev.log"},null,8,["modelValue"])]),_:1})])]),_:1}),a(c,{class:"mt-4"},{header:n(()=>[...e[32]||(e[32]=[i("h2",{class:"text-base font-semibold"},"Workflow & Git",-1)])]),default:n(()=>[i("div",al,[a(p,{label:"DEV_NOTES_MODE",help:"smart — ask only when unclear; always — ask before every task."},{default:n(()=>[a(M,{modelValue:l(s).DEV_NOTES_MODE,"onUpdate:modelValue":e[3]||(e[3]=o=>l(s).DEV_NOTES_MODE=o),options:ue},null,8,["modelValue"])]),_:1}),a(p,{label:"ASSIGNEE_TAG",help:"Optional tag to scope tasks to a specific assignee."},{default:n(()=>[a(_,{modelValue:l(s).ASSIGNEE_TAG,"onUpdate:modelValue":e[4]||(e[4]=o=>l(s).ASSIGNEE_TAG=o)},null,8,["modelValue"])]),_:1}),a(p,{label:"AIDEV_TRIGGER_WORD",help:"Word that resumes a paused agent run."},{default:n(()=>[a(_,{modelValue:l(s).AIDEV_TRIGGER_WORD,"onUpdate:modelValue":e[5]||(e[5]=o=>l(s).AIDEV_TRIGGER_WORD=o),placeholder:"aidev-continue"},null,8,["modelValue"])]),_:1}),a(p,{label:"THINKING_TAG",help:"Tasks with this tag are broken into sub-tasks first."},{default:n(()=>[a(_,{modelValue:l(s).THINKING_TAG,"onUpdate:modelValue":e[6]||(e[6]=o=>l(s).THINKING_TAG=o),placeholder:"thinking"},null,8,["modelValue"])]),_:1}),a(p,{label:"PLANNING_TAG",help:"Tasks with this tag are split into sub-tickets."},{default:n(()=>[a(_,{modelValue:l(s).PLANNING_TAG,"onUpdate:modelValue":e[7]||(e[7]=o=>l(s).PLANNING_TAG=o),placeholder:"planning"},null,8,["modelValue"])]),_:1}),a(p,{label:"ACCEPTED_TAG",help:"Tag marking a task as accepted for implementation."},{default:n(()=>[a(_,{modelValue:l(s).ACCEPTED_TAG,"onUpdate:modelValue":e[8]||(e[8]=o=>l(s).ACCEPTED_TAG=o),placeholder:"accepted"},null,8,["modelValue"])]),_:1}),a(p,{label:"DONE_STATUS",help:"Provider status treated as done/closed."},{default:n(()=>[a(_,{modelValue:l(s).DONE_STATUS,"onUpdate:modelValue":e[9]||(e[9]=o=>l(s).DONE_STATUS=o)},null,8,["modelValue"])]),_:1}),a(p,{label:"AIDEV_COMMENT_PREFIX",help:"Prefix for aidev comments on tasks."},{default:n(()=>[a(_,{modelValue:l(s).AIDEV_COMMENT_PREFIX,"onUpdate:modelValue":e[10]||(e[10]=o=>l(s).AIDEV_COMMENT_PREFIX=o),placeholder:"[aidev]"},null,8,["modelValue"])]),_:1}),a(p,{label:"AIDEV_HOOKS_PATH",help:"Optional hooks module (.ts or .js)."},{default:n(()=>[a(_,{modelValue:l(s).AIDEV_HOOKS_PATH,"onUpdate:modelValue":e[11]||(e[11]=o=>l(s).AIDEV_HOOKS_PATH=o),placeholder:".aidev/aidev.hooks.ts"},null,8,["modelValue"])]),_:1}),a(p,{label:"AIDEV_AUTO_COMPRESS",help:"Set false/0/no to disable prompt compression."},{default:n(()=>[a(_,{modelValue:l(s).AIDEV_AUTO_COMPRESS,"onUpdate:modelValue":e[12]||(e[12]=o=>l(s).AIDEV_AUTO_COMPRESS=o),placeholder:"true"},null,8,["modelValue"])]),_:1}),a(p,{label:"AIDEV_COMPRESS_THRESHOLD",help:"Char count that triggers compression."},{default:n(()=>[a(_,{modelValue:l(s).AIDEV_COMPRESS_THRESHOLD,"onUpdate:modelValue":e[13]||(e[13]=o=>l(s).AIDEV_COMPRESS_THRESHOLD=o),placeholder:"12000"},null,8,["modelValue"])]),_:1}),a(p,{label:"GIT_REMOTE"},{default:n(()=>[a(_,{modelValue:l(s).GIT_REMOTE,"onUpdate:modelValue":e[14]||(e[14]=o=>l(s).GIT_REMOTE=o),placeholder:"origin"},null,8,["modelValue"])]),_:1}),a(p,{label:"GITHUB_BASE_BRANCH"},{default:n(()=>[a(_,{modelValue:l(s).GITHUB_BASE_BRANCH,"onUpdate:modelValue":e[15]||(e[15]=o=>l(s).GITHUB_BASE_BRANCH=o),placeholder:"main"},null,8,["modelValue"])]),_:1}),a(p,{label:"GITHUB_REPO",help:"owner/repo — auto-detected when blank."},{default:n(()=>[a(_,{modelValue:l(s).GITHUB_REPO,"onUpdate:modelValue":e[16]||(e[16]=o=>l(s).GITHUB_REPO=o),placeholder:"owner/repo"},null,8,["modelValue"])]),_:1})])]),_:1}),a(c,{class:"mt-4"},{header:n(()=>[i("div",sl,[e[34]||(e[34]=i("h2",{class:"text-base font-semibold"},"Other keys",-1)),a(r,{size:"xs",color:"gray",variant:"ghost",onClick:e[17]||(e[17]=o=>h.value=!0)},{default:n(()=>[...e[33]||(e[33]=[T(" + Add key ",-1)])]),_:1})])]),default:n(()=>[l(le).length===0?(u(),f("p",nl," No additional keys. Use “Add key” to introduce one. ")):(u(),f("div",rl,[(u(!0),f(W,null,j(l(le),o=>(u(),k(p,{key:o,label:o},{default:n(()=>[i("div",dl,[a(_,{modelValue:l(s)[o],"onUpdate:modelValue":y=>l(s)[o]=y,type:me(o)?"password":"text",autocomplete:"off",class:"flex-1"},null,8,["modelValue","onUpdate:modelValue","type"]),a(r,{size:"xs",color:"red",variant:"ghost",icon:"i-heroicons-trash",onClick:y=>ge(o)},null,8,["onClick"])])]),_:2},1032,["label"]))),128))]))]),_:1}),a(Ne,{modelValue:l(h),"onUpdate:modelValue":e[20]||(e[20]=o=>H(h)?h.value=o:null)},{default:n(()=>[a(c,null,{header:n(()=>[...e[35]||(e[35]=[i("h3",{class:"text-base font-semibold"},"Add config key",-1)])]),footer:n(()=>[i("div",pl,[a(r,{variant:"ghost",color:"gray",onClick:se},{default:n(()=>[...e[36]||(e[36]=[T("Cancel",-1)])]),_:1}),a(r,{color:"primary",onClick:ke},{default:n(()=>[...e[37]||(e[37]=[T("Add",-1)])]),_:1})])]),default:n(()=>[i("div",il,[a(p,{label:"Key",help:"Letters, numbers, and underscores. Must start with a letter or underscore."},{default:n(()=>[a(_,{modelValue:l(D),"onUpdate:modelValue":e[18]||(e[18]=o=>H(D)?D.value=o:null),placeholder:"MY_NEW_KEY",autofocus:""},null,8,["modelValue"])]),_:1}),a(p,{label:"Value"},{default:n(()=>[a(_,{modelValue:l(b),"onUpdate:modelValue":e[19]||(e[19]=o=>H(b)?b.value=o:null),autocomplete:"off"},null,8,["modelValue"])]),_:1}),l(U)?(u(),f("p",ul,C(l(U)),1)):O("",!0)])]),_:1})]),_:1},8,["modelValue"])])}}}),Vl=Ke(_l,[["__scopeId","data-v-16d21772"]]);export{Vl as default};
@@ -1 +0,0 @@
1
- import{l as O,ad as A,ab as q,L as j,M as E,Y as N,K as U,c as H,s as P,Z as _,Q as I,n as V,a0 as D,V as F,$ as B,R as M,a6 as o,B as z,e as b,H as W,t as T,w as $,am as Q,an as G,ae as K}from"./MzK2TZ-I.js";const Y=(...t)=>t.find(c=>c!==void 0);function Z(t){const c=t.componentName||"NuxtLink";function v(e){return typeof e=="string"&&e.startsWith("#")}function C(e,l,d){const a=d??t.trailingSlash;if(!e||a!=="append"&&a!=="remove")return e;if(typeof e=="string")return k(e,a);const i="path"in e&&e.path!==void 0?e.path:l(e).path;return{...e,name:void 0,path:k(i,a)}}function w(e){const l=A(),d=K(),a=b(()=>!!o(e.target)&&o(e.target)!=="_self"),i=b(()=>{const u=o(e.to)||o(e.href)||"";return typeof u=="string"&&T(u,{acceptRelative:!0})}),m=_("RouterLink"),g=m&&typeof m!="string"?m.useLink:void 0,f=b(()=>{if(o(e.external))return!0;const u=o(e.to)||o(e.href)||"";return typeof u=="object"?!1:u===""||i.value}),r=b(()=>{const u=o(e.to)||o(e.href)||"";return f.value?u:C(u,l.resolve,o(e.trailingSlash))}),y=f.value?void 0:g?.({...e,to:r,viewTransition:o(e.viewTransition)}),p=b(()=>{const u=o(e.trailingSlash)??t.trailingSlash;if(!r.value||i.value||v(r.value))return r.value;if(f.value){const R=typeof r.value=="object"&&"path"in r.value?B(r.value):r.value,S=typeof R=="object"?l.resolve(R).href:R;return k(S,u)}return typeof r.value=="object"?l.resolve(r.value)?.href??null:k($(d.app.baseURL,r.value),u)});return{to:r,hasTarget:a,isAbsoluteUrl:i,isExternal:f,href:p,isActive:y?.isActive??b(()=>r.value===l.currentRoute.value.path),isExactActive:y?.isExactActive??b(()=>r.value===l.currentRoute.value.path),route:y?.route??b(()=>l.resolve(r.value)),async navigate(u){await z(p.value,{replace:o(e.replace),external:f.value||a.value})}}}return O({name:c,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1},trailingSlash:{type:String,default:void 0,required:!1}},useLink:w,setup(e,{slots:l}){const d=A(),{to:a,href:i,navigate:m,isExternal:g,hasTarget:f,isAbsoluteUrl:r}=w(e),y=D(!1),p=F(null),u=s=>{p.value=e.custom?s?.$el?.nextElementSibling:s?.$el};function R(s){return!y.value&&(typeof e.prefetchOn=="string"?e.prefetchOn===s:e.prefetchOn?.[s]??t.prefetchOn?.[s])&&(e.prefetch??t.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!ee()}async function S(s=q()){if(y.value)return;y.value=!0;const h=typeof a.value=="string"?a.value:g.value?B(a.value):d.resolve(a.value).fullPath,n=g.value?new URL(h,window.location.href).href:h;await Promise.all([s.hooks.callHook("link:prefetch",n).catch(()=>{}),!g.value&&!f.value&&M(a.value,d).catch(()=>{})])}if(R("visibility")){const s=q();let h,n=null;j(()=>{const x=J();E(()=>{h=N(()=>{p?.value?.tagName&&(n=x.observe(p.value,async()=>{n?.(),n=null,await S(s)}))})})}),U(()=>{h&&H(h),n?.(),n=null})}return()=>{if(!g.value&&!f.value&&!v(a.value)){const n={ref:u,to:a.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(R("interaction")&&(n.onPointerenter=S.bind(null,void 0),n.onFocus=S.bind(null,void 0)),y.value&&(n.class=e.prefetchedClass||t.prefetchedClass),n.rel=e.rel||void 0),P(_("RouterLink"),n,l.default)}const s=e.target||null,h=Y(e.noRel?"":e.rel,t.externalRelAttribute,r.value||f.value?"noopener noreferrer":"")||null;return e.custom?l.default?l.default({href:i.value,navigate:m,prefetch:S,get route(){if(!i.value)return;const n=new URL(i.value,window.location.href);return{path:n.pathname,fullPath:n.pathname,get query(){return I(n.search)},hash:n.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:i.value}},rel:h,target:s,isExternal:g.value||f.value,isActive:!1,isExactActive:!1}):null:P("a",{ref:p,href:i.value||null,rel:h,target:s,onClick:async n=>{if(!(g.value||f.value)){n.preventDefault();try{const x=V(i.value);return await(e.replace?d.replace(x):d.push(x))}finally{if(v(a.value)){const x=a.value.slice(1);let L=x;try{L=decodeURIComponent(x)}catch{}document.getElementById(L)?.focus()}}}}},l.default?.())}}})}const ne=Z(W);function k(t,c){const v=c==="append"?Q:G;return T(t)&&!t.startsWith("http")?t:v(t,!0)}function J(){const t=q();if(t._observer)return t._observer;let c=null;const v=new Map,C=(e,l)=>(c||=new IntersectionObserver(d=>{for(const a of d){const i=v.get(a.target);(a.isIntersecting||a.intersectionRatio>0)&&i&&i()}}),v.set(e,l),c.observe(e),()=>{v.delete(e),c?.unobserve(e),v.size===0&&(c?.disconnect(),c=null)});return t._observer={observe:C}}const X=/2g/;function ee(){const t=navigator.connection;return!!(t&&(t.saveData||X.test(t.effectiveType)))}export{ne as _};
@@ -1 +0,0 @@
1
- import{_ as k,b as z,u as C}from"./Ceb2855t.js";import{z as S,b as c,O as l,i as y,X as o,g as b,D as f,h as s,a1 as j,A as N,l as O,e as n,a2 as _,a5 as $,a4 as g}from"./MzK2TZ-I.js";import{_ as B}from"./DlAUqK2U.js";const A={base:"inline-flex items-center",rounded:"rounded-md",font:"font-medium",size:{xs:"text-xs px-1.5 py-0.5",sm:"text-xs px-2 py-1",md:"text-sm px-2 py-1",lg:"text-sm px-2.5 py-1.5"},gap:{xs:"gap-0.5",sm:"gap-1",md:"gap-1",lg:"gap-1.5"},color:{white:{solid:"ring-1 ring-inset ring-gray-300 dark:ring-gray-700 text-gray-900 dark:text-white bg-white dark:bg-gray-900"},gray:{solid:"ring-1 ring-inset ring-gray-300 dark:ring-gray-700 text-gray-700 dark:text-gray-200 bg-gray-50 dark:bg-gray-800"},black:{solid:"text-white dark:text-gray-900 bg-gray-900 dark:bg-white"}},variant:{solid:"bg-{color}-500 dark:bg-{color}-400 text-white dark:text-gray-900",outline:"text-{color}-500 dark:text-{color}-400 ring-1 ring-inset ring-{color}-500 dark:ring-{color}-400",soft:"bg-{color}-50 dark:bg-{color}-400 dark:bg-opacity-10 text-{color}-500 dark:text-{color}-400",subtle:"bg-{color}-50 dark:bg-{color}-400 dark:bg-opacity-10 text-{color}-500 dark:text-{color}-400 ring-1 ring-inset ring-{color}-500 dark:ring-{color}-400 ring-opacity-25 dark:ring-opacity-25"},icon:{base:"flex-shrink-0",size:{xs:"h-4 w-4",sm:"h-4 w-4",md:"h-5 w-5",lg:"h-5 w-5"}},default:{size:"sm",variant:"solid",color:"primary"}},t=S(c.ui.strategy,c.ui.badge,A),U=O({components:{UIcon:k},inheritAttrs:!1,props:{size:{type:String,default:()=>t.default.size,validator(a){return Object.keys(t.size).includes(a)}},color:{type:String,default:()=>t.default.color,validator(a){return[...c.ui.colors,...Object.keys(t.color)].includes(a)}},variant:{type:String,default:()=>t.default.variant,validator(a){return[...Object.keys(t.variant),...Object.values(t.color).flatMap(e=>Object.keys(e))].includes(a)}},label:{type:[String,Number],default:null},icon:{type:String,default:null},leadingIcon:{type:String,default:null},trailingIcon:{type:String,default:null},trailing:{type:Boolean,default:!1},leading:{type:Boolean,default:!1},class:{type:[String,Object,Array],default:()=>""},ui:{type:Object,default:()=>({})}},setup(a){const{ui:e,attrs:d}=z("badge",_(a,"ui"),t),{size:r,rounded:u}=C({ui:e,props:a}),m=n(()=>a.icon&&a.leading||a.icon&&!a.trailing||!a.trailing||a.leadingIcon),i=n(()=>a.icon&&a.trailing||a.trailing||a.trailingIcon),v=n(()=>{const w=e.value.color?.[a.color]?.[a.variant]||e.value.variant[a.variant];return $(g(e.value.base,e.value.font,u.value,e.value.size[r.value],e.value.gap[r.value],w?.replaceAll("{color}",a.color)),a.class)}),I=n(()=>a.leadingIcon||a.icon),p=n(()=>a.trailingIcon||a.icon),x=n(()=>g(e.value.icon.base,e.value.icon.size[r.value])),h=n(()=>g(e.value.icon.base,e.value.icon.size[r.value]));return{attrs:d,isLeading:m,isTrailing:i,badgeClass:v,leadingIconName:I,trailingIconName:p,leadingIconClass:x,trailingIconClass:h}}}),D={key:0};function L(a,e,d,r,u,m){const i=k;return l(),y("span",N({class:a.badgeClass},a.attrs),[o(a.$slots,"leading",{},()=>[a.isLeading&&a.leadingIconName?(l(),b(i,{key:0,name:a.leadingIconName,class:f(a.leadingIconClass),"aria-hidden":"true"},null,8,["name","class"])):s("",!0)]),o(a.$slots,"default",{},()=>[a.label!==void 0&&a.label!==null?(l(),y("span",D,j(a.label),1)):s("",!0)]),o(a.$slots,"trailing",{},()=>[a.isTrailing&&a.trailingIconName?(l(),b(i,{key:0,name:a.trailingIconName,class:f(a.trailingIconClass),"aria-hidden":"true"},null,8,["name","class"])):s("",!0)])],16)}const G=B(U,[["render",L]]);export{G as _};