@loicngr/kobo 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/mcp-server/kobo-tasks-handlers.js +147 -0
  2. package/dist/mcp-server/kobo-tasks-server.js +236 -29
  3. package/dist/server/index.js +4 -1
  4. package/dist/server/routes/images.js +57 -0
  5. package/dist/server/routes/workspaces.js +29 -5
  6. package/dist/server/services/agent-manager.js +14 -2
  7. package/dist/server/services/image-service.js +73 -0
  8. package/dist/server/services/settings-service.js +55 -9
  9. package/dist/server/services/workspace-service.js +6 -0
  10. package/dist/server/utils/git-ops.js +11 -0
  11. package/package.json +3 -1
  12. package/src/client/dist/spa/assets/ActivityFeed-CPfYmybV.js +60 -0
  13. package/src/client/dist/spa/assets/ActivityFeed-DBljh9rq.css +1 -0
  14. package/src/client/dist/spa/assets/CreatePage-C_c3Gr0F.js +2 -0
  15. package/src/client/dist/spa/assets/MainLayout-BMxEROm4.css +1 -0
  16. package/src/client/dist/spa/assets/MainLayout-QtbVbbnd.js +1 -0
  17. package/src/client/dist/spa/assets/QBadge-CNojh9Rl.js +1 -0
  18. package/src/client/dist/spa/assets/QDialog-DgR7t6Vf.js +1 -0
  19. package/src/client/dist/spa/assets/QExpansionItem-VVjlYOIT.js +1 -0
  20. package/src/client/dist/spa/assets/QPage-DX4g-Dpe.js +1 -0
  21. package/src/client/dist/spa/assets/{QSpinnerDots-DcaNq8uL.js → QSpinnerDots-DeCf9Lr-.js} +1 -1
  22. package/src/client/dist/spa/assets/QTooltip-DKYJ8kVW.js +1 -0
  23. package/src/client/dist/spa/assets/SettingsPage-DjWKsLC-.js +1 -0
  24. package/src/client/dist/spa/assets/SettingsPage-Yv31Z9aG.css +1 -0
  25. package/src/client/dist/spa/assets/WorkspacePage-DkM58caD.css +1 -0
  26. package/src/client/dist/spa/assets/WorkspacePage-EAh91w9s.js +2 -0
  27. package/src/client/dist/spa/assets/_plugin-vue_export-helper-C6NdfBK4.js +1 -0
  28. package/src/client/dist/spa/assets/index-C4WDJfjD.js +5 -0
  29. package/src/client/dist/spa/assets/{nodes-DeIen-kp.js → nodes-irfhA8FK.js} +1 -1
  30. package/src/client/dist/spa/assets/use-checkbox-BS9cbwg_.js +1 -0
  31. package/src/client/dist/spa/assets/use-quasar-CH0pSHUf.js +1 -0
  32. package/src/client/dist/spa/index.html +2 -2
  33. package/src/mcp-server/README.md +179 -0
  34. package/src/mcp-server/kobo-tasks-handlers.ts +238 -0
  35. package/src/mcp-server/kobo-tasks-server.ts +263 -29
  36. package/src/client/dist/spa/assets/ActivityFeed-CufaRX1M.js +0 -60
  37. package/src/client/dist/spa/assets/ActivityFeed-DBNn62g_.css +0 -1
  38. package/src/client/dist/spa/assets/CreatePage-Cyl-TRHT.js +0 -2
  39. package/src/client/dist/spa/assets/MainLayout-D_vxGAPn.css +0 -1
  40. package/src/client/dist/spa/assets/MainLayout-Dzy0I8lB.js +0 -1
  41. package/src/client/dist/spa/assets/QBadge-Cb92Ia8-.js +0 -1
  42. package/src/client/dist/spa/assets/QDialog-CMC1Ph52.js +0 -1
  43. package/src/client/dist/spa/assets/QExpansionItem-DDjku8zz.js +0 -1
  44. package/src/client/dist/spa/assets/QPage-DaNo_vcd.js +0 -1
  45. package/src/client/dist/spa/assets/QTabPanels-BKHAAJ2p.js +0 -1
  46. package/src/client/dist/spa/assets/QTooltip-637ruGFc.js +0 -1
  47. package/src/client/dist/spa/assets/SettingsPage-B9VYIQs-.css +0 -1
  48. package/src/client/dist/spa/assets/SettingsPage-Blw7Qk7m.js +0 -1
  49. package/src/client/dist/spa/assets/WorkspacePage-DlnwomOE.js +0 -2
  50. package/src/client/dist/spa/assets/WorkspacePage-HtatyhXN.css +0 -1
  51. package/src/client/dist/spa/assets/_plugin-vue_export-helper-CHpmshS7.js +0 -1
  52. package/src/client/dist/spa/assets/index-DJkEmbBM.js +0 -5
  53. package/src/client/dist/spa/assets/use-quasar-Dq-Vjx_2.js +0 -1
@@ -3,10 +3,21 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js'
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
4
4
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'
5
5
  import Database from 'better-sqlite3'
6
- import { listTasksHandler, markTaskDoneHandler } from './kobo-tasks-handlers.js'
6
+ import {
7
+ createTaskHandler,
8
+ deleteTaskHandler,
9
+ getDevServerStatusHandler,
10
+ getSettingsHandler,
11
+ getWorkspaceInfoHandler,
12
+ listTasksHandler,
13
+ listWorkspaceImagesHandler,
14
+ markTaskDoneHandler,
15
+ updateTaskHandler,
16
+ } from './kobo-tasks-handlers.js'
7
17
 
8
18
  const workspaceId = process.env.KOBO_WORKSPACE_ID
9
19
  const dbPath = process.env.KOBO_DB_PATH
20
+ const settingsPath = process.env.KOBO_SETTINGS_PATH
10
21
  const backendUrl = process.env.KOBO_BACKEND_URL ?? 'http://localhost:3000'
11
22
 
12
23
  if (!workspaceId) {
@@ -41,6 +52,31 @@ async function notifyBackend(taskId: string): Promise<void> {
41
52
  }
42
53
  }
43
54
 
55
+ async function notifyTasksUpdated(): Promise<void> {
56
+ try {
57
+ const url = `${backendUrl}/api/workspaces/${workspaceId}/tasks/notify-updated`
58
+ await fetch(url, { method: 'POST' })
59
+ } catch (err) {
60
+ console.error('[kobo-tasks-server] notify-updated failed:', err)
61
+ }
62
+ }
63
+
64
+ async function backendRequest(method: 'GET' | 'POST' | 'PATCH', pathname: string, body?: unknown): Promise<unknown> {
65
+ const url = `${backendUrl}${pathname}`
66
+ const init: RequestInit = { method }
67
+ if (body !== undefined) {
68
+ init.headers = { 'Content-Type': 'application/json' }
69
+ init.body = JSON.stringify(body)
70
+ }
71
+ const res = await fetch(url, init)
72
+ if (!res.ok) {
73
+ const errText = await res.text().catch(() => '')
74
+ throw new Error(`Backend ${method} ${pathname} returned ${res.status}: ${errText}`)
75
+ }
76
+ const text = await res.text()
77
+ return text ? JSON.parse(text) : null
78
+ }
79
+
44
80
  const server = new Server({ name: 'kobo-tasks', version: '1.0.0' }, { capabilities: { tools: {} } })
45
81
 
46
82
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
@@ -48,7 +84,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
48
84
  {
49
85
  name: 'list_tasks',
50
86
  description:
51
- 'List all tasks and acceptance criteria for the current workspace with their IDs and current status. Call this first to discover task IDs before calling mark_task_done.',
87
+ 'List all tasks and acceptance criteria for the current workspace with their IDs and current status. Call this first to discover task IDs before calling mark_task_done / update_task / delete_task.',
52
88
  inputSchema: {
53
89
  type: 'object',
54
90
  properties: {},
@@ -70,45 +106,243 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
70
106
  required: ['task_id'],
71
107
  },
72
108
  },
109
+ {
110
+ name: 'create_task',
111
+ description:
112
+ 'Create a new task or acceptance criterion for the current workspace. Appended at the end of the list.',
113
+ inputSchema: {
114
+ type: 'object',
115
+ properties: {
116
+ title: { type: 'string', description: 'Task title' },
117
+ is_acceptance_criterion: {
118
+ type: 'boolean',
119
+ description: 'Whether this is an acceptance criterion (default: false)',
120
+ },
121
+ },
122
+ required: ['title'],
123
+ },
124
+ },
125
+ {
126
+ name: 'update_task',
127
+ description:
128
+ 'Update an existing task — change title, status, or is_acceptance_criterion flag. At least one field is required.',
129
+ inputSchema: {
130
+ type: 'object',
131
+ properties: {
132
+ task_id: { type: 'string', description: 'The ID of the task to update' },
133
+ title: { type: 'string', description: 'New title (optional)' },
134
+ status: {
135
+ type: 'string',
136
+ enum: ['pending', 'in_progress', 'done'],
137
+ description: 'New status (optional)',
138
+ },
139
+ is_acceptance_criterion: {
140
+ type: 'boolean',
141
+ description: 'Toggle acceptance criterion flag (optional)',
142
+ },
143
+ },
144
+ required: ['task_id'],
145
+ },
146
+ },
147
+ {
148
+ name: 'delete_task',
149
+ description: 'Delete a task from the current workspace permanently.',
150
+ inputSchema: {
151
+ type: 'object',
152
+ properties: {
153
+ task_id: { type: 'string', description: 'The ID of the task to delete' },
154
+ },
155
+ required: ['task_id'],
156
+ },
157
+ },
158
+ {
159
+ name: 'get_settings',
160
+ description:
161
+ 'Read Kōbō settings (global + projects). Optionally filter to a specific project by path to get both global and that project override.',
162
+ inputSchema: {
163
+ type: 'object',
164
+ properties: {
165
+ project_path: {
166
+ type: 'string',
167
+ description: 'Optional project path to resolve a specific project entry',
168
+ },
169
+ },
170
+ required: [],
171
+ },
172
+ },
173
+ {
174
+ name: 'get_dev_server_status',
175
+ description: 'Check whether the dev server is running for the current workspace.',
176
+ inputSchema: {
177
+ type: 'object',
178
+ properties: {},
179
+ required: [],
180
+ },
181
+ },
182
+ {
183
+ name: 'get_workspace_info',
184
+ description:
185
+ 'Get all metadata about the current workspace (name, project path, branches, model, notion URL, worktree path, status).',
186
+ inputSchema: { type: 'object', properties: {}, required: [] },
187
+ },
188
+ {
189
+ name: 'start_dev_server',
190
+ description: 'Start the dev server configured for the current workspace.',
191
+ inputSchema: { type: 'object', properties: {}, required: [] },
192
+ },
193
+ {
194
+ name: 'stop_dev_server',
195
+ description: 'Stop the dev server of the current workspace.',
196
+ inputSchema: { type: 'object', properties: {}, required: [] },
197
+ },
198
+ {
199
+ name: 'get_dev_server_logs',
200
+ description: 'Fetch the last N lines of the dev server logs for the current workspace.',
201
+ inputSchema: {
202
+ type: 'object',
203
+ properties: {
204
+ tail: {
205
+ type: 'number',
206
+ description: 'Number of lines to fetch from the end (default: 200)',
207
+ },
208
+ },
209
+ required: [],
210
+ },
211
+ },
212
+ {
213
+ name: 'list_workspace_images',
214
+ description:
215
+ 'List all images uploaded to the current workspace (from .ai/images/index.json). Returns uid, originalName, relativePath and createdAt for each image.',
216
+ inputSchema: { type: 'object', properties: {}, required: [] },
217
+ },
218
+ {
219
+ name: 'get_git_info',
220
+ description:
221
+ 'Get git stats for the current workspace (commit count, files changed, insertions, deletions, PR URL if any).',
222
+ inputSchema: { type: 'object', properties: {}, required: [] },
223
+ },
224
+ {
225
+ name: 'set_workspace_status',
226
+ description:
227
+ 'Update the current workspace status. Valid values: idle, completed, error. Transitions are validated by the backend.',
228
+ inputSchema: {
229
+ type: 'object',
230
+ properties: {
231
+ status: {
232
+ type: 'string',
233
+ description: 'New status (e.g. idle, completed)',
234
+ },
235
+ },
236
+ required: ['status'],
237
+ },
238
+ },
73
239
  ],
74
240
  }))
75
241
 
242
+ function ok(data: unknown) {
243
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] }
244
+ }
245
+
246
+ function fail(message: string) {
247
+ return { content: [{ type: 'text', text: `Error: ${message}` }], isError: true }
248
+ }
249
+
76
250
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
77
251
  const { name, arguments: args } = request.params
252
+ const a = (args ?? {}) as Record<string, unknown>
78
253
 
79
- if (name === 'list_tasks') {
80
- const tasks = listTasksHandler(db, workspaceId!)
81
- return {
82
- content: [{ type: 'text', text: JSON.stringify(tasks, null, 2) }],
254
+ try {
255
+ if (name === 'list_tasks') {
256
+ return ok(listTasksHandler(db, workspaceId!))
83
257
  }
84
- }
85
258
 
86
- if (name === 'mark_task_done') {
87
- const taskId = (args as { task_id?: string })?.task_id
88
- if (!taskId) {
89
- return {
90
- content: [{ type: 'text', text: 'Error: task_id parameter is required' }],
91
- isError: true,
92
- }
93
- }
94
- try {
259
+ if (name === 'mark_task_done') {
260
+ const taskId = a.task_id as string | undefined
261
+ if (!taskId) return fail('task_id parameter is required')
95
262
  const result = markTaskDoneHandler(db, workspaceId!, taskId)
96
263
  void notifyBackend(taskId)
97
- return {
98
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
99
- }
100
- } catch (err) {
101
- const message = err instanceof Error ? err.message : String(err)
102
- return {
103
- content: [{ type: 'text', text: `Error: ${message}` }],
104
- isError: true,
105
- }
264
+ return ok(result)
265
+ }
266
+
267
+ if (name === 'create_task') {
268
+ const title = a.title as string | undefined
269
+ if (!title) return fail('title parameter is required')
270
+ const task = createTaskHandler(db, workspaceId!, {
271
+ title,
272
+ is_acceptance_criterion: a.is_acceptance_criterion as boolean | undefined,
273
+ })
274
+ void notifyTasksUpdated()
275
+ return ok(task)
276
+ }
277
+
278
+ if (name === 'update_task') {
279
+ const taskId = a.task_id as string | undefined
280
+ if (!taskId) return fail('task_id parameter is required')
281
+ const task = updateTaskHandler(db, workspaceId!, taskId, {
282
+ title: a.title as string | undefined,
283
+ status: a.status as string | undefined,
284
+ is_acceptance_criterion: a.is_acceptance_criterion as boolean | undefined,
285
+ })
286
+ void notifyTasksUpdated()
287
+ return ok(task)
288
+ }
289
+
290
+ if (name === 'delete_task') {
291
+ const taskId = a.task_id as string | undefined
292
+ if (!taskId) return fail('task_id parameter is required')
293
+ const result = deleteTaskHandler(db, workspaceId!, taskId)
294
+ void notifyTasksUpdated()
295
+ return ok(result)
296
+ }
297
+
298
+ if (name === 'get_settings') {
299
+ return ok(getSettingsHandler(settingsPath, a.project_path as string | undefined))
300
+ }
301
+
302
+ if (name === 'get_dev_server_status') {
303
+ return ok(getDevServerStatusHandler(db, workspaceId!))
106
304
  }
107
- }
108
305
 
109
- return {
110
- content: [{ type: 'text', text: `Unknown tool: ${name}` }],
111
- isError: true,
306
+ if (name === 'get_workspace_info') {
307
+ return ok(getWorkspaceInfoHandler(db, workspaceId!))
308
+ }
309
+
310
+ if (name === 'start_dev_server') {
311
+ const result = await backendRequest('POST', `/api/dev-server/${workspaceId}/start`)
312
+ return ok(result)
313
+ }
314
+
315
+ if (name === 'stop_dev_server') {
316
+ const result = await backendRequest('POST', `/api/dev-server/${workspaceId}/stop`)
317
+ return ok(result)
318
+ }
319
+
320
+ if (name === 'get_dev_server_logs') {
321
+ const tail = (a.tail as number | undefined) ?? 200
322
+ const result = await backendRequest('GET', `/api/dev-server/${workspaceId}/logs?tail=${tail}`)
323
+ return ok(result)
324
+ }
325
+
326
+ if (name === 'list_workspace_images') {
327
+ const info = getWorkspaceInfoHandler(db, workspaceId!)
328
+ return ok(listWorkspaceImagesHandler(info.worktreePath))
329
+ }
330
+
331
+ if (name === 'get_git_info') {
332
+ const result = await backendRequest('GET', `/api/workspaces/${workspaceId}/git-stats`)
333
+ return ok(result)
334
+ }
335
+
336
+ if (name === 'set_workspace_status') {
337
+ const status = a.status as string | undefined
338
+ if (!status) return fail('status parameter is required')
339
+ const result = await backendRequest('PATCH', `/api/workspaces/${workspaceId}`, { status })
340
+ return ok(result)
341
+ }
342
+
343
+ return fail(`Unknown tool: ${name}`)
344
+ } catch (err) {
345
+ return fail(err instanceof Error ? err.message : String(err))
112
346
  }
113
347
  })
114
348
 
@@ -1,60 +0,0 @@
1
- import{Bt as e,Ft as t,Gt as n,It as r,Nt as i,Ot as a,St as o,Wt as s,_t as c,at as l,dt as u,ft as d,ht as f,jt as p,kt as m,lt as ee,mt as te,pt as h,qt as g,r as ne,ut as _,y as v}from"./nodes-DeIen-kp.js";import{i as re,o as ie,s as y}from"./index-DJkEmbBM.js";import{A as ae,t as b}from"./_plugin-vue_export-helper-CHpmshS7.js";import{t as x}from"./QSpinnerDots-DcaNq8uL.js";import{t as oe}from"./QTooltip-637ruGFc.js";var{entries:se,setPrototypeOf:S,isFrozen:ce,getPrototypeOf:le,getOwnPropertyDescriptor:ue}=Object,{freeze:C,seal:w,create:de}=Object,{apply:T,construct:fe}=typeof Reflect<`u`&&Reflect;C||=function(e){return e},w||=function(e){return e},T||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},fe||=function(e){return new e(...[...arguments].slice(1))};var pe=A(Array.prototype.forEach),me=A(Array.prototype.lastIndexOf),he=A(Array.prototype.pop),E=A(Array.prototype.push),ge=A(Array.prototype.splice),_e=A(String.prototype.toLowerCase),ve=A(String.prototype.toString),ye=A(String.prototype.match),D=A(String.prototype.replace),be=A(String.prototype.indexOf),xe=A(String.prototype.trim),O=A(Object.prototype.hasOwnProperty),k=A(RegExp.prototype.test),Se=j(TypeError);function A(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return T(e,t,n)}}function j(e){return function(){return fe(e,[...arguments])}}function M(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:_e;S&&S(e,null);let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(ce(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Ce(e){for(let t=0;t<e.length;t++)O(e,t)||(e[t]=null);return e}function N(e){let t=de(null);for(let[n,r]of se(e))O(e,n)&&(Array.isArray(r)?t[n]=Ce(r):r&&typeof r==`object`&&r.constructor===Object?t[n]=N(r):t[n]=r);return t}function we(e,t){for(;e!==null;){let n=ue(e,t);if(n){if(n.get)return A(n.get);if(typeof n.value==`function`)return A(n.value)}e=le(e)}function n(){return null}return n}var Te=C(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),Ee=C(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),De=C([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Oe=C([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),ke=C(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Ae=C([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),je=C([`#text`]),Me=C(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns.slot`.split(`.`)),Ne=C(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Pe=C(`accent.accentunder.align.bevelled.close.columnsalign.columnlines.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lspace.lquote.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Fe=C([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),P=w(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Ie=w(/<%[\w\W]*|[\w\W]*%>/gm),F=w(/\$\{[\w\W]*/gm),Le=w(/^data-[\-\w.\u00B7-\uFFFF]+$/),Re=w(/^aria-[\-\w]+$/),ze=w(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),I=w(/^(?:\w+script|data):/i),Be=w(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ve=w(/^html$/i),He=w(/^[a-z][.\w]*(-[.\w]+)+$/i),Ue=Object.freeze({__proto__:null,ARIA_ATTR:Re,ATTR_WHITESPACE:Be,CUSTOM_ELEMENT:He,DATA_ATTR:Le,DOCTYPE_NAME:Ve,ERB_EXPR:Ie,IS_ALLOWED_URI:ze,IS_SCRIPT_OR_DATA:I,MUSTACHE_EXPR:P,TMPLIT_EXPR:F}),We={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Ge=function(){return typeof window>`u`?null:window},Ke=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},qe=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Je(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Ge(),t=e=>Je(e);if(t.version=`3.3.3`,t.removed=[],!e||!e.document||e.document.nodeType!==We.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,r=n,i=r.currentScript,{DocumentFragment:a,HTMLTemplateElement:o,Node:s,Element:c,NodeFilter:l,NamedNodeMap:u=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:d,DOMParser:f,trustedTypes:p}=e,m=c.prototype,ee=we(m,`cloneNode`),te=we(m,`remove`),h=we(m,`nextSibling`),g=we(m,`childNodes`),ne=we(m,`parentNode`);if(typeof o==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let _,v=``,{implementation:re,createNodeIterator:ie,createDocumentFragment:y,getElementsByTagName:ae}=n,{importNode:b}=r,x=qe();t.isSupported=typeof se==`function`&&typeof ne==`function`&&re&&re.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:oe,ERB_EXPR:S,TMPLIT_EXPR:ce,DATA_ATTR:le,ARIA_ATTR:ue,IS_SCRIPT_OR_DATA:w,ATTR_WHITESPACE:T,CUSTOM_ELEMENT:fe}=Ue,{IS_ALLOWED_URI:A}=Ue,j=null,Ce=M({},[...Te,...Ee,...De,...ke,...je]),P=null,Ie=M({},[...Me,...Ne,...Pe,...Fe]),F=Object.seal(de(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Le=null,Re=null,I=Object.seal(de(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Be=!0,He=!0,Ye=!1,Xe=!0,L=!1,R=!0,z=!1,B=!1,V=!1,Ze=!1,H=!1,Qe=!1,$e=!0,et=!1,U=!0,tt=!1,W={},G=null,nt=M({},[`annotation-xml`,`audio`,`colgroup`,`desc`,`foreignobject`,`head`,`iframe`,`math`,`mi`,`mn`,`mo`,`ms`,`mtext`,`noembed`,`noframes`,`noscript`,`plaintext`,`script`,`style`,`svg`,`template`,`thead`,`title`,`video`,`xmp`]),rt=null,it=M({},[`audio`,`video`,`img`,`source`,`image`,`track`]),at=null,ot=M({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),st=`http://www.w3.org/1998/Math/MathML`,ct=`http://www.w3.org/2000/svg`,K=`http://www.w3.org/1999/xhtml`,q=K,lt=!1,ut=null,dt=M({},[st,ct,K],ve),ft=M({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),pt=M({},[`annotation-xml`]),mt=M({},[`title`,`style`,`font`,`a`,`script`]),ht=null,gt=[`application/xhtml+xml`,`text/html`],J=null,_t=null,vt=n.createElement(`form`),yt=function(e){return e instanceof RegExp||e instanceof Function},bt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(_t&&_t===e)){if((!e||typeof e!=`object`)&&(e={}),e=N(e),ht=gt.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,J=ht===`application/xhtml+xml`?ve:_e,j=O(e,`ALLOWED_TAGS`)?M({},e.ALLOWED_TAGS,J):Ce,P=O(e,`ALLOWED_ATTR`)?M({},e.ALLOWED_ATTR,J):Ie,ut=O(e,`ALLOWED_NAMESPACES`)?M({},e.ALLOWED_NAMESPACES,ve):dt,at=O(e,`ADD_URI_SAFE_ATTR`)?M(N(ot),e.ADD_URI_SAFE_ATTR,J):ot,rt=O(e,`ADD_DATA_URI_TAGS`)?M(N(it),e.ADD_DATA_URI_TAGS,J):it,G=O(e,`FORBID_CONTENTS`)?M({},e.FORBID_CONTENTS,J):nt,Le=O(e,`FORBID_TAGS`)?M({},e.FORBID_TAGS,J):N({}),Re=O(e,`FORBID_ATTR`)?M({},e.FORBID_ATTR,J):N({}),W=O(e,`USE_PROFILES`)?e.USE_PROFILES:!1,Be=e.ALLOW_ARIA_ATTR!==!1,He=e.ALLOW_DATA_ATTR!==!1,Ye=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Xe=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,L=e.SAFE_FOR_TEMPLATES||!1,R=e.SAFE_FOR_XML!==!1,z=e.WHOLE_DOCUMENT||!1,Ze=e.RETURN_DOM||!1,H=e.RETURN_DOM_FRAGMENT||!1,Qe=e.RETURN_TRUSTED_TYPE||!1,V=e.FORCE_BODY||!1,$e=e.SANITIZE_DOM!==!1,et=e.SANITIZE_NAMED_PROPS||!1,U=e.KEEP_CONTENT!==!1,tt=e.IN_PLACE||!1,A=e.ALLOWED_URI_REGEXP||ze,q=e.NAMESPACE||K,ft=e.MATHML_TEXT_INTEGRATION_POINTS||ft,pt=e.HTML_INTEGRATION_POINTS||pt,F=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&yt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(F.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&yt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(F.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==`boolean`&&(F.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),L&&(He=!1),H&&(Ze=!0),W&&(j=M({},je),P=de(null),W.html===!0&&(M(j,Te),M(P,Me)),W.svg===!0&&(M(j,Ee),M(P,Ne),M(P,Fe)),W.svgFilters===!0&&(M(j,De),M(P,Ne),M(P,Fe)),W.mathMl===!0&&(M(j,ke),M(P,Pe),M(P,Fe))),O(e,`ADD_TAGS`)||(I.tagCheck=null),O(e,`ADD_ATTR`)||(I.attributeCheck=null),e.ADD_TAGS&&(typeof e.ADD_TAGS==`function`?I.tagCheck=e.ADD_TAGS:(j===Ce&&(j=N(j)),M(j,e.ADD_TAGS,J))),e.ADD_ATTR&&(typeof e.ADD_ATTR==`function`?I.attributeCheck=e.ADD_ATTR:(P===Ie&&(P=N(P)),M(P,e.ADD_ATTR,J))),e.ADD_URI_SAFE_ATTR&&M(at,e.ADD_URI_SAFE_ATTR,J),e.FORBID_CONTENTS&&(G===nt&&(G=N(G)),M(G,e.FORBID_CONTENTS,J)),e.ADD_FORBID_CONTENTS&&(G===nt&&(G=N(G)),M(G,e.ADD_FORBID_CONTENTS,J)),U&&(j[`#text`]=!0),z&&M(j,[`html`,`head`,`body`]),j.table&&(M(j,[`tbody`]),delete Le.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw Se(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw Se(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);_=e.TRUSTED_TYPES_POLICY,v=_.createHTML(``)}else _===void 0&&(_=Ke(p,i)),_!==null&&typeof v==`string`&&(v=_.createHTML(``));C&&C(e),_t=e}},xt=M({},[...Ee,...De,...Oe]),St=M({},[...ke,...Ae]),Ct=function(e){let t=ne(e);(!t||!t.tagName)&&(t={namespaceURI:q,tagName:`template`});let n=_e(e.tagName),r=_e(t.tagName);return ut[e.namespaceURI]?e.namespaceURI===ct?t.namespaceURI===K?n===`svg`:t.namespaceURI===st?n===`svg`&&(r===`annotation-xml`||ft[r]):!!xt[n]:e.namespaceURI===st?t.namespaceURI===K?n===`math`:t.namespaceURI===ct?n===`math`&&pt[r]:!!St[n]:e.namespaceURI===K?t.namespaceURI===ct&&!pt[r]||t.namespaceURI===st&&!ft[r]?!1:!St[n]&&(mt[n]||!xt[n]):!!(ht===`application/xhtml+xml`&&ut[e.namespaceURI]):!1},wt=function(e){E(t.removed,{element:e});try{ne(e).removeChild(e)}catch{te(e)}},Tt=function(e,n){try{E(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{E(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(Ze||H)try{wt(n)}catch{}else try{n.setAttribute(e,``)}catch{}},Et=function(e){let t=null,r=null;if(V)e=`<remove></remove>`+e;else{let t=ye(e,/^[\r\n\t ]+/);r=t&&t[0]}ht===`application/xhtml+xml`&&q===K&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=_?_.createHTML(e):e;if(q===K)try{t=new f().parseFromString(i,ht)}catch{}if(!t||!t.documentElement){t=re.createDocument(q,`template`,null);try{t.documentElement.innerHTML=lt?v:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),q===K?ae.call(t,z?`html`:`body`)[0]:z?t.documentElement:a},Dt=function(e){return ie.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Ot=function(e){return e instanceof d&&(typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||!(e.attributes instanceof u)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`)},kt=function(e){return typeof s==`function`&&e instanceof s};function Y(e,n,r){pe(e,e=>{e.call(t,n,r,_t)})}let At=function(e){let n=null;if(Y(x.beforeSanitizeElements,e,null),Ot(e))return wt(e),!0;let r=J(e.nodeName);if(Y(x.uponSanitizeElement,e,{tagName:r,allowedTags:j}),R&&e.hasChildNodes()&&!kt(e.firstElementChild)&&k(/<[/\w!]/g,e.innerHTML)&&k(/<[/\w!]/g,e.textContent)||e.nodeType===We.progressingInstruction||R&&e.nodeType===We.comment&&k(/<[/\w]/g,e.data))return wt(e),!0;if(!(I.tagCheck instanceof Function&&I.tagCheck(r))&&(!j[r]||Le[r])){if(!Le[r]&&Mt(r)&&(F.tagNameCheck instanceof RegExp&&k(F.tagNameCheck,r)||F.tagNameCheck instanceof Function&&F.tagNameCheck(r)))return!1;if(U&&!G[r]){let t=ne(e)||e.parentNode,n=g(e)||e.childNodes;if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=ee(n[i],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,h(e))}}}return wt(e),!0}return e instanceof c&&!Ct(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&k(/<\/no(script|embed|frames)/i,e.innerHTML)?(wt(e),!0):(L&&e.nodeType===We.text&&(n=e.textContent,pe([oe,S,ce],e=>{n=D(n,e,` `)}),e.textContent!==n&&(E(t.removed,{element:e.cloneNode()}),e.textContent=n)),Y(x.afterSanitizeElements,e,null),!1)},jt=function(e,t,r){if(Re[t]||$e&&(t===`id`||t===`name`)&&(r in n||r in vt))return!1;if(!(He&&!Re[t]&&k(le,t))&&!(Be&&k(ue,t))&&!(I.attributeCheck instanceof Function&&I.attributeCheck(t,e))){if(!P[t]||Re[t]){if(!(Mt(e)&&(F.tagNameCheck instanceof RegExp&&k(F.tagNameCheck,e)||F.tagNameCheck instanceof Function&&F.tagNameCheck(e))&&(F.attributeNameCheck instanceof RegExp&&k(F.attributeNameCheck,t)||F.attributeNameCheck instanceof Function&&F.attributeNameCheck(t,e))||t===`is`&&F.allowCustomizedBuiltInElements&&(F.tagNameCheck instanceof RegExp&&k(F.tagNameCheck,r)||F.tagNameCheck instanceof Function&&F.tagNameCheck(r))))return!1}else if(!at[t]&&!k(A,D(r,T,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&be(r,`data:`)===0&&rt[e])&&!(Ye&&!k(w,D(r,T,``)))&&r)return!1}return!0},Mt=function(e){return e!==`annotation-xml`&&ye(e,fe)},Nt=function(e){Y(x.beforeSanitizeAttributes,e,null);let{attributes:n}=e;if(!n||Ot(e))return;let r={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:P,forceKeepAttr:void 0},i=n.length;for(;i--;){let{name:a,namespaceURI:o,value:s}=n[i],c=J(a),l=s,u=a===`value`?l:xe(l);if(r.attrName=c,r.attrValue=u,r.keepAttr=!0,r.forceKeepAttr=void 0,Y(x.uponSanitizeAttribute,e,r),u=r.attrValue,et&&(c===`id`||c===`name`)&&(Tt(a,e),u=`user-content-`+u),R&&k(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,u)){Tt(a,e);continue}if(c===`attributename`&&ye(u,`href`)){Tt(a,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){Tt(a,e);continue}if(!Xe&&k(/\/>/i,u)){Tt(a,e);continue}L&&pe([oe,S,ce],e=>{u=D(u,e,` `)});let d=J(e.nodeName);if(!jt(d,c,u)){Tt(a,e);continue}if(_&&typeof p==`object`&&typeof p.getAttributeType==`function`&&!o)switch(p.getAttributeType(d,c)){case`TrustedHTML`:u=_.createHTML(u);break;case`TrustedScriptURL`:u=_.createScriptURL(u);break}if(u!==l)try{o?e.setAttributeNS(o,a,u):e.setAttribute(a,u),Ot(e)?wt(e):he(t.removed)}catch{Tt(a,e)}}Y(x.afterSanitizeAttributes,e,null)},Pt=function e(t){let n=null,r=Dt(t);for(Y(x.beforeSanitizeShadowDOM,t,null);n=r.nextNode();)Y(x.uponSanitizeShadowNode,n,null),At(n),Nt(n),n.content instanceof a&&e(n.content);Y(x.afterSanitizeShadowDOM,t,null)};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,o=null,c=null,l=null;if(lt=!e,lt&&(e=`<!-->`),typeof e!=`string`&&!kt(e))if(typeof e.toString==`function`){if(e=e.toString(),typeof e!=`string`)throw Se(`dirty is not a string, aborting`)}else throw Se(`toString is not a function`);if(!t.isSupported)return e;if(B||bt(n),t.removed=[],typeof e==`string`&&(tt=!1),tt){if(e.nodeName){let t=J(e.nodeName);if(!j[t]||Le[t])throw Se(`root node is forbidden and cannot be sanitized in-place`)}}else if(e instanceof s)i=Et(`<!---->`),o=i.ownerDocument.importNode(e,!0),o.nodeType===We.element&&o.nodeName===`BODY`||o.nodeName===`HTML`?i=o:i.appendChild(o);else{if(!Ze&&!L&&!z&&e.indexOf(`<`)===-1)return _&&Qe?_.createHTML(e):e;if(i=Et(e),!i)return Ze?null:Qe?v:``}i&&V&&wt(i.firstChild);let u=Dt(tt?e:i);for(;c=u.nextNode();)At(c),Nt(c),c.content instanceof a&&Pt(c.content);if(tt)return e;if(Ze){if(H)for(l=y.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(P.shadowroot||P.shadowrootmode)&&(l=b.call(r,l,!0)),l}let d=z?i.outerHTML:i.innerHTML;return z&&j[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&k(Ve,i.ownerDocument.doctype.name)&&(d=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
2
- `+d),L&&pe([oe,S,ce],e=>{d=D(d,e,` `)}),_&&Qe?_.createHTML(d):d},t.setConfig=function(){bt(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}),B=!0},t.clearConfig=function(){_t=null,B=!1},t.isValidAttribute=function(e,t,n){return _t||bt({}),jt(J(e),J(t),n)},t.addHook=function(e,t){typeof t==`function`&&E(x[e],t)},t.removeHook=function(e,t){if(t!==void 0){let n=me(x[e],t);return n===-1?void 0:ge(x[e],n,1)[0]}return he(x[e])},t.removeHooks=function(e){x[e]=[]},t.removeAllHooks=function(){x=qe()},t}var Ye=Je(),Xe;function L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var R=L();function z(e){R=e}var B={exec:()=>null};function V(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(H.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var Ze=(()=>{try{return!0}catch{return!1}})(),H={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,`i`),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},Qe=/^(?:[ \t]*(?:\n|$))+/,$e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,et=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,U=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,tt=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,W=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,G=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,nt=V(G).replace(/bull/g,W).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),rt=V(G).replace(/bull/g,W).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),it=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,at=/^[^\n]+/,ot=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,st=V(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,ot).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ct=V(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,W).getRegex(),K=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,q=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,lt=V(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,q).replace(`tag`,K).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ut=V(it).replace(`hr`,U).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,K).getRegex(),dt={blockquote:V(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,ut).getRegex(),code:$e,def:st,fences:et,heading:tt,hr:U,html:lt,lheading:nt,list:ct,newline:Qe,paragraph:ut,table:B,text:at},ft=V(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,U).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,K).getRegex(),pt={...dt,lheading:rt,table:ft,paragraph:V(it).replace(`hr`,U).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,ft).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,K).getRegex()},mt={...dt,html:V(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,q).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:B,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:V(it).replace(`hr`,U).replace(`heading`,` *#{1,6} *[^
3
- ]`).replace(`lheading`,nt).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},ht=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,gt=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,J=/^( {2,}|\\)\n(?!\s*$)/,_t=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,vt=/[\p{P}\p{S}]/u,yt=/[\s\p{P}\p{S}]/u,bt=/[^\s\p{P}\p{S}]/u,xt=V(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,yt).getRegex(),St=/(?!~)[\p{P}\p{S}]/u,Ct=/(?!~)[\s\p{P}\p{S}]/u,wt=/(?:[^\s\p{P}\p{S}]|~)/u,Tt=V(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,Ze?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Et=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Dt=V(Et,`u`).replace(/punct/g,vt).getRegex(),Ot=V(Et,`u`).replace(/punct/g,St).getRegex(),kt=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Y=V(kt,`gu`).replace(/notPunctSpace/g,bt).replace(/punctSpace/g,yt).replace(/punct/g,vt).getRegex(),At=V(kt,`gu`).replace(/notPunctSpace/g,wt).replace(/punctSpace/g,Ct).replace(/punct/g,St).getRegex(),jt=V(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,bt).replace(/punctSpace/g,yt).replace(/punct/g,vt).getRegex(),Mt=V(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,vt).getRegex(),Nt=V(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,bt).replace(/punctSpace/g,yt).replace(/punct/g,vt).getRegex(),Pt=V(/\\(punct)/,`gu`).replace(/punct/g,vt).getRegex(),Ft=V(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),It=V(q).replace(`(?:-->|$)`,`-->`).getRegex(),Lt=V(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,It).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Rt=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,zt=V(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Rt).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Bt=V(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Rt).replace(`ref`,ot).getRegex(),Vt=V(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,ot).getRegex(),Ht=V(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Bt).replace(`nolink`,Vt).getRegex(),Ut=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Wt={_backpedal:B,anyPunctuation:Pt,autolink:Ft,blockSkip:Tt,br:J,code:gt,del:B,delLDelim:B,delRDelim:B,emStrongLDelim:Dt,emStrongRDelimAst:Y,emStrongRDelimUnd:jt,escape:ht,link:zt,nolink:Vt,punctuation:xt,reflink:Bt,reflinkSearch:Ht,tag:Lt,text:_t,url:B},Gt={...Wt,link:V(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Rt).getRegex(),reflink:V(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Rt).getRegex()},Kt={...Wt,emStrongRDelimAst:At,emStrongLDelim:Ot,delLDelim:Mt,delRDelim:Nt,url:V(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,Ut).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:V(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,Ut).getRegex()},qt={...Kt,br:V(J).replace(`{2,}`,`*`).getRegex(),text:V(Kt.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},Jt={normal:dt,gfm:pt,pedantic:mt},Yt={normal:Wt,gfm:Kt,breaks:qt,pedantic:Gt},Xt={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},Zt=e=>Xt[e];function X(e,t){if(t){if(H.escapeTest.test(e))return e.replace(H.escapeReplace,Zt)}else if(H.escapeTestNoEncode.test(e))return e.replace(H.escapeReplaceNoEncode,Zt);return e}function Qt(e){try{e=encodeURI(e).replace(H.percentDecode,`%`)}catch{return null}return e}function $t(e,t){let n=e.replace(H.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(H.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``);for(;r<n.length;r++)n[r]=n[r].trim().replace(H.slashPipe,`|`);return n}function en(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function tn(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function nn(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function rn(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function an(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
4
- `).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(`
5
- `)}var on=class{constructor(e){y(this,`options`,void 0),y(this,`rules`,void 0),y(this,`lexer`,void 0),this.options=e||R}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,``);return{type:`code`,raw:t[0],codeBlockStyle:`indented`,text:this.options.pedantic?e:en(e,`
6
- `)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=an(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=en(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:en(t[0],`
7
- `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=en(t[0],`
8
- `).split(`
9
- `),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o<e.length;o++)if(this.rules.other.blockquoteStart.test(e[o]))a.push(e[o]),t=!0;else if(!t)a.push(e[o]);else break;e=e.slice(o);let s=a.join(`
10
- `),c=s.replace(this.rules.other.blockquoteSetextReplace,`
11
- $1`).replace(this.rules.other.blockquoteSetextReplace2,``);n=n?`${n}
12
- ${s}`:s,r=r?`${r}
13
- ${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,i,!0),this.lexer.state.top=l,e.length===0)break;let u=i.at(-1);if(u?.type===`code`)break;if(u?.type===`blockquote`){let t=u,a=t.raw+`
14
- `+e.join(`
15
- `),o=this.blockquote(a);i[i.length-1]=o,n=n.substring(0,n.length-t.raw.length)+o.raw,r=r.substring(0,r.length-t.text.length)+o.text;break}else if(u?.type===`list`){let t=u,a=t.raw+`
16
- `+e.join(`
17
- `),o=this.list(a);i[i.length-1]=o,n=n.substring(0,n.length-u.raw.length)+o.raw,r=r.substring(0,r.length-t.raw.length)+o.raw,e=a.substring(i.at(-1).raw.length).split(`
18
- `);continue}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=nn(t[2].split(`
19
- `,1)[0],t[1].length),l=e.split(`
20
- `,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+`
21
- `,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(`
22
- `,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=`
23
- `+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=`
24
- `+l}u=!l.trim(),r+=p+`
25
- `,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items){if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),e.task){if(e.text=e.text.replace(this.rules.other.listReplaceTask,``),e.tokens[0]?.type===`text`||e.tokens[0]?.type===`paragraph`){e.tokens[0].raw=e.tokens[0].raw.replace(this.rules.other.listReplaceTask,``),e.tokens[0].text=e.tokens[0].text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}}let t=this.rules.other.listTaskCheckbox.exec(e.raw);if(t){let n={type:`checkbox`,raw:t[0]+` `,checked:t[0]!==`[ ]`};e.checked=n.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=n.raw+e.tokens[0].raw,e.tokens[0].text=n.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(n)):e.tokens.unshift({type:`paragraph`,raw:n.raw,text:n.raw,tokens:[n]}):e.tokens.unshift(n)}}if(!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:`html`,block:!0,raw:t[0],pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:t[0],href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=$t(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(`
26
- `):[],a={type:`table`,raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push($t(e,a.header.length).map((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:t[0],depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===`
27
- `?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=en(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=tn(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),rn(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return rn(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=0,c=r[0][0]===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+n);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(a=[...i].length,r[3]||r[4]){o+=a;continue}else if((r[5]||r[6])&&n%3&&!((n+a)%3)){s+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+s);let t=[...r[0]][0].length,c=e.slice(0,n+r.index+t+a);if(Math.min(n,a)%2){let e=c.slice(1,-1);return{type:`em`,raw:c,text:e,tokens:this.lexer.inlineTokens(e)}}let l=c.slice(2,-2);return{type:`strong`,raw:c,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},Z=class e{constructor(e){y(this,`tokens`,void 0),y(this,`options`,void 0),y(this,`state`,void 0),y(this,`inlineQueue`,void 0),y(this,`tokenizer`,void 0),this.tokens=[],this.tokens.links=Object.create(null),this.options=e||R,this.options.tokenizer=this.options.tokenizer||new on,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:H,block:Jt.normal,inline:Yt.normal};this.options.pedantic?(t.block=Jt.pedantic,t.inline=Yt.pedantic):this.options.gfm&&(t.block=Jt.gfm,this.options.breaks?t.inline=Yt.breaks:t.inline=Yt.gfm),this.tokenizer.rules=t}static get rules(){return{block:Jt,inline:Yt}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(H.carriageReturn,`
28
- `),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(H.tabCharGlobal,` `).replace(H.spaceLine,``));e;){let r;if(this.options.extensions?.block?.some(n=>(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let n=t.at(-1);r.raw.length===1&&n!==void 0?n.raw+=`
29
- `:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
30
- `)?``:`
31
- `)+r.raw,n.text+=`
32
- `+r.text,this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
33
- `)?``:`
34
- `)+r.raw,n.text+=`
35
- `+r.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let a=t.at(-1);n&&a?.type===`paragraph`?(a.raw+=(a.raw.endsWith(`
36
- `)?``:`
37
- `)+r.raw,a.text+=`
38
- `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(`
39
- `)?``:`
40
- `)+r.raw,n.text+=`
41
- `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(e){let t=`Infinite loop on byte: `+e.charCodeAt(0);if(this.options.silent){console.error(t);break}else throw Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)e.includes(r[0].slice(r[0].lastIndexOf(`[`)+1,-1))&&(n=n.slice(0,r.index)+`[`+`a`.repeat(r[0].length-2)+`]`+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+`++`+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+`[`+`a`.repeat(r[0].length-i-2)+`]`+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,o=``;for(;e;){a||(o=``),a=!1;let r;if(this.options.extensions?.inline?.some(n=>(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);r.type===`text`&&n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(i)){e=e.substring(r.raw.length),r.raw.slice(-1)!==`_`&&(o=r.raw.slice(-1)),a=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){let t=`Infinite loop on byte: `+e.charCodeAt(0);if(this.options.silent){console.error(t);break}else throw Error(t)}}return t}},sn=class{constructor(e){y(this,`options`,void 0),y(this,`parser`,void 0),this.options=e||R}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(H.notSpaceStart)?.[0],i=e.replace(H.endingNewline,``)+`
42
- `;return r?`<pre><code class="language-`+X(r)+`">`+(n?i:X(i,!0))+`</code></pre>
43
- `:`<pre><code>`+(n?i:X(i,!0))+`</code></pre>
44
- `}blockquote({tokens:e}){return`<blockquote>
45
- ${this.parser.parse(e)}</blockquote>
46
- `}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
47
- `}hr(e){return`<hr>
48
- `}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t<e.items.length;t++){let n=e.items[t];r+=this.listitem(n)}let i=t?`ol`:`ul`,a=t&&n!==1?` start="`+n+`"`:``;return`<`+i+a+`>
49
- `+r+`</`+i+`>
50
- `}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
51
- `}checkbox({checked:e}){return`<input `+(e?`checked="" `:``)+`disabled="" type="checkbox"> `}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
52
- `}table(e){let t=``,n=``;for(let t=0;t<e.header.length;t++)n+=this.tablecell(e.header[t]);t+=this.tablerow({text:n});let r=``;for(let t=0;t<e.rows.length;t++){let i=e.rows[t];n=``;for(let e=0;e<i.length;e++)n+=this.tablecell(i[e]);r+=this.tablerow({text:n})}return r&&=`<tbody>${r}</tbody>`,`<table>
53
- <thead>
54
- `+t+`</thead>
55
- `+r+`</table>
56
- `}tablerow({text:e}){return`<tr>
57
- ${e}</tr>
58
- `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
59
- `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${X(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=Qt(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+X(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=Qt(e);if(i===null)return X(n);e=i;let a=`<img src="${e}" alt="${X(n)}"`;return t&&(a+=` title="${X(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:X(e.text)}},cn=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},Q=class e{constructor(e){y(this,`options`,void 0),y(this,`renderer`,void 0),y(this,`textRenderer`,void 0),this.options=e||R,this.options.renderer=this.options.renderer||new sn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new cn}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},ln=(Xe=class{constructor(e){y(this,`options`,void 0),y(this,`block`,void 0),this.options=e||R}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?Z.lex:Z.lexInline}provideParser(e=this.block){return e?Q.parse:Q.parseInline}},y(Xe,`passThroughHooks`,new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`])),y(Xe,`passThroughHooksRespectAsync`,new Set([`preprocess`,`postprocess`,`processAllTokens`])),Xe),un=new class{constructor(...e){y(this,`defaults`,L()),y(this,`options`,this.setOptions),y(this,`parse`,this.parseMarkdown(!0)),y(this,`parseInline`,this.parseMarkdown(!1)),y(this,`Parser`,Q),y(this,`Renderer`,sn),y(this,`TextRenderer`,cn),y(this,`Lexer`,Z),y(this,`Tokenizer`,on),y(this,`Hooks`,ln),this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new sn(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new on(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new ln;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];ln.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&ln.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Z.lex(e,t??this.defaults)}parser(e,t){return Q.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?Z.lex:Z.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?Q.parse:Q.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?Z.lex:Z.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?Q.parse:Q.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
60
- Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+X(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function $(e,t){return un.parse(e,t)}$.options=$.setOptions=function(e){return un.setOptions(e),$.defaults=un.defaults,z($.defaults),$},$.getDefaults=L,$.defaults=R,$.use=function(...e){return un.use(...e),$.defaults=un.defaults,z($.defaults),$},$.walkTokens=function(e,t){return un.walkTokens(e,t)},$.parseInline=un.parseInline,$.Parser=Q,$.parser=Q.parse,$.Renderer=sn,$.TextRenderer=cn,$.Lexer=Z,$.lexer=Z.lex,$.Tokenizer=on,$.Hooks=ln,$.parse=$,$.options,$.setOptions,$.use,$.walkTokens,$.parseInline,Q.parse,Z.lex;var dn={key:0,class:`af-empty column items-center justify-center text-center q-pa-xl`},fn=[`data-item-id`],pn=[`onClick`],mn={class:`af-tool-label text-grey-7`},hn={class:`af-time`},gn={key:0,class:`af-tool-args q-mt-xs rounded-borders`},_n={class:`af-args-pre`},vn={class:`af-text-header row items-center q-mb-xs`},yn={class:`af-time`},bn=[`innerHTML`],xn={class:`af-options q-mt-sm q-gutter-sm`},Sn={class:`text-weight-bold q-mr-xs`},Cn=[`innerHTML`],wn={key:2,class:`row items-center`},Tn={class:`af-system-content text-caption text-amber-6`},En={class:`af-time`},Dn={key:3,class:`row items-center`},On={class:`af-error-content text-red-5`},kn={class:`af-time`},An={key:4,class:`row items-center`},jn={class:`af-raw-content text-grey-7`},Mn={class:`af-time`},Nn=b(c({__name:`ActivityFeed`,setup(c){function y(e){let t=$.parse(e,{async:!1,breaks:!0,gfm:!0});return Ye.sanitize(t)}let b=ie(),se=re(),S=e(null),ce=e(new Set);function le(e){let t=[...e.matchAll(/^-\s*\*\*([A-Z])\s*[—–-]\s*(.+?)\*\*/gm)];if(t.length<2)return null;let n=e.indexOf(t[0][0]);return{textBefore:e.substring(0,n).trim(),options:t.map(e=>({key:e[1],label:`${e[1]} — ${e[2]}`}))}}let ue=new Map;function C(e,t){return ue.has(e)||ue.set(e,le(t)),ue.get(e)}function w(e){let t=b.selectedWorkspaceId;t&&se.sendChatMessage(t,e)}let de=ee(()=>{let e=b.activityFeed;for(let t=e.length-1;t>=0;t--)if(e[t].type===`text`)return e[t].id;return null}),T=e(-1);function fe(){let e=b.activityFeed.map((e,t)=>({item:e,idx:t})).filter(({item:e})=>e.meta?.sender===`user`);if(e.length===0)return;T.value<=0?T.value=e.length-1:T.value--;let t=e[T.value].item.id,n=S.value?.querySelector(`[data-item-id="${t}"]`);n&&n.scrollIntoView({behavior:`smooth`,block:`center`})}t(()=>b.activityFeed.length,()=>{T.value=-1});let pe=e(!1);function me(){let e=S.value;e&&(pe.value=!(e.scrollHeight-e.scrollTop-e.clientHeight<50))}function he(){if(pe.value)return;let e=S.value;e&&(e.scrollTop=e.scrollHeight)}t(()=>b.activityFeed.length,()=>{o(he)}),a(()=>{S.value?.addEventListener(`scroll`,me),o(he)}),m(()=>{S.value?.removeEventListener(`scroll`,me)});function E(e){return new Date(e).toLocaleTimeString(`en-US`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function ge(e){let t=e.toLowerCase();return t.includes(`read`)||t.includes(`grep`)||t.includes(`glob`)?`search`:t.includes(`write`)||t.includes(`edit`)?`edit`:t.includes(`bash`)||t.includes(`terminal`)?`terminal`:t.includes(`agent`)||t.includes(`task`)?`smart_toy`:`build`}function _e(e){switch(e.type){case`text`:return e.meta?.sender===`system-prompt`?`af-item--prompt`:e.meta?.sender===`user`?`af-item--user`:`af-item--text`;case`system`:return`af-item--system`;case`error`:return`af-item--error`;case`tool_use`:return`af-item--tool`;case`raw`:return`af-item--raw`;default:return``}}function ve(e){switch(e.meta?.sender){case`system-prompt`:return`Initial Prompt`;case`user`:return`You`;default:return`Agent`}}function ye(e){switch(e.meta?.sender){case`system-prompt`:return`text-indigo-4`;case`user`:return`text-green-4`;default:return`text-blue-4`}}function D(e){if(!e.meta)return!1;let t=e.meta;return t.input!==void 0&&t.input!==null}function be(e){ce.value.has(e)?ce.value.delete(e):ce.value.add(e)}function xe(e){return ce.value.has(e)}function O(e){if(!e.meta)return``;let t=e.meta;if(!t.input)return``;try{return JSON.stringify(t.input,null,2)}catch{return String(t.input)}}return(e,t)=>(p(),h(`div`,{ref_key:`feedContainer`,ref:S,class:`activity-feed q-pa-sm`},[s(b).activityFeed.length===0?(p(),h(`div`,dn,[f(v,{name:`forum`,size:`48px`,color:`grey-8`}),t[0]||=_(`div`,{class:`text-grey-6 q-mt-md text-body2`},`No activity yet`,-1),t[1]||=_(`div`,{class:`text-grey-8 text-caption q-mt-xs`},` Start a workspace to see agent output here `,-1)])):d(``,!0),(p(!0),h(l,null,i(s(b).activityFeed,e=>(p(),h(`div`,{key:e.id,"data-item-id":e.id,class:n([`af-item text-caption rounded-borders`,_e(e)])},[e.type===`tool_use`?(p(),h(l,{key:0},[_(`div`,{class:n([`af-tool row items-center q-gutter-xs`,{"cursor-pointer":D(e)}]),onClick:t=>D(e)&&be(e.id)},[f(v,{name:ge(e.content),size:`14px`,color:`grey-6`},null,8,[`name`]),_(`span`,mn,g(e.content),1),D(e)?(p(),u(v,{key:0,name:xe(e.id)?`expand_less`:`expand_more`,size:`14px`,color:`grey-7`},null,8,[`name`])):d(``,!0),f(ae),_(`span`,hn,g(E(e.timestamp)),1)],10,pn),xe(e.id)?(p(),h(`div`,gn,[_(`pre`,_n,g(O(e)),1)])):d(``,!0)],64)):e.type===`text`?(p(),h(l,{key:1},[_(`div`,vn,[_(`span`,{class:n([`text-caption text-weight-bold`,ye(e)])},g(ve(e)),3),e.meta?.pending?(p(),u(x,{key:0,size:`14px`,color:`grey-5`,class:`q-ml-sm`})):d(``,!0),f(ae),_(`span`,yn,g(E(e.timestamp)),1)]),C(e.id,e.content)&&e.id===de.value?(p(),h(l,{key:0},[_(`div`,{class:`af-text-content af-markdown`,innerHTML:y(C(e.id,e.content).textBefore)},null,8,bn),_(`div`,xn,[(p(!0),h(l,null,i(C(e.id,e.content).options,e=>(p(),u(ne,{key:e.key,"no-caps":``,outline:``,dense:``,color:`indigo-4`,class:`af-option-btn`,onClick:t=>w(e.key)},{default:r(()=>[_(`span`,Sn,g(e.key),1),te(` `+g(e.label.substring(e.key.length+3)),1)]),_:2},1032,[`onClick`]))),128))])],64)):(p(),h(`div`,{key:1,class:`af-text-content af-markdown`,innerHTML:y(e.content)},null,8,Cn))],64)):e.type===`system`?(p(),h(`div`,wn,[f(v,{name:`info`,size:`14px`,color:`amber-6`,class:`q-mr-xs`}),_(`span`,Tn,g(e.content),1),f(ae),_(`span`,En,g(E(e.timestamp)),1)])):e.type===`error`?(p(),h(`div`,Dn,[f(v,{name:`error`,size:`14px`,color:`red-5`,class:`q-mr-xs`}),_(`span`,On,g(e.content),1),f(ae),_(`span`,kn,g(E(e.timestamp)),1)])):(p(),h(`div`,An,[_(`span`,jn,g(e.content),1),f(ae),_(`span`,Mn,g(E(e.timestamp)),1)]))],10,fn))),128)),s(b).activityFeed.some(e=>e.meta?.sender===`user`)?(p(),u(ne,{key:1,round:``,dense:``,size:`sm`,icon:`person_search`,color:`indigo-8`,class:`scroll-to-user-btn`,onClick:fe},{default:r(()=>[f(oe,null,{default:r(()=>[...t[2]||=[te(`Go to your messages`,-1)]]),_:1})]),_:1})):d(``,!0)],512))}}),[[`__scopeId`,`data-v-eb9ffc77`]]);export{Nn as default};
@@ -1 +0,0 @@
1
- .activity-feed[data-v-eb9ffc77]{flex-direction:column;gap:4px;display:flex;position:relative;overflow:hidden auto}.af-item[data-v-eb9ffc77]{word-break:break-word;overflow-wrap:break-word;flex-shrink:0;padding:6px 10px;overflow-x:hidden}.af-time[data-v-eb9ffc77]{color:#555;flex-shrink:0;font-size:10px}.af-tool-label[data-v-eb9ffc77]{font-family:Roboto Mono,monospace;font-size:11px}.af-tool-args[data-v-eb9ffc77]{background-color:#ffffff0a;padding:6px 8px;overflow-x:auto}.af-args-pre[data-v-eb9ffc77]{color:#888;white-space:pre-wrap;word-break:break-word;margin:0;font-family:Roboto Mono,monospace;font-size:10px}.af-item--text[data-v-eb9ffc77]{background-color:#1a2a3a;border-left:3px solid #3b82f6}.af-item--user[data-v-eb9ffc77]{background-color:#1a2a1a;border-left:3px solid #22c55e}.af-item--prompt[data-v-eb9ffc77]{background-color:#1a1a2e;border-left:3px solid #6c63ff}.af-text-content[data-v-eb9ffc77]{color:#d0d0d0;word-break:break-word;line-height:1.5}.af-markdown[data-v-eb9ffc77] p{margin:0 0 8px}.af-markdown[data-v-eb9ffc77] p:last-child{margin-bottom:0}.af-markdown[data-v-eb9ffc77] h1,.af-markdown[data-v-eb9ffc77] h2,.af-markdown[data-v-eb9ffc77] h3{color:#e0e0e0;margin:12px 0 6px}.af-markdown[data-v-eb9ffc77] h1{font-size:16px}.af-markdown[data-v-eb9ffc77] h2{font-size:14px}.af-markdown[data-v-eb9ffc77] h3{font-size:13px}.af-markdown[data-v-eb9ffc77] ul,.af-markdown[data-v-eb9ffc77] ol{margin:4px 0;padding-left:20px}.af-markdown[data-v-eb9ffc77] li{margin:2px 0}.af-markdown[data-v-eb9ffc77] code{background-color:#ffffff14;border-radius:3px;padding:1px 4px;font-family:Roboto Mono,monospace;font-size:11px}.af-markdown[data-v-eb9ffc77] pre{background-color:#0000004d;border-radius:4px;margin:6px 0;padding:8px;overflow-x:auto}.af-markdown[data-v-eb9ffc77] pre code{background:0 0;padding:0}.af-markdown[data-v-eb9ffc77] strong{color:#fff}.af-markdown[data-v-eb9ffc77] a{color:#6c63ff}.af-markdown[data-v-eb9ffc77] blockquote{color:#aaa;border-left:3px solid #6c63ff;margin:6px 0;padding:4px 12px}.af-markdown[data-v-eb9ffc77] table{border-collapse:collapse;margin:6px 0;font-size:11px}.af-markdown[data-v-eb9ffc77] table th,.af-markdown[data-v-eb9ffc77] table td{border:1px solid #2a2a4a;padding:4px 8px}.af-markdown[data-v-eb9ffc77] table th{background-color:#ffffff0d}.af-item--system[data-v-eb9ffc77]{background-color:#2a2a1a;border-left:3px solid #f59e0b}.af-system-content[data-v-eb9ffc77]{white-space:pre-wrap}.af-item--error[data-v-eb9ffc77]{background-color:#2a1a1a;border-left:3px solid #ef4444}.af-item--raw[data-v-eb9ffc77]{white-space:pre-wrap;font-family:Roboto Mono,monospace}.scroll-to-user-btn[data-v-eb9ffc77]{opacity:.7;align-self:flex-end;margin-right:8px;transition:opacity .15s;position:sticky;bottom:8px}.scroll-to-user-btn[data-v-eb9ffc77]:hover{opacity:1}
@@ -1,2 +0,0 @@
1
- import{$ as e,Bt as t,Ft as n,It as r,Nt as i,Ot as ee,Wt as te,_t as ne,at as a,dt as o,ft as s,ht as c,it as l,jt as u,lt as d,mt as f,pt as p,qt as m,r as h,rt as g,ut as _,xt as re,y as v}from"./nodes-DeIen-kp.js";import{i as ie,o as ae,r as oe}from"./index-DJkEmbBM.js";import{A as y,t as b}from"./_plugin-vue_export-helper-CHpmshS7.js";import{_ as x,o as S}from"./QDialog-CMC1Ph52.js";import{n as se,t as ce}from"./use-quasar-Dq-Vjx_2.js";import{a as C,i as w,n as T,r as E,t as le}from"./QPage-DaNo_vcd.js";import{t as D}from"./QExpansionItem-DDjku8zz.js";var ue={class:`create-inner`},de={class:`create-card rounded-borders`},fe={class:`card-top-bar row items-center q-px-md q-py-xs`},pe={class:`model-badge cursor-default row items-center q-gutter-xs`},me={key:0,class:`notion-url-wrap`},he={key:0,class:`notion-error text-caption q-px-md q-pb-xs text-red-5`},ge={key:1,class:`notion-valid text-caption q-px-md q-pb-xs text-green-4`},_e={class:`card-name-wrap`},ve={class:`card-textarea-wrap`},ye={class:`q-pa-sm manual-section-body`},be={class:`row items-center q-gutter-sm q-mb-sm`},xe={class:`col text-caption text-grey-4`},Se={class:`q-pa-sm manual-section-body`},Ce={class:`row items-center q-gutter-sm q-mb-sm`},we={class:`col text-caption text-grey-4`},Te={class:`card-bottom-bar row items-center wrap q-px-sm q-py-xs q-gutter-xs`},Ee={class:`bottom-select-label row items-center no-wrap`},De={class:`bottom-select-label row items-center no-wrap`},Oe={class:`bottom-select-label row items-center no-wrap`},ke={class:`create-hint text-center text-body2 q-mt-md text-grey-8`},O=b(ne({__name:`CreatePage`,setup(ne){let b=oe(),O=ce(),k=ae(),A=se(),j=t([]),M=t(``),N=t(``),P=t(``),F=t(!1),I=t(`auto`),L=t(``),R=t(null),z=t([]),B=t(!1),V=t(!1),H=[{label:`Auto`,value:`auto`,description:`Claude picks the optimal model`},{label:`Opus 4.6`,value:`claude-opus-4-6`,description:`Most powerful`},{label:`Sonnet 4.6`,value:`claude-sonnet-4-6`,description:`Balanced`},{label:`Haiku 4.5`,value:`claude-haiku-4-5-20251001`,description:`Fastest`}],U=d(()=>P.value.trim().startsWith(`https://www.notion.so/`)),W=t([]),G=t([]),K=t(``),q=t(``),J=d(()=>!F.value||!U.value);function Y(){let e=K.value.trim();e&&(W.value.push(e),K.value=``)}function Ae(e){W.value.splice(e,1)}function X(){let e=q.value.trim();e&&(G.value.push(e),q.value=``)}function je(e){G.value.splice(e,1)}function Me(){F.value=!F.value,F.value||(P.value=``)}async function Ne(e){if(!e.trim()){z.value=[],R.value=null;return}B.value=!0;try{let t=await fetch(`/api/git/branches?path=${encodeURIComponent(e.trim())}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();z.value=n.local??n.branches??[],z.value.length>0&&!R.value&&(R.value=z.value[0]??null)}catch{z.value=[],R.value=null}finally{B.value=!1}}function Pe(e){let t=A.getProjectByPath(e);t&&(t.defaultSourceBranch&&(R.value=t.defaultSourceBranch),t.defaultModel?I.value=t.defaultModel:A.global.defaultModel&&(I.value=A.global.defaultModel))}let Z=null;n(L,e=>{Z&&clearTimeout(Z),Z=setTimeout(()=>{R.value=null,Ne(e),Pe(e)},500)});function Fe(e,t){t(()=>{j.value=A.projectPaths.filter(t=>t.toLowerCase().includes(e.toLowerCase()))})}ee(()=>{A.fetchSettings()});function Ie(e){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,``).trim().replace(/\s+/g,`-`).replace(/-+/g,`-`).substring(0,50)}function Q(){return M.value.trim()?M.value.trim().substring(0,80):!F.value&&N.value.trim()&&(N.value.trim().split(`
2
- `)[0]??``).substring(0,80)||`workspace`}function Le(e){let t=(e.split(`/`).pop()??``).split(`-`);return t.length>1&&/^[0-9a-f]{12,}$/i.test(t[t.length-1])&&t.pop(),t.join(`-`).toLowerCase().substring(0,50)||`task-${Date.now()}`}function Re(){return F.value&&!U.value?`Please paste a valid Notion URL (https://www.notion.so/...).`:!F.value&&!N.value.trim()?`Please describe the task.`:!F.value&&(!Q()||Q()===`workspace`)&&!M.value.trim()&&!N.value.trim()?`Please provide a workspace name.`:L.value.trim()?R.value?null:`Please select a branch.`:`Please enter the project path.`}async function $(){let e=Re();if(e){O.notify({type:`negative`,message:e,position:`top`});return}V.value=!0;try{let e=Q(),t;t=e===`workspace`?F.value&&U.value?Le(P.value.trim()):`task-${Date.now()}`:Ie(e);let n=`feature/${t}`,r={name:e,projectPath:L.value.trim(),sourceBranch:R.value,workingBranch:n,model:I.value,...F.value&&U.value?{notionUrl:P.value.trim()}:{},...J.value&&W.value.length>0?{tasks:W.value}:{},...J.value&&G.value.length>0?{acceptanceCriteria:G.value}:{}},i=await k.createWorkspace(r);ie().subscribe(i.id),k.selectWorkspace(i.id),b.push({name:`workspace`,params:{id:i.id}})}catch{O.notify({type:`negative`,message:`Error creating workspace.`,position:`top`})}finally{V.value=!1}}return(t,n)=>(u(),o(le,{class:`create-page flex flex-center column`},{default:r(()=>[_(`div`,ue,[n[12]||=_(`div`,{class:`create-title text-center text-weight-bold q-mb-lg text-grey-3`},` What would you like to work on? `,-1),_(`div`,de,[_(`div`,fe,[_(`span`,pe,[c(v,{name:`auto_awesome`,size:`14px`,color:`indigo-4`}),n[9]||=_(`span`,{class:`text-indigo-3 text-weight-medium text-caption`},`Claude Code`,-1)]),c(y),c(h,{flat:``,dense:``,"no-caps":``,size:`sm`,color:F.value?`green-4`:`grey-5`,class:`notion-toggle-btn text-caption rounded-borders`,onClick:Me},{default:r(()=>[c(v,{name:`description`,size:`14px`,class:`q-mr-xs`}),f(` `+m(F.value?`Notion enabled`:`Import from Notion`),1)]),_:1},8,[`color`])]),c(x,{color:`grey-9`}),c(e,{name:`slide`},{default:r(()=>[F.value?(u(),p(`div`,me,[c(S,{modelValue:P.value,"onUpdate:modelValue":n[0]||=e=>P.value=e,borderless:``,dense:``,placeholder:`https://www.notion.so/workspace/Page-title-abc123...`,class:`notion-url-input`,"input-class":`notion-url-input-inner`},{prepend:r(()=>[c(v,{name:`link`,size:`16px`,color:U.value?`green-4`:`grey-6`},null,8,[`color`])]),_:1},8,[`modelValue`]),P.value.trim()&&!U.value?(u(),p(`div`,he,` URL must start with https://www.notion.so/ `)):s(``,!0),U.value?(u(),p(`div`,ge,` Subtasks and acceptance criteria will be extracted automatically. `)):s(``,!0)])):s(``,!0)]),_:1}),F.value?(u(),o(x,{key:0,color:`grey-9`})):s(``,!0),_(`div`,_e,[c(S,{modelValue:M.value,"onUpdate:modelValue":n[1]||=e=>M.value=e,borderless:``,dense:``,placeholder:F.value&&U.value?`Workspace name (defaults to Notion page title)`:`Workspace name...`,class:`name-input`,"input-class":`name-input-inner`},null,8,[`modelValue`,`placeholder`])]),c(x,{color:`grey-9`}),_(`div`,ve,[c(S,{modelValue:N.value,"onUpdate:modelValue":n[2]||=e=>N.value=e,type:`textarea`,borderless:``,autogrow:``,rows:3,placeholder:F.value?`Additional instructions (optional)...`:`Describe the task...`,class:`create-textarea`,"input-class":`create-textarea-input`,onKeydown:[g(l($,[`ctrl`]),[`enter`]),g(l($,[`meta`]),[`enter`])]},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),c(x,{color:`grey-9`}),J.value?(u(),p(a,{key:1},[n[10]||=_(`div`,{class:`manual-hint q-px-md q-py-sm text-caption text-grey-6`},` No Notion ticket? Add your tasks and acceptance criteria manually — they'll be sent to the Claude agent as context. `,-1),c(D,{dark:``,dense:``,label:`Tasks (${W.value.length})`,"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm`},{default:r(()=>[_(`div`,ye,[_(`div`,be,[c(S,{modelValue:K.value,"onUpdate:modelValue":n[3]||=e=>K.value=e,dark:``,dense:``,borderless:``,placeholder:`Add a task...`,class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:g(l(Y,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),c(h,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!K.value.trim(),onClick:Y},null,8,[`disable`])]),(u(!0),p(a,null,i(W.value,(e,t)=>(u(),p(`div`,{key:`task-${t}`,class:`row items-center q-py-xs manual-item`},[_(`span`,xe,m(e),1),c(h,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>Ae(t)},null,8,[`onClick`])]))),128))])]),_:1},8,[`label`]),c(D,{dark:``,dense:``,label:`Acceptance Criteria (${G.value.length})`,"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm q-mb-sm`},{default:r(()=>[_(`div`,Se,[_(`div`,Ce,[c(S,{modelValue:q.value,"onUpdate:modelValue":n[4]||=e=>q.value=e,dark:``,dense:``,borderless:``,placeholder:`Add a criterion...`,class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:g(l(X,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),c(h,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!q.value.trim(),onClick:X},null,8,[`disable`])]),(u(!0),p(a,null,i(G.value,(e,t)=>(u(),p(`div`,{key:`crit-${t}`,class:`row items-center q-py-xs manual-item`},[_(`span`,we,m(e),1),c(h,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>je(t)},null,8,[`onClick`])]))),128))])]),_:1},8,[`label`]),c(x,{color:`grey-9`})],64)):s(``,!0),_(`div`,Te,[c(T,{modelValue:I.value,"onUpdate:modelValue":n[5]||=e=>I.value=e,options:H,dense:``,borderless:``,class:`bottom-select rounded-borders model-select`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`},{selected:r(()=>[_(`span`,Ee,[f(m(H.find(e=>e.value===I.value)?.label??I.value)+` `,1),c(v,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),option:r(({opt:e,itemProps:t})=>[c(C,re(t,{class:`model-option`}),{default:r(()=>[c(w,null,{default:r(()=>[c(E,{class:`text-white`},{default:r(()=>[f(m(e.label),1)]),_:2},1024),c(E,{caption:``,class:`text-grey-5`},{default:r(()=>[f(m(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`]),c(y),c(T,{modelValue:L.value,"onUpdate:modelValue":n[6]||=e=>L.value=e,options:j.value,dense:``,borderless:``,"use-input":``,"hide-selected":``,"fill-input":``,"input-debounce":`0`,"new-value-mode":`add`,class:`bottom-select rounded-borders repo-select`,"hide-dropdown-icon":``,behavior:te(A).projectPaths.length>0?`menu`:`dialog`,onFilter:Fe,onInputValue:n[7]||=e=>{L.value=e}},{prepend:r(()=>[c(v,{name:`attach_file`,size:`12px`,color:`grey-5`})]),selected:r(()=>[_(`span`,De,m(L.value||`/path/to/project`),1)]),"no-option":r(()=>[c(C,null,{default:r(()=>[c(w,{class:`text-grey-6 text-caption`},{default:r(()=>[...n[11]||=[f(` Enter the project path `,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`behavior`]),c(T,{modelValue:R.value,"onUpdate:modelValue":n[8]||=e=>R.value=e,options:z.value,dense:``,borderless:``,class:`bottom-select rounded-borders branch-select`,"hide-dropdown-icon":``,loading:B.value,disable:!L.value.trim()||B.value},{selected:r(()=>[_(`span`,Oe,[c(v,{name:`call_split`,size:`12px`,color:`grey-5`,class:`q-mr-xs`}),f(` `+m(R.value??`Branch`)+` `,1),c(v,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),"no-option":r(()=>[c(C,null,{default:r(()=>[c(w,{class:`text-grey-6 text-caption`},{default:r(()=>[f(m(L.value.trim()?`No branches found`:`Enter a project path`),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`loading`,`disable`]),c(h,{label:`Create`,"no-caps":``,unelevated:``,class:`create-btn text-weight-bold rounded-borders`,loading:V.value,onClick:$},null,8,[`loading`])])]),_(`div`,ke,m(F.value?`Subtasks and acceptance criteria will be extracted from the Notion page.`:`Click "Import from Notion" to automatically extract subtasks from a ticket.`),1)])]),_:1}))}}),[[`__scopeId`,`data-v-7d9d29f5`]]);export{O as default};
@@ -1 +0,0 @@
1
- .acceptance-item[data-v-b9e5e638]{padding:2px 0}.acceptance-item[data-v-b9e5e638]:hover{background-color:#ffffff08}.acceptance-item:hover .criterion-delete-btn[data-v-b9e5e638]{opacity:1}.criterion-delete-btn[data-v-b9e5e638]{opacity:0;transition:opacity .15s}.acceptance-title[data-v-b9e5e638]{word-break:break-word;cursor:text;line-height:1.4}.text-strike[data-v-b9e5e638]{opacity:.7;text-decoration:line-through}.criterion-input[data-v-b9e5e638] .q-field__control{height:22px;min-height:22px;padding:0}.criterion-input[data-v-b9e5e638] input{color:#e0e0e0;font-size:12px}.criterion-input[data-v-b9e5e638] input::placeholder{color:#555}.criterion-add-row[data-v-b9e5e638]{padding:2px 0}.log-content[data-v-c1509b16]{max-height:60vh;overflow-y:auto}.log-text[data-v-c1509b16]{color:#ccc;white-space:pre-wrap;word-break:break-all;background:#0d0d1a;margin:0;font-family:JetBrains Mono,Fira Code,monospace;font-size:11px}.dd-panel[data-v-8c173889]{min-height:48px}.git-btn[data-v-03bca960]{padding:2px 10px;font-size:11px}.notion-link[data-v-5f29da43]{text-decoration:none;display:inline-flex}.notion-link[data-v-5f29da43]:hover{text-decoration:underline}.task-item[data-v-5f29da43]{padding:2px 0}.task-item[data-v-5f29da43]:hover{background-color:#ffffff08}.task-item:hover .task-delete-btn[data-v-5f29da43]{opacity:1}.task-delete-btn[data-v-5f29da43]{opacity:0;transition:opacity .15s}.task-title[data-v-5f29da43]{word-break:break-word;cursor:text;line-height:1.4}.text-strike[data-v-5f29da43]{opacity:.7;text-decoration:line-through}.task-input[data-v-5f29da43] .q-field__control{height:22px;min-height:22px;padding:0}.task-input[data-v-5f29da43] input{color:#e0e0e0;font-size:12px}.task-input[data-v-5f29da43] input::placeholder{color:#555}.task-add-row[data-v-5f29da43]{padding:2px 0}.workspace-list[data-v-9d4c8886]{background-color:#16162a;overflow-x:hidden}.wl-search[data-v-9d4c8886]{background-color:#224;padding:0 8px}.wl-search[data-v-9d4c8886] .q-field__control{height:32px}.wl-search[data-v-9d4c8886] input{color:#ccc;font-size:12px}.wl-group-header[data-v-9d4c8886]:hover{background-color:#ffffff08}.wl-item[data-v-9d4c8886]{background-color:#224;transition:background-color .15s;position:relative}.wl-item[data-v-9d4c8886]:hover{background-color:#2a2a4a}.wl-item--selected[data-v-9d4c8886]{background-color:#2a2a4a;outline:1px solid #6c63ff66}.wl-item-action[data-v-9d4c8886]{opacity:0;transition:opacity .15s;position:absolute;top:50%;transform:translateY(-50%)}.wl-item-delete[data-v-9d4c8886]{right:4px}.wl-item-archive[data-v-9d4c8886],.wl-item-unarchive[data-v-9d4c8886]{right:28px}.wl-item:hover .wl-item-action[data-v-9d4c8886]{opacity:1}.wl-item--archived[data-v-9d4c8886]{opacity:.6;background-color:#1a1a30}.wl-item--archived[data-v-9d4c8886]:hover{opacity:.85}.wl-item--archived.wl-item--selected[data-v-9d4c8886]{opacity:1}.dd-dot[data-v-9d4c8886]{border-radius:50%;flex-shrink:0;width:6px;height:6px}.dd-dot--running[data-v-9d4c8886]{background-color:#22c55e;box-shadow:0 0 4px #22c55e80}.left-sidebar[data-v-57ce5ee5],.right-sidebar[data-v-57ce5ee5]{background-color:#16162a!important;border-color:#2a2a4a!important;overflow-x:hidden!important}[data-v-57ce5ee5] .q-drawer__content{overflow-x:hidden!important}.drawer-content[data-v-57ce5ee5]{overflow-y:auto}.drawer-header[data-v-57ce5ee5]{min-height:48px}.letter-spacing-wide[data-v-57ce5ee5]{letter-spacing:.05em}.right-tabs[data-v-57ce5ee5]{background-color:#16162a;flex-shrink:0}.right-tab-panels[data-v-57ce5ee5]{overflow-y:auto;background:0 0!important}[data-v-57ce5ee5] .q-tab-panel{padding:0}.main-content[data-v-57ce5ee5]{background-color:#1a1a2e}.resize-handle[data-v-57ce5ee5]{cursor:col-resize;z-index:10;width:4px;height:100%;transition:background-color .15s;position:absolute;top:0;right:-2px}.resize-handle[data-v-57ce5ee5]:hover,.resize-handle[data-v-57ce5ee5]:active{background-color:#6c63ff80}