@xiaozhi-client/datetime-mcp 1.10.8-beta.7 → 1.10.8-beta.8

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/index.js ADDED
@@ -0,0 +1,307 @@
1
+ // src/index.ts
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { z } from "zod";
5
+ var logger = {
6
+ info: (message) => {
7
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
8
+ console.error(`${timestamp} - DateTime - INFO - ${message}`);
9
+ },
10
+ error: (message) => {
11
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
12
+ console.error(`${timestamp} - DateTime - ERROR - ${message}`);
13
+ }
14
+ };
15
+ function getErrorMessage(error) {
16
+ if (error instanceof Error) {
17
+ return error.message;
18
+ }
19
+ return String(error);
20
+ }
21
+ var server = new McpServer({
22
+ name: "@xiaozhi-client/datetime-mcp",
23
+ version: "1.0.0"
24
+ });
25
+ server.tool(
26
+ "get_current_time",
27
+ "\u83B7\u53D6\u5F53\u524D\u65F6\u95F4\uFF0C\u652F\u6301\u591A\u79CD\u683C\u5F0F",
28
+ {
29
+ format: z.string().optional().describe("\u65F6\u95F4\u683C\u5F0F\uFF1A'iso'\uFF08\u9ED8\u8BA4\uFF09\u3001'timestamp'\u3001'locale'\u3001'time-only'")
30
+ },
31
+ async ({ format = "iso" }) => {
32
+ try {
33
+ const now = /* @__PURE__ */ new Date();
34
+ let result;
35
+ switch (format) {
36
+ case "timestamp":
37
+ result = now.getTime();
38
+ break;
39
+ case "locale":
40
+ result = now.toLocaleString();
41
+ break;
42
+ case "time-only":
43
+ result = now.toLocaleTimeString();
44
+ break;
45
+ default:
46
+ result = now.toISOString();
47
+ break;
48
+ }
49
+ logger.info(`\u83B7\u53D6\u5F53\u524D\u65F6\u95F4\uFF0C\u683C\u5F0F\uFF1A${format}\uFF0C\u7ED3\u679C\uFF1A${result}`);
50
+ return {
51
+ content: [
52
+ {
53
+ type: "text",
54
+ text: JSON.stringify({
55
+ success: true,
56
+ result,
57
+ format
58
+ })
59
+ }
60
+ ]
61
+ };
62
+ } catch (error) {
63
+ logger.error(`\u83B7\u53D6\u5F53\u524D\u65F6\u95F4\u9519\u8BEF\uFF1A${getErrorMessage(error)}`);
64
+ return {
65
+ content: [
66
+ {
67
+ type: "text",
68
+ text: JSON.stringify({
69
+ success: false,
70
+ error: getErrorMessage(error)
71
+ })
72
+ }
73
+ ],
74
+ isError: true
75
+ };
76
+ }
77
+ }
78
+ );
79
+ server.tool(
80
+ "get_current_date",
81
+ "\u83B7\u53D6\u5F53\u524D\u65E5\u671F\uFF0C\u652F\u6301\u591A\u79CD\u683C\u5F0F",
82
+ {
83
+ format: z.string().optional().describe("\u65E5\u671F\u683C\u5F0F\uFF1A'iso'\uFF08\u9ED8\u8BA4\uFF09\u3001'locale'\u3001'date-only'\u3001'yyyy-mm-dd'")
84
+ },
85
+ async ({ format = "iso" }) => {
86
+ try {
87
+ const now = /* @__PURE__ */ new Date();
88
+ let result;
89
+ switch (format) {
90
+ case "locale":
91
+ result = now.toLocaleDateString();
92
+ break;
93
+ case "date-only":
94
+ result = now.toDateString();
95
+ break;
96
+ case "yyyy-mm-dd":
97
+ result = now.toISOString().split("T")[0];
98
+ break;
99
+ default:
100
+ result = now.toISOString();
101
+ break;
102
+ }
103
+ logger.info(`\u83B7\u53D6\u5F53\u524D\u65E5\u671F\uFF0C\u683C\u5F0F\uFF1A${format}\uFF0C\u7ED3\u679C\uFF1A${result}`);
104
+ return {
105
+ content: [
106
+ {
107
+ type: "text",
108
+ text: JSON.stringify({
109
+ success: true,
110
+ result,
111
+ format
112
+ })
113
+ }
114
+ ]
115
+ };
116
+ } catch (error) {
117
+ logger.error(`\u83B7\u53D6\u5F53\u524D\u65E5\u671F\u9519\u8BEF\uFF1A${getErrorMessage(error)}`);
118
+ return {
119
+ content: [
120
+ {
121
+ type: "text",
122
+ text: JSON.stringify({
123
+ success: false,
124
+ error: getErrorMessage(error)
125
+ })
126
+ }
127
+ ],
128
+ isError: true
129
+ };
130
+ }
131
+ }
132
+ );
133
+ server.tool(
134
+ "format_datetime",
135
+ "\u5C06\u7ED9\u5B9A\u7684\u65E5\u671F\u65F6\u95F4\u5B57\u7B26\u4E32\u6216\u65F6\u95F4\u6233\u683C\u5F0F\u5316\u4E3A\u6307\u5B9A\u683C\u5F0F",
136
+ {
137
+ datetime: z.string().describe("\u8981\u683C\u5F0F\u5316\u7684\u65E5\u671F\u65F6\u95F4\u5B57\u7B26\u4E32\u6216\u65F6\u95F4\u6233"),
138
+ format: z.string().optional().describe(
139
+ "\u8F93\u51FA\u683C\u5F0F\uFF1A'iso'\u3001'locale'\u3001'timestamp'\u3001'yyyy-mm-dd'\u3001'custom'"
140
+ ),
141
+ custom_format: z.string().optional().describe("\u81EA\u5B9A\u4E49\u683C\u5F0F\u5B57\u7B26\u4E32\uFF08\u5F53 format \u4E3A 'custom' \u65F6\u4F7F\u7528\uFF09")
142
+ },
143
+ async ({ datetime, format = "iso", custom_format }) => {
144
+ try {
145
+ let date;
146
+ if (!Number.isNaN(Number(datetime))) {
147
+ date = new Date(Number(datetime));
148
+ } else {
149
+ date = new Date(datetime);
150
+ }
151
+ if (Number.isNaN(date.getTime())) {
152
+ throw new Error("\u65E0\u6548\u7684\u65E5\u671F\u65F6\u95F4\u683C\u5F0F");
153
+ }
154
+ let result;
155
+ switch (format) {
156
+ case "timestamp":
157
+ result = date.getTime();
158
+ break;
159
+ case "locale":
160
+ result = date.toLocaleString();
161
+ break;
162
+ case "yyyy-mm-dd":
163
+ result = date.toISOString().split("T")[0];
164
+ break;
165
+ case "custom":
166
+ if (custom_format) {
167
+ result = custom_format.replace("YYYY", String(date.getFullYear())).replace("MM", String(date.getMonth() + 1).padStart(2, "0")).replace("DD", String(date.getDate()).padStart(2, "0")).replace("HH", String(date.getHours()).padStart(2, "0")).replace("mm", String(date.getMinutes()).padStart(2, "0")).replace("ss", String(date.getSeconds()).padStart(2, "0"));
168
+ } else {
169
+ result = date.toISOString();
170
+ }
171
+ break;
172
+ default:
173
+ result = date.toISOString();
174
+ break;
175
+ }
176
+ logger.info(
177
+ `\u683C\u5F0F\u5316\u65E5\u671F\u65F6\u95F4\uFF1A${datetime} \u4E3A\u683C\u5F0F\uFF1A${format}\uFF0C\u7ED3\u679C\uFF1A${result}`
178
+ );
179
+ return {
180
+ content: [
181
+ {
182
+ type: "text",
183
+ text: JSON.stringify({
184
+ success: true,
185
+ result,
186
+ original: datetime,
187
+ format
188
+ })
189
+ }
190
+ ]
191
+ };
192
+ } catch (error) {
193
+ logger.error(`\u683C\u5F0F\u5316\u65E5\u671F\u65F6\u95F4\u9519\u8BEF\uFF1A${getErrorMessage(error)}`);
194
+ return {
195
+ content: [
196
+ {
197
+ type: "text",
198
+ text: JSON.stringify({
199
+ success: false,
200
+ error: getErrorMessage(error)
201
+ })
202
+ }
203
+ ],
204
+ isError: true
205
+ };
206
+ }
207
+ }
208
+ );
209
+ server.tool(
210
+ "add_time",
211
+ "\u5728\u7ED9\u5B9A\u7684\u65E5\u671F\u65F6\u95F4\u57FA\u7840\u4E0A\u589E\u52A0\u6216\u51CF\u5C11\u65F6\u95F4",
212
+ {
213
+ datetime: z.string().describe("\u57FA\u51C6\u65E5\u671F\u65F6\u95F4\u5B57\u7B26\u4E32\u6216\u65F6\u95F4\u6233"),
214
+ amount: z.number().describe("\u8981\u589E\u52A0\uFF08\u6B63\u6570\uFF09\u6216\u51CF\u5C11\uFF08\u8D1F\u6570\uFF09\u7684\u6570\u91CF"),
215
+ unit: z.string().describe(
216
+ "\u65F6\u95F4\u5355\u4F4D\uFF1A'milliseconds'\u3001'seconds'\u3001'minutes'\u3001'hours'\u3001'days'\u3001'weeks'\u3001'months'\u3001'years'"
217
+ )
218
+ },
219
+ async ({ datetime, amount, unit }) => {
220
+ try {
221
+ let date;
222
+ if (!Number.isNaN(Number(datetime))) {
223
+ date = new Date(Number(datetime));
224
+ } else {
225
+ date = new Date(datetime);
226
+ }
227
+ if (Number.isNaN(date.getTime())) {
228
+ throw new Error("\u65E0\u6548\u7684\u65E5\u671F\u65F6\u95F4\u683C\u5F0F");
229
+ }
230
+ const newDate = new Date(date);
231
+ switch (unit.toLowerCase()) {
232
+ case "milliseconds":
233
+ newDate.setTime(newDate.getTime() + amount);
234
+ break;
235
+ case "seconds":
236
+ newDate.setTime(newDate.getTime() + amount * 1e3);
237
+ break;
238
+ case "minutes":
239
+ newDate.setTime(newDate.getTime() + amount * 60 * 1e3);
240
+ break;
241
+ case "hours":
242
+ newDate.setTime(newDate.getTime() + amount * 60 * 60 * 1e3);
243
+ break;
244
+ case "days":
245
+ newDate.setDate(newDate.getDate() + amount);
246
+ break;
247
+ case "weeks":
248
+ newDate.setDate(newDate.getDate() + amount * 7);
249
+ break;
250
+ case "months":
251
+ newDate.setMonth(newDate.getMonth() + amount);
252
+ break;
253
+ case "years":
254
+ newDate.setFullYear(newDate.getFullYear() + amount);
255
+ break;
256
+ default:
257
+ throw new Error(`\u4E0D\u652F\u6301\u7684\u65F6\u95F4\u5355\u4F4D\uFF1A${unit}`);
258
+ }
259
+ const result = newDate.toISOString();
260
+ logger.info(
261
+ `\u5728 ${datetime} \u57FA\u7840\u4E0A\u589E\u52A0 ${amount} ${unit}\uFF0C\u7ED3\u679C\uFF1A${result}`
262
+ );
263
+ return {
264
+ content: [
265
+ {
266
+ type: "text",
267
+ text: JSON.stringify({
268
+ success: true,
269
+ result,
270
+ original: datetime,
271
+ amount,
272
+ unit
273
+ })
274
+ }
275
+ ]
276
+ };
277
+ } catch (error) {
278
+ logger.error(`\u65F6\u95F4\u52A0\u51CF\u9519\u8BEF\uFF1A${getErrorMessage(error)}`);
279
+ return {
280
+ content: [
281
+ {
282
+ type: "text",
283
+ text: JSON.stringify({
284
+ success: false,
285
+ error: getErrorMessage(error)
286
+ })
287
+ }
288
+ ],
289
+ isError: true
290
+ };
291
+ }
292
+ }
293
+ );
294
+ async function main() {
295
+ const transport = new StdioServerTransport();
296
+ await server.connect(transport);
297
+ logger.info("DateTime MCP \u670D\u52A1\u5DF2\u542F\u52A8");
298
+ }
299
+ main().catch((error) => {
300
+ logger.error(`\u542F\u52A8\u670D\u52A1\u5931\u8D25\uFF1A${getErrorMessage(error)}`);
301
+ process.exit(1);
302
+ });
303
+ var src_default = server;
304
+ export {
305
+ src_default as default
306
+ };
307
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * MCP DateTime Server\n * 提供日期时间功能的 MCP 服务\n */\n\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { z } from \"zod\";\n\n// 日志工具\nconst logger = {\n info: (message: string) => {\n const timestamp = new Date().toISOString();\n console.error(`${timestamp} - DateTime - INFO - ${message}`);\n },\n error: (message: string) => {\n const timestamp = new Date().toISOString();\n console.error(`${timestamp} - DateTime - ERROR - ${message}`);\n },\n};\n\n// 安全获取错误信息\nfunction getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n\n// 创建 MCP 服务器实例\nconst server = new McpServer({\n name: \"@xiaozhi-client/datetime-mcp\",\n version: \"1.0.0\",\n});\n\n// 注册获取当前时间工具\nserver.tool(\n \"get_current_time\",\n \"获取当前时间,支持多种格式\",\n {\n format: z\n .string()\n .optional()\n .describe(\"时间格式:'iso'(默认)、'timestamp'、'locale'、'time-only'\"),\n },\n async ({ format = \"iso\" }) => {\n try {\n const now = new Date();\n let result: string | number;\n\n switch (format) {\n case \"timestamp\":\n result = now.getTime();\n break;\n case \"locale\":\n result = now.toLocaleString();\n break;\n case \"time-only\":\n result = now.toLocaleTimeString();\n break;\n default:\n result = now.toISOString();\n break;\n }\n\n logger.info(`获取当前时间,格式:${format},结果:${result}`);\n\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n success: true,\n result,\n format,\n }),\n },\n ],\n };\n } catch (error) {\n logger.error(`获取当前时间错误:${getErrorMessage(error)}`);\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n success: false,\n error: getErrorMessage(error),\n }),\n },\n ],\n isError: true,\n };\n }\n }\n);\n\n// 注册获取当前日期工具\nserver.tool(\n \"get_current_date\",\n \"获取当前日期,支持多种格式\",\n {\n format: z\n .string()\n .optional()\n .describe(\"日期格式:'iso'(默认)、'locale'、'date-only'、'yyyy-mm-dd'\"),\n },\n async ({ format = \"iso\" }) => {\n try {\n const now = new Date();\n let result: string;\n\n switch (format) {\n case \"locale\":\n result = now.toLocaleDateString();\n break;\n case \"date-only\":\n result = now.toDateString();\n break;\n case \"yyyy-mm-dd\":\n result = now.toISOString().split(\"T\")[0];\n break;\n default:\n result = now.toISOString();\n break;\n }\n\n logger.info(`获取当前日期,格式:${format},结果:${result}`);\n\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n success: true,\n result,\n format,\n }),\n },\n ],\n };\n } catch (error) {\n logger.error(`获取当前日期错误:${getErrorMessage(error)}`);\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n success: false,\n error: getErrorMessage(error),\n }),\n },\n ],\n isError: true,\n };\n }\n }\n);\n\n// 注册格式化日期时间工具\nserver.tool(\n \"format_datetime\",\n \"将给定的日期时间字符串或时间戳格式化为指定格式\",\n {\n datetime: z.string().describe(\"要格式化的日期时间字符串或时间戳\"),\n format: z\n .string()\n .optional()\n .describe(\n \"输出格式:'iso'、'locale'、'timestamp'、'yyyy-mm-dd'、'custom'\"\n ),\n custom_format: z\n .string()\n .optional()\n .describe(\"自定义格式字符串(当 format 为 'custom' 时使用)\"),\n },\n async ({ datetime, format = \"iso\", custom_format }) => {\n try {\n let date: Date;\n\n // 尝试解析输入的日期时间\n if (!Number.isNaN(Number(datetime))) {\n // 是时间戳\n date = new Date(Number(datetime));\n } else {\n // 是日期字符串\n date = new Date(datetime);\n }\n\n if (Number.isNaN(date.getTime())) {\n throw new Error(\"无效的日期时间格式\");\n }\n\n let result: string | number;\n switch (format) {\n case \"timestamp\":\n result = date.getTime();\n break;\n case \"locale\":\n result = date.toLocaleString();\n break;\n case \"yyyy-mm-dd\":\n result = date.toISOString().split(\"T\")[0];\n break;\n case \"custom\":\n if (custom_format) {\n // 简单的自定义格式化\n result = custom_format\n .replace(\"YYYY\", String(date.getFullYear()))\n .replace(\"MM\", String(date.getMonth() + 1).padStart(2, \"0\"))\n .replace(\"DD\", String(date.getDate()).padStart(2, \"0\"))\n .replace(\"HH\", String(date.getHours()).padStart(2, \"0\"))\n .replace(\"mm\", String(date.getMinutes()).padStart(2, \"0\"))\n .replace(\"ss\", String(date.getSeconds()).padStart(2, \"0\"));\n } else {\n result = date.toISOString();\n }\n break;\n default:\n result = date.toISOString();\n break;\n }\n\n logger.info(\n `格式化日期时间:${datetime} 为格式:${format},结果:${result}`\n );\n\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n success: true,\n result,\n original: datetime,\n format,\n }),\n },\n ],\n };\n } catch (error) {\n logger.error(`格式化日期时间错误:${getErrorMessage(error)}`);\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n success: false,\n error: getErrorMessage(error),\n }),\n },\n ],\n isError: true,\n };\n }\n }\n);\n\n// 注册时间加减工具\nserver.tool(\n \"add_time\",\n \"在给定的日期时间基础上增加或减少时间\",\n {\n datetime: z.string().describe(\"基准日期时间字符串或时间戳\"),\n amount: z.number().describe(\"要增加(正数)或减少(负数)的数量\"),\n unit: z\n .string()\n .describe(\n \"时间单位:'milliseconds'、'seconds'、'minutes'、'hours'、'days'、'weeks'、'months'、'years'\"\n ),\n },\n async ({ datetime, amount, unit }) => {\n try {\n let date: Date;\n\n // 尝试解析输入的日期时间\n if (!Number.isNaN(Number(datetime))) {\n date = new Date(Number(datetime));\n } else {\n date = new Date(datetime);\n }\n\n if (Number.isNaN(date.getTime())) {\n throw new Error(\"无效的日期时间格式\");\n }\n\n // 根据单位计算新日期\n const newDate = new Date(date);\n\n switch (unit.toLowerCase()) {\n case \"milliseconds\":\n newDate.setTime(newDate.getTime() + amount);\n break;\n case \"seconds\":\n newDate.setTime(newDate.getTime() + amount * 1000);\n break;\n case \"minutes\":\n newDate.setTime(newDate.getTime() + amount * 60 * 1000);\n break;\n case \"hours\":\n newDate.setTime(newDate.getTime() + amount * 60 * 60 * 1000);\n break;\n case \"days\":\n newDate.setDate(newDate.getDate() + amount);\n break;\n case \"weeks\":\n newDate.setDate(newDate.getDate() + amount * 7);\n break;\n case \"months\":\n newDate.setMonth(newDate.getMonth() + amount);\n break;\n case \"years\":\n newDate.setFullYear(newDate.getFullYear() + amount);\n break;\n default:\n throw new Error(`不支持的时间单位:${unit}`);\n }\n\n const result = newDate.toISOString();\n logger.info(\n `在 ${datetime} 基础上增加 ${amount} ${unit},结果:${result}`\n );\n\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n success: true,\n result,\n original: datetime,\n amount,\n unit,\n }),\n },\n ],\n };\n } catch (error) {\n logger.error(`时间加减错误:${getErrorMessage(error)}`);\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n success: false,\n error: getErrorMessage(error),\n }),\n },\n ],\n isError: true,\n };\n }\n }\n);\n\n// 启动服务器\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n logger.info(\"DateTime MCP 服务已启动\");\n}\n\nmain().catch((error) => {\n logger.error(`启动服务失败:${getErrorMessage(error)}`);\n process.exit(1);\n});\n\nexport default server;\n"],"mappings":";AAKA,SAAS,iBAAiB;AAC1B,SAAS,4BAA4B;AACrC,SAAS,SAAS;AAGlB,IAAM,SAAS;AAAA,EACb,MAAM,CAAC,YAAoB;AACzB,UAAM,aAAY,oBAAI,KAAK,GAAE,YAAY;AACzC,YAAQ,MAAM,GAAG,SAAS,wBAAwB,OAAO,EAAE;AAAA,EAC7D;AAAA,EACA,OAAO,CAAC,YAAoB;AAC1B,UAAM,aAAY,oBAAI,KAAK,GAAE,YAAY;AACzC,YAAQ,MAAM,GAAG,SAAS,yBAAyB,OAAO,EAAE;AAAA,EAC9D;AACF;AAGA,SAAS,gBAAgB,OAAwB;AAC/C,MAAI,iBAAiB,OAAO;AAC1B,WAAO,MAAM;AAAA,EACf;AACA,SAAO,OAAO,KAAK;AACrB;AAGA,IAAM,SAAS,IAAI,UAAU;AAAA,EAC3B,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AAGD,OAAO;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,IACE,QAAQ,EACL,OAAO,EACP,SAAS,EACT,SAAS,6GAAiD;AAAA,EAC/D;AAAA,EACA,OAAO,EAAE,SAAS,MAAM,MAAM;AAC5B,QAAI;AACF,YAAM,MAAM,oBAAI,KAAK;AACrB,UAAI;AAEJ,cAAQ,QAAQ;AAAA,QACd,KAAK;AACH,mBAAS,IAAI,QAAQ;AACrB;AAAA,QACF,KAAK;AACH,mBAAS,IAAI,eAAe;AAC5B;AAAA,QACF,KAAK;AACH,mBAAS,IAAI,mBAAmB;AAChC;AAAA,QACF;AACE,mBAAS,IAAI,YAAY;AACzB;AAAA,MACJ;AAEA,aAAO,KAAK,+DAAa,MAAM,2BAAO,MAAM,EAAE;AAE9C,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,KAAK,UAAU;AAAA,cACnB,SAAS;AAAA,cACT;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,aAAO,MAAM,yDAAY,gBAAgB,KAAK,CAAC,EAAE;AACjD,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,KAAK,UAAU;AAAA,cACnB,SAAS;AAAA,cACT,OAAO,gBAAgB,KAAK;AAAA,YAC9B,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAGA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,IACE,QAAQ,EACL,OAAO,EACP,SAAS,EACT,SAAS,8GAAkD;AAAA,EAChE;AAAA,EACA,OAAO,EAAE,SAAS,MAAM,MAAM;AAC5B,QAAI;AACF,YAAM,MAAM,oBAAI,KAAK;AACrB,UAAI;AAEJ,cAAQ,QAAQ;AAAA,QACd,KAAK;AACH,mBAAS,IAAI,mBAAmB;AAChC;AAAA,QACF,KAAK;AACH,mBAAS,IAAI,aAAa;AAC1B;AAAA,QACF,KAAK;AACH,mBAAS,IAAI,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AACvC;AAAA,QACF;AACE,mBAAS,IAAI,YAAY;AACzB;AAAA,MACJ;AAEA,aAAO,KAAK,+DAAa,MAAM,2BAAO,MAAM,EAAE;AAE9C,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,KAAK,UAAU;AAAA,cACnB,SAAS;AAAA,cACT;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,aAAO,MAAM,yDAAY,gBAAgB,KAAK,CAAC,EAAE;AACjD,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,KAAK,UAAU;AAAA,cACnB,SAAS;AAAA,cACT,OAAO,gBAAgB,KAAK;AAAA,YAC9B,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAGA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,IACE,UAAU,EAAE,OAAO,EAAE,SAAS,kGAAkB;AAAA,IAChD,QAAQ,EACL,OAAO,EACP,SAAS,EACT;AAAA,MACC;AAAA,IACF;AAAA,IACF,eAAe,EACZ,OAAO,EACP,SAAS,EACT,SAAS,8GAAmC;AAAA,EACjD;AAAA,EACA,OAAO,EAAE,UAAU,SAAS,OAAO,cAAc,MAAM;AACrD,QAAI;AACF,UAAI;AAGJ,UAAI,CAAC,OAAO,MAAM,OAAO,QAAQ,CAAC,GAAG;AAEnC,eAAO,IAAI,KAAK,OAAO,QAAQ,CAAC;AAAA,MAClC,OAAO;AAEL,eAAO,IAAI,KAAK,QAAQ;AAAA,MAC1B;AAEA,UAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG;AAChC,cAAM,IAAI,MAAM,wDAAW;AAAA,MAC7B;AAEA,UAAI;AACJ,cAAQ,QAAQ;AAAA,QACd,KAAK;AACH,mBAAS,KAAK,QAAQ;AACtB;AAAA,QACF,KAAK;AACH,mBAAS,KAAK,eAAe;AAC7B;AAAA,QACF,KAAK;AACH,mBAAS,KAAK,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AACxC;AAAA,QACF,KAAK;AACH,cAAI,eAAe;AAEjB,qBAAS,cACN,QAAQ,QAAQ,OAAO,KAAK,YAAY,CAAC,CAAC,EAC1C,QAAQ,MAAM,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EAC1D,QAAQ,MAAM,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EACrD,QAAQ,MAAM,OAAO,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EACtD,QAAQ,MAAM,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EACxD,QAAQ,MAAM,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,UAC7D,OAAO;AACL,qBAAS,KAAK,YAAY;AAAA,UAC5B;AACA;AAAA,QACF;AACE,mBAAS,KAAK,YAAY;AAC1B;AAAA,MACJ;AAEA,aAAO;AAAA,QACL,mDAAW,QAAQ,4BAAQ,MAAM,2BAAO,MAAM;AAAA,MAChD;AAEA,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,KAAK,UAAU;AAAA,cACnB,SAAS;AAAA,cACT;AAAA,cACA,UAAU;AAAA,cACV;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,aAAO,MAAM,+DAAa,gBAAgB,KAAK,CAAC,EAAE;AAClD,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,KAAK,UAAU;AAAA,cACnB,SAAS;AAAA,cACT,OAAO,gBAAgB,KAAK;AAAA,YAC9B,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAGA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,IACE,UAAU,EAAE,OAAO,EAAE,SAAS,gFAAe;AAAA,IAC7C,QAAQ,EAAE,OAAO,EAAE,SAAS,wGAAmB;AAAA,IAC/C,MAAM,EACH,OAAO,EACP;AAAA,MACC;AAAA,IACF;AAAA,EACJ;AAAA,EACA,OAAO,EAAE,UAAU,QAAQ,KAAK,MAAM;AACpC,QAAI;AACF,UAAI;AAGJ,UAAI,CAAC,OAAO,MAAM,OAAO,QAAQ,CAAC,GAAG;AACnC,eAAO,IAAI,KAAK,OAAO,QAAQ,CAAC;AAAA,MAClC,OAAO;AACL,eAAO,IAAI,KAAK,QAAQ;AAAA,MAC1B;AAEA,UAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG;AAChC,cAAM,IAAI,MAAM,wDAAW;AAAA,MAC7B;AAGA,YAAM,UAAU,IAAI,KAAK,IAAI;AAE7B,cAAQ,KAAK,YAAY,GAAG;AAAA,QAC1B,KAAK;AACH,kBAAQ,QAAQ,QAAQ,QAAQ,IAAI,MAAM;AAC1C;AAAA,QACF,KAAK;AACH,kBAAQ,QAAQ,QAAQ,QAAQ,IAAI,SAAS,GAAI;AACjD;AAAA,QACF,KAAK;AACH,kBAAQ,QAAQ,QAAQ,QAAQ,IAAI,SAAS,KAAK,GAAI;AACtD;AAAA,QACF,KAAK;AACH,kBAAQ,QAAQ,QAAQ,QAAQ,IAAI,SAAS,KAAK,KAAK,GAAI;AAC3D;AAAA,QACF,KAAK;AACH,kBAAQ,QAAQ,QAAQ,QAAQ,IAAI,MAAM;AAC1C;AAAA,QACF,KAAK;AACH,kBAAQ,QAAQ,QAAQ,QAAQ,IAAI,SAAS,CAAC;AAC9C;AAAA,QACF,KAAK;AACH,kBAAQ,SAAS,QAAQ,SAAS,IAAI,MAAM;AAC5C;AAAA,QACF,KAAK;AACH,kBAAQ,YAAY,QAAQ,YAAY,IAAI,MAAM;AAClD;AAAA,QACF;AACE,gBAAM,IAAI,MAAM,yDAAY,IAAI,EAAE;AAAA,MACtC;AAEA,YAAM,SAAS,QAAQ,YAAY;AACnC,aAAO;AAAA,QACL,UAAK,QAAQ,mCAAU,MAAM,IAAI,IAAI,2BAAO,MAAM;AAAA,MACpD;AAEA,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,KAAK,UAAU;AAAA,cACnB,SAAS;AAAA,cACT;AAAA,cACA,UAAU;AAAA,cACV;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,aAAO,MAAM,6CAAU,gBAAgB,KAAK,CAAC,EAAE;AAC/C,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,KAAK,UAAU;AAAA,cACnB,SAAS;AAAA,cACT,OAAO,gBAAgB,KAAK;AAAA,YAC9B,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAGA,eAAe,OAAO;AACpB,QAAM,YAAY,IAAI,qBAAqB;AAC3C,QAAM,OAAO,QAAQ,SAAS;AAC9B,SAAO,KAAK,6CAAoB;AAClC;AAEA,KAAK,EAAE,MAAM,CAAC,UAAU;AACtB,SAAO,MAAM,6CAAU,gBAAgB,KAAK,CAAC,EAAE;AAC/C,UAAQ,KAAK,CAAC;AAChB,CAAC;AAED,IAAO,cAAQ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xiaozhi-client/datetime-mcp",
3
- "version": "1.10.8-beta.7",
3
+ "version": "1.10.8-beta.8",
4
4
  "type": "module",
5
5
  "description": "小智日期时间 MCP 服务,提供日期时间处理功能",
6
6
  "bin": {