@akasecurity/cli 0.9.3 → 0.9.5

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 (200) hide show
  1. package/README.md +18 -0
  2. package/dist/cli.js +3819 -448
  3. package/extension/background.js +1 -0
  4. package/extension/content.js +1 -0
  5. package/extension/icons/icon128.png +0 -0
  6. package/extension/icons/icon16.png +0 -0
  7. package/extension/icons/icon48.png +0 -0
  8. package/extension/manifest.json +39 -0
  9. package/extension/popup.html +69 -0
  10. package/extension/popup.js +1 -0
  11. package/native-host/host.js +31084 -0
  12. package/native-host/scan-worker.js +18006 -0
  13. package/package.json +13 -9
  14. package/web-ui/package.json +13 -5
  15. package/web-ui/packages/dashboard-ui/package.json +4 -1
  16. package/web-ui/packages/detections/package.json +1 -1
  17. package/web-ui/packages/local-ops/package.json +1 -1
  18. package/web-ui/packages/persistence/package.json +1 -1
  19. package/web-ui/packages/plugin-sdk/package.json +4 -2
  20. package/web-ui/packages/schema/package.json +1 -1
  21. package/web-ui/packages/ui-kit/package.json +2 -1
  22. package/web-ui/rules/secrets/gcp-service-account.json +1 -1
  23. package/web-ui/web-ui/.next/BUILD_ID +1 -1
  24. package/web-ui/web-ui/.next/app-build-manifest.json +272 -125
  25. package/web-ui/web-ui/.next/app-path-routes-manifest.json +6 -5
  26. package/web-ui/web-ui/.next/build-manifest.json +14 -14
  27. package/web-ui/web-ui/.next/prerender-manifest.json +18 -18
  28. package/web-ui/web-ui/.next/required-server-files.json +6 -2
  29. package/web-ui/web-ui/.next/routes-manifest.json +6 -0
  30. package/web-ui/web-ui/.next/server/app/(app)/activity/page.js +2 -2
  31. package/web-ui/web-ui/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  32. package/web-ui/web-ui/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  33. package/web-ui/web-ui/.next/server/app/(app)/data-shares/page.js +2 -2
  34. package/web-ui/web-ui/.next/server/app/(app)/data-shares/page.js.nft.json +1 -1
  35. package/web-ui/web-ui/.next/server/app/(app)/data-shares/page_client-reference-manifest.js +1 -1
  36. package/web-ui/web-ui/.next/server/app/(app)/detections/page.js +2 -2
  37. package/web-ui/web-ui/.next/server/app/(app)/detections/page.js.nft.json +1 -1
  38. package/web-ui/web-ui/.next/server/app/(app)/detections/page_client-reference-manifest.js +1 -1
  39. package/web-ui/web-ui/.next/server/app/(app)/exceptions/[id]/page.js +2 -2
  40. package/web-ui/web-ui/.next/server/app/(app)/exceptions/[id]/page.js.nft.json +1 -1
  41. package/web-ui/web-ui/.next/server/app/(app)/exceptions/[id]/page_client-reference-manifest.js +1 -1
  42. package/web-ui/web-ui/.next/server/app/(app)/exceptions/new/page.js +2 -2
  43. package/web-ui/web-ui/.next/server/app/(app)/exceptions/new/page.js.nft.json +1 -1
  44. package/web-ui/web-ui/.next/server/app/(app)/exceptions/new/page_client-reference-manifest.js +1 -1
  45. package/web-ui/web-ui/.next/server/app/(app)/exceptions/page.js +2 -2
  46. package/web-ui/web-ui/.next/server/app/(app)/exceptions/page.js.nft.json +1 -1
  47. package/web-ui/web-ui/.next/server/app/(app)/exceptions/page_client-reference-manifest.js +1 -1
  48. package/web-ui/web-ui/.next/server/app/(app)/findings/page.js +2 -2
  49. package/web-ui/web-ui/.next/server/app/(app)/findings/page.js.nft.json +1 -1
  50. package/web-ui/web-ui/.next/server/app/(app)/findings/page_client-reference-manifest.js +1 -1
  51. package/web-ui/web-ui/.next/server/app/(app)/inventory/page.js +2 -2
  52. package/web-ui/web-ui/.next/server/app/(app)/inventory/page.js.nft.json +1 -1
  53. package/web-ui/web-ui/.next/server/app/(app)/inventory/page_client-reference-manifest.js +1 -1
  54. package/web-ui/web-ui/.next/server/app/(app)/policies/page.js +2 -2
  55. package/web-ui/web-ui/.next/server/app/(app)/policies/page.js.nft.json +1 -1
  56. package/web-ui/web-ui/.next/server/app/(app)/policies/page_client-reference-manifest.js +1 -1
  57. package/web-ui/web-ui/.next/server/app/(app)/scan/page.js +2 -2
  58. package/web-ui/web-ui/.next/server/app/(app)/scan/page.js.nft.json +1 -1
  59. package/web-ui/web-ui/.next/server/app/(app)/scan/page_client-reference-manifest.js +1 -1
  60. package/web-ui/web-ui/.next/server/app/(app)/security/page.js +2 -2
  61. package/web-ui/web-ui/.next/server/app/(app)/security/page.js.nft.json +1 -1
  62. package/web-ui/web-ui/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
  63. package/web-ui/web-ui/.next/server/app/(app)/settings/page.js +2 -2
  64. package/web-ui/web-ui/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  65. package/web-ui/web-ui/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  66. package/web-ui/web-ui/.next/server/app/(app)/updates/page.js +2 -2
  67. package/web-ui/web-ui/.next/server/app/(app)/updates/page.js.nft.json +1 -1
  68. package/web-ui/web-ui/.next/server/app/(app)/updates/page_client-reference-manifest.js +1 -1
  69. package/web-ui/web-ui/.next/server/app/(app)/vault/page.js +2 -0
  70. package/web-ui/web-ui/.next/server/app/(app)/vault/page.js.nft.json +1 -0
  71. package/web-ui/web-ui/.next/server/app/(app)/vault/page_client-reference-manifest.js +1 -0
  72. package/web-ui/web-ui/.next/server/app/_not-found/page.js +2 -2
  73. package/web-ui/web-ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  74. package/web-ui/web-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  75. package/web-ui/web-ui/.next/server/app/_not-found.html +1 -1
  76. package/web-ui/web-ui/.next/server/app/_not-found.rsc +10 -10
  77. package/web-ui/web-ui/.next/server/app/icon.svg/route.js +1 -1
  78. package/web-ui/web-ui/.next/server/app/icon.svg/route.js.nft.json +1 -1
  79. package/web-ui/web-ui/.next/server/app/index.html +1 -1
  80. package/web-ui/web-ui/.next/server/app/index.rsc +10 -10
  81. package/web-ui/web-ui/.next/server/app/page.js +2 -2
  82. package/web-ui/web-ui/.next/server/app/page.js.nft.json +1 -1
  83. package/web-ui/web-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  84. package/web-ui/web-ui/.next/server/app-paths-manifest.json +6 -5
  85. package/web-ui/web-ui/.next/server/chunks/114.js +792 -0
  86. package/web-ui/web-ui/.next/server/chunks/160.js +785 -0
  87. package/web-ui/web-ui/.next/server/chunks/243.js +1 -0
  88. package/web-ui/web-ui/.next/server/chunks/330.js +1 -0
  89. package/web-ui/web-ui/.next/server/chunks/333.js +1 -0
  90. package/web-ui/web-ui/.next/server/chunks/363.js +12 -0
  91. package/web-ui/web-ui/.next/server/chunks/447.js +6 -0
  92. package/web-ui/web-ui/.next/server/chunks/528.js +73 -0
  93. package/web-ui/web-ui/.next/server/chunks/539.js +22 -0
  94. package/web-ui/web-ui/.next/server/chunks/557.js +5 -0
  95. package/web-ui/web-ui/.next/server/chunks/561.js +123 -0
  96. package/web-ui/web-ui/.next/server/chunks/935.js +11 -0
  97. package/web-ui/web-ui/.next/server/functions-config-manifest.json +7 -6
  98. package/web-ui/web-ui/.next/server/middleware-build-manifest.js +1 -1
  99. package/web-ui/web-ui/.next/server/middleware-manifest.json +5 -5
  100. package/web-ui/web-ui/.next/server/middleware.js +2 -2
  101. package/web-ui/web-ui/.next/server/pages/404.html +1 -1
  102. package/web-ui/web-ui/.next/server/pages/500.html +1 -1
  103. package/web-ui/web-ui/.next/server/pages/_app.js +1 -1
  104. package/web-ui/web-ui/.next/server/pages/_app.js.nft.json +1 -1
  105. package/web-ui/web-ui/.next/server/pages/_document.js +1 -1
  106. package/web-ui/web-ui/.next/server/pages/_document.js.nft.json +1 -1
  107. package/web-ui/web-ui/.next/server/pages/_error.js +3 -3
  108. package/web-ui/web-ui/.next/server/pages/_error.js.nft.json +1 -1
  109. package/web-ui/web-ui/.next/server/server-reference-manifest.js +1 -1
  110. package/web-ui/web-ui/.next/server/server-reference-manifest.json +1 -1
  111. package/web-ui/web-ui/.next/static/chunks/133-14f0f297836736b9.js +1 -0
  112. package/web-ui/web-ui/.next/static/chunks/321-46ce36c1ef95d231.js +1 -0
  113. package/web-ui/web-ui/.next/static/chunks/539-b35890d398017f99.js +62 -0
  114. package/web-ui/web-ui/.next/static/chunks/89-d23f5e27ab3b468f.js +1 -0
  115. package/web-ui/web-ui/.next/static/chunks/992-ba273ebe2ac236a5.js +1 -0
  116. package/web-ui/web-ui/.next/static/chunks/app/(app)/activity/loading-0e999b82265bac84.js +1 -0
  117. package/web-ui/web-ui/.next/static/chunks/app/(app)/activity/page-90ea4cb1f1956a03.js +1 -0
  118. package/web-ui/web-ui/.next/static/chunks/app/(app)/data-shares/loading-0e999b82265bac84.js +1 -0
  119. package/web-ui/web-ui/.next/static/chunks/app/(app)/data-shares/page-d96aa1158bb1c630.js +1 -0
  120. package/web-ui/web-ui/.next/static/chunks/app/(app)/detections/loading-0e999b82265bac84.js +1 -0
  121. package/web-ui/web-ui/.next/static/chunks/app/(app)/detections/page-269fa2d4f47e6125.js +1 -0
  122. package/web-ui/web-ui/.next/static/chunks/app/(app)/error-092d6780c93209d5.js +1 -0
  123. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/[id]/loading-0e999b82265bac84.js +1 -0
  124. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/[id]/page-4ad5b60f476d7c6e.js +1 -0
  125. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/loading-0e999b82265bac84.js +1 -0
  126. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/new/loading-0e999b82265bac84.js +1 -0
  127. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/new/page-2bf76696fbe6e76d.js +1 -0
  128. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/page-5d2511a7c06dd645.js +1 -0
  129. package/web-ui/web-ui/.next/static/chunks/app/(app)/findings/loading-0e999b82265bac84.js +1 -0
  130. package/web-ui/web-ui/.next/static/chunks/app/(app)/findings/page-1891ec610b461455.js +1 -0
  131. package/web-ui/web-ui/.next/static/chunks/app/(app)/inventory/loading-0e999b82265bac84.js +1 -0
  132. package/web-ui/web-ui/.next/static/chunks/app/(app)/inventory/page-bc090490b3416d48.js +1 -0
  133. package/web-ui/web-ui/.next/static/chunks/app/(app)/layout-d7a290e9b0dd8a15.js +1 -0
  134. package/web-ui/web-ui/.next/static/chunks/app/(app)/policies/loading-0e999b82265bac84.js +1 -0
  135. package/web-ui/web-ui/.next/static/chunks/app/(app)/policies/page-1d1a93a1e561ca82.js +1 -0
  136. package/web-ui/web-ui/.next/static/chunks/app/(app)/scan/loading-0e999b82265bac84.js +1 -0
  137. package/web-ui/web-ui/.next/static/chunks/app/(app)/scan/page-7a1a29a230626f96.js +1 -0
  138. package/web-ui/web-ui/.next/static/chunks/app/(app)/security/loading-0e999b82265bac84.js +1 -0
  139. package/web-ui/web-ui/.next/static/chunks/app/(app)/security/page-a7fa0e028623b7cb.js +1 -0
  140. package/web-ui/web-ui/.next/static/chunks/app/(app)/settings/loading-0e999b82265bac84.js +1 -0
  141. package/web-ui/web-ui/.next/static/chunks/app/(app)/settings/page-9729632fc8128534.js +1 -0
  142. package/web-ui/web-ui/.next/static/chunks/app/(app)/updates/loading-0e999b82265bac84.js +1 -0
  143. package/web-ui/web-ui/.next/static/chunks/app/(app)/updates/page-bda9e826a1ac1a00.js +1 -0
  144. package/web-ui/web-ui/.next/static/chunks/app/(app)/vault/loading-0e999b82265bac84.js +1 -0
  145. package/web-ui/web-ui/.next/static/chunks/app/(app)/vault/page-28116d3ce827e152.js +1 -0
  146. package/web-ui/web-ui/.next/static/chunks/app/_not-found/page-3cf97f2dd544e8cb.js +1 -0
  147. package/web-ui/web-ui/.next/static/chunks/app/layout-f1727d7b45e0779b.js +1 -0
  148. package/web-ui/web-ui/.next/static/chunks/app/page-315a9068831a3ad5.js +1 -0
  149. package/web-ui/web-ui/.next/static/chunks/{dddf6c0a-f09ab3fc84be1c52.js → d043c60e-31360d0d5cb78983.js} +1 -1
  150. package/web-ui/web-ui/.next/static/chunks/framework-a566532c222ba944.js +1 -0
  151. package/web-ui/web-ui/.next/static/chunks/main-app-9e734a14592bc9c4.js +1 -0
  152. package/web-ui/web-ui/.next/static/chunks/main-f710385bb68f9de5.js +1 -0
  153. package/web-ui/web-ui/.next/static/chunks/pages/_app-63f369037199ea68.js +1 -0
  154. package/web-ui/web-ui/.next/static/chunks/pages/_error-41a11264bde7b852.js +1 -0
  155. package/web-ui/web-ui/.next/static/chunks/{webpack-ea80c9c368a8364e.js → webpack-61986b0a62ba55ed.js} +1 -1
  156. package/web-ui/web-ui/.next/static/css/0af7782f7a750368.css +2 -0
  157. package/web-ui/web-ui/.next/static/x4ixG3_q4UeyC_WNmSFdI/_buildManifest.js +1 -0
  158. package/web-ui/web-ui/dist/scan-worker.js +18006 -0
  159. package/web-ui/web-ui/package.json +5 -4
  160. package/web-ui/web-ui/server.js +1 -1
  161. package/web-ui/web-ui/.next/server/chunks/100.js +0 -1
  162. package/web-ui/web-ui/.next/server/chunks/142.js +0 -700
  163. package/web-ui/web-ui/.next/server/chunks/472.js +0 -84
  164. package/web-ui/web-ui/.next/server/chunks/723.js +0 -22
  165. package/web-ui/web-ui/.next/server/chunks/75.js +0 -6
  166. package/web-ui/web-ui/.next/server/chunks/830.js +0 -123
  167. package/web-ui/web-ui/.next/server/chunks/850.js +0 -1
  168. package/web-ui/web-ui/.next/server/chunks/853.js +0 -698
  169. package/web-ui/web-ui/.next/server/chunks/871.js +0 -1
  170. package/web-ui/web-ui/.next/server/chunks/924.js +0 -2
  171. package/web-ui/web-ui/.next/server/chunks/959.js +0 -9
  172. package/web-ui/web-ui/.next/static/X_Z1LZQpnGXTuZXKkv4Vb/_buildManifest.js +0 -1
  173. package/web-ui/web-ui/.next/static/chunks/137-8f757e04d1877a6c.js +0 -1
  174. package/web-ui/web-ui/.next/static/chunks/517-a4643cfd51efbca4.js +0 -1
  175. package/web-ui/web-ui/.next/static/chunks/613-734dcad67e1fa08c.js +0 -1
  176. package/web-ui/web-ui/.next/static/chunks/784-25fa9bc074877c93.js +0 -62
  177. package/web-ui/web-ui/.next/static/chunks/app/(app)/activity/page-72558bcb945a0abc.js +0 -1
  178. package/web-ui/web-ui/.next/static/chunks/app/(app)/data-shares/page-540aa3dbe1c0b3ad.js +0 -1
  179. package/web-ui/web-ui/.next/static/chunks/app/(app)/detections/page-8fac90d5b77b7f89.js +0 -1
  180. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/[id]/page-06ee1868466199df.js +0 -1
  181. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/new/page-8b2ea0bbbc4fc69c.js +0 -1
  182. package/web-ui/web-ui/.next/static/chunks/app/(app)/exceptions/page-2aa604a6c36786fc.js +0 -1
  183. package/web-ui/web-ui/.next/static/chunks/app/(app)/findings/page-28f48db02051d88c.js +0 -1
  184. package/web-ui/web-ui/.next/static/chunks/app/(app)/inventory/page-15bc43471843cf2e.js +0 -1
  185. package/web-ui/web-ui/.next/static/chunks/app/(app)/layout-f034effcd10a332b.js +0 -1
  186. package/web-ui/web-ui/.next/static/chunks/app/(app)/policies/page-de465eacbb359987.js +0 -1
  187. package/web-ui/web-ui/.next/static/chunks/app/(app)/scan/page-fa10c50b1436102d.js +0 -1
  188. package/web-ui/web-ui/.next/static/chunks/app/(app)/security/page-a61b90eb3a575f85.js +0 -1
  189. package/web-ui/web-ui/.next/static/chunks/app/(app)/settings/page-be0284caa1e78227.js +0 -1
  190. package/web-ui/web-ui/.next/static/chunks/app/(app)/updates/page-eec4e54274dcbb4d.js +0 -1
  191. package/web-ui/web-ui/.next/static/chunks/app/_not-found/page-26662e9d7ee32abc.js +0 -1
  192. package/web-ui/web-ui/.next/static/chunks/app/layout-e531d303d8c8a313.js +0 -1
  193. package/web-ui/web-ui/.next/static/chunks/app/page-3ffe075f223c0af9.js +0 -1
  194. package/web-ui/web-ui/.next/static/chunks/framework-f8855380599951ba.js +0 -1
  195. package/web-ui/web-ui/.next/static/chunks/main-app-7291de73392cac56.js +0 -1
  196. package/web-ui/web-ui/.next/static/chunks/main-ff0082770df07ddc.js +0 -1
  197. package/web-ui/web-ui/.next/static/chunks/pages/_app-56d1709db70ee49f.js +0 -1
  198. package/web-ui/web-ui/.next/static/chunks/pages/_error-63dd320a91a40541.js +0 -1
  199. package/web-ui/web-ui/.next/static/css/a30725ee12aca680.css +0 -2
  200. /package/web-ui/web-ui/.next/static/{X_Z1LZQpnGXTuZXKkv4Vb → x4ixG3_q4UeyC_WNmSFdI}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var a="com.akasecurity.aka";var u=3e3,r=null,d=0,o=new Map;function l(e){let n=e,t=n.requestId;if(t===void 0)return;let s=o.get(t);s&&(o.delete(t),s(n))}function f(){r=null;for(let[e,n]of o)n({type:"error",requestId:e,ok:!1,message:"native host disconnected"});o.clear()}function g(){let e=chrome.runtime.connectNative(a);return e.onMessage.addListener(l),e.onDisconnect.addListener(f),e}function m(e){let n=`${Date.now().toString()}-${(d++).toString()}`;return new Promise(t=>{let s=setTimeout(()=>{o.delete(n)&&t({type:"error",requestId:n,ok:!1,message:"the AKA native host did not respond in time"})},u),i=c=>{clearTimeout(s),t(c)};o.set(n,i);try{(r??(r=g())).postMessage({...e,requestId:n})}catch{o.delete(n),i({type:"error",requestId:n,ok:!1,message:"failed to reach the AKA native host \u2014 is it installed? Run `aka extension install`."})}})}function p(e){return typeof e=="object"&&e!==null&&"type"in e}chrome.runtime.onMessage.addListener((e,n,t)=>p(e)?(m(e).then(t).catch(()=>{t({type:"error",requestId:void 0,ok:!1,message:"relay failed"})}),!0):!1);})();
@@ -0,0 +1 @@
1
+ "use strict";(()=>{function T(t){let{adapter:e,sessionId:s,relay:r,showBanner:n}=t,d=!1,u=!1;function c(i){return d=!0,setTimeout(()=>{d=!1},0),e.submit(i)?!0:(d=!1,n("AKA could not send this message \u2014 the send button was not found, so the site may have changed. Your text is still in the composer and was NOT sent.","block"),!1)}async function m(i,l){let o=await r({type:"capture",sessionId:s,tool:e.id,kind:"prompt",text:l}).catch(()=>({type:"error",requestId:void 0,ok:!1,message:"relay failed"}));if(o.type!=="capture"){c(i);return}if(o.action==="block"){n(`AKA blocked this message \u2014 flagged ${o.ruleIds.join(", ")}. Remove it and resend.`,"block");return}if(o.action==="redact"){if(typeof o.text!="string"){n(`AKA could not redact this message (${o.ruleIds.join(", ")}) \u2014 remove the flagged content and resend.`,"block");return}if(e.setText(i,o.text),e.extractText(i).trim()!==o.text.trim()){n("AKA could not redact this message \u2014 remove the flagged content and resend.","block");return}if(!c(i))return;n(`AKA redacted sensitive content (${o.ruleIds.join(", ")}) before sending.`,"redact");return}if(o.action==="warn"){if(!c(i))return;n(`AKA flagged sensitive content (${o.ruleIds.join(", ")}) \u2014 sent unchanged.`,"warn");return}c(i)}return{handleSubmit(i,l){if(d){d=!1;return}let o=e.extractText(l);o.trim()!==""&&(i.preventDefault(),i.stopImmediatePropagation(),!u&&(u=!0,m(l,o).finally(()=>{u=!1})))}}}function p(t){for(let e of t){let s=document.querySelector(e);if(s)return s}return null}function f(t){return t.innerText}function h(t,e){t.focus(),t.textContent=e,t.dispatchEvent(new InputEvent("input",{bubbles:!0,cancelable:!0}))}function b(t,e){let s=r=>{r.key==="Enter"&&!r.shiftKey&&!r.isComposing&&e(r)};return t.addEventListener("keydown",s,!0),()=>{t.removeEventListener("keydown",s,!0)}}function x(t,e){return t.addEventListener("click",e,!0),()=>{t.removeEventListener("click",e,!0)}}var R=["#prompt-textarea",'form [contenteditable="true"][role="textbox"]','form [contenteditable="true"]'],L=['[data-testid="send-button"]','button[aria-label*="send" i]'];function g(){return p(L)}var v={id:"chatgpt",hostnames:["chatgpt.com","chat.openai.com"],findComposer(){return p(R)},findSendButton:g,extractText:f,setText:h,watchSubmit(t,e){let s=b(t,e),r=g(),n=r?x(r,e):void 0;return()=>{s(),n?.()}},submit(){let t=g();return t?(t.click(),!0):!1}};var M=['div[contenteditable="true"][aria-label*="claude" i]','fieldset [contenteditable="true"]','form [contenteditable="true"]'],P=['button[aria-label*="send" i]','fieldset button[type="submit"]'];function y(){return p(P)}var k={id:"claude-ai",hostnames:["claude.ai"],findComposer(){return p(M)},findSendButton:y,extractText:f,setText:h,watchSubmit(t,e){let s=b(t,e),r=y(),n=r?x(r,e):void 0;return()=>{s(),n?.()}},submit(){let t=y();return t?(t.click(),!0):!1}};var w=[v,k],$=w.flatMap(t=>t.hostnames);function S(t){return w.find(e=>e.hostnames.includes(t))??null}var A=S(location.hostname);A&&H(A);function H(t){let e=crypto.randomUUID(),s=T({adapter:t,sessionId:e,relay:B,showBanner:I}),r=null,n=null,d=null,u=!1;function c(){u=!1;let i=t.findComposer(),l=t.findSendButton();if(!(i===r&&l===n))if(d?.(),r=i,n=l,r&&n){let o=r;d=t.watchSubmit(o,C=>{s.handleSubmit(C,o)})}else d=null}function m(){u||(u=!0,requestAnimationFrame(c))}m(),new MutationObserver(m).observe(document.body,{childList:!0,subtree:!0}),B({type:"session_start",sessionId:e,tool:t.id,hostname:location.hostname}).catch(()=>{})}function B(t){return chrome.runtime.sendMessage(t)}var a=null,E=null;function I(t,e){a||(a=document.createElement("div"),a.style.all="initial",a.style.position="fixed",a.style.zIndex="2147483647",a.style.bottom="24px",a.style.left="50%",a.style.transform="translateX(-50%)",document.body.append(a));let s=a.shadowRoot??a.attachShadow({mode:"open"}),r=e==="block"?"#dc2626":e==="redact"?"#d97706":"#2563eb",n=document.createElement("div");n.style.font="13px/1.4 system-ui, sans-serif",n.style.background=r,n.style.color="white",n.style.padding="8px 14px",n.style.borderRadius="8px",n.style.boxShadow="0 4px 12px rgba(0,0,0,0.25)",n.style.maxWidth="480px",n.textContent=t,s.replaceChildren(n),E&&clearTimeout(E),E=setTimeout(()=>{a?.remove(),a=null},6e3)}})();
Binary file
Binary file
Binary file
@@ -0,0 +1,39 @@
1
+ {
2
+ "manifest_version": 3,
3
+ "name": "AI Traffic Control",
4
+ "version": "0.9.5",
5
+ "description": "Local secret detection and redaction for ChatGPT and Claude.ai web chat.",
6
+ "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqnwx5Snbi3oZ7mDBC78NaTHO6dTKYRtCqr29YnOImR47UM21tP1us3KF6FjQMtR6tAsffflRok1PThQpjBNwYdRM+stvPIUr5GqBRQL1Ge///kZaVz7eCptCjKg00ygk2HwelaCNt6nWy6czIcM3/HssrNflw42IKsBORW7qQ+KhhKqlABjkRUDvBcuhwOU34HHMJxeP2XdyI5T5msqVJN1nVA+X9T/18dP7cCSzkp9RwLN1hvQMS6n3A1R0HUCmfra1lb1KqQhy3EBdm2VwxTDGVPfGYbTdNSyRT70wzcZy1IdQkfT6YOy1M//+yT7Vu9p/aajs+dNNn/zUn0qJyQIDAQAB",
7
+ "icons": {
8
+ "16": "icons/icon16.png",
9
+ "48": "icons/icon48.png",
10
+ "128": "icons/icon128.png"
11
+ },
12
+ "background": {
13
+ "service_worker": "background.js"
14
+ },
15
+ "content_scripts": [
16
+ {
17
+ "matches": [
18
+ "https://chatgpt.com/*",
19
+ "https://chat.openai.com/*",
20
+ "https://claude.ai/*"
21
+ ],
22
+ "js": [
23
+ "content.js"
24
+ ],
25
+ "run_at": "document_idle"
26
+ }
27
+ ],
28
+ "action": {
29
+ "default_popup": "popup.html",
30
+ "default_icon": {
31
+ "16": "icons/icon16.png",
32
+ "48": "icons/icon48.png",
33
+ "128": "icons/icon128.png"
34
+ }
35
+ },
36
+ "permissions": [
37
+ "nativeMessaging"
38
+ ]
39
+ }
@@ -0,0 +1,69 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>AI Traffic Control</title>
6
+ <style>
7
+ body {
8
+ width: 280px;
9
+ margin: 0;
10
+ padding: 16px;
11
+ font:
12
+ 13px/1.4 system-ui,
13
+ sans-serif;
14
+ color: #1f2937;
15
+ }
16
+ h1 {
17
+ font-size: 14px;
18
+ margin: 0 0 12px;
19
+ }
20
+ .row {
21
+ display: flex;
22
+ align-items: center;
23
+ gap: 8px;
24
+ margin-bottom: 10px;
25
+ }
26
+ .dot {
27
+ width: 8px;
28
+ height: 8px;
29
+ border-radius: 50%;
30
+ background: #9ca3af;
31
+ flex: none;
32
+ }
33
+ .dot.ok {
34
+ background: #16a34a;
35
+ }
36
+ .dot.error {
37
+ background: #dc2626;
38
+ }
39
+ .muted {
40
+ color: #6b7280;
41
+ }
42
+ button {
43
+ width: 100%;
44
+ margin-top: 8px;
45
+ padding: 8px;
46
+ border: 1px solid #d1d5db;
47
+ border-radius: 6px;
48
+ background: white;
49
+ cursor: pointer;
50
+ font: inherit;
51
+ }
52
+ button:hover {
53
+ background: #f3f4f6;
54
+ }
55
+ </style>
56
+ </head>
57
+ <body>
58
+ <h1>AI Traffic Control</h1>
59
+ <div class="row">
60
+ <span id="status-dot" class="dot"></span>
61
+ <span id="status-text">Checking native host…</span>
62
+ </div>
63
+ <div id="findings-row" class="row muted" hidden>
64
+ <span id="findings-text"></span>
65
+ </div>
66
+ <button id="open-dashboard">Open dashboard</button>
67
+ <script src="popup.js"></script>
68
+ </body>
69
+ </html>
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var d="http://localhost:4319/security";function s(e){return chrome.runtime.sendMessage(e)}function r(e,t){let n=document.getElementById("status-dot"),o=document.getElementById("status-text");n&&(n.className=`dot ${t==="pending"?"":t}`.trim()),o&&(o.textContent=e)}function a(e){let t=document.getElementById("findings-row"),n=document.getElementById("findings-text");!t||!n||(n.textContent=`${e.toString()} finding${e===1?"":"s"} recorded (all time)`,t.hidden=!1)}async function i(){let e=await s({type:"ping"}).catch(()=>({type:"error",requestId:void 0,ok:!1,message:"relay failed"}));if(e.type!=="ping"){r("Native host not reachable \u2014 run `aka extension install`","error");return}r(e.onboarded?"Connected":"Connected (not onboarded \u2014 run aka:setup)","ok");let t=await s({type:"health"}).catch(()=>({type:"error",requestId:void 0,ok:!1,message:"relay failed"}));t.type==="health"&&a(t.findings)}document.getElementById("open-dashboard")?.addEventListener("click",()=>{chrome.tabs.create({url:d})});i();})();