@agentdevjs/shell-feature 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/dist/index.d.ts +344 -0
- package/dist/index.js +1516 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/bash.render.d.ts +29 -0
- package/dist/templates/bash.render.js +101 -0
- package/dist/templates/bash.render.js.map +1 -0
- package/dist/templates/trash-delete.render.d.ts +14 -0
- package/dist/templates/trash-delete.render.js +36 -0
- package/dist/templates/trash-delete.render.js.map +1 -0
- package/dist/templates/trash-list.render.d.ts +19 -0
- package/dist/templates/trash-list.render.js +46 -0
- package/dist/templates/trash-list.render.js.map +1 -0
- package/dist/templates/trash-restore.render.d.ts +17 -0
- package/dist/templates/trash-restore.render.js +45 -0
- package/dist/templates/trash-restore.render.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// src/templates/trash-restore.render.ts
|
|
2
|
+
function escapeHtml(text) {
|
|
3
|
+
const str = String(text);
|
|
4
|
+
const map = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" };
|
|
5
|
+
return str.replace(/[&<>"']/g, (m) => map[m]);
|
|
6
|
+
}
|
|
7
|
+
function formatError(data) {
|
|
8
|
+
const text = typeof data === "object" ? JSON.stringify(data, null, 2) : String(data);
|
|
9
|
+
return `<div class="tool-error"><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><span>${escapeHtml(text)}</span></div>`;
|
|
10
|
+
}
|
|
11
|
+
var trash_restore_render_default = {
|
|
12
|
+
call: (args) => {
|
|
13
|
+
const target = args.target !== void 0 ? escapeHtml(String(args.target)) : "";
|
|
14
|
+
return `<div class="bash-command">Restore <span class="pattern">${target}</span></div>`;
|
|
15
|
+
},
|
|
16
|
+
result: (data, success) => {
|
|
17
|
+
if (!success) return formatError(data);
|
|
18
|
+
const restored = data.restored || [];
|
|
19
|
+
const failed = data.failed || [];
|
|
20
|
+
if (restored.length > 0 && failed.length === 0) {
|
|
21
|
+
let html = `<div style="color:var(--success-color)"><svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" style="vertical-align:middle;margin-right:4px"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>Restored ${restored.length} item(s)</div>`;
|
|
22
|
+
if (restored.length > 0 && restored.length <= 5) {
|
|
23
|
+
html += `<div style="font-size:11px;color:var(--text-secondary);margin-top:4px">${restored.map((p) => escapeHtml(p)).join(", ")}</div>`;
|
|
24
|
+
}
|
|
25
|
+
return html;
|
|
26
|
+
}
|
|
27
|
+
if (restored.length > 0 || failed.length > 0) {
|
|
28
|
+
let html = "";
|
|
29
|
+
if (restored.length > 0) {
|
|
30
|
+
html += `<div style="color:var(--success-color);margin-bottom:4px"><svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" style="vertical-align:middle;margin-right:4px"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>Restored ${restored.length}</div>`;
|
|
31
|
+
}
|
|
32
|
+
if (failed.length > 0) {
|
|
33
|
+
html += `<div style="color:var(--error-color);margin-bottom:4px"><svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" style="vertical-align:middle;margin-right:4px"><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>${failed.length} failed</div>`;
|
|
34
|
+
const errorMessages = failed.map((f) => `${escapeHtml(f.path)}: ${escapeHtml(f.error)}`).join("; ");
|
|
35
|
+
html += `<div style="font-size:11px;color:var(--error-color);margin-top:4px">${errorMessages}</div>`;
|
|
36
|
+
}
|
|
37
|
+
return html || `<div style="color:var(--text-secondary)">Nothing restored</div>`;
|
|
38
|
+
}
|
|
39
|
+
return `<div style="color:var(--text-secondary)">Nothing restored</div>`;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
export {
|
|
43
|
+
trash_restore_render_default as default
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=trash-restore.render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/templates/trash-restore.render.ts"],"sourcesContent":["/**\n * Safe Trash Restore 渲染模板\n */\n\nimport type { InlineRenderTemplate } from '@agentdevjs/core';\n\nfunction escapeHtml(text: unknown): string {\n const str = String(text);\n const map: Record<string, string> = { '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' };\n return str.replace(/[&<>\"']/g, m => map[m]!);\n}\n\nfunction formatError(data: unknown): string {\n const text = typeof data === 'object' ? JSON.stringify(data, null, 2) : String(data);\n return `<div class=\"tool-error\"><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><span>${escapeHtml(text)}</span></div>`;\n}\n\nexport default {\n call: (args: { target?: string | number }) => {\n const target = args.target !== undefined ? escapeHtml(String(args.target)) : '';\n return `<div class=\"bash-command\">Restore <span class=\"pattern\">${target}</span></div>`;\n },\n result: (data: { restored?: string[]; failed?: Array<{ path: string; error: string }> }, success?: boolean) => {\n if (!success) return formatError(data);\n const restored = data.restored || [];\n const failed = data.failed || [];\n if (restored.length > 0 && failed.length === 0) {\n let html = `<div style=\"color:var(--success-color)\"><svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" style=\"vertical-align:middle;margin-right:4px\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/></svg>Restored ${restored.length} item(s)</div>`;\n if (restored.length > 0 && restored.length <= 5) {\n html += `<div style=\"font-size:11px;color:var(--text-secondary);margin-top:4px\">${restored.map(p => escapeHtml(p)).join(', ')}</div>`;\n }\n return html;\n }\n if (restored.length > 0 || failed.length > 0) {\n let html = '';\n if (restored.length > 0) {\n html += `<div style=\"color:var(--success-color);margin-bottom:4px\"><svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" style=\"vertical-align:middle;margin-right:4px\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/></svg>Restored ${restored.length}</div>`;\n }\n if (failed.length > 0) {\n html += `<div style=\"color:var(--error-color);margin-bottom:4px\"><svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" style=\"vertical-align:middle;margin-right:4px\"><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>${failed.length} failed</div>`;\n const errorMessages = failed.map(f => `${escapeHtml(f.path)}: ${escapeHtml(f.error)}`).join('; ');\n html += `<div style=\"font-size:11px;color:var(--error-color);margin-top:4px\">${errorMessages}</div>`;\n }\n return html || `<div style=\"color:var(--text-secondary)\">Nothing restored</div>`;\n }\n return `<div style=\"color:var(--text-secondary)\">Nothing restored</div>`;\n }\n} as const satisfies InlineRenderTemplate;\n"],"mappings":";AAMA,SAAS,WAAW,MAAuB;AACzC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,MAA8B,EAAE,KAAK,SAAS,KAAK,QAAQ,KAAK,QAAQ,KAAK,UAAU,KAAK,QAAQ;AAC1G,SAAO,IAAI,QAAQ,YAAY,OAAK,IAAI,CAAC,CAAE;AAC7C;AAEA,SAAS,YAAY,MAAuB;AAC1C,QAAM,OAAO,OAAO,SAAS,WAAW,KAAK,UAAU,MAAM,MAAM,CAAC,IAAI,OAAO,IAAI;AACnF,SAAO,uNAAuN,WAAW,IAAI,CAAC;AAChP;AAEA,IAAO,+BAAQ;AAAA,EACb,MAAM,CAAC,SAAuC;AAC5C,UAAM,SAAS,KAAK,WAAW,SAAY,WAAW,OAAO,KAAK,MAAM,CAAC,IAAI;AAC7E,WAAO,2DAA2D,MAAM;AAAA,EAC1E;AAAA,EACA,QAAQ,CAAC,MAAgF,YAAsB;AAC7G,QAAI,CAAC,QAAS,QAAO,YAAY,IAAI;AACrC,UAAM,WAAW,KAAK,YAAY,CAAC;AACnC,UAAM,SAAS,KAAK,UAAU,CAAC;AAC/B,QAAI,SAAS,SAAS,KAAK,OAAO,WAAW,GAAG;AAC9C,UAAI,OAAO,0OAA0O,SAAS,MAAM;AACpQ,UAAI,SAAS,SAAS,KAAK,SAAS,UAAU,GAAG;AAC/C,gBAAQ,0EAA0E,SAAS,IAAI,OAAK,WAAW,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,MAC/H;AACA,aAAO;AAAA,IACT;AACA,QAAI,SAAS,SAAS,KAAK,OAAO,SAAS,GAAG;AAC5C,UAAI,OAAO;AACX,UAAI,SAAS,SAAS,GAAG;AACvB,gBAAQ,4PAA4P,SAAS,MAAM;AAAA,MACrR;AACA,UAAI,OAAO,SAAS,GAAG;AACrB,gBAAQ,gSAAgS,OAAO,MAAM;AACrT,cAAM,gBAAgB,OAAO,IAAI,OAAK,GAAG,WAAW,EAAE,IAAI,CAAC,KAAK,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,IAAI;AAChG,gBAAQ,uEAAuE,aAAa;AAAA,MAC9F;AACA,aAAO,QAAQ;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agentdevjs/shell-feature",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shell execution feature for AgentDev - provides bash execution and safe trash operations",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"README.md"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsup",
|
|
14
|
+
"dev": "tsup --watch",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"test:watch": "vitest",
|
|
17
|
+
"prepublishOnly": "npm run build"
|
|
18
|
+
},
|
|
19
|
+
"tsup": {
|
|
20
|
+
"entry": [
|
|
21
|
+
"src/index.ts",
|
|
22
|
+
"src/templates/*.render.ts"
|
|
23
|
+
],
|
|
24
|
+
"format": "esm",
|
|
25
|
+
"dts": true,
|
|
26
|
+
"clean": true,
|
|
27
|
+
"sourcemap": true
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"@agentdevjs/core": "^0.1.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/node": "^20.11.0",
|
|
34
|
+
"tsup": "^8.3.5",
|
|
35
|
+
"typescript": "^5.3.3",
|
|
36
|
+
"vitest": "^4.1.10",
|
|
37
|
+
"@agentdevjs/core": "file:../core"
|
|
38
|
+
},
|
|
39
|
+
"keywords": [
|
|
40
|
+
"agentdev",
|
|
41
|
+
"feature",
|
|
42
|
+
"shell",
|
|
43
|
+
"bash",
|
|
44
|
+
"trash"
|
|
45
|
+
],
|
|
46
|
+
"license": "MIT"
|
|
47
|
+
}
|