@swifty.js/swifty 0.0.26 → 0.0.27

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,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __swiftyCreateRequire } from "node:module";
3
3
  const require = __swiftyCreateRequire(import.meta.url);
4
- import{i as a}from"./chunk-VC6OXOMP.js";import"./chunk-MWZIARZE.js";import"./chunk-FZPTNGTU.js";import"./chunk-SIWLMWHH.js";import"./chunk-X3UA5OZL.js";export{a as Agent};
4
+ import{i as a}from"./chunk-G6YIQW3Z.js";import"./chunk-BRC5L644.js";import"./chunk-FZPTNGTU.js";import"./chunk-5I2WXSGV.js";import"./chunk-X3UA5OZL.js";export{a as Agent};
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __swiftyCreateRequire } from "node:module";
3
3
  const require = __swiftyCreateRequire(import.meta.url);
4
- import{a as U}from"./chunk-5KXBVL2A.js";import{g as P}from"./chunk-H7VXSMJR.js";import{l as M}from"./chunk-MWZIARZE.js";import{e as H,g as q,h as C}from"./chunk-W37Y53LX.js";import{b as O,c as $,d as I,e as K,f as W,g as F}from"./chunk-FZPTNGTU.js";import"./chunk-QN27QEFS.js";import"./chunk-7MHXMDYC.js";import{C as w,I as L,J as N,K as B,L as v,M as _,N as j,g as S}from"./chunk-SIWLMWHH.js";import"./chunk-E55KH72M.js";import"./chunk-X3UA5OZL.js";function Y(o){for(let t=o.length-1;t>=0;t--){let e=o[t];if(e.defer_loading!==!0){e.cache_control={type:"ephemeral"};return}}}function z(o){return o.some(t=>t.defer_loading)}var x=L({module:"llm"});var D=3e3,J=w.object({max_input_tokens:w.coerce.number()});async function ct(o){if(o.protocol!=="anthropic")return 0;let t=C(o),n=`${o.base_url.replace(/\/+$/,"")}/v1/models/${encodeURIComponent(o.model)}`,s=new AbortController,r=setTimeout(()=>{s.abort()},D);try{let c=await fetch(n,{method:"GET",headers:{"anthropic-version":"2023-06-01",...t?{"x-api-key":t}:{}},signal:s.signal});if(!c.ok)return 0;let m=await c.json(),{success:h,error:g,data:f}=await S(J,m);if(!h)return x.warn({message:g.message},"model context window schema validation failed"),0;let d=f.max_input_tokens;return Math.max(d,0)}catch(c){return x.error({err:c},"failed to fetch model context window"),0}finally{clearTimeout(r)}}function V(){return!0}function E(o){return typeof o=="string"?[{type:"text",text:o}]:o}function Q(o){let t=[];for(let e of o)if(e.role==="assistant"){let n=[];if(e.thinkingBlocks)for(let r of e.thinkingBlocks)n.push({type:"thinking",thinking:r.thinking,signature:r.signature});let s=typeof e.content=="string"?e.content:N(e.content);if(s&&n.push({type:"text",text:s}),e.toolUses)for(let r of e.toolUses)n.push({type:"tool_use",id:r.toolUseId,name:r.toolName,input:r.arguments});n.length===0&&n.push({type:"text",text:""}),t.push({role:"assistant",content:n})}else if(e.toolResults&&e.toolResults.length>0){let n=[];for(let s of e.toolResults)n.push({type:"tool_result",tool_use_id:s.toolUseId,is_error:s.isError,content:s.contentBlocks?.length?s.contentBlocks:s.content});t.push({role:"user",content:n})}else{if(t.length===0){t.push({role:"user",content:E(e.content)});continue}let n=!1,s=t[t.length-1],r=s.content;s.role==="user"&&(typeof r=="string"||Array.isArray(r)&&r.length>0&&(r[0].type==="text"||r[0].type==="image"))&&(n=!0),n?(typeof r=="string"&&(r=s.content=r.trim().length>0?[{type:"text",text:r}]:[]),r.push(...E(e.content))):t.push({role:"user",content:E(e.content)})}return t}var G=class{client;model;thinking;systemPrompt;maxOutputTokens;contextWindow;constructor(t,e){let n=C(t);if(!n)throw new I("Anthropic API key not found, set ANTHROPIC_API_KEY in .swifty/config.y(a)ml, or via ANTHROPIC_API_KEY env variable.");this.client=new P({apiKey:n,baseURL:t.base_url}),this.model=t.model,this.thinking=t.thinking??!0,this.systemPrompt=e,this.maxOutputTokens=q(t),this.contextWindow=H(t)}setSystemPrompt(t){this.systemPrompt=t}setMaxOutputTokens(t){this.maxOutputTokens=t}async*stream(t,e,n){let s=Q(O(t.getMessages())),r=z(e),c=e.map(l=>{let p=l.input_schema,u={name:l.name,description:l.description,input_schema:{type:"object",properties:p.properties,required:p.required??[]}};return l.defer_loading===!0&&(u.defer_loading=!0),u});Y(c),X(s);let m={model:this.model,max_tokens:this.maxOutputTokens,stream:!0,system:[{type:"text",text:this.systemPrompt,cache_control:{type:"ephemeral"}}],messages:s,...c.length>0?{tools:c}:{}};this.thinking?V()&&(m.thinking={type:"enabled",budget_tokens:M(this.contextWindow,this.maxOutputTokens)}):m.thinking={type:"enabled",budget_tokens:M(this.contextWindow,this.maxOutputTokens)};let h=0,g=0,f=0,d=0,R="end_turn",T="",b="",A=!1;try{let l=this.client.messages.stream(m,{...n?{signal:n}:{},...r?{headers:{"anthropic-beta":U}}:{}}),p="",u="",k="";for await(let i of l)switch(i.type){case"content_block_start":{let a=i.content_block;a.type==="thinking"?(A=!0,T="",b=""):a.type==="tool_use"&&(u=a.id,p=a.name,k="",yield{type:"tool_call_start",toolName:p,toolId:u});break}case"content_block_delta":{let a=i.delta;a.type==="thinking_delta"?(T+=a.thinking,yield{type:"thinking_delta",text:a.thinking}):a.type==="signature_delta"?b=a.signature:a.type==="text_delta"?yield{type:"text_delta",text:a.text}:a.type==="input_json_delta"&&(k+=a.partial_json,yield{type:"tool_call_delta",text:a.partial_json});break}case"content_block_stop":{if(A&&(yield{type:"thinking_complete",thinking:T,signature:b},A=!1),p){let a={};if(k)try{let y=JSON.parse(k);a=B(y)?v(y):{}}catch(y){x.error({err:y},"llm operation failed"),a={}}yield{type:"tool_call_complete",toolId:u,toolName:p,arguments:a},p="",u="",k=""}break}case"message_delta":{i.delta.stop_reason&&(R=i.delta.stop_reason),i.usage.output_tokens&&(g=i.usage.output_tokens,i.usage.input_tokens&&(h=i.usage.input_tokens),i.usage.cache_read_input_tokens&&(f=i.usage.cache_read_input_tokens),i.usage.cache_creation_input_tokens&&(d=i.usage.cache_creation_input_tokens));break}case"message_start":{h=i.message.usage.input_tokens,g=i.message.usage.output_tokens,f=i.message.usage.cache_read_input_tokens??0,d=i.message.usage.cache_creation_input_tokens??0;break}}yield{type:"stream_end",stopReason:R,usage:{inputTokens:h,outputTokens:g,cacheReadInputTokens:f,cacheCreationInputTokens:d}}}catch(l){throw x.error({err:l},"llm operation failed"),Z(l)}}};function X(o){for(let t=o.length-1;t>=0;t--){if(o[t].role!=="user")continue;let e=o[t].content;if(typeof e=="string"&&e.length===0||Array.isArray(e)&&e.length===0)return;typeof e=="string"&&(e=o[t].content=[{type:"text",text:e}]);let n=e[e.length-1];for(let s=e.length-1;s>=0;s--)if(e[s].type!=="image"){n=e[s];break}Reflect.set(n,"cache_control",{type:"ephemeral"})}}function Z(o){if(o instanceof P.APIError){if(o.status===413||/prompts?\s+too\s+long/i.test(o.message))return new F(`Prompt too long: ${o.message}`);if(o.status===401)return new I(`Invalid API key: ${o.message}`);if(o.status===429){let t=v(o.headers)["retry-after"],e="Rate Limited";if(t){let n=Number.parseInt(_(t));Number.isNaN(n)&&(e+=", please wait."),e+=`, retry after ${_(n)}s.`}else e+=", please wait.";return new K(e,t?_(t):void 0)}return new $(`Anthropic API error (${_(o.status)}): ${o.message}`)}return new W(`Network error: ${j(o)}`)}export{G as AnthropicClient,Q as buildAnthropicMessages,ct as fetchModelContextWindow,X as markLastUserTailForCache,Y as markToolsForCache,z as needsToolSearchBeta};
4
+ import{a as U}from"./chunk-UGJVMFGH.js";import{g as P}from"./chunk-C3WGLVVZ.js";import{l as M}from"./chunk-BRC5L644.js";import{e as H,g as q,h as C}from"./chunk-I2XG2PXV.js";import{b as O,c as $,d as I,e as K,f as W,g as F}from"./chunk-FZPTNGTU.js";import"./chunk-A57FEYSN.js";import"./chunk-WO6DL7OB.js";import{C as w,H as L,I as N,J as B,K as v,L as _,M as j,f as S}from"./chunk-5I2WXSGV.js";import"./chunk-E55KH72M.js";import"./chunk-X3UA5OZL.js";function Y(o){for(let t=o.length-1;t>=0;t--){let e=o[t];if(e.defer_loading!==!0){e.cache_control={type:"ephemeral"};return}}}function z(o){return o.some(t=>t.defer_loading)}var x=L({module:"llm"});var D=3e3,J=w.object({max_input_tokens:w.coerce.number()});async function ct(o){if(o.protocol!=="anthropic")return 0;let t=C(o),n=`${o.base_url.replace(/\/+$/,"")}/v1/models/${encodeURIComponent(o.model)}`,s=new AbortController,r=setTimeout(()=>{s.abort()},D);try{let c=await fetch(n,{method:"GET",headers:{"anthropic-version":"2023-06-01",...t?{"x-api-key":t}:{}},signal:s.signal});if(!c.ok)return 0;let m=await c.json(),{success:h,error:g,data:f}=await S(J,m);if(!h)return x.warn({message:g.message},"model context window schema validation failed"),0;let d=f.max_input_tokens;return Math.max(d,0)}catch(c){return x.error({err:c},"failed to fetch model context window"),0}finally{clearTimeout(r)}}function V(){return!0}function E(o){return typeof o=="string"?[{type:"text",text:o}]:o}function Q(o){let t=[];for(let e of o)if(e.role==="assistant"){let n=[];if(e.thinkingBlocks)for(let r of e.thinkingBlocks)n.push({type:"thinking",thinking:r.thinking,signature:r.signature});let s=typeof e.content=="string"?e.content:N(e.content);if(s&&n.push({type:"text",text:s}),e.toolUses)for(let r of e.toolUses)n.push({type:"tool_use",id:r.toolUseId,name:r.toolName,input:r.arguments});n.length===0&&n.push({type:"text",text:""}),t.push({role:"assistant",content:n})}else if(e.toolResults&&e.toolResults.length>0){let n=[];for(let s of e.toolResults)n.push({type:"tool_result",tool_use_id:s.toolUseId,is_error:s.isError,content:s.contentBlocks?.length?s.contentBlocks:s.content});t.push({role:"user",content:n})}else{if(t.length===0){t.push({role:"user",content:E(e.content)});continue}let n=!1,s=t[t.length-1],r=s.content;s.role==="user"&&(typeof r=="string"||Array.isArray(r)&&r.length>0&&(r[0].type==="text"||r[0].type==="image"))&&(n=!0),n?(typeof r=="string"&&(r=s.content=r.trim().length>0?[{type:"text",text:r}]:[]),r.push(...E(e.content))):t.push({role:"user",content:E(e.content)})}return t}var G=class{client;model;thinking;systemPrompt;maxOutputTokens;contextWindow;constructor(t,e){let n=C(t);if(!n)throw new I("Anthropic API key not found, set ANTHROPIC_API_KEY in .swifty/config.y(a)ml, or via ANTHROPIC_API_KEY env variable.");this.client=new P({apiKey:n,baseURL:t.base_url}),this.model=t.model,this.thinking=t.thinking??!0,this.systemPrompt=e,this.maxOutputTokens=q(t),this.contextWindow=H(t)}setSystemPrompt(t){this.systemPrompt=t}setMaxOutputTokens(t){this.maxOutputTokens=t}async*stream(t,e,n){let s=Q(O(t.getMessages())),r=z(e),c=e.map(l=>{let p=l.input_schema,u={name:l.name,description:l.description,input_schema:{type:"object",properties:p.properties,required:p.required??[]}};return l.defer_loading===!0&&(u.defer_loading=!0),u});Y(c),X(s);let m={model:this.model,max_tokens:this.maxOutputTokens,stream:!0,system:[{type:"text",text:this.systemPrompt,cache_control:{type:"ephemeral"}}],messages:s,...c.length>0?{tools:c}:{}};this.thinking?V()&&(m.thinking={type:"enabled",budget_tokens:M(this.contextWindow,this.maxOutputTokens)}):m.thinking={type:"enabled",budget_tokens:M(this.contextWindow,this.maxOutputTokens)};let h=0,g=0,f=0,d=0,R="end_turn",T="",b="",A=!1;try{let l=this.client.messages.stream(m,{...n?{signal:n}:{},...r?{headers:{"anthropic-beta":U}}:{}}),p="",u="",k="";for await(let i of l)switch(i.type){case"content_block_start":{let a=i.content_block;a.type==="thinking"?(A=!0,T="",b=""):a.type==="tool_use"&&(u=a.id,p=a.name,k="",yield{type:"tool_call_start",toolName:p,toolId:u});break}case"content_block_delta":{let a=i.delta;a.type==="thinking_delta"?(T+=a.thinking,yield{type:"thinking_delta",text:a.thinking}):a.type==="signature_delta"?b=a.signature:a.type==="text_delta"?yield{type:"text_delta",text:a.text}:a.type==="input_json_delta"&&(k+=a.partial_json,yield{type:"tool_call_delta",text:a.partial_json});break}case"content_block_stop":{if(A&&(yield{type:"thinking_complete",thinking:T,signature:b},A=!1),p){let a={};if(k)try{let y=JSON.parse(k);a=B(y)?v(y):{}}catch(y){x.error({err:y},"llm operation failed"),a={}}yield{type:"tool_call_complete",toolId:u,toolName:p,arguments:a},p="",u="",k=""}break}case"message_delta":{i.delta.stop_reason&&(R=i.delta.stop_reason),i.usage.output_tokens&&(g=i.usage.output_tokens,i.usage.input_tokens&&(h=i.usage.input_tokens),i.usage.cache_read_input_tokens&&(f=i.usage.cache_read_input_tokens),i.usage.cache_creation_input_tokens&&(d=i.usage.cache_creation_input_tokens));break}case"message_start":{h=i.message.usage.input_tokens,g=i.message.usage.output_tokens,f=i.message.usage.cache_read_input_tokens??0,d=i.message.usage.cache_creation_input_tokens??0;break}}yield{type:"stream_end",stopReason:R,usage:{inputTokens:h,outputTokens:g,cacheReadInputTokens:f,cacheCreationInputTokens:d}}}catch(l){throw x.error({err:l},"llm operation failed"),Z(l)}}};function X(o){for(let t=o.length-1;t>=0;t--){if(o[t].role!=="user")continue;let e=o[t].content;if(typeof e=="string"&&e.length===0||Array.isArray(e)&&e.length===0)return;typeof e=="string"&&(e=o[t].content=[{type:"text",text:e}]);let n=e[e.length-1];for(let s=e.length-1;s>=0;s--)if(e[s].type!=="image"){n=e[s];break}Reflect.set(n,"cache_control",{type:"ephemeral"})}}function Z(o){if(o instanceof P.APIError){if(o.status===413||/prompts?\s+too\s+long/i.test(o.message))return new F(`Prompt too long: ${o.message}`);if(o.status===401)return new I(`Invalid API key: ${o.message}`);if(o.status===429){let t=v(o.headers)["retry-after"],e="Rate Limited";if(t){let n=Number.parseInt(_(t));Number.isNaN(n)&&(e+=", please wait."),e+=`, retry after ${_(n)}s.`}else e+=", please wait.";return new K(e,t?_(t):void 0)}return new $(`Anthropic API error (${_(o.status)}): ${o.message}`)}return new W(`Network error: ${j(o)}`)}export{G as AnthropicClient,Q as buildAnthropicMessages,ct as fetchModelContextWindow,X as markLastUserTailForCache,Y as markToolsForCache,z as needsToolSearchBeta};
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __swiftyCreateRequire } from "node:module";
3
3
  const require = __swiftyCreateRequire(import.meta.url);
4
- import{a,b,c,d,e,f}from"./chunk-NR62AA5K.js";import"./chunk-QN27QEFS.js";import"./chunk-7MHXMDYC.js";import"./chunk-SIWLMWHH.js";import"./chunk-E55KH72M.js";import"./chunk-X3UA5OZL.js";export{b as PathSandbox,f as PermissionChecker,d as RuleEngine,c as evaluateRules,a as extractContent,e as isSafeCommand};
4
+ import{a,b,c,d,e,f}from"./chunk-SULWNDNC.js";import"./chunk-A57FEYSN.js";import"./chunk-WO6DL7OB.js";import"./chunk-5I2WXSGV.js";import"./chunk-E55KH72M.js";import"./chunk-X3UA5OZL.js";export{b as PathSandbox,f as PermissionChecker,d as RuleEngine,c as evaluateRules,a as extractContent,e as isSafeCommand};