@aria-cli/cli 1.0.15 → 1.0.19

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,356 @@
1
- import{a,b,c,d,e,f as g,g as h,h as i}from"../index-718zvjhe.js";import{j as f}from"../index-y2vy5jks.js";import"../index-j035n0mr.js";import"../index-00jaxgt2.js";import"../index-wbm34jf5.js";import"../index-76vaj0sr.js";import"../index-5v7br509.js";import"../index-xjwfqz7t.js";import"../index-sxga6d5s.js";import"../index-g5devafm.js";import"../index-sx36201d.js";import"../index-nnqfqvqh.js";import"../index-9j6r3gr8.js";export{h as startHeadlessStdioServer,f as runtimeCutoverResetCommand,c as runDaemonFromCli,i as program,g as createRuntimeCutoverResetCommand,e as createPairingCommand,d as createHeadlessCallCommand,b as createAuthCommand,a as createArionsCommand};
1
+ import{createRequire as K0}from"node:module";var R0=Object.defineProperty;var O0=(c)=>c;function k0(c,n){this[c]=O0.bind(null,n)}var e=(c,n)=>{for(var y in n)R0(c,y,{get:n[y],enumerable:!0,configurable:!0,set:k0.bind(n,y)})};var x=(c,n)=>()=>(c&&(n=c(c=0)),n);var w=K0(import.meta.url);var jy={};e(jy,{saveConfig:()=>B,loadConfig:()=>j,loadAndMigrateConfig:()=>Qy,getConfigPath:()=>$n,getAriaDir:()=>l});import*as r from"fs";import*as Zy from"os";import{getModelById as A0,getModelByShortName as E0,isValidTier as Xy}from"@aria-cli/models";import{log as lc}from"@aria-cli/types";function l(){if(process.env.ARIA_HOME)return process.env.ARIA_HOME;return`${process.env.HOME||Zy.homedir()}/.aria`}function $n(){return`${l()}/config.json`}function Qy(){try{let c=$n();if(r.existsSync(c)){let n=JSON.parse(r.readFileSync(c,"utf-8"));try{if(n.defaultModel&&!n.preferredTier){let f=A0(n.defaultModel)||E0(n.defaultModel);if(!f)lc.warn(`Unknown model "${n.defaultModel}" migrated to balanced tier (Sonnet 4.5)`);let i=f?.tier||"balanced";n.preferredTier=Xy(i)?i:"balanced",delete n.defaultModel,B(n)}if(n.preferredTier!==void 0&&!Xy(n.preferredTier))lc.warn(`Invalid tier "${n.preferredTier}" corrected to balanced tier`),n.preferredTier="balanced",B(n);let y=!1;if(!n.awsRegion&&process.env.AWS_REGION)n.awsRegion=process.env.AWS_REGION,y=!0;if(!n.awsProfile&&process.env.AWS_PROFILE)n.awsProfile=process.env.AWS_PROFILE,y=!0;if(y)B(n)}catch(y){lc.warn("Config migration failed, using config as-is:",y instanceof Error?y.message:y)}return n}}catch(c){lc.warn("[Config] Failed to load config file:",c)}return{}}function B(c){let n=l();if(!r.existsSync(n))r.mkdirSync(n,{recursive:!0});r.writeFileSync($n(),JSON.stringify(c,null,2),"utf-8")}var j;var o=x(()=>{j=Qy});function Kc(c){kc.__aria_stall_phase=c,kc.__aria_stall_phase_ts=performance.now()}function gc(){kc.__aria_stall_phase=void 0,kc.__aria_stall_phase_ts=void 0}function hg(){let{__aria_stall_phase:c,__aria_stall_phase_ts:n}=kc;if(!c||typeof n!=="number")return;return{label:c,ageMs:performance.now()-n}}function Rg(c){let n=c.thresholdMs??2000,y=performance.now(),f=process.cpuUsage(),i=setInterval(()=>{let u=performance.now(),_=u-y,g=process.cpuUsage(f);if(y=u,f=process.cpuUsage(),_>n)if((g.user+g.system)/1000/_<0.05)c.onSleep?.(_);else c.onStall(_)},500);if(typeof i==="object"&&i!==null&&"unref"in i)i.unref();return()=>clearInterval(i)}var gg=2000,kc;var xn=x(()=>{kc=globalThis});import{z as $}from"zod";import{log as Yy}from"@aria-cli/types";function vc(c){return{id:crypto.randomUUID(),role:"user",content:[{type:"text",text:c}],createdAt:new Date().toISOString()}}function Dy(c){return{id:crypto.randomUUID(),role:"system",content:[{type:"text",text:c}],createdAt:new Date().toISOString()}}function Vy(c,n,y,f){let i=`synthetic_inbox_${crypto.randomUUID().slice(0,8)}`,u=new Date().toISOString(),_={id:crypto.randomUUID(),role:"assistant",content:[{type:"tool_use",id:i,name:"check_messages",arguments:{unreadOnly:!0}}],createdAt:u},g={id:crypto.randomUUID(),role:"tool",content:[{type:"tool_result",toolUseId:i,content:JSON.stringify({messages:[{id:f||crypto.randomUUID(),from:c,address:n,content:y,type:"incoming"}]}),status:"success"}],createdAt:u};return[_,g]}function My(c,n){return{id:crypto.randomUUID(),role:"system",content:[{type:"error",content:c,...n?{suggestion:n}:{}}],createdAt:new Date().toISOString()}}function By(c){let n=[];for(let y of c)switch(y.role){case"assistant":{let f=[],i=[];for(let _ of y.content)if(_.type==="text")f.push(_.text);else if(_.type==="tool_use")i.push({id:_.id,name:_.name,arguments:_.arguments,..._.thoughtSignature?{thoughtSignature:_.thoughtSignature}:{}});let u={role:"assistant",content:f.join("")};if(i.length>0)u.toolCalls=i;n.push(u);break}case"tool":{for(let f of y.content)if(f.type==="tool_result")n.push({role:"tool",content:f.content,toolCallId:f.toolUseId});break}case"user":case"system":{let f=[];for(let i of y.content)if(i.type==="text")f.push(i.text);n.push({role:y.role,content:f.join("")});break}}return n}function Ic(c,n){let y=[];for(let f of c){let i=[],u=f;if(u.thinking)for(let _ of u.thinking){let g=_.thinking?_.thinking.split(/\s+/).filter(Boolean).length:0;i.push({type:"thinking",content:_.thinking,wordCount:g})}if(f.role==="assistant"&&f.toolCalls){if(f.content)i.push({type:"text",text:f.content});for(let _ of f.toolCalls)i.push({type:"tool_use",id:_.id,name:_.name,arguments:_.arguments,..._.thoughtSignature?{thoughtSignature:_.thoughtSignature}:{}})}else if(f.role==="tool")i.push({type:"tool_result",toolUseId:f.toolCallId??"",content:f.content,status:"success"});else if(f.content)i.push({type:"text",text:f.content});if(i.length===0)i.push({type:"text",text:""});y.push({id:crypto.randomUUID(),role:f.role,content:i,arion:n?.arion,createdAt:new Date().toISOString()})}return y}function Ac(c){let n=[];if(c.thinking)try{let y=JSON.parse(c.thinking);for(let f of y)n.push({type:"thinking",content:f.content??"",wordCount:f.wordCount??0})}catch{Yy.warn(`[fromV1Columns] Corrupted thinking JSON in message row ${c.id} (session ${c.session_id}), skipping`)}if(c.tool_calls)try{let y=JSON.parse(c.tool_calls);for(let f of y)n.push({type:"tool_use",id:f.id,name:f.name,arguments:f.arguments??{},...f.thoughtSignature?{thoughtSignature:f.thoughtSignature}:{}})}catch{Yy.warn(`[fromV1Columns] Corrupted tool_calls JSON in message row ${c.id} (session ${c.session_id}), skipping`)}if(c.role==="tool"&&c.tool_call_id)n.push({type:"tool_result",toolUseId:c.tool_call_id,content:c.content,status:"success"});if(c.role!=="tool"&&c.content)n.push({type:"text",text:c.content});return{id:crypto.randomUUID(),role:c.role,content:n.length>0?n:[{type:"text",text:c.content??""}],arion:c.arion?{name:c.arion,emoji:"",color:void 0}:void 0,createdAt:c.created_at}}function Py(c){let n=[];for(let y of c)for(let f of y.content)switch(f.type){case"thinking":n.push({id:`thinking-${crypto.randomUUID()}`,role:"thinking_history",content:f.content,wordCount:f.wordCount,durationSeconds:f.durationMs?f.durationMs/1000:void 0,verb:f.verb,arionName:y.arion?.name,arionEmoji:y.arion?.emoji,arionColor:y.arion?.color});break;case"tool_use":n.push({id:`tool-${crypto.randomUUID()}`,role:"tool_history",tool:{id:f.id,name:f.name,status:"complete",args:f.arguments,result:void 0,startTime:void 0,endTime:void 0}});break;case"tool_result":{let i;for(let u=n.length-1;u>=0;u--){let _=n[u];if(_.role==="tool_history"&&_.tool.id===f.toolUseId){i=_;break}}if(i){if(i.tool.status=f.status==="error"?"error":"complete",f.status==="error")i.tool.error=f.content;else i.tool.result=f.content;if(f.resultData!==void 0)i.tool.resultData=f.resultData;if(f.durationMs!==void 0)i.tool.durationMs=f.durationMs;if(f.usage!==void 0)i.tool.usage=f.usage}break}case"handoff":n.push({id:`handoff-${crypto.randomUUID()}`,role:"handoff_history",target:f.target,direction:f.direction});break;case"error":n.push({id:`error-${crypto.randomUUID()}`,role:"error",content:f.content,suggestion:f.suggestion});break;case"text":n.push({id:`msg-${crypto.randomUUID()}`,role:y.role,content:f.text,arion:y.arion?{name:y.arion.name,emoji:y.arion.emoji,color:y.arion.color}:void 0});break}return n}function Ec(c){return c.content.filter((n)=>n.type==="text").map((n)=>n.text).join("")}function Lc(c){let n=c.content.filter((y)=>y.type==="tool_use");if(n.length===0)return null;return JSON.stringify(n.map((y)=>({id:y.id,name:y.name,arguments:y.arguments,...y.thoughtSignature?{thoughtSignature:y.thoughtSignature}:{}})))}function Nc(c){let n=c.content.filter((y)=>y.type==="thinking");if(n.length===0)return null;return JSON.stringify(n.map((y)=>({id:crypto.randomUUID(),content:y.content,wordCount:y.wordCount})))}function $c(c){for(let n of c.content)if(n.type==="tool_result")return n.toolUseId;return null}var L0,N0,$0,x0,T0,C0,Tn,m0,Cn,qc;var Xc=x(()=>{L0=$.object({type:$.literal("text"),text:$.string()}),N0=$.object({type:$.literal("thinking"),content:$.string(),wordCount:$.number(),durationMs:$.number().optional(),verb:$.string().optional()}),$0=$.object({type:$.literal("tool_use"),id:$.string(),name:$.string(),arguments:$.record($.string(),$.unknown()),thoughtSignature:$.string().optional()}),x0=$.object({type:$.literal("tool_result"),toolUseId:$.string(),content:$.string(),status:$.enum(["success","error"]),durationMs:$.number().optional(),resultData:$.unknown().optional(),usage:$.object({inputTokens:$.number(),outputTokens:$.number(),totalTokens:$.number(),estimatedCost:$.number()}).optional()}),T0=$.object({type:$.literal("handoff"),target:$.string(),direction:$.enum(["to","from"])}),C0=$.object({type:$.literal("error"),content:$.string(),suggestion:$.string().optional()}),Tn=$.discriminatedUnion("type",[L0,N0,$0,x0,T0,C0]),m0=["cyan","magenta","yellow","green","blue","red","white"],Cn=$.object({name:$.string(),emoji:$.string(),color:$.enum(m0).optional()}),qc=$.object({id:$.string(),role:$.enum(["user","assistant","system","tool"]),content:$.array(Tn),arion:Cn.optional(),costUSD:$.number().optional(),durationMs:$.number().optional(),tokenUsage:$.object({input:$.number(),output:$.number()}).optional(),createdAt:$.string()})});import t0 from"better-sqlite3";import Sy from"node:crypto";import{existsSync as Zc,copyFileSync as G0,mkdirSync as mn,readdirSync as F0}from"node:fs";import xc from"node:path";import{log as P}from"@aria-cli/types";class Tc{db;sessionFtsEnabled=!1;incrementalSessions=new Set;static resolvePerArionPath(c,n){let y=xc.join(c,"arions",n),f=xc.join(y,"history.db");if(!Zc(f))mn(y,{recursive:!0});return f}static migrateJsonlLogs(c,n){let y=xc.join(c,"arions",n,"logs"),f=xc.join(c,"logs");if(!Zc(y)&&Zc(f)){mn(y,{recursive:!0});try{let i=F0(f).filter((u)=>u.endsWith(".jsonl"));for(let u of i){let _=xc.join(f,u),g=xc.join(y,u);if(!Zc(g))G0(_,g)}}catch{}}if(!Zc(y))mn(y,{recursive:!0});return y}constructor(c){this.db=new t0(c),this.db.pragma("journal_mode = WAL"),this.db.pragma("busy_timeout = 5000"),this.db.pragma("foreign_keys = ON"),this.initialize()}initialize(){this.db.exec(`
2
+ CREATE TABLE IF NOT EXISTS sessions (
3
+ id TEXT PRIMARY KEY,
4
+ created_at TEXT NOT NULL,
5
+ updated_at TEXT NOT NULL,
6
+ completed_at TEXT,
7
+ title TEXT,
8
+ arion TEXT NOT NULL,
9
+ model TEXT NOT NULL,
10
+ message_count INTEGER DEFAULT 0
11
+ );
12
+
13
+ CREATE TABLE IF NOT EXISTS messages (
14
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
15
+ session_id TEXT NOT NULL,
16
+ role TEXT NOT NULL,
17
+ content TEXT NOT NULL,
18
+ arion TEXT,
19
+ created_at TEXT NOT NULL,
20
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
21
+ );
22
+
23
+ CREATE TABLE IF NOT EXISTS input_history (
24
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
25
+ content TEXT NOT NULL UNIQUE,
26
+ used_at TEXT NOT NULL
27
+ );
28
+
29
+ CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id);
30
+ CREATE INDEX IF NOT EXISTS idx_sessions_updated ON sessions(updated_at DESC);
31
+ CREATE INDEX IF NOT EXISTS idx_input_history_used ON input_history(used_at DESC);
32
+ `);try{this.db.exec("ALTER TABLE sessions ADD COLUMN completed_at TEXT")}catch(c){if(!(c?.message??"").includes("duplicate column name"))throw c}try{this.db.exec("ALTER TABLE messages ADD COLUMN tool_call_id TEXT")}catch(c){if(!(c?.message??"").includes("duplicate column name"))throw c}try{this.db.exec("ALTER TABLE messages ADD COLUMN tool_calls TEXT")}catch(c){if(!(c?.message??"").includes("duplicate column name"))throw c}try{this.db.exec("ALTER TABLE messages ADD COLUMN thinking TEXT")}catch(c){if(!(c?.message??"").includes("duplicate column name"))throw c}try{this.db.exec("ALTER TABLE messages ADD COLUMN data TEXT")}catch(c){if(!(c?.message??"").includes("duplicate column name"))throw c}this.db.exec(`
33
+ CREATE TABLE IF NOT EXISTS run_metrics (
34
+ id TEXT PRIMARY KEY,
35
+ session_id TEXT NOT NULL,
36
+ turn_count INTEGER,
37
+ input_tokens INTEGER,
38
+ output_tokens INTEGER,
39
+ total_tokens INTEGER,
40
+ estimated_cost REAL,
41
+ wall_time_ms INTEGER,
42
+ tool_count INTEGER,
43
+ guardrail_fires INTEGER,
44
+ handoff_count INTEGER,
45
+ created_at TEXT DEFAULT (datetime('now')),
46
+ FOREIGN KEY (session_id) REFERENCES sessions(id)
47
+ );
48
+
49
+ CREATE INDEX IF NOT EXISTS idx_run_metrics_session ON run_metrics(session_id);
50
+ `),this.db.exec(`
51
+ CREATE TABLE IF NOT EXISTS session_runtime_state (
52
+ session_id TEXT PRIMARY KEY,
53
+ state_status TEXT NOT NULL DEFAULT 'idle',
54
+ active_run_id TEXT,
55
+ paused_state_json TEXT,
56
+ policy_snapshot_json TEXT,
57
+ last_event_seq INTEGER NOT NULL DEFAULT 0,
58
+ revision INTEGER NOT NULL DEFAULT 0,
59
+ lease_owner TEXT,
60
+ lease_expires_at TEXT,
61
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
62
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
63
+ );
64
+
65
+ CREATE TABLE IF NOT EXISTS session_interactions (
66
+ interaction_id TEXT PRIMARY KEY,
67
+ session_id TEXT NOT NULL,
68
+ request_id TEXT NOT NULL,
69
+ source TEXT NOT NULL,
70
+ kind TEXT NOT NULL,
71
+ status TEXT NOT NULL,
72
+ prompt_json TEXT NOT NULL,
73
+ response_json TEXT,
74
+ created_at TEXT NOT NULL,
75
+ answered_at TEXT,
76
+ applied_at TEXT,
77
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
78
+ );
79
+
80
+ CREATE INDEX IF NOT EXISTS idx_session_runtime_state_status
81
+ ON session_runtime_state(state_status, updated_at DESC);
82
+ CREATE INDEX IF NOT EXISTS idx_session_interactions_session
83
+ ON session_interactions(session_id, created_at DESC);
84
+ CREATE INDEX IF NOT EXISTS idx_session_interactions_status
85
+ ON session_interactions(status, created_at DESC);
86
+ `),this.initializeSessionFts();try{this.db.pragma("wal_checkpoint(PASSIVE)")}catch{}}initializeSessionFts(){try{this.db.exec(`
87
+ CREATE VIRTUAL TABLE IF NOT EXISTS fts_session_messages USING fts5(
88
+ message_id UNINDEXED,
89
+ session_id UNINDEXED,
90
+ content
91
+ );
92
+
93
+ CREATE TRIGGER IF NOT EXISTS trg_messages_ai_fts
94
+ AFTER INSERT ON messages BEGIN
95
+ INSERT INTO fts_session_messages (message_id, session_id, content)
96
+ VALUES (new.id, new.session_id, new.content);
97
+ END;
98
+
99
+ CREATE TRIGGER IF NOT EXISTS trg_messages_au_fts
100
+ AFTER UPDATE OF content, session_id ON messages BEGIN
101
+ DELETE FROM fts_session_messages WHERE message_id = old.id;
102
+ INSERT INTO fts_session_messages (message_id, session_id, content)
103
+ VALUES (new.id, new.session_id, new.content);
104
+ END;
105
+
106
+ CREATE TRIGGER IF NOT EXISTS trg_messages_ad_fts
107
+ AFTER DELETE ON messages BEGIN
108
+ DELETE FROM fts_session_messages WHERE message_id = old.id;
109
+ END;
110
+ `);let c=this.db.prepare("SELECT COUNT(*) as c FROM messages").get().c;if(this.db.prepare("SELECT COUNT(*) as c FROM fts_session_messages").get().c<c)this.db.exec(`
111
+ INSERT INTO fts_session_messages (message_id, session_id, content)
112
+ SELECT m.id, m.session_id, m.content
113
+ FROM messages m
114
+ LEFT JOIN fts_session_messages f ON f.message_id = m.id
115
+ WHERE f.message_id IS NULL;
116
+ `);this.sessionFtsEnabled=!0}catch(c){this.sessionFtsEnabled=!1,P.warn("[SessionHistory] Session FTS disabled:",c?.message??String(c))}}toFtsPrefixQuery(c){return c.trim().split(/\s+/).filter(Boolean).map((n)=>`"${n.replace(/"/g,'""')}"*`).join(" AND ")}withImmediateTransaction(c){this.db.exec("BEGIN IMMEDIATE");try{let n=c();return this.db.exec("COMMIT"),n}catch(n){try{this.db.exec("ROLLBACK")}catch{}throw n}}ensureSessionRuntimeRow(c){let n=new Date().toISOString();this.db.prepare(`INSERT INTO session_runtime_state (
117
+ session_id,
118
+ state_status,
119
+ last_event_seq,
120
+ revision,
121
+ updated_at
122
+ ) VALUES (?, 'idle', 0, 0, ?)
123
+ ON CONFLICT(session_id) DO NOTHING`).run(c,n)}readSessionRuntimeStateRow(c){return this.ensureSessionRuntimeRow(c),this.db.prepare("SELECT * FROM session_runtime_state WHERE session_id = ?").get(c)??null}parseJsonColumn(c,n,y){if(!n)return y;try{return JSON.parse(n)}catch{return P.warn(`[SessionHistory] Corrupted ${c} JSON, using fallback value`),y}}toSessionRuntimeState(c){if(!c)return null;return{sessionId:c.session_id,stateStatus:c.state_status,activeRunId:c.active_run_id,pausedState:this.parseJsonColumn("paused_state_json",c.paused_state_json,null),policySnapshot:this.parseJsonColumn("policy_snapshot_json",c.policy_snapshot_json,null),lastEventSeq:c.last_event_seq,revision:c.revision,leaseOwner:c.lease_owner,leaseExpiresAt:c.lease_expires_at,updatedAt:c.updated_at}}toSessionInteractionRecord(c){if(!c)return null;return{interactionId:c.interaction_id,sessionId:c.session_id,requestId:c.request_id,source:c.source,kind:c.kind,status:c.status,prompt:this.parseJsonColumn("prompt_json",c.prompt_json,{}),response:this.parseJsonColumn("response_json",c.response_json,null),createdAt:c.created_at,answeredAt:c.answered_at,appliedAt:c.applied_at}}assertSessionMutationGuard(c,n,y){let f=Date.now(),i=c.lease_expires_at?Date.parse(c.lease_expires_at):null;if(n&&c.lease_owner&&c.lease_owner!==n&&i!==null&&Number.isFinite(i)&&i>f)throw Error(`Session ${c.session_id} is leased by ${c.lease_owner} until ${c.lease_expires_at}`);if(y!==void 0&&c.revision!==y)throw Error(`Session ${c.session_id} revision mismatch: expected ${y}, got ${c.revision}`)}createSession(c,n,y){y??=Sy.randomUUID();let f=new Date().toISOString();return this.withImmediateTransaction(()=>{this.db.prepare(`
124
+ INSERT INTO sessions (id, created_at, updated_at, arion, model, message_count)
125
+ VALUES (?, ?, ?, ?, ?, 0)
126
+ `).run(y,f,f,c,n),this.db.prepare(`INSERT INTO session_runtime_state (
127
+ session_id,
128
+ state_status,
129
+ last_event_seq,
130
+ revision,
131
+ updated_at
132
+ ) VALUES (?, 'idle', 0, 0, ?)`).run(y,f)}),y}forkSession(c,n){let y=this.db.prepare("SELECT * FROM sessions WHERE id = ?").get(c);if(!y)throw Error(`Source session not found: ${c}`);let f=Sy.randomUUID(),i=new Date().toISOString(),u=n?.title??(y.title?`\uD83C\uDF74 ${y.title}`:"\uD83C\uDF74 Forked session"),_=n?.messageLimit!==void 0&&n.messageLimit>=0?this.db.prepare("SELECT * FROM messages WHERE session_id = ? ORDER BY id ASC LIMIT ?"):this.db.prepare("SELECT * FROM messages WHERE session_id = ? ORDER BY id ASC"),g=n?.messageLimit!==void 0&&n.messageLimit>=0?_.all(c,n.messageLimit):_.all(c);return this.withImmediateTransaction(()=>{if(this.db.prepare(`INSERT INTO sessions (id, created_at, updated_at, arion, model, message_count, title)
133
+ VALUES (?, ?, ?, ?, ?, ?, ?)`).run(f,i,i,y.arion,y.model,g.length,u),this.db.prepare(`INSERT INTO session_runtime_state (
134
+ session_id, state_status, last_event_seq, revision, updated_at
135
+ ) VALUES (?, 'idle', 0, 0, ?)`).run(f,i),g.length>0){let H=this.db.prepare(`INSERT INTO messages (session_id, role, content, arion, tool_call_id, tool_calls, thinking, data, created_at)
136
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`);for(let h of g)H.run(f,h.role,h.content,h.arion,h.tool_call_id,h.tool_calls,h.thinking,h.data,h.created_at)}}),{newSessionId:f,sourceSessionId:c,messagesCopied:g.length,title:u}}addMessage(c,n,y,f){try{let i=new Date().toISOString(),u=f?.arion??null,_=f?.toolCallId??null,g=f?.toolCalls?JSON.stringify(f.toolCalls):null,H=f?.thinking?JSON.stringify(f.thinking):null;this.db.transaction(()=>{this.db.prepare(`INSERT INTO messages (session_id, role, content, arion, tool_call_id, tool_calls, thinking, created_at)
137
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(c,n,y,u,_,g,H,i),this.db.prepare(`UPDATE sessions
138
+ SET updated_at = ?,
139
+ message_count = message_count + 1,
140
+ title = COALESCE(title, CASE WHEN ? = 'user' THEN substr(?, 1, 60) END)
141
+ WHERE id = ?`).run(i,n,y,c)})()}catch(i){P.warn("[SessionHistory] Failed to persist message:",i?.message??i)}}addConversationMessage(c,n){try{let y=new Date().toISOString(),f=Ec(n);if(n.role==="tool"&&!f){let O=n.content.find((K)=>K.type==="tool_result");if(O&&O.type==="tool_result")f=O.content}let i=n.arion?.name??null,u=$c(n),_=Lc(n),g=Nc(n),H=JSON.stringify(n);this.db.transaction(()=>{this.db.prepare(`INSERT INTO messages (session_id, role, content, arion, tool_call_id, tool_calls, thinking, data, created_at)
142
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(c,n.role,f,i,u,_,g,H,y),this.db.prepare(`UPDATE sessions
143
+ SET updated_at = ?,
144
+ message_count = message_count + 1,
145
+ title = COALESCE(title, CASE WHEN ? = 'user' THEN substr(?, 1, 60) END)
146
+ WHERE id = ?`).run(y,n.role,f,c)})(),this.incrementalSessions.add(c)}catch(y){P.warn("[SessionHistory] Failed to persist conversation message:",y?.message??y)}}addConversationMessages(c,n){if(n.length===0)return;if(n.length===1){this.addConversationMessage(c,n[0]);return}try{let y=new Date().toISOString(),f=this.db.prepare(`INSERT INTO messages (session_id, role, content, arion, tool_call_id, tool_calls, thinking, data, created_at)
147
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`),i=this.db.prepare(`UPDATE sessions
148
+ SET updated_at = ?,
149
+ message_count = message_count + ?,
150
+ title = COALESCE(title, CASE WHEN ? = 'user' THEN substr(?, 1, 60) END)
151
+ WHERE id = ?`);this.db.transaction(()=>{let _=null;for(let g of n){let H=Ec(g);if(g.role==="tool"&&!H){let A=g.content.find((G)=>G.type==="tool_result");if(A&&A.type==="tool_result")H=A.content}if(g.role==="user"&&!_)_=H;let h=g.arion?.name??null,O=$c(g),K=Lc(g),k=Nc(g),N=JSON.stringify(g);f.run(c,g.role,H,h,O,K,k,N,y)}i.run(y,n.length,_?"user":"assistant",_??"",c)})()}catch(y){P.warn("[SessionHistory] Failed to persist conversation messages batch:",y?.message??y)}}replaceConversationMessages(c,n){if(this.incrementalSessions.has(c))return;try{let y=performance.now(),f=this.db.prepare("SELECT COUNT(*) as cnt FROM messages WHERE session_id = ?").get(c)?.cnt??0,i=performance.now();Kc(`SessionHistory:replaceConversationMessages(del=${f},ins=${n.length})`);let u=new Date().toISOString(),_=this.db.prepare(`INSERT INTO messages (session_id, role, content, arion, tool_call_id, tool_calls, thinking, data, created_at)
152
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`);this.db.transaction(()=>{this.db.prepare("DELETE FROM messages WHERE session_id = ?").run(c);let h=null;for(let O of n){let K=Ec(O);if(O.role==="tool"&&!K){let k=O.content.find((N)=>N.type==="tool_result");if(k&&k.type==="tool_result")K=k.content}if(O.role==="user"&&!h)h=K;_.run(c,O.role,K,O.arion?.name??null,$c(O),Lc(O),Nc(O),JSON.stringify(O),u)}this.db.prepare(`UPDATE sessions
153
+ SET updated_at = ?,
154
+ message_count = ?,
155
+ title = CASE
156
+ WHEN ? IS NOT NULL AND length(?) > 0 THEN substr(?, 1, 60)
157
+ ELSE title
158
+ END
159
+ WHERE id = ?`).run(u,n.length,h,h,h,c)})();let H=performance.now()-y;if(gc(),process.env.DEBUG&&(H>200||f>500))try{process.stderr.write(`[SessionHistory][DIAG] replaceConversationMessages: total=${H.toFixed(0)}ms (count=${(i-y).toFixed(0)}ms txn=${(H-(i-y)).toFixed(0)}ms) existingRows=${f} newRows=${n.length} session=${c}
160
+ `)}catch{}}catch(y){gc(),P.warn("[SessionHistory] Failed to replace conversation messages batch:",y?.message??y)}}loadSessionMessages(c){let n=this.db.prepare("SELECT * FROM sessions WHERE id = ?").get(c);if(!n)return null;let f=this.db.prepare("SELECT * FROM messages WHERE session_id = ? ORDER BY id ASC").all(c).map((i)=>{if(i.data)try{let u=JSON.parse(i.data),_=qc.safeParse(u);if(_.success)return _.data;return P.warn(`[loadSessionMessages] Schema validation failed for message row ${i.id} (session ${c}), falling back to v1 columns`),Ac(i)}catch{return P.warn(`[loadSessionMessages] Corrupted data column in message row ${i.id} (session ${c}), falling back to v1 columns`),Ac(i)}return Ac(i)});return{id:n.id,arion:n.arion,model:n.model,messages:f}}loadSession(c){let n=this.loadSessionMessages(c);if(!n)return null;let y=this.toSessionRuntimeState(this.readSessionRuntimeStateRow(c)),f=this.db.prepare(`SELECT * FROM session_interactions
161
+ WHERE session_id = ?
162
+ AND status = 'pending'
163
+ ORDER BY created_at DESC
164
+ LIMIT 1`).get(c)??null;return{session:n,runtimeState:y,pendingInteraction:this.toSessionInteractionRecord(f)}}getSessionRuntimeState(c){return this.toSessionRuntimeState(this.readSessionRuntimeStateRow(c))}getInteraction(c){let n=this.db.prepare("SELECT * FROM session_interactions WHERE interaction_id = ?").get(c)??null;return this.toSessionInteractionRecord(n)}claimSessionForMutation(c,n,y){if(!n.trim())throw Error("claimSessionForMutation requires a non-empty ownerId");if(!Number.isFinite(y)||y<=0)throw Error("claimSessionForMutation requires a positive staleAfterMs");return this.withImmediateTransaction(()=>{let f=this.readSessionRuntimeStateRow(c);if(!f)throw Error(`Session ${c} not found`);this.assertSessionMutationGuard(f,n);let i=new Date().toISOString(),u=new Date(Date.now()+y).toISOString();return this.db.prepare(`UPDATE session_runtime_state
165
+ SET lease_owner = ?,
166
+ lease_expires_at = ?,
167
+ updated_at = ?
168
+ WHERE session_id = ?`).run(n,u,i,c),this.toSessionRuntimeState(this.readSessionRuntimeStateRow(c))})}recordPausedRun(c,n,y,f,i,u){return this.withImmediateTransaction(()=>{let _=this.readSessionRuntimeStateRow(c);if(!_)throw Error(`Session ${c} not found`);this.assertSessionMutationGuard(_,u?.ownerId,u?.expectedRevision);let g=new Date().toISOString(),H=_.revision+1;if(this.db.prepare(`UPDATE session_runtime_state
169
+ SET state_status = 'paused',
170
+ active_run_id = ?,
171
+ paused_state_json = ?,
172
+ policy_snapshot_json = ?,
173
+ last_event_seq = ?,
174
+ revision = ?,
175
+ updated_at = ?
176
+ WHERE session_id = ?`).run(n,JSON.stringify(y),JSON.stringify(f),u?.lastEventSeq??_.last_event_seq,H,g,c),i)this.db.prepare(`INSERT INTO session_interactions (
177
+ interaction_id,
178
+ session_id,
179
+ request_id,
180
+ source,
181
+ kind,
182
+ status,
183
+ prompt_json,
184
+ created_at
185
+ ) VALUES (?, ?, ?, ?, ?, 'pending', ?, ?)`).run(i.interactionId,c,i.requestId,i.source,i.kind,JSON.stringify(i.prompt),g);return this.toSessionRuntimeState(this.readSessionRuntimeStateRow(c))})}recordInteractionResponse(c,n,y,f){return this.withImmediateTransaction(()=>{let i=this.readSessionRuntimeStateRow(c);if(!i)throw Error(`Session ${c} not found`);this.assertSessionMutationGuard(i,f?.ownerId,f?.expectedRevision);let u=this.db.prepare(`SELECT * FROM session_interactions
186
+ WHERE session_id = ?
187
+ AND interaction_id = ?`).get(c,n)??null;if(!u)throw Error(`Interaction ${n} not found for session ${c}`);if(u.status!=="pending")throw Error(`Interaction ${n} is not pending (current status: ${u.status})`);let _=new Date().toISOString();this.db.prepare(`UPDATE session_interactions
188
+ SET status = 'answered',
189
+ response_json = ?,
190
+ answered_at = ?
191
+ WHERE interaction_id = ?`).run(JSON.stringify(y),_,n),this.db.prepare(`UPDATE session_runtime_state
192
+ SET revision = revision + 1,
193
+ updated_at = ?
194
+ WHERE session_id = ?`).run(_,c);let g=this.db.prepare("SELECT * FROM session_interactions WHERE interaction_id = ?").get(n)??null;return this.toSessionInteractionRecord(g)})}cancelInteraction(c,n,y){return this.withImmediateTransaction(()=>{let f=this.readSessionRuntimeStateRow(c);if(!f)throw Error(`Session ${c} not found`);this.assertSessionMutationGuard(f,y?.ownerId,y?.expectedRevision);let i=this.db.prepare(`SELECT * FROM session_interactions
195
+ WHERE session_id = ?
196
+ AND interaction_id = ?`).get(c,n)??null;if(!i)throw Error(`Interaction ${n} not found for session ${c}`);if(i.status!=="pending")throw Error(`Interaction ${n} is not pending (current status: ${i.status})`);let u=new Date().toISOString();this.db.prepare(`UPDATE session_interactions
197
+ SET status = 'canceled',
198
+ answered_at = ?
199
+ WHERE interaction_id = ?`).run(u,n),this.db.prepare(`UPDATE session_runtime_state
200
+ SET state_status = 'completed',
201
+ active_run_id = NULL,
202
+ paused_state_json = NULL,
203
+ policy_snapshot_json = NULL,
204
+ revision = revision + 1,
205
+ updated_at = ?
206
+ WHERE session_id = ?`).run(u,c),this.db.prepare(`UPDATE sessions
207
+ SET completed_at = COALESCE(completed_at, ?),
208
+ updated_at = ?
209
+ WHERE id = ?`).run(u,u,c);let _=this.db.prepare("SELECT * FROM session_interactions WHERE interaction_id = ?").get(n)??null;return this.toSessionInteractionRecord(_)})}completeRun(c,n,y){return this.withImmediateTransaction(()=>{let f=this.readSessionRuntimeStateRow(c);if(!f)throw Error(`Session ${c} not found`);this.assertSessionMutationGuard(f,y?.ownerId,y?.expectedRevision);let i=new Date().toISOString();return this.db.prepare(`UPDATE session_runtime_state
210
+ SET state_status = 'completed',
211
+ active_run_id = NULL,
212
+ paused_state_json = NULL,
213
+ policy_snapshot_json = NULL,
214
+ revision = revision + 1,
215
+ updated_at = ?
216
+ WHERE session_id = ?`).run(i,c),this.db.prepare(`UPDATE session_interactions
217
+ SET status = CASE WHEN response_json IS NULL THEN 'expired' ELSE 'applied' END,
218
+ answered_at = COALESCE(answered_at, ?),
219
+ applied_at = CASE WHEN response_json IS NULL THEN applied_at ELSE ? END
220
+ WHERE session_id = ?
221
+ AND status IN ('pending', 'answered')`).run(i,i,c),this.db.prepare(`UPDATE sessions
222
+ SET completed_at = COALESCE(completed_at, ?),
223
+ updated_at = ?
224
+ WHERE id = ?`).run(i,i,c),this.toSessionRuntimeState(this.readSessionRuntimeStateRow(c))})}releaseSessionClaim(c,n){this.withImmediateTransaction(()=>{let y=this.readSessionRuntimeStateRow(c);if(!y)throw Error(`Session ${c} not found`);if(y.lease_owner&&y.lease_owner!==n)throw Error(`Cannot release session ${c} lease owned by ${y.lease_owner} with ${n}`);let f=new Date().toISOString();this.db.prepare(`UPDATE session_runtime_state
225
+ SET lease_owner = NULL,
226
+ lease_expires_at = NULL,
227
+ updated_at = ?
228
+ WHERE session_id = ?`).run(f,c)})}listSessions(c=20,n=0){return this.db.prepare(`
229
+ SELECT
230
+ s.*,
231
+ COALESCE(s.title, '') as preview
232
+ FROM sessions s
233
+ WHERE s.message_count > 0
234
+ ORDER BY s.updated_at DESC, s.rowid DESC
235
+ LIMIT ? OFFSET ?
236
+ `).all(c,n).map((f)=>({id:f.id,createdAt:new Date(f.created_at),updatedAt:new Date(f.updated_at),completedAt:f.completed_at?new Date(f.completed_at):void 0,title:f.title,arion:f.arion,model:f.model,messageCount:f.message_count,preview:this.truncatePreview(f.preview??"",60)}))}searchSessions(c,n=20,y=0){let i=`%${c.replace(/[%_\\]/g,"\\$&")}%`;return this.db.prepare(`
237
+ SELECT DISTINCT
238
+ s.*,
239
+ (SELECT content FROM messages WHERE session_id = s.id AND role = 'user' ORDER BY id LIMIT 1) as preview
240
+ FROM sessions s
241
+ LEFT JOIN messages m ON m.session_id = s.id
242
+ WHERE s.message_count > 0
243
+ AND (s.title LIKE ? ESCAPE '\\' OR m.content LIKE ? ESCAPE '\\')
244
+ ORDER BY s.updated_at DESC, s.rowid DESC
245
+ LIMIT ? OFFSET ?
246
+ `).all(i,i,n,y).map((_)=>({id:_.id,createdAt:new Date(_.created_at),updatedAt:new Date(_.updated_at),completedAt:_.completed_at?new Date(_.completed_at):void 0,title:_.title,arion:_.arion,model:_.model,messageCount:_.message_count,preview:this.truncatePreview(_.preview??"",60)}))}searchSessionsFts(c,n=100,y=0){let f=c.trim();if(!f)return[];if(!this.sessionFtsEnabled)return this.searchSessions(f,n,y);let i=this.toFtsPrefixQuery(f);if(!i)return[];try{return this.db.prepare(`
247
+ WITH matched AS (
248
+ SELECT session_id, MIN(bm25(fts_session_messages)) as rank
249
+ FROM fts_session_messages
250
+ WHERE fts_session_messages MATCH ?
251
+ GROUP BY session_id
252
+ )
253
+ SELECT
254
+ s.*,
255
+ COALESCE(s.title, '') as preview
256
+ FROM matched m
257
+ JOIN sessions s ON s.id = m.session_id
258
+ WHERE s.message_count > 0
259
+ ORDER BY m.rank ASC, s.updated_at DESC, s.rowid DESC
260
+ LIMIT ? OFFSET ?
261
+ `).all(i,n,y).map((_)=>({id:_.id,createdAt:new Date(_.created_at),updatedAt:new Date(_.updated_at),completedAt:_.completed_at?new Date(_.completed_at):void 0,title:_.title,arion:_.arion,model:_.model,messageCount:_.message_count,preview:this.truncatePreview(_.preview??"",60)}))}catch(u){return this.searchSessions(f,n,y)}}searchSessionSummaries(c,n=100,y=0){let i=`%${c.replace(/[%_\\]/g,"\\$&")}%`;return this.db.prepare(`
262
+ SELECT
263
+ s.*,
264
+ COALESCE(s.title, '') as preview
265
+ FROM sessions s
266
+ WHERE s.message_count > 0
267
+ AND (
268
+ s.title LIKE ? ESCAPE '\\'
269
+ OR s.arion LIKE ? ESCAPE '\\'
270
+ OR s.model LIKE ? ESCAPE '\\'
271
+ OR s.id LIKE ? ESCAPE '\\'
272
+ )
273
+ ORDER BY s.updated_at DESC, s.rowid DESC
274
+ LIMIT ? OFFSET ?
275
+ `).all(i,i,i,i,n,y).map((_)=>({id:_.id,createdAt:new Date(_.created_at),updatedAt:new Date(_.updated_at),completedAt:_.completed_at?new Date(_.completed_at):void 0,title:_.title,arion:_.arion,model:_.model,messageCount:_.message_count,preview:this.truncatePreview(_.preview??"",60)}))}getSession(c){let n=this.db.prepare(`
276
+ SELECT * FROM sessions WHERE id = ?
277
+ `).get(c);if(!n)return null;let y=this.db.prepare(`
278
+ SELECT * FROM messages WHERE session_id = ? ORDER BY id ASC
279
+ `).all(c);return{id:n.id,arion:n.arion,model:n.model,messages:y.map((f)=>({id:f.id,role:f.role,content:f.content,arion:f.arion??void 0,toolCallId:f.tool_call_id??void 0,toolCalls:f.tool_calls?(()=>{try{return JSON.parse(f.tool_calls)}catch{P.warn(`[getSession] Corrupted tool_calls JSON in message row ${f.id} (session ${c})`);return}})():void 0,thinking:f.thinking?(()=>{try{return JSON.parse(f.thinking)}catch{P.warn(`[getSession] Corrupted thinking JSON in message row ${f.id} (session ${c})`);return}})():void 0,createdAt:new Date(f.created_at)}))}}deleteSession(c){this.db.prepare("DELETE FROM sessions WHERE id = ?").run(c)}setSessionTitle(c,n){try{this.db.prepare("UPDATE sessions SET title = ? WHERE id = ?").run(n,c)}catch(y){P.warn("[SessionHistory] Failed to set session title:",y?.message??y)}}markCompleted(c){try{let n=new Date().toISOString();this.withImmediateTransaction(()=>{this.db.prepare(`UPDATE sessions
280
+ SET completed_at = COALESCE(completed_at, ?),
281
+ updated_at = ?
282
+ WHERE id = ?`).run(n,n,c),this.ensureSessionRuntimeRow(c),this.db.prepare(`UPDATE session_runtime_state
283
+ SET state_status = 'completed',
284
+ active_run_id = NULL,
285
+ paused_state_json = NULL,
286
+ policy_snapshot_json = NULL,
287
+ lease_owner = NULL,
288
+ lease_expires_at = NULL,
289
+ revision = revision + 1,
290
+ updated_at = ?
291
+ WHERE session_id = ?`).run(n,c)})}catch(n){P.warn("[SessionHistory] Failed to mark session completed:",n?.message??n)}}markStaleSessionsCompleted(c){try{let n=new Date(Date.now()-c*86400000).toISOString(),y=new Date().toISOString();return this.db.prepare(`UPDATE sessions
292
+ SET completed_at = COALESCE(completed_at, ?),
293
+ updated_at = ?
294
+ WHERE completed_at IS NULL
295
+ AND message_count > 0
296
+ AND updated_at < ?`).run(y,y,n).changes}catch(n){return P.warn("[SessionHistory] Failed to mark stale sessions completed:",n?.message??n),0}}getIncompleteSessions(c=10){return this.db.prepare(`
297
+ SELECT
298
+ s.*,
299
+ (SELECT content FROM messages WHERE session_id = s.id AND role = 'user' ORDER BY id LIMIT 1) as preview
300
+ FROM sessions s
301
+ WHERE s.message_count > 0
302
+ AND s.completed_at IS NULL
303
+ ORDER BY s.updated_at DESC, s.rowid DESC
304
+ LIMIT ?
305
+ `).all(c).map((y)=>({id:y.id,createdAt:new Date(y.created_at),updatedAt:new Date(y.updated_at),completedAt:y.completed_at?new Date(y.completed_at):void 0,title:y.title,arion:y.arion,model:y.model,messageCount:y.message_count,preview:this.truncatePreview(y.preview??"",60)}))}findSessionByPrefix(c){if(c.length===36)return this.db.prepare("SELECT id FROM sessions WHERE id = ? AND message_count > 0").get(c)?.id??null;if(c.length<8)return null;let n=this.db.prepare("SELECT id FROM sessions WHERE id LIKE ? AND message_count > 0 LIMIT 2").all(`${c}%`);return n.length===1?n[0].id:null}getSessionCount(){return this.db.prepare("SELECT COUNT(*) as count FROM sessions WHERE message_count > 0").get()?.count??0}truncatePreview(c,n){if(c.length<=n)return c;return c.slice(0,n-3)+"..."}addInputHistory(c){try{let n=new Date().toISOString();this.db.prepare(`
306
+ INSERT INTO input_history (content, used_at)
307
+ VALUES (?, ?)
308
+ ON CONFLICT(content) DO UPDATE SET used_at = excluded.used_at
309
+ `).run(c,n),this.db.prepare(`
310
+ DELETE FROM input_history
311
+ WHERE id NOT IN (
312
+ SELECT id FROM input_history ORDER BY used_at DESC LIMIT 500
313
+ )
314
+ `).run()}catch(n){P.warn("[SessionHistory] Failed to save input history:",n?.message??n)}}getInputHistory(c=100){return this.db.prepare(`
315
+ SELECT content FROM input_history
316
+ ORDER BY used_at DESC
317
+ LIMIT ?
318
+ `).all(c).map((y)=>y.content)}saveRunMetrics(c,n){try{this.db.prepare(`INSERT INTO run_metrics (id, session_id, turn_count, input_tokens, output_tokens, total_tokens, estimated_cost, wall_time_ms, tool_count, guardrail_fires, handoff_count)
319
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(n.id,c,n.turnCount??null,n.inputTokens??null,n.outputTokens??null,n.totalTokens??null,n.estimatedCost??null,n.wallTimeMs??null,n.toolCount??null,n.guardrailFires??null,n.handoffCount??null)}catch(y){P.warn("[SessionHistory] Failed to save run metrics:",y?.message??y)}}getRunMetrics(c){return this.db.prepare("SELECT * FROM run_metrics WHERE session_id = ? ORDER BY created_at ASC").all(c).map((y)=>({id:y.id,sessionId:y.session_id,turnCount:y.turn_count??void 0,inputTokens:y.input_tokens??void 0,outputTokens:y.output_tokens??void 0,totalTokens:y.total_tokens??void 0,estimatedCost:y.estimated_cost??void 0,wallTimeMs:y.wall_time_ms??void 0,toolCount:y.tool_count??void 0,guardrailFires:y.guardrail_fires??void 0,handoffCount:y.handoff_count??void 0,createdAt:y.created_at}))}close(){try{this.db.pragma("wal_checkpoint(TRUNCATE)")}catch{}this.db.close()}}var by=x(()=>{xn();Xc()});function W0(c){return typeof c!=="string"||c.trim().length>0}function a0(c){let{toolCalls:n,...y}=c;return y}function d0(c,n,y){for(let f=n;f<c.length;f++){let i=c[f];if(i.role==="tool"&&i.toolCallId===y)return!0}return!1}function zy(c){let n=[];for(let y=0;y<c.length;y++){let f=c[y];if(f.role==="assistant"&&f.toolCalls?.length){let i=new Set(f.toolCalls.map((O)=>O.id)),u=new Set,_=[],g=y+1;while(g<c.length&&c[g].role==="tool"){let O=c[g];if(O.toolCallId&&i.has(O.toolCallId)&&!u.has(O.toolCallId))u.add(O.toolCallId),_.push(O);g++}let H=f.toolCalls.filter((O)=>{if(u.has(O.id))return!0;return!d0(c,g,O.id)}),h=H.filter((O)=>!u.has(O.id));if(H.length===f.toolCalls.length)n.push(f);else if(H.length>0)n.push({...f,toolCalls:H});else if(W0(f.content))n.push(a0(f));n.push(..._);for(let O of h)n.push({role:"tool",content:`[Tool execution interrupted — no result for ${O.name}]`,toolCallId:O.id});y=g-1;continue}if(f.role==="tool")continue;n.push(f)}return n}class Cc{textParts=[];thinkingBlocks=[];toolUseBlocks=[];handoffBlocks=[];toolResultMessages=[];seenToolIds=new Set;toolArgsAccumulator=new Map;thinkingInProgress=!1;pendingThinkingContent="";arion;verb;tokenUsage;snapshotMessages;previewAssistantId=`preview-${Date.now()}`;ingest(c){switch(c.type){case"text_delta":return this.textParts.push(c.content),"continue";case"thinking_start":return this.thinkingInProgress=!0,this.pendingThinkingContent="","continue";case"thinking_delta":return this.pendingThinkingContent+=c.content,"continue";case"thinking_end":{this.thinkingInProgress=!1;let n=Array.isArray(c.blocks)&&c.blocks.length>0?c.blocks[0]:void 0,y=typeof n?.thinking==="string"?n.thinking:this.pendingThinkingContent,f=y.split(/\s+/).filter(Boolean).length,i={type:"thinking",content:y,wordCount:f,durationMs:c.durationMs,verb:this.verb};return this.thinkingBlocks.push(i),this.pendingThinkingContent="","continue"}case"tool_start":{if(this.seenToolIds.has(c.id))return"continue";this.seenToolIds.add(c.id);let n={type:"tool_use",id:c.id,name:c.name,arguments:c.input??{}};return this.toolUseBlocks.push(n),"continue"}case"tool_args_delta":{let y=(this.toolArgsAccumulator.get(c.id)??"")+c.args;this.toolArgsAccumulator.set(c.id,y);try{let f=JSON.parse(y),i=this.toolUseBlocks.find((u)=>u.type==="tool_use"&&u.id===c.id);if(i)i.arguments=f}catch{}return"continue"}case"tool_result":{if(c.input){let u=this.toolUseBlocks.find((_)=>_.type==="tool_use"&&_.id===c.id);if(u){let _=typeof c.input==="object"&&!Array.isArray(c.input)?c.input:{};if(Object.keys(u.arguments).length===0)u.arguments=_}}let n=c.result,y="usage"in c&&c.usage&&typeof c.usage==="object"&&typeof c.usage.inputTokens==="number"&&typeof c.usage.outputTokens==="number"&&typeof c.usage.totalTokens==="number"&&typeof c.usage.estimatedCost==="number"?c.usage:void 0,f={type:"tool_result",toolUseId:c.id,content:typeof n.message==="string"?n.message:"",status:n.success===!0?"success":"error",durationMs:c.durationMs,resultData:n.data,usage:y},i={id:crypto.randomUUID(),role:"tool",content:[f],arion:this.arion,createdAt:new Date().toISOString()};return this.toolResultMessages.push(i),"continue"}case"handoff_start":{let n={type:"handoff",target:c.target,direction:"to"};return this.handoffBlocks.push(n),"continue"}case"handoff_result":{let n={type:"handoff",target:c.target,direction:"from"};return this.handoffBlocks.push(n),"continue"}case"turn_complete":return"flush";case"messages_snapshot":return this.snapshotMessages=c.messages,"continue";default:return"continue"}}flush(){let c=[];if(this.thinkingInProgress&&this.pendingThinkingContent){let f=this.pendingThinkingContent.trim(),i=f.length===0?0:f.split(/\s+/).length,u={type:"thinking",content:this.pendingThinkingContent,wordCount:i,verb:this.verb};this.thinkingBlocks.push(u)}let n=[];n.push(...this.thinkingBlocks);let y=this.textParts.join("");if(y)n.push({type:"text",text:y});if(n.push(...this.toolUseBlocks),n.push(...this.handoffBlocks),n.length>0){let f={id:crypto.randomUUID(),role:"assistant",content:n,arion:this.arion,tokenUsage:this.tokenUsage,createdAt:new Date().toISOString()};c.push(f)}if(c.push(...this.toolResultMessages),this.toolResultMessages.length>0&&this.toolUseBlocks.length>0){let f=new Set(this.toolResultMessages.flatMap((i)=>i.content.filter((u)=>u.type==="tool_result").map((u)=>u.toolUseId)));for(let i of this.toolUseBlocks){let u=i.id;if(u&&!f.has(u)){let _={id:crypto.randomUUID(),role:"tool",content:[{type:"tool_result",toolUseId:u,content:"Tool execution cancelled by user.",status:"error"}],arion:this.arion,createdAt:new Date().toISOString()};c.push(_)}}}return this.textParts=[],this.thinkingBlocks=[],this.toolUseBlocks=[],this.handoffBlocks=[],this.toolResultMessages=[],this.seenToolIds=new Set,this.toolArgsAccumulator=new Map,this.thinkingInProgress=!1,this.pendingThinkingContent="",this.tokenUsage=void 0,this.verb=void 0,this.previewAssistantId=`preview-${Date.now()}`,c}snapshot(){let c=[];if(c.push(...this.thinkingBlocks.map((f)=>({...f}))),this.thinkingInProgress&&this.pendingThinkingContent){let f=this.pendingThinkingContent,i={type:"thinking",content:f,wordCount:f.split(/\s+/).filter(Boolean).length,verb:this.verb};c.push(i)}let n=this.textParts.join("");if(n){let f=n.lastIndexOf(`
320
+ `);if(f>=0)c.push({type:"text",text:n.slice(0,f+1)})}for(let f of this.toolUseBlocks){let i={...f};if(i.type==="tool_use"&&Object.keys(i.arguments).length===0){let u=this.toolArgsAccumulator.get(i.id);if(u){let _=Cc.tryParsePartialArgs(u);if(_)i.arguments=_}}c.push(i)}c.push(...this.handoffBlocks.map((f)=>({...f})));let y=[];if(c.length>0)y.push({id:this.previewAssistantId,role:"assistant",content:c,arion:this.arion,createdAt:new Date().toISOString()});return y.push(...this.toolResultMessages.map((f)=>({...f,content:[...f.content]}))),y}getSnapshotMessages(){return this.snapshotMessages}hasPendingContent(){return this.textParts.length>0||this.thinkingBlocks.length>0||this.toolUseBlocks.length>0||this.handoffBlocks.length>0||this.toolResultMessages.length>0||this.thinkingInProgress}setArion(c){this.arion=c}setVerb(c){this.verb=c}setTokenUsage(c){if(this.tokenUsage)this.tokenUsage={input:this.tokenUsage.input+c.input,output:this.tokenUsage.output+c.output};else this.tokenUsage={...c}}static tryParsePartialArgs(c){let n=c.trim();if(!n.startsWith("{")||n.length<4)return;try{return JSON.parse(n)}catch{}try{let y=JSON.parse(n+"}");if(Object.keys(y).length>0)return y}catch{}try{let y=JSON.parse(n+'"}');if(Object.keys(y).length>0)return y}catch{}for(let y=n.length-1;y>0;y--)if(n[y]===",")try{let f=JSON.parse(n.slice(0,y)+"}");if(Object.keys(f).length>0)return f}catch{}return}}import{readFileSync as J0,existsSync as tn}from"node:fs";function Gn(c){if(!tn(c))return[];let y=J0(c,"utf-8").split(`
321
+ `).filter((u)=>u.trim().length>0),f=new Cc,i=[];for(let u of y){let _;try{_=JSON.parse(u)}catch{continue}if(!_.event||typeof _.event.type!=="string")continue;if(_.event.type==="user_message"){if(f.hasPendingContent())i.push(...f.flush());let H=_.event.content??"",h=_.event.id,O=vc(H);if(h)O.id=h;i.push(O);continue}if(f.ingest(_.event)==="flush"){let H=f.flush();i.push(...H)}}if(f.hasPendingContent()){let u=f.flush();i.push(...u)}return i}function ly(c){for(let y of c.content){if(y.type==="tool_use"&&y.id)return`tool_use:${y.id}`;if(y.type==="tool_result"&&y.toolUseId)return`tool_result:${y.toolUseId}`}let n=c.content.filter((y)=>y.type==="text").map((y)=>y.text).join("");return`${c.role}:${n}`}function qy(c,n){if(!n)return{messages:c,backfillMessages:[]};let y;try{y=Gn(n)}catch{return{messages:c,backfillMessages:[]}}if(y.length===0)return{messages:c,backfillMessages:[]};if(c.length>=y.length)return{messages:c,backfillMessages:[]};let f=new Set(c.map(ly)),i=[];for(let _ of y){let g=ly(_);if(!f.has(g))i.push(_)}return{messages:[...c,...i],backfillMessages:i}}function vy(c,n,y){let f=`${c}/arions/${n}/logs/${y}.jsonl`;if(tn(f))return f;let i=`${c}/logs/${y}.jsonl`;if(tn(i))return i;return null}var Iy=x(()=>{Xc()});var wy={};e(wy,{toModelMessages:()=>By,replaySessionFromJsonl:()=>Gn,repairToolCallPairing:()=>zy,mergeWithJsonlRecovery:()=>qy,fromV1Columns:()=>Ac,fromModelMessages:()=>Ic,findJsonlForSession:()=>vy,extractToolCalls:()=>Lc,extractToolCallId:()=>$c,extractThinking:()=>Nc,extractTextContent:()=>Ec,createUserMessage:()=>vc,createSystemMessage:()=>Dy,createIncomingMessagePair:()=>Vy,createErrorMessage:()=>My,conversationMessageToHistoryMessages:()=>Py,TurnAccumulator:()=>Cc,SessionHistory:()=>Tc,ConversationMessageSchema:()=>qc,ContentBlockSchema:()=>Tn,ArionRefSchema:()=>Cn});var Fn=x(()=>{by();Xc();Iy()});import{readFile as U0}from"fs/promises";import{join as py}from"path";import{homedir as X0}from"os";async function ey(c){try{let n=await U0(c,"utf-8"),y=JSON.parse(n);if(y.mcp?.servers){for(let f of y.mcp.servers)if(f.env){for(let[i,u]of Object.entries(f.env))if(typeof u==="string"&&u.startsWith("${")&&u.endsWith("}")){let _=u.slice(2,-1);f.env[i]=process.env[_]||""}}}if(y.mcp?.servers)for(let f of y.mcp.servers){if(!f.name||typeof f.name!=="string")throw Error('Invalid MCP server config: missing "name" field');if(!f.transport)throw Error(`MCP server "${f.name}": missing "transport" field`);if(f.transport&&!["stdio","sse"].includes(f.transport))throw Error(`MCP server "${f.name}": unknown transport "${f.transport}"`);if(f.transport==="stdio"&&!f.command)throw Error(`MCP server "${f.name}": stdio transport requires "command" field`);if(f.transport==="sse"&&!f.url)throw Error(`MCP server "${f.name}": sse transport requires "url" field`)}return y}catch(n){if(n.code==="ENOENT")return null;throw n}}function ry(c,n){let y=c.mcp?.servers||[],f=n.mcp?.servers||[],i=new Set(f.map((u)=>u.name));return{mcp:{servers:[...y.filter((u)=>!i.has(u.name)),...f]}}}async function wc(c){let n={...Z0},y=py(X0(),".aria","config.json"),f=await ey(y);if(f)n=ry(n,f);if(c){let i=py(c,"aria.config.json"),u=await ey(i);if(u)n=ry(n,u)}return n}var Z0;var oy=x(()=>{Z0={mcp:{servers:[]}}});function Mg(c){let n=Wn.indexOf(c);return Wn[(n+1)%Wn.length]}function Bg(c,n){let y=Qc[c],f={};if(n.showThinking!==y.showThinking)f.showThinking=n.showThinking;if(n.showCosts!==y.showCosts)f.showCosts=n.showCosts;if(n.showToolArgs!==y.showToolArgs)f.showToolArgs=n.showToolArgs;if(n.toolOutput!==y.toolOutput)f.toolOutput=n.toolOutput;if(n.showTraces!==y.showTraces)f.showTraces=n.showTraces;if(n.showPipelineTiming!==y.showPipelineTiming)f.showPipelineTiming=n.showPipelineTiming;if(n.showStatusBar!==y.showStatusBar)f.showStatusBar=n.showStatusBar;return f}function Pg(c,n){return{...Qc[c],...n??{}}}var Qc,Wn;var sy=x(()=>{Qc={minimal:{showThinking:!1,showCosts:!1,showToolArgs:!1,toolOutput:"hidden",showTraces:!1,showPipelineTiming:!1,showStatusBar:!1},standard:{showThinking:!0,showCosts:!0,showToolArgs:!0,toolOutput:"standard",showTraces:!1,showPipelineTiming:!1,showStatusBar:!0},debug:{showThinking:!0,showCosts:!0,showToolArgs:!0,toolOutput:"expanded",showTraces:!0,showPipelineTiming:!0,showStatusBar:!0}},Wn=["minimal","standard","debug"]});import{readFileSync as Q0}from"fs";import{join as j0}from"path";import{homedir as Y0}from"os";import{parse as D0}from"yaml";import{log as V0}from"@aria-cli/types";function P0(){return{display:{...Qc.standard,...B0},persistence:{...M0}}}function l0(c){return typeof c==="string"&&S0.has(c)}function q0(c){return typeof c==="string"&&b0.has(c)}function v0(c){return typeof c==="string"&&z0.has(c)}function nc(c){return typeof c==="boolean"}function an(c){return typeof c==="number"&&Number.isInteger(c)&&c>0}function I0(c){return typeof c==="number"&&Number.isInteger(c)&&c>=0}function w0(c){try{let n=Q0(c,"utf-8"),y=D0(n);if(y===null||y===void 0||typeof y!=="object")return null;return y}catch(n){if(n.code==="ENOENT")return null;throw n}}function p0(c){let n={};if(l0(c.mode))n.mode=c.mode;if(v0(c.theme))n.theme=c.theme;if(nc(c.thinking))n.showThinking=c.thinking;if(nc(c.costs))n.showCosts=c.costs;if(nc(c.toolArgs))n.showToolArgs=c.toolArgs;if(q0(c.toolOutput))n.toolOutput=c.toolOutput;if(nc(c.traces))n.showTraces=c.traces;if(nc(c.pipelineTiming))n.showPipelineTiming=c.pipelineTiming;if(nc(c.statusBar))n.showStatusBar=c.statusBar;if(nc(c.syntaxHighlighting))n.syntaxHighlighting=c.syntaxHighlighting;if(an(c.maxToolOutputLines))n.maxToolOutputLines=c.maxToolOutputLines;if(I0(c.maxThinkingPreview))n.maxThinkingPreview=c.maxThinkingPreview;return n}function e0(c){let n={};if(nc(c.jsonlEnabled))n.jsonlEnabled=c.jsonlEnabled;if(an(c.jsonlRetentionDays)||c.jsonlRetentionDays===1/0)n.jsonlRetentionDays=c.jsonlRetentionDays;if(an(c.jsonlMaxSizeMb)||c.jsonlMaxSizeMb===1/0)n.jsonlMaxSizeMb=c.jsonlMaxSizeMb;if(c.otelEndpoint===null)n.otelEndpoint=null;else if(typeof c.otelEndpoint==="string"&&c.otelEndpoint.length>0)n.otelEndpoint=c.otelEndpoint;return n}function cf(c,n,y){return{...c,...n?dn(n):{},...y?dn(y):{}}}function r0(c){let n=P0(),y=c??j0(Y0(),".aria","config.yaml"),f;try{f=w0(y)}catch(K){return V0.warn(`[AriaConfig] Failed to parse ${y}: ${K.message}. Using defaults.`),n}if(f===null)return n;let i=typeof f.display==="object"&&f.display!==null?f.display:{},u=p0(i),_=u.mode??n.display.mode,g=Qc[_],H=cf(g,u),h=typeof f.persistence==="object"&&f.persistence!==null?f.persistence:{},O=e0(h);return{display:{...H,mode:_,theme:u.theme,syntaxHighlighting:u.syntaxHighlighting??n.display.syntaxHighlighting,maxToolOutputLines:u.maxToolOutputLines??n.display.maxToolOutputLines,maxThinkingPreview:u.maxThinkingPreview??n.display.maxThinkingPreview},persistence:{...n.persistence,...dn(O)}}}function dn(c){let n={};for(let[y,f]of Object.entries(c))if(f!==void 0)n[y]=f;return n}var M0,B0,S0,b0,z0;var nf=x(()=>{sy();M0={jsonlEnabled:!0,jsonlRetentionDays:1/0,jsonlMaxSizeMb:1/0,otelEndpoint:null},B0={mode:"standard",syntaxHighlighting:!0,maxToolOutputLines:5,maxThinkingPreview:80};S0=new Set(["minimal","standard","debug"]),b0=new Set(["hidden","collapsed","standard","expanded"]),z0=new Set(["dark","light","dark-accessible","light-accessible","claude-dark","claude-light","claude-dark-daltonized","claude-light-daltonized"])});var yf=x(()=>{oy();nf()});import{createRuntimeDefaultRouter as o0,getCliModels as pc,ModelDiscovery as s0}from"@aria-cli/models";import{createRuntimeAuthContext as cu}from"@aria-cli/auth";import{MemoriaPool as nu}from"@aria-cli/aria";async function yc(c){let n=j(),y=await wc(c?.cwd??process.cwd()),f=c?.startupMode??"interactive",i=n.awsRegion||process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION,u=n.awsProfile||process.env.AWS_PROFILE,_=!1;if(!n.awsRegion&&process.env.AWS_REGION)n.awsRegion=process.env.AWS_REGION,_=!0;if(!n.awsProfile&&process.env.AWS_PROFILE)n.awsProfile=process.env.AWS_PROFILE,_=!0;if(_)B(n);if(i&&!process.env.AWS_REGION)process.env.AWS_REGION=i;if(u&&!process.env.AWS_PROFILE)process.env.AWS_PROFILE=u;let H=cu({ariaHome:l(),...i||u?{bedrock:{awsRegion:i,awsProfile:u}}:{}}).authResolver,h=await o0({ariaHome:l(),authResolver:H,...i||u?{bedrock:{awsRegion:i,awsProfile:u}}:{}}),O=l(),K=new nu(O,h),k=f!=="daemon"?await H.resolve("anthropic"):null,N=f!=="daemon"?await H.resolve("openai"):null,A=f!=="daemon"?await H.resolve("google"):null,G=f!=="daemon"?await H.resolve("github-copilot"):null,a=new s0({authResolver:H,googleApiKey:A?.apiKey||n.googleApiKey,anthropicApiKey:k?.apiKey||n.anthropicApiKey,openaiApiKey:N?.apiKey,awsRegion:i,awsProfile:u,cacheDir:O}),F=f==="daemon"?pc():pc(a.getCachedModels()),m=async(X)=>{if(f==="daemon")return pc();let D=X?await a.refresh(!0):await a.getCachedOrRefresh();return pc(D)},d={availableProviders:[...i?["bedrock","bedrock-converse"]:[],...k?.apiKey?["anthropic"]:[],...N?.apiKey?["openai"]:[],...G?.apiKey?["github-copilot"]:[],...A?.apiKey?["google"]:[]]};return{config:n,router:h,pool:K,memoriaFactory:K.toFactory(),ariaDir:O,projectConfig:y,discovery:a,availableModels:F,refreshAvailableModels:m,credentialHints:d,authResolver:H}}var ec=x(()=>{o();yf()});import{RuntimeBootstrapRecordSchema as uh}from"@aria-cli/tools";function yu(c){return c==="control_ready"||c==="network_ready"||c==="mesh_ready"}function ff(c,n){if(n.nodeId!==c)throw Error(`[local-control-client] Runtime bootstrap node mismatch for ${c}: received ${n.nodeId}`);if(!yu(n.phase))throw Error(`[local-control-client] Runtime bootstrap for ${c} is not attachable (phase=${n.phase})`);return n}var uf=()=>{};async function fu(){let c=l();if(Jn?.ariaDir===c)return Jn.handler;let{CentralErrorHandler:n}=await import("@aria-cli/aria/error-handler"),y=new n({ariaDir:c});return Jn={ariaDir:c,handler:y},y}async function _f(c,n){await(await fu()).report(c,{workingDir:process.cwd(),providerState:{lastProvider:"trusted-local-control",lastModel:n.endpoint,...typeof n.responseStatus==="number"?{lastStatusCode:n.responseStatus}:{}},configSnapshot:{transport:n.transport,endpoint:n.endpoint,...typeof n.responseStatus==="number"?{responseStatus:n.responseStatus}:{},payload:n.payload}})}var Jn;var Hf=x(()=>{o()});var Qn={};e(Qn,{resolveLocalControlClientSync:()=>Zn,resolveLocalControlClient:()=>Dc,requestRuntimeSocketLease:()=>oc,createResilientAttachedClient:()=>sc,attachLocalControlClient:()=>Yc,attachExistingLocalControlClient:()=>Xn});import*as kf from"node:net";import{appendFileSync as iu,mkdirSync as uu}from"node:fs";import{join as Kf}from"node:path";import{randomUUID as _u}from"node:crypto";import{createRuntimeSocketAttachedLocalControlClient as Af,createRuntimeSocketLocalControlClient as Hu,createTrustedRuntimeError as gu,AttachedClientLeaseGrantSchema as hu,LocalControlSocketAttachClientRequestSchema as Ru,LocalControlSocketAttachClientResponseSchema as Ou,LocalControlSocketRequestSchema as ku,LocalControlSocketResponseSchema as Ku}from"@aria-cli/tools";async function Ef(c){await new Promise((n)=>setTimeout(n,Math.max(c,0)))}function Lu(){return gf??=import("@aria-cli/server/runtime/host-supervisor"),gf}function Nu(){return hf??=import("@aria-cli/server/runtime/node-metadata"),hf}function $u(){return Rf??=import("@aria-cli/server/runtime/node-store"),Rf}async function Lf(c){let{resolveOrCreateNode:n}=await Nu();return n({ariaHome:c})}async function rc(c,n){let{NodeStore:y}=await $u(),f=new y({ariaHome:c});try{return f.readRuntimeOwnerRecord(n)}finally{f.close()}}function Un(c){if(!(c instanceof Error))return!1;let n=c.message;return n.includes("connect ENOENT")||n.includes("ECONNREFUSED")||n.includes("Missing runtime owner record")||n.includes("not attachable")||n.includes("not control-ready")}async function jc(c){let n=await rc(c.ariaHome,c.nodeId);if(!n)throw Error(`[local-control-client] Missing runtime owner record for node ${c.nodeId}`);let y=xu({runtimeSocket:n.runtimeSocket,pollIntervalMs:c.pollIntervalMs}),f=ff(c.nodeId,await y.getRuntimeBootstrap()),i,u,_;if(c.clientKind)_=await sc({runtimeSocket:n.runtimeSocket,clientKind:c.clientKind,logDir:Kf(c.ariaHome,"logs")}),i=_.getClientId(),u=_.getClientAuthToken();let g=null;return{nodeId:c.nodeId,runtimeId:f.runtimeId,port:f.controlEndpoint.port,ownership:c.ownership,...i?{attachedClientId:i}:{},...u?{attachedClientAuthToken:u}:{},control:_?_.api:y,release:async(H)=>{if(g)return g;return g=(async()=>{let h=_;_=void 0,i=void 0,u=void 0,await h?.release().catch(()=>{}),await c.release(H)})(),g}}}async function oc(c,n){let y=ku.parse({id:_u(),method:"attachClient",payload:n});return new Promise((f,i)=>{let u=kf.createConnection(c),_="",g=!1,H=!1,h,O=new Promise((k)=>{h=k}),K=()=>{if(H)return;if(H=!0,h?.(),!g)g=!0,i(Error("Local control socket closed before establishing an attached-client lease"))};u.setEncoding("utf8"),u.once("connect",()=>{u.write(`${JSON.stringify(y)}
322
+ `)}),u.once("error",(k)=>{if(!g){g=!0,i(k);return}K()}),u.once("end",K),u.once("close",K),u.on("data",async(k)=>{_+=k;let N=_.indexOf(`
323
+ `);if(N===-1||g)return;try{let A=Ku.parse(JSON.parse(_.slice(0,N)));if(A.id!==y.id){g=!0,u.destroy(),i(Error("Local control socket response ID mismatch"));return}if(!A.ok){let a=gu(A.error,A.diagnostic);await _f(a,{endpoint:"attachClient",responseStatus:null,payload:A,transport:"runtime_socket_attach"}),g=!0,u.destroy(),i(a);return}let G=hu.parse(Ou.parse(A.payload));g=!0,f({clientId:G.clientId,clientAuthToken:G.clientAuthToken,release:async()=>{if(!H)u.destroy();await O}})}catch(A){g=!0,u.destroy(),i(A)}})})}async function Xn(c){let n=await Lf(c.ariaHome);if(!await rc(c.ariaHome,n.nodeId))return null;let y=Date.now()+Au;while(Date.now()<y)try{return await jc({ariaHome:c.ariaHome,nodeId:n.nodeId,ownership:"reattached",release:async()=>{},pollIntervalMs:c.pollIntervalMs,clientKind:c.clientKind})}catch(f){if(!Un(f))throw f;if(!await rc(c.ariaHome,n.nodeId))return null;await Ef(Eu)}return null}function xu(c){if(c.auth)return Af({runtimeSocket:c.runtimeSocket,pollIntervalMs:c.pollIntervalMs,auth:c.auth});return Hu(c)}async function Yc(c){let n=async(_,g)=>{let H=c.pollIntervalMs??100,h=Date.now()+Math.max(H*20,2000),O=null;while(Date.now()<h){if(c.signal?.aborted)throw Error(`[local-control-client] Attach-only client ${g} aborted while waiting for a live runtime owner on node ${_}`);try{if(!await rc(c.ariaHome,_))O=Error(`[local-control-client] No live runtime owner available for attach-only client ${g} on node ${_}`);else return await jc({ariaHome:c.ariaHome,nodeId:_,ownership:"reattached",release:async()=>{},pollIntervalMs:c.pollIntervalMs,clientKind:g})}catch(K){if(!Un(K))throw K;O=K}await Ef(H)}throw O??Error(`[local-control-client] No live runtime owner available for attach-only client ${g} on node ${_}`)},{getHostSupervisor:y,HostSupervisorSplitBrainError:f}=await Lu(),i=y(),u;try{u=await i.attach({ariaHome:c.ariaHome,arionName:c.arionName,clientKind:c.clientKind,memoriaFactory:c.memoriaFactory,router:c.router,authResolver:c.authResolver,runSessionConfig:c.runSessionConfig,mcpServers:c.mcpServers,daemonSafetyPolicy:c.daemonSafetyPolicy,autonomousIntervalMs:c.autonomousIntervalMs,signal:c.signal,silent:c.silent,runtimeLifecycle:c.runtimeLifecycle,port:c.port})}catch(_){if(_ instanceof f)return jc({ariaHome:c.ariaHome,nodeId:_.nodeId,ownership:"reattached",release:async()=>{},pollIntervalMs:c.pollIntervalMs,clientKind:c.clientKind});throw _}try{return await u.runtime.waitForInitialDiscovery(),await jc({ariaHome:c.ariaHome,nodeId:u.nodeId,ownership:u.ownership,pollIntervalMs:c.pollIntervalMs,clientKind:c.clientKind,release:(_)=>u.release(_)})}catch(_){throw await u.release(),_}}async function Dc(c){let n=await Lf(c.ariaHome);try{return(await jc({ariaHome:c.ariaHome,nodeId:n.nodeId,ownership:"reattached",release:async()=>{},pollIntervalMs:c.pollIntervalMs})).control}catch(y){if(Un(y))return null;throw y}}function Zn(c){return null}function mc(c){if(!(c instanceof Error))return!1;let n=c.message;if(n.includes("attached-local-client-only"))return!0;if(n.includes("ECONNRESET"))return!0;if(n.includes("ECONNREFUSED"))return!0;if(n.includes("EPIPE"))return!0;if(n.includes("connect ENOENT"))return!0;if(n.includes("socket hang up"))return!0;if(n.includes("closed before"))return!0;return!1}function Of(c){if(c<=0)return Promise.resolve();return new Promise((n)=>{setTimeout(n,c).unref?.()})}async function sc(c){let{runtimeSocket:n,clientKind:y="local-api"}=c,f=!1,i,u,_=null,g=null,H=(A)=>{if(!c.logDir)return;try{uu(c.logDir,{recursive:!0}),iu(Kf(c.logDir,"reattach.jsonl"),JSON.stringify({ts:new Date().toISOString(),pid:process.pid,...A})+`
324
+ `)}catch{}};async function h(){if(g)await g().catch(()=>{}),g=null;let A=await oc(n,Ru.parse({clientKind:y,lease:!0,pid:process.pid,displayName:c.displayName}));i=A.clientId,u=A.clientAuthToken,g=()=>A.release(),_=Af({runtimeSocket:n,auth:{clientId:A.clientId,clientAuthToken:A.clientAuthToken}}),H({event:"lease_acquired",clientId:A.clientId})}await h();async function O(A,G){if(f)throw Error("ResilientAttachedClient has been released");try{return await G(_)}catch(a){if(!mc(a))throw a;H({event:"reattach_start",method:A,error:a.message});for(let F=0;F<fc.length;F++){if(f)throw Error("ResilientAttachedClient has been released");await Of(fc[F]??0);try{await h();let m=await G(_);return H({event:"reattach_success",method:A,attempt:F}),m}catch(m){if(H({event:"reattach_retry_failed",method:A,attempt:F,error:m.message,willRetry:mc(m)&&F<fc.length-1}),!mc(m)||F===fc.length-1)throw m}}throw a}}async function*K(A,G){if(f)throw Error("ResilientAttachedClient has been released");try{yield*G(_);return}catch(a){if(!mc(a))throw a;H({event:"reattach_stream_start",method:A,error:a.message});for(let F=0;F<fc.length;F++){if(f)throw Error("ResilientAttachedClient has been released");await Of(fc[F]??0);try{await h(),yield*G(_),H({event:"reattach_stream_success",method:A,attempt:F});return}catch(m){if(H({event:"reattach_stream_retry_failed",method:A,attempt:F,error:m.message,willRetry:mc(m)&&F<fc.length-1}),!mc(m)||F===fc.length-1)throw m}}}}let k=new Set(["streamRun","subscribeRuntimeEvents","subscribeInbox","subscribePeers","subscribeDirectClientInbox"]);return{api:new Proxy({},{get(A,G){if(G==="then"||G==="catch"||G==="finally")return;if(k.has(G))return(...a)=>K(G,(F)=>F[G](...a));return(...a)=>O(G,(F)=>F[G](...a))}}),getClientId:()=>i,getClientAuthToken:()=>u,release:async()=>{f=!0;let A=Error("release() caller").stack;if(g)await g().catch(()=>{}),g=null;H({event:"released",clientId:i,releaseStack:A})}}}var Au=1e4,Eu=250,gf,hf,Rf,fc;var cn=x(()=>{uf();Hf();fc=[0,250,500,1000]});var Nf={};e(Nf,{resolveLocalControlClientSync:()=>Zn,resolveLocalControlClient:()=>Dc,requestRuntimeSocketLease:()=>oc,createResilientAttachedClient:()=>sc,attachLocalControlClient:()=>Yc,attachExistingLocalControlClient:()=>Xn});var nn=x(()=>{cn()});var Tf={};e(Tf,{createDaemonService:()=>Vc});import{spawn as Tu}from"node:child_process";import{existsSync as $f,mkdirSync as Cu,openSync as mu,closeSync as tu}from"node:fs";import xf from"node:path";import{fileURLToPath as jn}from"node:url";function Wu(c){return new Promise((n)=>setTimeout(n,Math.max(c,0)))}function au(){let c=jn(new URL("../../../server/dist/daemon-launcher.js",import.meta.url));if($f(c))return{command:process.execPath,args:[c]};try{let y=jn(import.meta.resolve("@aria-cli/server/daemon-launcher"));if($f(y))return{command:process.execPath,args:[y]}}catch{}let n=jn(new URL("../../../server/src/daemon-launcher.ts",import.meta.url));return{command:process.execPath,args:["--import","tsx",n]}}function du(c,n,y){return(typeof y.arion==="string"?y.arion.trim():"")||n||c.config.activeArion?.trim()||"ARIA"}function Ju(c){return{...typeof c.intervalMs==="number"?{intervalMs:c.intervalMs}:{},...c.allowedToolCategories||c.allowedShellCommands||typeof c.maxWriteOpsPerMinute==="number"||typeof c.maxGitPushesPerHour==="number"?{safetyPolicy:{...Array.isArray(c.allowedToolCategories)?{allowedToolCategories:c.allowedToolCategories}:{},...Array.isArray(c.allowedShellCommands)?{allowedShellCommands:c.allowedShellCommands}:{},...typeof c.maxWriteOpsPerMinute==="number"?{maxWriteOpsPerMinute:c.maxWriteOpsPerMinute}:{},...typeof c.maxGitPushesPerHour==="number"?{maxGitPushesPerHour:c.maxGitPushesPerHour}:{}}}:{}}}async function Uu(c){let n=Date.now()+Gu,y=null;while(Date.now()<n){try{let f=await Dc({ariaHome:c.ariaHome});if(f){let i=await f.getRuntimeStatus();if(!c.requireRunning||i.autonomousLoop.status==="running")return i}}catch(f){y=f instanceof Error?f:Error(String(f))}await Wu(Fu)}throw Error(y?.message??"Timed out waiting for the daemon runtime to become reachable")}function Xu(c){let n=au(),y=[...n.args,"--arion",c.arionName];if(typeof c.input.port==="number")y.push("--port",String(c.input.port));if(typeof c.input.intervalMs==="number")y.push("--interval-ms",String(c.input.intervalMs));if(Array.isArray(c.input.allowedToolCategories)&&c.input.allowedToolCategories.length>0)y.push("--allowed-tool-categories",c.input.allowedToolCategories.join(","));if(Array.isArray(c.input.allowedShellCommands)&&c.input.allowedShellCommands.length>0)y.push("--allowed-shell-commands",c.input.allowedShellCommands.join(","));if(typeof c.input.maxWriteOpsPerMinute==="number")y.push("--max-write-ops-per-minute",String(c.input.maxWriteOpsPerMinute));if(typeof c.input.maxGitPushesPerHour==="number")y.push("--max-git-pushes-per-hour",String(c.input.maxGitPushesPerHour));let f=xf.join(c.ariaHome,"logs");Cu(f,{recursive:!0});let i=mu(xf.join(f,"daemon-stderr.log"),"a");Tu(n.command,y,{cwd:c.cwd,env:{...process.env,ARIA_HOME:c.ariaHome},detached:!0,stdio:["ignore","ignore",i]}).unref(),tu(i)}function Vc(c){let n=c.cli.ariaDir,y=!1,f=()=>c.getArionName?.()??c.arionName??"ARIA",i=(_)=>{let g=typeof _.arion==="string"?_.arion.trim():"",H=f();if(g&&g!==H)throw Error(`daemon operations are scoped to ${H}; switch scope with arion.become before targeting ${g}`);return g||H},u=async()=>{if(!c.localControl)return null;try{return await c.localControl.getRuntimeStatus(),c.localControl}catch{return null}};return{async start(_){let g=du(c.cli,i(_),_),H=await u();if(!H)return y=!0,Xu({ariaHome:n,cwd:c.cwd,arionName:g,input:_}),Uu({ariaHome:n,requireRunning:!0});let h=await H.getRuntimeStatus();if(h.autonomousLoop.status==="running")return y=!1,h;if(!H.startAutonomousLoop)throw Error("Live runtime does not expose autonomous-loop start control");return y=!0,H.startAutonomousLoop(Ju(_))},async status(_={}){i(_);let g=await u();if(!g)throw Error("No live runtime is available for daemon.status");return g.getRuntimeStatus()},async stop(_={}){i(_);let g=await u();if(!g)throw Error("No live runtime is available for daemon.stop");if(!g.stopAutonomousLoop)throw Error("Live runtime does not expose autonomous-loop stop control");return y=!1,g.stopAutonomousLoop()},shouldStopOnShutdown(){return y},async releaseAll(){}}}var Gu=15000,Fu=250;var yn=x(()=>{nn()});var tf={};e(tf,{ensureDaemon:()=>fn});import mf from"node:path";function Zu(c){try{return process.kill(c,0),!0}catch{return!1}}function Cf(c){return(async()=>{try{let{resolveRuntimeRootDirectory:n,findRuntimeOwnerRecordByAriaHome:y,removeRuntimeOwnerRecord:f}=await import("@aria-cli/server"),i=n(),u=y(i,c);if(!u?.runtimeSocket)return null;if(!Zu(u.runtimePid))return f(i,u.nodeId),null;let{createResilientAttachedClient:_}=await Promise.resolve().then(() => (cn(),Qn)),g=await _({runtimeSocket:u.runtimeSocket,clientKind:"local-api",logDir:mf.join(c,"logs")});try{let H=await g.api.getRuntimeBootstrap();if(!Qu.has(H.phase))return await g.release(),f(i,u.nodeId),null}catch{return await g.release(),null}return{control:g.api,release:()=>g.release()}}catch{return null}})()}async function fn(c){let n=await Cf(c.ariaDir);if(n)return n;let{createDaemonService:y}=await Promise.resolve().then(() => (yn(),Tf)),f=c.config.activeArion??"ARIA";await y({cli:c,cwd:process.cwd(),arionName:f}).start({});let{resolveRuntimeRootDirectory:u}=await import("@aria-cli/server"),_=u(),g=mf.join(_,"owners"),H=Date.now()+15000,h=null,O=null;try{let{watch:K,mkdirSync:k,existsSync:N}=await import("node:fs");if(!N(g))k(g,{recursive:!0,mode:448});try{h=K(g,()=>O?.()),h.on("error",()=>{})}catch{}let A=50;while(Date.now()<H){let G=await Cf(c.ariaDir);if(G)return G;await new Promise((a)=>{O=a,setTimeout(a,A)}),O=null,A=Math.min(Math.round(A*1.5),200)}}finally{h?.close()}throw Error("Daemon started but socket not reachable. Check ARIA_HOME.")}var Qu;var Yn=x(()=>{Qu=new Set(["control_ready","network_ready","mesh_ready"])});import{HEADLESS_OPERATION_SCHEMAS as su}from"@aria-cli/tools";function L(c,n,y){let f=su[n].result.safeParse(y);if(!f.success)throw Error(`Invalid headless result for ${n}: ${f.error.issues.map((i)=>`${i.path.join(".")||"<root>"} ${i.message}`).join("; ")}`);return{kind:"result",requestId:c,op:n,ok:!0,result:f.data}}function C(c,n,y,f,i){return{kind:"result",requestId:c,op:n,ok:!1,error:{code:y,message:f,...i?{details:i}:{}}}}function t(c,n){return async function*(y){yield C(y,n,"MISSING_SERVICE",`Kernel service ${c} is not configured for ${n}.`)}}var q=()=>{};var Qf={};e(Qf,{createSessionOperationHandlers:()=>_n,buildSessionReadResult:()=>Uf,buildSessionLoadResult:()=>Xf,buildSessionListResult:()=>Jf,buildSessionForkResult:()=>Zf});function c_(c){return{...c,createdAt:c.createdAt.toISOString(),updatedAt:c.updatedAt.toISOString(),...c.completedAt?{completedAt:c.completedAt.toISOString()}:{}}}function df(c){let n=c.sessionId;return typeof n==="string"?n.trim():""}function Jf(c,n,y){let f=y,i=typeof f.query==="string"&&f.query.trim().length>0?n.searchSessionSummaries(f.query,f.limit??20,f.offset??0):n.listSessions(f.limit??20,f.offset??0);return L(c,"session.list",{sessions:i.map(c_)})}function Uf(c,n,y){let f=df(y);if(!f)return C(c,"session.read","SESSION_READ_FAILED","session.read requires a sessionId");let i=n.findSessionByPrefix(f)??f,u=n.loadSessionMessages(i);if(!u)return C(c,"session.read","SESSION_NOT_FOUND",`Session ${f} not found`);return L(c,"session.read",{session:u})}function Xf(c,n,y){let f=df(y);if(!f)return C(c,"session.load","SESSION_LOAD_FAILED","session.load requires a sessionId");let i=n.findSessionByPrefix(f)??f,u=n.loadSession(i);if(!u)return C(c,"session.load","SESSION_NOT_FOUND",`Session ${f} not found`);return L(c,"session.load",{session:u.session,loaded:!0,...u.runtimeState?{runtimeState:u.runtimeState}:{},...u.pendingInteraction?{pendingInteraction:u.pendingInteraction}:{}})}function Zf(c,n,y){let f=y,i=typeof f.sessionId==="string"?f.sessionId.trim():"";if(!i)return C(c,"session.fork","SESSION_FORK_FAILED","session.fork requires a sessionId");let u=n.findSessionByPrefix(i)??i;try{let _=n.forkSession(u,{messageLimit:f.messageLimit});return L(c,"session.fork",{newSessionId:_.newSessionId,sourceSessionId:_.sourceSessionId,messagesCopied:_.messagesCopied,title:_.title})}catch(_){return C(c,"session.fork","SESSION_NOT_FOUND",_.message)}}function _n(c){return{"session.list":async function*(n,y){yield Jf(n,c.sessionLedger,y)},"session.read":async function*(n,y){yield Uf(n,c.sessionLedger,y)},"session.load":async function*(n,y){yield Xf(n,c.sessionLedger,y)},"session.fork":async function*(n,y){yield Zf(n,c.sessionLedger,y)}}}var Hn=x(()=>{q()});function n_(c){return{name:c.name??"ARIA",...c.emoji?{emoji:c.emoji}:{},personality:{traits:["helpful","curious"],style:"friendly"},...c.description?{profile:{background:c.description}}:{},createdBy:"headless"}}function y_(c,n){let y=n?.trim();return y?`I want to create a new arion named "${c}". ${y}`:`I want to create a new arion named "${c}". Help me design their personality.`}function Sn(c){let n=c.arionManager;if(!n?.list||!n.hatch||!n.get||!n.wake||!n.rest)return{"arion.list":t("arionManager","arion.list"),"arion.hatch":t("arionManager","arion.hatch"),"arion.become":t("arionManager","arion.become"),"arion.rest":t("arionManager","arion.rest"),"arion.wake":t("arionManager","arion.wake"),"arion.create":t("arionManager","arion.create")};return{"arion.list":async function*(y){let f=n.list;yield L(y,"arion.list",{arions:await f()})},"arion.hatch":async function*(y,f){let i=n.get,u=f.name?.trim(),_=f.description?.trim();if(!u){yield C(y,"arion.hatch","ARION_HATCH_FAILED","arion.hatch requires a name");return}if(await i(u)){yield C(y,"arion.hatch","ARION_ALREADY_EXISTS",`An arion named "${u}" already exists.`);return}yield L(y,"arion.hatch",{mode:"guided",prompt:y_(u,_),name:u,..._?{description:_}:{}})},"arion.create":async function*(y,f){let i=n.hatch,u=await i(n_(f));yield L(y,"arion.create",{arion:u})},"arion.become":async function*(y,f){let{get:i,wake:u}=n,_=f.name?.trim();if(!_){yield C(y,"arion.become","ARION_BECOME_FAILED","arion.become requires a name");return}let g=await i(_);if(!g){yield C(y,"arion.become","ARION_NOT_FOUND",`Arion ${_} not found`);return}if(g.status==="resting")await u(_);await c.config?.setActiveArion?.(_);let H=await c.config?.getActiveArion?.()??_;yield L(y,"arion.become",{arion:g,activeArion:H})},"arion.rest":async function*(y,f){let i=n.rest,u=f.name?.trim();if(!u){yield C(y,"arion.rest","ARION_REST_FAILED","arion.rest requires a name");return}await i(u),yield L(y,"arion.rest",{success:!0,name:u})},"arion.wake":async function*(y,f){let i=n.wake,u=f.name?.trim();if(!u){yield C(y,"arion.wake","ARION_WAKE_FAILED","arion.wake requires a name");return}await i(u),yield L(y,"arion.wake",{success:!0,name:u})}}}var bn=x(()=>{q()});function zn(c,n){let y=c.auth;if(!y?.status||!y.login||!y.logout)return{"auth.status":t("auth","auth.status"),"auth.login":t("auth","auth.login"),"auth.logout":t("auth","auth.logout")};return{"auth.status":async function*(f){let i=await y.status();yield L(f,"auth.status",{...i&&typeof i==="object"?i:{}})},"auth.login":async function*(f,i,u){yield*n.login(f,i,u)},"auth.logout":async function*(f,i){yield*n.logout(f,i)}}}var ln=x(()=>{q()});import{ensureAuthProfileStore as tc,syncExternalCliCredentials as Mc,isProfileInCooldown as f_,upsertAuthProfile as s,updateAuthProfileStoreWithLockSync as i_,refreshBedrockSsoToken as u_,loginBedrockSso as __,listProfilesForProvider as Gc,loginWithGitHubCopilotToken as qn,readClaudeCodeCredentialsCached as jf,readCodexCredentialsCached as Yf,readGeminiCredentialsCached as Df,normalizeProviderId as H_,OPENAI_CODEX_OAUTH_PROFILE_ID as g_}from"@aria-cli/auth";import{spawnSync as Rn}from"node:child_process";function h_(){try{let c=Rn("gh",["auth","token","-h","github.com"],{encoding:"utf8",timeout:5000});if(c.error)return{error:c.error.message};if(c.status!==0){let y=(c.stderr||"").trim(),f=(c.stdout||"").trim();return{error:y||f||`gh auth token exited with status ${c.status}`}}let n=(c.stdout||"").trim();if(n.length<8)return{error:"gh auth token returned an empty/short token"};return{token:n}}catch(c){return{error:c instanceof Error?c.message:String(c)}}}function R_(c="github.com"){try{let n=Rn("gh",["auth","status","-h",c],{encoding:"utf8",timeout:5000}),y=`${n.stdout||""}
325
+ ${n.stderr||""}`,f=new Set;for(let i of y.split(/\r?\n/)){let u=i.match(/Logged in to .* account\s+([^\s]+)/i);if(u?.[1])f.add(u[1])}return[...f]}catch{return[]}}function O_(c,n="github.com"){try{let y=Rn("gh",["auth","token","-h",n,"-u",c],{encoding:"utf8",timeout:5000});if(y.error)return{error:y.error.message};if(y.status!==0)return{error:(y.stderr||y.stdout||"").trim()||"gh token failed"};let f=(y.stdout||"").trim();if(f.length<8)return{error:"empty/short token"};return{token:f}}catch(y){return{error:y instanceof Error?y.message:String(y)}}}function k_(){try{let c=`${process.env.HOME||""}/.copilot/config.json`,y=(Rn("node",["-e",`const fs=require('fs');const p=${JSON.stringify(c)};if(!fs.existsSync(p)){process.exit(0);}const j=JSON.parse(fs.readFileSync(p,'utf8'));const login=j?.last_logged_in_user?.login||j?.logged_in_users?.[0]?.login||'';if(login)process.stdout.write(login);`],{encoding:"utf8",timeout:5000}).stdout||"").trim();return y?{login:y}:{}}catch(c){return{error:c instanceof Error?c.message:String(c)}}}function K_(c){let n=c?.trim()??"";if(!n)return{useGhToken:!0,autoSelectSource:!0};let y=n.split(/\s+/).filter(Boolean),f,i,u=!0,_=!1,g=(H)=>{let h=y[H+1];return h&&!h.startsWith("--")?h:void 0};for(let H=0;H<y.length;H+=1){let h=y[H];if(h==="--profile"||h==="--label"){let O=g(H);if(O)i=O,H+=1;continue}if(h.startsWith("--profile=")||h.startsWith("--label=")){i=h.split("=",2)[1]?.trim()||i;continue}if(h==="--source"){let O=g(H)?.toLowerCase();if(O==="device")u=!1;else if(O==="auto")_=!0;H+=O?1:0;continue}if(h.startsWith("--source=")){let O=h.split("=",2)[1]?.toLowerCase();if(O==="device")u=!1;else if(O==="auto")_=!0;continue}if(!h.startsWith("--")&&!f)f=h,u=!1}if(f&&f.length>0)u=!1;return{token:f,profileLabel:i,useGhToken:u,autoSelectSource:_}}function hn(c){let n=(c||"").trim();if(!n)return;return n.toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||void 0}function Vf(){let c=[],n=new Set,y=["GH_TOKEN","GITHUB_TOKEN","COPILOT_GITHUB_TOKEN"];for(let g of y){let H=process.env[g]?.trim();if(H&&H.length>=8){let h=`env:${g}`;if(!n.has(h))c.push({id:h,label:`Using ${g} from environment`,source:"env",token:H,status:"connected"}),n.add(h);break}}let f=R_("github.com");for(let g of f){let H=O_(g,"github.com").token,h=`GitHub CLI account: ${g}`,O=`gh:${g}`;if(!n.has(O))c.push({id:O,label:h,source:"gh",login:g,token:H,profileLabel:hn(g),status:H?"connected":"none"}),n.add(O)}let i=tc();Mc(i);let u=Gc(i,"github-copilot");for(let g of u){let H=i.profiles[g];if(!H)continue;let h=g.split(":").slice(1).join(":")||g,O=`profile:${h}`;if(n.has(O))continue;let K=H.type==="oauth"&&H.refresh?H.refresh:void 0,k=H.type==="oauth"&&Date.now()<H.expires;c.push({id:O,label:`Copilot profile: ${h}`,source:"copilot",login:h,token:K,profileLabel:hn(h),status:k||K?"connected":"none"}),n.add(O)}let _=k_();if(_.login){let g=`copilot:${_.login}`;if(!n.has(g)&&!n.has(`profile:${_.login}`))c.push({id:g,label:`Copilot CLI last login: ${_.login}`,source:"copilot",login:_.login,profileLabel:hn(_.login),status:"connected"}),n.add(g)}return c.push({id:"device:new",label:"Sign in with a new GitHub account (device flow)",source:"device",status:"none"}),c}function A_(){let c=[],n=process.env.ANTHROPIC_API_KEY?.trim();if(n&&n.length>8){let u=n.startsWith("sk-ant-api");c.push({id:"env-key",label:"Using ANTHROPIC_API_KEY from environment",description:u?"API key detected":"Key format unrecognized",method:"env-key",status:u?"connected":"none"})}let y=tc();Mc(y);let f=Gc(y,"anthropic");for(let u of f){let _=y.profiles[u];if(!_)continue;let g=(_.type==="oauth"||_.type==="token")&&"expires"in _&&typeof _.expires==="number"&&_.expires>Date.now();c.push({id:`profile:${u}`,label:`Saved profile: ${u}`,description:g?"Credentials active":"Credentials expired — will refresh on use",method:"api-key",status:g?"connected":"available"})}let i=jf();if(i){let u=i.expires>Date.now();c.push({id:"claude-cli",label:"Import from Claude Code CLI",description:u?"Use existing Claude Code credentials from keychain":"Credentials expired, will refresh",method:"claude-cli",status:u?"connected":"available"})}c.push({id:"subscription",label:"Claude account with subscription",description:"Pro, Max, Team, or Enterprise",method:"subscription",status:vn("anthropic")==="connected"?"connected":"none"}),c.push({id:"console",label:"Anthropic Console account",description:"API usage billing",method:"console",status:"none"}),c.push({id:"setup-token",label:"Paste setup-token",description:"From `claude setup-token` or admin provisioning",method:"setup-token",status:"none"});{let u=vn("bedrock"),_=!!process.env.AWS_PROFILE?.trim();c.push({id:"bedrock",label:"3rd-party platform",description:_?`Amazon Bedrock (AWS_PROFILE=${process.env.AWS_PROFILE})`:"Amazon Bedrock — set AWS_PROFILE to configure",method:"bedrock",status:u==="connected"?"connected":_?"available":"none"})}return c}async function E_(c){switch(c){case"subscription":return{mode:"oauth",provider:"anthropic"};case"console":case"api-key":return{mode:"anthropic_key_input",provider:"anthropic"};case"setup-token":return{mode:"anthropic_setup_token",provider:"anthropic"};case"env-key":{let n=process.env.ANTHROPIC_API_KEY?.trim();if(!n)return{mode:"direct",result:{success:!1,message:"ANTHROPIC_API_KEY not set in environment"}};return s({profileId:"anthropic:env",credential:{type:"api_key",provider:"anthropic",key:n}}),{mode:"direct",result:{success:!0,message:"Saved ANTHROPIC_API_KEY from environment"}}}case"claude-cli":{let n=jf();if(!n)return{mode:"direct",result:{success:!1,message:"No Claude Code credentials found. Run `claude login` first."}};if(n.type==="oauth")return s({profileId:"anthropic:claude-cli",credential:{type:"oauth",provider:"anthropic",access:n.access,refresh:n.refresh,expires:n.expires}}),{mode:"direct",result:{success:!0,message:"Imported Claude Code OAuth credentials"}};if(n.type==="token")return s({profileId:"anthropic:claude-cli",credential:{type:"token",provider:"anthropic",token:n.token,expires:n.expires}}),{mode:"direct",result:{success:!0,message:"Imported Claude Code token"}};return{mode:"direct",result:{success:!1,message:"Unknown Claude Code credential type"}}}case"bedrock":return Mf();default:{if(c.startsWith("profile:"))return{mode:"direct",result:{success:!0,message:`Selected profile: ${c.replace("profile:","")}`}};return{mode:"direct",result:{success:!1,message:`Unknown method: ${c}`}}}}}function L_(){let c=[],n=process.env.OPENAI_API_KEY?.trim();if(n&&n.length>8){let u=n.startsWith("sk-");c.push({id:"env-key",label:"Using OPENAI_API_KEY from environment",description:u?"API key detected":"Key format unrecognized",method:"env-key",status:u?"connected":"none"})}let y=tc();Mc(y);let f=new Set;for(let u of["openai","openai-codex"]){let _=Gc(y,u);for(let g of _){if(f.has(g))continue;f.add(g);let H=y.profiles[g];if(!H)continue;let h=(H.type==="oauth"||H.type==="token")&&"expires"in H&&typeof H.expires==="number"&&H.expires>Date.now();c.push({id:`profile:${g}`,label:`Saved profile: ${g}`,description:h?"Credentials active":"Credentials expired — will refresh on use",method:"profile",status:h?"connected":"available"})}}let i=Yf();if(i){let u=i.expires>Date.now();c.push({id:"codex-import",label:"Import from Codex CLI",description:u?"Use existing Codex credentials":"Credentials expired, will refresh",method:"codex-import",status:u?"connected":"available"})}return c.push({id:"api-key",label:"Paste API key",description:"Enter your OpenAI sk-* API key",method:"api-key",status:"none"}),c}async function N_(c){switch(c){case"api-key":return{mode:"openai_key_input",provider:"openai"};case"env-key":{let n=process.env.OPENAI_API_KEY?.trim();if(!n)return{mode:"direct",result:{success:!1,message:"OPENAI_API_KEY not set in environment"}};return s({profileId:"openai:env",credential:{type:"api_key",provider:"openai",key:n}}),{mode:"direct",result:{success:!0,message:"Saved OPENAI_API_KEY from environment"}}}case"codex-import":{let n=Yf();if(!n)return{mode:"direct",result:{success:!1,message:"No Codex CLI credentials found. Run `codex auth` first."}};return s({profileId:g_,credential:{type:"oauth",provider:"openai",access:n.access,refresh:n.refresh,expires:n.expires}}),{mode:"direct",result:{success:!0,message:"Imported Codex CLI OAuth credentials"}}}default:{if(c.startsWith("profile:"))return{mode:"direct",result:{success:!0,message:`Selected profile: ${c.replace("profile:","")}`}};return{mode:"direct",result:{success:!1,message:`Unknown method: ${c}`}}}}}function $_(){let c=[],n=(process.env.GOOGLE_API_KEY??process.env.GEMINI_API_KEY)?.trim();if(n&&n.length>8){let u=n.startsWith("AIza");c.push({id:"env-key",label:`Using ${process.env.GOOGLE_API_KEY?"GOOGLE_API_KEY":"GEMINI_API_KEY"} from environment`,description:u?"API key detected":"Key format unrecognized",method:"env-key",status:u?"connected":"none"})}let y=tc();Mc(y);let f=Gc(y,"google");for(let u of f){let _=y.profiles[u];if(!_)continue;let g=(_.type==="oauth"||_.type==="token")&&"expires"in _&&typeof _.expires==="number"&&_.expires>Date.now();c.push({id:`profile:${u}`,label:`Saved profile: ${u}`,description:g?"Credentials active":"Credentials expired — will refresh on use",method:"profile",status:g?"connected":"available"})}let i=Df();if(i){let u=i.expires>Date.now();c.push({id:"gemini-import",label:"Import from Gemini CLI",description:u?"Use existing Gemini CLI credentials":"Credentials expired, will refresh",method:"gemini-import",status:u?"connected":"available"})}return c.push({id:"api-key",label:"Paste API key",description:"Enter your Google AIza* API key",method:"api-key",status:"none"}),c.push({id:"oauth",label:"Gemini CLI OAuth",description:"Sign in via browser-based OAuth flow",method:"oauth",status:"none"}),c}async function x_(c){switch(c){case"api-key":return{mode:"google_key_input",provider:"google"};case"oauth":return{mode:"oauth",provider:"google"};case"env-key":{let n=(process.env.GOOGLE_API_KEY??process.env.GEMINI_API_KEY)?.trim();if(!n)return{mode:"direct",result:{success:!1,message:"GOOGLE_API_KEY / GEMINI_API_KEY not set in environment"}};return s({profileId:"google:env",credential:{type:"api_key",provider:"google",key:n}}),{mode:"direct",result:{success:!0,message:"Saved Google API key from environment"}}}case"gemini-import":{let n=Df();if(!n)return{mode:"direct",result:{success:!1,message:"No Gemini CLI credentials found. Run `gemini auth` first."}};return s({profileId:"google:gemini-cli",credential:{type:"oauth",provider:"google",access:n.access,refresh:n.refresh,expires:n.expires}}),{mode:"direct",result:{success:!0,message:"Imported Gemini CLI OAuth credentials"}}}default:{if(c.startsWith("profile:"))return{mode:"direct",result:{success:!0,message:`Selected profile: ${c.replace("profile:","")}`}};return{mode:"direct",result:{success:!1,message:`Unknown method: ${c}`}}}}}function C_(c){return In.includes(c)}function vn(c){let n=i_({updater:(u)=>Mc(u)})??tc(),y=H_(c),f=Gc(n,y);for(let u of f){let _=n.profiles[u];if(!_)continue;if(f_(n,u))continue;if(_.type==="api_key"&&_.key?.trim())return"connected";if(_.type==="oauth"&&"expires"in _){let g=_.expires;if(g&&g<Date.now())continue;return"connected"}if(_.type==="token"){let g=_.expires;if(!g||Date.now()<g)return"connected";continue}return"connected"}let i=m_[y]??[];for(let u of i)if(process.env[u]?.trim())return"connected";return f.length>0?"expired":"none"}function Bc(){return In.map((c)=>{let n=vn(c),y=tc(),f=Gc(y,c),i;for(let u of f){let _=y.profiles[u];if(_?.email){i=_.email;break}}return{id:c,label:T_[c],status:n,...i?{email:i}:{}}})}async function Mf(c){if(await u_(c))return{mode:"direct",result:{success:!0,message:"Bedrock SSO token refreshed (silent)"}};if(await __(c))return{mode:"direct",result:{success:!0,message:"Bedrock SSO login succeeded — credentials refreshed"}};return{mode:"direct",result:{success:!1,message:["Bedrock SSO login failed.","Try running manually: aws sso login --profile "+(c||process.env.AWS_PROFILE||"default")].join(`
326
+ `)}}}function gn(c,n){if(n.length<8)return{mode:"direct",result:{success:!1,message:"API key too short (minimum 8 characters)"}};let y=`${c}:manual`;return s({profileId:y,credential:{type:"api_key",provider:c,key:n}}),{mode:"direct",result:{success:!0,message:`Saved ${c} API key (profile: ${y})`}}}function t_(c){if(c.length<8)return{mode:"direct",result:{success:!1,message:"Setup token too short (minimum 8 characters)"}};let n="anthropic:setup-token";return s({profileId:n,credential:{type:"api_key",provider:"anthropic",key:c}}),{mode:"direct",result:{success:!0,message:`Saved Anthropic setup token (profile: ${n})`}}}async function G_(c,n){if(!C_(c))return{mode:"direct",result:{success:!1,message:`Unknown provider "${c}". Supported: ${In.join(", ")}`}};if(c==="bedrock"){let f=n?.trim()||void 0;return Mf(f)}if(c==="github-copilot"){let f=K_(n);if(!f.token&&!f.profileLabel&&f.autoSelectSource)return{mode:"copilot_source_picker",provider:"github-copilot",options:Vf()};if(f.token){let i=await qn({githubToken:f.token,profileLabel:f.profileLabel});return{mode:"direct",result:{success:i.success,message:i.message}}}if(f.useGhToken){let i=h_();if(i.token){let u=await qn({githubToken:i.token,profileLabel:f.profileLabel});if(u.success)return{mode:"direct",result:{success:!0,message:`${u.message} (imported from gh auth token)`}};return{mode:"copilot_device",provider:"github-copilot",profileLabel:f.profileLabel,message:`gh auth token import failed: ${u.message}
327
+ Falling back to interactive device login...`}}return{mode:"copilot_device",provider:"github-copilot",profileLabel:f.profileLabel,...i.error?{message:`Could not read gh auth token: ${i.error}`}:{}}}return{mode:"copilot_device",provider:"github-copilot",profileLabel:f.profileLabel}}if(c==="anthropic"){let f=n?.trim();if(f?.startsWith("--setup-token")){let u=f.replace(/^--setup-token\s*/,"").trim();return t_(u)}if(f?.startsWith("--method")){let u=f.replace(/^--method\s*/,"").trim();return E_(u)}if(f)return gn(c,f);return{mode:"anthropic_method_picker",provider:"anthropic",options:A_()}}if(c==="openai"){let f=n?.trim();if(f?.startsWith("--method")){let u=f.replace(/^--method\s*/,"").trim();return N_(u)}if(f)return gn(c,f);return{mode:"openai_method_picker",provider:"openai",options:L_()}}if(c==="google"){let f=n?.trim();if(f?.startsWith("--method")){let u=f.replace(/^--method\s*/,"").trim();return x_(u)}if(f)return gn(c,f);return{mode:"google_method_picker",provider:"google",options:$_()}}let y=n?.trim();if(y)return gn(c,y);return{mode:"oauth",provider:c}}async function Bf(c){let n=c.trim().split(/\s+/),y=n[0]?.toLowerCase()||"",f=n.slice(1).join(" ").trim();if(!y)return{mode:"picker",providers:Bc()};if(y==="github-copilot"&&f.startsWith("--from ")){let i=f.slice(7).trim(),_=Vf().find((g)=>g.id===i);if(!_)return{mode:"direct",result:{success:!1,message:`Unknown Copilot source: ${i}`}};if(_.source==="device")return{mode:"copilot_device",provider:"github-copilot",profileLabel:_.profileLabel};if(_.token){let g=await qn({githubToken:_.token,profileLabel:_.profileLabel});return{mode:"direct",result:{success:g.success,message:g.message}}}if(_.login)return{mode:"copilot_device",provider:"github-copilot",profileLabel:hn(_.login)}}return G_(y,f||void 0)}var In,T_,m_;var wn=x(()=>{In=["bedrock","anthropic","google","openai","github-copilot"],T_={bedrock:"Bedrock (AWS SSO)",anthropic:"Anthropic",google:"Google (Gemini)",openai:"OpenAI","github-copilot":"GitHub Copilot"};m_={anthropic:["ANTHROPIC_API_KEY"],openai:["OPENAI_API_KEY"],google:["GOOGLE_API_KEY","GEMINI_API_KEY"],"github-copilot":["GH_TOKEN","GITHUB_TOKEN","COPILOT_GITHUB_TOKEN"],bedrock:["AWS_PROFILE"]}});import{ensureAuthProfileStore as Pf,listProfilesForProvider as F_,updateAuthProfileStoreWithLockSync as Sf}from"@aria-cli/auth";function W_(c){let n=Pf(),y=F_(n,c);if(y.length===0)return{success:!1,message:`No credentials found for "${c}"`};Sf({updater:(i)=>{for(let u of y){let _=i.profiles[u]?.provider;if(delete i.profiles[u],_&&i.lastGood)delete i.lastGood[_]}if(i.usageStats)for(let u of y)delete i.usageStats[u];return!0}});let f=y.length===1?"profile":"profiles";return{success:!0,message:`Disconnected ${c} (removed ${y.length} ${f})`}}function a_(){let c=Pf(),n=Object.keys(c.profiles).length;if(n===0)return{success:!1,message:"No providers connected"};return Sf({updater:(f)=>{return f.profiles={},f.lastGood=void 0,f.usageStats=void 0,!0}}),{success:!0,message:`Cleared all credentials (${n} ${n===1?"profile":"profiles"} removed)`}}function bf(c){let n=c.trim().toLowerCase();if(n==="all")return{mode:"direct",result:a_()};if(n)return{mode:"direct",result:W_(n)};let f=Bc().filter((i)=>i.status!=="none");if(f.length===0)return{mode:"direct",result:{success:!0,message:"No providers connected"}};return{mode:"picker",providers:f}}var zf=x(()=>{wn()});function lf(){return Bc()}async function qf(c){return Bf(c)}function vf(c){return bf(c)}function If(c){if(typeof c.args==="string"&&c.args.trim().length>0)return c.args.trim();let n=[];if(typeof c.provider==="string"&&c.provider.trim().length>0)n.push(c.provider.trim());if(typeof c.method==="string"&&c.method.trim().length>0)n.push(c.method.trim());if(typeof c.source==="string"&&c.source.trim().length>0)n.push("--source",c.source.trim());if(typeof c.profileLabel==="string"&&c.profileLabel.trim().length>0)n.push("--profile",c.profileLabel.trim());if(typeof c.credential==="string"&&c.credential.trim().length>0)n.push(c.credential.trim());return n.join(" ")}function wf(c){if(typeof c.args==="string"&&c.args.trim().length>0)return c.args.trim();if(typeof c.provider==="string"&&c.provider.trim().length>0)return c.provider.trim();return""}var pf=x(()=>{wn();zf()});function ef(c){return"listAttachedClients"in c&&typeof c.listAttachedClients==="function"&&"listDirectClientInbox"in c&&typeof c.listDirectClientInbox==="function"}function pn(c){return{"client.list":async function*(n){if(!ef(c.localControl)){yield C(n,"client.list","MISSING_SERVICE","Attached local-control client directory is unavailable.");return}yield L(n,"client.list",{clients:await c.localControl.listAttachedClients()})},"client.inbox.list":async function*(n,y){if(!ef(c.localControl)){yield C(n,"client.inbox.list","MISSING_SERVICE","Attached local-control client inbox is unavailable.");return}yield L(n,"client.inbox.list",{events:await c.localControl.listDirectClientInbox(y)})}}}var en=x(()=>{q()});function rn(c){let n=c.config;if(!n?.getTheme||!n.setTheme||!n.getAutonomy||!n.setAutonomy)return{"config.theme.get":t("config","config.theme.get"),"config.theme.set":t("config","config.theme.set"),"config.autonomy.get":t("config","config.autonomy.get"),"config.autonomy.set":t("config","config.autonomy.set")};return{"config.theme.get":async function*(y){try{yield L(y,"config.theme.get",{theme:await n.getTheme()})}catch(f){yield C(y,"config.theme.get","CONFIG_THEME_GET_FAILED",f instanceof Error?f.message:String(f))}},"config.theme.set":async function*(y,f){let i=f.theme?.trim();if(!i){yield C(y,"config.theme.set","CONFIG_THEME_SET_FAILED","config.theme.set requires a theme");return}try{let u=await n.setTheme(i);yield L(y,"config.theme.set",{theme:i,...u&&typeof u==="object"?u:{}})}catch(u){yield C(y,"config.theme.set","CONFIG_THEME_SET_FAILED",u instanceof Error?u.message:String(u))}},"config.autonomy.get":async function*(y){try{yield L(y,"config.autonomy.get",{autonomy:await n.getAutonomy()})}catch(f){yield C(y,"config.autonomy.get","CONFIG_AUTONOMY_GET_FAILED",f instanceof Error?f.message:String(f))}},"config.autonomy.set":async function*(y,f){let i=f.autonomy?.trim();if(!i){yield C(y,"config.autonomy.set","CONFIG_AUTONOMY_SET_FAILED","config.autonomy.set requires an autonomy level");return}try{let u=await n.setAutonomy(i);yield L(y,"config.autonomy.set",{autonomy:i,...u&&typeof u==="object"?u:{}})}catch(u){yield C(y,"config.autonomy.set","CONFIG_AUTONOMY_SET_FAILED",u instanceof Error?u.message:String(u))}}}}var on=x(()=>{q()});function rf(c){let n=c.daemon;if(!n?.start||!n.status||!n.stop)return{"daemon.start":t("daemon","daemon.start"),"daemon.status":t("daemon","daemon.status"),"daemon.stop":t("daemon","daemon.stop")};return{"daemon.start":async function*(y,f){try{yield L(y,"daemon.start",await n.start(f))}catch(i){yield C(y,"daemon.start","DAEMON_START_FAILED",i instanceof Error?i.message:String(i))}},"daemon.status":async function*(y,f){try{yield L(y,"daemon.status",await n.status(f))}catch(i){yield C(y,"daemon.status","DAEMON_STATUS_FAILED",i instanceof Error?i.message:String(i))}},"daemon.stop":async function*(y,f){try{yield L(y,"daemon.stop",await n.stop(f))}catch(i){yield C(y,"daemon.stop","DAEMON_STOP_FAILED",i instanceof Error?i.message:String(i))}}}}var of=x(()=>{q()});function sn(c){let n=c.memoria;if(!n)return{"memory.remember":t("memoria","memory.remember"),"memory.recall":t("memoria","memory.recall"),"memory.list":t("memoria","memory.list"),"memory.forget":t("memoria","memory.forget"),"memory.recall_knowledge":t("memoria","memory.recall_knowledge")};return{"memory.remember":async function*(y,f){let i=f.text?.trim();if(!i){yield C(y,"memory.remember","MEMORY_REMEMBER_FAILED","memory.remember requires text");return}let u=await n.remember(i);if(!u?.id){yield C(y,"memory.remember","MEMORY_REMEMBER_FAILED","Failed to store memory");return}let _=await n.count(),g=i.length>50?`${i.slice(0,50)}...`:i;yield L(y,"memory.remember",{success:!0,message:`Remembered: "${g}"`,data:{id:u.id,count:_}})},"memory.recall":async function*(y,f){let i=f.query?.trim();if(!i){yield C(y,"memory.recall","MEMORY_RECALL_FAILED","memory.recall requires a query");return}let u=await n.recall(i),_=Array.isArray(u.memories)?u.memories:[];if(_.length===0){yield L(y,"memory.recall",{success:!0,message:"No memories found matching your query.",count:0,memories:[]});return}yield L(y,"memory.recall",{success:!0,message:`Found ${_.length} memories:`,count:_.length,memories:_})},"memory.list":async function*(y,f){let i=f,u=await n.list({...typeof i.limit==="number"?{limit:i.limit}:{},...typeof i.offset==="number"?{offset:i.offset}:{}}),_=typeof i.query==="string"&&i.query.trim().length>0?u.filter((g)=>g.content.toLowerCase().includes(i.query.trim().toLowerCase())):u;yield L(y,"memory.list",{memories:_,count:_.length})},"memory.forget":async function*(y,f){let i=f.id?.trim();if(!i){yield C(y,"memory.forget","MEMORY_FORGET_FAILED","memory.forget requires an id");return}let u=await n.deleteMemory(i);yield L(y,"memory.forget",{success:!0,message:u?`Deleted memory ${i}.`:`Memory ${i} not found or already deleted.`,deleted:u})},"memory.recall_knowledge":async function*(y,f){let i=f,u=i.topic?.trim();if(!u){yield C(y,"memory.recall_knowledge","MEMORY_RECALL_KNOWLEDGE_FAILED","memory.recall_knowledge requires a topic");return}let _=await n.recallTools({query:u,...typeof i.limit==="number"?{limit:i.limit}:{}});yield L(y,"memory.recall_knowledge",{tools:_,count:_.length})}}}var cy=x(()=>{q()});import{randomUUID as ci}from"node:crypto";import{OutboundMessageSchema as d_}from"@aria-cli/tools";function J_(c){let n=c.trim();if(!n)return null;let y=n.indexOf(" ");if(y<=0)return null;let f=n.slice(0,y).trim(),i=n.slice(y+1).trim();if(!f||!i)return null;return{recipient:f,content:i}}function Fc(c){return c.displayNameSnapshot?.trim()||c.nodeId}function ny(c){return c.displayLabel.trim()||c.clientId}function sf(c){let n=ny(c);return n===c.clientId?c.clientId:`${n} (${c.clientId})`}function ni(c){let n=c.trim().replace(/^@/,""),y=n.indexOf("#");if(y>0)return{peer:n.slice(0,y),client:n.slice(y+1)||void 0};let f=n.indexOf("/");if(f>0)return{peer:n.slice(0,f),arion:n.slice(f+1)||void 0};return{peer:n}}function U_(c,n){let{peer:y}=ni(n),f=c.find((u)=>u.nodeId.toLowerCase()===y);if(f)return f;let i=c.filter((u)=>Fc(u).toLowerCase()===y);if(i.length===1)return i[0];return null}function X_(c,n){let y=n.trim().toLowerCase().replace(/^@/,"");return c.filter((f)=>Fc(f).toLowerCase()===y).length>1}function Z_(c,n){let y=n.trim().toLowerCase().replace(/^@/,"");return c.find((f)=>f.clientId.toLowerCase()===y)??null}function Q_(c,n){let y=n.trim().toLowerCase();return c.find((f)=>ny(f).toLowerCase()===y)??null}function j_(c){let n={};if(c.targetArion)n.targetArion=c.targetArion;if(c.targetClient)n.targetClient=c.targetClient;let y=Object.keys(n).length>0;return{rawMessage:{version:1,id:`headless-send-${ci()}`,sender:{id:c.senderNodeId,name:c.senderName,type:"arion"},recipient:{id:c.recipient.nodeId,name:Fc(c.recipient),type:"peer"},type:"message",content:c.content,timestamp:Date.now(),priority:2,...y?{metadata:n}:{}},to:c.recipient.nodeId,type:"message",content:c.content,priority:2,...y?{metadata:n}:{}}}function Y_(c){return{rawMessage:{version:1,id:`headless-send-${ci()}`,sender:{id:c.senderNodeId,name:c.senderName,type:"arion"},recipient:{id:c.recipient.clientId,name:ny(c.recipient),type:"client"},type:"message",content:c.content,timestamp:Date.now(),priority:2},recipientInbox:{kind:"client",clientId:c.recipient.clientId},type:"message",content:c.content,priority:2}}async function D_(c,n){let y=typeof n.args==="string"&&n.args.trim().length>0?J_(n.args):n.recipient&&n.content?{recipient:n.recipient,content:n.content}:null;if(!y)return{ok:!1,code:"MESSAGE_SEND_FAILED",message:"Usage: /send <peer-name|node-id|client-id> <message>"};let[f,i,u]=await Promise.all([c.localControl.listPeers(),c.localControl.listAttachedClients(),c.localControl.getRuntimeStatus()]),_=n.senderName?.trim()||"ARIA",g=Z_(i,y.recipient);if(g){if(g.self)return{ok:!1,code:"MESSAGE_SEND_FAILED",message:"Cannot send a same-home message to yourself."};return{ok:!0,outbound:Y_({senderNodeId:u.nodeId,senderName:_,recipient:g,content:y.content}),message:`Sent message to ${sf(g)}.`}}if(X_(f,y.recipient))return{ok:!1,code:"MESSAGE_SEND_FAILED",message:`Multiple peers match "${y.recipient}". Use the nodeId instead.`};let H=U_(f,y.recipient);if(!H){let K=Q_(i,y.recipient);if(K)return{ok:!1,code:"MESSAGE_SEND_FAILED",message:`Same-home clients require the exact clientId. Use /clients to choose ${sf(K)}.`};return{ok:!1,code:"MESSAGE_SEND_FAILED",message:`Recipient "${y.recipient}" not found.`}}let h=ni(y.recipient),O=h.arion?`${Fc(H)}/${h.arion}`:h.client?`${Fc(H)}#${h.client}`:Fc(H);return{ok:!0,outbound:j_({senderNodeId:u.nodeId,senderName:_,recipient:H,content:y.content,targetArion:h.arion,targetClient:h.client}),message:`Sent message to ${O}.`}}function V_(c,n){if(c.deliveryState==="queued_for_route")return n.replace(/^Sent/,"Queued");if(c.deliveryState==="dispatching")return`${n.slice(0,-1)}; awaiting acknowledgement.`;if(c.delivered)return n.replace(/^Sent/,"Delivered");return n}function yy(c){return{"message.send":async function*(n,y){let f=d_.safeParse(y);if(f.success){yield L(n,"message.send",{receipt:await c.localControl.sendDurable(f.data)});return}if(!(y&&typeof y==="object"&&(typeof y.args==="string"||typeof y.recipient==="string"||typeof y.content==="string"))){yield C(n,"message.send","INVALID_INPUT","Invalid input for message.send");return}let u=await D_(c,y);if(!u.ok){yield C(n,"message.send",u.code,u.message);return}let _=await c.localControl.sendDurable(u.outbound);yield L(n,"message.send",{receipt:_,message:V_(_,u.message)})},"message.inbox.list":async function*(n,y){yield L(n,"message.inbox.list",{events:await c.localControl.listInbox(y)})}}}var fy=x(()=>{q()});function iy(c){let n=c.modelDiscovery;if(!n?.listAvailable||!n.refresh||!n.setCurrentModel)return{"model.list":t("modelDiscovery","model.list"),"model.set":t("modelDiscovery","model.set"),"model.refresh":t("modelDiscovery","model.refresh")};return{"model.list":async function*(y){let f=n.listAvailable;yield L(y,"model.list",{models:await f(),currentModel:await n.getCurrentModel?.()})},"model.set":async function*(y,f){let i=n.setCurrentModel,u=f.model?.trim();if(!u){yield C(y,"model.set","MODEL_SET_FAILED","model.set requires a model");return}let _=await i(u);yield L(y,"model.set",{currentModel:u,..._&&typeof _==="object"?_:{}})},"model.refresh":async function*(y){let f=n.refresh;yield L(y,"model.refresh",{models:await f(!0)})}}}var uy=x(()=>{q()});function _y(c){return{"peer.list":async function*(n){yield L(n,"peer.list",{peers:await c.localControl.listPeers()})},"peer.list_nearby":async function*(n){yield L(n,"peer.list_nearby",{peers:await c.localControl.listNearbyPeers()})},"peer.pending.list":async function*(n){yield L(n,"peer.pending.list",{requests:await c.localControl.listPendingPairRequests()})},"peer.pending.respond":async function*(n,y){yield L(n,"peer.pending.respond",{response:await c.localControl.respondToPairRequest(y)})},"peer.invite":async function*(n,y){yield L(n,"peer.invite",{invite:await c.localControl.createInvite(y)})},"peer.connect":async function*(n,y){yield L(n,"peer.connect",{invite:await c.localControl.invitePeer(y)})},"peer.accept_invite":async function*(n,y){yield L(n,"peer.accept_invite",{accepted:await c.localControl.acceptInviteToken(y)})},"peer.direct_pair":async function*(n,y){yield L(n,"peer.direct_pair",{pair:await c.localControl.directPair(y)})},"peer.repair":async function*(n,y){yield L(n,"peer.repair",{repair:await c.localControl.repairPeer(y)})},"peer.revoke":async function*(n,y){yield L(n,"peer.revoke",{revoke:await c.localControl.revokePeer(y)})}}}var Hy=x(()=>{q()});function gy(c){return{"run.start":async function*(n,y,f){yield*c.start(n,y,f?.signal)},"run.resume":async function*(n,y,f){yield*c.resume(n,y,f?.signal)},"run.abort":async function*(n,y,f){yield*c.abort(n,y,f?.activeRunController)},"interaction.respond":async function*(n,y,f){let i=y&&typeof y==="object"&&"kind"in y?y:{kind:"interaction.respond",requestId:n,...y};yield*c.respond(i,f?.signal)}}}var yi=x(()=>{bn();ln();en();on();cy();fy();uy();Hy();Hn()});function fi(c){let n=c.hook;if(!n?.extract||!n.reflect||!n.consolidate||!n.ingest||!n.harvest)return{"hook.extract":t("hook","hook.extract"),"hook.reflect":t("hook","hook.reflect"),"hook.consolidate":t("hook","hook.consolidate"),"hook.ingest":t("hook","hook.ingest"),"hook.harvest":t("hook","hook.harvest")};return{"hook.extract":async function*(y,f,i){try{yield L(y,"hook.extract",await n.extract(f,{signal:i?.signal}))}catch(u){yield C(y,"hook.extract","HOOK_EXTRACT_FAILED",u instanceof Error?u.message:String(u))}},"hook.reflect":async function*(y,f,i){try{yield L(y,"hook.reflect",await n.reflect(f,{signal:i?.signal}))}catch(u){yield C(y,"hook.reflect","HOOK_REFLECT_FAILED",u instanceof Error?u.message:String(u))}},"hook.consolidate":async function*(y,f,i){try{yield L(y,"hook.consolidate",await n.consolidate(f,{signal:i?.signal}))}catch(u){yield C(y,"hook.consolidate","HOOK_CONSOLIDATE_FAILED",u instanceof Error?u.message:String(u))}},"hook.ingest":async function*(y,f,i){try{yield L(y,"hook.ingest",await n.ingest(f,{signal:i?.signal}))}catch(u){yield C(y,"hook.ingest","HOOK_INGEST_FAILED",u instanceof Error?u.message:String(u))}},"hook.harvest":async function*(y,f,i){try{yield L(y,"hook.harvest",await n.harvest(f,{signal:i?.signal}))}catch(u){yield C(y,"hook.harvest","HOOK_HARVEST_FAILED",u instanceof Error?u.message:String(u))}}}}var ii=x(()=>{q()});function ui(c){let n=c.system;if(!n?.restart||!n.terminalSetup)return{"system.restart":t("system","system.restart"),"system.terminal_setup":t("system","system.terminal_setup")};return{"system.restart":async function*(y,f){yield L(y,"system.restart",await n.restart(f))},"system.terminal_setup":async function*(y){yield L(y,"system.terminal_setup",await n.terminalSetup())}}}var _i=x(()=>{q()});import{lightReflection as M_}from"@aria-cli/aria";import{ingestClaudeCodeHistory as B_}from"@aria-cli/memoria-bridge";function V(c){if(!c?.aborted)return;let n=c.reason instanceof Error&&c.reason.message?c.reason.message:"The operation was aborted",y=Error(n);throw y.name="AbortError",y}function S_(c={}){let n={preHarvest:c.preHarvest===!0,feedback:c.feedback===!0,extract:c.extract===!0,stats:c.stats===!0,cleanup:c.cleanup===!0,cost:c.cost===!0,all:c.all===!0,limit:typeof c.limit==="number"&&Number.isInteger(c.limit)&&c.limit>0?c.limit:50};if(n.all)n.preHarvest=!0,n.extract=!0,n.stats=!0;return n}async function gi(c,n,y={}){if(V(y.signal),!n)return{output:{error:"no input on stdin"},exitCode:1};let f;try{if(f=JSON.parse(n),!Array.isArray(f))throw Error("expected array")}catch{return{output:{error:"stdin must be JSON array of {user, assistant} pairs"},exitCode:1}}if(f.length>Hi)return{output:{error:`hook.extract accepts at most ${Hi} pairs per request`},exitCode:1};let i=[],u=0,_=Array.from({length:Math.min(P_,f.length)},async()=>{while(!0){V(y.signal);let g=u;if(u+=1,g>=f.length)return;let H=f[g];if(!H.user||!H.assistant){i[g]={user:H.user??"",extracted:0,error:"missing user or assistant"};continue}try{let h=await c.extractFromConversation(H.user,H.assistant);V(y.signal);let O=h?.learned;i[g]={user:H.user.slice(0,80),extracted:Array.isArray(O)?O.length:0}}catch(h){V(y.signal),i[g]={user:H.user.slice(0,80),extracted:0,error:h instanceof Error?h.message:String(h)}}}});return await Promise.all(_),{output:{extracted:i}}}async function hy(c,n,y,f={}){V(f.signal);let i=[];if(y)try{let u=JSON.parse(y);if(Array.isArray(u)){for(let _ of u)if(_.role&&_.content)i.push({role:_.role,content:typeof _.content==="string"?_.content:JSON.stringify(_.content)})}}catch{i.push({role:"user",content:"Session review"}),i.push({role:"assistant",content:y})}if(i.length<2)return{output:{findings:null,reason:"insufficient conversation"}};try{let u=await M_(n,c,i);return V(f.signal),{output:{findings:u}}}catch(u){return V(f.signal),{output:{findings:null,error:u instanceof Error?u.message:String(u)}}}}async function hi(c,n={}){V(n.signal);try{let y=await c.reflect({full:!1});return V(n.signal),{output:y}}catch(y){return V(n.signal),{output:{error:y instanceof Error?y.message:String(y)}}}}async function Ri(c,n={}){V(n.signal);try{let y=await B_(c);return V(n.signal),{output:y}}catch(y){return V(n.signal),{output:{error:y instanceof Error?y.message:String(y)}}}}async function Oi(c,n,y={},f={}){V(f.signal);let i=S_(y);if(!i.feedback&&!i.extract&&!i.stats&&!i.cleanup)return{output:{help:"Use hook.harvest via `aria call` or the persistent headless server.",actions:["--extract: session extraction WITH LLM","--stats: health dashboard (includes learning velocity + dupe rate)","--cleanup: garbage removal","--all: extract + stats","--feedback: (deprecated, no-op)"]}};let u={};if(i.extract)process.stderr.write(`[harvest] Running extraction...
328
+ `),V(f.signal),u.extract=b_(await hy(c,n,"",f));if(i.stats)try{V(f.signal),u.stats=await c.reflect({full:!1}),V(f.signal)}catch(_){V(f.signal),u.stats={error:_ instanceof Error?_.message:String(_)}}if(i.cleanup)u.cleanup={skipped:!0,message:"cleanup remains a no-op in headless cutover"};if(i.cost&&i.preHarvest)u.cost=u.preHarvest?.cost??null;if(i.feedback)process.stderr.write(`[harvest] --feedback is deprecated and has no effect. Use --pre-harvest instead.
329
+ `),u.feedback={deprecated:!0};return{output:u}}function b_(c){return c.output}var Hi=50,P_=5;var ki=()=>{};import z_ from"node:path";function l_(c){return z_.join("arions",c,"memory.db")}function Pc(c){if(c.output&&typeof c.output==="object")return c.output;return{value:c.output}}function Ki(c){let n=()=>process.env.ARIA_MEMORY_PATH||l_(c.getArionName?.()??c.arionName),y=async(f)=>{let i=await c.cli.pool.get(c.resolveMemoriaPath?await c.resolveMemoriaPath():n());return f(i)};return{async extract(f,i){return y(async(u)=>Pc(await gi(u,JSON.stringify(f.pairs??[]),{signal:i?.signal})))},async reflect(f,i){let u=typeof f.conversation==="string"?f.conversation:JSON.stringify(f.messages??[]);return y(async(_)=>Pc(await hy(_,c.cli.router,u,i)))},async consolidate(f,i){return y(async(u)=>Pc(await hi(u,i)))},async ingest(f,i){return y(async(u)=>Pc(await Ri(u,i)))},async harvest(f,i){return y(async(u)=>Pc(await Oi(u,c.cli.router,f,i)))}}}var Ai=x(()=>{ki()});import{randomUUID as Ei}from"node:crypto";import{buildAuthorizeUrl as q_,completeGitHubCopilotDeviceFlow as v_,exchangeCodeForTokens as I_,generatePkce as w_,generateState as p_,getOAuthConfig as e_,requestGitHubCopilotDeviceCode as r_,upsertAuthProfile as o_}from"@aria-cli/auth";function Z(c,n,y,f,i){return{kind:"result",requestId:c,op:n,ok:!1,error:{code:y,message:f,...i?{details:i}:{}}}}function Wc(c,n,y){return{kind:"result",requestId:c,op:n,ok:!0,result:y}}function Li(c){return c.map((n)=>({id:n.id,label:n.label,...n.email||n.status?{description:[n.status,n.email].filter(Boolean).join(" · ")}:{}}))}function Ni(c){return c.map((n)=>({id:n.id,label:n.label,...n.description||n.status?{description:[n.description,n.status].filter(Boolean).join(" · ")}:{}}))}function Ry(c){return{interactionId:c.interactionId,source:c.source,interaction:c.interaction}}function s_(c,n){return{...c,__authPending:n}}function cH(c){let n=c.__authPending;if(!n||typeof n!=="object")return null;return n}class Oy{auth;sessionLedger;getActiveArionName;constructor(c,n,y){this.auth=c;this.sessionLedger=n;this.getActiveArionName=y}async*login(c,n,y){if(!this.auth?.login||!this.auth.status){yield Z(c,"auth.login","MISSING_SERVICE","Kernel service auth is not configured for auth.login.");return}let f=await this.auth.login(n);yield*this.framesForInitialLoginResult(c,"auth.login",f,y)}async*logout(c,n){if(!this.auth?.logout){yield Z(c,"auth.logout","MISSING_SERVICE","Kernel service auth is not configured for auth.logout.");return}let y=await this.auth.logout(n);if(y.mode==="direct"){if(y.result.success){yield Wc(c,"auth.logout",y.result);return}yield Z(c,"auth.logout","AUTH_LOGOUT_FAILED",y.result.message);return}let f=await this.persistNewInteraction(c,{pending:{type:"logout-provider"},interaction:{kind:"selection",prompt:"Choose a provider to disconnect.",options:Li(y.providers)}});yield f,yield Z(c,"auth.logout","INTERACTION_REQUIRED","auth.logout requires additional interaction before it can continue.",Ry(f))}async*respond(c,n){let y=this.sessionLedger.getInteraction(c.interactionId);if(!y||y.source!=="auth"){yield Z(c.requestId,"interaction.respond","INTERACTION_NOT_FOUND",`Unknown interaction ${c.interactionId}`);return}let f=cH(y.prompt);if(!f){yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_STATE",`Interaction ${c.interactionId} is missing auth resume state.`);return}let i=`auth:${c.requestId}`,u=this.sessionLedger.claimSessionForMutation(y.sessionId,i,30000),_=!1,g=()=>{if(_)return;_=!0,this.sessionLedger.releaseSessionClaim(y.sessionId,i)};try{if(c.response.kind==="cancel"){this.sessionLedger.cancelInteraction(y.sessionId,y.interactionId,{ownerId:i,expectedRevision:u.revision}),g(),yield Z(c.requestId,"interaction.respond","INTERACTION_CANCELED","Interaction canceled.");return}switch(f.type){case"login-provider":{if(c.response.kind!=="selection"){g(),yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_RESPONSE","Provider selection requires a selection response.");return}let H=await this.auth?.login?.({args:c.response.selected});this.sessionLedger.recordInteractionResponse(y.sessionId,y.interactionId,c.response,{ownerId:i,expectedRevision:u.revision}),yield*this.framesForContinuedLoginResult(c.requestId,H,y.sessionId,i,u.revision+1,n);return}case"logout-provider":{if(c.response.kind!=="selection"){g(),yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_RESPONSE","Provider selection requires a selection response.");return}let H=await this.auth?.logout?.({args:c.response.selected});if(this.sessionLedger.recordInteractionResponse(y.sessionId,y.interactionId,c.response,{ownerId:i,expectedRevision:u.revision}),this.sessionLedger.completeRun(y.sessionId,{success:H.mode==="direct"?H.result.success:!1,message:H.mode==="direct"?H.result.message:"auth.logout requires additional interaction."},{ownerId:i,expectedRevision:u.revision+1}),g(),H.mode==="direct"&&H.result.success){yield Wc(c.requestId,"interaction.respond",H.result);return}yield Z(c.requestId,"interaction.respond","AUTH_LOGOUT_FAILED",H.mode==="direct"?H.result.message:"auth.logout requires interaction.");return}case"login-method":{if(c.response.kind!=="selection"){g(),yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_RESPONSE","Method selection requires a selection response.");return}let H=await this.auth?.login?.({args:`${f.provider} --method ${c.response.selected}`});this.sessionLedger.recordInteractionResponse(y.sessionId,y.interactionId,c.response,{ownerId:i,expectedRevision:u.revision}),yield*this.framesForContinuedLoginResult(c.requestId,H,y.sessionId,i,u.revision+1,n);return}case"copilot-source":{if(c.response.kind!=="selection"){g(),yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_RESPONSE","GitHub Copilot source selection requires a selection response.");return}let H=await this.auth?.login?.({args:`github-copilot --from ${c.response.selected}`});this.sessionLedger.recordInteractionResponse(y.sessionId,y.interactionId,c.response,{ownerId:i,expectedRevision:u.revision}),yield*this.framesForContinuedLoginResult(c.requestId,H,y.sessionId,i,u.revision+1,n);return}case"credential-input":{if(c.response.kind!=="credential_input"){g(),yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_RESPONSE","Credential input requires a credential_input response.");return}let H=c.response.values[f.fieldKey];if(typeof H!=="string"||H.trim().length===0){g(),yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_RESPONSE",`Missing credential field ${f.fieldKey}.`);return}let h=await this.auth?.login?.({args:`${f.commandPrefix} ${H.trim()}`.trim()});this.sessionLedger.recordInteractionResponse(y.sessionId,y.interactionId,c.response,{ownerId:i,expectedRevision:u.revision}),yield*this.framesForContinuedLoginResult(c.requestId,h,y.sessionId,i,u.revision+1,n);return}case"oauth-code":{if(c.response.kind!=="credential_input"){g(),yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_RESPONSE","OAuth code entry requires a credential_input response.");return}let H=c.response.values[f.fieldKey];if(typeof H!=="string"||H.trim().length===0){g(),yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_RESPONSE",`Missing credential field ${f.fieldKey}.`);return}this.sessionLedger.recordInteractionResponse(y.sessionId,y.interactionId,c.response,{ownerId:i,expectedRevision:u.revision});let h=await I_(f.provider,H.trim(),f.codeVerifier);o_({profileId:`${f.provider}:oauth`,credential:{type:"oauth",provider:f.provider,access:h.access,refresh:h.refresh,expires:h.expires}}),this.sessionLedger.completeRun(y.sessionId,{success:!0,message:`Logged in to ${f.provider} successfully`},{ownerId:i,expectedRevision:u.revision+1}),g(),yield Wc(c.requestId,"interaction.respond",{success:!0,message:`Logged in to ${f.provider} successfully`});return}case"copilot-device":{if(c.response.kind!=="oauth_device"){g(),yield Z(c.requestId,"interaction.respond","INVALID_INTERACTION_RESPONSE","GitHub Copilot device flow requires an oauth_device response.");return}this.sessionLedger.recordInteractionResponse(y.sessionId,y.interactionId,c.response,{ownerId:i,expectedRevision:u.revision});let H=await v_({deviceCode:f.deviceCode,profileLabel:f.profileLabel,signal:n?.signal});if(this.sessionLedger.completeRun(y.sessionId,H,{ownerId:i,expectedRevision:u.revision+1}),g(),H.success){yield Wc(c.requestId,"interaction.respond",H);return}yield Z(c.requestId,"interaction.respond","AUTH_LOGIN_FAILED",H.message);return}}}catch(H){g(),yield Z(c.requestId,"interaction.respond","AUTH_INTERACTION_FAILED",H instanceof Error?H.message:String(H))}}async*framesForInitialLoginResult(c,n,y,f){if(y.mode==="direct"){if(y.result.success){yield Wc(c,n,y.result);return}yield Z(c,n,"AUTH_LOGIN_FAILED",y.result.message);return}let i=await this.buildLoginInteractionSpec(y,f),u=await this.persistNewInteraction(c,i);yield u,yield Z(c,n,"INTERACTION_REQUIRED","auth.login requires additional interaction before it can continue.",Ry(u))}async*framesForContinuedLoginResult(c,n,y,f,i,u){if(n.mode==="direct"){if(this.sessionLedger.completeRun(y,n.result,{ownerId:f,expectedRevision:i}),this.sessionLedger.releaseSessionClaim(y,f),n.result.success){yield Wc(c,"interaction.respond",n.result);return}yield Z(c,"interaction.respond","AUTH_LOGIN_FAILED",n.result.message);return}let _=await this.buildLoginInteractionSpec(n,u),g=this.persistContinuedInteraction(c,_,y,f,i);yield g,yield Z(c,"interaction.respond","INTERACTION_REQUIRED","auth.login requires additional interaction before it can continue.",Ry(g))}async buildLoginInteractionSpec(c,n){switch(c.mode){case"picker":return{pending:{type:"login-provider"},interaction:{kind:"selection",prompt:"Choose a provider to sign in with.",options:Li(c.providers)}};case"anthropic_method_picker":case"openai_method_picker":case"google_method_picker":return{pending:{type:"login-method",provider:c.provider},interaction:{kind:"selection",prompt:`Choose how to sign in to ${c.provider}.`,options:Ni(c.options)}};case"copilot_source_picker":return{pending:{type:"copilot-source"},interaction:{kind:"selection",prompt:"Choose a GitHub Copilot credential source.",options:Ni(c.options)}};case"anthropic_key_input":case"openai_key_input":case"google_key_input":return{pending:{type:"credential-input",commandPrefix:c.provider,fieldKey:"apiKey"},interaction:{kind:"credential_input",prompt:`Enter the API key for ${c.provider}.`,provider:c.provider,fields:[this.secretField("apiKey",`${c.provider} API key`)]}};case"anthropic_setup_token":return{pending:{type:"credential-input",commandPrefix:"anthropic --setup-token",fieldKey:"setupToken"},interaction:{kind:"credential_input",prompt:"Enter the Anthropic setup token.",provider:"anthropic",fields:[this.secretField("setupToken","Anthropic setup token")]}};case"oauth":{let{codeVerifier:y,codeChallenge:f}=w_(),i=e_(c.provider),u=i.redirectUri.startsWith("http://127.0.0.1")?p_():y,_=q_(c.provider,f,u);return{pending:{type:"oauth-code",provider:c.provider,fieldKey:"authorizationCode",codeVerifier:y},interaction:{kind:"credential_input",prompt:`Sign in to ${c.provider} to continue.`,provider:c.provider,mode:"oauth_authorization_code",authorizeUrl:_,callbackMode:i.redirectUri.startsWith("http://127.0.0.1")?"local_callback":"manual_code",...i.redirectUri.startsWith("http://127.0.0.1")?{expectedState:u}:{},fields:[{key:"authorizationCode",label:"Authorization code"}]}}}case"copilot_device":{let y=await r_({signal:n?.signal});return{pending:{type:"copilot-device",profileLabel:c.profileLabel,deviceCode:y},interaction:{kind:"oauth_device",prompt:c.message??"Open the verification URL, enter the device code, then confirm to continue.",provider:"github-copilot",...c.profileLabel?{profileLabel:c.profileLabel}:{},verificationUri:y.verificationUri,userCode:y.userCode,expiresAt:new Date(y.expiresAt).toISOString(),intervalSeconds:Math.ceil(y.intervalMs/1000)}}}}}async persistNewInteraction(c,n){let y=`auth:${Ei()}`;if(!this.sessionLedger.loadSession(y))this.sessionLedger.createSession(await this.getActiveArionName(),"auth",y);let f=`auth:${c}`,i=this.sessionLedger.claimSessionForMutation(y,f,30000);try{return this.persistInteractionRecord(c,y,f,i.revision,n.pending,n.interaction)}finally{this.sessionLedger.releaseSessionClaim(y,f)}}persistContinuedInteraction(c,n,y,f,i){let u=this.persistInteractionRecord(c,y,f,i,n.pending,n.interaction);return this.sessionLedger.releaseSessionClaim(y,f),u}persistInteractionRecord(c,n,y,f,i,u){let _=`auth:${Ei()}`;return this.sessionLedger.recordPausedRun(n,`auth:${n}`,{kind:"auth"},{kind:"auth"},{interactionId:_,requestId:c,source:"auth",kind:u.kind,prompt:s_(u,i)},{ownerId:y,expectedRevision:f}),{kind:"interaction.required",requestId:c,interactionId:_,source:"auth",interaction:u}}secretField(c,n){return{key:c,label:n,secret:!0}}}var $i=()=>{};import{randomUUID as xi}from"node:crypto";import{isDeepStrictEqual as nH}from"node:util";import{resolveTrustedRuntimeErrorMessage as yH}from"@aria-cli/tools";function iH(){return{output:"",messages:[],toolCalls:[],usage:void 0,turnCount:0,thinking:[],nativeToolResults:[],pipelineTiming:void 0,guardrailEvents:[],handoffs:[],pausedState:null}}function uH(c){return{success:!c.pausedState,...c.output?{output:c.output}:{},...c.messages.length>0?{messages:c.messages}:{},...c.toolCalls.length>0?{toolCalls:c.toolCalls}:{},...c.usage!==void 0?{usage:c.usage}:{},...c.turnCount>0?{turnCount:c.turnCount}:{},...c.thinking.length>0?{thinking:c.thinking}:{},...c.nativeToolResults.length>0?{nativeToolResults:c.nativeToolResults}:{},...c.pipelineTiming!==void 0?{pipelineTiming:c.pipelineTiming}:{},...c.guardrailEvents.length>0?{guardrailEvents:c.guardrailEvents}:{},...c.handoffs.length>0?{handoffs:c.handoffs}:{},...c.pausedState?{state:c.pausedState}:{}}}function _H(c,n,y){return{code:c,message:n,...y?{details:y}:{}}}function S(c,n,y,f,i){return{kind:"result",requestId:c,op:n,ok:!1,error:_H(y,f,i)}}function ky(c,n,y){return{kind:"result",requestId:c,op:n,ok:!0,result:y}}function Ci(c){return{...c.arion?{arion:c.arion}:{},...c.cwd?{cwd:c.cwd}:{},...c.requestedModel?{requestedModel:c.requestedModel}:{},...c.preferredTier?{preferredTier:c.preferredTier}:{},...typeof c.budget==="number"?{budget:c.budget}:{},...typeof c.maxTurns==="number"?{maxTurns:c.maxTurns}:{},...c.autonomy?{autonomy:c.autonomy}:{},...c.allowedTools?{allowedTools:c.allowedTools}:{},...c.deniedTools?{deniedTools:c.deniedTools}:{},...typeof c.noMemory==="boolean"?{noMemory:c.noMemory}:{},...c.systemPrompt?{systemPrompt:c.systemPrompt}:{}}}function mi(c,n){if(c.arion||!n)return c;return{...c,arion:n}}function HH(c){let{sessionId:n,...y}=c;return y}function gH(c){let{sessionId:n,...y}=c;return y}function ti(c,n){if(c.requestedModel||!n)return c;return{...c,requestedModel:n}}function ic(c,n,y){if(!Array.isArray(y)||y.length===0)return;c.replaceConversationMessages(n,Ic(y))}function Ky(c,n,y){if((y.pendingUserQuestions?.length??0)>0){let f=`${n}:questionnaire:${xi()}`,i={kind:"questionnaire",questions:y.pendingUserQuestions??[]};return{record:{interactionId:f,requestId:c,source:"run",kind:i.kind,prompt:i},frame:{kind:"interaction.required",requestId:c,interactionId:f,source:"run",interaction:i}}}if((y.pendingToolCalls?.length??0)>0){let f=y.pendingToolCalls[0],i=`${n}:tool-approval:${xi()}`,u={kind:"tool_approval",toolName:f.name,toolInput:f.arguments,prompt:`Approval required for ${f.name}`};return{record:{interactionId:i,requestId:c,source:"run",kind:u.kind,prompt:u},frame:{kind:"interaction.required",requestId:c,interactionId:i,source:"run",interaction:u}}}return null}function hH(c,n,y,f,i){let u={state:c,...i??{}};if(n.kind==="tool_approval"){if(y.response.kind!=="confirm")throw Error(`Interaction ${n.interactionId} requires a confirm response`);return{...u,approvalMode:y.response.approved?"approve":"deny",...f>=0?{}:{}}}if(n.kind==="questionnaire"){if(y.response.kind!=="questionnaire")throw Error(`Interaction ${n.interactionId} requires a questionnaire response`);return{...u,askUserAnswers:y.response.answers}}throw Error(`Unsupported run interaction kind ${n.kind}`)}class z{ctx;constructor(c){this.ctx=c}renewSessionLease(c,n){let y=this.ctx.sessionLedger;if(typeof y.renewSessionClaim==="function")return y.renewSessionClaim(c,n,Ti);return y.claimSessionForMutation(c,n,Ti)}clearRunningSession(c,n,y){let f=this.ctx.sessionLedger;if(typeof f.clearActiveRun==="function")return f.clearActiveRun(c,{ownerId:n,expectedRevision:y});return f.completeRun(c,{},{ownerId:n,expectedRevision:y})}releaseClaimOnce(c,n){let y=!1;return()=>{if(y)return;y=!0,this.ctx.sessionLedger.releaseSessionClaim(c,n)}}static isAbortError(c){return c instanceof Error&&(c.name==="AbortError"||c.message==="The operation was aborted"||c.message==="This operation was aborted")}static createAbortReason(c,n){let y=Error(n);return y.name="AbortError",y.code=c,y}static getAbortCode(c,n){let y=c?.aborted?c.reason:n;if(y&&typeof y==="object"&&"code"in y&&typeof y.code==="string")return y.code;return c?.aborted||z.isAbortError(n)?"RUN_ABORTED":null}static getAbortMessage(c,n){let y=c?.aborted?c.reason:n;if(y instanceof Error&&y.message)return y.message;return"Run aborted before completion."}async*start(c,n,y){let f=n.sessionId?.trim()||c,i=`headless:${c}`,u=this.ctx.getSessionModel?.(),_=this.ctx.getSessionArion?.(),g=ti(mi(n,_),u),H=g.arion??this.ctx.getSessionArion?.()??"ARIA",h=g.requestedModel??g.preferredTier??"balanced",O=Ci(g);if(!this.ctx.sessionLedger.loadSession(f))this.ctx.sessionLedger.createSession(H,h,f);let K=this.ctx.sessionLedger.claimSessionForMutation(f,i,30000),k=this.releaseClaimOnce(f,i),N=iH(),A=new AbortController,G=null,a=null,F=null;if(y){let m=()=>{A.abort(z.createAbortReason("CONNECTION_CLOSED","Connection closed before request completed"))};if(y.aborted)m();else y.addEventListener("abort",m,{once:!0}),G=()=>y.removeEventListener("abort",m)}a=setInterval(()=>{try{K=this.renewSessionLease(f,i)}catch(m){A.abort(z.createAbortReason("SESSION_LEASE_LOST",m instanceof Error?m.message:String(m)))}},fH);try{for await(let d of this.ctx.localControl.streamRun(HH(g),A.signal)){if(A.signal.aborted){k();return}this.consumeRunEvent(N,d),yield{kind:"event",requestId:c,seq:N.turnCount+N.toolCalls.length+N.thinking.length,op:"run.start",event:d}}if(A.signal.aborted){ic(this.ctx.sessionLedger,f,N.messages),this.clearRunningSession(f,i,K.revision),k();let d=z.getAbortCode(A.signal);if(d!=="CONNECTION_CLOSED")yield S(c,"run.start",d??"RUN_ABORTED",z.getAbortMessage(A.signal),{sessionId:f,runId:`run:${f}`});return}if(N.pausedState){ic(this.ctx.sessionLedger,f,N.pausedState.messages);let d=Ky(c,f,N.pausedState);if(this.ctx.sessionLedger.recordPausedRun(f,`run:${f}`,N.pausedState,O,d?.record,{ownerId:i,expectedRevision:K.revision}),k(),d)yield d.frame;yield S(c,"run.start","INTERACTION_REQUIRED","Run paused and requires interaction before it can continue.",{sessionId:f,...d?{interactionId:d.frame.interactionId,source:d.frame.source,interaction:d.frame.interaction}:{}});return}let m=uH(N);F=()=>{let d=Array.isArray(m.messages)?m.messages.length:0;Kc(`orchestrator:persistTranscript(${d} msgs)`);let X=performance.now();ic(this.ctx.sessionLedger,f,m.messages);let D=performance.now();Kc("orchestrator:completeRun"),this.ctx.sessionLedger.completeRun(f,m,{ownerId:i,expectedRevision:K.revision});let cc=performance.now();gc(),k();let _c=cc-X;if(_c>100)try{process.stderr.write(`[Orchestrator][DIAG] deferredPersistence: total=${_c.toFixed(0)}ms transcript=${(D-X).toFixed(0)}ms completeRun=${(cc-D).toFixed(0)}ms msgs=${d}
330
+ `)}catch{}},yield ky(c,"run.start",m)}catch(m){try{if(A.signal.aborted||z.isAbortError(m))ic(this.ctx.sessionLedger,f,N.messages),this.clearRunningSession(f,i,K.revision);k()}catch{}if(A.signal.aborted||z.isAbortError(m)){let d=z.getAbortCode(A.signal,m);if(d!=="CONNECTION_CLOSED")yield S(c,"run.start",d??"RUN_ABORTED",z.getAbortMessage(A.signal,m),{sessionId:f,runId:`run:${f}`});return}yield S(c,"run.start","RUN_START_FAILED",m instanceof Error?m.message:String(m))}finally{if(a)clearInterval(a);if(G?.(),F){let m=F;F=null,setTimeout(()=>{try{Kc("orchestrator:deferredPersistence");let d=performance.now();m();let X=performance.now()-d;if(gc(),X>200)try{process.stderr.write(`[Orchestrator][DIAG] deferredPersistence blocked ${X.toFixed(0)}ms
331
+ `)}catch{}}catch{gc(),k()}},0)}}}async*resume(c,n,y){let f=n.sessionId?.trim(),i=`headless:${c}`,u=this.ctx.getSessionModel?.(),_=this.ctx.getSessionArion?.(),g=ti(mi(n,_),u),H=gH(g),h=Ci(H),O=!1,K=null;try{if(y?.aborted)return;if(f){if(!this.ctx.sessionLedger.loadSession(f))this.ctx.sessionLedger.createSession(g.arion??this.ctx.getSessionArion?.()??"ARIA",g.requestedModel??g.preferredTier??"balanced",f),O=!0;K=this.ctx.sessionLedger.claimSessionForMutation(f,i,30000)}let k=await this.ctx.localControl.resumeRun(H);if(y?.aborted){if(f&&K){if(this.ctx.sessionLedger.releaseSessionClaim(f,i),O)this.ctx.sessionLedger.deleteSession(f)}return}if(f&&K){if(k.state){let N=k.state;ic(this.ctx.sessionLedger,f,N.messages);let A=Ky(c,f,N);if(this.ctx.sessionLedger.recordPausedRun(f,`run:${f}`,N,h,A?.record,{ownerId:i,expectedRevision:K.revision}),this.ctx.sessionLedger.releaseSessionClaim(f,i),A)yield A.frame;yield S(c,"run.resume","INTERACTION_REQUIRED","Run paused and requires interaction before it can continue.",{sessionId:f,...A?{interactionId:A.frame.interactionId,source:A.frame.source,interaction:A.frame.interaction}:{}});return}ic(this.ctx.sessionLedger,f,k.messages),this.ctx.sessionLedger.completeRun(f,k,{ownerId:i,expectedRevision:K.revision}),this.ctx.sessionLedger.releaseSessionClaim(f,i)}yield ky(c,"run.resume",k)}catch(k){if(f&&K)try{if(this.ctx.sessionLedger.releaseSessionClaim(f,i),O)this.ctx.sessionLedger.deleteSession(f)}catch{}if(y?.aborted||z.isAbortError(k))return;yield S(c,"run.resume","RUN_RESUME_FAILED",k instanceof Error?k.message:String(k))}}async*abort(c,n,y){if(await(y??this.ctx.activeRunController)?.abort(n)){yield{kind:"result",requestId:c,op:"run.abort",ok:!0,result:{aborted:!0,...n.runId?{runId:n.runId}:{},...n.sessionId?{sessionId:n.sessionId}:{}}};return}yield S(c,"run.abort","RUN_NOT_FOUND","No active run matched the requested runId or sessionId.",{...n.runId?{runId:n.runId}:{},...n.sessionId?{sessionId:n.sessionId}:{}})}async*respond(c,n){let y=this.ctx.sessionLedger.getInteraction(c.interactionId);if(!y){yield S(c.requestId,"interaction.respond","INTERACTION_NOT_FOUND",`Unknown interaction ${c.interactionId}`);return}if(y.source!=="run"){yield S(c.requestId,"interaction.respond","UNSUPPORTED_INTERACTION_SOURCE",`Interaction source ${y.source} is not handled by the run orchestrator`);return}let f=this.ctx.sessionLedger.getSessionRuntimeState(y.sessionId);if(!f?.pausedState){yield S(c.requestId,"interaction.respond","SESSION_NOT_PAUSED",`Session ${y.sessionId} is not paused`);return}let i=`headless:${c.requestId}`;try{if(n?.aborted)return;let u=this.ctx.sessionLedger.claimSessionForMutation(y.sessionId,i,30000),_=c.response,g=u.revision;if(y.status==="pending")this.ctx.sessionLedger.recordInteractionResponse(y.sessionId,y.interactionId,_,{ownerId:i,expectedRevision:u.revision}),g+=1;else if(y.status==="answered"){if(!y.response){this.ctx.sessionLedger.releaseSessionClaim(y.sessionId,i),yield S(c.requestId,"interaction.respond","INVALID_INTERACTION_STATE",`Interaction ${y.interactionId} is missing its recorded response`);return}if(!nH(y.response,_)){this.ctx.sessionLedger.releaseSessionClaim(y.sessionId,i),yield S(c.requestId,"interaction.respond","INTERACTION_ALREADY_ANSWERED",`Interaction ${y.interactionId} was already answered with a different response`);return}_=y.response}else{this.ctx.sessionLedger.releaseSessionClaim(y.sessionId,i),yield S(c.requestId,"interaction.respond","INTERACTION_NOT_PENDING",`Interaction ${y.interactionId} is not resumable in state ${y.status}`);return}let H=hH(f.pausedState,y,{...c,response:_},f.revision,f.policySnapshot),h=await this.ctx.localControl.resumeRun(H);if(n?.aborted){this.ctx.sessionLedger.releaseSessionClaim(y.sessionId,i);return}if(h.state){let O=h.state;ic(this.ctx.sessionLedger,y.sessionId,O.messages);let K=Ky(c.requestId,y.sessionId,O);if(this.ctx.sessionLedger.recordPausedRun(y.sessionId,f.activeRunId??`run:${y.sessionId}`,O,f.policySnapshot??{},K?.record,{ownerId:i,expectedRevision:g}),this.ctx.sessionLedger.releaseSessionClaim(y.sessionId,i),K)yield K.frame;yield S(c.requestId,"interaction.respond","INTERACTION_REQUIRED","Run paused again and requires another interaction.",{sessionId:y.sessionId,...K?{interactionId:K.frame.interactionId,source:K.frame.source,interaction:K.frame.interaction}:{}});return}ic(this.ctx.sessionLedger,y.sessionId,h.messages),this.ctx.sessionLedger.completeRun(y.sessionId,h,{ownerId:i,expectedRevision:g}),this.ctx.sessionLedger.releaseSessionClaim(y.sessionId,i),yield ky(c.requestId,"interaction.respond",h)}catch(u){try{this.ctx.sessionLedger.releaseSessionClaim(y.sessionId,i)}catch{}if(n?.aborted||z.isAbortError(u))return;yield S(c.requestId,"interaction.respond","INTERACTION_RESPONSE_FAILED",u instanceof Error?u.message:String(u))}}consumeRunEvent(c,n){switch(n.type){case"text_delta":c.output+=n.content;break;case"tool_result":c.toolCalls.push({id:n.id,name:n.name,input:n.input,result:n.result,durationMs:n.durationMs});break;case"usage_update":c.usage=n.usage;break;case"turn_complete":c.turnCount=n.turnNumber;break;case"guardrail_rejected":c.guardrailEvents.push({stage:n.stage,message:n.message});break;case"pipeline_timing":c.pipelineTiming=n.report;break;case"messages_snapshot":c.messages=Array.isArray(n.messages)?n.messages:[];break;case"thinking_end":if(n.blocks)c.thinking.push(...n.blocks);break;case"native_tool_result":c.nativeToolResults.push(n.metadata);break;case"handoff_start":c.handoffs.push({type:"start",target:n.target,id:n.id});break;case"handoff_result":c.handoffs.push({type:"result",target:n.target,id:n.id,result:n.result});break;case"paused":c.pausedState=n.state;break;case"error":throw Error(yH(n.error.message,"diagnostic"in n.error?n.error.diagnostic:void 0)??n.error.message);default:break}}}var Ti=30000,fH=1e4;var Gi=x(()=>{xn();Xc()});import{EOL as ac,homedir as RH,platform as Ay}from"os";import{readFileSync as OH,writeFileSync as kH}from"fs";import{join as On}from"path";import{spawnSync as KH}from"node:child_process";function w9(){return j().shiftEnterKeyBindingInstalled===!0}function Ey(){let c=(process.env.TERM_PROGRAM??"").toLowerCase();return Ay()==="darwin"&&c==="iterm.app"||c==="vscode"}function AH(){if(KH("defaults",["write","com.googlecode.iterm2","GlobalKeyMap","-dict-add","0xd-0x20000-0x24",`<dict>
332
+ <key>Text</key>
333
+ <string>\\n</string>
334
+ <key>Action</key>
335
+ <integer>12</integer>
336
+ <key>Version</key>
337
+ <integer>1</integer>
338
+ <key>Keycode</key>
339
+ <integer>13</integer>
340
+ <key>Modifiers</key>
341
+ <integer>131072</integer>
342
+ </dict>`]).status!==0)throw Error("Failed to install iTerm2 Shift+Enter key binding");return`Installed iTerm2 Shift+Enter key binding${ac}See iTerm2 → Preferences → Keys${ac}`}function EH(){let c=On(RH(),Ay()==="win32"?On("AppData","Roaming","Code","User"):Ay()==="darwin"?On("Library","Application Support","Code","User"):On(".config","Code","User"),"keybindings.json"),n=[];try{let f=OH(c,"utf-8").trim();if(n=f?JSON.parse(f):[],!Array.isArray(n))n=[]}catch{n=[]}if(n.find((f)=>f.key==="shift+enter"&&f.command==="workbench.action.terminal.sendSequence"&&f.when==="terminalFocus"))return`Found existing VSCode terminal Shift+Enter key binding. Remove it to continue.${ac}See ${c}${ac}`;return n.push({key:"shift+enter",command:"workbench.action.terminal.sendSequence",args:{text:`\\\r
343
+ `},when:"terminalFocus"}),kH(c,JSON.stringify(n,null,2),"utf-8"),`Installed VSCode terminal Shift+Enter key binding${ac}See ${c}${ac}`}function Fi(){if(!Ey())throw Error("terminal-setup is supported only in iTerm2 (macOS) and VSCode terminal");let n=(process.env.TERM_PROGRAM??"").toLowerCase()==="vscode"?EH():AH(),y=j();return y.shiftEnterKeyBindingInstalled=!0,B(y),n}var Wi=x(()=>{o()});var dc;var Ly=x(()=>{dc={name:"dark",displayName:"Dark",colors:{primary:"#5f97cd",secondary:"#888888",text:"#ffffff",textMuted:"#999999",textInverse:"#000000",success:"#4eba65",error:"#ff6b80",warning:"#ffc107",info:"#00d9ff",diffAdded:"#4eba65",diffAddedDimmed:"#2d5a35",diffRemoved:"#ff6b80",diffRemovedDimmed:"#8a3a45",arion:{cyan:"#00d9ff",magenta:"#bd00ff",yellow:"#ffc107",green:"#4eba65",blue:"#5f97cd",red:"#ff6b80",white:"#ffffff"}},symbols:{prompt:"❯",divider:"─",success:"✓",error:"✗",warning:"⚠",info:"ℹ",pending:"○",bullet:"•",arrow:"→"},banner:{gradient:{start:"#00D9FF",middle:"#BD00FF",end:"#6366F1"},animationDuration:1600}}});var Sc;var Ny=x(()=>{Sc={name:"light",displayName:"Light",colors:{primary:"#5f97cd",secondary:"#999999",text:"#000000",textMuted:"#666666",textInverse:"#ffffff",success:"#2c7a39",error:"#ab2b3f",warning:"#b8860b",info:"#0077aa",diffAdded:"#2c7a39",diffAddedDimmed:"#a8d5b1",diffRemoved:"#ab2b3f",diffRemovedDimmed:"#e8b4bc",arion:{cyan:"#0077aa",magenta:"#aa0077",yellow:"#b8860b",green:"#2c7a39",blue:"#5f97cd",red:"#ab2b3f",white:"#333333"}},symbols:{prompt:"❯",divider:"─",success:"✓",error:"✗",warning:"⚠",info:"ℹ",pending:"○",bullet:"•",arrow:"→"},banner:{gradient:{start:"#0077aa",middle:"#aa0077",end:"#5f5fd7"},animationDuration:1600}}});var ai;var di=x(()=>{Ly();ai={...dc,name:"dark-accessible",displayName:"Dark (Accessible)",colors:{...dc.colors,success:"#006699",error:"#cc0000",warning:"#ffaa00",diffAdded:"#006699",diffAddedDimmed:"#003d5c",diffRemoved:"#cc0000",diffRemovedDimmed:"#660000"}}});var Ji;var Ui=x(()=>{Ny();Ji={...Sc,name:"light-accessible",displayName:"Light (Accessible)",colors:{...Sc.colors,success:"#005588",error:"#aa0000",warning:"#996600",diffAdded:"#005588",diffAddedDimmed:"#b3d4e8",diffRemoved:"#aa0000",diffRemovedDimmed:"#e8b3b3"}}});var Xi;var Zi=x(()=>{Xi={name:"claude-dark",displayName:"Claude Dark",colors:{primary:"#5f97cd",secondary:"#888888",text:"#ffffff",textMuted:"#999999",textInverse:"#000000",success:"#4eba65",error:"#ff6b80",warning:"#ffc107",info:"#b1b9f9",diffAdded:"#225c2b",diffAddedDimmed:"#47584a",diffRemoved:"#7a2936",diffRemovedDimmed:"#69484d",arion:{cyan:"#b1b9f9",magenta:"#fd5db1",yellow:"#ffc107",green:"#4eba65",blue:"#5f97cd",red:"#ff6b80",white:"#ffffff"}},symbols:{prompt:"❯",divider:"─",success:"✓",error:"✗",warning:"⚠",info:"ℹ",pending:"○",bullet:"•",arrow:"→"},banner:{gradient:{start:"#fd5db1",middle:"#5f97cd",end:"#b1b9f9"},animationDuration:1600}}});var Qi;var ji=x(()=>{Qi={name:"claude-light",displayName:"Claude Light",colors:{primary:"#5f97cd",secondary:"#999999",text:"#000000",textMuted:"#666666",textInverse:"#ffffff",success:"#2c7a39",error:"#ab2b3f",warning:"#966c1e",info:"#5769f7",diffAdded:"#69db7c",diffAddedDimmed:"#c7e1cb",diffRemoved:"#ffa8b4",diffRemovedDimmed:"#fdd2d8",arion:{cyan:"#5769f7",magenta:"#ff0087",yellow:"#966c1e",green:"#2c7a39",blue:"#5f97cd",red:"#ab2b3f",white:"#333333"}},symbols:{prompt:"❯",divider:"─",success:"✓",error:"✗",warning:"⚠",info:"ℹ",pending:"○",bullet:"•",arrow:"→"},banner:{gradient:{start:"#ff0087",middle:"#5f97cd",end:"#5769f7"},animationDuration:1600}}});var Yi;var Di=x(()=>{Yi={name:"claude-dark-daltonized",displayName:"Claude Dark (Daltonized)",colors:{primary:"#5f97cd",secondary:"#888888",text:"#ffffff",textMuted:"#999999",textInverse:"#000000",success:"#3399ff",error:"#ff6666",warning:"#ffcc00",info:"#99ccff",diffAdded:"#004466",diffAddedDimmed:"#3e515b",diffRemoved:"#660000",diffRemovedDimmed:"#3e2c2c",arion:{cyan:"#99ccff",magenta:"#3399ff",yellow:"#ffcc00",green:"#3399ff",blue:"#5f97cd",red:"#ff6666",white:"#ffffff"}},symbols:{prompt:"❯",divider:"─",success:"✓",error:"✗",warning:"⚠",info:"ℹ",pending:"○",bullet:"•",arrow:"→"},banner:{gradient:{start:"#3399ff",middle:"#5f97cd",end:"#99ccff"},animationDuration:1600}}});var Vi;var Mi=x(()=>{Vi={name:"claude-light-daltonized",displayName:"Claude Light (Daltonized)",colors:{primary:"#5f97cd",secondary:"#999999",text:"#000000",textMuted:"#666666",textInverse:"#ffffff",success:"#006699",error:"#cc0000",warning:"#ff9900",info:"#3366ff",diffAdded:"#99ccff",diffAddedDimmed:"#d1e7fd",diffRemoved:"#ffcccc",diffRemovedDimmed:"#ffe9e9",arion:{cyan:"#3366ff",magenta:"#0066cc",yellow:"#ff9900",green:"#006699",blue:"#5f97cd",red:"#cc0000",white:"#333333"}},symbols:{prompt:"❯",divider:"─",success:"✓",error:"✗",warning:"⚠",info:"ℹ",pending:"○",bullet:"•",arrow:"→"},banner:{gradient:{start:"#0066cc",middle:"#5f97cd",end:"#3366cc"},animationDuration:1600}}});function Pi(c){if(kn[c])Bi=kn[c]}function Si(){return Bi}function bi(){return Object.keys(kn)}function AR(c){return kn[c]}var kn,Bi;var zi=x(()=>{Ly();Ny();di();Ui();Zi();ji();Di();Mi();kn={dark:dc,light:Sc,"dark-accessible":ai,"light-accessible":Ji,"claude-dark":Xi,"claude-light":Qi,"claude-dark-daltonized":Yi,"claude-light-daltonized":Vi},Bi=dc});var ei={};e(ei,{createHeadlessKernelRuntime:()=>Ty,createHeadlessKernelHandlers:()=>pi,HeadlessKernel:()=>xy});import li,{join as An}from"node:path";import{appendFileSync as LH,mkdirSync as NH}from"node:fs";import{ArionManager as $H,ArionStorage as xH,MemoriaPool as TH}from"@aria-cli/aria";import{selectRunnableModelVariant as Oc}from"@aria-cli/models";import{HEADLESS_OPERATION_SCHEMAS as qi}from"@aria-cli/tools";async function CH(c){let n=[];for(let y of c.sessionLedgers??[])try{y?.close()}catch(f){n.push(f)}for(let y of c.attachedClients??[])try{await y?.release()}catch(f){n.push(f)}try{await c.daemon?.releaseAll?.()}catch(y){n.push(y)}try{await c.managerPool?.closeAll()}catch(y){n.push(y)}try{await c.cli?.pool.closeAll()}catch(y){n.push(y)}if(n.length===1)throw n[0];if(n.length>1)throw AggregateError(n,"Failed to release headless kernel bootstrap resources")}function Rc(c){if(!(c instanceof Error))return!1;let n=c.message;if(n.includes("attached-local-client-only"))return!0;if(n.includes("ECONNRESET"))return!0;if(n.includes("ECONNREFUSED"))return!0;if(n.includes("EPIPE"))return!0;if(n.includes("connect ENOENT"))return!0;if(n.includes("socket hang up"))return!0;if(n.includes("closed before"))return!0;if(n.includes("has been released"))return!0;if(n.includes("no daemon found"))return!0;return!1}function $y(c){if(!Rc(c))return c instanceof Error?c:Error(String(c));let n=c,y=n.message,f=n.reason??"",i=y.includes("ECONNRESET")||y.includes("ECONNREFUSED")||y.includes("EPIPE")||y.includes("connect ENOENT")||y.includes("socket hang up")||y.includes("closed before"),u=i?"Lost connection to the ARIA daemon. It may have restarted. Run `aria` again to reconnect.":f==="invalid_or_expired_lease"||f===""?"The ARIA daemon restarted and your session could not be restored. Run `aria` again to start a new session.":f==="missing_client_id"||f==="missing_proof"?"Client credentials were not sent. This is likely a bug — please report it.":f==="no_authority"?"The daemon has no attached-client authority configured. It may still be starting up.":`Session authentication failed (${f}). Run \`aria\` again to start a new session.`;return Object.assign(Error(`Session expired: ${u} (${n.message})`),{code:"ARIA_SESSION_EXPIRED",reason:i?"connection_lost":f,cause:n},n.diagnostic!==void 0?{diagnostic:n.diagnostic}:{})}function v(c,n){try{if(!Kn)Kn=An(c,"logs"),NH(Kn,{recursive:!0});let y=JSON.stringify({ts:new Date().toISOString(),pid:process.pid,...n});LH(An(Kn,"reattach.jsonl"),y+`
344
+ `)}catch{}}function vi(c){if(c<=0)return Promise.resolve();return new Promise((n)=>{setTimeout(n,c).unref?.()})}function wi(c,n,y){let f=null,i=()=>{if(!f)f=c();return f},u=()=>{f=null,n?.()};async function _(H){try{let h=await i();return await H(h)}catch(h){if(!Rc(h))throw h;let O=h instanceof Error?h.message:String(h),K=h.reason;if(y)v(y,{event:"reattach_start",trigger:O,reason:K,maxAttempts:p.length});for(let k=0;k<p.length;k++){await vi(p[k]??0),u();try{let N=await i();if(y)v(y,{event:"reattach_success",attempt:k,trigger:O});return await H(N)}catch(N){let A=N instanceof Error?N.message:String(N);if(y)v(y,{event:"reattach_retry_failed",attempt:k,error:A,willRetry:Rc(N)&&k<p.length-1});if(!Rc(N)||k===p.length-1){if(y)v(y,{event:"reattach_exhausted",attempts:k+1,finalError:A});throw $y(N)}}}throw $y(h)}}async function*g(H){let h;try{let k=await i();yield*H(k);return}catch(k){if(!Rc(k))throw k;h=k instanceof Error?k:Error(String(k))}let O=h?.message??"unknown",K=h?.reason;if(y)v(y,{event:"reattach_stream_start",trigger:O,reason:K,maxAttempts:p.length});for(let k=0;k<p.length;k++){await vi(p[k]??0),u();try{let N=await i();if(y)v(y,{event:"reattach_stream_success",attempt:k,trigger:O});yield*H(N);return}catch(N){let A=N instanceof Error?N.message:String(N);if(y)v(y,{event:"reattach_stream_retry_failed",attempt:k,error:A,willRetry:Rc(N)&&k<p.length-1});if(!Rc(N)||k===p.length-1){if(y)v(y,{event:"reattach_stream_exhausted",attempts:k+1,finalError:A});throw $y(N)}}}}return{submitRun(H){return _((h)=>h.submitRun(H))},resumeRun(H){return _((h)=>h.resumeRun(H))},async*streamRun(H,h){yield*g((O)=>O.streamRun(H,h))},async*subscribeRuntimeEvents(H){yield*g((h)=>h.subscribeRuntimeEvents(H))},sendBestEffort(H){return _((h)=>h.sendBestEffort(H))},sendDurable(H){return _((h)=>h.sendDurable(H))},listInbox(H){return _((h)=>h.listInbox(H))},async*subscribeInbox(H){yield*g((h)=>h.subscribeInbox(H))},listPeers(){return _((H)=>H.listPeers())},listNearbyPeers(){return _((H)=>H.listNearbyPeers())},async*subscribePeers(){yield*g((H)=>H.subscribePeers())},getRuntimeStatus(){return _((H)=>H.getRuntimeStatus())},getRuntimeBootstrap(){return _((H)=>H.getRuntimeBootstrap())},listPendingPairRequests(){return _((H)=>H.listPendingPairRequests())},respondToPairRequest(H){return _((h)=>h.respondToPairRequest(H))},createInvite(H){return _((h)=>h.createInvite(H))},listPendingInvites(){return _((H)=>H.listPendingInvites())},acceptInviteToken(H){return _((h)=>h.acceptInviteToken(H))},cancelInvite(H){return _((h)=>h.cancelInvite(H))},invitePeer(H){return _((h)=>h.invitePeer(H))},acceptInvite(H){return _((h)=>h.acceptInvite(H))},directPair(H){return _((h)=>h.directPair(H))},revokePeer(H){return _((h)=>h.revokePeer(H))},repairPeer(H){return _((h)=>h.repairPeer(H))},listAttachedClients(){return _((H)=>H.listAttachedClients())},listDirectClientInbox(H){return _((h)=>h.listDirectClientInbox(H))},async*subscribeDirectClientInbox(H){yield*g((h)=>h.subscribeDirectClientInbox(H))}}}function tH(c,n,y){return new Promise((f,i)=>{let u=setTimeout(()=>{i(Error(y))},n);u.unref?.(),c.then((_)=>{clearTimeout(u),f(_)},(_)=>{clearTimeout(u),i(_)})})}function Ii(c,n,y,f,i){return{kind:"result",requestId:c,op:n,ok:!1,error:{code:y,message:f,...i?{details:i}:{}}}}function GH(c,n,y){let f=c.trim().toLowerCase();if(!f)return;let i=[...n].sort((k,N)=>k.shortName.localeCompare(N.shortName)),u=i.find((k)=>{return`${k.provider}/${k.shortName}`.toLowerCase()===f});if(u)return u;let _=i.find((k)=>k.shortName.toLowerCase()===f);if(_)return Oc(_,y);let g=i.find((k)=>k.shortName.toLowerCase().startsWith(f));if(g)return Oc(g,y);let H=i.find((k)=>{return`${k.provider}/${k.shortName}`.toLowerCase().startsWith(f)});if(H)return H;let h=i.find((k)=>k.tier.toLowerCase()===f);if(h)return Oc(h,y);let O=i.find((k)=>k.displayName.toLowerCase().includes(f));if(O)return Oc(O,y);let K=i.find((k)=>k.provider.toLowerCase().includes(f));return K?Oc(K,y):void 0}function pi(c){let n=new z({localControl:c.localControl,sessionLedger:c.sessionLedger,activeRunController:c.activeRunController,getSessionModel:c.getSessionModel,getSessionArion:c.getSessionArion}),y=new Oy(c.auth,c.sessionLedger,async()=>await c.config?.getActiveArion?.()??c.cli?.config?.activeArion??"ARIA"),f=gy(n),i=sn(c),u=Sn(c),_=iy(c),g=zn(c,y),H=rn(c),h=rf(c),O=fi(c),K=ui(c),k=_y(c),N=pn(c),A=yy(c),G=_n(c);return{"run.start":f["run.start"],"run.resume":f["run.resume"],"run.abort":f["run.abort"],"interaction.respond":async function*(a,F,m){let d=F&&typeof F==="object"&&"kind"in F?F:{kind:"interaction.respond",requestId:a,...F};if(c.sessionLedger.getInteraction(d.interactionId)?.source==="auth"){yield*y.respond(d,m);return}yield*f["interaction.respond"](a,d,m)},"session.list":G["session.list"],"session.read":G["session.read"],"session.load":G["session.load"],"session.fork":G["session.fork"],"memory.remember":i["memory.remember"],"memory.recall":i["memory.recall"],"memory.list":i["memory.list"],"memory.forget":i["memory.forget"],"memory.recall_knowledge":i["memory.recall_knowledge"],"arion.list":u["arion.list"],"arion.hatch":u["arion.hatch"],"arion.become":u["arion.become"],"arion.rest":u["arion.rest"],"arion.wake":u["arion.wake"],"arion.create":u["arion.create"],"model.list":_["model.list"],"model.set":_["model.set"],"model.refresh":_["model.refresh"],"auth.status":g["auth.status"],"auth.login":g["auth.login"],"auth.logout":g["auth.logout"],"peer.list":k["peer.list"],"peer.list_nearby":k["peer.list_nearby"],"peer.pending.list":k["peer.pending.list"],"peer.pending.respond":k["peer.pending.respond"],"peer.invite":k["peer.invite"],"peer.connect":k["peer.connect"],"peer.accept_invite":k["peer.accept_invite"],"peer.direct_pair":k["peer.direct_pair"],"peer.repair":k["peer.repair"],"peer.revoke":k["peer.revoke"],"client.list":N["client.list"],"client.inbox.list":N["client.inbox.list"],"message.send":A["message.send"],"message.inbox.list":A["message.inbox.list"],"config.theme.get":H["config.theme.get"],"config.theme.set":H["config.theme.set"],"config.autonomy.get":H["config.autonomy.get"],"config.autonomy.set":H["config.autonomy.set"],"system.restart":K["system.restart"],"system.terminal_setup":K["system.terminal_setup"],"daemon.start":h["daemon.start"],"daemon.status":h["daemon.status"],"daemon.stop":h["daemon.stop"],"hook.extract":O["hook.extract"],"hook.reflect":O["hook.reflect"],"hook.consolidate":O["hook.consolidate"],"hook.ingest":O["hook.ingest"],"hook.harvest":O["hook.harvest"]}}class xy{ctx;handlers;constructor(c,n){this.ctx=c;if(!n){let y=!1,f=c.localControl;c.localControl=wi(async()=>{if(!y)return f;let{createResilientAttachedClient:i}=await Promise.resolve().then(() => (cn(),Qn)),u=await import("@aria-cli/server"),_=u.resolveRuntimeRootDirectory(),g=u.findRuntimeOwnerRecordByAriaHome(_,c.cli.ariaDir);if(!g?.runtimeSocket)throw Error("Cannot reconnect: no daemon found after restart");return(await i({runtimeSocket:g.runtimeSocket,clientKind:"local-api",logDir:An(c.cli.ariaDir,"logs")})).api},()=>{y=!0},c.cli.ariaDir)}this.handlers=n??pi(c)}async*dispatch(c,n={}){if(c.kind==="interaction.respond"){let i=qi["interaction.respond"].input.safeParse({interactionId:c.interactionId,response:c.response});if(!i.success){yield Ii(c.requestId,"interaction.respond","INVALID_INPUT",i.error.issues.map((u)=>`${u.path.join(".")||"<root>"} ${u.message}`).join("; "));return}yield*this.handlers["interaction.respond"](c.requestId,c,n);return}let y=c,f=qi[y.op].input.safeParse(y.input);if(!f.success){yield Ii(y.requestId,y.op,"INVALID_INPUT",f.error.issues.map((i)=>`${i.path.join(".")||"<root>"} ${i.message}`).join("; "));return}yield*this.handlers[y.op](y.requestId,f.data,n)}getContext(){return this.ctx}}async function Ty(c){let n=null,y=null,f=null,i=new Map,u=new Map,_=new Set,g=!1,H=async()=>{if(g)return;g=!0;let h=await Promise.allSettled([...u.values(),..._.values()]);await CH({sessionLedgers:[...i.values()],attachedClients:h.flatMap((O)=>O.status==="fulfilled"?[O.value]:[]),daemon:f,managerPool:y,cli:n})};try{n=await yc({cwd:c?.cwd,skipDiscoveryRefresh:!0});let h=n,O=c?.arionName??h.config.activeArion??"ARIA",K,k=()=>O,N=()=>K,A=(E)=>{O=E;let R=j();R.activeArion=E,B(R)},G=(E)=>{let R=i.get(E);if(!R)R=new Tc(Tc.resolvePerArionPath(h.ariaDir,E)),i.set(E,R);return R},a=async()=>{try{let{resolveRuntimeRootDirectory:E,findRuntimeOwnerRecordByAriaHome:R}=await import("@aria-cli/server"),{createResilientAttachedClient:T}=await Promise.resolve().then(() => (nn(),Nf)),Q=E(),J=R(Q,h.ariaDir);if(!J?.runtimeSocket)return null;let M=await T({runtimeSocket:J.runtimeSocket,clientKind:"local-api",logDir:An(h.ariaDir,"logs")});return{nodeId:J.nodeId,runtimeId:J.runtimeId??"daemon",port:0,ownership:"reattached",control:M.api,attachedClientId:M.getClientId(),attachedClientAuthToken:M.getClientAuthToken(),release:()=>M.release()}}catch(E){return v(h.ariaDir,{event:"daemon_socket_connect_failed",error:E instanceof Error?E.message:String(E)}),null}},F=async(E)=>{let R=u.get(E);if(!R)R=(async()=>{let T=await a();if(T){if(v(h.ariaDir,{event:"ensureAttachedClient_resolved",path:"daemon_socket",arionName:E}),g)await T.release().catch(()=>{});return T}v(h.ariaDir,{event:"ensureAttachedClient_fallback",path:"attachLocalControlClient",arionName:E});let Q;try{Q=await Yc({ariaHome:h.ariaDir,arionName:E,clientKind:"local-api",runtimeLifecycle:"scoped",memoriaFactory:h.memoriaFactory,router:h.router,authResolver:h.authResolver,runSessionConfig:h.config,mcpServers:h.projectConfig.mcp?.servers,silent:!0})}catch(J){if(J instanceof Error&&J.message.includes("already in use"))throw Error("A daemon is running but could not be reached. Ensure ARIA_HOME matches the daemon's home directory, or stop the daemon with: aria-stop");throw J}if(g)await Q.release().catch(()=>{});return Q})(),u.set(E,R);return tH(R,mH,`Timed out attaching local control for ${E}`).catch((T)=>{throw _.add(R),R.finally(()=>{_.delete(R)}),u.delete(E),T})},m=wi(async()=>{return(await F(k())).control},()=>{let E=k(),R=u.get(E);if(R)_.add(R),R.then((T)=>T.release().catch(()=>{})).finally(()=>_.delete(R)),u.delete(E)},h.ariaDir),d=new Proxy({},{get(E,R){let T=G(k()),Q=T[R];return typeof Q==="function"?Q.bind(T):Q}});G(O),y=new TH(h.ariaDir);let X=new $H(new xH(h.ariaDir),y.toFactory());X.setRouter(h.router),await X.initialize();let D=h.availableModels,cc=async()=>{let E=k();return(await X.get(E))?.memoriaPath??li.join("arions",E,"memory.db")},_c=async()=>{return await h.pool.get(await cc())},zc=new Proxy({},{get(E,R){return async(...T)=>{let Q=await _c(),J=Q[R];if(typeof J!=="function")return J;return J.apply(Q,T)}}});f=Vc({cli:h,cwd:c?.cwd??process.cwd(),arionName:k(),getArionName:k,localControl:m});let Ln=Ki({cli:h,arionName:k(),getArionName:k,resolveMemoriaPath:cc}),Jc={cli:h,localControl:m,sessionLedger:d,arionManager:{list:()=>X.list(),hatch:(E)=>X.hatch(E),get:(E)=>X.get(E),wake:(E)=>X.wake(E),rest:(E,R)=>X.rest(E,R)},memoria:zc,config:{async getTheme(){return j().theme??Si().name},async setTheme(E){if(!bi().includes(E))throw Error(`Unknown theme: ${E}`);Pi(E);let T=j();return T.theme=E,B(T),{theme:E}},async getAutonomy(){return j().autonomy??"balanced"},async setAutonomy(E){if(!["minimal","balanced","high","full"].includes(E))throw Error(`Invalid autonomy level: ${E}`);let R=j();return R.autonomy=E,B(R),{autonomy:E}},async getActiveArion(){return k()},async setActiveArion(E){A(E)}},auth:{async status(){return{providers:lf()}},async login(E){return qf(If(E))},async logout(E){return vf(wf(E))}},modelDiscovery:{async listAvailable(){return D},async refresh(E){return D=await h.refreshAvailableModels(E),D},async getCurrentModel(){if(K)return K;let E=await X.get(k());if(E?.preferredModel)return K=E.preferredModel,K;let R=j().preferredTier??h.config.preferredTier;if(!R)return D[0]?.shortName;return K=Oc(D.find((T)=>T.tier===R)??D[0],h.credentialHints)?.shortName??D[0]?.shortName,K},async setCurrentModel(E){let R=GH(E,D,h.credentialHints);if(!R)throw Error(`Unknown model: ${E}`);K=R.shortName;let T=k();if(await X.get(T))await X.setPreferredModel(T,R.shortName);let J=j();return J.preferredTier=R.tier,B(J),{currentModel:R.shortName,tier:R.tier}},async getSessionModel(){return K}},daemon:f,hook:Ln,system:{async restart(E){return{accepted:!0,reason:typeof E.reason==="string"&&E.reason.trim().length>0?E.reason.trim():"Restart requested"}},async terminalSetup(){if(!Ey())return{supported:!1,message:"terminal-setup is supported only in iTerm2 (macOS) and VSCode terminal."};return{supported:!0,output:Fi().trim()}}},getSessionModel:N,getSessionArion:k},Hc=await X.get(k());if(Hc?.preferredModel)K=Hc.preferredModel;else{let E=j().preferredTier??h.config.preferredTier;K=Oc(D.find((R)=>R.tier===E)??D[0],h.credentialHints)?.shortName??D[0]?.shortName}return{kernel:new xy(Jc),ctx:Jc,async release(){await H()}}}catch(h){try{await H()}catch(O){throw AggregateError([h,O],"Headless kernel bootstrap failed and resource cleanup also failed")}throw h}}var p,Kn,mH=1e4;var Cy=x(()=>{ec();o();Fn();nn();bn();ln();pf();en();on();of();yi();ii();cy();fy();uy();Hy();Hn();_i();yn();Ai();$i();Gi();Wi();zi();p=[0,250,500,1000,2000,3000]});var u0={};e(u0,{runtimeCutoverResetCommand:()=>i0,runRuntimeCutoverReset:()=>f0});import*as U from"node:fs";import*as W from"node:path";import{resolveRuntimeRootDirectory as c0,runtimeSocketsDirectory as DH}from"@aria-cli/server";import n0 from"better-sqlite3";function VH(c){let n=W.resolve(c);try{return U.realpathSync.native(n)}catch{return n}}function y0(){return W.join(process.env.HOME??"/tmp",".aria")}function En(c){return W.join(c,"node","node-state.db")}function MH(c){return`${En(c)}.lock`}function BH(c){return W.join(c,"node","runtime-cutover-last-report.json")}function Fy(c){if(!Number.isFinite(c)||c<=0)return!1;try{return process.kill(c,0),!0}catch{return!1}}function Y(c,n){if(!U.existsSync(c)){n.skippedPaths.push(c);return}U.rmSync(c,{recursive:!0,force:!0}),n.removedPaths.push(c)}function bc(c,n){for(let y of[c,`${c}-wal`,`${c}-shm`])Y(y,n)}function PH(c){let n=W.join(c,"arions");if(!U.existsSync(n))return[];return U.readdirSync(n,{withFileTypes:!0}).filter((y)=>y.isDirectory()).map((y)=>W.join(n,y.name))}function SH(c){let n=W.join(c,"owners");if(!U.existsSync(n))return[];let y=new Set;for(let f of U.readdirSync(n)){if(!f.endsWith(".json"))continue;try{let i=U.readFileSync(W.join(n,f),"utf8"),u=JSON.parse(i);if(typeof u.runtimePid==="number"&&Fy(u.runtimePid))y.add(u.runtimePid)}catch{}}return[...y]}function bH(c,n,y){if(!U.existsSync(c))return[];let f=new Set;for(let i of U.readdirSync(c)){if(!n(i))continue;try{let u=JSON.parse(U.readFileSync(W.join(c,i),"utf8")),_=y(u);if(_!==null&&Fy(_))f.add(_)}catch{}}return[...f]}function zH(c){return bH(c,(n)=>n.startsWith("presence-")&&n.endsWith(".json"),(n)=>{if(typeof n==="object"&&n!==null&&"pid"in n&&typeof n.pid==="number")return n.pid;return null})}function lH(c){let n=En(c);if(!U.existsSync(n))return[];let y=new n0(n,{readonly:!0});try{return y.prepare(`SELECT runtime_pid
345
+ FROM runtime_owner_records`).all().map((i)=>i.runtime_pid).filter((i)=>Number.isFinite(i)&&Fy(i))}catch{return[]}finally{y.close()}}function qH(c,n){let y=y0(),f=zH(y),i=SH(n),u=lH(c),_=[...new Set([...f,...i,...u])];if(_.length>0)throw Error(`[runtime-cutover-reset] refuse live runtime mutation while runtime is live (pids: ${_.join(", ")}). Stop all ARIA daemons/clients first.`)}function vH(c,n){let y=En(c);if(!U.existsSync(y))return{runtimeOwnerRecords:0,runtimeEvents:0};let f=new n0(y);try{let i=f.prepare("DELETE FROM runtime_owner_records").run().changes,u=f.prepare("DELETE FROM runtime_events").run().changes;return n.preservedPaths.push(y),{runtimeOwnerRecords:i,runtimeEvents:u}}finally{f.close()}}function IH(c,n){let y=y0();Y(W.join(y,"mesh-events.db"),n),Y(W.join(y,"mesh-events.db-wal"),n),Y(W.join(y,"mesh-events.db-shm"),n),Y(W.join(y,"event_queue"),n),Y(W.join(y,"event_queue.db"),n),Y(W.join(y,"event_queue.db-wal"),n),Y(W.join(y,"event_queue.db-shm"),n),Y(W.join(c0(),"host-supervisor.sock"),n);let f=[...new Set([y,c])];for(let i of f){if(!U.existsSync(i))continue;for(let u of U.readdirSync(i)){let _=u.startsWith("daemon-info-")&&(u.endsWith(".json")||u.endsWith(".json.lock")),g=i===y&&u.startsWith("presence-")&&u.endsWith(".json");if(_||g)Y(W.join(i,u),n)}}}function wH(c,n,y,f){bc(W.join(c,"network","state.db"),f),Y(W.join(c,"network","trusted-cas"),f),Y(W.join(c,"server-session-history.json"),f),Y(W.join(c,"sessions"),f),bc(W.join(c,"history.db"),f);for(let i of PH(c))bc(W.join(i,"memory.db"),f),bc(W.join(i,"history.db"),f),Y(W.join(i,"daemon"),f),Y(W.join(i,"logs"),f);if(Y(W.join(n,"owners"),f),Y(DH(n),f),y)return bc(En(c),f),Y(MH(c),f),Y(W.join(c,"network","config.json"),f),Y(W.join(c,"network","tls"),f),{runtimeOwnerRecords:0,runtimeEvents:0};return f.preservedPaths.push(W.join(c,"network","config.json")),f.preservedPaths.push(W.join(c,"network","tls")),vH(c,f)}function pH(c){return U.mkdirSync(W.dirname(c.reportPath),{recursive:!0}),U.writeFileSync(c.reportPath,`${JSON.stringify(c,null,2)}
346
+ `,"utf8"),c}function eH(c){console.log("[runtime-cutover-reset] completed"),console.log(` ariaHome: ${c.ariaHome}`),console.log(` fullReset: ${c.fullReset?"yes":"no"}`),console.log(` preserveLocalNodeIdentity: ${c.preserveLocalNodeIdentity?"yes":"no"}`),console.log(` deleted: ${c.deletedPaths.length}`),console.log(` preserved: ${c.preservedPaths.length}`),console.log(` cleared runtime owner records: ${c.cleared.runtimeOwnerRecords}`),console.log(` cleared runtime journal events: ${c.cleared.runtimeEvents}`),console.log(` report: ${c.reportPath}`)}async function f0(c={}){let n=VH(c.ariaHome??l()),y=c0(),f=c.fullNodeReset??c.fullReset??!1,i=c.preserveLocalNodeIdentity??!f;qH(n,y);let u={ariaHome:n,runtimeRoot:y,generatedAt:new Date().toISOString(),fullReset:f,fullNodeReset:f,preserveLocalNodeIdentity:i,reportPath:BH(n),removedPaths:[],deletedPaths:[],preservedPaths:[],skippedPaths:[],cleared:{runtimeOwnerRecords:0,runtimeEvents:0}};return IH(n,u),u.cleared=wH(n,y,f,u),u.deletedPaths=[...u.removedPaths],pH(u)}async function i0(c={}){let n=await f0(c);if(c.json){console.log(JSON.stringify(n,null,2));return}eH(n)}var Wy=x(()=>{o()});import{Command as fg}from"commander";o();import{Command as ju}from"commander";import{ArionManager as Yu,ArionStorage as Du,MemoriaPool as Vu}from"@aria-cli/aria";async function un(){let c=l(),n=new Du(c),f=new Vu(c).toFactory(),i=new Yu(n,f);return await i.initialize(),i}function Dn(){let c=new ju("arions").description("Manage Arion personas");return c.command("list").description("List all Arions with status").option("--status <status>","Filter by status (active, resting, retired)").action(async(n)=>{try{let f=await(await un()).list(),i=n.status?f.filter((u)=>u.status===n.status):f;if(i.length===0){console.log("No Arions found.");return}console.log(`
347
+ Arions:`),console.log("─".repeat(60));for(let u of i){let _=u.status==="active"?"●":u.status==="resting"?"○":"×";if(console.log(`${_} ${u.name} [${u.status}]`),console.log(` Style: ${u.personality.style}`),console.log(` Traits: ${u.personality.traits.join(", ")}`),u.skills.length>0)console.log(` Skills: ${u.skills.map((g)=>g.name).join(", ")}`);console.log()}}catch(y){console.error("Error listing Arions:",y.message),process.exit(1)}}),c.command("hatch").description("Create a new Arion").argument("<name>","Name for the new Arion").option("-t, --traits <traits>","Comma-separated personality traits").option("-s, --style <style>","Communication style (formal, casual, technical, friendly)").option("--skills <skills>","Comma-separated skills").action(async(n,y)=>{try{let f=await un(),i=y.traits?y.traits.split(",").map((H)=>H.trim()):["helpful","curious"],u=y.style||"friendly",_=y.skills?y.skills.split(",").map((H)=>({name:H.trim(),level:"intermediate"})):[],g=await f.hatch({name:n,personality:{traits:i,style:u},skills:_,createdBy:"cli"});if(console.log(`
348
+ Hatched new Arion: ${g.name}`),console.log(` ID: ${g.id}`),console.log(` Status: ${g.status}`),console.log(` Style: ${g.personality.style}`),console.log(` Traits: ${g.personality.traits.join(", ")}`),g.skills.length>0)console.log(` Skills: ${g.skills.map((H)=>H.name).join(", ")}`)}catch(f){console.error("Error hatching Arion:",f.message),process.exit(1)}}),c.command("become").description("Switch to an Arion").argument("<name>","Name of the Arion to switch to").action(async(n)=>{try{let y=await un(),f=await y.get(n);if(!f)console.error(`Arion not found: ${n}`),process.exit(1);if(f.status==="retired")console.error(`Cannot become retired Arion: ${n}`),process.exit(1);if(f.status==="resting")await y.wake(n);let i=j();i.activeArion=f.name,B(i),console.log(`
349
+ Switched to Arion: ${f.name}`),console.log(` Style: ${f.personality.style}`),console.log(` Traits: ${f.personality.traits.join(", ")}`)}catch(y){console.error("Error switching Arion:",y.message),process.exit(1)}}),c.command("retire").description("Retire an Arion (permanent)").argument("<name>","Name of the Arion to retire").option("--confirm","Confirm retirement (required)").action(async(n,y)=>{try{if(!y.confirm)console.error("Retirement is permanent. Use --confirm to proceed."),process.exit(1);await(await un()).retire(n,{confirm:!0});let i=j();if(i.activeArion?.toLowerCase()===n.toLowerCase())delete i.activeArion,B(i);console.log(`
350
+ Retired Arion: ${n}`),console.log("The Arion can no longer be used but its memories are preserved.")}catch(f){console.error("Error retiring Arion:",f.message),process.exit(1)}}),c}import{Command as Mu}from"commander";import{createInterface as Bu}from"node:readline";import{ensureAuthProfileStore as Pu,syncExternalCliCredentials as Su,isProfileInCooldown as bu,upsertAuthProfile as zu,updateAuthProfileStoreWithLockSync as Gf}from"@aria-cli/auth";var lu=["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"];function qu(c=process.env){for(let n of lu){let y=c[n];if(y&&y.length>8)return n}return null}async function vu(){let c=Gf({updater:(y)=>Su(y)})??Pu(),n=Object.entries(c.profiles);if(n.length===0){console.log("No auth profiles configured."),console.log("Add one with: aria auth add --provider <name>");return}for(let[y,f]of n){let u=bu(c,y)?"cooldown":"active",_=f.type.padEnd(7);if(console.log(` ${y.padEnd(30)} [${_}] ${u}`),f.email)console.log(` email: ${f.email}`);if((f.type==="oauth"||f.type==="token")&&"expires"in f){let g=f.expires;if(g){let H=g-Date.now(),h=H>0?`expires in ${Math.round(H/60000)}min`:"EXPIRED";console.log(` ${h}`)}}if(f.provider==="github-copilot"){let g=qu();if(g)console.log(` env override: ${g}`)}}}async function Iu(c){let n=c.provider.toLowerCase().trim(),y=`${n}:manual`,f=Bu({input:process.stdin,output:process.stdout}),i=await new Promise((u)=>{f.question(`Paste API key for ${n}: `,(_)=>{f.close(),u(_.trim())})});if(!i||i.length<8)console.error("API key too short (minimum 8 characters)."),process.exit(1);zu({profileId:y,credential:{type:"api_key",provider:n,key:i}}),console.log(`Saved auth profile: ${y}`)}async function wu(c){let n=!1,y=Gf({updater:(f)=>{if(!f.profiles[c])return!1;return delete f.profiles[c],n=!0,!0}});if(!n||!y)console.error(`Profile not found: ${c}`),process.exit(1);console.log(`Removed auth profile: ${c}`)}function Vn(){let c=new Mu("auth").description("Manage auth profiles");return c.command("status").description("Show all auth profiles and their health").action(vu),c.command("add").description("Add an API key for a provider").requiredOption("--provider <name>","Provider name (anthropic, openai, google)").action(Iu),c.command("remove").description("Remove an auth profile").argument("<profile-id>","Profile ID to remove").action(wu),c}ec();o();yn();function Mn(c,n,y){if(c===void 0||c.trim()==="")return y;let f=Number.parseInt(c,10);if(!Number.isFinite(f)||f<=0)throw Error(`${n} must be a positive integer`);return f}function Ff(c){if(!c)return;let n=c.split(",").map((y)=>y.trim()).filter((y)=>y.length>0);return n.length>0?n:void 0}function pu(c,n){if(c===void 0||c.trim()==="")return n;let y=Number.parseInt(c,10);if(!Number.isFinite(y)||y<0)throw Error("port must be a non-negative integer (0 = OS-assigned)");return y}function eu(c){return{arion:c.arion,port:pu(c.port,0),intervalMs:Mn(c.intervalMs,"intervalMs",60000),allowedToolCategories:Ff(c.allowedToolCategories),allowedShellCommands:Ff(c.allowedShellCommands),maxWriteOpsPerMinute:c.maxWriteOpsPerMinute!==void 0?Mn(c.maxWriteOpsPerMinute,"maxWriteOpsPerMinute",30):void 0,maxGitPushesPerHour:c.maxGitPushesPerHour!==void 0?Mn(c.maxGitPushesPerHour,"maxGitPushesPerHour",5):void 0}}function ru(c){if(c.aborted)return Promise.resolve();return new Promise((n)=>{c.addEventListener("abort",()=>n(),{once:!0})})}function Wf(c){return{...c.arion?{arion:c.arion}:{},...c.port>=0?{port:c.port}:{},intervalMs:c.intervalMs,...c.allowedToolCategories?{allowedToolCategories:c.allowedToolCategories}:{},...c.allowedShellCommands?{allowedShellCommands:c.allowedShellCommands}:{},...typeof c.maxWriteOpsPerMinute==="number"?{maxWriteOpsPerMinute:c.maxWriteOpsPerMinute}:{},...typeof c.maxGitPushesPerHour==="number"?{maxGitPushesPerHour:c.maxGitPushesPerHour}:{}}}async function Bn(c={}){let n=eu(c);await ou(n)}async function Pn(){let{resolveRuntimeRootDirectory:c,findRuntimeOwnerRecordByAriaHome:n,removeRuntimeOwnerRecord:y}=await import("@aria-cli/server"),{getAriaDir:f}=await Promise.resolve().then(() => (o(),jy)),i=f(),u=c(),_=n(u,i);if(!_){console.log("[daemon] no running daemon found");return}try{process.kill(_.runtimePid,"SIGINT"),console.log(`[daemon] sent SIGINT to pid ${_.runtimePid}`);let g=Date.now()+5000;while(Date.now()<g)try{process.kill(_.runtimePid,0),await new Promise((H)=>setTimeout(H,200))}catch{break}try{process.kill(_.runtimePid,0),process.kill(_.runtimePid,"SIGKILL"),console.log(`[daemon] force-killed pid ${_.runtimePid}`)}catch{}}catch{}y(u,_.nodeId),console.log("[daemon] stopped")}async function af(c={}){await Pn(),await new Promise((u)=>setTimeout(u,500));let{ensureDaemon:n}=await Promise.resolve().then(() => (Yn(),tf)),y=await yc(),i=await(await n(y)).control.listPeers();console.log(`[daemon] restarted (${i.length} peers connected)`),await y.pool?.closeAll?.()}async function ou(c){let n=new AbortController,y=()=>n.abort(),f=()=>n.abort(),i=()=>{};process.on("SIGINT",y),process.on("SIGTERM",f),process.on("SIGHUP",i);let u=j(),_=c.arion?.trim()||u.activeArion?.trim()||"ARIA",g=await yc({startupMode:"daemon"}),H=Vc({cli:g,cwd:process.cwd(),arionName:_}),h=null;try{let O=await H.start(Wf(c));console.log(`[daemon] runtime node ${String(O.nodeId??"unknown")}`),console.log(`[daemon] runtime ${String(O.runtimeId??"unknown")} listening on port ${String(O.port??"unknown")}`),console.log(`[daemon] running arion "${_}" (interval ${c.intervalMs}ms)`),h=setInterval(()=>{H.status({}).catch(()=>{})},Math.min(Math.max(c.intervalMs,1000),5000)),await ru(n.signal)}catch(O){console.error(`[daemon] Runtime startup failed: ${O instanceof Error?O.message:String(O)}`),process.exitCode=1}finally{if(h)clearInterval(h),h=null;try{if(n.signal.aborted&&H.shouldStopOnShutdown?.())await H.stop?.(Wf(c))}catch{}await H.releaseAll?.(),await g.pool.closeAll().catch(()=>{}),process.removeListener("SIGINT",y),process.removeListener("SIGTERM",f),process.removeListener("SIGHUP",i),console.log("[daemon] stopped")}}import{Command as FH}from"commander";import{existsSync as WH,readFileSync as my}from"node:fs";import{homedir as aH}from"node:os";import ri from"node:path";function dH(c){if(!c||c==="-"){let n=my(0,"utf8").trim();return n?JSON.parse(n):{}}return JSON.parse(my(c,"utf8"))}function JH(c,n){if(c==="interaction.respond")return{kind:"interaction.respond",requestId:"call-1",...n};return{kind:"request",requestId:"call-1",op:c,input:n}}function oi(){if(process.env.ARIA_HOME)return process.env.ARIA_HOME;return ri.join(process.env.HOME||aH(),".aria")}function UH(c){if(typeof c.arion==="string"&&c.arion.trim().length>0)return c.arion.trim();let n=ri.join(oi(),"config.json");if(!WH(n))return"ARIA";try{let y=JSON.parse(my(n,"utf8"));if(typeof y.activeArion==="string"&&y.activeArion.trim().length>0)return y.activeArion.trim()}catch{}return"ARIA"}function si(c){return{kind:"result",requestId:"call-1",op:c,ok:!1,error:{code:"NO_RESULT",message:`Operation ${c} produced no result frame`}}}async function XH(c,n,y){let[{SessionHistory:f},{createSessionOperationHandlers:i}]=await Promise.all([Promise.resolve().then(() => (Fn(),wy)),Promise.resolve().then(() => (Hn(),Qf))]),u=new f(f.resolvePerArionPath(oi(),UH(y)));try{let _=i({sessionLedger:u}),g=null;for await(let H of _[c]("call-1",n))if(H.kind==="result")g=H;return g??si(c)}finally{u.close()}}async function ZH(c,n,y){switch(c){case"session.list":case"session.read":case"session.load":return XH(c,n,y);default:return null}}async function QH(c,n){try{let y=dH(n.inputJson),f=await ZH(c,y,n);if(f)return process.stdout.write(`${JSON.stringify(f)}
351
+ `),f.ok?0:1;let{createHeadlessKernelRuntime:i}=await Promise.resolve().then(() => (Cy(),ei)),u=await i({cwd:process.cwd(),arionName:n.arion});try{let _=null;for await(let g of u.kernel.dispatch(JH(c,y)))if(g.kind==="result")_=g;if(!_)return process.stdout.write(`${JSON.stringify(si(c))}
352
+ `),1;return process.stdout.write(`${JSON.stringify(_)}
353
+ `),_.ok?0:1}finally{await u.release()}}catch(y){return process.stderr.write(`${y instanceof Error?y.message:String(y)}
354
+ `),2}}function ty(){return new FH("call").description("Execute one headless operation and print exactly one JSON result").argument("<operation>","Headless operation name").option("--input-json <path|->","Read JSON input from a file path or stdin","-").option("--arion <name>","Arion name for per-Arion session context").action(async(c,n)=>{process.exitCode=await QH(c,n)})}ec();Yn();import{Command as jH}from"commander";function YH(c){let n=Number.parseInt(c,10);if(!Number.isFinite(n)||n<0)throw Error(`Invalid --duration-ms value: ${c}`);return n}function Gy(){let c=new jH("pairing").description("Invite and join peers over the internet");return c.command("invite").description("Create an end-user internet pairing invite").argument("[label]","Optional local label for the invite").option("--duration-ms <ms>","Invite lifetime in milliseconds",YH).action(async(n,y)=>{let f=await yc();try{let{control:i}=await fn(f),u=await i.createInvite({...n?.trim()?{inviteLabel:n.trim()}:{},...typeof y?.durationMs==="number"?{durationMs:y.durationMs}:{}});console.log("Invite token:"),console.log(u.inviteToken),console.log(""),console.log(`Join with: aria pairing join ${u.inviteToken}`)}catch(i){console.error(`Failed to create invite: ${i.message}`),process.exit(1)}finally{await f.pool?.closeAll?.()}}),c.command("join").description("Accept an internet pairing invite token").argument("<token>","Invite token to accept").action(async(n)=>{let y=await yc();try{let{control:f}=await fn(y),i=await f.acceptInviteToken({inviteToken:n.trim()});console.log(`Paired with ${i.displayNameSnapshot??i.nodeId}`)}catch(f){console.error(`Failed to accept invite: ${f.message}`),process.exit(1)}finally{await y.pool?.closeAll?.()}}),c}import{Command as rH}from"commander";function ay(){return new rH("runtime-cutover-reset").description("Destructively clear stale runtime state while preserving local node identity by default").option("--full-reset","Also remove local node identity material").option("--json","Emit the reset report as JSON").action(async(c)=>{let{runtimeCutoverResetCommand:n}=await Promise.resolve().then(() => (Wy(),u0));await n(c)})}Cy();import{HEADLESS_OPERATION_SCHEMAS as _0,HeadlessInteractionResponseSchema as oH,HeadlessRequestIdSchema as H0}from"@aria-cli/tools";var sH=200,cg=500;function ng(c=process.stdout){let n=!1,y=()=>{n=!0};c.on?.("error",y);let f=(i)=>{if(n)return!1;try{return c.write(`${JSON.stringify(i)}
355
+ `),!0}catch{return n=!0,!1}};return f.close=()=>{c.off?.("error",y)},f}function yg(c,n,y){let f;try{f=JSON.parse(c)}catch{return y({kind:"result",requestId:`parse-error-${n}`,op:"unknown",ok:!1,error:{code:"PARSE_ERROR",message:"Malformed JSON input"}}),null}if(!f||typeof f!=="object")return y({kind:"result",requestId:`parse-error-${n}`,op:"unknown",ok:!1,error:{code:"PARSE_ERROR",message:"Input must be a JSON object"}}),null;let i=f;if(i.kind==="interaction.respond"&&H0.safeParse(i.requestId).success&&typeof i.interactionId==="string")return i;if(i.kind==="request"&&H0.safeParse(i.requestId).success&&typeof i.op==="string")return i;return y({kind:"result",requestId:`parse-error-${n}`,op:"unknown",ok:!1,error:{code:"PARSE_ERROR",message:"Missing required kind/requestId/op fields"}}),null}async function dy(c){let n=ng(),y=null,f=null,i=null,u=new Set,_=new Set,g=new Set,H=new Map,h=0,O=null,K="",k=!1,N=!1,A=null,G=new Promise((R)=>{A=()=>{if(N)return;N=!0,R()}}),a=()=>{return y??=Ty(c).then((R)=>{return f=R,R}),y},F=()=>{return i??=(async()=>{if(f){await f.release();return}if(!y)return;try{let R=await y;f=R,await R.release()}catch{}})(),i},m=(R)=>Object.prototype.hasOwnProperty.call(_0,R),d=async(R,T)=>{if(R.aborted)return{kind:"aborted"};return new Promise((Q,J)=>{let M=!1,b=()=>{if(M)return;M=!0,R.removeEventListener("abort",b),Q({kind:"aborted"})};R.addEventListener("abort",b),T.then((I)=>{if(M)return;M=!0,R.removeEventListener("abort",b),Q({kind:"value",value:I})},(I)=>{if(M)return;M=!0,R.removeEventListener("abort",b),J(I)})})},X=async(R)=>{if(typeof R.return!=="function")return!0;try{let Q=R.return().then(()=>{return},()=>{return}).finally(()=>{g.delete(Q)}),J=await Promise.race([Q.then(()=>!0),new Promise((M)=>setTimeout(()=>M(!1),sH))]);if(!J)g.add(Q);return J}catch{return!1}},D=(R,T)=>n({kind:"result",requestId:R,op:T,ok:!1,error:{code:"CONNECTION_CLOSED",message:"Connection closed before request completed"}}),cc=()=>{return O??=(async()=>{for(let[R,T]of H){if(T.controller.abort(),T.completed||T.connectionClosedEmitted)continue;T.connectionClosedEmitted=!0,D(R,T.op)}if(await Promise.allSettled([...H.values()].map((R)=>R.promise)),g.size>0)await Promise.race([Promise.allSettled([...g]),new Promise((R)=>setTimeout(()=>R(),cg))]);await F(),n.close(),process.stdin.removeListener("data",Jc),process.stdin.removeListener("end",Hc),process.stdin.removeListener("close",Hc),process.removeListener("SIGTERM",_c)})(),O},_c=()=>{process.stdin.pause(),cc().finally(()=>A?.())};process.once("SIGTERM",_c);let zc=(R)=>{h+=1;let T=yg(R,h,n);if(T)E(T)},Ln=()=>{while(!0){let R=K.indexOf(`
356
+ `);if(R<0)return;let T=K.slice(0,R);if(T.endsWith("\r"))T=T.slice(0,-1);K=K.slice(R+1),zc(T)}},Jc=(R)=>{K+=typeof R==="string"?R:R.toString("utf8"),Ln()},Hc=()=>{if(k)return;k=!0;let R=K;if(R.endsWith("\r"))R=R.slice(0,-1);if(K="",R.trim().length>0)zc(R);cc().finally(()=>A?.())},E=(R)=>{let T=R.kind==="request"?R.op:"interaction.respond",Q=[...H.values()].some((b)=>b.op==="arion.become");if(R.kind==="request"&&(R.op==="arion.become"&&u.size>0||R.op!=="arion.become"&&Q)){n({kind:"result",requestId:R.requestId,op:T,ok:!1,error:{code:"ARION_SCOPE_BUSY",message:R.op==="arion.become"?"arion.become requires an idle headless connection":"Headless scope is switching arions; wait for arion.become to finish"}}),_.add(R.requestId);return}if(u.has(R.requestId)){n({kind:"result",requestId:R.requestId,op:T,ok:!1,error:{code:"DUPLICATE_REQUEST_ID",message:`Request ${R.requestId} is already in flight`}});return}if(_.has(R.requestId)){n({kind:"result",requestId:R.requestId,op:R.kind==="request"?R.op:"interaction.respond",ok:!1,error:{code:"DUPLICATE_REQUEST_ID",message:`Request ${R.requestId} has already been used on this connection`}});return}if(R.kind==="request"){if(!m(R.op)){n({kind:"result",requestId:R.requestId,op:R.op,ok:!1,error:{code:"UNKNOWN_OPERATION",message:`Unknown operation ${R.op}`}}),_.add(R.requestId);return}if(!_0[R.op].input.safeParse(R.input).success){n({kind:"result",requestId:R.requestId,op:R.op,ok:!1,error:{code:"INVALID_INPUT",message:`Invalid input for ${R.op}`}}),_.add(R.requestId);return}}else if(!oH.safeParse(R).success){n({kind:"result",requestId:R.requestId,op:"interaction.respond",ok:!1,error:{code:"INVALID_INPUT",message:"Invalid input for interaction.respond"}}),_.add(R.requestId);return}u.add(R.requestId),_.add(R.requestId);let J=new AbortController,M=null;M=(async()=>{try{let b=await d(J.signal,a().then((Uc)=>({runtime:Uc})));if(b.kind!=="value")return;let I=b.value.runtime.kernel.dispatch(R,{signal:J.signal})[Symbol.asyncIterator]();while(!0){let Uc=await d(J.signal,I.next().then((h0)=>({result:h0})));if(Uc.kind==="aborted"){await X(I);return}if(Uc.value.result.done)return;let Uy=Uc.value.result.value,Nn=H.get(R.requestId);if(J.signal.aborted||Nn?.connectionClosedEmitted)continue;if(n(Uy),Uy.kind==="result"){if(Nn)Nn.completed=!0}}}catch(b){let I=H.get(R.requestId);if(J.signal.aborted||I?.connectionClosedEmitted)return;if(n({kind:"result",requestId:R.requestId,op:T,ok:!1,error:{code:"INTERNAL_ERROR",message:b instanceof Error?b.message:String(b)}}),I)I.completed=!0}finally{u.delete(R.requestId),H.delete(R.requestId)}})(),H.set(R.requestId,{op:T,controller:J,completed:!1,connectionClosedEmitted:!1,promise:M})};process.stdin.setEncoding("utf8"),process.stdin.on("data",Jc),process.stdin.once("end",Hc),process.stdin.once("close",Hc),await G}var g0="1.0.19",h6=["⚡ Search millions of lines instantly with native Rust-powered code search","\uD83E\uDDE0 Jump to definitions & find references with real LSP intelligence","✏️ Press Esc×2 to edit and fork any previous message in-place","\uD83D\uDD0A Get audio cues when tasks finish — try /sound to configure","\uD83C\uDFA8 All 87 tools now render rich, beautiful output in the terminal"];Wy();var uc=new fg;uc.name("aria").description("ARIA - Adaptive Reasoning Intelligence Agent").version(g0);uc.addCommand(Dn());uc.addCommand(Vn());uc.addCommand(Gy());uc.command("headless").description("Run the persistent headless stdio control server").option("--arion <name>","Arion name for per-Arion session context").action(async(c)=>{await dy({cwd:process.cwd(),arionName:c.arion})});uc.addCommand(ty());var Jy=uc.command("daemon").description("Manage the ARIA daemon");Jy.command("start",{isDefault:!0}).description("Start the daemon (default)").option("--arion <name>","Run daemon for a specific Arion").option("--port <port>","Server port (default: 0 = OS-assigned)").option("--interval-ms <ms>","Wake loop interval in milliseconds (default: 60000)").option("--allowed-tool-categories <list>","Comma-separated tool category allowlist").option("--allowed-shell-commands <list>","Comma-separated shell command prefix allowlist").option("--max-write-ops-per-minute <count>","Rate limit for write operations per minute").option("--max-git-pushes-per-hour <count>","Rate limit for git pushes per hour").action(async(c)=>{await Bn(c)});Jy.command("stop").description("Stop the running daemon").action(async()=>{await Pn()});Jy.command("restart").description("Stop the daemon and start a fresh one").action(async()=>{await af()});uc.addCommand(ay());export{dy as startHeadlessStdioServer,i0 as runtimeCutoverResetCommand,Bn as runDaemonFromCli,uc as program,ay as createRuntimeCutoverResetCommand,Gy as createPairingCommand,ty as createHeadlessCallCommand,Vn as createAuthCommand,Dn as createArionsCommand};