ai-helper-agent 2.3.1 → 2.4.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 (74) hide show
  1. package/README.md +13 -3
  2. package/dist/assets/__vite-browser-external-CM3Eme-n.js +1 -0
  3. package/dist/assets/agent-store-Ce3f4Ya3.js +1 -0
  4. package/dist/assets/background.js +104 -80
  5. package/dist/assets/chat-export-CWSUeOo4.js +37 -0
  6. package/dist/assets/chunk-CMxvf4Kt.js +1 -0
  7. package/dist/assets/content.js +159 -156
  8. package/dist/assets/{dist-BQOFgIxk.js → dist-DhUTa_WT.js} +5 -6
  9. package/dist/assets/dist-LQPh1k0y.js +24 -0
  10. package/dist/assets/i18n-ouMgDZ2t.js +49 -0
  11. package/dist/assets/jszip.min-Bm_16osY.js +2 -0
  12. package/dist/assets/lib-33nIefF6.js +220 -0
  13. package/dist/assets/{marked.min.js-08SGy6CO.js → marked.min.js-D2rXgLAQ.js} +7 -8
  14. package/dist/assets/{marked.min.js-loader-4kRZ9iCP.js → marked.min.js-loader-tKH5SQVQ.js} +1 -1
  15. package/dist/assets/model-profiles-6dzdrSS4.js +24 -0
  16. package/dist/assets/network-scope-CNRYXk74.js +1 -0
  17. package/dist/assets/options-Cp1UMkjK.css +1 -0
  18. package/dist/assets/options.js +108 -102
  19. package/dist/assets/{page-snapshot-renderer-CVL6r6Kf.js → page-snapshot-renderer-j72q92KH.js} +2 -3
  20. package/dist/assets/pdf-DnVqBaAN.js +6 -0
  21. package/dist/assets/session-store-CmGs_rhh.js +76 -0
  22. package/dist/assets/side_panel.css +1 -1
  23. package/dist/assets/side_panel.js +958 -1124
  24. package/dist/assets/theme-BRAX5X2F.css +1 -0
  25. package/dist/assets/{modulepreload-polyfill-P2Xu9kJm.js → theme-CLwYsx9o.js} +1 -1
  26. package/dist/assets/utils-9i9g8vW8.js +112 -0
  27. package/dist/assets/version-BrT5Y9A7.js +1 -0
  28. package/dist/assets/xlsx-DGkz7cnk.js +105 -0
  29. package/dist/manifest.json +2 -5
  30. package/dist/offscreen/offscreen.js +7 -7
  31. package/dist/options.html +151 -75
  32. package/dist/side_panel.html +167 -137
  33. package/package.json +1 -1
  34. package/src/config.js +3 -2
  35. package/src/executor.js +99 -18
  36. package/src/locales/en.json +16 -2
  37. package/src/locales/zh.json +16 -2
  38. package/src/memory/injection.js +12 -2
  39. package/src/memory/routes.js +6 -0
  40. package/src/memory/service.js +57 -2
  41. package/src/rag/manager.js +1 -1
  42. package/src/rag/url-guard.js +27 -12
  43. package/src/security.js +433 -31
  44. package/src/server.js +28 -8
  45. package/dist/assets/agent-store-DcAs6YyA.js +0 -2
  46. package/dist/assets/agent-store-DcAs6YyA.js.map +0 -1
  47. package/dist/assets/background.js.map +0 -1
  48. package/dist/assets/dist-BQOFgIxk.js.map +0 -1
  49. package/dist/assets/i18n-C4jSRoCH.js +0 -50
  50. package/dist/assets/i18n-C4jSRoCH.js.map +0 -1
  51. package/dist/assets/jszip.min-BXqW2-9v.js +0 -3
  52. package/dist/assets/jszip.min-BXqW2-9v.js.map +0 -1
  53. package/dist/assets/lib-Bi7BFuND.js +0 -221
  54. package/dist/assets/lib-Bi7BFuND.js.map +0 -1
  55. package/dist/assets/marked.min.js-08SGy6CO.js.map +0 -1
  56. package/dist/assets/model-profiles-Dl_MsXWa.js +0 -25
  57. package/dist/assets/model-profiles-Dl_MsXWa.js.map +0 -1
  58. package/dist/assets/options-8-nu3P5K.css +0 -1
  59. package/dist/assets/options.js.map +0 -1
  60. package/dist/assets/page-snapshot-renderer-CVL6r6Kf.js.map +0 -1
  61. package/dist/assets/pdf-HiJ0icvU.js +0 -7
  62. package/dist/assets/pdf-HiJ0icvU.js.map +0 -1
  63. package/dist/assets/rolldown-runtime-C0FnF6B9.js +0 -1
  64. package/dist/assets/session-store-CzVQCgQ_.js +0 -77
  65. package/dist/assets/session-store-CzVQCgQ_.js.map +0 -1
  66. package/dist/assets/side_panel.js.map +0 -1
  67. package/dist/assets/version-CNG2KGnJ.js +0 -2
  68. package/dist/assets/version-CNG2KGnJ.js.map +0 -1
  69. package/dist/assets/xlsx-BHKh7vjA.js +0 -106
  70. package/dist/assets/xlsx-BHKh7vjA.js.map +0 -1
  71. package/dist/icons/badges/license-MIT.svg +0 -21
  72. package/dist/icons/badges/platform.svg +0 -21
  73. package/dist/icons/badges/prs-welcome.svg +0 -21
  74. package/dist/icons/badges/version.svg +0 -21
package/README.md CHANGED
@@ -110,9 +110,9 @@ All file operations are restricted to directories listed in the `allowedPaths` w
110
110
  | Type | Examples |
111
111
  |------|----------|
112
112
  | Disk destruction | `rm -rf /`, `mkfs.*`, `dd if=... of=/dev/...` |
113
+ | Recursive delete of critical system dirs | `rm -rf /usr`, `/var`, `/bin`, `/sbin`, `/lib`, `/boot`, `/opt`, `/root`, `/System`, `/Library` |
113
114
  | System file overwrite | `> /etc/passwd`, `> /etc/shadow` |
114
115
  | Malicious pipe execution | `curl ... \| bash`, `git clone ... \| sh` |
115
- | Shell injection | Backticks, `$()`, `${}` command substitution |
116
116
  | Fork bomb | `:(){ :\|:& };:` |
117
117
 
118
118
  **Greylist** — Requires user confirmation before execution:
@@ -122,10 +122,20 @@ All file operations are restricted to directories listed in the `allowedPaths` w
122
122
  | `sudo ...` | Requires admin privileges |
123
123
  | `npm install -g ...` | Global package installation |
124
124
  | `pip install/uninstall` | Python package management |
125
- | `chmod -R 777` | Recursive permission modification |
126
- | `rm -rf ...` | Recursive forced deletion |
125
+ | `chmod -R 777`, `chmod 000`, `chmod a-rwx` | Permission change that renders a file unusable |
126
+ | `chown ...` | Change file owner |
127
+ | `rm -rf ...` (incl. `rm -r -f`, `rm --recursive --force`) | Recursive forced deletion |
128
+ | `dd of=...`, `shred`, `truncate -s 0` | Raw overwrite / destroy / empty a file |
129
+ | `curl`, `wget`, `nc`, `ssh`, `scp` | Outbound network connection |
130
+ | `kill`, `pkill`, `killall` | Terminate processes |
131
+ | `systemctl`, `launchctl`, `crontab`, `sysctl` | System service / scheduled jobs / kernel parameters |
127
132
  | `git push --force` | Force push |
128
133
  | `shutdown/reboot` | System shutdown/restart |
134
+ | backticks, `$()` command substitution | Statically unclear where the substituted result flows |
135
+
136
+ > Command substitution (`$(…)`, backticks) is treated as *suspicious syntax*, not a *dangerous effect*: it sits in the greylist (confirm), not the blacklist, and read-only heads such as `echo`/`pwd`/`cd` are exempted so `pwd; echo $(date)` runs directly. Commands **inside** a substitution — including one nested in quotes, e.g. `bash -c "echo \`rm -rf /\`"` — are still checked against the black/grey lists.
137
+
138
+ > Anti-bypass: privilege prefixes (`sudo` / `doas`) are peeled before matching, so a hard-forbidden action stays `deny` even when wrapped — `sudo rm -rf /usr`, `sudo dd of=/dev/sda`, `sudo sh -c "rm -rf /usr"`, `curl … | sudo sh`. Redirects that overwrite system files match anywhere in the line (`echo x > /etc/passwd`), path spellings are normalized (`rm -rf //usr` ≡ `/usr`), and the root-permission blacklist targets only `/` itself (plain absolute paths like `chmod 777 /tmp/x` fall back to greylist confirm, not a hard block).
129
139
 
130
140
  ### Authentication
131
141
 
@@ -0,0 +1 @@
1
+ import{t as e}from"./chunk-CMxvf4Kt.js";var t=e(((e,t)=>{t.exports={}}));export{t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-CMxvf4Kt.js";import{a as t,c as n}from"./i18n-ouMgDZ2t.js";import{_ as r,v as i}from"./session-store-CmGs_rhh.js";var a=e({createAgent:()=>m,deleteAgent:()=>g,getActiveAgentId:()=>_,getAgent:()=>p,getAllAgents:()=>d,getCustomAgents:()=>f,setActiveAgentId:()=>v,updateAgent:()=>h});t(`zh`,{agentStore:{unnamedAgent:`未命名Agent`}}),t(`en`,{agentStore:{unnamedAgent:`Unnamed Agent`}});var o=`customAgents`,s=`activeAssistantId`,c=`activeAgentId`,l=!1;async function u(){if(l)return;l=!0;let e=await chrome.storage.local.get([c,s]),t=e[c],n=e[s];t&&!n&&!t.startsWith(`pa_`)&&(await chrome.storage.local.set({[s]:t}),await chrome.storage.local.remove(c))}async function d(){let e=(await chrome.storage.local.get([o]))[o]||[];return[...r,...e]}async function f(){return(await chrome.storage.local.get([o]))[o]||[]}async function p(e){return e&&(await d()).find(t=>t.id===e)||null}async function m(e){let t=await f(),r={id:i(),name:e.name||n(`agentStore.unnamedAgent`),description:e.description||``,icon:e.icon||`🤖`,systemPrompt:e.systemPrompt||``,toolIds:e.toolIds||null,skillIds:e.skillIds||null,mcpExcludedServerIds:e.mcpExcludedServerIds??null,isBuiltin:!1,allowSubDispatch:e.allowSubDispatch===void 0?!1:e.allowSubDispatch,model:e.model||null,temperature:e.temperature===void 0?null:e.temperature,topP:e.topP===void 0?null:e.topP,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return t.push(r),await chrome.storage.local.set({[o]:t}),r}async function h(e,t){let n=await f(),r=n.findIndex(t=>t.id===e);return r===-1?null:(n[r]={...n[r],...t,id:e,isBuiltin:!1,updatedAt:new Date().toISOString()},await chrome.storage.local.set({[o]:n}),n[r])}async function g(e){let t=await f(),n=t.findIndex(t=>t.id===e);return n===-1?!1:(t.splice(n,1),await chrome.storage.local.set({[o]:t}),(await chrome.storage.local.get([s]))[s]===e&&await chrome.storage.local.remove(s),!0)}async function _(){return await u(),(await chrome.storage.local.get([s]))[s]||null}async function v(e){e?await chrome.storage.local.set({[s]:e}):await chrome.storage.local.remove(s)}export{p as a,h as c,_ as i,m as n,d as o,g as r,v as s,a as t};