broods 0.6.1 → 0.6.2
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/dist/account.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c}from"./chunk-
|
|
1
|
+
import{a,b,c}from"./chunk-wvs39trg.js";import"./chunk-51a2zca3.js";export{b as BroodsAccountApiError,c as BroodsAccountClient,a as envPlaceholder};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var c=/^[A-Z][A-Z0-9_]*$/;function u(e){if(!c.test(e)||e.length>64)throw Error("envPlaceholder name must match /^[A-Z][A-Z0-9_]*$/ and be at most 64 characters.");return`\${${e}}`}class o extends Error{status;body;constructor(e,t,n,s){super(`${e} ${t} failed with ${n}: ${s}`);this.name="BroodsAccountApiError",this.status=n,this.body=s}}function i(e){return typeof process<"u"?process?.env?.[e]:void 0}function a(e){return`?${new URLSearchParams({project:e.project,environment:e.environment}).toString()}`}class l{baseUrl;accountSecret;fetchImpl;constructor(e={}){let t=e.baseUrl??i("BROODS_BASE_URL")??"https://gateway.broods.app",n=e.accountSecret??i("BROODS_ACCOUNT_SECRET");if(!n)throw Error("BroodsAccountClient requires an accountSecret (or BROODS_ACCOUNT_SECRET).");let s=t.length;while(s>0&&t.charCodeAt(s-1)===47)s-=1;this.baseUrl=t.slice(0,s),this.accountSecret=n,this.fetchImpl=e.fetch??fetch}async getAccount(){let e=await this.request("GET","/v1/account");if(!e)throw new o("GET","/v1/account",404,"Account not found");return e.account}async updateAccount(e){return(await this.request("PATCH","/v1/account",e))?.account??null}async rotateSecret(){let e=await this.request("POST","/v1/account/rotate-secret");if(!e)throw new o("POST","/v1/account/rotate-secret",404,"Account not found");return e}async deleteAccount(){return await this.request("DELETE","/v1/account")??{deleted:!1}}webhookUrl(e,t){let n=[e,t].map(encodeURIComponent);return`${this.baseUrl}/webhooks/${n.join("/")}`}async listAgents(){return(await this.request("GET","/v1/agents"))?.agents??[]}async createAgent(e){let t=await this.request("POST","/v1/agents",e);if(!t)throw new o("POST","/v1/agents",404,"Not found");return t}async getAgent(e){return await this.request("GET",`/v1/agents/${encodeURIComponent(e)}`)}async updateAgent(e,t){return await this.request("PATCH",`/v1/agents/${encodeURIComponent(e)}`,t)}async deleteAgent(e){return(await this.request("DELETE",`/v1/agents/${encodeURIComponent(e)}`))?.deleted??!1}async listEnvVars(){return(await this.request("GET","/v1/env"))?.env??[]}async setEnvVar(e,t){await this.request("PUT",`/v1/env/${encodeURIComponent(e)}`,{value:t})}async deleteEnvVar(e){return(await this.request("DELETE",`/v1/env/${encodeURIComponent(e)}`))?.deleted??!1}async listCrons(){return(await this.request("GET","/v1/crons"))?.crons??[]}async createCron(e){let t=await this.request("POST","/v1/crons",e);if(!t)throw new o("POST","/v1/crons",404,"Not found");return t}async getCron(e){return await this.request("GET",`/v1/crons/${encodeURIComponent(e)}`)}async updateCron(e,t){return await this.request("PATCH",`/v1/crons/${encodeURIComponent(e)}`,t)}async deleteCron(e){return(await this.request("DELETE",`/v1/crons/${encodeURIComponent(e)}`))?.deleted??!1}async listCronRuns(e,t={}){let n=t.limit!==void 0?`?limit=${t.limit}`:"";return(await this.request("GET",`/v1/crons/${encodeURIComponent(e)}/runs${n}`))?.runs??[]}async listWorkspaces(){return(await this.request("GET","/v1/workspaces"))?.workspaces??[]}async createWorkspace(e){let t=await this.request("POST","/v1/workspaces",e);if(!t)throw new o("POST","/v1/workspaces",404,"Not found");return t}async getWorkspace(e){return await this.request("GET",`/v1/workspaces/${encodeURIComponent(e)}`)}async updateWorkspace(e,t){return await this.request("PATCH",`/v1/workspaces/${encodeURIComponent(e)}`,t)}async deleteWorkspace(e){return(await this.request("DELETE",`/v1/workspaces/${encodeURIComponent(e)}`))?.deleted??!1}async listWorkspaceFiles(e){return(await this.request("GET",`/v1/workspaces/${encodeURIComponent(e)}/files`))?.files??[]}async getWorkspaceFileUrl(e,t){let n=`?path=${encodeURIComponent(t)}`;return(await this.request("GET",`/v1/workspaces/${encodeURIComponent(e)}/files${n}`))?.url??null}async uploadWorkspaceFile(e,t){let n=`/v1/workspaces/${encodeURIComponent(e)}/files`,s=await this.request("POST",n,t);if(!s)throw new o("POST",n,404,"Workspace not found");return s.file}async renameWorkspaceFile(e,t,n){return(await this.request("PATCH",`/v1/workspaces/${encodeURIComponent(e)}/files`,{path:t,newPath:n}))?.renamed??!1}async deleteWorkspaceFile(e,t){return(await this.request("DELETE",`/v1/workspaces/${encodeURIComponent(e)}/files`,{path:t}))?.deleted??!1}async listSandboxes(){return(await this.request("GET","/v1/sandboxes"))?.sandboxes??[]}async createSandbox(e){let t=await this.request("POST","/v1/sandboxes",e);if(!t)throw new o("POST","/v1/sandboxes",404,"Not found");return t}async getSandbox(e){return await this.request("GET",`/v1/sandboxes/${encodeURIComponent(e)}`)}async updateSandbox(e,t){return await this.request("PATCH",`/v1/sandboxes/${encodeURIComponent(e)}`,t)}async deleteSandbox(e){return(await this.request("DELETE",`/v1/sandboxes/${encodeURIComponent(e)}`))?.deleted??!1}async suspendSandbox(e,t){return await this.sandboxAction(e,"suspend",{reservationKey:t})}async resumeSandbox(e,t){return await this.sandboxAction(e,"resume",{reservationKey:t})}async terminateSandbox(e,t){return await this.sandboxAction(e,"terminate",{reservationKey:t})}async snapshotSandbox(e,t,n){return await this.sandboxAction(e,"snapshot",{reservationKey:t,name:n})}async openSandboxTerminal(e,t){return await this.sandboxAction(e,"terminal",{reservationKey:t})}async listTools(e){
|
|
1
|
+
var c=/^[A-Z][A-Z0-9_]*$/;function u(e){if(!c.test(e)||e.length>64)throw Error("envPlaceholder name must match /^[A-Z][A-Z0-9_]*$/ and be at most 64 characters.");return`\${${e}}`}class o extends Error{status;body;constructor(e,t,n,s){super(`${e} ${t} failed with ${n}: ${s}`);this.name="BroodsAccountApiError",this.status=n,this.body=s}}function i(e){return typeof process<"u"?process?.env?.[e]:void 0}function a(e){return`?${new URLSearchParams({project:e.project,environment:e.environment}).toString()}`}class l{baseUrl;accountSecret;fetchImpl;constructor(e={}){let t=e.baseUrl??i("BROODS_BASE_URL")??"https://gateway.broods.app",n=e.accountSecret??i("BROODS_ACCOUNT_SECRET");if(!n)throw Error("BroodsAccountClient requires an accountSecret (or BROODS_ACCOUNT_SECRET).");let s=t.length;while(s>0&&t.charCodeAt(s-1)===47)s-=1;this.baseUrl=t.slice(0,s),this.accountSecret=n,this.fetchImpl=e.fetch??fetch}async getAccount(){let e=await this.request("GET","/v1/account");if(!e)throw new o("GET","/v1/account",404,"Account not found");return e.account}async updateAccount(e){return(await this.request("PATCH","/v1/account",e))?.account??null}async rotateSecret(){let e=await this.request("POST","/v1/account/rotate-secret");if(!e)throw new o("POST","/v1/account/rotate-secret",404,"Account not found");return e}async deleteAccount(){return await this.request("DELETE","/v1/account")??{deleted:!1}}webhookUrl(e,t){let n=[e,t].map(encodeURIComponent);return`${this.baseUrl}/webhooks/${n.join("/")}`}async listAgents(){return(await this.request("GET","/v1/agents"))?.agents??[]}async createAgent(e){let t=await this.request("POST","/v1/agents",e);if(!t)throw new o("POST","/v1/agents",404,"Not found");return t}async getAgent(e){return await this.request("GET",`/v1/agents/${encodeURIComponent(e)}`)}async updateAgent(e,t){return await this.request("PATCH",`/v1/agents/${encodeURIComponent(e)}`,t)}async deleteAgent(e){return(await this.request("DELETE",`/v1/agents/${encodeURIComponent(e)}`))?.deleted??!1}async listEnvVars(){return(await this.request("GET","/v1/env"))?.env??[]}async setEnvVar(e,t){await this.request("PUT",`/v1/env/${encodeURIComponent(e)}`,{value:t})}async deleteEnvVar(e){return(await this.request("DELETE",`/v1/env/${encodeURIComponent(e)}`))?.deleted??!1}async listCrons(){return(await this.request("GET","/v1/crons"))?.crons??[]}async createCron(e){let t=await this.request("POST","/v1/crons",e);if(!t)throw new o("POST","/v1/crons",404,"Not found");return t}async getCron(e){return await this.request("GET",`/v1/crons/${encodeURIComponent(e)}`)}async updateCron(e,t){return await this.request("PATCH",`/v1/crons/${encodeURIComponent(e)}`,t)}async deleteCron(e){return(await this.request("DELETE",`/v1/crons/${encodeURIComponent(e)}`))?.deleted??!1}async listCronRuns(e,t={}){let n=t.limit!==void 0?`?limit=${t.limit}`:"";return(await this.request("GET",`/v1/crons/${encodeURIComponent(e)}/runs${n}`))?.runs??[]}async listWorkspaces(){return(await this.request("GET","/v1/workspaces"))?.workspaces??[]}async createWorkspace(e){let t=await this.request("POST","/v1/workspaces",e);if(!t)throw new o("POST","/v1/workspaces",404,"Not found");return t}async getWorkspace(e){return await this.request("GET",`/v1/workspaces/${encodeURIComponent(e)}`)}async updateWorkspace(e,t){return await this.request("PATCH",`/v1/workspaces/${encodeURIComponent(e)}`,t)}async deleteWorkspace(e){return(await this.request("DELETE",`/v1/workspaces/${encodeURIComponent(e)}`))?.deleted??!1}async listWorkspaceFiles(e){return(await this.request("GET",`/v1/workspaces/${encodeURIComponent(e)}/files`))?.files??[]}async getWorkspaceFileUrl(e,t){let n=`?path=${encodeURIComponent(t)}`;return(await this.request("GET",`/v1/workspaces/${encodeURIComponent(e)}/files${n}`))?.url??null}async uploadWorkspaceFile(e,t){let n=`/v1/workspaces/${encodeURIComponent(e)}/files`,s=await this.request("POST",n,t);if(!s)throw new o("POST",n,404,"Workspace not found");return s.file}async renameWorkspaceFile(e,t,n){return(await this.request("PATCH",`/v1/workspaces/${encodeURIComponent(e)}/files`,{path:t,newPath:n}))?.renamed??!1}async deleteWorkspaceFile(e,t){return(await this.request("DELETE",`/v1/workspaces/${encodeURIComponent(e)}/files`,{path:t}))?.deleted??!1}async listSandboxes(){return(await this.request("GET","/v1/sandboxes"))?.sandboxes??[]}async createSandbox(e){let t=await this.request("POST","/v1/sandboxes",e);if(!t)throw new o("POST","/v1/sandboxes",404,"Not found");return t}async getSandbox(e){return await this.request("GET",`/v1/sandboxes/${encodeURIComponent(e)}`)}async updateSandbox(e,t){return await this.request("PATCH",`/v1/sandboxes/${encodeURIComponent(e)}`,t)}async deleteSandbox(e){return(await this.request("DELETE",`/v1/sandboxes/${encodeURIComponent(e)}`))?.deleted??!1}async suspendSandbox(e,t){return await this.sandboxAction(e,"suspend",{reservationKey:t})}async resumeSandbox(e,t){return await this.sandboxAction(e,"resume",{reservationKey:t})}async terminateSandbox(e,t){return await this.sandboxAction(e,"terminate",{reservationKey:t})}async snapshotSandbox(e,t,n){return await this.sandboxAction(e,"snapshot",{reservationKey:t,name:n})}async openSandboxTerminal(e,t){return await this.sandboxAction(e,"terminal",{reservationKey:t})}async listTools(e){let t=`/v1/tools${a(e)}`,n=await this.request("GET",t);if(!n)throw new o("GET",t,404,"Not found");return n.tools??[]}async createTool(e,t){let n=`/v1/tools${a(e)}`,s=await this.request("POST",n,t);if(!s)throw new o("POST",n,404,"Not found");return s}async getTool(e){return await this.request("GET",`/v1/tools/${encodeURIComponent(e)}`)}async updateTool(e,t){return await this.request("PATCH",`/v1/tools/${encodeURIComponent(e)}`,t)}async deleteTool(e){return(await this.request("DELETE",`/v1/tools/${encodeURIComponent(e)}`))?.deleted??!1}async listPolicies(){return(await this.request("GET","/v1/policies"))?.policies??[]}async createPolicy(e){let t=await this.request("POST","/v1/policies",e);if(!t)throw new o("POST","/v1/policies",404,"Not found");return t}async getPolicy(e){return await this.request("GET",`/v1/policies/${encodeURIComponent(e)}`)}async updatePolicy(e,t){return await this.request("PATCH",`/v1/policies/${encodeURIComponent(e)}`,t)}async deletePolicy(e){return(await this.request("DELETE",`/v1/policies/${encodeURIComponent(e)}`))?.deleted??!1}async listChannels(){return(await this.request("GET","/v1/channels"))?.channels??[]}async createChannel(e){let t=await this.request("POST","/v1/channels",e);if(!t)throw new o("POST","/v1/channels",404,"Not found");return t}async getChannel(e){return await this.request("GET",`/v1/channels/${encodeURIComponent(e)}`)}async updateChannel(e,t){return await this.request("PATCH",`/v1/channels/${encodeURIComponent(e)}`,t)}async deleteChannel(e){return(await this.request("DELETE",`/v1/channels/${encodeURIComponent(e)}`))?.deleted??!1}async listSkills(){return(await this.request("GET","/v1/skills"))?.skills??[]}async createSkill(e){let t=await this.request("POST","/v1/skills",e);if(!t)throw new o("POST","/v1/skills",404,"Not found");return t}async getSkill(e){return await this.request("GET",`/v1/skills/${encodeURIComponent(e)}`)}async uploadSkill(e,t){let n=`/v1/skills/${encodeURIComponent(e)}`,s=await this.request("PUT",n,t);if(!s)throw new o("PUT",n,404,"Skill not found");return s}async deleteSkill(e){return(await this.request("DELETE",`/v1/skills/${encodeURIComponent(e)}`))?.deleted??!1}async sandboxAction(e,t,n){let s=`/v1/sandboxes/${encodeURIComponent(e)}/${t}`,r=await this.request("POST",s,n);if(!r)throw new o("POST",s,404,"Sandbox not found");return r}async request(e,t,n){let s=await this.fetchImpl(`${this.baseUrl}${t}`,{method:e,headers:{Authorization:`Bearer ${this.accountSecret}`,...n!==void 0?{"Content-Type":"application/json"}:{}},...n!==void 0?{body:JSON.stringify(n)}:{}});if(s.status===404)return null;if(!s.ok)throw new o(e,t,s.status,await s.text());return await s.json()}}
|
|
2
2
|
export{u as a,o as b,l as c};
|
package/dist/cli/index.js
CHANGED
|
@@ -152,7 +152,7 @@ ${e.errorText}`};case"output-denied":return{kind:"error",title:`Tool Denied · $
|
|
|
152
152
|
Reason: ${(a=e.approval.reason)!=null?a:"denied"}`}}}function Xy(e,t,n,o){switch(n){case"collapsed":return!0;case"auto-collapsed":return e.parts.slice(t+1).some((r)=>Z0(r,o));case"full":case"hidden":return!1}}function Z0(e,t){switch(e.type){case"text":return e.text.trim().length>0;case"reasoning":return t.reasoning!=="hidden"&&e.text.trim().length>0;default:return Ee(e)&&t.tools!=="hidden"}}function V0(e){switch(e.type){case"text-start":case"text-delta":case"reasoning-start":case"reasoning-delta":case"tool-input-start":case"tool-input-delta":return!0;default:return!1}}function B0(e,{hasPendingToolResults:t}){switch(e.type){case"start-step":return t?Hy:Ao;case"tool-output-available":case"tool-output-error":case"tool-output-denied":return Hy;case"tool-input-available":return Yy;case"tool-approval-response":return e.approved?Yy:void 0;default:return}}function q0(e){switch(e.type){case"tool-output-available":case"tool-output-error":case"tool-output-denied":return!0;default:return!1}}function W0(e){switch(e.state){case"input-streaming":return"waiting";case"approval-requested":return"approval requested";case"input-available":return"executing";case"approval-responded":return e.approval.approved?"executing":"denied";case"output-available":case"output-error":return"done";case"output-denied":return"denied"}}function Qy(e){if(typeof e==="string")return e;return JSON.stringify(e,null,2)}function J0(e){var t;return`tool ${(t=e.title)!=null?t:e.toolName}`}function G0(e,t){return`${e}:${t}`}function K0(e){if(e instanceof ReadableStream)return e;return new ReadableStream({async start(t){try{for await(let n of e)t.enqueue(n);t.close()}catch(n){t.error(n)}}})}async function*H0(e){if(e instanceof ReadableStream){let t=e.getReader();try{while(!0){let{done:n,value:o}=await t.read();if(n)return;yield o}}finally{t.releaseLock()}return}yield*e}function hb(e,t){if(e.cache&&yb(e,e.cache,t))return e.cache.lines;let n=Y0(e,t);return e.cache={width:t,kind:e.kind,title:e.title,rightTitle:e.rightTitle,content:e.content,collapsed:e.collapsed===!0,lines:n},n}function yb(e,t,n=t.width){return t.width===n&&t.kind===e.kind&&t.title===e.title&&t.rightTitle===e.rightTitle&&t.content===e.content&&t.collapsed===(e.collapsed===!0)}function Y0(e,t){let n=z0[e.kind],o=Math.max(1,t-4),r=` ${e.title} `,a=e.rightTitle?` ${e.rightTitle} `:"";if(e.collapsed){let p=Math.max(0,t-2-r.length-a.length),f=`${n.color}╭${r}${n.border.repeat(p)}${a}╮${Ne.reset}`,g=`${n.color}╰${n.border.repeat(Math.max(0,t-2))}╯${Ne.reset}`;return[f,g]}let i=Math.max(0,t-2-r.length-a.length),s=`${n.color}╭${r}${n.border.repeat(i)}${a}╮${Ne.reset}`,u=`${n.color}╰${n.border.repeat(Math.max(0,t-2))}╯${Ne.reset}`,d=(e.content.length>0?b0(e.content):Ne.dim+"(streaming...)"+Ne.reset).split(`
|
|
153
153
|
`).flatMap((p)=>Q0(p,o));return[s,...d.map((p)=>X0(p,o,n.color)),u]}function X0(e,t,n){let o=vn(e,t),r=" ".repeat(Math.max(0,t-Zt(o)));return`${n}│${Ne.reset} ${o}${r} ${n}│${Ne.reset}`}function Q0(e,t){if(e.length===0)return[""];let n=[],o=e;while(Zt(o)>t){let r=eE(o,t);n.push(o.slice(0,r).trimEnd()),o=o.slice(r).trimStart()}return n.push(o),n}function eE(e,t){let o=vn(e,t+1).lastIndexOf(" ");if(o>0)return o;return vn(e,t).length}function tE(e){var t,n;let o="usage"in e?e.usage:void 0,r="messageMetadata"in e?(t=e.messageMetadata)==null?void 0:t.usage:void 0,a="messageMetadata"in e?(n=e.messageMetadata)==null?void 0:n.performance:void 0;return{totalTokens:bb(o!=null?o:r),outputTokens:qf(o!=null?o:r),outputTokensPerSecond:a==null?void 0:a.outputTokensPerSecond}}function rE(e){var t;let n=e;return{totalTokens:bb(n==null?void 0:n.usage),outputTokens:qf(n==null?void 0:n.usage),outputTokensPerSecond:(t=n==null?void 0:n.performance)==null?void 0:t.outputTokensPerSecond}}function bb(e){let t=e==null?void 0:e.totalTokens;if(typeof t==="number")return t;if(typeof(t==null?void 0:t.total)==="number")return t.total;let n=nE(e),o=qf(e);if(n!=null&&o!=null)return n+o;return}function nE(e){let t=e==null?void 0:e.inputTokens;if(typeof t==="number")return t;if(typeof(t==null?void 0:t.total)==="number")return t.total;return e==null?void 0:e.promptTokens}function qf(e){let t=e==null?void 0:e.outputTokens;if(typeof t==="number")return t;if(typeof(t==null?void 0:t.total)==="number")return t.total;return e==null?void 0:e.completionTokens}function _b(e,t){if(e==null)return;let n=`${e.toLocaleString()} ${e===1?"token":"tokens"}`,o=oE(e,t);return o==null?n:`${n} ${o}`}function oE(e,t){if(t==null||t<=0||!Number.isFinite(t))return;return`${Math.round(e/t*100).toLocaleString()}%`}function aE(e,t){if(t==="outputTokensPerSecond")return iE(e.outputTokensPerSecond);return _b(e.outputTokens)}function iE(e){if(e==null)return;return`${sE(e)} tok/s`}function sE(e){return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:1})}function Gi(e){let t=e.toString("utf8");switch(t){case"\f":return{type:"ctrl-l"};case"\x03":return{type:"ctrl-c"};case"\x1B":return{type:"escape"};case"\r":case`
|
|
154
154
|
`:return{type:"enter"};case"":case"\b":return{type:"backspace"};case"\x1B[A":return{type:"up"};case"\x1B[B":return{type:"down"};case"\x1B[5~":return{type:"page-up"};case"\x1B[6~":return{type:"page-down"};default:if(t>=" "&&t!=="")return{type:"character",value:t};return{type:"ignore"}}}var lE="outputTokensPerSecond",cE=class{constructor(e){this.chatId=un();var t,n,o,r;this.agent=e.agent,this.transport=e.transport,this.renderer=(t=dE(e))!=null?t:uE(e),this.title=e.title,this.tools=(n=e.tools)!=null?n:"auto-collapsed",this.reasoning=(o=e.reasoning)!=null?o:"auto-collapsed",this.responseStatistics=(r=e.responseStatistics)!=null?r:lE,this.contextSize=e.contextSize,this.sandbox=e.sandbox}async run(){let e=this.title,t=[],n=0,o=()=>`message-${++n}`,r,a=!1,i=!1;while(!0){if(!i){if(r==null){if(!this.renderer.readPrompt){if(a)return;throw Error("No prompt was provided and the renderer does not support prompt input.")}try{r=await this.renderer.readPrompt({title:e})}catch(u){if(ob(u))return;throw u}if(r==null)return}t.push(mE(o(),r)),a=!0}let s=await this.streamMessages([...t],o);try{let u=await this.renderer.renderStream(s,{title:e,submittedPrompt:r,continueSession:Boolean(this.renderer.readPrompt),tools:this.tools,reasoning:this.reasoning,responseStatistics:this.responseStatistics,contextSize:this.contextSize,waitForExit:!1});if(u&&u.parts.length>0){let c=gE(u);if(c.length>0){if(!this.renderer.readToolApproval)throw Error("Tool approval was requested, but the renderer does not support tool approval input.");for(let d of c){let p=await this.renderer.readToolApproval(d,{title:e});vE(u,d,p)}tb(t,u,i),i=!0,r=void 0;continue}tb(t,u,i)}}catch(u){if(ob(u))return;throw u}i=!1,r=void 0}}async streamMessages(e,t){let n=new AbortController,o=()=>n.abort();if(this.transport)return{uiMessageStream:await this.transport.sendMessages({trigger:"submit-message",chatId:this.chatId,messageId:void 0,messages:e,abortSignal:n.signal}),message:Uf(e),abort:o};let r=this.agent,a=await r.stream({prompt:await Di(e,{tools:r.tools}),abortSignal:n.signal,options:void 0,experimental_sandbox:this.sandbox});return{uiMessageStream:pE(a.fullStream,t,e),message:Uf(e),abort:o}}};function uE(e){return e.tools===void 0&&e.reasoning===void 0&&e.responseStatistics===void 0&&e.contextSize===void 0?new Df:new Df({tools:e.tools,reasoning:e.reasoning,responseStatistics:e.responseStatistics,contextSize:e.contextSize})}function dE(e){if(e.renderer)return e.renderer;if(!e.screen&&!e.userInput)return;return new Df({tools:e.tools,reasoning:e.reasoning,responseStatistics:e.responseStatistics,contextSize:e.contextSize,input:e.userInput,output:e.screen})}async function*pE(e,t,n=[]){var o,r;let a=new Set,i=new Set,s=new Set,u,c,d=!1;yield{type:"start",messageId:(r=(o=Uf(n))==null?void 0:o.id)!=null?r:t()};for await(let p of e)switch(p.type){case"text-start":a.add(p.id),yield{type:"text-start",id:p.id,providerMetadata:p.providerMetadata};break;case"text-delta":if(!a.has(p.id))a.add(p.id),yield{type:"text-start",id:p.id,providerMetadata:p.providerMetadata};yield{type:"text-delta",id:p.id,delta:p.text,providerMetadata:p.providerMetadata};break;case"text-end":a.delete(p.id),yield{type:"text-end",id:p.id,providerMetadata:p.providerMetadata};break;case"reasoning-start":i.add(p.id),yield{type:"reasoning-start",id:p.id,providerMetadata:p.providerMetadata};break;case"reasoning-delta":if(!i.has(p.id))i.add(p.id),yield{type:"reasoning-start",id:p.id,providerMetadata:p.providerMetadata};yield{type:"reasoning-delta",id:p.id,delta:p.text,providerMetadata:p.providerMetadata};break;case"reasoning-end":i.delete(p.id),yield{type:"reasoning-end",id:p.id,providerMetadata:p.providerMetadata};break;case"tool-input-start":yield{type:"tool-input-start",toolCallId:p.id,toolName:p.toolName,providerExecuted:p.providerExecuted,providerMetadata:p.providerMetadata,toolMetadata:p.toolMetadata,dynamic:p.dynamic,title:p.title};break;case"tool-input-delta":yield{type:"tool-input-delta",toolCallId:p.id,inputTextDelta:p.delta};break;case"tool-call":s.add(p.toolCallId),yield{type:"tool-input-available",toolCallId:p.toolCallId,toolName:p.toolName,input:p.input,providerExecuted:p.providerExecuted,providerMetadata:p.providerMetadata,toolMetadata:p.toolMetadata,dynamic:p.dynamic,title:p.title};break;case"tool-approval-request":if(!s.has(p.toolCall.toolCallId))s.add(p.toolCall.toolCallId),yield{type:"tool-input-available",toolCallId:p.toolCall.toolCallId,toolName:p.toolCall.toolName,input:p.toolCall.input,providerExecuted:p.toolCall.providerExecuted,providerMetadata:p.toolCall.providerMetadata,toolMetadata:p.toolCall.toolMetadata,dynamic:p.toolCall.dynamic,title:p.toolCall.title};yield{type:"tool-approval-request",approvalId:p.approvalId,toolCallId:p.toolCall.toolCallId,isAutomatic:p.isAutomatic};break;case"tool-approval-response":yield{type:"tool-approval-response",approvalId:p.approvalId,approved:p.approved,reason:p.reason,providerExecuted:p.providerExecuted};break;case"tool-result":yield{type:"tool-output-available",toolCallId:p.toolCallId,output:p.output,providerExecuted:p.providerExecuted,providerMetadata:p.providerMetadata,toolMetadata:p.toolMetadata,dynamic:p.dynamic,preliminary:p.preliminary};break;case"tool-error":yield{type:"tool-output-error",toolCallId:p.toolCallId,errorText:rb(p.error),providerExecuted:p.providerExecuted,providerMetadata:p.providerMetadata,toolMetadata:p.toolMetadata,dynamic:p.dynamic};break;case"tool-output-denied":yield{type:"tool-output-denied",toolCallId:p.toolCallId};break;case"source":if(p.sourceType==="url")yield{type:"source-url",sourceId:p.id,url:p.url,title:p.title,providerMetadata:p.providerMetadata};else yield{type:"source-document",sourceId:p.id,mediaType:p.mediaType,title:p.title,filename:p.filename,providerMetadata:p.providerMetadata};break;case"file":yield{type:"file",url:nb(p.file.mediaType,p.file.base64),mediaType:p.file.mediaType,providerMetadata:p.providerMetadata};break;case"reasoning-file":yield{type:"reasoning-file",url:nb(p.file.mediaType,p.file.base64),mediaType:p.file.mediaType,providerMetadata:p.providerMetadata};break;case"start-step":yield{type:"start-step"};break;case"finish-step":u=p.usage,c=p.performance,yield{type:"finish-step"};break;case"finish":yield*eb(a,i),d=!0,yield{type:"finish",finishReason:p.finishReason,messageMetadata:fE(u!=null?u:p.totalUsage,c)};break;case"abort":yield{type:"abort",reason:p.reason};break;case"error":yield{type:"error",errorText:rb(p.error)};break}if(!d)yield*eb(a,i),yield{type:"finish"}}function fE(e,t){if((e==null?void 0:e.totalTokens)==null&&(e==null?void 0:e.outputTokens)==null&&(t==null?void 0:t.outputTokensPerSecond)==null)return;return{...(e==null?void 0:e.totalTokens)==null&&(e==null?void 0:e.outputTokens)==null?{}:{usage:{...e.totalTokens==null?{}:{totalTokens:e.totalTokens},...e.outputTokens==null?{}:{outputTokens:e.outputTokens}}},...(t==null?void 0:t.outputTokensPerSecond)==null?{}:{performance:{outputTokensPerSecond:t.outputTokensPerSecond}}}}function*eb(e,t){for(let n of e)yield{type:"text-end",id:n};e.clear();for(let n of t)yield{type:"reasoning-end",id:n};t.clear()}function mE(e,t){return{id:e,role:"user",parts:[{type:"text",text:t}]}}function tb(e,t,n){var o;if(n&&((o=e.at(-1))==null?void 0:o.role)==="assistant"){e[e.length-1]=t;return}e.push(t)}function Uf(e){let t=e.at(-1);return(t==null?void 0:t.role)==="assistant"?t:void 0}function gE(e){let t=[];for(let[n,o]of e.parts.entries()){if(!Ee(o)||o.state!=="approval-requested"||o.approval.isAutomatic===!0)continue;t.push({approvalId:o.approval.id,toolCallId:o.toolCallId,toolName:Lt(o),title:o.title,input:o.input,providerExecuted:o.providerExecuted,messageId:e.id,partIndex:n})}return t}function vE(e,t,n){let o=e.parts[t.partIndex];if(!o||!Ee(o)||o.toolCallId!==t.toolCallId)throw Error(`Could not find tool approval request ${t.approvalId}.`);o.state="approval-responded",o.approval={id:t.approvalId,approved:n.approved,...n.reason?{reason:n.reason}:{}}}function rb(e){if(e instanceof Error)return e.message;if(typeof e==="string")return e;return JSON.stringify(e)}function nb(e,t){return`data:${e};base64,${t}`}function ob(e){return e instanceof Error&&e.message==="Interrupted"}async function xb(e){await new cE(e).run()}async function wb(e){if(e.prompt!==void 0)hE(e.prompt);await xb({title:`broods · ${e.agent.name}`,tools:"full",transport:new kb(e.client,e.agent)})}async function $b(e){let t=Uy({stream:Sb(e.client.stream(e.agent,{input:e.prompt}),void 0,()=>{})});for await(let n of t)process.stdout.write(n);process.stdout.write(`
|
|
155
|
-
`)}async function hE(e){let t=process.stdin.listenerCount("data"),n=Date.now()+1e4;while(process.stdin.listenerCount("data")<=t){if(Date.now()>n)return;await new Promise((o)=>setTimeout(o,20))}process.stdin.emit("data",Buffer.from(e)),process.stdin.emit("data",Buffer.from("\r"))}class kb{client;agent;conversationKey=`tui-${un()}`;sentApprovals=new Set;sentUserTurns=0;constructor(e,t){this.client=e;this.agent=t}async reconnectToStream(){return null}async sendMessages(e){let t=this.pendingEvents(await Di(e.messages));if(t.events.length===0)throw Error("Nothing new to send: the agent already saw this turn.");let n=this.client.stream(this.agent,{conversationKey:this.conversationKey,events:t.events});return Vy({stream:Sb(n,e.abortSignal,t.commit),originalMessages:e.messages,generateMessageId:un,sendSources:!0})}pendingEvents(e){let t=[],n=[],o=0;for(let r of e){if(r.role==="user"){if(o+=1,o>this.sentUserTurns)t.push(r);continue}if(r.role!=="tool")continue;for(let a of r.content)if(a.type==="tool-approval-response"&&!this.sentApprovals.has(a.approvalId))n.push(a)}if(n.length>0)t.push({role:"tool",content:n});return{events:t,commit:()=>{this.sentUserTurns=o;for(let r of n)this.sentApprovals.add(r.approvalId)}}}}function Sb(e,t,n){let o=!1,r=()=>void e.return(void 0);return new ReadableStream({async pull(a){let i=await Promise.race([e.next(),yE(t)]);if(t?.aborted){r(),a.close();return}if(!o)o=!0,n();if(i.done)a.close();else a.enqueue(i.value)},cancel:r})}function yE(e){return new Promise((t)=>{if(!e)return;let n=()=>t({done:!0,value:void 0});if(e.aborted)n();else e.addEventListener("abort",n,{once:!0})})}var Ib={name:"broods",version:"0.6.
|
|
155
|
+
`)}async function hE(e){let t=process.stdin.listenerCount("data"),n=Date.now()+1e4;while(process.stdin.listenerCount("data")<=t){if(Date.now()>n)return;await new Promise((o)=>setTimeout(o,20))}process.stdin.emit("data",Buffer.from(e)),process.stdin.emit("data",Buffer.from("\r"))}class kb{client;agent;conversationKey=`tui-${un()}`;sentApprovals=new Set;sentUserTurns=0;constructor(e,t){this.client=e;this.agent=t}async reconnectToStream(){return null}async sendMessages(e){let t=this.pendingEvents(await Di(e.messages));if(t.events.length===0)throw Error("Nothing new to send: the agent already saw this turn.");let n=this.client.stream(this.agent,{conversationKey:this.conversationKey,events:t.events});return Vy({stream:Sb(n,e.abortSignal,t.commit),originalMessages:e.messages,generateMessageId:un,sendSources:!0})}pendingEvents(e){let t=[],n=[],o=0;for(let r of e){if(r.role==="user"){if(o+=1,o>this.sentUserTurns)t.push(r);continue}if(r.role!=="tool")continue;for(let a of r.content)if(a.type==="tool-approval-response"&&!this.sentApprovals.has(a.approvalId))n.push(a)}if(n.length>0)t.push({role:"tool",content:n});return{events:t,commit:()=>{this.sentUserTurns=o;for(let r of n)this.sentApprovals.add(r.approvalId)}}}}function Sb(e,t,n){let o=!1,r=()=>void e.return(void 0);return new ReadableStream({async pull(a){let i=await Promise.race([e.next(),yE(t)]);if(t?.aborted){r(),a.close();return}if(!o)o=!0,n();if(i.done)a.close();else a.enqueue(i.value)},cancel:r})}function yE(e){return new Promise((t)=>{if(!e)return;let n=()=>t({done:!0,value:void 0});if(e.aborted)n();else e.addEventListener("abort",n,{once:!0})})}var Ib={name:"broods",version:"0.6.2",description:"CLI + TypeScript SDK for the broods agent platform.",type:"module",license:"MIT",homepage:"https://github.com/beeblastco/broods#readme",repository:{type:"git",url:"git+https://github.com/beeblastco/broods.git",directory:"packages/broods"},bugs:{url:"https://github.com/beeblastco/broods/issues"},keywords:["agents","ai","sdk","cli","broods"],bin:{broods:"dist/cli/index.js"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./account":{types:"./dist/account.d.ts",import:"./dist/account.js"}},main:"./dist/index.js",types:"./dist/index.d.ts",files:["dist","README.md","LICENSE.md"],scripts:{build:"bun scripts/build.ts && rollup -c rollup.dts.config.mjs && bun scripts/clean-dts-side-effects.ts && rm -rf .dts-temp",check:"tsc --noEmit","pack:check":"bun run build && npm pack --dry-run",test:"bun test"},engines:{node:">=22"},dependencies:{esbuild:"^0.28.1"},peerDependencies:{ai:"^7.0.40"},devDependencies:{"@ai-sdk/tui":"^1.0.41",ai:"^7.0.40","@chat-adapter/discord":"^4.35.0","@chat-adapter/github":"^4.35.0","@chat-adapter/slack":"^4.35.0","@chat-adapter/telegram":"^4.35.0","@types/bun":"^1.3.14",rollup:"^4.62.2",typescript:"^6.0.3","rollup-plugin-dts":"^6.4.1"}};var zb=Ib.version,Uo="https://dashboard.broods.app",ts="eu-west-1",TE=[{region:"eu-west-1",label:"eu-west-1 (Ireland)"},{region:"us-east-1",label:"us-east-1 (US East)"},{region:"ap-southeast-1",label:"ap-southeast-1 (Singapore)"}],Eb=`broods v${zb}
|
|
156
156
|
|
|
157
157
|
Usage: broods <command>
|
|
158
158
|
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as M,b as h,c as O}from"./chunk-
|
|
1
|
+
import{a as M,b as h,c as O}from"./chunk-wvs39trg.js";import{A as _,B as P,C as H,D as U,E as B,F as K,G as j,H as F,I as G,J as z,K as Z,L as V,M as X,d as x,e as I,n as v,o as k,p as S,q as A,r as R,s as W,t as L,u as w,v as E,w as D,x as T,y as q,z as N}from"./chunk-qjfqqhve.js";import"./chunk-51a2zca3.js";var o=500;function a(s){if(typeof s!=="object"||s===null)return!1;let e=s;if(e.type==="subscribe"){let t=e.stream;if(t!=="logs"&&t!=="traces")return!1;let r=e.backfill;if(r!==void 0&&(typeof r!=="number"||!Number.isSafeInteger(r)||r<0||r>500))return!1;if(e.liveOnly!==void 0&&typeof e.liveOnly!=="boolean")return!1;let n=e.minLevel;if(n!==void 0&&n!=="INFO"&&n!=="WARN"&&n!=="ERROR")return!1;return!0}if(e.type==="unsubscribe"){let t=e.stream;return t==="logs"||t==="traces"}return!1}export{h as BroodsAccountApiError,O as BroodsAccountClient,S as BroodsClient,R as BroodsWebSocketClient,v as DEFAULT_CORE_BASE_URL,k as IngressAcceptedError,o as MAX_OBSERVABILITY_BACKFILL,R as WebSocketClient,R as WebsocketClient,P as defineAgent,_ as defineBroods,G as defineChannelRecord,z as defineCron,T as defineDiscordChannel,E as defineGitHubChannel,H as defineHarness,q as definePancakeChannel,F as definePolicy,B as defineSandbox,K as defineSkill,D as defineSlackChannel,w as defineTelegramChannel,j as defineTool,U as defineWorkspace,N as defineZaloChannel,L as env,M as envPlaceholder,X as isBroodsConfig,V as isChannelDefinition,a as isObservabilityClientMessage,Z as isResource,A as normalizeHttpServiceUrl,I as readSseStream,x as resolveRunEvents,W as toWebSocketBaseUrl};
|