broods 0.5.0 → 0.5.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.
package/README.md CHANGED
@@ -17,6 +17,14 @@ bun add -g broods
17
17
  broods dev
18
18
  ```
19
19
 
20
+ `ai` is an optional peer dependency. The CLI and the SDK both run without it —
21
+ it is only needed to resolve the AI SDK types the SDK re-exports, so add it when
22
+ you consume those types from TypeScript:
23
+
24
+ ```bash
25
+ npm install ai
26
+ ```
27
+
20
28
  ## Invoke an Agent
21
29
 
22
30
  ```ts
package/dist/cli/index.js CHANGED
@@ -151,7 +151,7 @@ ${e.errorText}`};case"output-denied":return{kind:"error",title:`Tool Denied · $
151
151
  Reason: ${(a=e.approval.reason)!=null?a:"denied"}`}}}function Hy(e,t,n,o){switch(n){case"collapsed":return!0;case"auto-collapsed":return e.parts.slice(t+1).some((r)=>j0(r,o));case"full":case"hidden":return!1}}function j0(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 z0(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 N0(e,{hasPendingToolResults:t}){switch(e.type){case"start-step":return t?Gy:Ro;case"tool-output-available":case"tool-output-error":case"tool-output-denied":return Gy;case"tool-input-available":return Ky;case"tool-approval-response":return e.approved?Ky:void 0;default:return}}function D0(e){switch(e.type){case"tool-output-available":case"tool-output-error":case"tool-output-denied":return!0;default:return!1}}function U0(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 Yy(e){if(typeof e==="string")return e;return JSON.stringify(e,null,2)}function L0(e){var t;return`tool ${(t=e.title)!=null?t:e.toolName}`}function F0(e,t){return`${e}:${t}`}function Z0(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*V0(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 gb(e,t){if(e.cache&&vb(e,e.cache,t))return e.cache.lines;let n=B0(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 vb(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 B0(e,t){let n=O0[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?p0(e.content):Ne.dim+"(streaming...)"+Ne.reset).split(`
152
152
  `).flatMap((p)=>W0(p,o));return[s,...d.map((p)=>q0(p,o,n.color)),u]}function q0(e,t,n){let o=gn(e,t),r=" ".repeat(Math.max(0,t-Lt(o)));return`${n}│${Ne.reset} ${o}${r} ${n}│${Ne.reset}`}function W0(e,t){if(e.length===0)return[""];let n=[],o=e;while(Lt(o)>t){let r=J0(o,t);n.push(o.slice(0,r).trimEnd()),o=o.slice(r).trimStart()}return n.push(o),n}function J0(e,t){let o=gn(e,t+1).lastIndexOf(" ");if(o>0)return o;return gn(e,t).length}function G0(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:hb(o!=null?o:r),outputTokens:Bf(o!=null?o:r),outputTokensPerSecond:a==null?void 0:a.outputTokensPerSecond}}function K0(e){var t;let n=e;return{totalTokens:hb(n==null?void 0:n.usage),outputTokens:Bf(n==null?void 0:n.usage),outputTokensPerSecond:(t=n==null?void 0:n.performance)==null?void 0:t.outputTokensPerSecond}}function hb(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=H0(e),o=Bf(e);if(n!=null&&o!=null)return n+o;return}function H0(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 Bf(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 yb(e,t){if(e==null)return;let n=`${e.toLocaleString()} ${e===1?"token":"tokens"}`,o=Y0(e,t);return o==null?n:`${n} ${o}`}function Y0(e,t){if(t==null||t<=0||!Number.isFinite(t))return;return`${Math.round(e/t*100).toLocaleString()}%`}function X0(e,t){if(t==="outputTokensPerSecond")return Q0(e.outputTokensPerSecond);return yb(e.outputTokens)}function Q0(e){if(e==null)return;return`${eE(e)} tok/s`}function eE(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`
153
153
  `: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 tE="outputTokensPerSecond",rE=class{constructor(e){this.chatId=cn();var t,n,o,r;this.agent=e.agent,this.transport=e.transport,this.renderer=(t=oE(e))!=null?t:nE(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:tE,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(rb(u))return;throw u}if(r==null)return}t.push(sE(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 l=lE(u);if(l.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 l){let p=await this.renderer.readToolApproval(d,{title:e});cE(u,d,p)}Qy(t,u,i),i=!0,r=void 0;continue}Qy(t,u,i)}}catch(u){if(rb(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:Df(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:aE(a.fullStream,t,e),message:Df(e),abort:o}}};function nE(e){return e.tools===void 0&&e.reasoning===void 0&&e.responseStatistics===void 0&&e.contextSize===void 0?new Nf:new Nf({tools:e.tools,reasoning:e.reasoning,responseStatistics:e.responseStatistics,contextSize:e.contextSize})}function oE(e){if(e.renderer)return e.renderer;if(!e.screen&&!e.userInput)return;return new Nf({tools:e.tools,reasoning:e.reasoning,responseStatistics:e.responseStatistics,contextSize:e.contextSize,input:e.userInput,output:e.screen})}async function*aE(e,t,n=[]){var o,r;let a=new Set,i=new Set,s=new Set,u,l,d=!1;yield{type:"start",messageId:(r=(o=Df(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:eb(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:tb(p.file.mediaType,p.file.base64),mediaType:p.file.mediaType,providerMetadata:p.providerMetadata};break;case"reasoning-file":yield{type:"reasoning-file",url:tb(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,l=p.performance,yield{type:"finish-step"};break;case"finish":yield*Xy(a,i),d=!0,yield{type:"finish",finishReason:p.finishReason,messageMetadata:iE(u!=null?u:p.totalUsage,l)};break;case"abort":yield{type:"abort",reason:p.reason};break;case"error":yield{type:"error",errorText:eb(p.error)};break}if(!d)yield*Xy(a,i),yield{type:"finish"}}function iE(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*Xy(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 sE(e,t){return{id:e,role:"user",parts:[{type:"text",text:t}]}}function Qy(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 Df(e){let t=e.at(-1);return(t==null?void 0:t.role)==="assistant"?t:void 0}function lE(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:Dt(o),title:o.title,input:o.input,providerExecuted:o.providerExecuted,messageId:e.id,partIndex:n})}return t}function cE(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 eb(e){if(e instanceof Error)return e.message;if(typeof e==="string")return e;return JSON.stringify(e)}function tb(e,t){return`data:${e};base64,${t}`}function rb(e){return e instanceof Error&&e.message==="Interrupted"}async function bb(e){await new rE(e).run()}async function _b(e){if(e.prompt!==void 0)uE(e.prompt);await bb({title:`broods · ${e.agent.name}`,tools:"full",transport:new wb(e.client,e.agent)})}async function xb(e){let t=Ny({stream:$b(e.client.stream(e.agent,{input:e.prompt}),void 0,()=>{})});for await(let n of t)process.stdout.write(n);process.stdout.write(`
154
- `)}async function uE(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 wb{client;agent;conversationKey=`tui-${cn()}`;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 Fy({stream:$b(n,e.abortSignal,t.commit),originalMessages:e.messages,generateMessageId:cn,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 $b(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(),dE(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 dE(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 kb={name:"broods",version:"0.5.0",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:{"@ai-sdk/tui":"^1.0.41",ai:"^7.0.40",esbuild:"^0.27.0"},devDependencies:{"@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 Cb=kb.version,Uo="https://dashboard.broods.app",ts="eu-west-1",_E=[{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)"}],Ib=`broods v${Cb}
154
+ `)}async function uE(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 wb{client;agent;conversationKey=`tui-${cn()}`;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 Fy({stream:$b(n,e.abortSignal,t.commit),originalMessages:e.messages,generateMessageId:cn,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 $b(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(),dE(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 dE(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 kb={name:"broods",version:"0.5.1",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.27.0"},peerDependencies:{ai:"^7.0.40"},peerDependenciesMeta:{ai:{optional:!0}},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 Cb=kb.version,Uo="https://dashboard.broods.app",ts="eu-west-1",_E=[{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)"}],Ib=`broods v${Cb}
155
155
 
156
156
  Usage: broods <command>
157
157
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "broods",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "CLI + TypeScript SDK for the broods agent platform.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -50,11 +50,19 @@
50
50
  "node": ">=22"
51
51
  },
52
52
  "dependencies": {
53
- "@ai-sdk/tui": "^1.0.41",
54
- "ai": "^7.0.40",
55
53
  "esbuild": "^0.27.0"
56
54
  },
55
+ "peerDependencies": {
56
+ "ai": "^7.0.40"
57
+ },
58
+ "peerDependenciesMeta": {
59
+ "ai": {
60
+ "optional": true
61
+ }
62
+ },
57
63
  "devDependencies": {
64
+ "@ai-sdk/tui": "^1.0.41",
65
+ "ai": "^7.0.40",
58
66
  "@chat-adapter/discord": "^4.35.0",
59
67
  "@chat-adapter/github": "^4.35.0",
60
68
  "@chat-adapter/slack": "^4.35.0",