agentdev 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/BasicAgent-UDSHJE5H.js +2 -2
  2. package/dist/{ExplorerAgent-X6QECX65.js → ExplorerAgent-BITN4IBW.js} +3 -3
  3. package/dist/{chunk-N7J76R5P.js → chunk-4FBF65TC.js} +2 -2
  4. package/dist/{chunk-DI5EGMGG.js → chunk-XCJOXCJ4.js} +2 -2
  5. package/dist/{chunk-XAJ6L4GA.js → chunk-XE5IEUPW.js} +2 -2
  6. package/dist/features/example-feature/templates/example-tool.render.d.ts +3 -0
  7. package/dist/features/example-feature/templates/example-tool.render.js +20 -0
  8. package/dist/features/example-feature/templates/example-tool.render.js.map +1 -0
  9. package/dist/features/mcp/templates/mcp-tool.render.d.ts +12 -0
  10. package/dist/features/mcp/templates/mcp-tool.render.js +37 -0
  11. package/dist/features/mcp/templates/mcp-tool.render.js.map +1 -0
  12. package/dist/features/opencode-basic/templates/edit.render.d.ts +12 -0
  13. package/dist/features/opencode-basic/templates/edit.render.js +44 -0
  14. package/dist/features/opencode-basic/templates/edit.render.js.map +1 -0
  15. package/dist/features/opencode-basic/templates/glob.render.d.ts +13 -0
  16. package/dist/features/opencode-basic/templates/glob.render.js +44 -0
  17. package/dist/features/opencode-basic/templates/glob.render.js.map +1 -0
  18. package/dist/features/opencode-basic/templates/grep.render.d.ts +13 -0
  19. package/dist/features/opencode-basic/templates/grep.render.js +67 -0
  20. package/dist/features/opencode-basic/templates/grep.render.js.map +1 -0
  21. package/dist/features/opencode-basic/templates/ls.render.d.ts +12 -0
  22. package/dist/features/opencode-basic/templates/ls.render.js +35 -0
  23. package/dist/features/opencode-basic/templates/ls.render.js.map +1 -0
  24. package/dist/features/opencode-basic/templates/read.render.d.ts +13 -0
  25. package/dist/features/opencode-basic/templates/read.render.js +83 -0
  26. package/dist/features/opencode-basic/templates/read.render.js.map +1 -0
  27. package/dist/features/opencode-basic/templates/write.render.d.ts +13 -0
  28. package/dist/features/opencode-basic/templates/write.render.js +44 -0
  29. package/dist/features/opencode-basic/templates/write.render.js.map +1 -0
  30. package/dist/features/shell/templates/bash.render.d.ts +12 -0
  31. package/dist/features/shell/templates/bash.render.js +71 -0
  32. package/dist/features/shell/templates/bash.render.js.map +1 -0
  33. package/dist/features/shell/templates/trash-delete.render.d.ts +12 -0
  34. package/dist/features/shell/templates/trash-delete.render.js +61 -0
  35. package/dist/features/shell/templates/trash-delete.render.js.map +1 -0
  36. package/dist/features/shell/templates/trash-list.render.d.ts +12 -0
  37. package/dist/features/shell/templates/trash-list.render.js +84 -0
  38. package/dist/features/shell/templates/trash-list.render.js.map +1 -0
  39. package/dist/features/shell/templates/trash-restore.render.d.ts +12 -0
  40. package/dist/features/shell/templates/trash-restore.render.js +77 -0
  41. package/dist/features/shell/templates/trash-restore.render.js.map +1 -0
  42. package/dist/features/skill/templates/skill.render.d.ts +13 -0
  43. package/dist/features/skill/templates/skill.render.js +33 -0
  44. package/dist/features/skill/templates/skill.render.js.map +1 -0
  45. package/dist/features/subagent/templates/agent-close.render.d.ts +9 -0
  46. package/dist/features/subagent/templates/agent-close.render.js +29 -0
  47. package/dist/features/subagent/templates/agent-close.render.js.map +1 -0
  48. package/dist/features/subagent/templates/agent-list.render.d.ts +9 -0
  49. package/dist/features/subagent/templates/agent-list.render.js +23 -0
  50. package/dist/features/subagent/templates/agent-list.render.js.map +1 -0
  51. package/dist/features/subagent/templates/agent-send.render.d.ts +9 -0
  52. package/dist/features/subagent/templates/agent-send.render.js +37 -0
  53. package/dist/features/subagent/templates/agent-send.render.js.map +1 -0
  54. package/dist/features/subagent/templates/agent-spawn.render.d.ts +9 -0
  55. package/dist/features/subagent/templates/agent-spawn.render.js +38 -0
  56. package/dist/features/subagent/templates/agent-spawn.render.js.map +1 -0
  57. package/dist/features/subagent/templates/wait.render.d.ts +9 -0
  58. package/dist/features/subagent/templates/wait.render.js +29 -0
  59. package/dist/features/subagent/templates/wait.render.js.map +1 -0
  60. package/dist/features/todo/templates/task-clear.render.d.ts +9 -0
  61. package/dist/features/todo/templates/task-clear.render.js +32 -0
  62. package/dist/features/todo/templates/task-clear.render.js.map +1 -0
  63. package/dist/features/todo/templates/task-create.render.d.ts +9 -0
  64. package/dist/features/todo/templates/task-create.render.js +56 -0
  65. package/dist/features/todo/templates/task-create.render.js.map +1 -0
  66. package/dist/features/todo/templates/task-get.render.d.ts +9 -0
  67. package/dist/features/todo/templates/task-get.render.js +60 -0
  68. package/dist/features/todo/templates/task-get.render.js.map +1 -0
  69. package/dist/features/todo/templates/task-list.render.d.ts +9 -0
  70. package/dist/features/todo/templates/task-list.render.js +72 -0
  71. package/dist/features/todo/templates/task-list.render.js.map +1 -0
  72. package/dist/features/todo/templates/task-update.render.d.ts +9 -0
  73. package/dist/features/todo/templates/task-update.render.js +58 -0
  74. package/dist/features/todo/templates/task-update.render.js.map +1 -0
  75. package/dist/features/visual/templates/capture.render.d.ts +9 -0
  76. package/dist/features/visual/templates/capture.render.js +49 -0
  77. package/dist/features/visual/templates/capture.render.js.map +1 -0
  78. package/dist/features/websearch/templates/crawl4ai.render.d.ts +6 -0
  79. package/dist/features/websearch/templates/crawl4ai.render.js +30 -0
  80. package/dist/features/websearch/templates/crawl4ai.render.js.map +1 -0
  81. package/dist/features/websearch/templates/web-fetch.render.d.ts +12 -0
  82. package/dist/features/websearch/templates/web-fetch.render.js +40 -0
  83. package/dist/features/websearch/templates/web-fetch.render.js.map +1 -0
  84. package/dist/index.d.ts +3 -745
  85. package/dist/index.js +7 -7
  86. package/dist/types-DUKIIntb.d.ts +745 -0
  87. package/package.json +71 -74
  88. package/LICENSE +0 -21
  89. /package/dist/{ExplorerAgent-X6QECX65.js.map → ExplorerAgent-BITN4IBW.js.map} +0 -0
  90. /package/dist/{chunk-N7J76R5P.js.map → chunk-4FBF65TC.js.map} +0 -0
  91. /package/dist/{chunk-DI5EGMGG.js.map → chunk-XCJOXCJ4.js.map} +0 -0
  92. /package/dist/{chunk-XAJ6L4GA.js.map → chunk-XE5IEUPW.js.map} +0 -0
@@ -0,0 +1,38 @@
1
+ import "../../../chunk-BDS2QGZ5.js";
2
+
3
+ // src/features/subagent/templates/agent-spawn.render.ts
4
+ function escapeHtml(text) {
5
+ const str = String(text);
6
+ const map = {
7
+ "&": "&",
8
+ "<": "&lt;",
9
+ ">": "&gt;",
10
+ '"': "&quot;",
11
+ "'": "&#39;"
12
+ };
13
+ return str.replace(/[&<>"']/g, (m) => map[m]);
14
+ }
15
+ var agent_spawn_render_default = {
16
+ call: (args) => {
17
+ return `<div class="bash-command">\u542F\u52A8 <span class="pattern">${escapeHtml(args.type || "")}</span> \u5B50\u4EE3\u7406</div>`;
18
+ },
19
+ result: (data) => {
20
+ if (data.error) {
21
+ return `<div style="color:var(--error-color)">\u2717 ${escapeHtml(data.error)}</div>`;
22
+ }
23
+ let output = `<div class="bash-command">\u5DF2\u521B\u5EFA <span class="pattern">${escapeHtml(data.agentId || "")}</span></div>`;
24
+ output += `<div style="font-size:11px; color:var(--text-secondary); margin-left:4px;">\u7C7B\u578B: ${escapeHtml(data.type || "")} \xB7 \u72B6\u6001: ${escapeHtml(data.status || "")}</div>`;
25
+ if (data.allAgents && data.allAgents.length > 0) {
26
+ const agentsList = data.allAgents.map((a) => {
27
+ const statusText = a.status === "busy" ? "[\u8FD0\u884C\u4E2D]" : a.status === "idle" ? "[\u7A7A\u95F2]" : "[\u5DF2\u5B8C\u6210]";
28
+ return `${statusText} ${escapeHtml(a.agentId)}`;
29
+ }).join(" \xB7 ");
30
+ output += `<div style="font-size:11px; color:var(--text-secondary); margin-left:4px; margin-top:4px;">${agentsList}</div>`;
31
+ }
32
+ return output;
33
+ }
34
+ };
35
+ export {
36
+ agent_spawn_render_default as default
37
+ };
38
+ //# sourceMappingURL=agent-spawn.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/subagent/templates/agent-spawn.render.ts"],"sourcesContent":["/**\n * agent-spawn 工具渲染模板\n */\n\nimport type { InlineRenderTemplate } from '../../../core/types.js';\n\n/**\n * HTML 转义辅助函数\n */\nfunction escapeHtml(text: any): string {\n const str = String(text);\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n return str.replace(/[&<>\"']/g, m => map[m]);\n}\n\nexport default {\n call: (args: any) => {\n return `<div class=\"bash-command\">启动 <span class=\"pattern\">${escapeHtml(args.type || '')}</span> 子代理</div>`;\n },\n result: (data: any) => {\n if (data.error) {\n return `<div style=\"color:var(--error-color)\">✗ ${escapeHtml(data.error)}</div>`;\n }\n let output = `<div class=\"bash-command\">已创建 <span class=\"pattern\">${escapeHtml(data.agentId || '')}</span></div>`;\n output += `<div style=\"font-size:11px; color:var(--text-secondary); margin-left:4px;\">类型: ${escapeHtml(data.type || '')} · 状态: ${escapeHtml(data.status || '')}</div>`;\n\n // 显示所有 agent 列表\n if (data.allAgents && data.allAgents.length > 0) {\n const agentsList = data.allAgents.map((a: any) => {\n const statusText = a.status === 'busy' ? '[运行中]' : a.status === 'idle' ? '[空闲]' : '[已完成]';\n return `${statusText} ${escapeHtml(a.agentId)}`;\n }).join(' · ');\n output += `<div style=\"font-size:11px; color:var(--text-secondary); margin-left:4px; margin-top:4px;\">${agentsList}</div>`;\n }\n return output;\n }\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";;;AASA,SAAS,WAAW,MAAmB;AACrC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,MAA8B;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACA,SAAO,IAAI,QAAQ,YAAY,OAAK,IAAI,CAAC,CAAC;AAC5C;AAEA,IAAO,6BAAQ;AAAA,EACb,MAAM,CAAC,SAAc;AACnB,WAAO,gEAAsD,WAAW,KAAK,QAAQ,EAAE,CAAC;AAAA,EAC1F;AAAA,EACA,QAAQ,CAAC,SAAc;AACrB,QAAI,KAAK,OAAO;AACd,aAAO,gDAA2C,WAAW,KAAK,KAAK,CAAC;AAAA,IAC1E;AACA,QAAI,SAAS,sEAAuD,WAAW,KAAK,WAAW,EAAE,CAAC;AAClG,cAAU,4FAAkF,WAAW,KAAK,QAAQ,EAAE,CAAC,uBAAU,WAAW,KAAK,UAAU,EAAE,CAAC;AAG9J,QAAI,KAAK,aAAa,KAAK,UAAU,SAAS,GAAG;AAC/C,YAAM,aAAa,KAAK,UAAU,IAAI,CAAC,MAAW;AAChD,cAAM,aAAa,EAAE,WAAW,SAAS,yBAAU,EAAE,WAAW,SAAS,mBAAS;AAClF,eAAO,GAAG,UAAU,IAAI,WAAW,EAAE,OAAO,CAAC;AAAA,MAC/C,CAAC,EAAE,KAAK,QAAK;AACb,gBAAU,8FAA8F,UAAU;AAAA,IACpH;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * wait 工具渲染模板
3
+ */
4
+ declare const _default: {
5
+ readonly call: () => string;
6
+ readonly result: (data: any) => string;
7
+ };
8
+
9
+ export { _default as default };
@@ -0,0 +1,29 @@
1
+ import "../../../chunk-BDS2QGZ5.js";
2
+
3
+ // src/features/subagent/templates/wait.render.ts
4
+ function escapeHtml(text) {
5
+ const str = String(text);
6
+ const map = {
7
+ "&": "&amp;",
8
+ "<": "&lt;",
9
+ ">": "&gt;",
10
+ '"': "&quot;",
11
+ "'": "&#39;"
12
+ };
13
+ return str.replace(/[&<>"']/g, (m) => map[m]);
14
+ }
15
+ var wait_render_default = {
16
+ call: () => {
17
+ return `<div class="bash-command">\u7B49\u5F85\u5B50\u4EE3\u7406\u8FD0\u884C\u5B8C\u6210......</div>`;
18
+ },
19
+ result: (data) => {
20
+ if (data.error) {
21
+ return `<div style="color:var(--error-color)">\u2717 ${escapeHtml(data.error)}</div>`;
22
+ }
23
+ return `<div style="color:var(--info-color)">${escapeHtml(data.message || "\u7B49\u5F85\u5B50\u4EE3\u7406\u8FD0\u884C\u7ED3\u679C...")}</div>`;
24
+ }
25
+ };
26
+ export {
27
+ wait_render_default as default
28
+ };
29
+ //# sourceMappingURL=wait.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/subagent/templates/wait.render.ts"],"sourcesContent":["/**\n * wait 工具渲染模板\n */\n\nimport type { InlineRenderTemplate } from '../../../core/types.js';\n\n/**\n * HTML 转义辅助函数\n */\nfunction escapeHtml(text: any): string {\n const str = String(text);\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n return str.replace(/[&<>\"']/g, m => map[m]);\n}\n\nexport default {\n call: () => {\n return `<div class=\"bash-command\">等待子代理运行完成......</div>`;\n },\n result: (data: any) => {\n if (data.error) {\n return `<div style=\"color:var(--error-color)\">✗ ${escapeHtml(data.error)}</div>`;\n }\n return `<div style=\"color:var(--info-color)\">${escapeHtml(data.message || '等待子代理运行结果...')}</div>`;\n }\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";;;AASA,SAAS,WAAW,MAAmB;AACrC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,MAA8B;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACA,SAAO,IAAI,QAAQ,YAAY,OAAK,IAAI,CAAC,CAAC;AAC5C;AAEA,IAAO,sBAAQ;AAAA,EACb,MAAM,MAAM;AACV,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,CAAC,SAAc;AACrB,QAAI,KAAK,OAAO;AACd,aAAO,gDAA2C,WAAW,KAAK,KAAK,CAAC;AAAA,IAC1E;AACA,WAAO,wCAAwC,WAAW,KAAK,WAAW,2DAAc,CAAC;AAAA,EAC3F;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * task_clear 工具渲染模板
3
+ */
4
+ declare const _default: {
5
+ readonly call: () => string;
6
+ readonly result: (data: any, success?: boolean) => string;
7
+ };
8
+
9
+ export { _default as default };
@@ -0,0 +1,32 @@
1
+ import "../../../chunk-BDS2QGZ5.js";
2
+
3
+ // src/features/todo/templates/task-clear.render.ts
4
+ function escapeHtml(text) {
5
+ const str = String(text);
6
+ const map = {
7
+ "&": "&amp;",
8
+ "<": "&lt;",
9
+ ">": "&gt;",
10
+ '"': "&quot;",
11
+ "'": "&#39;"
12
+ };
13
+ return str.replace(/[&<>"']/g, (m) => map[m]);
14
+ }
15
+ var task_clear_render_default = {
16
+ call: () => {
17
+ return `<div class="bash-command">\u6E05\u7A7A\u6240\u6709\u4EFB\u52A1</div>`;
18
+ },
19
+ result: (data, success) => {
20
+ if (!success || data.error) {
21
+ return `<div class="tool-error">
22
+ <svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/></svg>
23
+ <span>${escapeHtml(data.error || "\u6E05\u7A7A\u4EFB\u52A1\u5931\u8D25")}</span>
24
+ </div>`;
25
+ }
26
+ return `<div style="color:var(--success-color)">\u2713 ${escapeHtml(data.message || "\u4EFB\u52A1\u5217\u8868\u5DF2\u6E05\u7A7A")}</div>`;
27
+ }
28
+ };
29
+ export {
30
+ task_clear_render_default as default
31
+ };
32
+ //# sourceMappingURL=task-clear.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/todo/templates/task-clear.render.ts"],"sourcesContent":["/**\n * task_clear 工具渲染模板\n */\n\nimport type { InlineRenderTemplate } from '../../../core/types.js';\n\n/**\n * HTML 转义辅助函数\n */\nfunction escapeHtml(text: any): string {\n const str = String(text);\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n return str.replace(/[&<>\"']/g, m => map[m]);\n}\n\nexport default {\n call: () => {\n return `<div class=\"bash-command\">清空所有任务</div>`;\n },\n result: (data: any, success?: boolean) => {\n if (!success || data.error) {\n return `<div class=\"tool-error\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"/></svg>\n <span>${escapeHtml(data.error || '清空任务失败')}</span>\n </div>`;\n }\n return `<div style=\"color:var(--success-color)\">✓ ${escapeHtml(data.message || '任务列表已清空')}</div>`;\n }\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";;;AASA,SAAS,WAAW,MAAmB;AACrC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,MAA8B;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACA,SAAO,IAAI,QAAQ,YAAY,OAAK,IAAI,CAAC,CAAC;AAC5C;AAEA,IAAO,4BAAQ;AAAA,EACb,MAAM,MAAM;AACV,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,CAAC,MAAW,YAAsB;AACxC,QAAI,CAAC,WAAW,KAAK,OAAO;AAC1B,aAAO;AAAA;AAAA,gBAEG,WAAW,KAAK,SAAS,sCAAQ,CAAC;AAAA;AAAA,IAE9C;AACA,WAAO,kDAA6C,WAAW,KAAK,WAAW,4CAAS,CAAC;AAAA,EAC3F;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * task_create 工具渲染模板
3
+ */
4
+ declare const _default: {
5
+ readonly call: (args: any) => string;
6
+ readonly result: (data: any, success?: boolean) => string;
7
+ };
8
+
9
+ export { _default as default };
@@ -0,0 +1,56 @@
1
+ import "../../../chunk-BDS2QGZ5.js";
2
+
3
+ // src/features/todo/templates/task-create.render.ts
4
+ function escapeHtml(text) {
5
+ const str = String(text);
6
+ const map = {
7
+ "&": "&amp;",
8
+ "<": "&lt;",
9
+ ">": "&gt;",
10
+ '"': "&quot;",
11
+ "'": "&#39;"
12
+ };
13
+ return str.replace(/[&<>"']/g, (m) => map[m]);
14
+ }
15
+ function getStatusColor(status) {
16
+ const colors = {
17
+ pending: "var(--warning-color)",
18
+ in_progress: "var(--info-color)",
19
+ completed: "var(--success-color)",
20
+ deleted: "var(--text-secondary)"
21
+ };
22
+ return colors[status] || "var(--text-secondary)";
23
+ }
24
+ function renderTaskList(tasks) {
25
+ return `<div style="font-family:"Fira Code", "Cascadia Code", "Source Code Pro", "JetBrains Mono", ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, monospace; font-size:12px; max-height:300px; overflow:auto;">
26
+ ${tasks.map((t) => `
27
+ <div style="display:flex; align-items:center; gap:8px; padding:4px 0; border-bottom:1px solid var(--border-color);">
28
+ <span style="color:var(--text-secondary); min-width:24px;">#${t.id}</span>
29
+ <span style="color:var(--text-primary); flex:1;">${escapeHtml(t.subject)}</span>
30
+ <span style="color:${getStatusColor(t.status)}; font-size:11px;">${t.status}</span>
31
+ </div>
32
+ `).join("")}
33
+ </div>`;
34
+ }
35
+ var task_create_render_default = {
36
+ call: (args) => {
37
+ return `<div class="bash-command">\u521B\u5EFA\u4EFB\u52A1 <span class="pattern">${escapeHtml(args.subject || "")}</span></div>`;
38
+ },
39
+ result: (data, success) => {
40
+ if (!success || data.error) {
41
+ return `<div class="tool-error">
42
+ <svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/></svg>
43
+ <span>${escapeHtml(data.error || "\u521B\u5EFA\u4EFB\u52A1\u5931\u8D25")}</span>
44
+ </div>`;
45
+ }
46
+ let output = `<div style="color:var(--success-color)">\u2713 ${escapeHtml(data.message || "\u4EFB\u52A1\u5DF2\u521B\u5EFA")}</div>`;
47
+ if (data.allTasks && data.allTasks.length > 0) {
48
+ output += renderTaskList(data.allTasks);
49
+ }
50
+ return output;
51
+ }
52
+ };
53
+ export {
54
+ task_create_render_default as default
55
+ };
56
+ //# sourceMappingURL=task-create.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/todo/templates/task-create.render.ts"],"sourcesContent":["/**\n * task_create 工具渲染模板\n */\n\nimport type { InlineRenderTemplate } from '../../../core/types.js';\n\n/**\n * HTML 转义辅助函数\n */\nfunction escapeHtml(text: any): string {\n const str = String(text);\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n return str.replace(/[&<>\"']/g, m => map[m]);\n}\n\n/**\n * 状态颜色映射\n */\nfunction getStatusColor(status: string): string {\n const colors: Record<string, string> = {\n pending: 'var(--warning-color)',\n in_progress: 'var(--info-color)',\n completed: 'var(--success-color)',\n deleted: 'var(--text-secondary)',\n };\n return colors[status] || 'var(--text-secondary)';\n}\n\n/**\n * 渲染任务列表(通用)\n */\nfunction renderTaskList(tasks: Array<{ id: string; subject: string; status: string }>): string {\n return `<div style=\"font-family:\"Fira Code\", \"Cascadia Code\", \"Source Code Pro\", \"JetBrains Mono\", ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, monospace; font-size:12px; max-height:300px; overflow:auto;\">\n ${tasks.map(t => `\n <div style=\"display:flex; align-items:center; gap:8px; padding:4px 0; border-bottom:1px solid var(--border-color);\">\n <span style=\"color:var(--text-secondary); min-width:24px;\">#${t.id}</span>\n <span style=\"color:var(--text-primary); flex:1;\">${escapeHtml(t.subject)}</span>\n <span style=\"color:${getStatusColor(t.status)}; font-size:11px;\">${t.status}</span>\n </div>\n `).join('')}\n </div>`;\n}\n\nexport default {\n call: (args: any) => {\n return `<div class=\"bash-command\">创建任务 <span class=\"pattern\">${escapeHtml(args.subject || '')}</span></div>`;\n },\n result: (data: any, success?: boolean) => {\n if (!success || data.error) {\n return `<div class=\"tool-error\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"/></svg>\n <span>${escapeHtml(data.error || '创建任务失败')}</span>\n </div>`;\n }\n let output = `<div style=\"color:var(--success-color)\">✓ ${escapeHtml(data.message || '任务已创建')}</div>`;\n if (data.allTasks && data.allTasks.length > 0) {\n output += renderTaskList(data.allTasks);\n }\n return output;\n }\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";;;AASA,SAAS,WAAW,MAAmB;AACrC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,MAA8B;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACA,SAAO,IAAI,QAAQ,YAAY,OAAK,IAAI,CAAC,CAAC;AAC5C;AAKA,SAAS,eAAe,QAAwB;AAC9C,QAAM,SAAiC;AAAA,IACrC,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACA,SAAO,OAAO,MAAM,KAAK;AAC3B;AAKA,SAAS,eAAe,OAAuE;AAC7F,SAAO;AAAA,MACH,MAAM,IAAI,OAAK;AAAA;AAAA,sEAEiD,EAAE,EAAE;AAAA,2DACf,WAAW,EAAE,OAAO,CAAC;AAAA,6BACnD,eAAe,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM;AAAA;AAAA,KAE9E,EAAE,KAAK,EAAE,CAAC;AAAA;AAEf;AAEA,IAAO,6BAAQ;AAAA,EACb,MAAM,CAAC,SAAc;AACnB,WAAO,4EAAwD,WAAW,KAAK,WAAW,EAAE,CAAC;AAAA,EAC/F;AAAA,EACA,QAAQ,CAAC,MAAW,YAAsB;AACxC,QAAI,CAAC,WAAW,KAAK,OAAO;AAC1B,aAAO;AAAA;AAAA,gBAEG,WAAW,KAAK,SAAS,sCAAQ,CAAC;AAAA;AAAA,IAE9C;AACA,QAAI,SAAS,kDAA6C,WAAW,KAAK,WAAW,gCAAO,CAAC;AAC7F,QAAI,KAAK,YAAY,KAAK,SAAS,SAAS,GAAG;AAC7C,gBAAU,eAAe,KAAK,QAAQ;AAAA,IACxC;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * task_get 工具渲染模板
3
+ */
4
+ declare const _default: {
5
+ readonly call: (args: any) => string;
6
+ readonly result: (data: any, success?: boolean) => string;
7
+ };
8
+
9
+ export { _default as default };
@@ -0,0 +1,60 @@
1
+ import "../../../chunk-BDS2QGZ5.js";
2
+
3
+ // src/features/todo/templates/task-get.render.ts
4
+ function escapeHtml(text) {
5
+ const str = String(text);
6
+ const map = {
7
+ "&": "&amp;",
8
+ "<": "&lt;",
9
+ ">": "&gt;",
10
+ '"': "&quot;",
11
+ "'": "&#39;"
12
+ };
13
+ return str.replace(/[&<>"']/g, (m) => map[m]);
14
+ }
15
+ function getStatusColor(status) {
16
+ const colors = {
17
+ pending: "var(--warning-color)",
18
+ in_progress: "var(--info-color)",
19
+ completed: "var(--success-color)",
20
+ deleted: "var(--text-secondary)"
21
+ };
22
+ return colors[status] || "var(--text-secondary)";
23
+ }
24
+ function getStatusText(status) {
25
+ const texts = {
26
+ pending: "\u5F85\u6267\u884C",
27
+ in_progress: "\u8FDB\u884C\u4E2D",
28
+ completed: "\u5DF2\u5B8C\u6210",
29
+ deleted: "\u5DF2\u5220\u9664"
30
+ };
31
+ return texts[status] || status;
32
+ }
33
+ var task_get_render_default = {
34
+ call: (args) => {
35
+ return `<div class="bash-command">\u83B7\u53D6\u4EFB\u52A1\u8BE6\u60C5 <span class="pattern">#${escapeHtml(args.taskId || "")}</span></div>`;
36
+ },
37
+ result: (data, success) => {
38
+ if (!success || data.error) {
39
+ return `<div class="tool-error">
40
+ <svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/></svg>
41
+ <span>${escapeHtml(data.error || "\u83B7\u53D6\u4EFB\u52A1\u5931\u8D25")}</span>
42
+ </div>`;
43
+ }
44
+ let output = `<div style="padding:8px; background:var(--code-bg); border-radius:4px; font-size:12px;">`;
45
+ output += `<div style="margin-bottom:4px;"><strong>#${data.id}</strong> ${escapeHtml(data.subject || "")}</div>`;
46
+ output += `<div style="color:${getStatusColor(data.status)}; margin-bottom:4px;">[${getStatusText(data.status)}]</div>`;
47
+ if (data.description) {
48
+ output += `<div style="color:var(--text-secondary); margin-bottom:4px;">${escapeHtml(data.description)}</div>`;
49
+ }
50
+ if (data.blockedBy && data.blockedBy.length > 0) {
51
+ output += `<div style="font-size:11px; color:var(--warning-color);">\u4F9D\u8D56: ${data.blockedBy.map((id) => "#" + id).join(", ")}</div>`;
52
+ }
53
+ output += `</div>`;
54
+ return output;
55
+ }
56
+ };
57
+ export {
58
+ task_get_render_default as default
59
+ };
60
+ //# sourceMappingURL=task-get.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/todo/templates/task-get.render.ts"],"sourcesContent":["/**\n * task_get 工具渲染模板\n */\n\nimport type { InlineRenderTemplate } from '../../../core/types.js';\n\n/**\n * HTML 转义辅助函数\n */\nfunction escapeHtml(text: any): string {\n const str = String(text);\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n return str.replace(/[&<>\"']/g, m => map[m]);\n}\n\n/**\n * 状态颜色映射\n */\nfunction getStatusColor(status: string): string {\n const colors: Record<string, string> = {\n pending: 'var(--warning-color)',\n in_progress: 'var(--info-color)',\n completed: 'var(--success-color)',\n deleted: 'var(--text-secondary)',\n };\n return colors[status] || 'var(--text-secondary)';\n}\n\n/**\n * 状态文本映射\n */\nfunction getStatusText(status: string): string {\n const texts: Record<string, string> = {\n pending: '待执行',\n in_progress: '进行中',\n completed: '已完成',\n deleted: '已删除',\n };\n return texts[status] || status;\n}\n\nexport default {\n call: (args: any) => {\n return `<div class=\"bash-command\">获取任务详情 <span class=\"pattern\">#${escapeHtml(args.taskId || '')}</span></div>`;\n },\n result: (data: any, success?: boolean) => {\n if (!success || data.error) {\n return `<div class=\"tool-error\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"/></svg>\n <span>${escapeHtml(data.error || '获取任务失败')}</span>\n </div>`;\n }\n let output = `<div style=\"padding:8px; background:var(--code-bg); border-radius:4px; font-size:12px;\">`;\n output += `<div style=\"margin-bottom:4px;\"><strong>#${data.id}</strong> ${escapeHtml(data.subject || '')}</div>`;\n output += `<div style=\"color:${getStatusColor(data.status)}; margin-bottom:4px;\">[${getStatusText(data.status)}]</div>`;\n if (data.description) {\n output += `<div style=\"color:var(--text-secondary); margin-bottom:4px;\">${escapeHtml(data.description)}</div>`;\n }\n if (data.blockedBy && data.blockedBy.length > 0) {\n output += `<div style=\"font-size:11px; color:var(--warning-color);\">依赖: ${data.blockedBy.map((id: string) => '#' + id).join(', ')}</div>`;\n }\n output += `</div>`;\n return output;\n }\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";;;AASA,SAAS,WAAW,MAAmB;AACrC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,MAA8B;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACA,SAAO,IAAI,QAAQ,YAAY,OAAK,IAAI,CAAC,CAAC;AAC5C;AAKA,SAAS,eAAe,QAAwB;AAC9C,QAAM,SAAiC;AAAA,IACrC,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACA,SAAO,OAAO,MAAM,KAAK;AAC3B;AAKA,SAAS,cAAc,QAAwB;AAC7C,QAAM,QAAgC;AAAA,IACpC,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACA,SAAO,MAAM,MAAM,KAAK;AAC1B;AAEA,IAAO,0BAAQ;AAAA,EACb,MAAM,CAAC,SAAc;AACnB,WAAO,yFAA2D,WAAW,KAAK,UAAU,EAAE,CAAC;AAAA,EACjG;AAAA,EACA,QAAQ,CAAC,MAAW,YAAsB;AACxC,QAAI,CAAC,WAAW,KAAK,OAAO;AAC1B,aAAO;AAAA;AAAA,gBAEG,WAAW,KAAK,SAAS,sCAAQ,CAAC;AAAA;AAAA,IAE9C;AACA,QAAI,SAAS;AACb,cAAU,4CAA4C,KAAK,EAAE,aAAa,WAAW,KAAK,WAAW,EAAE,CAAC;AACxG,cAAU,qBAAqB,eAAe,KAAK,MAAM,CAAC,0BAA0B,cAAc,KAAK,MAAM,CAAC;AAC9G,QAAI,KAAK,aAAa;AACpB,gBAAU,gEAAgE,WAAW,KAAK,WAAW,CAAC;AAAA,IACxG;AACA,QAAI,KAAK,aAAa,KAAK,UAAU,SAAS,GAAG;AAC/C,gBAAU,0EAAgE,KAAK,UAAU,IAAI,CAAC,OAAe,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,IACnI;AACA,cAAU;AACV,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * task_list 工具渲染模板
3
+ */
4
+ declare const _default: {
5
+ readonly call: (args: any) => string;
6
+ readonly result: (data: any, success?: boolean) => string;
7
+ };
8
+
9
+ export { _default as default };
@@ -0,0 +1,72 @@
1
+ import "../../../chunk-BDS2QGZ5.js";
2
+
3
+ // src/features/todo/templates/task-list.render.ts
4
+ function escapeHtml(text) {
5
+ const str = String(text);
6
+ const map = {
7
+ "&": "&amp;",
8
+ "<": "&lt;",
9
+ ">": "&gt;",
10
+ '"': "&quot;",
11
+ "'": "&#39;"
12
+ };
13
+ return str.replace(/[&<>"']/g, (m) => map[m]);
14
+ }
15
+ function getStatusColor(status) {
16
+ const colors = {
17
+ pending: "var(--warning-color)",
18
+ in_progress: "var(--info-color)",
19
+ completed: "var(--success-color)",
20
+ deleted: "var(--text-secondary)"
21
+ };
22
+ return colors[status] || "var(--text-secondary)";
23
+ }
24
+ function getStatusText(status) {
25
+ const texts = {
26
+ pending: "\u5F85\u6267\u884C",
27
+ in_progress: "\u8FDB\u884C\u4E2D",
28
+ completed: "\u5DF2\u5B8C\u6210",
29
+ deleted: "\u5DF2\u5220\u9664"
30
+ };
31
+ return texts[status] || status;
32
+ }
33
+ function renderTaskList(tasks) {
34
+ return `<div style="font-family:"Fira Code", "Cascadia Code", "Source Code Pro", "JetBrains Mono", ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, monospace; font-size:12px; max-height:300px; overflow:auto;">
35
+ ${tasks.map((t) => `
36
+ <div style="display:flex; align-items:center; gap:8px; padding:4px 0; border-bottom:1px solid var(--border-color);">
37
+ <span style="color:var(--text-secondary); min-width:24px;">#${t.id}</span>
38
+ <span style="color:var(--text-primary); flex:1;">${escapeHtml(t.subject)}</span>
39
+ <span style="color:${getStatusColor(t.status)}; font-size:11px;">${getStatusText(t.status)}</span>
40
+ </div>
41
+ `).join("")}
42
+ </div>`;
43
+ }
44
+ var task_list_render_default = {
45
+ call: (args) => {
46
+ const filter = args.status === "all" ? "" : ` (\u7B5B\u9009: ${escapeHtml(args.status || "")})`;
47
+ return `<div class="bash-command">\u5217\u51FA\u4EFB\u52A1${filter}</div>`;
48
+ },
49
+ result: (data, success) => {
50
+ if (!success || data.error) {
51
+ return `<div class="tool-error">
52
+ <svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/></svg>
53
+ <span>${escapeHtml(data.error || "\u83B7\u53D6\u4EFB\u52A1\u5217\u8868\u5931\u8D25")}</span>
54
+ </div>`;
55
+ }
56
+ if (!data.tasks || data.tasks.length === 0) {
57
+ return '<div style="color:var(--text-secondary)">\u6682\u65E0\u4EFB\u52A1</div>';
58
+ }
59
+ let output = "";
60
+ if (data.summary) {
61
+ output += `<div style="font-size:11px; color:var(--text-secondary); margin-bottom:4px;">`;
62
+ output += `\u603B\u8BA1: ${data.summary.total} | \u5F85\u6267\u884C: ${data.summary.pending} | \u8FDB\u884C\u4E2D: ${data.summary.inProgress} | \u5DF2\u5B8C\u6210: ${data.summary.completed}`;
63
+ output += `</div>`;
64
+ }
65
+ output += renderTaskList(data.tasks);
66
+ return output;
67
+ }
68
+ };
69
+ export {
70
+ task_list_render_default as default
71
+ };
72
+ //# sourceMappingURL=task-list.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/todo/templates/task-list.render.ts"],"sourcesContent":["/**\n * task_list 工具渲染模板\n */\n\nimport type { InlineRenderTemplate } from '../../../core/types.js';\n\n/**\n * HTML 转义辅助函数\n */\nfunction escapeHtml(text: any): string {\n const str = String(text);\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n return str.replace(/[&<>\"']/g, m => map[m]);\n}\n\n/**\n * 状态颜色映射\n */\nfunction getStatusColor(status: string): string {\n const colors: Record<string, string> = {\n pending: 'var(--warning-color)',\n in_progress: 'var(--info-color)',\n completed: 'var(--success-color)',\n deleted: 'var(--text-secondary)',\n };\n return colors[status] || 'var(--text-secondary)';\n}\n\n/**\n * 状态文本映射\n */\nfunction getStatusText(status: string): string {\n const texts: Record<string, string> = {\n pending: '待执行',\n in_progress: '进行中',\n completed: '已完成',\n deleted: '已删除',\n };\n return texts[status] || status;\n}\n\n/**\n * 渲染任务列表(通用)\n */\nfunction renderTaskList(tasks: Array<{ id: string; subject: string; status: string }>): string {\n return `<div style=\"font-family:\"Fira Code\", \"Cascadia Code\", \"Source Code Pro\", \"JetBrains Mono\", ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, monospace; font-size:12px; max-height:300px; overflow:auto;\">\n ${tasks.map(t => `\n <div style=\"display:flex; align-items:center; gap:8px; padding:4px 0; border-bottom:1px solid var(--border-color);\">\n <span style=\"color:var(--text-secondary); min-width:24px;\">#${t.id}</span>\n <span style=\"color:var(--text-primary); flex:1;\">${escapeHtml(t.subject)}</span>\n <span style=\"color:${getStatusColor(t.status)}; font-size:11px;\">${getStatusText(t.status)}</span>\n </div>\n `).join('')}\n </div>`;\n}\n\nexport default {\n call: (args: any) => {\n const filter = args.status === 'all' ? '' : ` (筛选: ${escapeHtml(args.status || '')})`;\n return `<div class=\"bash-command\">列出任务${filter}</div>`;\n },\n result: (data: any, success?: boolean) => {\n if (!success || data.error) {\n return `<div class=\"tool-error\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"/></svg>\n <span>${escapeHtml(data.error || '获取任务列表失败')}</span>\n </div>`;\n }\n if (!data.tasks || data.tasks.length === 0) {\n return '<div style=\"color:var(--text-secondary)\">暂无任务</div>';\n }\n let output = '';\n if (data.summary) {\n output += `<div style=\"font-size:11px; color:var(--text-secondary); margin-bottom:4px;\">`;\n output += `总计: ${data.summary.total} | 待执行: ${data.summary.pending} | 进行中: ${data.summary.inProgress} | 已完成: ${data.summary.completed}`;\n output += `</div>`;\n }\n output += renderTaskList(data.tasks);\n return output;\n }\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";;;AASA,SAAS,WAAW,MAAmB;AACrC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,MAA8B;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACA,SAAO,IAAI,QAAQ,YAAY,OAAK,IAAI,CAAC,CAAC;AAC5C;AAKA,SAAS,eAAe,QAAwB;AAC9C,QAAM,SAAiC;AAAA,IACrC,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACA,SAAO,OAAO,MAAM,KAAK;AAC3B;AAKA,SAAS,cAAc,QAAwB;AAC7C,QAAM,QAAgC;AAAA,IACpC,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACA,SAAO,MAAM,MAAM,KAAK;AAC1B;AAKA,SAAS,eAAe,OAAuE;AAC7F,SAAO;AAAA,MACH,MAAM,IAAI,OAAK;AAAA;AAAA,sEAEiD,EAAE,EAAE;AAAA,2DACf,WAAW,EAAE,OAAO,CAAC;AAAA,6BACnD,eAAe,EAAE,MAAM,CAAC,sBAAsB,cAAc,EAAE,MAAM,CAAC;AAAA;AAAA,KAE7F,EAAE,KAAK,EAAE,CAAC;AAAA;AAEf;AAEA,IAAO,2BAAQ;AAAA,EACb,MAAM,CAAC,SAAc;AACnB,UAAM,SAAS,KAAK,WAAW,QAAQ,KAAK,mBAAS,WAAW,KAAK,UAAU,EAAE,CAAC;AAClF,WAAO,qDAAiC,MAAM;AAAA,EAChD;AAAA,EACA,QAAQ,CAAC,MAAW,YAAsB;AACxC,QAAI,CAAC,WAAW,KAAK,OAAO;AAC1B,aAAO;AAAA;AAAA,gBAEG,WAAW,KAAK,SAAS,kDAAU,CAAC;AAAA;AAAA,IAEhD;AACA,QAAI,CAAC,KAAK,SAAS,KAAK,MAAM,WAAW,GAAG;AAC1C,aAAO;AAAA,IACT;AACA,QAAI,SAAS;AACb,QAAI,KAAK,SAAS;AAChB,gBAAU;AACV,gBAAU,iBAAO,KAAK,QAAQ,KAAK,0BAAW,KAAK,QAAQ,OAAO,0BAAW,KAAK,QAAQ,UAAU,0BAAW,KAAK,QAAQ,SAAS;AACrI,gBAAU;AAAA,IACZ;AACA,cAAU,eAAe,KAAK,KAAK;AACnC,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * task_update 工具渲染模板
3
+ */
4
+ declare const _default: {
5
+ readonly call: (args: any) => string;
6
+ readonly result: (data: any, success?: boolean) => string;
7
+ };
8
+
9
+ export { _default as default };
@@ -0,0 +1,58 @@
1
+ import "../../../chunk-BDS2QGZ5.js";
2
+
3
+ // src/features/todo/templates/task-update.render.ts
4
+ function escapeHtml(text) {
5
+ const str = String(text);
6
+ const map = {
7
+ "&": "&amp;",
8
+ "<": "&lt;",
9
+ ">": "&gt;",
10
+ '"': "&quot;",
11
+ "'": "&#39;"
12
+ };
13
+ return str.replace(/[&<>"']/g, (m) => map[m]);
14
+ }
15
+ function getStatusColor(status) {
16
+ const colors = {
17
+ pending: "var(--warning-color)",
18
+ in_progress: "var(--info-color)",
19
+ completed: "var(--success-color)",
20
+ deleted: "var(--text-secondary)"
21
+ };
22
+ return colors[status] || "var(--text-secondary)";
23
+ }
24
+ function getStatusText(status) {
25
+ const texts = {
26
+ pending: "\u5F85\u6267\u884C",
27
+ in_progress: "\u8FDB\u884C\u4E2D",
28
+ completed: "\u5DF2\u5B8C\u6210",
29
+ deleted: "\u5DF2\u5220\u9664"
30
+ };
31
+ return texts[status] || status;
32
+ }
33
+ var task_update_render_default = {
34
+ call: (args) => {
35
+ let output = `<div class="bash-command">\u66F4\u65B0\u4EFB\u52A1 <span class="pattern">#${escapeHtml(args.taskId || "")}</span>`;
36
+ if (args.status) {
37
+ output += ` \u2192 <span style="color:${getStatusColor(args.status)}">${getStatusText(args.status)}</span>`;
38
+ }
39
+ output += `</div>`;
40
+ return output;
41
+ },
42
+ result: (data, success) => {
43
+ if (!success || data.error) {
44
+ return `<div class="tool-error">
45
+ <svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/></svg>
46
+ <span>${escapeHtml(data.error || "\u66F4\u65B0\u4EFB\u52A1\u5931\u8D25")}</span>
47
+ </div>`;
48
+ }
49
+ if (data.status === "deleted") {
50
+ return `<div style="color:var(--success-color)">\u2713 ${escapeHtml(data.message || "\u4EFB\u52A1\u5DF2\u5220\u9664")}</div>`;
51
+ }
52
+ return `<div style="color:var(--success-color)">\u2713 ${escapeHtml(data.message || "\u4EFB\u52A1\u5DF2\u66F4\u65B0")}</div>`;
53
+ }
54
+ };
55
+ export {
56
+ task_update_render_default as default
57
+ };
58
+ //# sourceMappingURL=task-update.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/todo/templates/task-update.render.ts"],"sourcesContent":["/**\n * task_update 工具渲染模板\n */\n\nimport type { InlineRenderTemplate } from '../../../core/types.js';\n\n/**\n * HTML 转义辅助函数\n */\nfunction escapeHtml(text: any): string {\n const str = String(text);\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n return str.replace(/[&<>\"']/g, m => map[m]);\n}\n\n/**\n * 状态颜色映射\n */\nfunction getStatusColor(status: string): string {\n const colors: Record<string, string> = {\n pending: 'var(--warning-color)',\n in_progress: 'var(--info-color)',\n completed: 'var(--success-color)',\n deleted: 'var(--text-secondary)',\n };\n return colors[status] || 'var(--text-secondary)';\n}\n\n/**\n * 状态文本映射\n */\nfunction getStatusText(status: string): string {\n const texts: Record<string, string> = {\n pending: '待执行',\n in_progress: '进行中',\n completed: '已完成',\n deleted: '已删除',\n };\n return texts[status] || status;\n}\n\nexport default {\n call: (args: any) => {\n let output = `<div class=\"bash-command\">更新任务 <span class=\"pattern\">#${escapeHtml(args.taskId || '')}</span>`;\n if (args.status) {\n output += ` → <span style=\"color:${getStatusColor(args.status)}\">${getStatusText(args.status)}</span>`;\n }\n output += `</div>`;\n return output;\n },\n result: (data: any, success?: boolean) => {\n if (!success || data.error) {\n return `<div class=\"tool-error\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"/></svg>\n <span>${escapeHtml(data.error || '更新任务失败')}</span>\n </div>`;\n }\n if (data.status === 'deleted') {\n return `<div style=\"color:var(--success-color)\">✓ ${escapeHtml(data.message || '任务已删除')}</div>`;\n }\n return `<div style=\"color:var(--success-color)\">✓ ${escapeHtml(data.message || '任务已更新')}</div>`;\n }\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";;;AASA,SAAS,WAAW,MAAmB;AACrC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,MAA8B;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACA,SAAO,IAAI,QAAQ,YAAY,OAAK,IAAI,CAAC,CAAC;AAC5C;AAKA,SAAS,eAAe,QAAwB;AAC9C,QAAM,SAAiC;AAAA,IACrC,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACA,SAAO,OAAO,MAAM,KAAK;AAC3B;AAKA,SAAS,cAAc,QAAwB;AAC7C,QAAM,QAAgC;AAAA,IACpC,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACA,SAAO,MAAM,MAAM,KAAK;AAC1B;AAEA,IAAO,6BAAQ;AAAA,EACb,MAAM,CAAC,SAAc;AACnB,QAAI,SAAS,6EAAyD,WAAW,KAAK,UAAU,EAAE,CAAC;AACnG,QAAI,KAAK,QAAQ;AACf,gBAAU,8BAAyB,eAAe,KAAK,MAAM,CAAC,KAAK,cAAc,KAAK,MAAM,CAAC;AAAA,IAC/F;AACA,cAAU;AACV,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,CAAC,MAAW,YAAsB;AACxC,QAAI,CAAC,WAAW,KAAK,OAAO;AAC1B,aAAO;AAAA;AAAA,gBAEG,WAAW,KAAK,SAAS,sCAAQ,CAAC;AAAA;AAAA,IAE9C;AACA,QAAI,KAAK,WAAW,WAAW;AAC7B,aAAO,kDAA6C,WAAW,KAAK,WAAW,gCAAO,CAAC;AAAA,IACzF;AACA,WAAO,kDAA6C,WAAW,KAAK,WAAW,gCAAO,CAAC;AAAA,EACzF;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * capture_and_understand_window 工具渲染模板
3
+ */
4
+ declare const _default: {
5
+ readonly call: (data: Record<string, any>) => string;
6
+ readonly result: (data: Record<string, any>, success?: boolean) => string;
7
+ };
8
+
9
+ export { _default as default };
@@ -0,0 +1,49 @@
1
+ import "../../../chunk-BDS2QGZ5.js";
2
+
3
+ // src/features/visual/templates/capture.render.ts
4
+ function escapeHtml(text) {
5
+ const str = String(text);
6
+ return str.replace(
7
+ /[&<>"']/g,
8
+ (m) => ({
9
+ "&": "&amp;",
10
+ "<": "&lt;",
11
+ ">": "&gt;",
12
+ '"': "&quot;",
13
+ "'": "&#39;"
14
+ })[m]
15
+ );
16
+ }
17
+ var capture_render_default = {
18
+ call: (data) => {
19
+ const hwnd = data.hwnd ?? "";
20
+ return `
21
+ <div class="visual-tool-call">
22
+ <div class="tool-header">
23
+ <span class="tool-name">\u{1F4F8} \u89C6\u89C9\u7406\u89E3</span>
24
+ </div>
25
+ <div class="tool-args">
26
+ <span class="arg-label">\u7A97\u53E3\u53E5\u67C4:</span>
27
+ <code class="arg-value">${escapeHtml(hwnd)}</code>
28
+ </div>
29
+ </div>
30
+ `;
31
+ },
32
+ result: (data, success) => {
33
+ const result = typeof data === "string" ? data : JSON.stringify(data, null, 2);
34
+ const isError = !success || result.includes("\u622A\u56FE\u5931\u8D25") || result.includes("\u89C6\u89C9\u7406\u89E3\u5931\u8D25");
35
+ return `
36
+ <div class="visual-tool-result ${isError ? "error" : ""}">
37
+ <div class="result-header">
38
+ <span class="result-icon">${isError ? "\u274C" : "\u2705"}</span>
39
+ <span class="result-title">${isError ? "\u5931\u8D25" : "\u6210\u529F"}</span>
40
+ </div>
41
+ <pre class="result-content">${escapeHtml(result)}</pre>
42
+ </div>
43
+ `;
44
+ }
45
+ };
46
+ export {
47
+ capture_render_default as default
48
+ };
49
+ //# sourceMappingURL=capture.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/visual/templates/capture.render.ts"],"sourcesContent":["/**\n * capture_and_understand_window 工具渲染模板\n */\n\nimport type { InlineRenderTemplate } from '../../../core/types.js';\n\nfunction escapeHtml(text: unknown): string {\n const str = String(text);\n return str.replace(/[&<>\"']/g, (m) =>\n ({\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n }[m]!)\n );\n}\n\nexport default {\n call: (data: Record<string, any>) => {\n const hwnd = data.hwnd as string ?? '';\n return `\n <div class=\"visual-tool-call\">\n <div class=\"tool-header\">\n <span class=\"tool-name\">📸 视觉理解</span>\n </div>\n <div class=\"tool-args\">\n <span class=\"arg-label\">窗口句柄:</span>\n <code class=\"arg-value\">${escapeHtml(hwnd)}</code>\n </div>\n </div>\n `;\n },\n\n result: (data: Record<string, any>, success?: boolean) => {\n const result = typeof data === 'string' ? data : JSON.stringify(data, null, 2);\n // 判断是否包含错误\n const isError = !success || result.includes('截图失败') || result.includes('视觉理解失败');\n\n return `\n <div class=\"visual-tool-result ${isError ? 'error' : ''}\">\n <div class=\"result-header\">\n <span class=\"result-icon\">${isError ? '❌' : '✅'}</span>\n <span class=\"result-title\">${isError ? '失败' : '成功'}</span>\n </div>\n <pre class=\"result-content\">${escapeHtml(result)}</pre>\n </div>\n `;\n },\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";;;AAMA,SAAS,WAAW,MAAuB;AACzC,QAAM,MAAM,OAAO,IAAI;AACvB,SAAO,IAAI;AAAA,IAAQ;AAAA,IAAY,CAAC,OAC7B;AAAA,MACC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACP,GAAE,CAAC;AAAA,EACL;AACF;AAEA,IAAO,yBAAQ;AAAA,EACb,MAAM,CAAC,SAA8B;AACnC,UAAM,OAAO,KAAK,QAAkB;AACpC,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCAOyB,WAAW,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,EAIlD;AAAA,EAEA,QAAQ,CAAC,MAA2B,YAAsB;AACxD,UAAM,SAAS,OAAO,SAAS,WAAW,OAAO,KAAK,UAAU,MAAM,MAAM,CAAC;AAE7E,UAAM,UAAU,CAAC,WAAW,OAAO,SAAS,0BAAM,KAAK,OAAO,SAAS,sCAAQ;AAE/E,WAAO;AAAA,uCAC4B,UAAU,UAAU,EAAE;AAAA;AAAA,sCAEvB,UAAU,WAAM,QAAG;AAAA,uCAClB,UAAU,iBAAO,cAAI;AAAA;AAAA,sCAEtB,WAAW,MAAM,CAAC;AAAA;AAAA;AAAA,EAGtD;AACF;","names":[]}
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ readonly call: (_args: Record<string, unknown>) => string;
3
+ readonly result: (data: unknown, success?: boolean) => string;
4
+ };
5
+
6
+ export { _default as default };
@@ -0,0 +1,30 @@
1
+ import "../../../chunk-BDS2QGZ5.js";
2
+
3
+ // src/features/websearch/templates/crawl4ai.render.ts
4
+ function escapeHtml(text) {
5
+ const str = String(text);
6
+ const map = {
7
+ "&": "&amp;",
8
+ "<": "&lt;",
9
+ ">": "&gt;",
10
+ '"': "&quot;",
11
+ "'": "&#39;"
12
+ };
13
+ return str.replace(/[&<>"']/g, (m) => map[m]);
14
+ }
15
+ var crawl4ai_render_default = {
16
+ call: (_args) => {
17
+ return `<div class="web-fetch-call">crawl4ai MCP call</div>`;
18
+ },
19
+ result: (data, success) => {
20
+ if (!success) {
21
+ return `<div class="tool-error">${escapeHtml(data)}</div>`;
22
+ }
23
+ const content = typeof data === "object" ? JSON.stringify(data, null, 2) : String(data ?? "");
24
+ return `<pre style="background:var(--bg-secondary); padding:8px; border-radius:4px; overflow:auto; max-height:300px;">${escapeHtml(content)}</pre>`;
25
+ }
26
+ };
27
+ export {
28
+ crawl4ai_render_default as default
29
+ };
30
+ //# sourceMappingURL=crawl4ai.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/websearch/templates/crawl4ai.render.ts"],"sourcesContent":["import type { InlineRenderTemplate } from '../../../core/types.js';\n\nfunction escapeHtml(text: unknown): string {\n const str = String(text);\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n };\n return str.replace(/[&<>\"']/g, m => map[m]!);\n}\n\nexport default {\n call: (_args: Record<string, unknown>) => {\n return `<div class=\"web-fetch-call\">crawl4ai MCP call</div>`;\n },\n result: (data: unknown, success?: boolean) => {\n if (!success) {\n return `<div class=\"tool-error\">${escapeHtml(data)}</div>`;\n }\n\n const content = typeof data === 'object'\n ? JSON.stringify(data, null, 2)\n : String(data ?? '');\n\n return `<pre style=\"background:var(--bg-secondary); padding:8px; border-radius:4px; overflow:auto; max-height:300px;\">${escapeHtml(content)}</pre>`;\n },\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";;;AAEA,SAAS,WAAW,MAAuB;AACzC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,MAA8B;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACA,SAAO,IAAI,QAAQ,YAAY,OAAK,IAAI,CAAC,CAAE;AAC7C;AAEA,IAAO,0BAAQ;AAAA,EACb,MAAM,CAAC,UAAmC;AACxC,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,CAAC,MAAe,YAAsB;AAC5C,QAAI,CAAC,SAAS;AACZ,aAAO,2BAA2B,WAAW,IAAI,CAAC;AAAA,IACpD;AAEA,UAAM,UAAU,OAAO,SAAS,WAC5B,KAAK,UAAU,MAAM,MAAM,CAAC,IAC5B,OAAO,QAAQ,EAAE;AAErB,WAAO,iHAAiH,WAAW,OAAO,CAAC;AAAA,EAC7I;AACF;","names":[]}
@@ -0,0 +1,12 @@
1
+ import { I as InlineRenderTemplate } from '../../../types-DUKIIntb.js';
2
+
3
+ /**
4
+ * Web Fetch 工具渲染模板(WebSearch Feature 内部模板)
5
+ */
6
+
7
+ /**
8
+ * Web Fetch 渲染模板
9
+ */
10
+ declare const webFetchRender: InlineRenderTemplate;
11
+
12
+ export { webFetchRender as default };