@oro.ad/nuxt-claude-devtools 1.2.0 → 1.5.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 (151) hide show
  1. package/README.md +107 -14
  2. package/dist/client/200.html +1 -1
  3. package/dist/client/404.html +1 -1
  4. package/dist/client/_nuxt/{CSlPuO5s.js → 0BAoaFXM.js} +1 -1
  5. package/dist/client/_nuxt/88aFj9mk.js +1 -0
  6. package/dist/client/_nuxt/{CLKqRoht.js → B5vRr8Ti.js} +1 -1
  7. package/dist/client/_nuxt/BI4BFakr.js +1 -0
  8. package/dist/client/_nuxt/{o1jjB-UO.js → BJuQJ8yP.js} +1 -1
  9. package/dist/client/_nuxt/BMxGt8ZG.js +1 -0
  10. package/dist/client/_nuxt/Baq9Hzkz.js +1 -0
  11. package/dist/client/_nuxt/Bf779K50.js +1 -0
  12. package/dist/client/_nuxt/BmF8r-gh.js +1 -0
  13. package/dist/client/_nuxt/BryQ1L4F.js +1 -0
  14. package/dist/client/_nuxt/BsG0VKct.js +1 -0
  15. package/dist/client/_nuxt/Bt-DdLhQ.js +12 -0
  16. package/dist/client/_nuxt/C6Xm_PzB.js +1 -0
  17. package/dist/client/_nuxt/C8AkZ-W3.js +1 -0
  18. package/dist/client/_nuxt/CEM1iRz_.js +1 -0
  19. package/dist/client/_nuxt/CETmet01.js +1 -0
  20. package/dist/client/_nuxt/CG1tBJBN.js +1 -0
  21. package/dist/client/_nuxt/CXOn8Upj.js +1 -0
  22. package/dist/client/_nuxt/CYomf6PL.js +1 -0
  23. package/dist/client/_nuxt/CrhTgxiU.js +1 -0
  24. package/dist/client/_nuxt/{08Mb3FOO.js → CtWfW1XP.js} +1 -1
  25. package/dist/client/_nuxt/CuUOvg0u.js +1 -0
  26. package/dist/client/_nuxt/CxYvL5O5.js +1 -0
  27. package/dist/client/_nuxt/D8DUrd91.js +1 -0
  28. package/dist/client/_nuxt/DFkDlupw.js +4 -0
  29. package/dist/client/_nuxt/DG-9quB_.js +1 -0
  30. package/dist/client/_nuxt/DHlhBFAg.js +1 -0
  31. package/dist/client/_nuxt/DJw5U4z8.js +1 -0
  32. package/dist/client/_nuxt/DRReoGGV.js +1 -0
  33. package/dist/client/_nuxt/{b4Upel01.js → DSMailoF.js} +1 -1
  34. package/dist/client/_nuxt/DUPgidXP.js +1 -0
  35. package/dist/client/_nuxt/D_JyZ6Hh.js +1 -0
  36. package/dist/client/_nuxt/Dgm9zqhP.js +12 -0
  37. package/dist/client/_nuxt/builds/latest.json +1 -1
  38. package/dist/client/_nuxt/builds/meta/9c3f4183-f791-4377-86dc-370ce38cc49b.json +1 -0
  39. package/dist/client/_nuxt/entry.BMxUr06A.css +1 -0
  40. package/dist/client/_nuxt/h1c4XpR7.js +1 -0
  41. package/dist/client/_nuxt/kN0L7CSs.js +1 -0
  42. package/dist/client/_nuxt/n4TwJfzb.js +1 -0
  43. package/dist/client/_nuxt/zY60w9UT.js +1 -0
  44. package/dist/client/agents/index.html +1 -1
  45. package/dist/client/commands/index.html +1 -1
  46. package/dist/client/docs/index.html +1 -1
  47. package/dist/client/index.html +1 -1
  48. package/dist/client/mcp/index.html +1 -1
  49. package/dist/client/plugins/index.html +1 -0
  50. package/dist/client/settings/index.html +1 -0
  51. package/dist/client/skills/index.html +1 -1
  52. package/dist/module.d.mts +12 -1
  53. package/dist/module.json +1 -1
  54. package/dist/module.mjs +23 -5
  55. package/dist/runtime/constants.d.ts +29 -0
  56. package/dist/runtime/constants.js +5 -0
  57. package/dist/runtime/overlay/components/ChatOverlay.d.vue.ts +6 -0
  58. package/dist/runtime/overlay/components/ChatOverlay.vue +383 -0
  59. package/dist/runtime/overlay/components/ChatOverlay.vue.d.ts +6 -0
  60. package/dist/runtime/overlay/components/MarkdownContent.d.vue.ts +6 -0
  61. package/dist/runtime/overlay/components/MarkdownContent.vue +31 -0
  62. package/dist/runtime/overlay/components/MarkdownContent.vue.d.ts +6 -0
  63. package/dist/runtime/overlay/components/ToolCallBlock.d.vue.ts +8 -0
  64. package/dist/runtime/overlay/components/ToolCallBlock.vue +77 -0
  65. package/dist/runtime/overlay/components/ToolCallBlock.vue.d.ts +8 -0
  66. package/dist/runtime/overlay/components/chat/ChatHeader.d.vue.ts +18 -0
  67. package/dist/runtime/overlay/components/chat/ChatHeader.vue +82 -0
  68. package/dist/runtime/overlay/components/chat/ChatHeader.vue.d.ts +18 -0
  69. package/dist/runtime/overlay/components/chat/ChatInput.d.vue.ts +22 -0
  70. package/dist/runtime/overlay/components/chat/ChatInput.vue +526 -0
  71. package/dist/runtime/overlay/components/chat/ChatInput.vue.d.ts +22 -0
  72. package/dist/runtime/overlay/components/chat/ChatMessages.d.vue.ts +13 -0
  73. package/dist/runtime/overlay/components/chat/ChatMessages.vue +160 -0
  74. package/dist/runtime/overlay/components/chat/ChatMessages.vue.d.ts +13 -0
  75. package/dist/runtime/overlay/components/chat/ClaudeBadge.d.vue.ts +22 -0
  76. package/dist/runtime/overlay/components/chat/ClaudeBadge.vue +85 -0
  77. package/dist/runtime/overlay/components/chat/ClaudeBadge.vue.d.ts +22 -0
  78. package/dist/runtime/overlay/components/chat/HistoryPanel.d.vue.ts +17 -0
  79. package/dist/runtime/overlay/components/chat/HistoryPanel.vue +65 -0
  80. package/dist/runtime/overlay/components/chat/HistoryPanel.vue.d.ts +17 -0
  81. package/dist/runtime/overlay/components/chat/NicknameModal.d.vue.ts +13 -0
  82. package/dist/runtime/overlay/components/chat/NicknameModal.vue +89 -0
  83. package/dist/runtime/overlay/components/chat/NicknameModal.vue.d.ts +13 -0
  84. package/dist/runtime/overlay/components/chat/index.d.ts +6 -0
  85. package/dist/runtime/overlay/components/chat/index.js +6 -0
  86. package/dist/runtime/overlay/composables/index.d.ts +3 -0
  87. package/dist/runtime/overlay/composables/index.js +3 -0
  88. package/dist/runtime/overlay/composables/useMessageContext.d.ts +25 -0
  89. package/dist/runtime/overlay/composables/useMessageContext.js +29 -0
  90. package/dist/runtime/overlay/composables/useMobileSwipe.d.ts +15 -0
  91. package/dist/runtime/overlay/composables/useMobileSwipe.js +79 -0
  92. package/dist/runtime/overlay/composables/usePanelInteraction.d.ts +30 -0
  93. package/dist/runtime/overlay/composables/usePanelInteraction.js +184 -0
  94. package/dist/runtime/overlay/composables/usePanelPosition.d.ts +69 -0
  95. package/dist/runtime/overlay/composables/usePanelPosition.js +147 -0
  96. package/dist/runtime/overlay/plugin.client.d.ts +6 -0
  97. package/dist/runtime/overlay/plugin.client.js +29 -0
  98. package/dist/runtime/server/agents-manager.d.ts +17 -4
  99. package/dist/runtime/server/agents-manager.js +38 -109
  100. package/dist/runtime/server/base-resource-manager.d.ts +90 -0
  101. package/dist/runtime/server/base-resource-manager.js +201 -0
  102. package/dist/runtime/server/claude-session.d.ts +22 -1
  103. package/dist/runtime/server/claude-session.js +408 -29
  104. package/dist/runtime/server/commands-manager.d.ts +12 -4
  105. package/dist/runtime/server/commands-manager.js +25 -100
  106. package/dist/runtime/server/constants.d.ts +94 -0
  107. package/dist/runtime/server/constants.js +18 -0
  108. package/dist/runtime/server/docs-manager.d.ts +7 -0
  109. package/dist/runtime/server/docs-manager.js +112 -3
  110. package/dist/runtime/server/history-manager.d.ts +1 -0
  111. package/dist/runtime/server/history-manager.js +25 -3
  112. package/dist/runtime/server/plugins/socket.io.js +5 -3
  113. package/dist/runtime/server/plugins-manager.d.ts +84 -0
  114. package/dist/runtime/server/plugins-manager.js +338 -0
  115. package/dist/runtime/server/settings-manager.d.ts +17 -0
  116. package/dist/runtime/server/settings-manager.js +70 -0
  117. package/dist/runtime/server/share-manager.d.ts +24 -0
  118. package/dist/runtime/server/share-manager.js +96 -0
  119. package/dist/runtime/server/skills-manager.d.ts +18 -4
  120. package/dist/runtime/server/skills-manager.js +32 -159
  121. package/dist/runtime/shared/composables/useClaudeChat.d.ts +39 -0
  122. package/dist/runtime/shared/composables/useClaudeChat.js +40 -0
  123. package/dist/runtime/shared/composables/useClaudeChatCore.d.ts +40 -0
  124. package/dist/runtime/shared/composables/useClaudeChatCore.js +350 -0
  125. package/dist/runtime/shared/composables/useMessageContext.d.ts +54 -0
  126. package/dist/runtime/shared/composables/useMessageContext.js +195 -0
  127. package/dist/runtime/shared/composables/useShare.d.ts +52 -0
  128. package/dist/runtime/shared/composables/useShare.js +214 -0
  129. package/dist/runtime/shared/composables/useVoiceInput.d.ts +8 -0
  130. package/dist/runtime/shared/composables/useVoiceInput.js +106 -0
  131. package/dist/runtime/shared/constants.d.ts +28 -0
  132. package/dist/runtime/shared/constants.js +6 -0
  133. package/dist/runtime/shared/index.d.ts +9 -0
  134. package/dist/runtime/shared/index.js +5 -0
  135. package/dist/runtime/shared/types.d.ts +84 -0
  136. package/dist/runtime/shared/types.js +0 -0
  137. package/dist/runtime/types.d.ts +16 -0
  138. package/dist/types.d.mts +1 -1
  139. package/package.json +5 -3
  140. package/dist/client/_nuxt/BMi2eT6G.js +0 -1
  141. package/dist/client/_nuxt/BiBLVxWh.js +0 -1
  142. package/dist/client/_nuxt/BnRGpZsC.js +0 -8
  143. package/dist/client/_nuxt/C2GhPw5d.js +0 -7
  144. package/dist/client/_nuxt/CPQSDiF7.js +0 -12
  145. package/dist/client/_nuxt/D8683igF.js +0 -7
  146. package/dist/client/_nuxt/DBIw6BGF.js +0 -1
  147. package/dist/client/_nuxt/DCgjfr8H.js +0 -9
  148. package/dist/client/_nuxt/bl5iU4Kz.js +0 -1
  149. package/dist/client/_nuxt/builds/meta/35284331-5e85-46e0-9058-988fea05336c.json +0 -1
  150. package/dist/client/_nuxt/entry.BhHeZ_Nj.css +0 -1
  151. package/dist/client/_nuxt/nKfsBgPE.js +0 -4
package/README.md CHANGED
@@ -9,18 +9,31 @@ Nuxt DevTools integration for [Claude Code](https://claude.ai/code) AI assistant
9
9
 
10
10
  ## Features
11
11
 
12
+ ### Core
12
13
  - **Chat Interface** — Interactive chat with Claude AI directly in DevTools
13
- - **Streaming Responses** — Real-time streaming output from Claude
14
- - **Context Chips** — Send viewport size, browser info, and routing context with messages
15
- - **Component Picker** — Select Vue components from the page to add as context
14
+ - **Overlay Mode** — Lightweight floating chat panel that works without DevTools (`devtools: false`)
15
+ - **Streaming Responses** — Real-time streaming output from Claude with stop generation support
16
+ - **Voice Input** — Speech-to-text for hands-free messaging
17
+ - **File Attachments** — Attach images (camera/gallery) and files to messages
16
18
  - **Session Management** — Start new conversations or continue previous ones
17
19
  - **Chat History** — Browse and restore previous conversations
20
+
21
+ ### Context & Integration
22
+ - **Context Chips** — Send viewport size, browser info, and routing context with messages
23
+ - **Component Picker** — Select Vue components from the page to add as context
24
+ - **LLMS Sources** — Configure external documentation URLs (llms.txt format)
25
+
26
+ ### Extensibility
18
27
  - **Skills** — Markdown-based skills to extend Claude's capabilities (`.claude/skills/<name>/SKILL.md`)
19
28
  - **Subagents** — Specialized AI agents for delegated tasks (`.claude/agents/<name>.md`)
20
29
  - **Slash Commands** — Custom commands with YAML frontmatter (`.claude/commands/<name>.md`)
21
30
  - **Documentation** — Manage project docs that Claude can reference (`.claude/docs/`)
22
31
  - **MCP Servers** — Manage Model Context Protocol servers (add, remove, list)
32
+
33
+ ### Collaboration & Access
34
+ - **Collaborative Mode** — Share chat sessions with team members via link
23
35
  - **Tunnel Support** — Remote access via cloudflared tunnel
36
+ - **Mobile Support** — Responsive bottom-sheet UI with swipe gestures
24
37
 
25
38
  ## Prerequisites
26
39
 
@@ -73,6 +86,29 @@ export default defineNuxtConfig({
73
86
  | `claude.command` | `string` | `'claude'` | Path to Claude CLI executable |
74
87
  | `claude.args` | `string[]` | `[]` | Additional arguments for Claude CLI |
75
88
 
89
+ ## Overlay Mode
90
+
91
+ When you don't need full DevTools integration, use overlay mode for a lightweight chat experience:
92
+
93
+ ```ts
94
+ export default defineNuxtConfig({
95
+ modules: ['@oro.ad/nuxt-claude-devtools'],
96
+
97
+ devtools: {
98
+ enabled: false, // Disable DevTools
99
+ },
100
+
101
+ claudeDevtools: {
102
+ enabled: true,
103
+ },
104
+ })
105
+ ```
106
+
107
+ The overlay appears as a floating button (FAB) in the corner of your app:
108
+ - **Desktop**: Draggable floating panel, `Ctrl+Shift+K` to toggle
109
+ - **Mobile**: Full-width bottom sheet with swipe-to-close
110
+ - **Features**: Voice input, slash commands, markdown rendering, collaborative sharing
111
+
76
112
  ## Usage
77
113
 
78
114
  ### Chat Interface
@@ -201,6 +237,34 @@ Example MCP servers:
201
237
  - **GitHub**: `npx -y @modelcontextprotocol/server-github`
202
238
  - **Nuxt UI**: `https://ui.nuxt.com/mcp` (HTTP)
203
239
 
240
+ ### Collaborative Mode
241
+
242
+ Share your chat session with team members:
243
+
244
+ 1. Click the **Share** button in the chat header
245
+ 2. Enter a nickname (required for collaboration)
246
+ 3. Copy and share the generated link
247
+ 4. Team members opening the link join the same session
248
+
249
+ Features:
250
+ - Real-time message sync between all participants
251
+ - Nicknames displayed on messages from other users
252
+ - Own messages appear on the right (green), others on the left (purple)
253
+ - Share links can include pre-set nicknames via `oro_share_nickname` URL parameter
254
+
255
+ ### LLMS Sources
256
+
257
+ Configure external documentation URLs in llms.txt format:
258
+
259
+ 1. Go to the **Docs** tab in DevTools
260
+ 2. Add URLs to documentation sources
261
+ 3. Claude can fetch and use these when answering questions
262
+
263
+ Supported formats:
264
+ - Direct markdown URLs
265
+ - llms.txt manifest files
266
+ - API documentation endpoints
267
+
204
268
  ## Architecture
205
269
 
206
270
  ```
@@ -215,10 +279,22 @@ Example MCP servers:
215
279
  │ │ - /skills Skills manager │ │
216
280
  │ │ - /agents Subagents manager │ │
217
281
  │ │ - /commands Slash commands manager │ │
218
- │ │ - /docs Documentation viewer │ │
282
+ │ │ - /docs Documentation & LLMS sources │ │
219
283
  │ │ - /mcp MCP servers config │ │
284
+ │ │ - /plugins Plugin marketplace │ │
220
285
  │ └───────────────────────────────────────────────────┘ │
221
286
  └─────────────────────────────────────────────────────────┘
287
+ │ │
288
+ │ Socket.IO │ (or)
289
+ ▼ ▼
290
+ ┌──────────────────────┐ ┌──────────────────────────────┐
291
+ │ Chat Overlay │ │ Multiple Clients │
292
+ │ (Floating Panel) │ │ (Collaborative Mode) │
293
+ │ │ │ │
294
+ │ - Desktop: Draggable│ │ Client A ◄──┐ │
295
+ │ - Mobile: Bottom │ │ Client B ◄──┼── Shared │
296
+ │ sheet with swipe │ │ Client C ◄──┘ Session │
297
+ └──────────────────────┘ └──────────────────────────────┘
222
298
 
223
299
  │ Socket.IO
224
300
 
@@ -226,15 +302,16 @@ Example MCP servers:
226
302
  │ Claude Session Server │
227
303
  │ ┌─────────────────┐ ┌─────────────────────────────┐│
228
304
  │ │ Socket.IO Hub │───▶│ Claude CLI Process ││
229
- │ │ │ │ (spawn with --continue) ││
305
+ │ │ │ │ (spawn with --resume) ││
230
306
  │ │ Managers: │ └─────────────────────────────┘│
231
307
  │ │ - Skills │ │
232
308
  │ │ - Agents │ ┌─────────────────────────────┐│
233
309
  │ │ - Commands │ │ File Storage ││
234
- │ │ - Docs │ │ .claude/skills/ ││
235
- │ │ - History │ │ .claude/agents/ ││
236
- └─────────────────┘ │ .claude/commands/ ││
237
- │ .claude/docs/ ││
310
+ │ │ - Docs │ │ .claude-devtools/ ││
311
+ │ │ - History │ │ .claude/skills/ ││
312
+ │ - Share │ │ .claude/agents/ ││
313
+ - Plugins │ │ .claude/commands/ ││
314
+ │ └─────────────────┘ │ .claude/docs/ ││
238
315
  │ └─────────────────────────────┘│
239
316
  └─────────────────────────────────────────────────────────┘
240
317
  ```
@@ -287,27 +364,43 @@ npm run lint
287
364
  │ ├── devtools.ts # DevTools UI setup
288
365
  │ └── runtime/
289
366
  │ ├── logger.ts # Logging utility
367
+ │ ├── overlay/ # Lightweight chat overlay
368
+ │ │ └── components/
369
+ │ │ ├── ChatOverlay.vue # Main overlay component
370
+ │ │ ├── MarkdownContent.vue # Markdown renderer
371
+ │ │ └── ToolCallBlock.vue # Tool call display
372
+ │ ├── shared/ # Shared code (overlay + client)
373
+ │ │ ├── composables/
374
+ │ │ │ ├── useClaudeChat.ts # Chat logic
375
+ │ │ │ ├── useVoiceInput.ts # Speech recognition
376
+ │ │ │ └── useShare.ts # Collaborative sharing
377
+ │ │ ├── types.ts # TypeScript types
378
+ │ │ └── constants.ts # Shared constants
290
379
  │ └── server/
291
380
  │ ├── claude-session.ts # Socket.IO server & Claude process
292
381
  │ ├── skills-manager.ts # Skills CRUD operations
293
382
  │ ├── agents-manager.ts # Agents CRUD operations
294
383
  │ ├── commands-manager.ts # Commands CRUD operations
295
- │ ├── docs-manager.ts # Documentation management
296
- └── history-manager.ts # Chat history management
384
+ │ ├── docs-manager.ts # Documentation & LLMS management
385
+ ├── history-manager.ts # Chat history management
386
+ │ ├── share-manager.ts # Collaborative session management
387
+ │ └── plugins-manager.ts # Plugin marketplace
297
388
  ├── client/ # DevTools panel UI (Nuxt app)
298
389
  │ ├── pages/
299
390
  │ │ ├── index.vue # Chat interface
300
391
  │ │ ├── skills.vue # Skills manager
301
392
  │ │ ├── agents.vue # Subagents manager
302
393
  │ │ ├── commands.vue # Slash commands manager
303
- │ │ ├── docs.vue # Documentation viewer
304
- │ │ └── mcp.vue # MCP servers management
394
+ │ │ ├── docs.vue # Documentation & LLMS viewer
395
+ │ │ ├── mcp.vue # MCP servers management
396
+ │ │ └── plugins.vue # Plugin marketplace
305
397
  │ ├── composables/
306
398
  │ │ ├── useClaudeChat.ts # Socket, messages, session
307
399
  │ │ ├── useMessageContext.ts # Context chips logic
308
400
  │ │ ├── useVoiceInput.ts # Speech recognition
309
401
  │ │ ├── useAutocomplete.ts # Docs/commands autocomplete
310
- │ │ └── useComponentPicker.ts # Component selection
402
+ │ │ ├── useComponentPicker.ts # Component selection
403
+ │ │ └── useShare.ts # Collaborative sharing
311
404
  │ └── nuxt.config.ts
312
405
  └── playground/ # Development playground
313
406
  ```
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__claude-devtools/_nuxt/entry.BhHeZ_Nj.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__claude-devtools/_nuxt/nKfsBgPE.js"><script type="module" src="/__claude-devtools/_nuxt/nKfsBgPE.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{claudeDevtoolsBc:{tunnel:""}},app:{baseURL:"/__claude-devtools",buildId:"35284331-5e85-46e0-9058-988fea05336c",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1769481734083,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__claude-devtools/_nuxt/entry.BMxUr06A.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__claude-devtools/_nuxt/DFkDlupw.js"><script type="module" src="/__claude-devtools/_nuxt/DFkDlupw.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{claudeDevtoolsBc:{tunnel:""}},app:{baseURL:"/__claude-devtools",buildId:"9c3f4183-f791-4377-86dc-370ce38cc49b",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1770180892944,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__claude-devtools/_nuxt/entry.BhHeZ_Nj.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__claude-devtools/_nuxt/nKfsBgPE.js"><script type="module" src="/__claude-devtools/_nuxt/nKfsBgPE.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{claudeDevtoolsBc:{tunnel:""}},app:{baseURL:"/__claude-devtools",buildId:"35284331-5e85-46e0-9058-988fea05336c",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1769481734084,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__claude-devtools/_nuxt/entry.BMxUr06A.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__claude-devtools/_nuxt/DFkDlupw.js"><script type="module" src="/__claude-devtools/_nuxt/DFkDlupw.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{claudeDevtoolsBc:{tunnel:""}},app:{baseURL:"/__claude-devtools",buildId:"9c3f4183-f791-4377-86dc-370ce38cc49b",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1770180892944,false]</script></body></html>
@@ -1,4 +1,4 @@
1
- import{g as de,q as xe,c as be,o as we}from"./nKfsBgPE.js";function D(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var R=D();function se(n){R=n}var _={exec:()=>null};function p(n,e=""){let r=typeof n=="string"?n:n.source,s={replace:(t,i)=>{let l=typeof i=="string"?i:i.source;return l=l.replace(x.caret,"$1"),r=r.replace(t,l),s},getRegex:()=>new RegExp(r,e)};return s}var me=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),x={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,listReplaceTabs:/^\t+/,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,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}#`),htmlBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}<(?:[a-z].*>|!--)`,"i")},ye=/^(?:[ \t]*(?:\n|$))+/,$e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,P=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Se=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,O=/(?:[*+-]|\d{1,9}[.)])/,le=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ie=p(le).replace(/bull/g,O).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(),Te=p(le).replace(/bull/g,O).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(),H=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,ze=/^[^\n]+/,j=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ae=p(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",j).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),_e=p(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,O).getRegex(),B="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",N=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Pe=p("^ {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",N).replace("tag",B).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ae=p(H).replace("hr",P).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[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",B).getRegex(),Ie=p(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ae).getRegex(),G={blockquote:Ie,code:$e,def:Ae,fences:Re,heading:Se,hr:P,html:Pe,lheading:ie,list:_e,newline:ye,paragraph:ae,table:_,text:ze},V=p("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",P).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[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",B).getRegex(),Ce={...G,lheading:Te,table:V,paragraph:p(H).replace("hr",P).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",V).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",B).getRegex()},Le={...G,html:p(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",N).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:_,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:p(H).replace("hr",P).replace("heading",` *#{1,6} *[^
1
+ import{g as de,s as xe,c as be,o as we}from"./DFkDlupw.js";function D(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var R=D();function se(n){R=n}var _={exec:()=>null};function p(n,e=""){let r=typeof n=="string"?n:n.source,s={replace:(t,i)=>{let l=typeof i=="string"?i:i.source;return l=l.replace(x.caret,"$1"),r=r.replace(t,l),s},getRegex:()=>new RegExp(r,e)};return s}var me=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),x={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,listReplaceTabs:/^\t+/,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,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}#`),htmlBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}<(?:[a-z].*>|!--)`,"i")},ye=/^(?:[ \t]*(?:\n|$))+/,$e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,P=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Se=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,O=/(?:[*+-]|\d{1,9}[.)])/,le=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ie=p(le).replace(/bull/g,O).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(),Te=p(le).replace(/bull/g,O).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(),H=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,ze=/^[^\n]+/,j=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ae=p(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",j).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),_e=p(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,O).getRegex(),B="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",N=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Pe=p("^ {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",N).replace("tag",B).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ae=p(H).replace("hr",P).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[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",B).getRegex(),Ie=p(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ae).getRegex(),G={blockquote:Ie,code:$e,def:Ae,fences:Re,heading:Se,hr:P,html:Pe,lheading:ie,list:_e,newline:ye,paragraph:ae,table:_,text:ze},V=p("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",P).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[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",B).getRegex(),Ce={...G,lheading:Te,table:V,paragraph:p(H).replace("hr",P).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",V).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",B).getRegex()},Le={...G,html:p(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",N).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:_,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:p(H).replace("hr",P).replace("heading",` *#{1,6} *[^
2
2
  ]`).replace("lheading",ie).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},ve=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Be=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,oe=/^( {2,}|\\)\n(?!\s*$)/,Ee=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,E=/[\p{P}\p{S}]/u,X=/[\s\p{P}\p{S}]/u,ce=/[^\s\p{P}\p{S}]/u,qe=p(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,X).getRegex(),he=/(?!~)[\p{P}\p{S}]/u,Ze=/(?!~)[\s\p{P}\p{S}]/u,Me=/(?:[^\s\p{P}\p{S}]|~)/u,Qe=p(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",me?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),pe=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,De=p(pe,"u").replace(/punct/g,E).getRegex(),Oe=p(pe,"u").replace(/punct/g,he).getRegex(),ue="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",He=p(ue,"gu").replace(/notPunctSpace/g,ce).replace(/punctSpace/g,X).replace(/punct/g,E).getRegex(),je=p(ue,"gu").replace(/notPunctSpace/g,Me).replace(/punctSpace/g,Ze).replace(/punct/g,he).getRegex(),Ne=p("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,ce).replace(/punctSpace/g,X).replace(/punct/g,E).getRegex(),Ge=p(/\\(punct)/,"gu").replace(/punct/g,E).getRegex(),Xe=p(/^<(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(),Fe=p(N).replace("(?:-->|$)","-->").getRegex(),We=p("^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",Fe).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),C=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,Ue=p(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",C).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ge=p(/^!?\[(label)\]\[(ref)\]/).replace("label",C).replace("ref",j).getRegex(),ke=p(/^!?\[(ref)\](?:\[\])?/).replace("ref",j).getRegex(),Je=p("reflink|nolink(?!\\()","g").replace("reflink",ge).replace("nolink",ke).getRegex(),Y=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,F={_backpedal:_,anyPunctuation:Ge,autolink:Xe,blockSkip:Qe,br:oe,code:Be,del:_,emStrongLDelim:De,emStrongRDelimAst:He,emStrongRDelimUnd:Ne,escape:ve,link:Ue,nolink:ke,punctuation:qe,reflink:ge,reflinkSearch:Je,tag:We,text:Ee,url:_},Ke={...F,link:p(/^!?\[(label)\]\((.*?)\)/).replace("label",C).getRegex(),reflink:p(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",C).getRegex()},Z={...F,emStrongRDelimAst:je,emStrongLDelim:Oe,url:p(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Y).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:p(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Y).getRegex()},Ve={...Z,br:p(oe).replace("{2,}","*").getRegex(),text:p(Z.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},I={normal:G,gfm:Ce,pedantic:Le},T={normal:F,gfm:Z,breaks:Ve,pedantic:Ke},Ye={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},ee=n=>Ye[n];function y(n,e){if(e){if(x.escapeTest.test(n))return n.replace(x.escapeReplace,ee)}else if(x.escapeTestNoEncode.test(n))return n.replace(x.escapeReplaceNoEncode,ee);return n}function te(n){try{n=encodeURI(n).replace(x.percentDecode,"%")}catch{return null}return n}function re(n,e){let r=n.replace(x.findPipe,(i,l,o)=>{let a=!1,h=l;for(;--h>=0&&o[h]==="\\";)a=!a;return a?"|":" |"}),s=r.split(x.splitPipe),t=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length<e;)s.push("");for(;t<s.length;t++)s[t]=s[t].trim().replace(x.slashPipe,"|");return s}function z(n,e,r){let s=n.length;if(s===0)return"";let t=0;for(;t<s&&n.charAt(s-t-1)===e;)t++;return n.slice(0,s-t)}function et(n,e){if(n.indexOf(e[1])===-1)return-1;let r=0;for(let s=0;s<n.length;s++)if(n[s]==="\\")s++;else if(n[s]===e[0])r++;else if(n[s]===e[1]&&(r--,r<0))return s;return r>0?-2:-1}function ne(n,e,r,s,t){let i=e.href,l=e.title||null,o=n[1].replace(t.other.outputLinkReplace,"$1");s.state.inLink=!0;let a={type:n[0].charAt(0)==="!"?"image":"link",raw:r,href:i,title:l,text:o,tokens:s.inlineTokens(o)};return s.state.inLink=!1,a}function tt(n,e,r){let s=n.match(r.other.indentCodeCompensation);if(s===null)return e;let t=s[1];return e.split(`
3
3
  `).map(i=>{let l=i.match(r.other.beginningSpace);if(l===null)return i;let[o]=l;return o.length>=t.length?i.slice(t.length):i}).join(`
4
4
  `)}var L=class{options;rules;lexer;constructor(n){this.options=n||R}space(n){let e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){let e=this.rules.block.code.exec(n);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:z(r,`
@@ -0,0 +1 @@
1
+ import{_ as y}from"./CXOn8Upj.js";import{_ as w}from"./Bf779K50.js";import{_ as E}from"./B5vRr8Ti.js";import{_ as $}from"./0BAoaFXM.js";import{g as _,c as r,a as i,b as m,l,m as u,w as k,t as a,o as n,d as f}from"./DFkDlupw.js";import{_ as b}from"./D_JyZ6Hh.js";import"./DG-9quB_.js";import"./DRReoGGV.js";import"./C6Xm_PzB.js";import"./h1c4XpR7.js";import"./BI4BFakr.js";import"./CrhTgxiU.js";const V={class:"flex-1 p-4 overflow-auto"},B={class:"flex flex-wrap gap-2 mb-4"},C={class:"text-xs opacity-50 mb-4"},N=_({__name:"SkillView",props:{skill:{},formattedDate:{}},setup(t){return(c,o)=>{const s=E,e=$;return n(),r("div",V,[i("div",B,[t.skill.model?(n(),l(s,{key:0,n:"blue"},{default:k(()=>[f(" Model: "+a(t.skill.model),1)]),_:1})):u("",!0),t.skill.argumentHint?(n(),l(s,{key:1,n:"gray"},{default:k(()=>[f(" Arg: "+a(t.skill.argumentHint),1)]),_:1})):u("",!0)]),i("div",C," Updated: "+a(t.formattedDate),1),m(e,{content:t.skill.content,class:"max-w-none"},null,8,["content"])])}}}),S=Object.assign(N,{__name:"SkillView"}),D={key:0},h={key:1,class:"flex-1 flex items-center justify-center opacity-50"},F={class:"text-center"},J=_({__name:"[name]",props:{skill:{},isEditing:{type:Boolean},editForm:{},formError:{},formatDate:{type:Function}},emits:["startEditing","save","cancel"],setup(t,{emit:c}){const o=c;return(s,e)=>{const g=y,x=w,p=S,v=b;return t.skill?(n(),r("div",D,[m(g,{title:t.skill.name,description:t.skill.description,"is-editing":t.isEditing,readonly:t.skill.source!=="project",source:t.skill.source,icon:"carbon:lightning","icon-color":"text-orange-500","show-icon":"",onEdit:e[0]||(e[0]=d=>o("startEditing")),onSave:e[1]||(e[1]=d=>o("save")),onCancel:e[2]||(e[2]=d=>o("cancel"))},null,8,["title","description","is-editing","readonly","source"]),t.isEditing?(n(),l(x,{key:0,"model-value":t.editForm,mode:"edit",error:t.formError},null,8,["model-value","error"])):(n(),l(p,{key:1,skill:t.skill,"formatted-date":t.formatDate(t.skill.updatedAt)},null,8,["skill","formatted-date"]))])):(n(),r("div",h,[i("div",F,[m(v,{class:"text-4xl mb-2 animate-pulse",icon:"carbon:lightning"}),e[3]||(e[3]=i("p",null,"Loading skill...",-1))])]))}}});export{J as default};
@@ -1 +1 @@
1
- import{_ as n,c as s,o,H as t}from"./nKfsBgPE.js";const _={},c={class:"n-badge"};function a(e,r){return o(),s("span",c,[t(e.$slots,"default")])}const l=Object.assign(n(_,[["render",a]]),{__name:"NBadge"});export{l as _};
1
+ import{_ as n,c as s,o,M as t}from"./DFkDlupw.js";const _={},c={class:"n-badge"};function a(e,r){return o(),s("span",c,[t(e.$slots,"default")])}const l=Object.assign(n(_,[["render",a]]),{__name:"NBadge"});export{l as _};
@@ -0,0 +1 @@
1
+ import{_ as w}from"./D_JyZ6Hh.js";import{B as T,N as A,r as I,s as q,O as h,E as B,D as M,c as O,o as k,M as C,n as j,l as D,m as F,P as L,a as R,Q as J,I as W}from"./DFkDlupw.js";const _=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const G=e=>typeof e<"u",U=Object.prototype.toString,Q=e=>U.call(e)==="[object Object]",x=()=>{};function N(e){return Array.isArray(e)?e:[e]}function z(e,s,c){return T(e,s,{...c,immediate:!0})}const V=_?window:void 0;function E(e){var s;const c=h(e);return(s=c?.$el)!==null&&s!==void 0?s:c}function P(...e){const s=(o,i,r,a)=>(o.addEventListener(i,r,a),()=>o.removeEventListener(i,r,a)),c=q(()=>{const o=N(h(e[0])).filter(i=>i!=null);return o.every(i=>typeof i!="string")?o:void 0});return z(()=>{var o,i;return[(o=(i=c.value)===null||i===void 0?void 0:i.map(r=>E(r)))!==null&&o!==void 0?o:[V].filter(r=>r!=null),N(h(c.value?e[1]:e[0])),N(B(c.value?e[2]:e[1])),h(c.value?e[3]:e[2])]},([o,i,r,a],v,d)=>{if(!o?.length||!i?.length||!r?.length)return;const y=Q(a)?{...a}:a,$=o.flatMap(f=>i.flatMap(u=>r.map(m=>s(f,u,m,y))));d(()=>{$.forEach(f=>f())})},{flush:"post"})}function ee(e,s,c={}){const{window:o=V,ignore:i=[],capture:r=!0,detectIframe:a=!1,controls:v=!1}=c;if(!o)return v?{stop:x,cancel:x,trigger:x}:x;let d=!0;const y=t=>h(i).some(l=>{if(typeof l=="string")return Array.from(o.document.querySelectorAll(l)).some(n=>n===t.target||t.composedPath().includes(n));{const n=E(l);return n&&(t.target===n||t.composedPath().includes(n))}});function $(t){const l=h(t);return l&&l.$.subTree.shapeFlag===16}function f(t,l){const n=h(t),p=n.$.subTree&&n.$.subTree.children;return p==null||!Array.isArray(p)?!1:p.some(g=>g.el===l.target||l.composedPath().includes(g.el))}const u=t=>{const l=E(e);if(t.target!=null&&!(!(l instanceof Element)&&$(e)&&f(e,t))&&!(!l||l===t.target||t.composedPath().includes(l))){if("detail"in t&&t.detail===0&&(d=!y(t)),!d){d=!0;return}s(t)}};let m=!1;const b=[P(o,"click",t=>{m||(m=!0,setTimeout(()=>{m=!1},0),u(t))},{passive:!0,capture:r}),P(o,"pointerdown",t=>{const l=E(e);d=!y(t)&&!!(l&&!t.composedPath().includes(l))},{passive:!0}),a&&P(o,"blur",t=>{setTimeout(()=>{var l;const n=E(e);((l=o.document.activeElement)===null||l===void 0?void 0:l.tagName)==="IFRAME"&&!n?.contains(o.document.activeElement)&&s(t)},0)},{passive:!0})].filter(Boolean),S=()=>b.forEach(t=>t());return v?{stop:S,cancel:()=>{d=!1},trigger:t=>{d=!0,u(t),d=!1}}:S}function H(e){return JSON.parse(JSON.stringify(e))}function K(e,s,c,o={}){var i,r;const{clone:a=!1,passive:v=!1,eventName:d,deep:y=!1,defaultValue:$,shouldEmit:f}=o,u=A(),m=c||u?.emit||(u==null||(i=u.$emit)===null||i===void 0?void 0:i.bind(u))||(u==null||(r=u.proxy)===null||r===void 0||(r=r.$emit)===null||r===void 0?void 0:r.bind(u?.proxy));let b=d;b=b||`update:${s.toString()}`;const S=n=>a?typeof a=="function"?a(n):H(n):n,t=()=>G(e[s])?S(e[s]):$,l=n=>{f?f(n)&&m(b,n):m(b,n)};if(v){const n=I(t());let p=!1;return T(()=>e[s],g=>{p||(p=!0,n.value=S(g),M(()=>p=!1))}),T(n,g=>{!p&&(g!==e[s]||y)&&l(g)},{deep:y}),n}else return q({get(){return t()},set(n){l(n)}})}const X={class:"n-text-input flex flex items-center border n-border-base rounded n-bg-base py-1 pl-1 pr-2 focus-within:border-context focus-within:n-focus-base"},te={__name:"NTextInput",props:{modelValue:{type:[String,Number],required:!1,default:""},icon:{type:String,required:!1},placeholder:{type:String,required:!1},disabled:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},readonly:{type:Boolean,required:!1},type:{type:String,required:!1,default:"text"}},emits:["keydown","keyup","change"],setup(e,{emit:s}){const i=K(e,"modelValue",s,{passive:!0});return(r,a)=>{const v=w;return k(),O("div",X,[C(r.$slots,"icon",{},()=>[e.icon?(k(),D(v,{key:0,icon:e.icon,class:"ml-0.3em mr-0.1em text-1.1em op50"},null,8,["icon"])):F("",!0)]),j(R("input",J({"onUpdate:modelValue":a[0]||(a[0]=d=>W(i)?i.value=d:null)},r.$props,{class:"ml-0.4em w-full flex-auto n-bg-base !outline-none"}),null,16),[[L,B(i)]])])}}};export{te as _,ee as o};
@@ -1 +1 @@
1
- import{_ as o,c as s,o as a,a as t,t as r}from"./nKfsBgPE.js";import{u as i}from"./b4Upel01.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,h)=>(a(),s("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.statusCode)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusMessage)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-c415ba6a"]]);export{x as default};
1
+ import{_ as o,c as s,o as a,a as t,t as r}from"./DFkDlupw.js";import{u as i}from"./DSMailoF.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,h)=>(a(),s("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.statusCode)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusMessage)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-c415ba6a"]]);export{x as default};
@@ -0,0 +1 @@
1
+ import{_ as w}from"./CXOn8Upj.js";import{_ as E}from"./CETmet01.js";import{_ as $}from"./B5vRr8Ti.js";import{_ as V}from"./0BAoaFXM.js";import{g as y,c as i,a as n,m as d,l,w as c,t as r,F as v,p,b as g,o as e,d as u}from"./DFkDlupw.js";import{_ as B}from"./D_JyZ6Hh.js";import"./DG-9quB_.js";import"./DRReoGGV.js";import"./C6Xm_PzB.js";import"./h1c4XpR7.js";import"./BI4BFakr.js";import"./CrhTgxiU.js";const C={class:"flex-1 p-4 overflow-auto"},F={class:"space-y-4"},N={class:"flex flex-wrap gap-2"},S={class:"text-xs opacity-50"},A={key:0},D={class:"flex flex-wrap gap-1"},h={key:1},j={class:"flex flex-wrap gap-1"},L=y({__name:"AgentView",props:{agent:{},formattedDate:{}},setup(t){return(f,o)=>{const m=$,a=V;return e(),i("div",C,[n("div",F,[n("div",N,[t.agent.model?(e(),l(m,{key:0,n:"purple"},{default:c(()=>[u(" Model: "+r(t.agent.model),1)]),_:1})):d("",!0)]),n("div",S," Updated: "+r(t.formattedDate),1),t.agent.tools&&t.agent.tools.length>0?(e(),i("div",A,[o[0]||(o[0]=n("div",{class:"text-sm font-medium opacity-50 mb-1"}," Tools ",-1)),n("div",D,[(e(!0),i(v,null,p(t.agent.tools,s=>(e(),l(m,{key:s,class:"font-mono text-xs",n:"blue"},{default:c(()=>[u(r(s),1)]),_:2},1024))),128))])])):d("",!0),t.agent.skills&&t.agent.skills.length>0?(e(),i("div",h,[o[1]||(o[1]=n("div",{class:"text-sm font-medium opacity-50 mb-1"}," Skills ",-1)),n("div",j,[(e(!0),i(v,null,p(t.agent.skills,s=>(e(),l(m,{key:s,class:"text-xs",n:"orange"},{default:c(()=>[u(r(s),1)]),_:2},1024))),128))])])):d("",!0),n("div",null,[o[2]||(o[2]=n("div",{class:"text-sm font-medium opacity-50 mb-2"}," System Prompt ",-1)),g(a,{content:t.agent.prompt,class:"max-w-none"},null,8,["content"])])])])}}}),M=Object.assign(L,{__name:"AgentView"}),T={key:0},H={key:1,class:"flex-1 flex items-center justify-center opacity-50"},I={class:"text-center"},Y=y({__name:"[name]",props:{agent:{},isEditing:{type:Boolean},editForm:{},formError:{},formatDate:{type:Function},availableSkills:{}},emits:["startEditing","save","cancel"],setup(t,{emit:f}){const o=f;return(m,a)=>{const s=w,_=E,k=M,b=B;return t.agent?(e(),i("div",T,[g(s,{description:t.agent.description,"is-editing":t.isEditing,readonly:t.agent.source!=="project",source:t.agent.source,title:t.agent.name,icon:"carbon:bot","icon-color":"text-purple-500","show-icon":"",onCancel:a[0]||(a[0]=x=>o("cancel")),onEdit:a[1]||(a[1]=x=>o("startEditing")),onSave:a[2]||(a[2]=x=>o("save"))},null,8,["description","is-editing","readonly","source","title"]),t.isEditing?(e(),l(_,{key:0,"available-skills":t.availableSkills,error:t.formError,"model-value":t.editForm,mode:"edit"},null,8,["available-skills","error","model-value"])):(e(),l(k,{key:1,agent:t.agent,"formatted-date":t.formatDate(t.agent.updatedAt)},null,8,["agent","formatted-date"]))])):(e(),i("div",H,[n("div",I,[g(b,{class:"text-4xl mb-2 animate-pulse",icon:"carbon:bot"}),a[3]||(a[3]=n("p",null,"Loading agent...",-1))])]))}}});export{Y as default};
@@ -0,0 +1 @@
1
+ import{_ as o}from"./D_JyZ6Hh.js";import{g as s,c,a as t,b as a,o as r}from"./DFkDlupw.js";const i={class:"flex-1 flex items-center justify-center opacity-50"},l={class:"text-center"},f=s({__name:"index",setup(_){return(m,e)=>{const n=o;return r(),c("div",i,[t("div",l,[a(n,{class:"text-4xl mb-2",icon:"carbon:lightning"}),e[0]||(e[0]=t("p",null,"Select a skill or create a new one",-1))])])}}});export{f as default};
@@ -0,0 +1 @@
1
+ import{_ as g}from"./C6Xm_PzB.js";import{_ as w}from"./BI4BFakr.js";import{_ as C}from"./CrhTgxiU.js";import{_ as N}from"./DRReoGGV.js";import{g as y,K as f,L as M,s as S,c as s,a as l,m as u,b as n,E as i,n as $,x as B,w as v,F,o as a,d as k}from"./DFkDlupw.js";const H={class:"flex-1 overflow-auto"},U={class:"p-4 border-b border-neutral-200 dark:border-neutral-800"},E={key:0,class:"font-bold mb-4"},O={class:"space-y-4"},T={key:0},q={class:"p-4"},D={key:0,class:"p-4 border-t border-neutral-200 dark:border-neutral-800 flex gap-2 flex-shrink-0"},I=y({__name:"SkillForm",props:f({mode:{},error:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:f(["save","cancel"],["update:modelValue"]),setup(r){const c=r,t=M(r,"modelValue"),x=[{value:"",label:"Inherit (default)"},{value:"sonnet",label:"Sonnet"},{value:"opus",label:"Opus"},{value:"haiku",label:"Haiku"}],m=S(()=>c.mode==="create");return(p,e)=>{const V=g,d=w,_=C,b=N;return a(),s(F,null,[l("div",H,[l("div",U,[i(m)?(a(),s("h3",E," Create New Skill ")):u("",!0),n(V,{error:r.error||"",class:"mb-4"},null,8,["error"]),l("div",O,[i(m)?(a(),s("div",T,[e[7]||(e[7]=l("label",{class:"block text-sm font-medium mb-1"},"Name",-1)),n(d,{modelValue:t.value.name,"onUpdate:modelValue":e[0]||(e[0]=o=>t.value.name=o),class:"w-full font-mono",placeholder:"e.g. vue-expert, code-reviewer"},null,8,["modelValue"])])):u("",!0),l("div",null,[e[8]||(e[8]=l("label",{class:"block text-sm font-medium mb-1"},"Description",-1)),n(d,{modelValue:t.value.description,"onUpdate:modelValue":e[1]||(e[1]=o=>t.value.description=o),class:"w-full",placeholder:"Brief description of what this skill does"},null,8,["modelValue"])]),l("div",null,[e[9]||(e[9]=l("label",{class:"block text-sm font-medium mb-1"},"Argument Hint (optional)",-1)),n(d,{modelValue:t.value.argumentHint,"onUpdate:modelValue":e[2]||(e[2]=o=>t.value.argumentHint=o),class:"w-full",placeholder:"e.g. <query>"},null,8,["modelValue"]),e[10]||(e[10]=l("div",{class:"text-xs opacity-50 mt-1"}," Hint for argument when using /skillname ",-1))]),l("div",null,[e[11]||(e[11]=l("label",{class:"block text-sm font-medium mb-1"},"Model (optional)",-1)),n(_,{modelValue:t.value.model,"onUpdate:modelValue":e[3]||(e[3]=o=>t.value.model=o),options:x,class:"w-full"},null,8,["modelValue"])])])]),l("div",q,[e[12]||(e[12]=l("label",{class:"block text-sm font-medium mb-1"},"Content (Markdown)",-1)),$(l("textarea",{"onUpdate:modelValue":e[4]||(e[4]=o=>t.value.content=o),class:"w-full min-h-[200px] p-3 font-mono text-sm n-bg-base rounded-lg border border-neutral-200 dark:border-neutral-800 resize-y",placeholder:"Write the skill instructions in markdown..."},null,512),[[B,t.value.content]])])]),i(m)?(a(),s("div",D,[n(b,{n:"orange",onClick:e[5]||(e[5]=o=>p.$emit("save"))},{default:v(()=>[...e[13]||(e[13]=[k(" Create Skill ",-1)])]),_:1}),n(b,{n:"gray",onClick:e[6]||(e[6]=o=>p.$emit("cancel"))},{default:v(()=>[...e[14]||(e[14]=[k(" Cancel ",-1)])]),_:1})])):u("",!0)],64)}}}),W=Object.assign(I,{__name:"SkillForm"});export{W as _};
@@ -0,0 +1 @@
1
+ import{_ as j}from"./D_JyZ6Hh.js";import{_ as R}from"./DRReoGGV.js";import{_ as q}from"./h1c4XpR7.js";import{_ as D}from"./C6Xm_PzB.js";import{_ as H}from"./BI4BFakr.js";import{_ as I}from"./B5vRr8Ti.js";import{_ as z}from"./n4TwJfzb.js";import{g as K,r as d,j as O,k as G,l as J,o as a,w as r,a as o,b as n,c as i,m as U,d as u,n as b,v as x,F as y,p as Q,t as v,q as W}from"./DFkDlupw.js";import{l as X}from"./CG1tBJBN.js";import{u as Y,a as Z,S as h}from"./kN0L7CSs.js";import"./DG-9quB_.js";const ee={class:"space-y-4"},oe={key:0,class:"n-bg-active rounded-lg p-4"},te={class:"space-y-4"},le={class:"flex gap-4"},ne={class:"flex items-center gap-2"},se={class:"flex items-center gap-2"},ae={class:"flex items-center gap-2"},re={key:1},ue={class:"flex gap-4"},ie={class:"flex items-center gap-2"},me={class:"flex items-center gap-2"},de={class:"flex gap-2 pt-2"},pe={key:1,class:"n-bg-active rounded-lg p-4 opacity-50"},ve={key:2,class:"space-y-2"},ce={class:"font-bold flex items-center gap-2"},fe={class:"text-sm opacity-70 font-mono"},Te=K({__name:"mcp",setup(ge){const S=Y(),{log:_}=Z("mcp"),s=d(null),k=d(!1),c=d(!1),V=d([]),f=d(!1),t=d({name:"",transport:"stdio",command:"",args:"",url:"",scope:"local"}),p=d("");function A(){return S.isActive.value&&S.origin.value?S.origin.value:window.location.origin}function M(){const m=A();_("Connecting to socket at",m),s.value=X(m,{path:h,transports:["websocket","polling"],reconnection:!0,reconnectionAttempts:5}),s.value.on("connect",()=>{_("Connected to socket"),k.value=!0,N()}),s.value.on("disconnect",()=>{_("Disconnected from socket"),k.value=!1}),s.value.on("mcp:list",e=>{_("MCP list received",e),V.value=e,c.value=!1}),s.value.on("mcp:added",e=>{e.success?(f.value=!1,P()):p.value=e.error||"Failed to add MCP server"}),s.value.on("mcp:removed",e=>{e.success||alert(`Failed to remove: ${e.error}`)})}function N(){s.value&&(c.value=!0,s.value.emit("mcp:list"))}function P(){t.value={name:"",transport:"stdio",command:"",args:"",url:"",scope:"local"},p.value=""}function $(){if(!t.value.name){p.value="Name is required";return}if(t.value.transport==="stdio"&&!t.value.command){p.value="Command is required for stdio transport";return}if((t.value.transport==="http"||t.value.transport==="sse")&&!t.value.url){p.value="URL is required for HTTP/SSE transport";return}if(s.value){const m=t.value.args.split(" ").map(e=>e.trim()).filter(e=>e.length>0);s.value.emit("mcp:add",{name:t.value.name,transport:t.value.transport,command:t.value.command,args:m,url:t.value.url,scope:t.value.scope})}}function F(m){confirm(`Remove MCP server "${m.name}"?`)&&s.value&&s.value.emit("mcp:remove",{name:m.name})}return O(()=>{M()}),G(()=>{s.value&&s.value.disconnect()}),(m,e)=>{const w=j,g=R,L=q,B=D,C=H,T=I,E=z;return a(),J(E,{title:"MCP Servers",icon:"carbon:plug",color:"blue"},{actions:r(()=>[n(g,{disabled:!k.value,n:"blue",onClick:e[0]||(e[0]=l=>f.value=!0)},{default:r(()=>[n(w,{class:"mr-1",icon:"carbon:add"}),e[11]||(e[11]=u(" Add Server ",-1))]),_:1},8,["disabled"]),n(g,{disabled:!k.value||c.value,n:"gray",onClick:N},{default:r(()=>[n(w,{class:W([{"animate-spin":c.value},"mr-1"]),icon:"carbon:restart"},null,8,["class"]),e[12]||(e[12]=u(" Refresh ",-1))]),_:1},8,["disabled"])]),default:r(()=>[o("div",ee,[n(L,{class:"text-sm",icon:"carbon:information",n:"blue"},{default:r(()=>[...e[13]||(e[13]=[u(" Model Context Protocol (MCP) servers extend Claude's capabilities with custom tools and data sources. ",-1)])]),_:1}),f.value?(a(),i("div",oe,[e[27]||(e[27]=o("h3",{class:"font-bold mb-4"}," Add MCP Server ",-1)),n(B,{error:p.value,class:"mb-4"},null,8,["error"]),o("div",te,[o("div",null,[e[14]||(e[14]=o("label",{class:"block text-sm font-medium mb-1"},"Name",-1)),n(C,{modelValue:t.value.name,"onUpdate:modelValue":e[1]||(e[1]=l=>t.value.name=l),class:"w-full",placeholder:"e.g. github, nuxt-ui-remote"},null,8,["modelValue"])]),o("div",null,[e[18]||(e[18]=o("label",{class:"block text-sm font-medium mb-1"},"Transport",-1)),o("div",le,[o("label",ne,[b(o("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>t.value.transport=l),name:"transport",type:"radio",value:"stdio"},null,512),[[x,t.value.transport]]),e[15]||(e[15]=o("span",null,"stdio",-1))]),o("label",se,[b(o("input",{"onUpdate:modelValue":e[3]||(e[3]=l=>t.value.transport=l),name:"transport",type:"radio",value:"http"},null,512),[[x,t.value.transport]]),e[16]||(e[16]=o("span",null,"HTTP",-1))]),o("label",ae,[b(o("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>t.value.transport=l),name:"transport",type:"radio",value:"sse"},null,512),[[x,t.value.transport]]),e[17]||(e[17]=o("span",null,"SSE",-1))])])]),t.value.transport==="stdio"?(a(),i(y,{key:0},[o("div",null,[e[19]||(e[19]=o("label",{class:"block text-sm font-medium mb-1"},"Command",-1)),n(C,{modelValue:t.value.command,"onUpdate:modelValue":e[5]||(e[5]=l=>t.value.command=l),class:"w-full font-mono",placeholder:"e.g. npx"},null,8,["modelValue"])]),o("div",null,[e[20]||(e[20]=o("label",{class:"block text-sm font-medium mb-1"},"Arguments",-1)),n(C,{modelValue:t.value.args,"onUpdate:modelValue":e[6]||(e[6]=l=>t.value.args=l),class:"w-full font-mono",placeholder:"e.g. -y @modelcontextprotocol/server-github"},null,8,["modelValue"])])],64)):U("",!0),t.value.transport==="http"||t.value.transport==="sse"?(a(),i("div",re,[e[21]||(e[21]=o("label",{class:"block text-sm font-medium mb-1"},"URL",-1)),n(C,{modelValue:t.value.url,"onUpdate:modelValue":e[7]||(e[7]=l=>t.value.url=l),class:"w-full font-mono",placeholder:"e.g. https://ui.nuxt.com/mcp"},null,8,["modelValue"])])):U("",!0),o("div",null,[e[24]||(e[24]=o("label",{class:"block text-sm font-medium mb-1"},"Scope",-1)),o("div",ue,[o("label",ie,[b(o("input",{"onUpdate:modelValue":e[8]||(e[8]=l=>t.value.scope=l),name:"scope",type:"radio",value:"local"},null,512),[[x,t.value.scope]]),e[22]||(e[22]=o("span",null,"Local (this project)",-1))]),o("label",me,[b(o("input",{"onUpdate:modelValue":e[9]||(e[9]=l=>t.value.scope=l),name:"scope",type:"radio",value:"global"},null,512),[[x,t.value.scope]]),e[23]||(e[23]=o("span",null,"User (all projects)",-1))])])]),o("div",de,[n(g,{n:"green",onClick:$},{default:r(()=>[...e[25]||(e[25]=[u(" Add Server ",-1)])]),_:1}),n(g,{n:"gray",onClick:e[10]||(e[10]=l=>{f.value=!1,P()})},{default:r(()=>[...e[26]||(e[26]=[u(" Cancel ",-1)])]),_:1})])])])):U("",!0),V.value.length===0&&!f.value&&!c.value?(a(),i("div",pe,' No MCP servers configured. Click "Add Server" to get started. ')):(a(),i("div",ve,[(a(!0),i(y,null,Q(V.value,l=>(a(),i("div",{key:l.name,class:"n-bg-active rounded-lg p-4 flex items-center justify-between"},[o("div",null,[o("div",ce,[u(v(l.name)+" ",1),n(T,{n:l.transport==="stdio"?"gray":"blue",class:"text-xs"},{default:r(()=>[u(v(l.transport),1)]),_:2},1032,["n"]),n(T,{n:l.scope==="local"?"green":"purple",class:"text-xs"},{default:r(()=>[u(v(l.scope),1)]),_:2},1032,["n"])]),o("div",fe,[l.transport==="stdio"?(a(),i(y,{key:0},[u(v(l.command)+" "+v(l.args?.join(" ")),1)],64)):(a(),i(y,{key:1},[u(v(l.url),1)],64))])]),n(g,{n:"red",onClick:be=>F(l)},{default:r(()=>[n(w,{icon:"carbon:trash-can"})]),_:1},8,["onClick"])]))),128))]))])]),_:1})}}});export{Te as default};
@@ -0,0 +1 @@
1
+ import{u as P,_ as j,a as A}from"./D8DUrd91.js";import{_ as G}from"./C8AkZ-W3.js";import{g as H,s as J,l as s,w as f,E as o,G as M,H as U,o as a,I as Y,J as z,c as g,m as K,a as w,d as C,F as O,p as Q}from"./DFkDlupw.js";import"./D_JyZ6Hh.js";import"./DRReoGGV.js";import"./DG-9quB_.js";import"./B5vRr8Ti.js";import"./h1c4XpR7.js";import"./n4TwJfzb.js";import"./CG1tBJBN.js";import"./kN0L7CSs.js";import"./C6Xm_PzB.js";import"./BI4BFakr.js";const W={key:0,class:"n-bg-active rounded-lg p-4 opacity-50 text-sm"},X={class:"space-y-1"},pe=H({__name:"commands",setup(Z){const v=M(),i=U(),{isConnected:h,isLoading:d,items:m,isEditing:N,showNewForm:c,formError:u,newForm:l,editForm:S,load:x,select:y,startEditing:F,save:p,cancelEditing:k,deleteItem:E,showNew:T,formatDate:b}=P({resourceName:"commands",loggerName:"commands",createDefaultForm:()=>({name:"",description:"",content:"",allowedTools:""}),resourceToForm:e=>({name:e.name,description:e.description||"",content:e.content,allowedTools:e.allowedTools?.join(", ")||""}),validateForm:e=>e.name?e.content?null:"Content is required":"Name is required",transformFormForSave:e=>{const n=e.allowedTools.split(",").map(r=>r.trim()).filter(r=>r.length>0);return{name:e.name,content:e.content,description:e.description||void 0,allowedTools:n.length>0?n:void 0}}}),_=J(()=>{const e=v.params.name;return e&&m.value.find(n=>n.name===e)||null});function D(e){y(e),i.push(`/commands/${e.name}`)}function R(e){E(e,`Delete command "/${e}"?`)}function V(){T(),i.push("/commands")}function L(){c.value=!1}return(e,n)=>{const r=A,B=G,$=z,I=j;return a(),s(I,{title:"Slash Commands",icon:"carbon:terminal",color:"green","is-connected":o(h),"is-loading":o(d),"info-tip":"Slash commands are markdown files with YAML frontmatter.","storage-path":".claude/commands/<name>.md","empty-message":"No slash commands yet. Create one to get started.","empty-editor-message":"Select a command or create a new one","new-button-label":"New Command",onNew:V,onRefresh:o(x)},{list:f(()=>[o(m).length===0&&!o(d)?(a(),g("div",W,[...n[1]||(n[1]=[C(" No slash commands yet. ",-1),w("br",null,null,-1),C(" Create one to get started. ",-1)])])):K("",!0),w("div",X,[(a(!0),g(O,null,Q(o(m),t=>(a(),s(r,{key:t.name,selected:_.value?.name===t.name,name:t.name,description:t.description,source:t.source,icon:"carbon:terminal",color:"green","mono-name":"","name-prefix":"/",onSelect:q=>D(t),onDelete:q=>R(t.name)},null,8,["selected","name","description","source","onSelect","onDelete"]))),128))])]),editor:f(()=>[o(c)?(a(),s(B,{key:0,modelValue:o(l),"onUpdate:modelValue":n[0]||(n[0]=t=>Y(l)?l.value=t:null),mode:"create",error:o(u),onSave:o(p),onCancel:L},null,8,["modelValue","error","onSave"])):(a(),s($,{key:1,command:_.value,"is-editing":o(N),"edit-form":o(S),"form-error":o(u),"format-date":o(b),onStartEditing:o(F),onSave:o(p),onCancel:o(k)},null,8,["command","is-editing","edit-form","form-error","format-date","onStartEditing","onSave","onCancel"]))]),_:1},8,["is-connected","is-loading","onRefresh"])}}});export{pe as default};
@@ -0,0 +1 @@
1
+ import{_ as g}from"./CXOn8Upj.js";import{_ as y}from"./C8AkZ-W3.js";import{_ as w}from"./B5vRr8Ti.js";import{_ as $}from"./0BAoaFXM.js";import{g as u,c as m,m as k,b as i,a,F as C,p as E,o,l as c,w as _,d as b,t as f}from"./DFkDlupw.js";import{_ as V}from"./D_JyZ6Hh.js";import"./DG-9quB_.js";import"./DRReoGGV.js";import"./C6Xm_PzB.js";import"./h1c4XpR7.js";import"./BI4BFakr.js";const B={class:"flex-1 p-4 overflow-auto"},F={key:0,class:"mb-4"},N={class:"flex flex-wrap gap-1"},T=u({__name:"CommandView",props:{command:{}},setup(t){return(d,n)=>{const r=w,e=$;return o(),m("div",B,[t.command.allowedTools&&t.command.allowedTools.length>0?(o(),m("div",F,[n[0]||(n[0]=a("div",{class:"text-xs font-medium opacity-50 mb-1"}," Allowed Tools ",-1)),a("div",N,[(o(!0),m(C,null,E(t.command.allowedTools,s=>(o(),c(r,{key:s,class:"font-mono text-xs",n:"blue"},{default:_(()=>[b(f(s),1)]),_:2},1024))),128))])])):k("",!0),i(e,{content:t.command.content,class:"max-w-none"},null,8,["content"])])}}}),j=Object.assign(T,{__name:"CommandView"}),D={key:0},A={class:"text-xs opacity-50 mt-1"},L={key:1,class:"flex-1 flex items-center justify-center opacity-50"},S={class:"text-center"},P=u({__name:"[name]",props:{command:{},isEditing:{type:Boolean},editForm:{},formError:{},formatDate:{type:Function}},emits:["startEditing","save","cancel"],setup(t,{emit:d}){const n=d;return(r,e)=>{const s=g,x=y,p=j,v=V;return t.command?(o(),m("div",D,[i(s,{title:`/${t.command.name}`,description:t.command.description,"is-editing":t.isEditing,readonly:t.command.source!=="project",source:t.command.source,"mono-title":"",onEdit:e[0]||(e[0]=l=>n("startEditing")),onSave:e[1]||(e[1]=l=>n("save")),onCancel:e[2]||(e[2]=l=>n("cancel"))},{subtitle:_(()=>[a("div",A," Updated: "+f(t.formatDate(t.command.updatedAt)),1)]),_:1},8,["title","description","is-editing","readonly","source"]),t.isEditing?(o(),c(x,{key:0,"model-value":t.editForm,mode:"edit",error:t.formError},null,8,["model-value","error"])):(o(),c(p,{key:1,command:t.command},null,8,["command"]))])):(o(),m("div",L,[a("div",S,[i(v,{class:"text-4xl mb-2 animate-pulse",icon:"carbon:terminal"}),e[3]||(e[3]=a("p",null,"Loading command...",-1))])]))}}});export{P as default};