@staff0rd/assist 0.942.0 → 0.944.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.
@@ -1 +1 @@
1
- "use strict";(()=>{function m(){return globalThis.browser?.storage?.local}function w(s){let e;try{e=new URL(s.trim())}catch{return}if(!(e.protocol!=="http:"&&e.protocol!=="https:"))return e.origin}var _="http://localhost:3100",d="serverUrl";async function u(){let e=(await m()?.get(d).catch(()=>{}))?.[d];return typeof e=="string"&&w(e)||_}function p(){let s=globalThis.browser;return s?.runtime&&s.tabs?s:void 0}var I=new Set(["localhost","127.0.0.1"]);function b(s){if(!s)return!1;let e;try{e=new URL(s)}catch{return!1}let{protocol:t,hostname:r}=e;return t==="http:"?I.has(r):t!=="https:"?!1:r==="github.com"||r==="dev.azure.com"||r.endsWith(".visualstudio.com")}function y(s){return s.reduce((e,t)=>!e||(t.lastAccessed??0)>(e.lastAccessed??0)?t:e,void 0)}function R(s,e,t){if(t)return y(s.filter(n=>n.url?.includes(t)));let r=s.filter(n=>n.active);return r.find(n=>n.windowId===e)??y(r)}function k(s,e,t){let r=t?.running===!0;return s==="status"?{ok:!0,result:{tabUrl:e,contentScript:r}}:r?t.error||!t.result?{ok:!1,tabUrl:e,error:t.error??"empty probe reply"}:{ok:!0,result:{tabUrl:e,...t.result}}:{ok:!1,tabUrl:e,error:"the assist content script is not running on the target tab (reload the tab, or update the extension)"}}var h="assist-browser-probe",A="/ws/browser";var F="github.com, dev.azure.com, *.visualstudio.com, localhost, 127.0.0.1";async function S(s){let e=p();if(!e)return{ok:!1,error:"browser tabs API unavailable"};let[t,r]=await Promise.all([e.tabs.query({}),e.windows?.getLastFocused().catch(()=>{})]),n=R(t,r?.id,s.url);if(!n||n.id===void 0)return{ok:!1,error:s.url?`no open tab has a URL containing "${s.url}"`:"no active tab found"};let o=n.url;if(!o||!b(o))return{ok:!1,tabUrl:o,error:`the target tab is not on an assist host (${F})`};let l=await e.tabs.sendMessage(n.id,{...s,type:h}).then(a=>a).catch(()=>{});return k(s.op,o,l)}var x="assist-browser-link",U=5e3,i,f;function B(){let s=p();s&&(s.alarms?.create(x,{periodInMinutes:.5}),s.alarms?.onAlarm.addListener(e=>{e.name===x&&g()}),s.storage?.onChanged.addListener(e=>{d in e&&i?.close()}),g())}function g(){f||i&&i.readyState<=WebSocket.OPEN||(f=D().finally(()=>{f=void 0}))}async function D(){let s=await u(),e=new WebSocket(`${s.replace(/^http/,"ws")}${A}`);i=e,e.addEventListener("open",()=>v(e,{type:"hello",version:p()?.runtime.getManifest().version??"unknown"})),e.addEventListener("message",t=>{q(e,t.data)}),e.addEventListener("close",()=>{i===e&&(i=void 0,setTimeout(g,U))})}async function q(s,e){let t;try{t=JSON.parse(String(e))}catch{return}if(t.type!=="request")return;let r=await S(t).catch(n=>({ok:!1,error:n instanceof Error?n.message:String(n)}));v(s,{...r,type:"response",id:t.id})}function v(s,e){s.readyState===WebSocket.OPEN&&s.send(JSON.stringify(e))}function M(s){let{type:e,pageId:t,prompt:r}=s??{};return e==="assist-docs-feedback"&&typeof t=="string"&&typeof r=="string"}async function c(s,e,t){let r;try{r=await fetch(`${s}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}catch{return{ok:!1,message:`assist web server unreachable at ${s}`}}let n=await r.json().catch(()=>({}));return r.ok?{ok:!0,data:n}:{ok:!1,message:n.error??`assist web server returned ${r.status}`}}async function P(s,{type:e,...t}){let r=await c(s,"/api/sessions/docs-feedback",t);return r.ok?{ok:!0,message:r.data.message??"Sent to the docs session"}:r}var W={draft:["draft","--once"],bug:["bug","--once"]};function T(s){return typeof s=="string"&&Object.hasOwn(W,s)}function E(s){let{type:e,url:t,args:r,mode:n}=s??{};return e==="assist-send"&&typeof t=="string"&&(r===void 0||Array.isArray(r)&&r.every(o=>typeof o=="string"))&&(n===void 0||T(n))}function L(){return globalThis.browser?.runtime}async function O(s,{url:e,instructions:t,args:r,mode:n}){let[o,l]=r?["review-from-github",{url:e,args:r}]:["from-github",{url:e,instructions:t,mode:n}],a=await c(s,`/api/sessions/${o}`,l);return a.ok?{ok:!0,message:`assist session started in ${a.data.cwd}`}:a}function G(){L()?.onMessage.addListener(s=>{if(E(s))return u().then(e=>O(e,s));if(M(s))return u().then(e=>P(e,s))})}G();B();})();
1
+ "use strict";(()=>{function g(){return globalThis.browser?.storage?.local}function m(e){let s;try{s=new URL(e.trim())}catch{return}if(!(s.protocol!=="http:"&&s.protocol!=="https:"))return s.origin}var I="http://localhost:3100",p="serverUrl";async function i(){let s=(await g()?.get(p).catch(()=>{}))?.[p];return typeof s=="string"&&m(s)||I}function u(){let e=globalThis.browser;return e?.runtime&&e.tabs?e:void 0}var U=new Set(["localhost","127.0.0.1"]);function w(e){if(!e)return!1;let s;try{s=new URL(e)}catch{return!1}let{protocol:t,hostname:r}=s;return t==="http:"?U.has(r):t!=="https:"?!1:r==="github.com"||r==="dev.azure.com"||r.endsWith(".visualstudio.com")}function y(e){return e.reduce((s,t)=>!s||(t.lastAccessed??0)>(s.lastAccessed??0)?t:s,void 0)}function b(e,s,t){if(t)return y(e.filter(n=>n.url?.includes(t)));let r=e.filter(n=>n.active);return r.find(n=>n.windowId===s)??y(r)}function k(e,s,t){let r=t?.running===!0;return e==="status"?{ok:!0,result:{tabUrl:s,contentScript:r}}:r?t.error||!t.result?{ok:!1,tabUrl:s,error:t.error??"empty probe reply"}:{ok:!0,result:{tabUrl:s,...t.result}}:{ok:!1,tabUrl:s,error:"the assist content script is not running on the target tab (reload the tab, or update the extension)"}}var R="assist-browser-probe",A="/ws/browser";var C="github.com, dev.azure.com, *.visualstudio.com, localhost, 127.0.0.1";async function h(e){let s=u();if(!s)return{ok:!1,error:"browser tabs API unavailable"};let[t,r]=await Promise.all([s.tabs.query({}),s.windows?.getLastFocused().catch(()=>{})]),n=b(t,r?.id,e.url);if(!n||n.id===void 0)return{ok:!1,error:e.url?`no open tab has a URL containing "${e.url}"`:"no active tab found"};let o=n.url;if(!o||!w(o))return{ok:!1,tabUrl:o,error:`the target tab is not on an assist host (${C})`};let d=await s.tabs.sendMessage(n.id,{...e,type:R}).then(F=>F).catch(()=>{});return k(e.op,o,d)}var S="assist-browser-link",q=5e3,a,l;function x(){let e=u();e&&(e.alarms?.create(S,{periodInMinutes:.5}),e.alarms?.onAlarm.addListener(s=>{s.name===S&&f()}),e.storage?.onChanged.addListener(s=>{p in s&&a?.close()}),f())}function f(){l||a&&a.readyState<=WebSocket.OPEN||(l=D().finally(()=>{l=void 0}))}async function D(){let e=await i(),s=new WebSocket(`${e.replace(/^http/,"ws")}${A}`);a=s,s.addEventListener("open",()=>B(s,{type:"hello",version:u()?.runtime.getManifest().version??"unknown"})),s.addEventListener("message",t=>{$(s,t.data)}),s.addEventListener("close",()=>{a===s&&(a=void 0,setTimeout(f,q))})}async function $(e,s){let t;try{t=JSON.parse(String(s))}catch{return}if(t.type!=="request")return;let r=await h(t).catch(n=>({ok:!1,error:n instanceof Error?n.message:String(n)}));B(e,{...r,type:"response",id:t.id})}function B(e,s){e.readyState===WebSocket.OPEN&&e.send(JSON.stringify(s))}function M(e){let{type:s,pageId:t,prompt:r}=e??{};return s==="assist-docs-feedback"&&typeof t=="string"&&typeof r=="string"}async function c(e,s,t){let r;try{r=await fetch(`${e}${s}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}catch{return{ok:!1,message:`assist web server unreachable at ${e}`}}let n=await r.json().catch(()=>({}));return r.ok?{ok:!0,data:n}:{ok:!1,message:n.error??`assist web server returned ${r.status}`}}async function v(e,{type:s,...t}){let r=await c(e,"/api/sessions/docs-feedback",t);return r.ok?{ok:!0,message:r.data.message??"Sent to the docs session"}:r}async function P(e){let s;try{s=await fetch(`${e}/api/clones`)}catch{return{ok:!1,message:`assist web server unreachable at ${e}`}}let t=await s.json().catch(()=>({}));return!s.ok||!Array.isArray(t.clones)?{ok:!1,message:t.error??`assist web server returned ${s.status}`}:{ok:!0,clones:t.clones.filter(r=>typeof r=="string")}}function T(e){return e?.type==="assist-clones"}var W={draft:["draft","--once"],bug:["bug","--once"]};function E(e){return typeof e=="string"&&Object.hasOwn(W,e)}function L(e){let{type:s,url:t,args:r,mode:n,repo:o}=e??{};return s==="assist-send"&&typeof t=="string"&&(r===void 0||Array.isArray(r)&&r.every(d=>typeof d=="string"))&&(n===void 0||E(n))&&(o===void 0||typeof o=="string")}function O(){return globalThis.browser?.runtime}function G({url:e,instructions:s,args:t,mode:r,repo:n}){return t?["review-from-github",{url:e,args:t}]:n!==void 0?["from-link",{url:e,repo:n,instructions:s,mode:r}]:["from-github",{url:e,instructions:s,mode:r}]}async function _(e,s){let[t,r]=G(s),n=await c(e,`/api/sessions/${t}`,r);return n.ok?{ok:!0,message:`assist session started in ${n.data.cwd}`}:n}function N(){O()?.onMessage.addListener(e=>{if(L(e))return i().then(s=>_(s,e));if(T(e))return i().then(P);if(M(e))return i().then(s=>v(s,e))})}N();x();})();