@swifty.js/swifty 0.0.22 → 0.0.24

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 (35) hide show
  1. package/dist/{agent-5T7KNC7V.js → agent-24XMR2WX.js} +1 -1
  2. package/dist/anthropic-7QRAPLOY.js +4 -0
  3. package/dist/{checker-OJFS2MZY.js → checker-3RWAYF2U.js} +1 -1
  4. package/dist/{chunk-HJIGA37J.js → chunk-5KXBVL2A.js} +1 -1
  5. package/dist/chunk-FAJYJI6T.js +389 -0
  6. package/dist/chunk-MWZIARZE.js +130 -0
  7. package/dist/{chunk-GUXBLUNR.js → chunk-NR62AA5K.js} +1 -1
  8. package/dist/chunk-QN27QEFS.js +4 -0
  9. package/dist/{chunk-LX2LK3TF.js → chunk-SIWLMWHH.js} +12 -11
  10. package/dist/{chunk-NEAR6YPZ.js → chunk-VQUWSKQQ.js} +21 -20
  11. package/dist/{chunk-NLNH3IRT.js → chunk-W37Y53LX.js} +1 -1
  12. package/dist/lib/agent-U42LS73D.js +9 -0
  13. package/dist/lib/{anthropic-GFWP3ORB.js → anthropic-RYPJDHQM.js} +6 -6
  14. package/dist/lib/{checker-IIXJXQCB.js → checker-6BW4222R.js} +3 -3
  15. package/dist/lib/{chunk-LUEP4JMF.js → chunk-2AUSNVIB.js} +8 -12
  16. package/dist/lib/{chunk-C7IHCJZ3.js → chunk-2QILP24G.js} +283 -12
  17. package/dist/lib/{chunk-6GOWRPYS.js → chunk-3LU4APFB.js} +2 -2
  18. package/dist/lib/{chunk-EJLGB2EJ.js → chunk-EY7HE52Q.js} +14 -7
  19. package/dist/lib/{chunk-7URDLWQN.js → chunk-GNI7YX6F.js} +2 -2
  20. package/dist/lib/{chunk-UMFNTXKA.js → chunk-OO2CLOEE.js} +38 -38
  21. package/dist/lib/{chunk-GNBXECZN.js → chunk-PZ42NAFA.js} +2 -3
  22. package/dist/lib/{chunk-RR2CZ6CY.js → chunk-XFSN4LMA.js} +94 -75
  23. package/dist/lib/{chunk-UHVO63Y7.js → chunk-XG6NELJH.js} +69 -38
  24. package/dist/lib/index.d.ts +234 -237
  25. package/dist/lib/index.js +212 -224
  26. package/dist/lib/{openai-HXRMPNB7.js → openai-VX5VBXZ4.js} +4 -4
  27. package/dist/main.js +197 -465
  28. package/dist/{openai-TVUUHRG7.js → openai-6MXNADYN.js} +15 -15
  29. package/dist/{server-ZTLHJWEQ.js → server-NJ2NXAOI.js} +16 -16
  30. package/package.json +5 -5
  31. package/dist/anthropic-P2R4GW6F.js +0 -4
  32. package/dist/chunk-L73IHJF4.js +0 -386
  33. package/dist/chunk-YQQVB6VB.js +0 -127
  34. package/dist/chunk-ZZQE743W.js +0 -4
  35. package/dist/lib/agent-2AGRYN3R.js +0 -9
@@ -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{h as a}from"./chunk-NEAR6YPZ.js";import"./chunk-YQQVB6VB.js";import"./chunk-FZPTNGTU.js";import"./chunk-LX2LK3TF.js";import"./chunk-X3UA5OZL.js";export{a as Agent};
4
+ import{i as a}from"./chunk-VQUWSKQQ.js";import"./chunk-MWZIARZE.js";import"./chunk-FZPTNGTU.js";import"./chunk-SIWLMWHH.js";import"./chunk-X3UA5OZL.js";export{a as Agent};
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __swiftyCreateRequire } from "node:module";
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};
@@ -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-GUXBLUNR.js";import"./chunk-ZZQE743W.js";import"./chunk-7MHXMDYC.js";import"./chunk-LX2LK3TF.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-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};
@@ -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 i,d as s}from"./chunk-ZZQE743W.js";var a=10,p=2.5,E="advanced-tool-use-2025-11-20",f=new Set(["api.anthropic.com"]),d="SWIFTY_MCP_LOADING";function u(o){if(!o)return!0;try{return f.has(new URL(o).hostname.toLowerCase())}catch{return!1}}function l(o){return Math.floor(o/p)}function m(o,t,e,n=a){let r=(process.env[d]??"").trim().toLowerCase();if(r==="eager"||r==="native"||r==="dispatch")return r;if(e<=0)return"eager";let c=t*n/100;return l(e)<c?"eager":u(o)?"native":"dispatch"}function g(o){let t=0;for(let e of o.listTools())if(e.name.startsWith(i))try{t+=JSON.stringify(e.schema()).length}catch{t+=e.name.length+(e.description?.length??0)}return t}function T(o,t){o.mcpLoadingMode=t;let e=t==="eager";for(let n of o.listTools())s(n)&&typeof n.setDeferLoading=="function"&&n.setDeferLoading(!e);o.exposeToolSearch=!e,o.exposeMcpCall=t==="dispatch"}function M(o,t,e){let n=m(t,e,g(o));return T(o,n),n}export{E as a,T as b,M as c};
4
+ import{a as i,d as s}from"./chunk-QN27QEFS.js";var a=10,p=2.5,E="advanced-tool-use-2025-11-20",f=new Set(["api.anthropic.com"]),d="SWIFTY_MCP_LOADING";function u(o){if(!o)return!0;try{return f.has(new URL(o).hostname.toLowerCase())}catch{return!1}}function l(o){return Math.floor(o/p)}function m(o,t,e,n=a){let r=(process.env[d]??"").trim().toLowerCase();if(r==="eager"||r==="native"||r==="dispatch")return r;if(e<=0)return"eager";let c=t*n/100;return l(e)<c?"eager":u(o)?"native":"dispatch"}function g(o){let t=0;for(let e of o.listTools())if(e.name.startsWith(i))try{t+=JSON.stringify(e.schema()).length}catch{t+=e.name.length+(e.description?.length??0)}return t}function T(o,t){o.mcpLoadingMode=t;let e=t==="eager";for(let n of o.listTools())s(n)&&typeof n.setDeferLoading=="function"&&n.setDeferLoading(!e);o.exposeToolSearch=!e,o.exposeMcpCall=t==="dispatch"}function M(o,t,e){let n=m(t,e,g(o));return T(o,n),n}export{E as a,T as b,M as c};