@gui-chat-plugin/todo 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core.cjs +1 -1
- package/dist/core.js +2 -313
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -9
- package/dist/samples-CtUOrJ2M.cjs +1 -0
- package/dist/samples-DlP-gB3b.js +277 -0
- package/dist/style.css +3 -1
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +103 -170
- package/package.json +17 -15
package/dist/core.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./samples-CtUOrJ2M.cjs`);exports.SYSTEM_PROMPT=e.i,exports.TOOL_DEFINITION=e.a,exports.TOOL_NAME=e.o,exports.executeTodo=e.n,exports.pluginCore=e.r,exports.samples=e.t;
|
package/dist/core.js
CHANGED
|
@@ -1,313 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
name: m,
|
|
4
|
-
description: "Manage a todo list - show current items, add new items, or delete items. Use this to help users track tasks and remember things.",
|
|
5
|
-
parameters: {
|
|
6
|
-
type: "object",
|
|
7
|
-
properties: {
|
|
8
|
-
action: {
|
|
9
|
-
type: "string",
|
|
10
|
-
enum: [
|
|
11
|
-
"show",
|
|
12
|
-
"add",
|
|
13
|
-
"delete",
|
|
14
|
-
"clear_completed",
|
|
15
|
-
"update",
|
|
16
|
-
"check",
|
|
17
|
-
"uncheck"
|
|
18
|
-
],
|
|
19
|
-
description: "Action to perform: 'show' displays the list, 'add' creates a new item, 'delete' removes an item, 'clear_completed' removes all checked items, 'update' modifies an existing item, 'check' marks an item as completed, 'uncheck' marks an item as not completed"
|
|
20
|
-
},
|
|
21
|
-
text: {
|
|
22
|
-
type: "string",
|
|
23
|
-
description: "For 'add': the todo item text. For 'delete'/'update'/'check'/'uncheck': the text of the item to find (must match exactly). Not required for 'show' or 'clear_completed'"
|
|
24
|
-
},
|
|
25
|
-
newText: {
|
|
26
|
-
type: "string",
|
|
27
|
-
description: "For 'update' action only: the new text to replace the existing item text"
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
required: ["action"]
|
|
31
|
-
}
|
|
32
|
-
}, h = `When users mention tasks they need to do, things to remember, or ask about their todo list, use the ${m} function to help them track these items.`, l = "mulmo_todo_list";
|
|
33
|
-
function p() {
|
|
34
|
-
try {
|
|
35
|
-
const n = localStorage.getItem(l);
|
|
36
|
-
if (n)
|
|
37
|
-
return JSON.parse(n);
|
|
38
|
-
} catch (n) {
|
|
39
|
-
console.error("Error loading todos:", n);
|
|
40
|
-
}
|
|
41
|
-
return [];
|
|
42
|
-
}
|
|
43
|
-
function r(n) {
|
|
44
|
-
try {
|
|
45
|
-
localStorage.setItem(l, JSON.stringify(n));
|
|
46
|
-
} catch (d) {
|
|
47
|
-
console.error("Error saving todos:", d);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const g = async (n, d) => {
|
|
51
|
-
const { action: c, text: o, newText: i } = d;
|
|
52
|
-
try {
|
|
53
|
-
const t = p();
|
|
54
|
-
switch (c) {
|
|
55
|
-
case "show":
|
|
56
|
-
return {
|
|
57
|
-
message: `Todo list displayed with ${t.length} item${t.length !== 1 ? "s" : ""}`,
|
|
58
|
-
data: { items: t },
|
|
59
|
-
jsonData: {
|
|
60
|
-
totalItems: t.length,
|
|
61
|
-
completed: t.filter((e) => e.completed).length,
|
|
62
|
-
pending: t.filter((e) => !e.completed).length,
|
|
63
|
-
items: t.map((e) => ({
|
|
64
|
-
text: e.text,
|
|
65
|
-
completed: e.completed
|
|
66
|
-
}))
|
|
67
|
-
},
|
|
68
|
-
instructions: "The todo list has been displayed. Acknowledge the current state of the list to the user.",
|
|
69
|
-
updating: !0
|
|
70
|
-
};
|
|
71
|
-
case "add": {
|
|
72
|
-
if (!o || typeof o != "string" || o.trim() === "")
|
|
73
|
-
return {
|
|
74
|
-
message: "Cannot add todo: text is required",
|
|
75
|
-
data: { items: t },
|
|
76
|
-
instructions: "Tell the user that a todo item text is required to add an item.",
|
|
77
|
-
updating: !0
|
|
78
|
-
};
|
|
79
|
-
const e = {
|
|
80
|
-
id: `todo_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
|
81
|
-
text: o.trim(),
|
|
82
|
-
completed: !1,
|
|
83
|
-
createdAt: Date.now()
|
|
84
|
-
};
|
|
85
|
-
return t.push(e), r(t), {
|
|
86
|
-
message: `Added todo: "${e.text}"`,
|
|
87
|
-
data: { items: t },
|
|
88
|
-
jsonData: {
|
|
89
|
-
added: e.text,
|
|
90
|
-
totalItems: t.length
|
|
91
|
-
},
|
|
92
|
-
instructions: `Confirm to the user that "${e.text}" has been added to their todo list.`,
|
|
93
|
-
updating: !0
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
case "delete": {
|
|
97
|
-
if (!o || typeof o != "string")
|
|
98
|
-
return {
|
|
99
|
-
message: "Cannot delete todo: text is required",
|
|
100
|
-
data: { items: t },
|
|
101
|
-
instructions: "Tell the user which todo item they want to delete. List the current items if needed.",
|
|
102
|
-
updating: !0
|
|
103
|
-
};
|
|
104
|
-
const e = t.findIndex(
|
|
105
|
-
(s) => s.text.toLowerCase() === o.toLowerCase()
|
|
106
|
-
);
|
|
107
|
-
if (e === -1)
|
|
108
|
-
return {
|
|
109
|
-
message: `Todo item not found: "${o}"`,
|
|
110
|
-
data: { items: t },
|
|
111
|
-
jsonData: {
|
|
112
|
-
availableItems: t.map((s) => s.text)
|
|
113
|
-
},
|
|
114
|
-
instructions: `Tell the user that "${o}" was not found in the todo list. Show them the current items if helpful.`,
|
|
115
|
-
updating: !0
|
|
116
|
-
};
|
|
117
|
-
const a = t[e];
|
|
118
|
-
return t.splice(e, 1), r(t), {
|
|
119
|
-
message: `Deleted todo: "${a.text}"`,
|
|
120
|
-
data: { items: t },
|
|
121
|
-
jsonData: {
|
|
122
|
-
deleted: a.text,
|
|
123
|
-
totalItems: t.length
|
|
124
|
-
},
|
|
125
|
-
instructions: `Confirm to the user that "${a.text}" has been removed from their todo list.`,
|
|
126
|
-
updating: !0
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
case "clear_completed": {
|
|
130
|
-
const e = t.filter((s) => s.completed), a = t.filter((s) => !s.completed);
|
|
131
|
-
return e.length === 0 ? {
|
|
132
|
-
message: "No completed items to clear",
|
|
133
|
-
data: { items: t },
|
|
134
|
-
jsonData: {
|
|
135
|
-
totalItems: t.length
|
|
136
|
-
},
|
|
137
|
-
instructions: "Tell the user that there are no completed items to clear.",
|
|
138
|
-
updating: !0
|
|
139
|
-
} : (r(a), {
|
|
140
|
-
message: `Cleared ${e.length} completed item${e.length !== 1 ? "s" : ""}`,
|
|
141
|
-
data: { items: a },
|
|
142
|
-
jsonData: {
|
|
143
|
-
clearedCount: e.length,
|
|
144
|
-
totalItems: a.length
|
|
145
|
-
},
|
|
146
|
-
instructions: `Confirm to the user that ${e.length} completed item${e.length !== 1 ? "s have" : " has"} been removed from their todo list.`,
|
|
147
|
-
updating: !0
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
case "update": {
|
|
151
|
-
if (!o || typeof o != "string")
|
|
152
|
-
return {
|
|
153
|
-
message: "Cannot update todo: text is required to identify the item",
|
|
154
|
-
data: { items: t },
|
|
155
|
-
instructions: "Tell the user which todo item they want to update.",
|
|
156
|
-
updating: !0
|
|
157
|
-
};
|
|
158
|
-
if (!i || typeof i != "string" || i.trim() === "")
|
|
159
|
-
return {
|
|
160
|
-
message: "Cannot update todo: newText is required",
|
|
161
|
-
data: { items: t },
|
|
162
|
-
instructions: "Tell the user what the new text should be for the todo item.",
|
|
163
|
-
updating: !0
|
|
164
|
-
};
|
|
165
|
-
const e = t.find(
|
|
166
|
-
(s) => s.text.toLowerCase() === o.toLowerCase()
|
|
167
|
-
);
|
|
168
|
-
if (!e)
|
|
169
|
-
return {
|
|
170
|
-
message: `Todo item not found: "${o}"`,
|
|
171
|
-
data: { items: t },
|
|
172
|
-
jsonData: {
|
|
173
|
-
availableItems: t.map((s) => s.text)
|
|
174
|
-
},
|
|
175
|
-
instructions: `Tell the user that "${o}" was not found in the todo list. Show them the current items if helpful.`,
|
|
176
|
-
updating: !0
|
|
177
|
-
};
|
|
178
|
-
const a = e.text;
|
|
179
|
-
return e.text = i.trim(), r(t), {
|
|
180
|
-
message: `Updated todo from "${a}" to "${e.text}"`,
|
|
181
|
-
data: { items: t },
|
|
182
|
-
jsonData: {
|
|
183
|
-
oldText: a,
|
|
184
|
-
newText: e.text,
|
|
185
|
-
totalItems: t.length
|
|
186
|
-
},
|
|
187
|
-
instructions: `Confirm to the user that the todo item has been updated from "${a}" to "${e.text}".`,
|
|
188
|
-
updating: !0
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
case "check": {
|
|
192
|
-
if (!o || typeof o != "string")
|
|
193
|
-
return {
|
|
194
|
-
message: "Cannot check todo: text is required to identify the item",
|
|
195
|
-
data: { items: t },
|
|
196
|
-
instructions: "Tell the user which todo item they want to mark as completed.",
|
|
197
|
-
updating: !0
|
|
198
|
-
};
|
|
199
|
-
const e = t.find(
|
|
200
|
-
(a) => a.text.toLowerCase() === o.toLowerCase()
|
|
201
|
-
);
|
|
202
|
-
return e ? e.completed ? {
|
|
203
|
-
message: `Todo item "${e.text}" is already completed`,
|
|
204
|
-
data: { items: t },
|
|
205
|
-
instructions: `Tell the user that "${e.text}" is already marked as completed.`,
|
|
206
|
-
updating: !0
|
|
207
|
-
} : (e.completed = !0, r(t), {
|
|
208
|
-
message: `Checked todo: "${e.text}"`,
|
|
209
|
-
data: { items: t },
|
|
210
|
-
jsonData: {
|
|
211
|
-
checkedItem: e.text,
|
|
212
|
-
totalItems: t.length,
|
|
213
|
-
completedItems: t.filter((a) => a.completed).length
|
|
214
|
-
},
|
|
215
|
-
instructions: `Confirm to the user that "${e.text}" has been marked as completed.`,
|
|
216
|
-
updating: !0
|
|
217
|
-
}) : {
|
|
218
|
-
message: `Todo item not found: "${o}"`,
|
|
219
|
-
data: { items: t },
|
|
220
|
-
jsonData: {
|
|
221
|
-
availableItems: t.map((a) => a.text)
|
|
222
|
-
},
|
|
223
|
-
instructions: `Tell the user that "${o}" was not found in the todo list. Show them the current items if helpful.`,
|
|
224
|
-
updating: !0
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
case "uncheck": {
|
|
228
|
-
if (!o || typeof o != "string")
|
|
229
|
-
return {
|
|
230
|
-
message: "Cannot uncheck todo: text is required to identify the item",
|
|
231
|
-
data: { items: t },
|
|
232
|
-
instructions: "Tell the user which todo item they want to mark as not completed.",
|
|
233
|
-
updating: !0
|
|
234
|
-
};
|
|
235
|
-
const e = t.find(
|
|
236
|
-
(a) => a.text.toLowerCase() === o.toLowerCase()
|
|
237
|
-
);
|
|
238
|
-
return e ? e.completed ? (e.completed = !1, r(t), {
|
|
239
|
-
message: `Unchecked todo: "${e.text}"`,
|
|
240
|
-
data: { items: t },
|
|
241
|
-
jsonData: {
|
|
242
|
-
uncheckedItem: e.text,
|
|
243
|
-
totalItems: t.length,
|
|
244
|
-
completedItems: t.filter((a) => a.completed).length
|
|
245
|
-
},
|
|
246
|
-
instructions: `Confirm to the user that "${e.text}" has been marked as not completed.`,
|
|
247
|
-
updating: !0
|
|
248
|
-
}) : {
|
|
249
|
-
message: `Todo item "${e.text}" is already not completed`,
|
|
250
|
-
data: { items: t },
|
|
251
|
-
instructions: `Tell the user that "${e.text}" is already marked as not completed.`,
|
|
252
|
-
updating: !0
|
|
253
|
-
} : {
|
|
254
|
-
message: `Todo item not found: "${o}"`,
|
|
255
|
-
data: { items: t },
|
|
256
|
-
jsonData: {
|
|
257
|
-
availableItems: t.map((a) => a.text)
|
|
258
|
-
},
|
|
259
|
-
instructions: `Tell the user that "${o}" was not found in the todo list. Show them the current items if helpful.`,
|
|
260
|
-
updating: !0
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
default:
|
|
264
|
-
return {
|
|
265
|
-
message: `Unknown action: ${c}`,
|
|
266
|
-
data: { items: t },
|
|
267
|
-
instructions: "Tell the user that the action was not recognized. Valid actions are: show, add, delete, clear_completed, update, check, uncheck.",
|
|
268
|
-
updating: !0
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
} catch (t) {
|
|
272
|
-
return console.error("ERR: exception in manageTodoList", t), {
|
|
273
|
-
message: `Todo list error: ${t instanceof Error ? t.message : "Unknown error"}`,
|
|
274
|
-
data: { items: [] },
|
|
275
|
-
instructions: "Acknowledge that there was an error managing the todo list."
|
|
276
|
-
};
|
|
277
|
-
}
|
|
278
|
-
}, f = {
|
|
279
|
-
toolDefinition: u,
|
|
280
|
-
execute: g,
|
|
281
|
-
generatingMessage: "Managing todo list...",
|
|
282
|
-
isEnabled: () => !0,
|
|
283
|
-
systemPrompt: h
|
|
284
|
-
}, x = [
|
|
285
|
-
{
|
|
286
|
-
name: "Show List",
|
|
287
|
-
args: {
|
|
288
|
-
action: "show"
|
|
289
|
-
}
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
name: "Add Item",
|
|
293
|
-
args: {
|
|
294
|
-
action: "add",
|
|
295
|
-
text: "Buy groceries"
|
|
296
|
-
}
|
|
297
|
-
},
|
|
298
|
-
{
|
|
299
|
-
name: "Check Item",
|
|
300
|
-
args: {
|
|
301
|
-
action: "check",
|
|
302
|
-
text: "Buy groceries"
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
];
|
|
306
|
-
export {
|
|
307
|
-
h as SYSTEM_PROMPT,
|
|
308
|
-
u as TOOL_DEFINITION,
|
|
309
|
-
m as TOOL_NAME,
|
|
310
|
-
g as executeTodo,
|
|
311
|
-
f as pluginCore,
|
|
312
|
-
x as samples
|
|
313
|
-
};
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, t as a } from "./samples-DlP-gB3b.js";
|
|
2
|
+
export { t as SYSTEM_PROMPT, e as TOOL_DEFINITION, r as TOOL_NAME, n as executeTodo, i as pluginCore, a as samples };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./samples-CtUOrJ2M.cjs`);require(`./core.cjs`),exports.SYSTEM_PROMPT=e.i,exports.TOOL_DEFINITION=e.a,exports.TOOL_NAME=e.o,exports.executeTodo=e.n,exports.pluginCore=e.r,exports.samples=e.t;
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
o as TOOL_DEFINITION,
|
|
5
|
-
p as TOOL_NAME,
|
|
6
|
-
r as executeTodo,
|
|
7
|
-
E as pluginCore,
|
|
8
|
-
I as samples
|
|
9
|
-
};
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, t as a } from "./samples-DlP-gB3b.js";
|
|
2
|
+
import "./core.js";
|
|
3
|
+
export { t as SYSTEM_PROMPT, e as TOOL_DEFINITION, r as TOOL_NAME, n as executeTodo, i as pluginCore, a as samples };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`manageTodoList`,t={type:`function`,name:e,description:`Manage a todo list - show current items, add new items, or delete items. Use this to help users track tasks and remember things.`,parameters:{type:`object`,properties:{action:{type:`string`,enum:[`show`,`add`,`delete`,`clear_completed`,`update`,`check`,`uncheck`],description:`Action to perform: 'show' displays the list, 'add' creates a new item, 'delete' removes an item, 'clear_completed' removes all checked items, 'update' modifies an existing item, 'check' marks an item as completed, 'uncheck' marks an item as not completed`},text:{type:`string`,description:`For 'add': the todo item text. For 'delete'/'update'/'check'/'uncheck': the text of the item to find (must match exactly). Not required for 'show' or 'clear_completed'`},newText:{type:`string`,description:`For 'update' action only: the new text to replace the existing item text`}},required:[`action`]}},n=`When users mention tasks they need to do, things to remember, or ask about their todo list, use the ${e} function to help them track these items.`,r=`mulmo_todo_list`;function i(){try{let e=localStorage.getItem(r);if(e)return JSON.parse(e)}catch(e){console.error(`Error loading todos:`,e)}return[]}function a(e){try{localStorage.setItem(r,JSON.stringify(e))}catch(e){console.error(`Error saving todos:`,e)}}var o=async(e,t)=>{let{action:n,text:r,newText:o}=t;try{let e=i();switch(n){case`show`:return{message:`Todo list displayed with ${e.length} item${e.length===1?``:`s`}`,data:{items:e},jsonData:{totalItems:e.length,completed:e.filter(e=>e.completed).length,pending:e.filter(e=>!e.completed).length,items:e.map(e=>({text:e.text,completed:e.completed}))},instructions:`The todo list has been displayed. Acknowledge the current state of the list to the user.`,updating:!0};case`add`:{if(!r||typeof r!=`string`||r.trim()===``)return{message:`Cannot add todo: text is required`,data:{items:e},instructions:`Tell the user that a todo item text is required to add an item.`,updating:!0};let t={id:`todo_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,text:r.trim(),completed:!1,createdAt:Date.now()};return e.push(t),a(e),{message:`Added todo: "${t.text}"`,data:{items:e},jsonData:{added:t.text,totalItems:e.length},instructions:`Confirm to the user that "${t.text}" has been added to their todo list.`,updating:!0}}case`delete`:{if(!r||typeof r!=`string`)return{message:`Cannot delete todo: text is required`,data:{items:e},instructions:`Tell the user which todo item they want to delete. List the current items if needed.`,updating:!0};let t=e.findIndex(e=>e.text.toLowerCase()===r.toLowerCase());if(t===-1)return{message:`Todo item not found: "${r}"`,data:{items:e},jsonData:{availableItems:e.map(e=>e.text)},instructions:`Tell the user that "${r}" was not found in the todo list. Show them the current items if helpful.`,updating:!0};let n=e[t];return e.splice(t,1),a(e),{message:`Deleted todo: "${n.text}"`,data:{items:e},jsonData:{deleted:n.text,totalItems:e.length},instructions:`Confirm to the user that "${n.text}" has been removed from their todo list.`,updating:!0}}case`clear_completed`:{let t=e.filter(e=>e.completed),n=e.filter(e=>!e.completed);return t.length===0?{message:`No completed items to clear`,data:{items:e},jsonData:{totalItems:e.length},instructions:`Tell the user that there are no completed items to clear.`,updating:!0}:(a(n),{message:`Cleared ${t.length} completed item${t.length===1?``:`s`}`,data:{items:n},jsonData:{clearedCount:t.length,totalItems:n.length},instructions:`Confirm to the user that ${t.length} completed item${t.length===1?` has`:`s have`} been removed from their todo list.`,updating:!0})}case`update`:{if(!r||typeof r!=`string`)return{message:`Cannot update todo: text is required to identify the item`,data:{items:e},instructions:`Tell the user which todo item they want to update.`,updating:!0};if(!o||typeof o!=`string`||o.trim()===``)return{message:`Cannot update todo: newText is required`,data:{items:e},instructions:`Tell the user what the new text should be for the todo item.`,updating:!0};let t=e.find(e=>e.text.toLowerCase()===r.toLowerCase());if(!t)return{message:`Todo item not found: "${r}"`,data:{items:e},jsonData:{availableItems:e.map(e=>e.text)},instructions:`Tell the user that "${r}" was not found in the todo list. Show them the current items if helpful.`,updating:!0};let n=t.text;return t.text=o.trim(),a(e),{message:`Updated todo from "${n}" to "${t.text}"`,data:{items:e},jsonData:{oldText:n,newText:t.text,totalItems:e.length},instructions:`Confirm to the user that the todo item has been updated from "${n}" to "${t.text}".`,updating:!0}}case`check`:{if(!r||typeof r!=`string`)return{message:`Cannot check todo: text is required to identify the item`,data:{items:e},instructions:`Tell the user which todo item they want to mark as completed.`,updating:!0};let t=e.find(e=>e.text.toLowerCase()===r.toLowerCase());return t?t.completed?{message:`Todo item "${t.text}" is already completed`,data:{items:e},instructions:`Tell the user that "${t.text}" is already marked as completed.`,updating:!0}:(t.completed=!0,a(e),{message:`Checked todo: "${t.text}"`,data:{items:e},jsonData:{checkedItem:t.text,totalItems:e.length,completedItems:e.filter(e=>e.completed).length},instructions:`Confirm to the user that "${t.text}" has been marked as completed.`,updating:!0}):{message:`Todo item not found: "${r}"`,data:{items:e},jsonData:{availableItems:e.map(e=>e.text)},instructions:`Tell the user that "${r}" was not found in the todo list. Show them the current items if helpful.`,updating:!0}}case`uncheck`:{if(!r||typeof r!=`string`)return{message:`Cannot uncheck todo: text is required to identify the item`,data:{items:e},instructions:`Tell the user which todo item they want to mark as not completed.`,updating:!0};let t=e.find(e=>e.text.toLowerCase()===r.toLowerCase());return t?t.completed?(t.completed=!1,a(e),{message:`Unchecked todo: "${t.text}"`,data:{items:e},jsonData:{uncheckedItem:t.text,totalItems:e.length,completedItems:e.filter(e=>e.completed).length},instructions:`Confirm to the user that "${t.text}" has been marked as not completed.`,updating:!0}):{message:`Todo item "${t.text}" is already not completed`,data:{items:e},instructions:`Tell the user that "${t.text}" is already marked as not completed.`,updating:!0}:{message:`Todo item not found: "${r}"`,data:{items:e},jsonData:{availableItems:e.map(e=>e.text)},instructions:`Tell the user that "${r}" was not found in the todo list. Show them the current items if helpful.`,updating:!0}}default:return{message:`Unknown action: ${n}`,data:{items:e},instructions:`Tell the user that the action was not recognized. Valid actions are: show, add, delete, clear_completed, update, check, uncheck.`,updating:!0}}}catch(e){return console.error(`ERR: exception in manageTodoList`,e),{message:`Todo list error: ${e instanceof Error?e.message:`Unknown error`}`,data:{items:[]},instructions:`Acknowledge that there was an error managing the todo list.`}}},s={toolDefinition:t,execute:o,generatingMessage:`Managing todo list...`,isEnabled:()=>!0,systemPrompt:n},c=[{name:`Show List`,args:{action:`show`}},{name:`Add Item`,args:{action:`add`,text:`Buy groceries`}},{name:`Check Item`,args:{action:`check`,text:`Buy groceries`}}];Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return c}});
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
//#region src/core/definition.ts
|
|
2
|
+
var e = "manageTodoList", t = {
|
|
3
|
+
type: "function",
|
|
4
|
+
name: e,
|
|
5
|
+
description: "Manage a todo list - show current items, add new items, or delete items. Use this to help users track tasks and remember things.",
|
|
6
|
+
parameters: {
|
|
7
|
+
type: "object",
|
|
8
|
+
properties: {
|
|
9
|
+
action: {
|
|
10
|
+
type: "string",
|
|
11
|
+
enum: [
|
|
12
|
+
"show",
|
|
13
|
+
"add",
|
|
14
|
+
"delete",
|
|
15
|
+
"clear_completed",
|
|
16
|
+
"update",
|
|
17
|
+
"check",
|
|
18
|
+
"uncheck"
|
|
19
|
+
],
|
|
20
|
+
description: "Action to perform: 'show' displays the list, 'add' creates a new item, 'delete' removes an item, 'clear_completed' removes all checked items, 'update' modifies an existing item, 'check' marks an item as completed, 'uncheck' marks an item as not completed"
|
|
21
|
+
},
|
|
22
|
+
text: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "For 'add': the todo item text. For 'delete'/'update'/'check'/'uncheck': the text of the item to find (must match exactly). Not required for 'show' or 'clear_completed'"
|
|
25
|
+
},
|
|
26
|
+
newText: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "For 'update' action only: the new text to replace the existing item text"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
required: ["action"]
|
|
32
|
+
}
|
|
33
|
+
}, n = `When users mention tasks they need to do, things to remember, or ask about their todo list, use the ${e} function to help them track these items.`, r = "mulmo_todo_list";
|
|
34
|
+
function i() {
|
|
35
|
+
try {
|
|
36
|
+
let e = localStorage.getItem(r);
|
|
37
|
+
if (e) return JSON.parse(e);
|
|
38
|
+
} catch (e) {
|
|
39
|
+
console.error("Error loading todos:", e);
|
|
40
|
+
}
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
function a(e) {
|
|
44
|
+
try {
|
|
45
|
+
localStorage.setItem(r, JSON.stringify(e));
|
|
46
|
+
} catch (e) {
|
|
47
|
+
console.error("Error saving todos:", e);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
var o = async (e, t) => {
|
|
51
|
+
let { action: n, text: r, newText: o } = t;
|
|
52
|
+
try {
|
|
53
|
+
let e = i();
|
|
54
|
+
switch (n) {
|
|
55
|
+
case "show": return {
|
|
56
|
+
message: `Todo list displayed with ${e.length} item${e.length === 1 ? "" : "s"}`,
|
|
57
|
+
data: { items: e },
|
|
58
|
+
jsonData: {
|
|
59
|
+
totalItems: e.length,
|
|
60
|
+
completed: e.filter((e) => e.completed).length,
|
|
61
|
+
pending: e.filter((e) => !e.completed).length,
|
|
62
|
+
items: e.map((e) => ({
|
|
63
|
+
text: e.text,
|
|
64
|
+
completed: e.completed
|
|
65
|
+
}))
|
|
66
|
+
},
|
|
67
|
+
instructions: "The todo list has been displayed. Acknowledge the current state of the list to the user.",
|
|
68
|
+
updating: !0
|
|
69
|
+
};
|
|
70
|
+
case "add": {
|
|
71
|
+
if (!r || typeof r != "string" || r.trim() === "") return {
|
|
72
|
+
message: "Cannot add todo: text is required",
|
|
73
|
+
data: { items: e },
|
|
74
|
+
instructions: "Tell the user that a todo item text is required to add an item.",
|
|
75
|
+
updating: !0
|
|
76
|
+
};
|
|
77
|
+
let t = {
|
|
78
|
+
id: `todo_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
|
79
|
+
text: r.trim(),
|
|
80
|
+
completed: !1,
|
|
81
|
+
createdAt: Date.now()
|
|
82
|
+
};
|
|
83
|
+
return e.push(t), a(e), {
|
|
84
|
+
message: `Added todo: "${t.text}"`,
|
|
85
|
+
data: { items: e },
|
|
86
|
+
jsonData: {
|
|
87
|
+
added: t.text,
|
|
88
|
+
totalItems: e.length
|
|
89
|
+
},
|
|
90
|
+
instructions: `Confirm to the user that "${t.text}" has been added to their todo list.`,
|
|
91
|
+
updating: !0
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
case "delete": {
|
|
95
|
+
if (!r || typeof r != "string") return {
|
|
96
|
+
message: "Cannot delete todo: text is required",
|
|
97
|
+
data: { items: e },
|
|
98
|
+
instructions: "Tell the user which todo item they want to delete. List the current items if needed.",
|
|
99
|
+
updating: !0
|
|
100
|
+
};
|
|
101
|
+
let t = e.findIndex((e) => e.text.toLowerCase() === r.toLowerCase());
|
|
102
|
+
if (t === -1) return {
|
|
103
|
+
message: `Todo item not found: "${r}"`,
|
|
104
|
+
data: { items: e },
|
|
105
|
+
jsonData: { availableItems: e.map((e) => e.text) },
|
|
106
|
+
instructions: `Tell the user that "${r}" was not found in the todo list. Show them the current items if helpful.`,
|
|
107
|
+
updating: !0
|
|
108
|
+
};
|
|
109
|
+
let n = e[t];
|
|
110
|
+
return e.splice(t, 1), a(e), {
|
|
111
|
+
message: `Deleted todo: "${n.text}"`,
|
|
112
|
+
data: { items: e },
|
|
113
|
+
jsonData: {
|
|
114
|
+
deleted: n.text,
|
|
115
|
+
totalItems: e.length
|
|
116
|
+
},
|
|
117
|
+
instructions: `Confirm to the user that "${n.text}" has been removed from their todo list.`,
|
|
118
|
+
updating: !0
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
case "clear_completed": {
|
|
122
|
+
let t = e.filter((e) => e.completed), n = e.filter((e) => !e.completed);
|
|
123
|
+
return t.length === 0 ? {
|
|
124
|
+
message: "No completed items to clear",
|
|
125
|
+
data: { items: e },
|
|
126
|
+
jsonData: { totalItems: e.length },
|
|
127
|
+
instructions: "Tell the user that there are no completed items to clear.",
|
|
128
|
+
updating: !0
|
|
129
|
+
} : (a(n), {
|
|
130
|
+
message: `Cleared ${t.length} completed item${t.length === 1 ? "" : "s"}`,
|
|
131
|
+
data: { items: n },
|
|
132
|
+
jsonData: {
|
|
133
|
+
clearedCount: t.length,
|
|
134
|
+
totalItems: n.length
|
|
135
|
+
},
|
|
136
|
+
instructions: `Confirm to the user that ${t.length} completed item${t.length === 1 ? " has" : "s have"} been removed from their todo list.`,
|
|
137
|
+
updating: !0
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
case "update": {
|
|
141
|
+
if (!r || typeof r != "string") return {
|
|
142
|
+
message: "Cannot update todo: text is required to identify the item",
|
|
143
|
+
data: { items: e },
|
|
144
|
+
instructions: "Tell the user which todo item they want to update.",
|
|
145
|
+
updating: !0
|
|
146
|
+
};
|
|
147
|
+
if (!o || typeof o != "string" || o.trim() === "") return {
|
|
148
|
+
message: "Cannot update todo: newText is required",
|
|
149
|
+
data: { items: e },
|
|
150
|
+
instructions: "Tell the user what the new text should be for the todo item.",
|
|
151
|
+
updating: !0
|
|
152
|
+
};
|
|
153
|
+
let t = e.find((e) => e.text.toLowerCase() === r.toLowerCase());
|
|
154
|
+
if (!t) return {
|
|
155
|
+
message: `Todo item not found: "${r}"`,
|
|
156
|
+
data: { items: e },
|
|
157
|
+
jsonData: { availableItems: e.map((e) => e.text) },
|
|
158
|
+
instructions: `Tell the user that "${r}" was not found in the todo list. Show them the current items if helpful.`,
|
|
159
|
+
updating: !0
|
|
160
|
+
};
|
|
161
|
+
let n = t.text;
|
|
162
|
+
return t.text = o.trim(), a(e), {
|
|
163
|
+
message: `Updated todo from "${n}" to "${t.text}"`,
|
|
164
|
+
data: { items: e },
|
|
165
|
+
jsonData: {
|
|
166
|
+
oldText: n,
|
|
167
|
+
newText: t.text,
|
|
168
|
+
totalItems: e.length
|
|
169
|
+
},
|
|
170
|
+
instructions: `Confirm to the user that the todo item has been updated from "${n}" to "${t.text}".`,
|
|
171
|
+
updating: !0
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
case "check": {
|
|
175
|
+
if (!r || typeof r != "string") return {
|
|
176
|
+
message: "Cannot check todo: text is required to identify the item",
|
|
177
|
+
data: { items: e },
|
|
178
|
+
instructions: "Tell the user which todo item they want to mark as completed.",
|
|
179
|
+
updating: !0
|
|
180
|
+
};
|
|
181
|
+
let t = e.find((e) => e.text.toLowerCase() === r.toLowerCase());
|
|
182
|
+
return t ? t.completed ? {
|
|
183
|
+
message: `Todo item "${t.text}" is already completed`,
|
|
184
|
+
data: { items: e },
|
|
185
|
+
instructions: `Tell the user that "${t.text}" is already marked as completed.`,
|
|
186
|
+
updating: !0
|
|
187
|
+
} : (t.completed = !0, a(e), {
|
|
188
|
+
message: `Checked todo: "${t.text}"`,
|
|
189
|
+
data: { items: e },
|
|
190
|
+
jsonData: {
|
|
191
|
+
checkedItem: t.text,
|
|
192
|
+
totalItems: e.length,
|
|
193
|
+
completedItems: e.filter((e) => e.completed).length
|
|
194
|
+
},
|
|
195
|
+
instructions: `Confirm to the user that "${t.text}" has been marked as completed.`,
|
|
196
|
+
updating: !0
|
|
197
|
+
}) : {
|
|
198
|
+
message: `Todo item not found: "${r}"`,
|
|
199
|
+
data: { items: e },
|
|
200
|
+
jsonData: { availableItems: e.map((e) => e.text) },
|
|
201
|
+
instructions: `Tell the user that "${r}" was not found in the todo list. Show them the current items if helpful.`,
|
|
202
|
+
updating: !0
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
case "uncheck": {
|
|
206
|
+
if (!r || typeof r != "string") return {
|
|
207
|
+
message: "Cannot uncheck todo: text is required to identify the item",
|
|
208
|
+
data: { items: e },
|
|
209
|
+
instructions: "Tell the user which todo item they want to mark as not completed.",
|
|
210
|
+
updating: !0
|
|
211
|
+
};
|
|
212
|
+
let t = e.find((e) => e.text.toLowerCase() === r.toLowerCase());
|
|
213
|
+
return t ? t.completed ? (t.completed = !1, a(e), {
|
|
214
|
+
message: `Unchecked todo: "${t.text}"`,
|
|
215
|
+
data: { items: e },
|
|
216
|
+
jsonData: {
|
|
217
|
+
uncheckedItem: t.text,
|
|
218
|
+
totalItems: e.length,
|
|
219
|
+
completedItems: e.filter((e) => e.completed).length
|
|
220
|
+
},
|
|
221
|
+
instructions: `Confirm to the user that "${t.text}" has been marked as not completed.`,
|
|
222
|
+
updating: !0
|
|
223
|
+
}) : {
|
|
224
|
+
message: `Todo item "${t.text}" is already not completed`,
|
|
225
|
+
data: { items: e },
|
|
226
|
+
instructions: `Tell the user that "${t.text}" is already marked as not completed.`,
|
|
227
|
+
updating: !0
|
|
228
|
+
} : {
|
|
229
|
+
message: `Todo item not found: "${r}"`,
|
|
230
|
+
data: { items: e },
|
|
231
|
+
jsonData: { availableItems: e.map((e) => e.text) },
|
|
232
|
+
instructions: `Tell the user that "${r}" was not found in the todo list. Show them the current items if helpful.`,
|
|
233
|
+
updating: !0
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
default: return {
|
|
237
|
+
message: `Unknown action: ${n}`,
|
|
238
|
+
data: { items: e },
|
|
239
|
+
instructions: "Tell the user that the action was not recognized. Valid actions are: show, add, delete, clear_completed, update, check, uncheck.",
|
|
240
|
+
updating: !0
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
} catch (e) {
|
|
244
|
+
return console.error("ERR: exception in manageTodoList", e), {
|
|
245
|
+
message: `Todo list error: ${e instanceof Error ? e.message : "Unknown error"}`,
|
|
246
|
+
data: { items: [] },
|
|
247
|
+
instructions: "Acknowledge that there was an error managing the todo list."
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
}, s = {
|
|
251
|
+
toolDefinition: t,
|
|
252
|
+
execute: o,
|
|
253
|
+
generatingMessage: "Managing todo list...",
|
|
254
|
+
isEnabled: () => !0,
|
|
255
|
+
systemPrompt: n
|
|
256
|
+
}, c = [
|
|
257
|
+
{
|
|
258
|
+
name: "Show List",
|
|
259
|
+
args: { action: "show" }
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
name: "Add Item",
|
|
263
|
+
args: {
|
|
264
|
+
action: "add",
|
|
265
|
+
text: "Buy groceries"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
name: "Check Item",
|
|
270
|
+
args: {
|
|
271
|
+
action: "check",
|
|
272
|
+
text: "Buy groceries"
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
];
|
|
276
|
+
//#endregion
|
|
277
|
+
export { t as a, n as i, o as n, e as o, s as r, c as t };
|
package/dist/style.css
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-green-500:oklch(72.3% .219 149.579);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-700:oklch(45.7% .24 277.023);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.contents{display:contents}.flex{display:flex}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-96{height:calc(var(--spacing)*96)}.h-full{height:100%}.max-h-20{max-height:calc(var(--spacing)*20)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[200px\]{max-width:200px}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.cursor-pointer{cursor:pointer}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-indigo-200{border-color:var(--color-indigo-200)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-white{background-color:var(--color-white)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-2{padding-block:calc(var(--spacing)*2)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-4{padding-top:calc(var(--spacing)*4)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.break-words{overflow-wrap:break-word}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-500{color:var(--color-green-500)}.text-indigo-700{color:var(--color-indigo-700)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-indigo-200:hover{background-color:var(--color-indigo-200)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}@media(prefers-color-scheme:dark){.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|
|
1
|
+
/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-green-500:oklch(72.3% .219 149.579);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-700:oklch(45.7% .24 277.023);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.contents{display:contents}.flex{display:flex}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-96{height:calc(var(--spacing) * 96)}.h-full{height:100%}.max-h-20{max-height:calc(var(--spacing) * 20)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[200px\]{max-width:200px}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.cursor-pointer{cursor:pointer}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-indigo-200{border-color:var(--color-indigo-200)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-white{background-color:var(--color-white)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.break-words{overflow-wrap:break-word}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-500{color:var(--color-green-500)}.text-indigo-700{color:var(--color-indigo-700)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-indigo-200:hover{background-color:var(--color-indigo-200)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|
|
3
|
+
/*$vite$:1*/
|
package/dist/vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./samples-CtUOrJ2M.cjs`);let t=require(`vue`);var n={class:`w-full h-full overflow-y-auto bg-white`},r={class:`max-w-2xl mx-auto p-6`},i={class:`mb-6`},a={class:`text-sm text-gray-600`},o={key:0,class:`text-center py-12`},s={key:1,class:`space-y-2`},c=[`checked`,`onChange`],l={class:`flex-1 min-w-0`},u={class:`text-xs text-gray-500 mt-1`},d=[`onClick`],f={key:2,class:`mt-6 pt-4 border-t border-gray-200`},p=`mulmo_todo_list`,m=(0,t.defineComponent)({__name:`View`,props:{selectedResult:{}},setup(e){let m=e,h=(0,t.ref)([...m.selectedResult.data?.items||[]]);(0,t.watch)(()=>m.selectedResult.data?.items,e=>{e&&(h.value=[...e])},{deep:!0});let g=(0,t.computed)(()=>h.value.length),_=(0,t.computed)(()=>h.value.filter(e=>e.completed).length);function v(e){try{localStorage.setItem(p,JSON.stringify(e))}catch(e){console.error(`Error saving todos:`,e)}}function y(e){let t=h.value.find(t=>t.id===e);t&&(t.completed=!t.completed,v(h.value))}function b(e){h.value=h.value.filter(t=>t.id!==e),v(h.value)}function x(){h.value=h.value.filter(e=>!e.completed),v(h.value)}function S(e){let t=new Date(e),n=new Date().getTime()-t.getTime(),r=Math.floor(n/6e4),i=Math.floor(n/36e5),a=Math.floor(n/864e5);return r<1?`just now`:r<60?`${r} min${r===1?``:`s`} ago`:i<24?`${i} hour${i===1?``:`s`} ago`:a<7?`${a} day${a===1?``:`s`} ago`:t.toLocaleDateString()}return(e,p)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,n,[(0,t.createElementVNode)(`div`,r,[(0,t.createElementVNode)(`div`,i,[p[0]||=(0,t.createElementVNode)(`h2`,{class:`text-2xl font-bold text-gray-800 mb-2`},`Todo List`,-1),(0,t.createElementVNode)(`div`,a,[(0,t.createElementVNode)(`span`,null,(0,t.toDisplayString)(_.value)+` of `+(0,t.toDisplayString)(g.value)+` completed`,1)])]),h.value.length===0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,o,[...p[1]||=[(0,t.createElementVNode)(`div`,{class:`text-gray-400 text-lg`},`No todo items yet`,-1),(0,t.createElementVNode)(`div`,{class:`text-gray-500 text-sm mt-2`},` Ask the assistant to add some tasks! `,-1)]])):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,s,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(h.value,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.id,class:`group flex items-start gap-3 p-4 bg-gray-100 rounded-lg hover:bg-gray-200 transition-colors`},[(0,t.createElementVNode)(`input`,{type:`checkbox`,checked:e.completed,onChange:t=>y(e.id),class:`mt-1 h-5 w-5 rounded border-gray-300 text-blue-600 focus:ring-blue-500 focus:ring-offset-0 cursor-pointer`},null,40,c),(0,t.createElementVNode)(`div`,l,[(0,t.createElementVNode)(`p`,{class:(0,t.normalizeClass)([`break-words`,e.completed?`line-through text-gray-500`:`text-gray-800`])},(0,t.toDisplayString)(e.text),3),(0,t.createElementVNode)(`p`,u,(0,t.toDisplayString)(S(e.createdAt)),1)]),(0,t.createElementVNode)(`button`,{onClick:t=>b(e.id),class:`opacity-0 group-hover:opacity-100 text-red-500 hover:text-red-700 transition-opacity p-1`,title:`Delete item`},[...p[2]||=[(0,t.createElementVNode)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,class:`h-5 w-5`,viewBox:`0 0 20 20`,fill:`currentColor`},[(0,t.createElementVNode)(`path`,{"fill-rule":`evenodd`,d:`M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z`,"clip-rule":`evenodd`})],-1)]],8,d)]))),128))])),_.value>0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,f,[(0,t.createElementVNode)(`button`,{onClick:x,class:`text-sm text-gray-600 hover:text-red-600 transition-colors`},` Clear completed items `)])):(0,t.createCommentVNode)(``,!0)])]))}}),h={class:`p-2 bg-gray-50 dark:bg-gray-800 rounded`},g={class:`text-xs text-gray-600 dark:text-gray-400`},_={key:0},v={key:1},y={class:`mb-1`},b={class:`space-y-1 max-h-20 overflow-y-auto`},x={key:0,class:`text-green-500`},S={key:1,class:`text-gray-400`},C={key:0,class:`text-gray-500 italic`},w=(0,t.defineComponent)({__name:`Preview`,props:{result:{}},setup(e){let n=e,r=(0,t.computed)(()=>n.result.data?.items||[]),i=(0,t.computed)(()=>r.value.length),a=(0,t.computed)(()=>r.value.filter(e=>e.completed).length);return(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,h,[n[0]||=(0,t.createStaticVNode)(`<div class="flex items-center gap-2 mb-2"><svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-blue-600 dark:text-blue-400" viewBox="0 0 20 20" fill="currentColor"><path d="M9 2a1 1 0 000 2h2a1 1 0 100-2H9z"></path><path fill-rule="evenodd" d="M4 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v11a2 2 0 01-2 2H6a2 2 0 01-2-2V5zm3 4a1 1 0 000 2h.01a1 1 0 100-2H7zm3 0a1 1 0 000 2h3a1 1 0 100-2h-3zm-3 4a1 1 0 100 2h.01a1 1 0 100-2H7zm3 0a1 1 0 100 2h3a1 1 0 100-2h-3z" clip-rule="evenodd"></path></svg><span class="text-sm font-medium text-gray-700 dark:text-gray-300"> Todo List </span></div>`,1),(0,t.createElementVNode)(`div`,g,[r.value.length===0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,_,`No items`)):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,v,[(0,t.createElementVNode)(`div`,y,(0,t.toDisplayString)(a.value)+`/`+(0,t.toDisplayString)(i.value)+` completed`,1),(0,t.createElementVNode)(`div`,b,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(r.value.slice(0,3),e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.id,class:`flex items-start gap-1 text-xs`},[e.completed?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,x,`✓`)):((0,t.openBlock)(),(0,t.createElementBlock)(`span`,S,`○`)),(0,t.createElementVNode)(`span`,{class:(0,t.normalizeClass)([`flex-1 truncate`,e.completed?`line-through text-gray-500`:`text-white`])},(0,t.toDisplayString)(e.text),3)]))),128)),r.value.length>3?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,C,` +`+(0,t.toDisplayString)(r.value.length-3)+` more... `,1)):(0,t.createCommentVNode)(``,!0)])]))])]))}}),T={...e.r,viewComponent:m,previewComponent:w,samples:e.t},E={plugin:T};exports.Preview=w,exports.SYSTEM_PROMPT=e.i,exports.TOOL_DEFINITION=e.a,exports.TOOL_NAME=e.o,exports.View=m,exports.default=E,exports.executeTodo=e.n,exports.plugin=T,exports.pluginCore=e.r,exports.samples=e.t;
|
package/dist/vue.js
CHANGED
|
@@ -1,170 +1,103 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
},
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
},
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
onClick: $,
|
|
105
|
-
class: "text-sm text-gray-600 hover:text-red-600 transition-colors"
|
|
106
|
-
}, " Clear completed items ")
|
|
107
|
-
])) : w("", !0)
|
|
108
|
-
])
|
|
109
|
-
]));
|
|
110
|
-
}
|
|
111
|
-
}), G = { class: "p-2 bg-gray-50 dark:bg-gray-800 rounded" }, J = { class: "text-xs text-gray-600 dark:text-gray-400" }, K = { key: 0 }, q = { key: 1 }, Q = { class: "mb-1" }, U = { class: "space-y-1 max-h-20 overflow-y-auto" }, W = {
|
|
112
|
-
key: 0,
|
|
113
|
-
class: "text-green-500"
|
|
114
|
-
}, X = {
|
|
115
|
-
key: 1,
|
|
116
|
-
class: "text-gray-400"
|
|
117
|
-
}, Z = {
|
|
118
|
-
key: 0,
|
|
119
|
-
class: "text-gray-500 italic"
|
|
120
|
-
}, tt = /* @__PURE__ */ y({
|
|
121
|
-
__name: "Preview",
|
|
122
|
-
props: {
|
|
123
|
-
result: {}
|
|
124
|
-
},
|
|
125
|
-
setup(h) {
|
|
126
|
-
const p = h, t = u(() => p.result.data?.items || []), x = u(() => t.value.length), m = u(
|
|
127
|
-
() => t.value.filter((i) => i.completed).length
|
|
128
|
-
);
|
|
129
|
-
return (i, v) => (l(), a("div", G, [
|
|
130
|
-
v[0] || (v[0] = D('<div class="flex items-center gap-2 mb-2"><svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-blue-600 dark:text-blue-400" viewBox="0 0 20 20" fill="currentColor"><path d="M9 2a1 1 0 000 2h2a1 1 0 100-2H9z"></path><path fill-rule="evenodd" d="M4 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v11a2 2 0 01-2 2H6a2 2 0 01-2-2V5zm3 4a1 1 0 000 2h.01a1 1 0 100-2H7zm3 0a1 1 0 000 2h3a1 1 0 100-2h-3zm-3 4a1 1 0 100 2h.01a1 1 0 100-2H7zm3 0a1 1 0 100 2h3a1 1 0 100-2h-3z" clip-rule="evenodd"></path></svg><span class="text-sm font-medium text-gray-700 dark:text-gray-300"> Todo List </span></div>', 1)),
|
|
131
|
-
e("div", J, [
|
|
132
|
-
t.value.length === 0 ? (l(), a("div", K, "No items")) : (l(), a("div", q, [
|
|
133
|
-
e("div", Q, r(m.value) + "/" + r(x.value) + " completed", 1),
|
|
134
|
-
e("div", U, [
|
|
135
|
-
(l(!0), a(k, null, b(t.value.slice(0, 3), (c) => (l(), a("div", {
|
|
136
|
-
key: c.id,
|
|
137
|
-
class: "flex items-start gap-1 text-xs"
|
|
138
|
-
}, [
|
|
139
|
-
c.completed ? (l(), a("span", W, "✓")) : (l(), a("span", X, "○")),
|
|
140
|
-
e("span", {
|
|
141
|
-
class: C([
|
|
142
|
-
"flex-1 truncate",
|
|
143
|
-
c.completed ? "line-through text-gray-500" : "text-white"
|
|
144
|
-
])
|
|
145
|
-
}, r(c.text), 3)
|
|
146
|
-
]))), 128)),
|
|
147
|
-
t.value.length > 3 ? (l(), a("div", Z, " +" + r(t.value.length - 3) + " more... ", 1)) : w("", !0)
|
|
148
|
-
])
|
|
149
|
-
]))
|
|
150
|
-
])
|
|
151
|
-
]));
|
|
152
|
-
}
|
|
153
|
-
}), et = {
|
|
154
|
-
...z,
|
|
155
|
-
viewComponent: j,
|
|
156
|
-
previewComponent: tt,
|
|
157
|
-
samples: T
|
|
158
|
-
}, at = { plugin: et };
|
|
159
|
-
export {
|
|
160
|
-
tt as Preview,
|
|
161
|
-
rt as SYSTEM_PROMPT,
|
|
162
|
-
it as TOOL_DEFINITION,
|
|
163
|
-
ct as TOOL_NAME,
|
|
164
|
-
j as View,
|
|
165
|
-
at as default,
|
|
166
|
-
dt as executeTodo,
|
|
167
|
-
et as plugin,
|
|
168
|
-
z as pluginCore,
|
|
169
|
-
T as samples
|
|
170
|
-
};
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, t as a } from "./samples-DlP-gB3b.js";
|
|
2
|
+
import { Fragment as o, computed as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createStaticVNode as d, defineComponent as f, normalizeClass as p, openBlock as m, ref as h, renderList as g, toDisplayString as _, watch as v } from "vue";
|
|
3
|
+
//#region src/vue/View.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var y = { class: "w-full h-full overflow-y-auto bg-white" }, b = { class: "max-w-2xl mx-auto p-6" }, x = { class: "mb-6" }, S = { class: "text-sm text-gray-600" }, C = {
|
|
5
|
+
key: 0,
|
|
6
|
+
class: "text-center py-12"
|
|
7
|
+
}, w = {
|
|
8
|
+
key: 1,
|
|
9
|
+
class: "space-y-2"
|
|
10
|
+
}, T = ["checked", "onChange"], E = { class: "flex-1 min-w-0" }, D = { class: "text-xs text-gray-500 mt-1" }, O = ["onClick"], k = {
|
|
11
|
+
key: 2,
|
|
12
|
+
class: "mt-6 pt-4 border-t border-gray-200"
|
|
13
|
+
}, A = "mulmo_todo_list", j = /* @__PURE__ */ f({
|
|
14
|
+
__name: "View",
|
|
15
|
+
props: { selectedResult: {} },
|
|
16
|
+
setup(e) {
|
|
17
|
+
let t = e, n = h([...t.selectedResult.data?.items || []]);
|
|
18
|
+
v(() => t.selectedResult.data?.items, (e) => {
|
|
19
|
+
e && (n.value = [...e]);
|
|
20
|
+
}, { deep: !0 });
|
|
21
|
+
let r = s(() => n.value.length), i = s(() => n.value.filter((e) => e.completed).length);
|
|
22
|
+
function a(e) {
|
|
23
|
+
try {
|
|
24
|
+
localStorage.setItem(A, JSON.stringify(e));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
console.error("Error saving todos:", e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function d(e) {
|
|
30
|
+
let t = n.value.find((t) => t.id === e);
|
|
31
|
+
t && (t.completed = !t.completed, a(n.value));
|
|
32
|
+
}
|
|
33
|
+
function f(e) {
|
|
34
|
+
n.value = n.value.filter((t) => t.id !== e), a(n.value);
|
|
35
|
+
}
|
|
36
|
+
function j() {
|
|
37
|
+
n.value = n.value.filter((e) => !e.completed), a(n.value);
|
|
38
|
+
}
|
|
39
|
+
function M(e) {
|
|
40
|
+
let t = new Date(e), n = (/* @__PURE__ */ new Date()).getTime() - t.getTime(), r = Math.floor(n / 6e4), i = Math.floor(n / 36e5), a = Math.floor(n / 864e5);
|
|
41
|
+
return r < 1 ? "just now" : r < 60 ? `${r} min${r === 1 ? "" : "s"} ago` : i < 24 ? `${i} hour${i === 1 ? "" : "s"} ago` : a < 7 ? `${a} day${a === 1 ? "" : "s"} ago` : t.toLocaleDateString();
|
|
42
|
+
}
|
|
43
|
+
return (e, t) => (m(), l("div", y, [u("div", b, [
|
|
44
|
+
u("div", x, [t[0] ||= u("h2", { class: "text-2xl font-bold text-gray-800 mb-2" }, "Todo List", -1), u("div", S, [u("span", null, _(i.value) + " of " + _(r.value) + " completed", 1)])]),
|
|
45
|
+
n.value.length === 0 ? (m(), l("div", C, [...t[1] ||= [u("div", { class: "text-gray-400 text-lg" }, "No todo items yet", -1), u("div", { class: "text-gray-500 text-sm mt-2" }, " Ask the assistant to add some tasks! ", -1)]])) : (m(), l("div", w, [(m(!0), l(o, null, g(n.value, (e) => (m(), l("div", {
|
|
46
|
+
key: e.id,
|
|
47
|
+
class: "group flex items-start gap-3 p-4 bg-gray-100 rounded-lg hover:bg-gray-200 transition-colors"
|
|
48
|
+
}, [
|
|
49
|
+
u("input", {
|
|
50
|
+
type: "checkbox",
|
|
51
|
+
checked: e.completed,
|
|
52
|
+
onChange: (t) => d(e.id),
|
|
53
|
+
class: "mt-1 h-5 w-5 rounded border-gray-300 text-blue-600 focus:ring-blue-500 focus:ring-offset-0 cursor-pointer"
|
|
54
|
+
}, null, 40, T),
|
|
55
|
+
u("div", E, [u("p", { class: p(["break-words", e.completed ? "line-through text-gray-500" : "text-gray-800"]) }, _(e.text), 3), u("p", D, _(M(e.createdAt)), 1)]),
|
|
56
|
+
u("button", {
|
|
57
|
+
onClick: (t) => f(e.id),
|
|
58
|
+
class: "opacity-0 group-hover:opacity-100 text-red-500 hover:text-red-700 transition-opacity p-1",
|
|
59
|
+
title: "Delete item"
|
|
60
|
+
}, [...t[2] ||= [u("svg", {
|
|
61
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
62
|
+
class: "h-5 w-5",
|
|
63
|
+
viewBox: "0 0 20 20",
|
|
64
|
+
fill: "currentColor"
|
|
65
|
+
}, [u("path", {
|
|
66
|
+
"fill-rule": "evenodd",
|
|
67
|
+
d: "M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z",
|
|
68
|
+
"clip-rule": "evenodd"
|
|
69
|
+
})], -1)]], 8, O)
|
|
70
|
+
]))), 128))])),
|
|
71
|
+
i.value > 0 ? (m(), l("div", k, [u("button", {
|
|
72
|
+
onClick: j,
|
|
73
|
+
class: "text-sm text-gray-600 hover:text-red-600 transition-colors"
|
|
74
|
+
}, " Clear completed items ")])) : c("", !0)
|
|
75
|
+
])]));
|
|
76
|
+
}
|
|
77
|
+
}), M = { class: "p-2 bg-gray-50 dark:bg-gray-800 rounded" }, N = { class: "text-xs text-gray-600 dark:text-gray-400" }, P = { key: 0 }, F = { key: 1 }, I = { class: "mb-1" }, L = { class: "space-y-1 max-h-20 overflow-y-auto" }, R = {
|
|
78
|
+
key: 0,
|
|
79
|
+
class: "text-green-500"
|
|
80
|
+
}, z = {
|
|
81
|
+
key: 1,
|
|
82
|
+
class: "text-gray-400"
|
|
83
|
+
}, B = {
|
|
84
|
+
key: 0,
|
|
85
|
+
class: "text-gray-500 italic"
|
|
86
|
+
}, V = /* @__PURE__ */ f({
|
|
87
|
+
__name: "Preview",
|
|
88
|
+
props: { result: {} },
|
|
89
|
+
setup(e) {
|
|
90
|
+
let t = e, n = s(() => t.result.data?.items || []), r = s(() => n.value.length), i = s(() => n.value.filter((e) => e.completed).length);
|
|
91
|
+
return (e, t) => (m(), l("div", M, [t[0] ||= d("<div class=\"flex items-center gap-2 mb-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-4 w-4 text-blue-600 dark:text-blue-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path d=\"M9 2a1 1 0 000 2h2a1 1 0 100-2H9z\"></path><path fill-rule=\"evenodd\" d=\"M4 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v11a2 2 0 01-2 2H6a2 2 0 01-2-2V5zm3 4a1 1 0 000 2h.01a1 1 0 100-2H7zm3 0a1 1 0 000 2h3a1 1 0 100-2h-3zm-3 4a1 1 0 100 2h.01a1 1 0 100-2H7zm3 0a1 1 0 100 2h3a1 1 0 100-2h-3z\" clip-rule=\"evenodd\"></path></svg><span class=\"text-sm font-medium text-gray-700 dark:text-gray-300\"> Todo List </span></div>", 1), u("div", N, [n.value.length === 0 ? (m(), l("div", P, "No items")) : (m(), l("div", F, [u("div", I, _(i.value) + "/" + _(r.value) + " completed", 1), u("div", L, [(m(!0), l(o, null, g(n.value.slice(0, 3), (e) => (m(), l("div", {
|
|
92
|
+
key: e.id,
|
|
93
|
+
class: "flex items-start gap-1 text-xs"
|
|
94
|
+
}, [e.completed ? (m(), l("span", R, "✓")) : (m(), l("span", z, "○")), u("span", { class: p(["flex-1 truncate", e.completed ? "line-through text-gray-500" : "text-white"]) }, _(e.text), 3)]))), 128)), n.value.length > 3 ? (m(), l("div", B, " +" + _(n.value.length - 3) + " more... ", 1)) : c("", !0)])]))])]));
|
|
95
|
+
}
|
|
96
|
+
}), H = {
|
|
97
|
+
...i,
|
|
98
|
+
viewComponent: j,
|
|
99
|
+
previewComponent: V,
|
|
100
|
+
samples: a
|
|
101
|
+
}, U = { plugin: H };
|
|
102
|
+
//#endregion
|
|
103
|
+
export { V as Preview, t as SYSTEM_PROMPT, e as TOOL_DEFINITION, r as TOOL_NAME, j as View, U as default, n as executeTodo, H as plugin, i as pluginCore, a as samples };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gui-chat-plugin/todo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Todo list plugin for GUIChat",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -37,22 +37,24 @@
|
|
|
37
37
|
"vue": "^3.5.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"gui-chat-protocol": "^0.0
|
|
40
|
+
"gui-chat-protocol": "^0.1.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@
|
|
44
|
-
"@
|
|
45
|
-
"@typescript-eslint/
|
|
46
|
-
"@
|
|
47
|
-
"
|
|
48
|
-
"eslint
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"vue
|
|
43
|
+
"@eslint/js": "^10.0.1",
|
|
44
|
+
"@tailwindcss/vite": "^4.2.2",
|
|
45
|
+
"@typescript-eslint/eslint-plugin": "^8.58.0",
|
|
46
|
+
"@typescript-eslint/parser": "^8.58.0",
|
|
47
|
+
"@vitejs/plugin-vue": "^6.0.5",
|
|
48
|
+
"eslint": "^10.1.0",
|
|
49
|
+
"eslint-plugin-vue": "^10.8.0",
|
|
50
|
+
"globals": "^17.4.0",
|
|
51
|
+
"gui-chat-protocol": "^0.1.0",
|
|
52
|
+
"tailwindcss": "^4.2.2",
|
|
53
|
+
"typescript": "~6.0.2",
|
|
54
|
+
"vite": "^8.0.3",
|
|
55
|
+
"vue": "^3.5.31",
|
|
56
|
+
"vue-eslint-parser": "^10.4.0",
|
|
57
|
+
"vue-tsc": "^3.2.6"
|
|
56
58
|
},
|
|
57
59
|
"keywords": [
|
|
58
60
|
"guichat",
|