@oro.ad/nuxt-claude-devtools 1.0.7 → 1.1.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 (52) hide show
  1. package/README.md +149 -13
  2. package/dist/client/200.html +1 -1
  3. package/dist/client/404.html +1 -1
  4. package/dist/client/_nuxt/{BpkYThsl.js → BRCY8pHC.js} +1 -1
  5. package/dist/client/_nuxt/BVHVIm9H.js +12 -0
  6. package/dist/client/_nuxt/BZrcCMrf.js +1 -0
  7. package/dist/client/_nuxt/BbEuL4Z6.js +1 -0
  8. package/dist/client/_nuxt/BmjlsnUc.js +1 -0
  9. package/dist/client/_nuxt/D2NL8Xro.js +7 -0
  10. package/dist/client/_nuxt/D9qGFoJm.js +4 -0
  11. package/dist/client/_nuxt/DImlDIT-.js +59 -0
  12. package/dist/client/_nuxt/{B1H6wO_D.js → DV075BoS.js} +1 -1
  13. package/dist/client/_nuxt/{D-z88P1l.js → DYNukx3V.js} +1 -1
  14. package/dist/client/_nuxt/Dbw96V2H.js +7 -0
  15. package/dist/client/_nuxt/FllXIyfS.js +8 -0
  16. package/dist/client/_nuxt/MarkdownContent.WwTYmYZK.css +1 -0
  17. package/dist/client/_nuxt/TvBJGid1.js +1 -0
  18. package/dist/client/_nuxt/XJ4dJUK2.js +1 -0
  19. package/dist/client/_nuxt/builds/latest.json +1 -1
  20. package/dist/client/_nuxt/builds/meta/e8ae4dbb-462d-47a2-9aa2-50bed9498ab2.json +1 -0
  21. package/dist/client/_nuxt/e7kgpy_n.js +4 -0
  22. package/dist/client/_nuxt/entry.DwDQaFYc.css +1 -0
  23. package/dist/client/_nuxt/index.Bomb3OYy.css +1 -0
  24. package/dist/client/agents/index.html +1 -0
  25. package/dist/client/commands/index.html +1 -0
  26. package/dist/client/docs/index.html +1 -0
  27. package/dist/client/index.html +1 -1
  28. package/dist/client/mcp/index.html +1 -1
  29. package/dist/client/skills/index.html +1 -0
  30. package/dist/module.json +1 -1
  31. package/dist/runtime/server/agents-manager.d.ts +31 -0
  32. package/dist/runtime/server/agents-manager.js +193 -0
  33. package/dist/runtime/server/claude-session.d.ts +15 -0
  34. package/dist/runtime/server/claude-session.js +456 -5
  35. package/dist/runtime/server/commands-manager.d.ts +24 -0
  36. package/dist/runtime/server/commands-manager.js +132 -0
  37. package/dist/runtime/server/docs-manager.d.ts +48 -0
  38. package/dist/runtime/server/docs-manager.js +189 -0
  39. package/dist/runtime/server/history-manager.d.ts +24 -0
  40. package/dist/runtime/server/history-manager.js +184 -0
  41. package/dist/runtime/server/skills-manager.d.ts +36 -0
  42. package/dist/runtime/server/skills-manager.js +210 -0
  43. package/dist/runtime/types.d.ts +156 -0
  44. package/dist/runtime/types.js +0 -0
  45. package/package.json +16 -1
  46. package/dist/client/_nuxt/C2ORx7Gd.js +0 -1
  47. package/dist/client/_nuxt/CfGtRVGd.js +0 -4
  48. package/dist/client/_nuxt/DJn_CTvm.js +0 -1
  49. package/dist/client/_nuxt/EMyRkg8p.js +0 -1
  50. package/dist/client/_nuxt/PGt8fA_Y.js +0 -1
  51. package/dist/client/_nuxt/builds/meta/88c99fa0-10e0-4015-a61a-e0c6d7a01859.json +0 -1
  52. package/dist/client/_nuxt/entry.Ci1n7Rlt.css +0 -1
@@ -0,0 +1,156 @@
1
+ export interface TextBlock {
2
+ type: 'text';
3
+ text: string;
4
+ }
5
+ export interface ToolUseBlock {
6
+ type: 'tool_use';
7
+ id: string;
8
+ name: string;
9
+ input: Record<string, unknown>;
10
+ }
11
+ export interface ToolResultBlock {
12
+ type: 'tool_result';
13
+ tool_use_id: string;
14
+ content: string | unknown[];
15
+ is_error?: boolean;
16
+ }
17
+ export interface ThinkingBlock {
18
+ type: 'thinking';
19
+ thinking: string;
20
+ }
21
+ export type ContentBlock = TextBlock | ToolUseBlock | ToolResultBlock | ThinkingBlock;
22
+ export interface Message {
23
+ id: string;
24
+ role: 'user' | 'assistant' | 'system';
25
+ content: string;
26
+ contentBlocks?: ContentBlock[];
27
+ timestamp: Date | string;
28
+ streaming?: boolean;
29
+ model?: string;
30
+ }
31
+ export interface Conversation {
32
+ id: string;
33
+ title?: string;
34
+ messages: Message[];
35
+ createdAt: string;
36
+ updatedAt: string;
37
+ projectPath: string;
38
+ claudeSessionId?: string;
39
+ }
40
+ export interface HistoryStore {
41
+ version: 1;
42
+ conversations: Conversation[];
43
+ activeConversationId: string | null;
44
+ }
45
+ export interface StreamEventBase {
46
+ type: string;
47
+ }
48
+ export interface MessageStartEvent extends StreamEventBase {
49
+ type: 'message_start';
50
+ message: {
51
+ id: string;
52
+ type: 'message';
53
+ role: 'assistant';
54
+ model: string;
55
+ content: unknown[];
56
+ };
57
+ }
58
+ export interface ContentBlockStartEvent extends StreamEventBase {
59
+ type: 'content_block_start';
60
+ index: number;
61
+ content_block: {
62
+ type: 'text' | 'tool_use' | 'thinking';
63
+ id?: string;
64
+ name?: string;
65
+ input?: Record<string, unknown>;
66
+ text?: string;
67
+ thinking?: string;
68
+ };
69
+ }
70
+ export interface ContentBlockDeltaEvent extends StreamEventBase {
71
+ type: 'content_block_delta';
72
+ index: number;
73
+ delta: {
74
+ type: 'text_delta' | 'input_json_delta' | 'thinking_delta';
75
+ text?: string;
76
+ partial_json?: string;
77
+ thinking?: string;
78
+ };
79
+ }
80
+ export interface ContentBlockStopEvent extends StreamEventBase {
81
+ type: 'content_block_stop';
82
+ index: number;
83
+ }
84
+ export interface MessageDeltaEvent extends StreamEventBase {
85
+ type: 'message_delta';
86
+ delta: {
87
+ stop_reason: 'end_turn' | 'tool_use' | 'max_tokens';
88
+ };
89
+ usage?: {
90
+ output_tokens: number;
91
+ };
92
+ }
93
+ export interface MessageStopEvent extends StreamEventBase {
94
+ type: 'message_stop';
95
+ }
96
+ export interface PingEvent extends StreamEventBase {
97
+ type: 'ping';
98
+ }
99
+ export interface ErrorEvent extends StreamEventBase {
100
+ type: 'error';
101
+ error: {
102
+ type: string;
103
+ message: string;
104
+ };
105
+ }
106
+ export interface ResultEvent extends StreamEventBase {
107
+ type: 'result';
108
+ subtype: 'success' | 'error';
109
+ result?: string;
110
+ error?: string;
111
+ session_id?: string;
112
+ cost_usd?: number;
113
+ duration_ms?: number;
114
+ duration_api_ms?: number;
115
+ is_error?: boolean;
116
+ num_turns?: number;
117
+ total_cost_usd?: number;
118
+ }
119
+ export interface SystemEvent extends StreamEventBase {
120
+ type: 'system';
121
+ subtype: string;
122
+ message?: string;
123
+ }
124
+ export interface AssistantEvent extends StreamEventBase {
125
+ type: 'assistant';
126
+ message: {
127
+ id: string;
128
+ type: 'message';
129
+ role: 'assistant';
130
+ content: Array<{
131
+ type: 'text' | 'tool_use';
132
+ text?: string;
133
+ id?: string;
134
+ name?: string;
135
+ input?: Record<string, unknown>;
136
+ }>;
137
+ model: string;
138
+ stop_reason: string;
139
+ stop_sequence: null | string;
140
+ };
141
+ session_id: string;
142
+ }
143
+ export interface ToolUseEvent extends StreamEventBase {
144
+ type: 'tool_use';
145
+ tool_use_id: string;
146
+ name: string;
147
+ input: Record<string, unknown>;
148
+ }
149
+ export interface ToolResultEvent extends StreamEventBase {
150
+ type: 'tool_result';
151
+ tool_use_id: string;
152
+ name?: string;
153
+ content: string | unknown[];
154
+ is_error?: boolean;
155
+ }
156
+ export type StreamEvent = MessageStartEvent | ContentBlockStartEvent | ContentBlockDeltaEvent | ContentBlockStopEvent | MessageDeltaEvent | MessageStopEvent | PingEvent | ErrorEvent | ResultEvent | SystemEvent | AssistantEvent | ToolUseEvent | ToolResultEvent;
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oro.ad/nuxt-claude-devtools",
3
- "version": "1.0.7",
3
+ "version": "1.1.0",
4
4
  "description": "Nuxt DevTools integration for Claude Code AI assistant",
5
5
  "license": "GPL-3.0-only",
6
6
  "type": "module",
@@ -10,6 +10,20 @@
10
10
  "import": "./dist/module.mjs"
11
11
  }
12
12
  },
13
+ "keywords": [
14
+ "vue",
15
+ "nuxt",
16
+ "claude",
17
+ "ai",
18
+ "agent",
19
+ "typescript",
20
+ "guides",
21
+ "vibecoding",
22
+ "hmr",
23
+ "dev-server",
24
+ "devtools",
25
+ "business-console"
26
+ ],
13
27
  "repository": {
14
28
  "url": "https://github.com/oro-ad/nuxt-claude-devtools"
15
29
  },
@@ -40,6 +54,7 @@
40
54
  "@nuxt/devtools-kit": "^3.1.1",
41
55
  "@nuxt/kit": "^4.2.2",
42
56
  "@oro.ad/nuxt-claude-devtools-bc": "^1.0.5",
57
+ "marked": "^17.0.1",
43
58
  "sirv": "^3.0.2",
44
59
  "socket.io": "^4.8.1"
45
60
  },
@@ -1 +0,0 @@
1
- import{_ as L}from"./EMyRkg8p.js";import{u as B,_ as R,a as E,b as q,c as D,d as H,l as I}from"./DJn_CTvm.js";import{g as z,r as p,j as G,k as J,c as r,o as u,a as l,b as n,w as d,d as a,n as K,l as V,t as c,m as g,v as b,F as S,p as O}from"./CfGtRVGd.js";const Q={class:"relative flex flex-col h-screen n-bg-base"},W={class:"flex items-center justify-between p-4"},X={class:"flex items-center gap-3"},Y={class:"text-xl font-bold flex items-center gap-2"},Z={class:"flex items-center gap-2"},h={class:"flex-1 overflow-auto p-4 space-y-6"},ee={key:0,class:"n-bg-active rounded-lg p-4 mb-4"},le={key:0,class:"mb-4"},te={class:"space-y-4"},oe={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"},de={class:"flex items-center gap-2"},me={class:"flex gap-2 pt-2"},pe={class:"text-lg font-semibold mb-3 flex items-center gap-2"},ce={key:0,class:"n-bg-active rounded-lg p-4 opacity-50"},ve={key:1,class:"space-y-2"},fe={class:"font-bold flex items-center gap-2"},ge={class:"text-sm opacity-70 font-mono"},Ce=z({__name:"mcp",setup(be){const x=B(),s=p(null),_=p(!1),w=p([]),k=p(!1),y=p(!1),t=p({name:"",transport:"stdio",command:"",args:"",url:"",scope:"local"}),m=p("");function M(){return x.isActive.value&&x.origin.value?x.origin.value:window.location.origin}function P(){const i=M();console.log("[mcp-client] Connecting to socket at",i,"tunnel active:",x.isActive.value),s.value=I(i,{path:"/__claude_devtools_socket",transports:["websocket","polling"],reconnection:!0,reconnectionAttempts:5}),s.value.on("connect",()=>{console.log("[mcp-client] Connected to socket"),_.value=!0,U()}),s.value.on("disconnect",()=>{console.log("[mcp-client] Disconnected from socket"),_.value=!1}),s.value.on("mcp:list",e=>{console.log("[mcp-client] MCP list received",e),w.value=e,k.value=!1}),s.value.on("mcp:added",e=>{console.log("[mcp-client] MCP added result",e),e.success?(y.value=!1,N()):m.value=e.error||"Failed to add MCP server"}),s.value.on("mcp:removed",e=>{console.log("[mcp-client] MCP removed result",e),e.success||alert(`Failed to remove: ${e.error}`)})}function U(){s.value&&(k.value=!0,s.value.emit("mcp:list"))}function N(){t.value={name:"",transport:"stdio",command:"",args:"",url:"",scope:"local"},m.value=""}function A(){if(!t.value.name){m.value="Name is required";return}if(t.value.transport==="stdio"&&!t.value.command){m.value="Command is required for stdio transport";return}if((t.value.transport==="http"||t.value.transport==="sse")&&!t.value.url){m.value="URL is required for HTTP/SSE transport";return}if(s.value){const i=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:i,url:t.value.url,scope:t.value.scope})}}function T(i){confirm(`Remove MCP server "${i.name}"?`)&&s.value&&s.value.emit("mcp:remove",{name:i.name})}return G(()=>{P()}),J(()=>{s.value&&s.value.disconnect()}),(i,e)=>{const $=L,v=R,f=E,j=q,C=D,F=H;return u(),r("div",Q,[l("div",W,[l("div",X,[n($,{class:"text-sm opacity-50 hover:opacity-100",to:"/"},{default:d(()=>[...e[11]||(e[11]=[a(" ← Chat ",-1)])]),_:1}),l("h1",Y,[n(v,{class:"text-blue",icon:"carbon:plug"}),e[12]||(e[12]=a(" MCP Servers ",-1))])]),l("div",Z,[n(f,{disabled:!_.value,n:"blue",onClick:e[0]||(e[0]=o=>y.value=!0)},{default:d(()=>[n(v,{class:"mr-1",icon:"carbon:add"}),e[13]||(e[13]=a(" Add Server ",-1))]),_:1},8,["disabled"]),n(f,{disabled:!_.value||k.value,n:"gray",onClick:U},{default:d(()=>[n(v,{class:K([{"animate-spin":k.value},"mr-1"]),icon:"carbon:restart"},null,8,["class"]),e[14]||(e[14]=a(" Refresh ",-1))]),_:1},8,["disabled"])])]),l("div",h,[y.value?(u(),r("div",ee,[e[28]||(e[28]=l("h3",{class:"font-bold mb-4"}," Add MCP Server ",-1)),m.value?(u(),r("div",le,[n(j,{icon:"carbon:warning",n:"red"},{default:d(()=>[a(c(m.value),1)]),_:1})])):V("",!0),l("div",te,[l("div",null,[e[15]||(e[15]=l("label",{class:"block text-sm font-medium mb-1"},"Name",-1)),n(C,{modelValue:t.value.name,"onUpdate:modelValue":e[1]||(e[1]=o=>t.value.name=o),class:"w-full",placeholder:"e.g. github, nuxt-ui-remote"},null,8,["modelValue"])]),l("div",null,[e[19]||(e[19]=l("label",{class:"block text-sm font-medium mb-1"},"Transport",-1)),l("div",oe,[l("label",ne,[g(l("input",{"onUpdate:modelValue":e[2]||(e[2]=o=>t.value.transport=o),name:"transport",type:"radio",value:"stdio"},null,512),[[b,t.value.transport]]),e[16]||(e[16]=l("span",null,"stdio (local command)",-1))]),l("label",se,[g(l("input",{"onUpdate:modelValue":e[3]||(e[3]=o=>t.value.transport=o),name:"transport",type:"radio",value:"http"},null,512),[[b,t.value.transport]]),e[17]||(e[17]=l("span",null,"HTTP (remote)",-1))]),l("label",ae,[g(l("input",{"onUpdate:modelValue":e[4]||(e[4]=o=>t.value.transport=o),name:"transport",type:"radio",value:"sse"},null,512),[[b,t.value.transport]]),e[18]||(e[18]=l("span",null,"SSE (remote)",-1))])])]),t.value.transport==="stdio"?(u(),r(S,{key:0},[l("div",null,[e[20]||(e[20]=l("label",{class:"block text-sm font-medium mb-1"},"Command",-1)),n(C,{modelValue:t.value.command,"onUpdate:modelValue":e[5]||(e[5]=o=>t.value.command=o),class:"w-full font-mono",placeholder:"e.g. npx"},null,8,["modelValue"])]),l("div",null,[e[21]||(e[21]=l("label",{class:"block text-sm font-medium mb-1"},"Arguments (space separated)",-1)),n(C,{modelValue:t.value.args,"onUpdate:modelValue":e[6]||(e[6]=o=>t.value.args=o),class:"w-full font-mono",placeholder:"e.g. -y @modelcontextprotocol/server-github"},null,8,["modelValue"])])],64)):V("",!0),t.value.transport==="http"||t.value.transport==="sse"?(u(),r("div",re,[e[22]||(e[22]=l("label",{class:"block text-sm font-medium mb-1"},"URL",-1)),n(C,{modelValue:t.value.url,"onUpdate:modelValue":e[7]||(e[7]=o=>t.value.url=o),class:"w-full font-mono",placeholder:"e.g. https://ui.nuxt.com/mcp"},null,8,["modelValue"])])):V("",!0),l("div",null,[e[25]||(e[25]=l("label",{class:"block text-sm font-medium mb-1"},"Scope",-1)),l("div",ue,[l("label",ie,[g(l("input",{"onUpdate:modelValue":e[8]||(e[8]=o=>t.value.scope=o),name:"scope",type:"radio",value:"local"},null,512),[[b,t.value.scope]]),e[23]||(e[23]=l("span",null,"Local (this project, private)",-1))]),l("label",de,[g(l("input",{"onUpdate:modelValue":e[9]||(e[9]=o=>t.value.scope=o),name:"scope",type:"radio",value:"global"},null,512),[[b,t.value.scope]]),e[24]||(e[24]=l("span",null,"User (all projects)",-1))])])]),l("div",me,[n(f,{n:"green",onClick:A},{default:d(()=>[...e[26]||(e[26]=[a(" Add Server ",-1)])]),_:1}),n(f,{n:"gray",onClick:e[10]||(e[10]=o=>{y.value=!1,N()})},{default:d(()=>[...e[27]||(e[27]=[a(" Cancel ",-1)])]),_:1})])])])):V("",!0),l("div",null,[l("h2",pe,[n(v,{icon:"carbon:plug"}),e[29]||(e[29]=a(" Configured Servers ",-1))]),w.value.length===0?(u(),r("div",ce," No MCP servers configured ")):(u(),r("div",ve,[(u(!0),r(S,null,O(w.value,o=>(u(),r("div",{key:o.name,class:"n-bg-active rounded-lg p-4 flex items-center justify-between"},[l("div",null,[l("div",fe,[a(c(o.name)+" ",1),n(F,{n:o.transport==="stdio"?"gray":"blue",class:"text-xs"},{default:d(()=>[a(c(o.transport),1)]),_:2},1032,["n"])]),l("div",ge,[o.transport==="stdio"?(u(),r(S,{key:0},[a(c(o.command)+" "+c(o.args?.join(" ")),1)],64)):(u(),r(S,{key:1},[a(c(o.url),1)],64))])]),n(f,{n:"red",onClick:xe=>T(o)},{default:d(()=>[n(v,{icon:"carbon:trash-can"})]),_:1},8,["onClick"])]))),128))]))])])])}}});export{Ce as default};