@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.
- package/README.md +107 -14
- package/dist/client/200.html +1 -1
- package/dist/client/404.html +1 -1
- package/dist/client/_nuxt/{CSlPuO5s.js → 0BAoaFXM.js} +1 -1
- package/dist/client/_nuxt/88aFj9mk.js +1 -0
- package/dist/client/_nuxt/{CLKqRoht.js → B5vRr8Ti.js} +1 -1
- package/dist/client/_nuxt/BI4BFakr.js +1 -0
- package/dist/client/_nuxt/{o1jjB-UO.js → BJuQJ8yP.js} +1 -1
- package/dist/client/_nuxt/BMxGt8ZG.js +1 -0
- package/dist/client/_nuxt/Baq9Hzkz.js +1 -0
- package/dist/client/_nuxt/Bf779K50.js +1 -0
- package/dist/client/_nuxt/BmF8r-gh.js +1 -0
- package/dist/client/_nuxt/BryQ1L4F.js +1 -0
- package/dist/client/_nuxt/BsG0VKct.js +1 -0
- package/dist/client/_nuxt/Bt-DdLhQ.js +12 -0
- package/dist/client/_nuxt/C6Xm_PzB.js +1 -0
- package/dist/client/_nuxt/C8AkZ-W3.js +1 -0
- package/dist/client/_nuxt/CEM1iRz_.js +1 -0
- package/dist/client/_nuxt/CETmet01.js +1 -0
- package/dist/client/_nuxt/CG1tBJBN.js +1 -0
- package/dist/client/_nuxt/CXOn8Upj.js +1 -0
- package/dist/client/_nuxt/CYomf6PL.js +1 -0
- package/dist/client/_nuxt/CrhTgxiU.js +1 -0
- package/dist/client/_nuxt/{08Mb3FOO.js → CtWfW1XP.js} +1 -1
- package/dist/client/_nuxt/CuUOvg0u.js +1 -0
- package/dist/client/_nuxt/CxYvL5O5.js +1 -0
- package/dist/client/_nuxt/D8DUrd91.js +1 -0
- package/dist/client/_nuxt/DFkDlupw.js +4 -0
- package/dist/client/_nuxt/DG-9quB_.js +1 -0
- package/dist/client/_nuxt/DHlhBFAg.js +1 -0
- package/dist/client/_nuxt/DJw5U4z8.js +1 -0
- package/dist/client/_nuxt/DRReoGGV.js +1 -0
- package/dist/client/_nuxt/{b4Upel01.js → DSMailoF.js} +1 -1
- package/dist/client/_nuxt/DUPgidXP.js +1 -0
- package/dist/client/_nuxt/D_JyZ6Hh.js +1 -0
- package/dist/client/_nuxt/Dgm9zqhP.js +12 -0
- package/dist/client/_nuxt/builds/latest.json +1 -1
- package/dist/client/_nuxt/builds/meta/9c3f4183-f791-4377-86dc-370ce38cc49b.json +1 -0
- package/dist/client/_nuxt/entry.BMxUr06A.css +1 -0
- package/dist/client/_nuxt/h1c4XpR7.js +1 -0
- package/dist/client/_nuxt/kN0L7CSs.js +1 -0
- package/dist/client/_nuxt/n4TwJfzb.js +1 -0
- package/dist/client/_nuxt/zY60w9UT.js +1 -0
- package/dist/client/agents/index.html +1 -1
- package/dist/client/commands/index.html +1 -1
- package/dist/client/docs/index.html +1 -1
- package/dist/client/index.html +1 -1
- package/dist/client/mcp/index.html +1 -1
- package/dist/client/plugins/index.html +1 -0
- package/dist/client/settings/index.html +1 -0
- package/dist/client/skills/index.html +1 -1
- package/dist/module.d.mts +12 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +23 -5
- package/dist/runtime/constants.d.ts +29 -0
- package/dist/runtime/constants.js +5 -0
- package/dist/runtime/overlay/components/ChatOverlay.d.vue.ts +6 -0
- package/dist/runtime/overlay/components/ChatOverlay.vue +383 -0
- package/dist/runtime/overlay/components/ChatOverlay.vue.d.ts +6 -0
- package/dist/runtime/overlay/components/MarkdownContent.d.vue.ts +6 -0
- package/dist/runtime/overlay/components/MarkdownContent.vue +31 -0
- package/dist/runtime/overlay/components/MarkdownContent.vue.d.ts +6 -0
- package/dist/runtime/overlay/components/ToolCallBlock.d.vue.ts +8 -0
- package/dist/runtime/overlay/components/ToolCallBlock.vue +77 -0
- package/dist/runtime/overlay/components/ToolCallBlock.vue.d.ts +8 -0
- package/dist/runtime/overlay/components/chat/ChatHeader.d.vue.ts +18 -0
- package/dist/runtime/overlay/components/chat/ChatHeader.vue +82 -0
- package/dist/runtime/overlay/components/chat/ChatHeader.vue.d.ts +18 -0
- package/dist/runtime/overlay/components/chat/ChatInput.d.vue.ts +22 -0
- package/dist/runtime/overlay/components/chat/ChatInput.vue +526 -0
- package/dist/runtime/overlay/components/chat/ChatInput.vue.d.ts +22 -0
- package/dist/runtime/overlay/components/chat/ChatMessages.d.vue.ts +13 -0
- package/dist/runtime/overlay/components/chat/ChatMessages.vue +160 -0
- package/dist/runtime/overlay/components/chat/ChatMessages.vue.d.ts +13 -0
- package/dist/runtime/overlay/components/chat/ClaudeBadge.d.vue.ts +22 -0
- package/dist/runtime/overlay/components/chat/ClaudeBadge.vue +85 -0
- package/dist/runtime/overlay/components/chat/ClaudeBadge.vue.d.ts +22 -0
- package/dist/runtime/overlay/components/chat/HistoryPanel.d.vue.ts +17 -0
- package/dist/runtime/overlay/components/chat/HistoryPanel.vue +65 -0
- package/dist/runtime/overlay/components/chat/HistoryPanel.vue.d.ts +17 -0
- package/dist/runtime/overlay/components/chat/NicknameModal.d.vue.ts +13 -0
- package/dist/runtime/overlay/components/chat/NicknameModal.vue +89 -0
- package/dist/runtime/overlay/components/chat/NicknameModal.vue.d.ts +13 -0
- package/dist/runtime/overlay/components/chat/index.d.ts +6 -0
- package/dist/runtime/overlay/components/chat/index.js +6 -0
- package/dist/runtime/overlay/composables/index.d.ts +3 -0
- package/dist/runtime/overlay/composables/index.js +3 -0
- package/dist/runtime/overlay/composables/useMessageContext.d.ts +25 -0
- package/dist/runtime/overlay/composables/useMessageContext.js +29 -0
- package/dist/runtime/overlay/composables/useMobileSwipe.d.ts +15 -0
- package/dist/runtime/overlay/composables/useMobileSwipe.js +79 -0
- package/dist/runtime/overlay/composables/usePanelInteraction.d.ts +30 -0
- package/dist/runtime/overlay/composables/usePanelInteraction.js +184 -0
- package/dist/runtime/overlay/composables/usePanelPosition.d.ts +69 -0
- package/dist/runtime/overlay/composables/usePanelPosition.js +147 -0
- package/dist/runtime/overlay/plugin.client.d.ts +6 -0
- package/dist/runtime/overlay/plugin.client.js +29 -0
- package/dist/runtime/server/agents-manager.d.ts +17 -4
- package/dist/runtime/server/agents-manager.js +38 -109
- package/dist/runtime/server/base-resource-manager.d.ts +90 -0
- package/dist/runtime/server/base-resource-manager.js +201 -0
- package/dist/runtime/server/claude-session.d.ts +22 -1
- package/dist/runtime/server/claude-session.js +408 -29
- package/dist/runtime/server/commands-manager.d.ts +12 -4
- package/dist/runtime/server/commands-manager.js +25 -100
- package/dist/runtime/server/constants.d.ts +94 -0
- package/dist/runtime/server/constants.js +18 -0
- package/dist/runtime/server/docs-manager.d.ts +7 -0
- package/dist/runtime/server/docs-manager.js +112 -3
- package/dist/runtime/server/history-manager.d.ts +1 -0
- package/dist/runtime/server/history-manager.js +25 -3
- package/dist/runtime/server/plugins/socket.io.js +5 -3
- package/dist/runtime/server/plugins-manager.d.ts +84 -0
- package/dist/runtime/server/plugins-manager.js +338 -0
- package/dist/runtime/server/settings-manager.d.ts +17 -0
- package/dist/runtime/server/settings-manager.js +70 -0
- package/dist/runtime/server/share-manager.d.ts +24 -0
- package/dist/runtime/server/share-manager.js +96 -0
- package/dist/runtime/server/skills-manager.d.ts +18 -4
- package/dist/runtime/server/skills-manager.js +32 -159
- package/dist/runtime/shared/composables/useClaudeChat.d.ts +39 -0
- package/dist/runtime/shared/composables/useClaudeChat.js +40 -0
- package/dist/runtime/shared/composables/useClaudeChatCore.d.ts +40 -0
- package/dist/runtime/shared/composables/useClaudeChatCore.js +350 -0
- package/dist/runtime/shared/composables/useMessageContext.d.ts +54 -0
- package/dist/runtime/shared/composables/useMessageContext.js +195 -0
- package/dist/runtime/shared/composables/useShare.d.ts +52 -0
- package/dist/runtime/shared/composables/useShare.js +214 -0
- package/dist/runtime/shared/composables/useVoiceInput.d.ts +8 -0
- package/dist/runtime/shared/composables/useVoiceInput.js +106 -0
- package/dist/runtime/shared/constants.d.ts +28 -0
- package/dist/runtime/shared/constants.js +6 -0
- package/dist/runtime/shared/index.d.ts +9 -0
- package/dist/runtime/shared/index.js +5 -0
- package/dist/runtime/shared/types.d.ts +84 -0
- package/dist/runtime/shared/types.js +0 -0
- package/dist/runtime/types.d.ts +16 -0
- package/dist/types.d.mts +1 -1
- package/package.json +5 -3
- package/dist/client/_nuxt/BMi2eT6G.js +0 -1
- package/dist/client/_nuxt/BiBLVxWh.js +0 -1
- package/dist/client/_nuxt/BnRGpZsC.js +0 -8
- package/dist/client/_nuxt/C2GhPw5d.js +0 -7
- package/dist/client/_nuxt/CPQSDiF7.js +0 -12
- package/dist/client/_nuxt/D8683igF.js +0 -7
- package/dist/client/_nuxt/DBIw6BGF.js +0 -1
- package/dist/client/_nuxt/DCgjfr8H.js +0 -9
- package/dist/client/_nuxt/bl5iU4Kz.js +0 -1
- package/dist/client/_nuxt/builds/meta/35284331-5e85-46e0-9058-988fea05336c.json +0 -1
- package/dist/client/_nuxt/entry.BhHeZ_Nj.css +0 -1
- 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
|
-
- **
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
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
|
|
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 --
|
|
305
|
+
│ │ │ │ (spawn with --resume) ││
|
|
230
306
|
│ │ Managers: │ └─────────────────────────────┘│
|
|
231
307
|
│ │ - Skills │ │
|
|
232
308
|
│ │ - Agents │ ┌─────────────────────────────┐│
|
|
233
309
|
│ │ - Commands │ │ File Storage ││
|
|
234
|
-
│ │ - Docs │ │ .claude/
|
|
235
|
-
│ │ - History │ │ .claude/
|
|
236
|
-
│
|
|
237
|
-
│
|
|
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
|
-
│
|
|
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
|
-
│ │
|
|
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
|
-
│ │
|
|
402
|
+
│ │ ├── useComponentPicker.ts # Component selection
|
|
403
|
+
│ │ └── useShare.ts # Collaborative sharing
|
|
311
404
|
│ └── nuxt.config.ts
|
|
312
405
|
└── playground/ # Development playground
|
|
313
406
|
```
|
package/dist/client/200.html
CHANGED
|
@@ -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.
|
|
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>
|
package/dist/client/404.html
CHANGED
|
@@ -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.
|
|
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,
|
|
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={"&":"&","<":"<",">":">",'"':""","'":"'"},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,
|
|
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"./
|
|
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};
|