@yuandc/aica 0.1.45 → 0.1.46
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 +1 @@
|
|
|
1
|
-
import{spawn as
|
|
1
|
+
import{spawn as i}from"node:child_process";import{acpChildEnvironment as s}from"../../../core/process-identity.js";import{resolveCodexPath as _}from"./codex-path.js";import{resolveCodexPath as A}from"./codex-path.js";const d=["The `/root` entry returned by `list_agents` is the current main agent, not a child agent to wait for.","Call `wait_agent` only after spawning a child agent and only while at least one child agent is still running.","If no child agents are running, continue the task or answer the user; do not poll `list_agents` or `wait_agent`."].join(" "),o=["-c","features.sleep_tool=false","-c",`features.multi_agent_v2.multi_agent_mode_hint_text=${JSON.stringify(d)}`];function m(e,n=null){const t=_(),a=l(n),r=i(t,a,{cwd:e,env:s(t,a,{CODEX_PATH:t,...n?{ACA_CODEX_PROVIDER_KEY:n.apiKey}:{}}),stdio:["pipe","pipe","pipe"],windowsHide:!0});return r.stdout.setEncoding("utf8"),r.stderr.setEncoding("utf8"),{command:t,args:a,child:r}}function l(e){return e?[...o,"-c",'model_provider="aca_managed"',"-c",'model_providers.aca_managed.name="ACA Managed"',"-c",`model_providers.aca_managed.base_url=${JSON.stringify(e.baseUrl)}`,"-c",'model_providers.aca_managed.env_key="ACA_CODEX_PROVIDER_KEY"',"-c",'model_providers.aca_managed.wire_api="responses"',"-c","model_providers.aca_managed.requires_openai_auth=false","app-server","--stdio"]:[...o,"app-server","--stdio"]}export{l as codexAppServerArgs,A as resolveCodexPath,m as startCodexAppServer};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import T from"node:fs";const f=1024*1024;function x(t=process.env){const e=a(t.ACA_CODEX_USAGE_LOOP_MIN_SAMPLES,4);return{compactTokenThreshold:a(t.ACA_CODEX_COMPACT_TOKEN_THRESHOLD,12e4),compactContextRatio:h(t.ACA_CODEX_COMPACT_CONTEXT_RATIO,.45),rolloverTokenThreshold:a(t.ACA_CODEX_ROLLOVER_TOKEN_THRESHOLD,18e4),rolloverContextRatio:h(t.ACA_CODEX_ROLLOVER_CONTEXT_RATIO,.6),rolloutMaxBytes:a(t.ACA_CODEX_ROLLOUT_MAX_BYTES,50*f),threadMaxTurns:a(t.ACA_CODEX_THREAD_MAX_TURNS,40),compactTimeoutMs:a(t.ACA_CODEX_COMPACT_TIMEOUT_MS,600*1e3),slowEventThresholdMs:a(t.ACA_CODEX_SLOW_EVENT_THRESHOLD_MS,300*1e3),usageLoopWindowMs:a(t.ACA_CODEX_USAGE_LOOP_WINDOW_MS,120*1e3),usageLoopMinSamples:e,usageLoopInterruptSamples:Math.max(e+1,a(t.ACA_CODEX_USAGE_LOOP_INTERRUPT_SAMPLES,8)),usageLoopMinInputTokens:a(t.ACA_CODEX_USAGE_LOOP_MIN_INPUT_TOKENS,5e4),usageLoopMaxOutputTokens:M(t.ACA_CODEX_USAGE_LOOP_MAX_OUTPUT_TOKENS,128)}}function m(t,e=Date.now()){const o=i(t),s=i(o.tokenUsage),n=i(s.last),r=l(n.inputTokens),c=l(n.outputTokens),p=l(n.totalTokens),u=l(s.modelContextWindow);return r===0&&p===0&&u===0?null:{source:"thread_usage",inputTokens:r,outputTokens:c,hasOutputTokens:typeof n.outputTokens=="number"&&Number.isFinite(n.outputTokens),totalTokens:p,contextWindow:u,contextRatio:u>0?r/u:0,observedAtMs:e,threadId:d(o.threadId),turnId:d(o.turnId),responseId:null}}function _(t,e=Date.now()){const o=i(t),s=i(o.usage);if(Object.keys(s).length===0)return null;const n=l(s.inputTokens),r=l(s.outputTokens),c=l(s.totalTokens);return n===0&&r===0&&c===0?null:{source:"raw_response",inputTokens:n,outputTokens:r,hasOutputTokens:typeof s.outputTokens=="number"&&Number.isFinite(s.outputTokens),totalTokens:c,contextWindow:0,contextRatio:0,observedAtMs:e,threadId:d(o.threadId),turnId:d(o.turnId),responseId:d(o.responseId)}}function C(t,e=Date.now()){const o=i(t),s=i(o.update);if(String(s.sessionUpdate||"")!=="usage_update")return null;const n=i(s._meta),r=i(n.codex);return Object.keys(r).length===0?null:m(r,e)}function E(t,e=Date.now()){const o=i(t),s=i(o.update);if(String(s.sessionUpdate||"")!=="aca_codex_raw_response_usage")return null;const n=i(s._meta),r=i(n.codex);return _(r.rawResponse,e)}function k(t,e,o={}){const s=[],n=[];return t.usage&&t.usage.inputTokens>=e.compactTokenThreshold&&s.push("token-threshold"),t.usage&&t.usage.contextRatio>=e.compactContextRatio&&s.push("context-ratio"),t.rolloutBytes>=e.rolloutMaxBytes&&s.push("rollout-size"),t.turnCount>=e.threadMaxTurns&&s.push("turn-count"),o.compactAttempted&&(o.compactFailed&&n.push("compact-failed"),t.usage&&t.usage.inputTokens>=e.rolloverTokenThreshold&&n.push("token-still-high"),t.usage&&t.usage.contextRatio>=e.rolloverContextRatio&&n.push("context-ratio-still-high"),t.rolloutBytes>=e.rolloutMaxBytes&&n.push("rollout-size"),t.turnCount>=e.threadMaxTurns&&n.push("turn-count")),{compact:s.length>0,rollover:n.length>0,reasons:[...new Set([...s,...n])]}}function I(t){if(!t)return 0;try{const e=T.statSync(t);return e.isFile()?e.size:0}catch{return 0}}function R(t){const e=[...new Set(t.affectedFiles.map(o=>o.trim()).filter(Boolean))].slice(0,30);return["ACA automatically rotated a long Codex thread to keep future turns responsive.","Treat the following as continuity context, not as a new user request.","Repository files on disk are authoritative; inspect them before making further edits.","",`Previous thread: ${t.previousThreadId}`,`Working directory: ${t.cwd}`,"","Latest user request:",A(t.userRequest,3e3)||"(not available)","","Latest completed assistant result:",A(t.assistantResponse,7e3)||"(not available)","","Recently affected files:",e.length>0?e.map(o=>`- ${o}`).join(`
|
|
2
2
|
`):"- (not recorded)"].join(`
|
|
3
|
-
`)}class
|
|
4
|
-
`).trim();return
|
|
5
|
-
...[truncated]`}function i(
|
|
3
|
+
`)}class g{startedAtMs;firstEventAtMs=null;lastEventAtMs=null;eventCount=0;lastSlowReportAtMs=0;constructor(e=Date.now()){this.startedAtMs=e}recordEvent(e=Date.now()){this.firstEventAtMs===null&&(this.firstEventAtMs=e),this.lastEventAtMs=e,this.eventCount+=1}shouldReportSlow(e,o){const s=this.lastEventAtMs??this.startedAtMs;return e-s<o||this.lastSlowReportAtMs>0&&e-this.lastSlowReportAtMs<o?!1:(this.lastSlowReportAtMs=e,!0)}snapshot(e=Date.now()){const o=this.lastEventAtMs??this.startedAtMs;return{startedAtMs:this.startedAtMs,firstEventAtMs:this.firstEventAtMs,lastEventAtMs:this.lastEventAtMs,eventCount:this.eventCount,firstEventLatencyMs:this.firstEventAtMs===null?null:this.firstEventAtMs-this.startedAtMs,silentForMs:Math.max(0,e-o),durationMs:Math.max(0,e-this.startedAtMs)}}}class S{policy;samples=[];detection=null;rawResponseObserved=!1;constructor(e){this.policy=e}recordMeaningfulEvent(){const e=this.detection;return this.samples=[],this.detection=null,e}recordUsage(e){if(e.source==="raw_response"&&!this.rawResponseObserved)this.samples=[],this.rawResponseObserved=!0;else if(e.source==="thread_usage"&&this.rawResponseObserved)return null;if(!e.hasOutputTokens||e.inputTokens<this.policy.usageLoopMinInputTokens||e.outputTokens>this.policy.usageLoopMaxOutputTokens)return this.samples=[],this.detection=null,null;const o=this.samples.at(-1);if(o&&(o.source!==e.source||o.threadId&&e.threadId&&o.threadId!==e.threadId||o.turnId&&e.turnId&&o.turnId!==e.turnId)&&(this.samples=[],this.detection=null),this.samples.push(e),this.samples.length<this.policy.usageLoopMinSamples)return null;const s=this.samples,n=s.map(u=>u.inputTokens),r=Math.min(...n),c=Math.max(...n),p=Math.max(2e3,Math.floor(c*.05));return c-r>p?(this.samples=[e],this.detection=null,null):(this.detection={source:e.source,sampleCount:s.length,windowMs:s.at(-1).observedAtMs-s[0].observedAtMs,minInputTokens:r,maxInputTokens:c,maxOutputTokens:Math.max(...s.map(u=>u.outputTokens)),detectedAtMs:e.observedAtMs,threadId:e.threadId,turnId:e.turnId,responseIds:s.map(u=>u.responseId).filter(u=>!!u)},this.detection)}}function a(t,e){const o=Number.parseInt(t??"",10);return Number.isInteger(o)&&o>0?o:e}function M(t,e){const o=Number.parseInt(t??"",10);return Number.isInteger(o)&&o>=0?o:e}function h(t,e){const o=Number.parseFloat(t??"");return Number.isFinite(o)&&o>0&&o<=1?o:e}function l(t){return typeof t=="number"&&Number.isFinite(t)&&t>=0?Math.floor(t):0}function A(t,e){const o=t.replace(/\r\n/g,`
|
|
4
|
+
`).trim();return o.length<=e?o:`${o.slice(0,e-16).trimEnd()}
|
|
5
|
+
...[truncated]`}function i(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function d(t){return typeof t=="string"&&t.trim()?t.trim():null}export{g as CodexPromptPerformanceTracker,S as CodexUsageLoopDetector,R as buildCodexContinuityInstructions,E as codexRawResponseUsageFromAcpSessionUpdate,C as codexTokenUsageFromAcpSessionUpdate,m as codexTokenUsageFromNotification,_ as codexTokenUsageFromRawResponseCompleted,k as decideCodexContextMaintenance,x as readCodexContextMaintenancePolicy,I as rolloutFileSize};
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const o="0.1.
|
|
1
|
+
const o="0.1.46";export{o as AICA_VERSION};
|