@ironbee-ai/cli 0.25.0 → 0.25.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.25.1 (2026-06-16)
4
+
5
+ ### Features
6
+
7
+ * **claude:** image-aware approx_tokens in session_context ([b4edd69](https://github.com/ironbee-ai/ironbee-cli/commit/b4edd69a49f87e7e739f2ef83c4220558e6638fd))
8
+
3
9
  ## 0.25.0 (2026-06-16)
4
10
 
5
11
  ### Features
@@ -1 +1 @@
1
- "use strict";var _=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var r=(e,n)=>_(e,"name",{value:n,configurable:!0});var x=(e,n)=>{for(var s in n)_(e,s,{get:n[s],enumerable:!0})},c=(e,n,s,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let u of y(n))!b.call(e,u)&&u!==s&&_(e,u,{get:()=>n[u],enumerable:!(o=d(n,u))||o.enumerable});return e};var C=e=>c(_({},"__esModule",{value:!0}),e);var E={};x(E,{buildSessionContextEvent:()=>h,deriveSessionContextId:()=>a});module.exports=C(E);var l=require("node:crypto"),p=require("../../../analytics/claude/pricing"),m=require("../../../lib/event");function a(e,n){const s=(0,l.createHash)("sha256").update(`session_context:${e}:${n}`).digest("hex");return(0,m.formatHexAsUuid)(s.slice(0,32))}r(a,"deriveSessionContextId");function g(e){return Math.round(e/p.BYTES_PER_TOKEN)}r(g,"approxTokens");function k(e){if(e===null||!e.startsWith("agent:"))return null;const n=e.slice(e.lastIndexOf(":")+1).trim();return n.length>0?n:null}r(k,"agentNameFromQuerySource");function f(e,n){return n<=0?0:Math.round(e/n*1e4)/100}r(f,"percentOf");function t(e,n){return{bytes:e,approx_tokens:g(e),percent:f(e,n)}}r(t,"usage");function i(e,n){const s={};for(const o of Object.keys(e))s[o]=t(e[o],n);return s}r(i,"usageMap");function S(e,n){return{system_prompt:t(e.system_prompt,n),builtin_tools:t(e.builtin_tools,n),mcp_tools:t(e.mcp_tools,n),rules:t(e.rules,n),memory:t(e.memory,n),skills:t(e.skills,n),system_messages:t(e.system_messages,n),user_messages:t(e.user_messages,n),assistant_messages:t(e.assistant_messages,n),tool_result:t(e.tool_result,n),others:t(e.others,n)}}r(S,"buildBreakdown");function h(e,n){const s={id:a(e.session_id,e.request_uuid),type:m.EventType.SESSION_CONTEXT,timestamp:e.timestamp,session_id:e.session_id,project_name:e.project_name,sequence_number:e.sequence_number,model:e.model,query_source:e.query_source,agent_name:k(e.query_source),agent_id:e.agent_id??null,total_input_bytes:n.total_input_bytes,total_input_tokens_approx:g(n.total_input_bytes),breakdown:S(n.bytes,n.total_input_bytes),breakdown_detail:{mcp_tools_by_server:i(n.mcp_tools_by_server,n.total_input_bytes),rules_by_name:i(n.rules_by_name,n.total_input_bytes),skills_by_name:i(n.skills_by_name,n.total_input_bytes),tool_results_by_name:i(n.tool_results_by_name,n.total_input_bytes)},tool_counts:n.tool_counts,message_counts:n.message_counts};return e.user_email!==void 0&&(s.user_email=e.user_email),e.usage_type!==void 0&&(s.usage_type=e.usage_type),e.usage_plan!==void 0&&(s.usage_plan=e.usage_plan),s}r(h,"buildSessionContextEvent");0&&(module.exports={buildSessionContextEvent,deriveSessionContextId});
1
+ "use strict";var _=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var o=(e,t)=>_(e,"name",{value:t,configurable:!0});var C=(e,t)=>{for(var r in t)_(e,r,{get:t[r],enumerable:!0})},k=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of d(t))!b.call(e,n)&&n!==r&&_(e,n,{get:()=>t[n],enumerable:!(s=p(t,n))||s.enumerable});return e};var x=e=>k(_({},"__esModule",{value:!0}),e);var h={};C(h,{buildSessionContextEvent:()=>T,deriveSessionContextId:()=>y});module.exports=x(h);var l=require("node:crypto"),m=require("../../../analytics/claude/pricing"),g=require("../../../lib/event");function y(e,t){const r=(0,l.createHash)("sha256").update(`session_context:${e}:${t}`).digest("hex");return(0,g.formatHexAsUuid)(r.slice(0,32))}o(y,"deriveSessionContextId");function B(e){let t=0,r=0;for(const s of Object.keys(e.imageBytesByCategory))t+=e.imageBytesByCategory[s],r+=e.imageTokensByCategory[s];return Math.round(Math.max(0,e.total_input_bytes-t)/m.BYTES_PER_TOKEN)+r}o(B,"totalApproxTokens");function c(e){if(e===null||!e.startsWith("agent:"))return null;const t=e.slice(e.lastIndexOf(":")+1).trim();return t.length>0?t:null}o(c,"agentNameFromQuerySource");function f(e,t){return t<=0?0:Math.round(e/t*1e4)/100}o(f,"percentOf");function i(e,t,r=0,s=0){const n=Math.max(0,e-r);return{bytes:e,approx_tokens:Math.round(n/m.BYTES_PER_TOKEN)+s,percent:f(e,t)}}o(i,"usage");function a(e,t,r,s){const n={};for(const u of Object.keys(e))n[u]=i(e[u],t,r?.[u]??0,s?.[u]??0);return n}o(a,"usageMap");function S(e,t,r,s){const n=o(u=>i(e[u],t,r[u],s[u]),"u");return{system_prompt:n("system_prompt"),builtin_tools:n("builtin_tools"),mcp_tools:n("mcp_tools"),rules:n("rules"),memory:n("memory"),skills:n("skills"),system_messages:n("system_messages"),user_messages:n("user_messages"),assistant_messages:n("assistant_messages"),tool_result:n("tool_result"),others:n("others")}}o(S,"buildBreakdown");function T(e,t){const r={id:y(e.session_id,e.request_uuid),type:g.EventType.SESSION_CONTEXT,timestamp:e.timestamp,session_id:e.session_id,project_name:e.project_name,sequence_number:e.sequence_number,model:e.model,query_source:e.query_source,agent_name:c(e.query_source),agent_id:e.agent_id??null,total_input_bytes:t.total_input_bytes,total_input_tokens_approx:B(t),breakdown:S(t.bytes,t.total_input_bytes,t.imageBytesByCategory,t.imageTokensByCategory),breakdown_detail:{mcp_tools_by_server:a(t.mcp_tools_by_server,t.total_input_bytes),rules_by_name:a(t.rules_by_name,t.total_input_bytes),skills_by_name:a(t.skills_by_name,t.total_input_bytes),tool_results_by_name:a(t.tool_results_by_name,t.total_input_bytes,t.imageBytesByToolResult,t.imageTokensByToolResult)},tool_counts:t.tool_counts,message_counts:t.message_counts};return e.user_email!==void 0&&(r.user_email=e.user_email),e.usage_type!==void 0&&(r.usage_type=e.usage_type),e.usage_plan!==void 0&&(r.usage_plan=e.usage_plan),r}o(T,"buildSessionContextEvent");0&&(module.exports={buildSessionContextEvent,deriveSessionContextId});
@@ -1 +1 @@
1
- "use strict";var b=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var r=(e,s)=>b(e,"name",{value:s,configurable:!0});var v=(e,s)=>{for(var t in s)b(e,t,{get:s[t],enumerable:!0})},h=(e,s,t,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of w(s))!x.call(e,i)&&i!==t&&b(e,i,{get:()=>s[i],enumerable:!(n=R(s,i))||n.enumerable});return e};var N=e=>h(b({},"__esModule",{value:!0}),e);var E={};v(E,{classifyRequestBody:()=>z});module.exports=N(E);var m=require("./util"),a=require("./markers");function B(){return{system_prompt:0,builtin_tools:0,mcp_tools:0,rules:0,memory:0,skills:0,system_messages:0,user_messages:0,assistant_messages:0,tool_result:0,others:0}}r(B,"zeroBytes");function _(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}r(_,"isObject");function O(e){if(typeof e=="string")return e;try{return JSON.stringify(e)??""}catch{return""}}r(O,"asText");function k(e,s){for(const t of Object.keys(s))e[t]=(e[t]??0)+s[t]}r(k,"mergeNames");function C(e,s){e.bytes.rules+=s.bytes.rules,e.bytes.memory+=s.bytes.memory,e.bytes.skills+=s.bytes.skills,e.bytes.system_messages+=s.bytes.system_messages,k(e.rules_by_name,s.rules_by_name),k(e.skills_by_name,s.skills_by_name)}r(C,"addInjected");function A(e,s){s.includes("<system-reminder>")?C(e,(0,a.attributeInjectedText)(s)):e.bytes.user_messages+=(0,m.byteLen)(s)}r(A,"classifyUserText");function U(e,s){if(typeof s=="string"){A(e,s);return}if(Array.isArray(s))for(const t of s){if(!_(t))continue;const n=t.type;if(n==="tool_result"){e.msgCounts.tool_result+=1;const i=(0,m.jsonBytes)(t);e.bytes.tool_result+=i;const y=t.tool_use_id,u=typeof y=="string"?e.toolUseNames[y]:void 0,c=u!==void 0?I(u):a.OTHER_NAME;e.tool_results_by_name[c]=(e.tool_results_by_name[c]??0)+i}else n==="text"&&typeof t.text=="string"&&A(e,t.text)}}r(U,"classifyUserContent");function T(e){const s=e.slice(5),t=s.indexOf("__");return t>0?s.slice(0,t):a.OTHER_NAME}r(T,"mcpServerName");function I(e){if(!e.startsWith("mcp__"))return e;const s=e.slice(5),t=s.indexOf("__");return t>0?`${s.slice(0,t)}:${s.slice(t+2)}`:s}r(I,"normalizeToolName");function j(e){const s={};for(const t of e)if(!(!_(t)||t.role!=="assistant"||!Array.isArray(t.content)))for(const n of t.content)_(n)&&n.type==="tool_use"&&typeof n.id=="string"&&typeof n.name=="string"&&(s[n.id]=n.name);return s}r(j,"collectToolUseNames");function z(e){const s={bytes:B(),rules_by_name:{},skills_by_name:{},mcp_tools_by_server:{},tool_results_by_name:{},toolUseNames:{},msgCounts:{user:0,assistant:0,tool_result:0,system:0}},t=s.bytes,n={builtin:0,mcp:0,total:0},i=(0,m.jsonBytes)(e),y=r(()=>({total_input_bytes:i,bytes:t,mcp_tools_by_server:s.mcp_tools_by_server,rules_by_name:s.rules_by_name,skills_by_name:s.skills_by_name,tool_results_by_name:s.tool_results_by_name,tool_counts:n,message_counts:s.msgCounts}),"result");if(!_(e))return t.others=i,y();const u=e.system;if(Array.isArray(u))for(const o of u)t.system_prompt+=(0,m.jsonBytes)(o);else typeof u=="string"&&(t.system_prompt+=(0,m.byteLen)(u));const c=e.tools;if(Array.isArray(c))for(const o of c){n.total+=1;const l=_(o)?o.name:void 0;if(typeof l=="string"&&l.startsWith("mcp__")){const p=(0,m.jsonBytes)(o);t.mcp_tools+=p;const d=T(l);s.mcp_tools_by_server[d]=(s.mcp_tools_by_server[d]??0)+p,n.mcp+=1}else t.builtin_tools+=(0,m.jsonBytes)(o),n.builtin+=1}const f=e.messages;if(Array.isArray(f)){s.toolUseNames=j(f);for(const o of f){if(!_(o))continue;const l=o.role;l==="assistant"?(s.msgCounts.assistant+=1,t.assistant_messages+=(0,m.jsonBytes)(o)):l==="system"?(s.msgCounts.system+=1,C(s,(0,a.attributeInjectedText)(O(o.content)))):l==="user"&&(s.msgCounts.user+=1,U(s,o.content))}}let g=0;for(const o of Object.keys(t))o!=="others"&&(g+=t[o]);return t.others=Math.max(0,i-g),y()}r(z,"classifyRequestBody");0&&(module.exports={classifyRequestBody});
1
+ "use strict";var d=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var i=(e,s)=>d(e,"name",{value:s,configurable:!0});var O=(e,s)=>{for(var t in s)d(e,t,{get:s[t],enumerable:!0})},U=(e,s,t,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of v(s))!I.call(e,o)&&o!==t&&d(e,o,{get:()=>s[o],enumerable:!(n=x(s,o))||n.enumerable});return e};var N=e=>U(d({},"__esModule",{value:!0}),e);var W={};O(W,{classifyRequestBody:()=>S});module.exports=N(W);var u=require("./util"),b=require("./markers"),k=require("./image-tokens");function p(){return{system_prompt:0,builtin_tools:0,mcp_tools:0,rules:0,memory:0,skills:0,system_messages:0,user_messages:0,assistant_messages:0,tool_result:0,others:0}}i(p,"zeroBytes");function y(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}i(y,"isObject");function j(e){if(typeof e=="string")return e;try{return JSON.stringify(e)??""}catch{return""}}i(j,"asText");function R(e){const s=e.source;return y(s)&&s.type==="base64"&&typeof s.data=="string"&&s.data.length>0?s.data:null}i(R,"imageBase64Data");function T(e,s,t,n,o){const m=(0,k.decodeImageDimensions)(t);if(m===null)return;const a=(0,u.byteLen)(t),l=(0,k.approxImageTokens)(m.width,m.height,n);e.imageBytesByCategory[s]+=a,e.imageTokensByCategory[s]+=l,o!==void 0&&(e.imageBytesByToolResult[o]=(e.imageBytesByToolResult[o]??0)+a,e.imageTokensByToolResult[o]=(e.imageTokensByToolResult[o]??0)+l)}i(T,"recordImage");function w(e,s){for(const t of Object.keys(s))e[t]=(e[t]??0)+s[t]}i(w,"mergeNames");function A(e,s){e.bytes.rules+=s.bytes.rules,e.bytes.memory+=s.bytes.memory,e.bytes.skills+=s.bytes.skills,e.bytes.system_messages+=s.bytes.system_messages,w(e.rules_by_name,s.rules_by_name),w(e.skills_by_name,s.skills_by_name)}i(A,"addInjected");function h(e,s){s.includes("<system-reminder>")?A(e,(0,b.attributeInjectedText)(s)):e.bytes.user_messages+=(0,u.byteLen)(s)}i(h,"classifyUserText");function D(e,s,t){if(typeof s=="string"){h(e,s);return}if(Array.isArray(s))for(const n of s){if(!y(n))continue;const o=n.type;if(o==="tool_result"){e.msgCounts.tool_result+=1;const m=(0,u.jsonBytes)(n);e.bytes.tool_result+=m;const a=n.tool_use_id,l=typeof a=="string"?e.toolUseNames[a]:void 0,c=l!==void 0?E(l):b.OTHER_NAME;if(e.tool_results_by_name[c]=(e.tool_results_by_name[c]??0)+m,Array.isArray(n.content)){for(const g of n.content)if(y(g)&&g.type==="image"){const f=R(g);f!==null&&T(e,"tool_result",f,t,c)}}}else if(o==="text"&&typeof n.text=="string")h(e,n.text);else if(o==="image"){const m=R(n);m!==null&&T(e,"others",m,t)}}}i(D,"classifyUserContent");function z(e){const s=e.slice(5),t=s.indexOf("__");return t>0?s.slice(0,t):b.OTHER_NAME}i(z,"mcpServerName");function E(e){if(!e.startsWith("mcp__"))return e;const s=e.slice(5),t=s.indexOf("__");return t>0?`${s.slice(0,t)}:${s.slice(t+2)}`:s}i(E,"normalizeToolName");function M(e){const s={};for(const t of e)if(!(!y(t)||t.role!=="assistant"||!Array.isArray(t.content)))for(const n of t.content)y(n)&&n.type==="tool_use"&&typeof n.id=="string"&&typeof n.name=="string"&&(s[n.id]=n.name);return s}i(M,"collectToolUseNames");function S(e,s=""){const t={bytes:p(),rules_by_name:{},skills_by_name:{},mcp_tools_by_server:{},tool_results_by_name:{},toolUseNames:{},msgCounts:{user:0,assistant:0,tool_result:0,system:0},imageBytesByCategory:p(),imageTokensByCategory:p(),imageBytesByToolResult:{},imageTokensByToolResult:{}},n=t.bytes,o={builtin:0,mcp:0,total:0},m=(0,u.jsonBytes)(e),a=i(()=>({total_input_bytes:m,bytes:n,mcp_tools_by_server:t.mcp_tools_by_server,rules_by_name:t.rules_by_name,skills_by_name:t.skills_by_name,tool_results_by_name:t.tool_results_by_name,tool_counts:o,message_counts:t.msgCounts,imageBytesByCategory:t.imageBytesByCategory,imageTokensByCategory:t.imageTokensByCategory,imageBytesByToolResult:t.imageBytesByToolResult,imageTokensByToolResult:t.imageTokensByToolResult}),"result");if(!y(e))return n.others=m,a();const l=e.system;if(Array.isArray(l))for(const r of l)n.system_prompt+=(0,u.jsonBytes)(r);else typeof l=="string"&&(n.system_prompt+=(0,u.byteLen)(l));const c=e.tools;if(Array.isArray(c))for(const r of c){o.total+=1;const _=y(r)?r.name:void 0;if(typeof _=="string"&&_.startsWith("mcp__")){const B=(0,u.jsonBytes)(r);n.mcp_tools+=B;const C=z(_);t.mcp_tools_by_server[C]=(t.mcp_tools_by_server[C]??0)+B,o.mcp+=1}else n.builtin_tools+=(0,u.jsonBytes)(r),o.builtin+=1}const g=e.messages;if(Array.isArray(g)){t.toolUseNames=M(g);for(const r of g){if(!y(r))continue;const _=r.role;_==="assistant"?(t.msgCounts.assistant+=1,n.assistant_messages+=(0,u.jsonBytes)(r)):_==="system"?(t.msgCounts.system+=1,A(t,(0,b.attributeInjectedText)(j(r.content)))):_==="user"&&(t.msgCounts.user+=1,D(t,r.content,s))}}let f=0;for(const r of Object.keys(n))r!=="others"&&(f+=n[r]);return n.others=Math.max(0,m-f),a()}i(S,"classifyRequestBody");0&&(module.exports={classifyRequestBody});
@@ -1 +1 @@
1
- "use strict";var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var o=(u,n)=>s(u,"name",{value:n,configurable:!0});var c=(u,n)=>{for(var e in n)s(u,e,{get:n[e],enumerable:!0})},y=(u,n,e,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of f(n))!m.call(u,i)&&i!==e&&s(u,i,{get:()=>n[i],enumerable:!(t=a(n,i))||t.enumerable});return u};var b=u=>y(s({},"__esModule",{value:!0}),u);var _={};c(_,{extractApiRequestBodyMeta:()=>p});module.exports=b(_);function d(u,n){for(const e of u)if(e&&e.key===n)return e.value}o(d,"findAttr");function r(u,n){const e=d(u,n);return e&&typeof e.stringValue=="string"?e.stringValue:void 0}o(r,"readStr");function l(u,n){const e=d(u,n);if(e){if(e.intValue!==void 0){const t=Number(e.intValue);return Number.isFinite(t)?t:void 0}if(typeof e.doubleValue=="number")return e.doubleValue}}o(l,"readNum");function g(u,n){const e=r(n,"event.timestamp");if(e){const i=Date.parse(e);if(Number.isFinite(i))return i}const t=u.timeUnixNano??u.observedTimeUnixNano;if(t)try{return Number(BigInt(t)/1000000n)}catch{}return Date.now()}o(g,"resolveTimestamp");function p(u,n){const e=u.attributes??[],t=r(e,"body_ref");return t?{body_ref:t,sequence_number:l(e,"event.sequence")??null,model:r(e,"model")??"",query_source:r(e,"query_source")??null,agent_id:r(e,"agent.id")??r(e,"prompt.id")??null,body_length:l(e,"body_length")??null,session_id:r(e,"session.id")??r(n,"session.id")??null,project_name:r(n,"ironbee.project_name")??null,timestamp:g(u,e)}:null}o(p,"extractApiRequestBodyMeta");0&&(module.exports={extractApiRequestBodyMeta});
1
+ "use strict";var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var o=(u,n)=>s(u,"name",{value:n,configurable:!0});var c=(u,n)=>{for(var e in n)s(u,e,{get:n[e],enumerable:!0})},y=(u,n,e,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of f(n))!m.call(u,r)&&r!==e&&s(u,r,{get:()=>n[r],enumerable:!(t=a(n,r))||t.enumerable});return u};var b=u=>y(s({},"__esModule",{value:!0}),u);var p={};c(p,{extractApiRequestBodyMeta:()=>_});module.exports=b(p);function l(u,n){for(const e of u)if(e&&e.key===n)return e.value}o(l,"findAttr");function i(u,n){const e=l(u,n);return e&&typeof e.stringValue=="string"?e.stringValue:void 0}o(i,"readStr");function d(u,n){const e=l(u,n);if(e){if(e.intValue!==void 0){const t=Number(e.intValue);return Number.isFinite(t)?t:void 0}if(typeof e.doubleValue=="number")return e.doubleValue}}o(d,"readNum");function g(u,n){const e=i(n,"event.timestamp");if(e){const r=Date.parse(e);if(Number.isFinite(r))return r}const t=u.timeUnixNano??u.observedTimeUnixNano;if(t)try{return Number(BigInt(t)/1000000n)}catch{}return Date.now()}o(g,"resolveTimestamp");function _(u,n){const e=u.attributes??[],t=i(e,"body_ref");return t?{body_ref:t,sequence_number:d(e,"event.sequence")??null,model:i(e,"model")??"",query_source:i(e,"query_source")??null,agent_id:null,body_length:d(e,"body_length")??null,session_id:i(e,"session.id")??i(n,"session.id")??null,project_name:i(n,"ironbee.project_name")??null,timestamp:g(u,e)}:null}o(_,"extractApiRequestBodyMeta");0&&(module.exports={extractApiRequestBodyMeta});
@@ -0,0 +1 @@
1
+ "use strict";var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var l=(e,n)=>s(e,"name",{value:n,configurable:!0});var x=(e,n)=>{for(var t in n)s(e,t,{get:n[t],enumerable:!0})},p=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of d(n))!h.call(e,r)&&r!==t&&s(e,r,{get:()=>n[r],enumerable:!(i=g(n,r))||i.enumerable});return e};var P=e=>p(s({},"__esModule",{value:!0}),e);var y={};x(y,{approxImageTokens:()=>C,decodeImageDimensions:()=>w});module.exports=P(y);var b=require("image-size");const f=28,c={longEdge:2576,maxPixels:375e4},a={longEdge:1568,maxPixels:115e4};function E(e){if(e.startsWith("claude-fable-")||e.startsWith("claude-mythos-"))return c;const n=/^claude-opus-(\d+)-(\d+)/.exec(e);if(n!==null){const t=Number(n[1]),i=Number(n[2]);return t>4||t===4&&i>=7?c:a}return a}l(E,"capProfile");function C(e,n,t){if(!Number.isFinite(e)||!Number.isFinite(n)||!(e>0)||!(n>0))return 0;const i=E(t);let r=e,u=n;const o=Math.max(r,u);if(o>i.longEdge){const m=i.longEdge/o;r*=m,u*=m}if(r*u>i.maxPixels){const m=Math.sqrt(i.maxPixels/(r*u));r*=m,u*=m}return Math.ceil(r/f)*Math.ceil(u/f)}l(C,"approxImageTokens");function w(e){try{const n=e.startsWith("data:")?e.indexOf(","):-1,t=n!==-1?e.slice(n+1):e;if(t.length===0)return null;const i=Buffer.from(t,"base64");if(i.length===0)return null;const r=(0,b.imageSize)(i),u=r.width,o=r.height;return typeof u=="number"&&typeof o=="number"&&u>0&&o>0?{width:u,height:o}:null}catch{return null}}l(w,"decodeImageDimensions");0&&(module.exports={approxImageTokens,decodeImageDimensions});
@@ -1 +1 @@
1
- "use strict";var l=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var o=(e,n)=>l(e,"name",{value:n,configurable:!0});var k=(e,n)=>{for(var t in n)l(e,t,{get:n[t],enumerable:!0})},E=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of B(n))!w.call(e,r)&&r!==t&&l(e,r,{get:()=>n[r],enumerable:!(s=R(n,r))||s.enumerable});return e};var T=e=>E(l({},"__esModule",{value:!0}),e);var P={};k(P,{processBodyFile:()=>N});module.exports=T(P);var p=require("fs"),c=require("path"),a=require("../../../lib/logger"),y=require("../context/util"),m=require("../context/classify"),_=require("../context/build"),d=require("./paths");const g=3,v=50;function x(e){return new Promise(n=>{setTimeout(n,e)})}o(x,"delay");function i(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(i,"isObject");function C(e){try{const n=JSON.parse((0,p.readFileSync)(e,"utf8"));return i(n)?n:null}catch{return null}}o(C,"readJsonObject");function F(e){return i(e)&&typeof e.model=="string"&&e.model.length>0?e.model:null}o(F,"modelFromBody");function q(e){if(!i(e)||!i(e.metadata))return null;const n=e.metadata.user_id;if(typeof n!="string")return null;try{const t=JSON.parse(n);if(i(t)&&typeof t.session_id=="string")return t.session_id}catch{}return null}o(q,"sessionIdFromBody");function A(e,n){const t=C((0,c.join)(e,".ironbee","sessions",n,"state.json"));if(!t)return{};const s={};return typeof t.userEmail=="string"&&(s.user_email=t.userEmail),(t.usageType==="api"||t.usageType==="subscription")&&(s.usage_type=t.usageType),typeof t.usagePlan=="string"&&(s.usage_plan=t.usagePlan),typeof t.projectName=="string"&&(s.projectName=t.projectName),s}o(A,"readSessionState");async function N(e){const n=(0,d.projectDirFromBodyRef)(e.body_ref);if(n===null)return a.logger.warn(`otel: refusing body_ref outside a .ironbee/otel dir: ${e.body_ref}`),null;let t=null;for(let f=0;f<g;f++){try{t=(0,p.readFileSync)(e.body_ref,"utf8")}catch{return null}if(e.body_length===null||(0,y.byteLen)(t)===e.body_length||f===g-1)break;await x(v)}if(t===null)return null;let s;try{s=JSON.parse(t)}catch{return a.logger.debug(`otel: unparseable body file ${e.body_ref}`),null}const r=e.session_id??q(s);if(!r)return a.logger.debug(`otel: no session_id for ${e.body_ref}; skipping`),null;const u=A(n,r),b=e.project_name??u.projectName??(0,c.basename)(n),S=(0,m.classifyRequestBody)(s),j={session_id:r,project_name:b,model:F(s)??e.model,query_source:e.query_source,agent_id:e.agent_id,sequence_number:e.sequence_number,timestamp:e.timestamp,request_uuid:(0,d.requestUuidFromBodyRef)(e.body_ref),user_email:u.user_email,usage_type:u.usage_type,usage_plan:u.usage_plan};return{event:(0,_.buildSessionContextEvent)(j,S),projectDir:n,bodyRef:e.body_ref}}o(N,"processBodyFile");0&&(module.exports={processBodyFile});
1
+ "use strict";var l=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var o=(e,n)=>l(e,"name",{value:n,configurable:!0});var E=(e,n)=>{for(var t in n)l(e,t,{get:n[t],enumerable:!0})},T=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of w(n))!k.call(e,r)&&r!==t&&l(e,r,{get:()=>n[r],enumerable:!(s=B(n,r))||s.enumerable});return e};var v=e=>T(l({},"__esModule",{value:!0}),e);var I={};E(I,{processBodyFile:()=>P});module.exports=v(I);var p=require("fs"),c=require("path"),a=require("../../../lib/logger"),m=require("../context/util"),_=require("../context/classify"),b=require("../context/build"),d=require("./paths");const y=3,x=50;function C(e){return new Promise(n=>{setTimeout(n,e)})}o(C,"delay");function i(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(i,"isObject");function F(e){try{const n=JSON.parse((0,p.readFileSync)(e,"utf8"));return i(n)?n:null}catch{return null}}o(F,"readJsonObject");function q(e){return i(e)&&typeof e.model=="string"&&e.model.length>0?e.model:null}o(q,"modelFromBody");function A(e){if(!i(e)||!i(e.metadata))return null;const n=e.metadata.user_id;if(typeof n!="string")return null;try{const t=JSON.parse(n);if(i(t)&&typeof t.session_id=="string")return t.session_id}catch{}return null}o(A,"sessionIdFromBody");function N(e,n){const t=F((0,c.join)(e,".ironbee","sessions",n,"state.json"));if(!t)return{};const s={};return typeof t.userEmail=="string"&&(s.user_email=t.userEmail),(t.usageType==="api"||t.usageType==="subscription")&&(s.usage_type=t.usageType),typeof t.usagePlan=="string"&&(s.usage_plan=t.usagePlan),typeof t.projectName=="string"&&(s.projectName=t.projectName),s}o(N,"readSessionState");async function P(e){const n=(0,d.projectDirFromBodyRef)(e.body_ref);if(n===null)return a.logger.warn(`otel: refusing body_ref outside a .ironbee/otel dir: ${e.body_ref}`),null;let t=null;for(let f=0;f<y;f++){try{t=(0,p.readFileSync)(e.body_ref,"utf8")}catch{return null}if(e.body_length===null||(0,m.byteLen)(t)===e.body_length||f===y-1)break;await C(x)}if(t===null)return null;let s;try{s=JSON.parse(t)}catch{return a.logger.debug(`otel: unparseable body file ${e.body_ref}`),null}const r=e.session_id??A(s);if(!r)return a.logger.debug(`otel: no session_id for ${e.body_ref}; skipping`),null;const u=N(n,r),S=e.project_name??u.projectName??(0,c.basename)(n),g=q(s)??e.model,j=(0,_.classifyRequestBody)(s,g),R={session_id:r,project_name:S,model:g,query_source:e.query_source,agent_id:e.agent_id,sequence_number:e.sequence_number,timestamp:e.timestamp,request_uuid:(0,d.requestUuidFromBodyRef)(e.body_ref),user_email:u.user_email,usage_type:u.usage_type,usage_plan:u.usage_plan};return{event:(0,b.buildSessionContextEvent)(R,j),projectDir:n,bodyRef:e.body_ref}}o(P,"processBodyFile");0&&(module.exports={processBodyFile});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ironbee-ai/cli",
3
- "version": "0.25.0",
3
+ "version": "0.25.1",
4
4
  "description": "The CLI for IronBee — Verification and Intelligence Layer for Agentic Development",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -71,6 +71,7 @@
71
71
  "blessed": "^0.1.81",
72
72
  "commander": "^12.1.0",
73
73
  "diff": "^9.0.0",
74
+ "image-size": "^2.0.2",
74
75
  "picocolors": "^1.1.1"
75
76
  },
76
77
  "devDependencies": {