@crewx/sdk 0.9.0-rc.176 → 0.9.0-rc.178

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -69,7 +69,7 @@ ${r.join(`
69
69
  OR
70
70
  (${e.status} IN ('deferred', 'failed') AND ${e.code} IS NOT NULL
71
71
  AND ${e.to_revision} IS NULL)
72
- )`)}));});var uO=U(()=>{h();sqliteTable("ui_definition_archive",{definition_hash:text("definition_hash").primaryKey().notNull(),definition_json:text("definition_json").notNull(),created_at:integer("created_at").notNull()},e=>({definitionHashCheck:check("ui_definition_archive_definition_hash_ck",sql`length(${e.definition_hash}) = 64 AND ${e.definition_hash} NOT GLOB '*[^0-9a-f]*'`),definitionJsonCheck:check("ui_definition_archive_definition_json_ck",sql`json_valid(${e.definition_json}) AND json_type(${e.definition_json}) = 'object'`),createdAtCheck:check("ui_definition_archive_created_at_ck",sql`${e.created_at} >= 0`)}));});var tT,fO=U(()=>{h();tT=sqliteTable("projects",{id:text("id").primaryKey().notNull(),workspace_id:text("workspace_id").notNull(),name:text("name").notNull(),outcome:text("outcome").notNull(),due_date:text("due_date"),scene:text("scene").notNull().default("planning"),stages_json:text("stages_json").notNull(),stage_index:integer("stage_index").notNull(),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),accepted_at:text("accepted_at"),archived_at:text("archived_at")},e=>({idCheck:check("projects_id_ck",sql`${e.id} GLOB 'prj_*'`),sceneCheck:check("projects_scene_ck",sql`${e.scene} IN ('planning', 'plan_review', 'running', 'human_wait', 'limit_wait', 'failed_stop', 'analyzing_feedback', 'replanned', 'awaiting_review', 'accepted')`),stagesJsonCheck:check("projects_stages_json_ck",sql`json_valid(${e.stages_json}) AND json_type(${e.stages_json}) = 'array'`),stageIndexCheck:check("projects_stage_index_ck",sql`${e.stage_index} >= 1`)})),sqliteTable("project_criteria",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>tT.id,{onDelete:"cascade"}),position:integer("position").notNull(),statement:text("statement").notNull(),verify_status:text("verify_status").notNull().default("pending"),verified_at:text("verified_at"),evidence_json:text("evidence_json").notNull().default("[]"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},e=>({idCheck:check("project_criteria_id_ck",sql`${e.id} GLOB 'pjc_*'`),verifyStatusCheck:check("project_criteria_verify_status_ck",sql`${e.verify_status} IN ('pending', 'verifying', 'passed', 'failed')`),evidenceJsonCheck:check("project_criteria_evidence_json_ck",sql`json_valid(${e.evidence_json}) AND json_type(${e.evidence_json}) = 'array'`),projectPositionUnique:uniqueIndex("project_criteria_project_position_uq").on(e.project_id,e.position)})),sqliteTable("project_events",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>tT.id,{onDelete:"restrict"}),seq:integer("seq").notNull(),actor_type:text("actor_type").notNull(),actor_id:text("actor_id"),type:text("type").notNull(),title:text("title").notNull(),summary:text("summary"),payload_json:text("payload_json").notNull().default("{}"),created_at:text("created_at").notNull()},e=>({idCheck:check("project_events_id_ck",sql`${e.id} GLOB 'pje_*'`),actorTypeCheck:check("project_events_actor_type_ck",sql`${e.actor_type} IN ('user', 'project_manager', 'system')`),payloadJsonCheck:check("project_events_payload_json_ck",sql`json_valid(${e.payload_json}) AND json_type(${e.payload_json}) = 'object'`),projectSeqUnique:uniqueIndex("project_events_project_seq_uq").on(e.project_id,e.seq)}));});var Mu,Uu,te,iT=U(()=>{h();Mu=["THREAD_STATE","THREAD_PRIORITY"],Uu=["gray","blue","violet","green","amber","orange","red","pink"],te=sqliteTable("common_codes",{code_group:text("code_group").notNull(),code:text("code").notNull(),code_name:text("code_name"),color:text("color").notNull().default("gray"),sort_order:integer("sort_order").notNull(),workspace_id:text("workspace_id"),is_builtin:integer("is_builtin").notNull().default(0),is_archived:integer("is_archived").notNull().default(0),metadata:text("metadata"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},e=>({pk:primaryKey({columns:[e.code_group,e.code]}),metadataCheck:check("common_codes_metadata_ck",sql`${e.metadata} IS NULL OR (json_valid(${e.metadata}) AND json_type(${e.metadata}) = 'object')`),builtinCheck:check("common_codes_builtin_ck",sql`${e.is_builtin} IN (0, 1)`),archivedCheck:check("common_codes_archived_ck",sql`${e.is_archived} IN (0, 1)`),idxCommonCodesSelection:index("idx_common_codes_group_archived_order").on(e.code_group,e.is_archived,e.sort_order)}));});var aT,dT,cT,ws,JJ,lT,Ve,be,_e,bm=U(()=>{h();xu();aT=["thread.snapshot.imported","thread.title.changed","thread.priority.changed","thread.state.changed","thread.highlight.created","thread.highlight.updated","thread.highlight.deleted","thread.highlights.regenerated"],dT=["user","agent","system"],cT=["auto","manual"],ws=["decision","judgment","issue","result","pivot"],JJ=["active","dismissed"],lT=["queued","running","completed","failed"],Ve=sqliteTable("thread_events",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),seq:integer("seq").notNull(),type:text("type").notNull(),actor_type:text("actor_type").notNull(),payload_json:text("payload_json").notNull(),created_at:text("created_at").notNull(),actor_id:text("actor_id"),task_id:text("task_id"),highlight_id:text("highlight_id")},e=>({typeCheck:check("thread_events_type_ck",sql`${e.type} IN ('thread.snapshot.imported', 'thread.title.changed', 'thread.priority.changed', 'thread.state.changed', 'thread.highlight.created', 'thread.highlight.updated', 'thread.highlight.deleted', 'thread.highlights.regenerated')`),actorTypeCheck:check("thread_events_actor_type_ck",sql`${e.actor_type} IN ('user', 'agent', 'system')`),payloadJsonCheck:check("thread_events_payload_json_ck",sql`json_valid(${e.payload_json}) AND json_type(${e.payload_json}) = 'object'`),threadSeqIndex:index("idx_thread_events_thread_seq").on(e.thread_id,e.seq),threadCreatedIndex:index("idx_thread_events_thread_created").on(e.thread_id,e.created_at),threadSeqUnique:uniqueIndex("thread_events_thread_seq_uq").on(e.thread_id,e.seq)})),be=sqliteTable("thread_highlight_runs",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),request_id:text("request_id").notNull(),status:text("status").notNull(),detector_version:text("detector_version").notNull(),requested_at:text("requested_at").notNull(),started_at:text("started_at"),completed_at:text("completed_at"),error_code:text("error_code"),previous_auto_count:integer("previous_auto_count"),new_auto_count:integer("new_auto_count")},e=>({statusCheck:check("thread_highlight_runs_status_ck",sql`${e.status} IN ('queued', 'running', 'completed', 'failed')`),countCheck:check("thread_highlight_runs_counts_ck",sql`(${e.previous_auto_count} IS NULL OR ${e.previous_auto_count} >= 0) AND (${e.new_auto_count} IS NULL OR ${e.new_auto_count} >= 0)`),threadRequestUnique:uniqueIndex("thread_highlight_runs_thread_request_uq").on(e.thread_id,e.request_id),inProgressThreadUnique:uniqueIndex("thread_highlight_runs_in_progress_thread_uq").on(e.thread_id).where(sql`${e.status} IN ('queued', 'running')`),threadStatusRequestedIndex:index("idx_thread_highlight_runs_thread_status_requested").on(e.thread_id,e.status,e.requested_at)})),_e=sqliteTable("thread_highlights",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),source:text("source").notNull(),kind:text("kind").notNull(),status:text("status").notNull().default("active"),text:text("text"),covers_from_task_id:text("covers_from_task_id").notNull(),covers_to_task_id:text("covers_to_task_id").notNull(),revision:integer("revision").notNull().default(0),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),agent_id:text("agent_id"),source_task_id:text("source_task_id"),detector_version:text("detector_version"),content_fingerprint:text("content_fingerprint"),dismissed_at:text("dismissed_at")},e=>({sourceCheck:check("thread_highlights_source_ck",sql`${e.source} IN ('auto', 'manual')`),kindCheck:check("thread_highlights_kind_ck",sql`${e.kind} IN ('decision', 'judgment', 'issue', 'result', 'pivot')`),statusCheck:check("thread_highlights_status_ck",sql`${e.status} IN ('active', 'dismissed')`),activeTextCheck:check("thread_highlights_active_text_ck",sql`${e.status} = 'dismissed' OR (${e.text} IS NOT NULL AND length(${e.text}) > 0)`),coversCheck:check("thread_highlights_covers_ck",sql`length(${e.covers_from_task_id}) > 0 AND length(${e.covers_to_task_id}) > 0`),autoKeyCheck:check("thread_highlights_auto_key_ck",sql`${e.source} = 'manual' OR (${e.source} = 'auto' AND ${e.source_task_id} IS NOT NULL AND ${e.detector_version} IS NOT NULL AND ${e.content_fingerprint} IS NOT NULL AND length(${e.source_task_id}) > 0 AND length(${e.detector_version}) > 0 AND length(${e.content_fingerprint}) > 0)`),threadStatusCreatedIndex:index("idx_thread_highlights_thread_status_created").on(e.thread_id,e.status,e.created_at),threadCoversIndex:index("idx_thread_highlights_thread_covers").on(e.thread_id,e.covers_from_task_id,e.covers_to_task_id),autoIdempotencyUnique:uniqueIndex("thread_highlights_auto_idempotency_uq").on(e.thread_id,e.source_task_id,e.detector_version,e.content_fingerprint).where(sql`${e.source} = 'auto'`)}));});var mO=U(()=>{h();sqliteTable("storage_metadata",{source_kind:text("source_kind").notNull(),source_id:text("source_id").notNull(),utc_ts:text("utc_ts"),bytes:integer("bytes").notNull()},e=>({pk:primaryKey({columns:[e.source_kind,e.source_id]}),kindTimestampBytesIndex:index("idx_storage_metadata_kind_ts_bytes").on(e.source_kind,e.utc_ts,e.bytes)})),sqliteTable("storage_metadata_state",{unit:text("unit").primaryKey().notNull(),cursor_rowid:integer("cursor_rowid").notNull().default(0),end_rowid:integer("end_rowid"),complete:integer("complete").notNull().default(0),updated_at:text("updated_at").notNull()});});var Qn,hO=U(()=>{h();Qn=sqliteTable("agent_send_history",{workspace_id:text("workspace_id").notNull(),actor_id:text("actor_id").notNull(),agent_id:text("agent_id").notNull(),last_accepted_at:text("last_accepted_at").notNull()},e=>({pk:primaryKey({columns:[e.workspace_id,e.actor_id,e.agent_id]}),recentIndex:index("idx_agent_send_history_recent").on(e.workspace_id,e.actor_id,e.last_accepted_at,e.agent_id)}));});var fT,mr,Qe,Ce,bt,Dr,gT=U(()=>{h();xu();Am();fT=["cyan","orange","purple","blue"],mr=sqliteTable("sidebar_states",{workspace_id:text("workspace_id").primaryKey().references(()=>Dt.id,{onDelete:"cascade"}),revision:integer("revision").notNull().default(0),rail_collapsed:integer("rail_collapsed").notNull().default(0),seeded_at:text("seeded_at").notNull()},e=>({railCollapsedCheck:check("sidebar_states_rail_collapsed_ck",sql`${e.rail_collapsed} IN (0, 1)`)})),Qe=sqliteTable("sidebar_groups",{id:text("id").primaryKey(),workspace_id:text("workspace_id").notNull().references(()=>Dt.id,{onDelete:"cascade"}),name:text("name").notNull(),color:text("color").notNull(),collapsed:integer("collapsed").notNull().default(0),position:integer("position").notNull()},e=>({colorCheck:check("sidebar_groups_color_ck",sql`${e.color} IN ('cyan', 'orange', 'purple', 'blue')`),collapsedCheck:check("sidebar_groups_collapsed_ck",sql`${e.collapsed} IN (0, 1)`),idxSidebarGroupsWorkspacePosition:index("idx_sidebar_groups_workspace_position").on(e.workspace_id,e.position)})),Ce=sqliteTable("sidebar_tabs",{workspace_id:text("workspace_id").notNull().references(()=>Dt.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>Qe.id,{onDelete:"set null"}),position:integer("position").notNull()},e=>({pk:primaryKey({columns:[e.workspace_id,e.thread_id]})})),bt=sqliteTable("sidebar_closed_tabs",{id:integer("id").primaryKey({autoIncrement:true}),workspace_id:text("workspace_id").notNull().references(()=>Dt.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>Qe.id,{onDelete:"set null"}),position:integer("position").notNull(),closed_at:text("closed_at").notNull()},e=>({idxSidebarClosedTabsWorkspaceId:index("idx_sidebar_closed_tabs_workspace_id").on(e.workspace_id,e.id)})),Dr=sqliteTable("thread_reads",{workspace_id:text("workspace_id").notNull().references(()=>Dt.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),read_through_at:text("read_through_at").notNull()},e=>({pk:primaryKey({columns:[e.workspace_id,e.thread_id]})}));});var Ze,AO=U(()=>{h();Ze=sqliteTable("schedule_runs",{id:text("id").primaryKey(),schedule_id:text("schedule_id").notNull(),workspace_id:text("workspace_id").notNull(),mode:text("mode").notNull(),trigger:text("trigger").notNull(),occurrence_key:text("occurrence_key"),task_id:text("task_id"),app_id:text("app_id"),schedule_name:text("schedule_name"),builtin_id:text("builtin_id"),command:text("command"),high_frequency:integer("high_frequency").notNull().default(0),status:text("status").notNull(),error_code:text("error_code"),exit_code:integer("exit_code"),signal:text("signal"),started_at:text("started_at").notNull(),finished_at:text("finished_at"),duration_ms:integer("duration_ms"),pid:integer("pid"),host_pid:integer("host_pid"),output_tail:text("output_tail"),output_bytes:integer("output_bytes"),output_truncated:integer("output_truncated").notNull().default(0)},e=>({idx_schedule_runs_workspace_started:index("idx_schedule_runs_workspace_started").on(e.workspace_id,sql`${e.started_at} DESC`),idx_schedule_runs_schedule_started:index("idx_schedule_runs_schedule_started").on(e.schedule_id,sql`${e.started_at} DESC`),idx_schedule_runs_task_id:index("idx_schedule_runs_task_id").on(e.task_id),idx_schedule_runs_running:index("idx_schedule_runs_running").on(e.workspace_id,e.started_at).where(sql`${e.status} = 'running'`)}));});var IO=U(()=>{h();sqliteTable("run_column_backfill",{name:text("name").primaryKey(),cursor:integer("cursor"),anchor_id:text("anchor_id"),completed_at:text("completed_at")});});var Pt=U(()=>{h();Am();mc();MP();BP();xu();jP();VP();qP();zP();XP();YP();eO();tO();rO();iO();sO();dO();cO();uO();fO();iT();bm();mO();hO();gT();AO();IO();});function Ga(e){return typeof e=="string"&&Lr.includes(e)}function ju(e){if(!e||!e.includes("workflow"))return null;let t;try{t=JSON.parse(e);}catch{return null}if(typeof t!="object"||t===null||Array.isArray(t))return null;let n=t,r=n.workflowRunId;if(typeof r=="string"&&r!=="")return r;let o=n.workflow;if(typeof o=="object"&&o!==null&&!Array.isArray(o)){let i=o.exec_id;if(typeof i=="string"&&i!=="")return i}return null}var Lr,za=U(()=>{h();Lr=["workflow_card","workflow_ui_instance","workflow_run"];});function Nm(e){if(!e||!e.includes("schedule_id"))return null;let t;try{t=JSON.parse(e);}catch{return null}if(typeof t!="object"||t===null||Array.isArray(t))return null;let n=t,r=n.trigger;if(typeof r!="string"||!nG.includes(r))return null;let o=n.schedule_id;return typeof o=="string"&&o!==""?o:null}var Om,TO,EO,kO,yT,nG,_T=U(()=>{h();Om="tasks_run_columns",TO="idx_tasks_workflow_run_id",EO="idx_tasks_ws_schedule_started",kO="idx_tasks_ws_human_started",yT=[{name:TO,sql:`CREATE INDEX IF NOT EXISTS ${TO} ON tasks (workflow_run_id) WHERE workflow_run_id IS NOT NULL`},{name:EO,sql:`CREATE INDEX IF NOT EXISTS ${EO} ON tasks (workspace_id, started_at) WHERE schedule_id IS NOT NULL`},{name:kO,sql:`CREATE INDEX IF NOT EXISTS ${kO} ON tasks (workspace_id, started_at) WHERE actor_kind = 'human'`}],nG=["cron","cron_manual"];});function vO(e,t){let n=t===void 0?"":` at index ${t}`;if(!e||typeof e!="object")throw new R("VALIDATION",`Task log entry${n} must be an object`);if(typeof e.timestamp!="string"||typeof e.level!="string"||typeof e.message!="string")throw new R("VALIDATION",`Task log entry${n} must contain string timestamp, level, and message fields`);return {timestamp:e.timestamp,level:e.level,message:e.message}}function SO(e,t){if(t===null||t.trim()==="")return [];let n;try{n=JSON.parse(t);}catch(r){throw new R("DB_ERROR",`Malformed legacy task logs: ${e}`,r)}if(!Array.isArray(n))throw new R("DB_ERROR",`Malformed legacy task logs: ${e} (expected an array)`);try{return n.map((r,o)=>vO(r,o))}catch(r){throw r instanceof R?new R("DB_ERROR",`Malformed legacy task logs: ${e}`,r):r}}function CO(e){if(e.log_storage!=="blob"&&e.log_storage!=="events")throw new R("DB_ERROR",`Invalid task log storage for task: ${e.id}`);if(!Number.isInteger(e.last_log_seq)||e.last_log_seq<0)throw new R("DB_ERROR",`Invalid task log sequence for task: ${e.id}`);if(!Number.isInteger(e.log_revision)||e.log_revision<0)throw new R("DB_ERROR",`Invalid task log revision for task: ${e.id}`);return e.log_storage}function bO(e){return {taskId:e.id,source:CO(e),revision:e.log_revision,lastSeq:e.last_log_seq}}function dG(e){if(!Number.isInteger(e)||e<0)throw new R("VALIDATION","Task log tail limit must be a non-negative integer")}var yc,xm=U(()=>{h();at();Tt();St();Et();Pt();yc=class extends ve{dbPath;constructor(t={}){super(),t.dbPath?this.dbPath=t.dbPath:t.dbRoot&&(this.dbPath=join(t.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?vi(this.dbPath):super.resolveDbPath()}openHandle(t){let n=this.resolveDbPath();if(t){let o=dirname(n);existsSync(o)||mkdirSync(o,{recursive:true});}else if(!existsSync(n))throw new R("NOT_FOUND","Database not found");let r=X(n);if(t)try{$e(r.db,n);}catch(o){throw r.close(),o}return r}findStateRow(t,n){return t.db.select({id:m.id,log_storage:m.log_storage,last_log_seq:m.last_log_seq,log_revision:m.log_revision,logs:m.logs}).from(m).where(eq$1(m.id,n)).limit(1).get()}findStateRowInTransaction(t,n){return t.select({id:m.id,log_storage:m.log_storage,last_log_seq:m.last_log_seq,log_revision:m.log_revision,logs:m.logs}).from(m).where(eq$1(m.id,n)).limit(1).get()}requireStateRowInTransaction(t,n){let r=this.findStateRowInTransaction(t,n);if(!r)throw new R("NOT_FOUND",`Task not found: ${n}`);return r}appendLog(t,n){return this.appendLogs(t,[n])}appendLogs(t,n){let r=n.map((i,s)=>vO(i,s));if(r.length===0){let i=this.getLogState(t);if(!i)throw new R("NOT_FOUND",`Task not found: ${t}`);return i}let o=this.openHandle(true);try{return o.db.transaction(s=>{let a=this.requireStateRowInTransaction(s,t),d=CO(a);if(d==="blob"){let p=SO(t,a.logs);if(s.update(m).set({logs:JSON.stringify([...p,...r]),log_revision:sql`${m.log_revision} + 1`}).where(eq$1(m.id,t)).run().changes!==1)throw new R("NOT_FOUND",`Task not found: ${t}`);return {taskId:t,source:d,revision:a.log_revision+1,lastSeq:a.last_log_seq}}let c=a.last_log_seq+1,l=a.last_log_seq+r.length;if(s.insert(Ho).values(r.map((p,f)=>({task_id:t,seq:c+f,timestamp:p.timestamp,level:p.level,message:p.message}))).run(),s.update(m).set({last_log_seq:l,log_revision:sql`${m.log_revision} + 1`}).where(eq$1(m.id,t)).run().changes!==1)throw new R("NOT_FOUND",`Task not found: ${t}`);return {taskId:t,source:d,revision:a.log_revision+1,lastSeq:l}},{behavior:"immediate"})}catch(i){throw i instanceof R?i:new R("DB_ERROR","Failed to append task log",i)}finally{o.close();}}getLogState(t){if(!this.dbExists())return;let n=this.openHandle(false);try{let r=this.findStateRow(n,t);return r?bO(r):void 0}catch(r){throw r instanceof R?r:new R("DB_ERROR","Failed to read task log state",r)}finally{n.close();}}readLogs(t){return this.readLogsInternal(t)}readLogsTail(t,n){return dG(n),this.readLogsInternal(t,n)}readTail(t,n){return this.readLogsTail(t,n)}readLogsInternal(t,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.transaction(o=>{let i=this.findStateRowInTransaction(o,t);if(!i)return;let s=bO(i);if(s.source==="blob"){let l=SO(t,i.logs);return {...s,entries:n===void 0?l:l.slice(Math.max(0,l.length-n))}}let a=o.select({seq:Ho.seq,timestamp:Ho.timestamp,level:Ho.level,message:Ho.message}).from(Ho).where(eq$1(Ho.task_id,t)).orderBy(n===void 0?asc(Ho.seq):desc(Ho.seq)),c=(n===void 0?a.all():a.limit(n).all()).map(({timestamp:l,level:u,message:p})=>({timestamp:l,level:u,message:p}));return n!==void 0&&c.reverse(),{...s,entries:c}},{behavior:"deferred"})}catch(o){throw o instanceof R?o:new R("DB_ERROR","Failed to read task logs",o)}finally{r.close();}}};});var fG,_c,Dm=U(()=>{h();at();Tt();St();Et();Pt();fG=50,_c=class extends ve{dbPath;constructor(t={}){super(),t.dbPath?this.dbPath=t.dbPath:t.dbRoot&&(this.dbPath=`${t.dbRoot}/.crewx/crewx.db`);}resolveDbPath(){return this.dbPath??super.resolveDbPath()}openHandle(){let t=this.resolveDbPath(),n=X(t);try{return $e(n.db,t),n}catch(r){throw n.close(),r}}recordAccepted(t){if(t.actorKind!=="human"||!t.workspaceId||!t.actorId||!t.agentId)return false;let n;try{n=this.openHandle();let r=t.acceptedAt??new Date().toISOString();return n.db.insert(Qn).values({workspace_id:t.workspaceId,actor_id:t.actorId,agent_id:t.agentId,last_accepted_at:r}).onConflictDoUpdate({target:[Qn.workspace_id,Qn.actor_id,Qn.agent_id],set:{last_accepted_at:sql`MAX(${Qn.last_accepted_at}, excluded.last_accepted_at)`}}).run(),!0}catch(r){return console.error("[AgentSendHistoryRepository] Failed to record accepted agent send",r),false}finally{n?.close();}}findRecentAgents(t,n){let r;try{return r=this.openHandle(),r.db.select({agentId:Qn.agent_id,lastAcceptedAt:Qn.last_accepted_at}).from(Qn).where(and(eq$1(Qn.workspace_id,t),eq$1(Qn.actor_id,n))).orderBy(desc(Qn.last_accepted_at),asc(Qn.agent_id)).limit(fG).all()}catch(o){throw o instanceof R?o:new R("DB_ERROR","Failed to find recent agent sends",o)}finally{r?.close();}}};});function Lm(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function gG(e,t){return typeof e=="string"&&e.length>0?e:typeof t=="string"&&t.length>0?t:null}function AT(e){if(typeof e.provider!="string"||e.provider.length===0)return;let n=e.taskLogRepository.readLogs(e.taskId)?.entries.filter(p=>p.level==="stdout").map(p=>p.message).join(`
72
+ )`)}));});var uO=U(()=>{h();sqliteTable("ui_definition_archive",{definition_hash:text("definition_hash").primaryKey().notNull(),definition_json:text("definition_json").notNull(),created_at:integer("created_at").notNull()},e=>({definitionHashCheck:check("ui_definition_archive_definition_hash_ck",sql`length(${e.definition_hash}) = 64 AND ${e.definition_hash} NOT GLOB '*[^0-9a-f]*'`),definitionJsonCheck:check("ui_definition_archive_definition_json_ck",sql`json_valid(${e.definition_json}) AND json_type(${e.definition_json}) = 'object'`),createdAtCheck:check("ui_definition_archive_created_at_ck",sql`${e.created_at} >= 0`)}));});var tT,fO=U(()=>{h();tT=sqliteTable("projects",{id:text("id").primaryKey().notNull(),workspace_id:text("workspace_id").notNull(),name:text("name").notNull(),outcome:text("outcome").notNull(),due_date:text("due_date"),scene:text("scene").notNull().default("planning"),stages_json:text("stages_json").notNull(),stage_index:integer("stage_index").notNull(),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),accepted_at:text("accepted_at"),archived_at:text("archived_at")},e=>({idCheck:check("projects_id_ck",sql`${e.id} GLOB 'prj_*'`),sceneCheck:check("projects_scene_ck",sql`${e.scene} IN ('planning', 'plan_review', 'running', 'human_wait', 'limit_wait', 'failed_stop', 'analyzing_feedback', 'replanned', 'awaiting_review', 'accepted')`),stagesJsonCheck:check("projects_stages_json_ck",sql`json_valid(${e.stages_json}) AND json_type(${e.stages_json}) = 'array'`),stageIndexCheck:check("projects_stage_index_ck",sql`${e.stage_index} >= 1`)})),sqliteTable("project_criteria",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>tT.id,{onDelete:"cascade"}),position:integer("position").notNull(),statement:text("statement").notNull(),verify_status:text("verify_status").notNull().default("pending"),verified_at:text("verified_at"),evidence_json:text("evidence_json").notNull().default("[]"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},e=>({idCheck:check("project_criteria_id_ck",sql`${e.id} GLOB 'pjc_*'`),verifyStatusCheck:check("project_criteria_verify_status_ck",sql`${e.verify_status} IN ('pending', 'verifying', 'passed', 'failed')`),evidenceJsonCheck:check("project_criteria_evidence_json_ck",sql`json_valid(${e.evidence_json}) AND json_type(${e.evidence_json}) = 'array'`),projectPositionUnique:uniqueIndex("project_criteria_project_position_uq").on(e.project_id,e.position)})),sqliteTable("project_events",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>tT.id,{onDelete:"restrict"}),seq:integer("seq").notNull(),actor_type:text("actor_type").notNull(),actor_id:text("actor_id"),type:text("type").notNull(),title:text("title").notNull(),summary:text("summary"),payload_json:text("payload_json").notNull().default("{}"),created_at:text("created_at").notNull()},e=>({idCheck:check("project_events_id_ck",sql`${e.id} GLOB 'pje_*'`),actorTypeCheck:check("project_events_actor_type_ck",sql`${e.actor_type} IN ('user', 'project_manager', 'system')`),payloadJsonCheck:check("project_events_payload_json_ck",sql`json_valid(${e.payload_json}) AND json_type(${e.payload_json}) = 'object'`),projectSeqUnique:uniqueIndex("project_events_project_seq_uq").on(e.project_id,e.seq)}));});var Mu,Uu,te,iT=U(()=>{h();Mu=["THREAD_STATE","THREAD_PRIORITY"],Uu=["gray","blue","violet","green","amber","orange","red","pink"],te=sqliteTable("common_codes",{code_group:text("code_group").notNull(),code:text("code").notNull(),code_name:text("code_name"),color:text("color").notNull().default("gray"),sort_order:integer("sort_order").notNull(),workspace_id:text("workspace_id"),is_builtin:integer("is_builtin").notNull().default(0),is_archived:integer("is_archived").notNull().default(0),metadata:text("metadata"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},e=>({pk:primaryKey({columns:[e.code_group,e.code]}),metadataCheck:check("common_codes_metadata_ck",sql`${e.metadata} IS NULL OR (json_valid(${e.metadata}) AND json_type(${e.metadata}) = 'object')`),builtinCheck:check("common_codes_builtin_ck",sql`${e.is_builtin} IN (0, 1)`),archivedCheck:check("common_codes_archived_ck",sql`${e.is_archived} IN (0, 1)`),idxCommonCodesSelection:index("idx_common_codes_group_archived_order").on(e.code_group,e.is_archived,e.sort_order)}));});var aT,dT,cT,ws,JJ,lT,Ve,be,_e,bm=U(()=>{h();xu();aT=["thread.snapshot.imported","thread.title.changed","thread.priority.changed","thread.state.changed","thread.highlight.created","thread.highlight.updated","thread.highlight.deleted","thread.highlights.regenerated"],dT=["user","agent","system"],cT=["auto","manual"],ws=["decision","judgment","issue","result","pivot"],JJ=["active","dismissed"],lT=["queued","running","completed","failed"],Ve=sqliteTable("thread_events",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),seq:integer("seq").notNull(),type:text("type").notNull(),actor_type:text("actor_type").notNull(),payload_json:text("payload_json").notNull(),created_at:text("created_at").notNull(),actor_id:text("actor_id"),task_id:text("task_id"),highlight_id:text("highlight_id")},e=>({typeCheck:check("thread_events_type_ck",sql`${e.type} IN ('thread.snapshot.imported', 'thread.title.changed', 'thread.priority.changed', 'thread.state.changed', 'thread.highlight.created', 'thread.highlight.updated', 'thread.highlight.deleted', 'thread.highlights.regenerated')`),actorTypeCheck:check("thread_events_actor_type_ck",sql`${e.actor_type} IN ('user', 'agent', 'system')`),payloadJsonCheck:check("thread_events_payload_json_ck",sql`json_valid(${e.payload_json}) AND json_type(${e.payload_json}) = 'object'`),threadSeqIndex:index("idx_thread_events_thread_seq").on(e.thread_id,e.seq),threadCreatedIndex:index("idx_thread_events_thread_created").on(e.thread_id,e.created_at),threadSeqUnique:uniqueIndex("thread_events_thread_seq_uq").on(e.thread_id,e.seq)})),be=sqliteTable("thread_highlight_runs",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),request_id:text("request_id").notNull(),status:text("status").notNull(),detector_version:text("detector_version").notNull(),requested_at:text("requested_at").notNull(),started_at:text("started_at"),completed_at:text("completed_at"),error_code:text("error_code"),previous_auto_count:integer("previous_auto_count"),new_auto_count:integer("new_auto_count")},e=>({statusCheck:check("thread_highlight_runs_status_ck",sql`${e.status} IN ('queued', 'running', 'completed', 'failed')`),countCheck:check("thread_highlight_runs_counts_ck",sql`(${e.previous_auto_count} IS NULL OR ${e.previous_auto_count} >= 0) AND (${e.new_auto_count} IS NULL OR ${e.new_auto_count} >= 0)`),threadRequestUnique:uniqueIndex("thread_highlight_runs_thread_request_uq").on(e.thread_id,e.request_id),inProgressThreadUnique:uniqueIndex("thread_highlight_runs_in_progress_thread_uq").on(e.thread_id).where(sql`${e.status} IN ('queued', 'running')`),threadStatusRequestedIndex:index("idx_thread_highlight_runs_thread_status_requested").on(e.thread_id,e.status,e.requested_at)})),_e=sqliteTable("thread_highlights",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),source:text("source").notNull(),kind:text("kind").notNull(),status:text("status").notNull().default("active"),text:text("text"),covers_from_task_id:text("covers_from_task_id").notNull(),covers_to_task_id:text("covers_to_task_id").notNull(),revision:integer("revision").notNull().default(0),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),agent_id:text("agent_id"),source_task_id:text("source_task_id"),detector_version:text("detector_version"),content_fingerprint:text("content_fingerprint"),dismissed_at:text("dismissed_at")},e=>({sourceCheck:check("thread_highlights_source_ck",sql`${e.source} IN ('auto', 'manual')`),kindCheck:check("thread_highlights_kind_ck",sql`${e.kind} IN ('decision', 'judgment', 'issue', 'result', 'pivot')`),statusCheck:check("thread_highlights_status_ck",sql`${e.status} IN ('active', 'dismissed')`),activeTextCheck:check("thread_highlights_active_text_ck",sql`${e.status} = 'dismissed' OR (${e.text} IS NOT NULL AND length(${e.text}) > 0)`),coversCheck:check("thread_highlights_covers_ck",sql`length(${e.covers_from_task_id}) > 0 AND length(${e.covers_to_task_id}) > 0`),autoKeyCheck:check("thread_highlights_auto_key_ck",sql`${e.source} = 'manual' OR (${e.source} = 'auto' AND ${e.source_task_id} IS NOT NULL AND ${e.detector_version} IS NOT NULL AND ${e.content_fingerprint} IS NOT NULL AND length(${e.source_task_id}) > 0 AND length(${e.detector_version}) > 0 AND length(${e.content_fingerprint}) > 0)`),threadStatusCreatedIndex:index("idx_thread_highlights_thread_status_created").on(e.thread_id,e.status,e.created_at),threadCoversIndex:index("idx_thread_highlights_thread_covers").on(e.thread_id,e.covers_from_task_id,e.covers_to_task_id),autoIdempotencyUnique:uniqueIndex("thread_highlights_auto_idempotency_uq").on(e.thread_id,e.source_task_id,e.detector_version,e.content_fingerprint).where(sql`${e.source} = 'auto'`)}));});var mO=U(()=>{h();sqliteTable("storage_metadata",{source_kind:text("source_kind").notNull(),source_id:text("source_id").notNull(),utc_ts:text("utc_ts"),bytes:integer("bytes").notNull()},e=>({pk:primaryKey({columns:[e.source_kind,e.source_id]}),kindTimestampBytesIndex:index("idx_storage_metadata_kind_ts_bytes").on(e.source_kind,e.utc_ts,e.bytes)})),sqliteTable("storage_metadata_state",{unit:text("unit").primaryKey().notNull(),cursor_rowid:integer("cursor_rowid").notNull().default(0),end_rowid:integer("end_rowid"),complete:integer("complete").notNull().default(0),updated_at:text("updated_at").notNull()});});var Qn,hO=U(()=>{h();Qn=sqliteTable("agent_send_history",{workspace_id:text("workspace_id").notNull(),actor_id:text("actor_id").notNull(),agent_id:text("agent_id").notNull(),last_accepted_at:text("last_accepted_at").notNull()},e=>({pk:primaryKey({columns:[e.workspace_id,e.actor_id,e.agent_id]}),recentIndex:index("idx_agent_send_history_recent").on(e.workspace_id,e.actor_id,e.last_accepted_at,e.agent_id)}));});var fT,mr,Qe,Ce,bt,Dr,gT=U(()=>{h();xu();Am();fT=["cyan","orange","purple","blue"],mr=sqliteTable("sidebar_states",{workspace_id:text("workspace_id").primaryKey().references(()=>Dt.id,{onDelete:"cascade"}),revision:integer("revision").notNull().default(0),rail_collapsed:integer("rail_collapsed").notNull().default(0),seeded_at:text("seeded_at").notNull()},e=>({railCollapsedCheck:check("sidebar_states_rail_collapsed_ck",sql`${e.rail_collapsed} IN (0, 1)`)})),Qe=sqliteTable("sidebar_groups",{id:text("id").primaryKey(),workspace_id:text("workspace_id").notNull().references(()=>Dt.id,{onDelete:"cascade"}),name:text("name").notNull(),color:text("color").notNull(),collapsed:integer("collapsed").notNull().default(0),position:integer("position").notNull()},e=>({colorCheck:check("sidebar_groups_color_ck",sql`${e.color} IN ('cyan', 'orange', 'purple', 'blue')`),collapsedCheck:check("sidebar_groups_collapsed_ck",sql`${e.collapsed} IN (0, 1)`),idxSidebarGroupsWorkspacePosition:index("idx_sidebar_groups_workspace_position").on(e.workspace_id,e.position)})),Ce=sqliteTable("sidebar_tabs",{workspace_id:text("workspace_id").notNull().references(()=>Dt.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>Qe.id,{onDelete:"set null"}),position:integer("position").notNull()},e=>({pk:primaryKey({columns:[e.workspace_id,e.thread_id]})})),bt=sqliteTable("sidebar_closed_tabs",{id:integer("id").primaryKey({autoIncrement:true}),workspace_id:text("workspace_id").notNull().references(()=>Dt.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>Qe.id,{onDelete:"set null"}),position:integer("position").notNull(),closed_at:text("closed_at").notNull()},e=>({idxSidebarClosedTabsWorkspaceId:index("idx_sidebar_closed_tabs_workspace_id").on(e.workspace_id,e.id)})),Dr=sqliteTable("thread_reads",{workspace_id:text("workspace_id").notNull().references(()=>Dt.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>L.id,{onDelete:"cascade"}),read_through_at:text("read_through_at").notNull()},e=>({pk:primaryKey({columns:[e.workspace_id,e.thread_id]})}));});var Ze,AO=U(()=>{h();Ze=sqliteTable("schedule_runs",{id:text("id").primaryKey(),schedule_id:text("schedule_id").notNull(),workspace_id:text("workspace_id").notNull(),mode:text("mode").notNull(),trigger:text("trigger").notNull(),occurrence_key:text("occurrence_key"),task_id:text("task_id"),app_id:text("app_id"),schedule_name:text("schedule_name"),builtin_id:text("builtin_id"),command:text("command"),high_frequency:integer("high_frequency").notNull().default(0),status:text("status").notNull(),error_code:text("error_code"),exit_code:integer("exit_code"),signal:text("signal"),started_at:text("started_at").notNull(),finished_at:text("finished_at"),duration_ms:integer("duration_ms"),pid:integer("pid"),host_pid:integer("host_pid"),output_tail:text("output_tail"),output_bytes:integer("output_bytes"),output_truncated:integer("output_truncated").notNull().default(0)},e=>({idx_schedule_runs_workspace_started:index("idx_schedule_runs_workspace_started").on(e.workspace_id,sql`${e.started_at} DESC`),idx_schedule_runs_schedule_started:index("idx_schedule_runs_schedule_started").on(e.schedule_id,sql`${e.started_at} DESC`),idx_schedule_runs_task_id:index("idx_schedule_runs_task_id").on(e.task_id),idx_schedule_runs_running:index("idx_schedule_runs_running").on(e.workspace_id,e.started_at).where(sql`${e.status} = 'running'`)}));});var IO=U(()=>{h();sqliteTable("run_column_backfill",{name:text("name").primaryKey(),cursor:integer("cursor"),anchor_id:text("anchor_id"),completed_at:text("completed_at")});});var Pt=U(()=>{h();Am();mc();MP();BP();xu();jP();VP();qP();zP();XP();YP();eO();tO();rO();iO();sO();dO();cO();uO();fO();iT();bm();mO();hO();gT();AO();IO();});function Ga(e){return typeof e=="string"&&Lr.includes(e)}function ju(e){if(!e||!e.includes("workflow"))return null;let t;try{t=JSON.parse(e);}catch{return null}if(typeof t!="object"||t===null||Array.isArray(t))return null;let n=t,r=n.workflowRunId;if(typeof r=="string"&&r!=="")return r;let o=n.workflow;if(typeof o=="object"&&o!==null&&!Array.isArray(o)){let i=o.exec_id;if(typeof i=="string"&&i!=="")return i}return null}var Lr,za=U(()=>{h();Lr=["workflow_card","workflow_ui_instance","workflow_run"];});function Nm(e){if(!e||!e.includes("schedule_id"))return null;let t;try{t=JSON.parse(e);}catch{return null}if(typeof t!="object"||t===null||Array.isArray(t))return null;let n=t,r=n.trigger;if(typeof r!="string"||!nG.includes(r))return null;let o=n.schedule_id;return typeof o=="string"&&o!==""?o:null}var Om,TO,EO,kO,yT,nG,_T=U(()=>{h();Om="tasks_run_columns",TO="idx_tasks_workflow_run_id",EO="idx_tasks_ws_schedule_started",kO="idx_tasks_ws_human_started",yT=[{name:TO,sql:`CREATE INDEX IF NOT EXISTS ${TO} ON tasks (workflow_run_id) WHERE workflow_run_id IS NOT NULL`},{name:EO,sql:`CREATE INDEX IF NOT EXISTS ${EO} ON tasks (workspace_id, started_at) WHERE schedule_id IS NOT NULL`},{name:kO,sql:`CREATE INDEX IF NOT EXISTS ${kO} ON tasks (workspace_id, started_at) WHERE actor_kind = 'human'`}],nG=["cron","cron_manual"];});function vO(e,t){let n=t===void 0?"":` at index ${t}`;if(!e||typeof e!="object")throw new R("VALIDATION",`Task log entry${n} must be an object`);if(typeof e.timestamp!="string"||typeof e.level!="string"||typeof e.message!="string")throw new R("VALIDATION",`Task log entry${n} must contain string timestamp, level, and message fields`);return {timestamp:e.timestamp,level:e.level,message:e.message}}function SO(e,t){if(t===null||t.trim()==="")return [];let n;try{n=JSON.parse(t);}catch(r){throw new R("DB_ERROR",`Malformed legacy task logs: ${e}`,r)}if(!Array.isArray(n))throw new R("DB_ERROR",`Malformed legacy task logs: ${e} (expected an array)`);try{return n.map((r,o)=>vO(r,o))}catch(r){throw r instanceof R?new R("DB_ERROR",`Malformed legacy task logs: ${e}`,r):r}}function CO(e){if(e.log_storage!=="blob"&&e.log_storage!=="events")throw new R("DB_ERROR",`Invalid task log storage for task: ${e.id}`);if(!Number.isInteger(e.last_log_seq)||e.last_log_seq<0)throw new R("DB_ERROR",`Invalid task log sequence for task: ${e.id}`);if(!Number.isInteger(e.log_revision)||e.log_revision<0)throw new R("DB_ERROR",`Invalid task log revision for task: ${e.id}`);return e.log_storage}function bO(e){return {taskId:e.id,source:CO(e),revision:e.log_revision,lastSeq:e.last_log_seq}}function dG(e){if(!Number.isInteger(e)||e<0)throw new R("VALIDATION","Task log tail limit must be a non-negative integer")}var yc,xm=U(()=>{h();at();Tt();St();Et();Pt();yc=class extends ve{dbPath;constructor(t={}){super(),t.dbPath?this.dbPath=t.dbPath:t.dbRoot&&(this.dbPath=join(t.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?vi(this.dbPath):super.resolveDbPath()}openHandle(t){let n=this.resolveDbPath();if(t){let o=dirname(n);existsSync(o)||mkdirSync(o,{recursive:true});}else if(!existsSync(n))throw new R("NOT_FOUND","Database not found");let r=X(n);if(t)try{$e(r.db,n);}catch(o){throw r.close(),o}return r}findStateRow(t,n){return t.db.select({id:m.id,log_storage:m.log_storage,last_log_seq:m.last_log_seq,log_revision:m.log_revision,logs:m.logs}).from(m).where(eq$1(m.id,n)).limit(1).get()}findStateRowInTransaction(t,n){return t.select({id:m.id,log_storage:m.log_storage,last_log_seq:m.last_log_seq,log_revision:m.log_revision,logs:m.logs}).from(m).where(eq$1(m.id,n)).limit(1).get()}requireStateRowInTransaction(t,n){let r=this.findStateRowInTransaction(t,n);if(!r)throw new R("NOT_FOUND",`Task not found: ${n}`);return r}appendLog(t,n){return this.appendLogs(t,[n])}appendLogs(t,n){let r=n.map((i,s)=>vO(i,s));if(r.length===0){let i=this.getLogState(t);if(!i)throw new R("NOT_FOUND",`Task not found: ${t}`);return i}let o=this.openHandle(true);try{return o.db.transaction(s=>{let a=this.requireStateRowInTransaction(s,t),d=CO(a);if(d==="blob"){let p=SO(t,a.logs);if(s.update(m).set({logs:JSON.stringify([...p,...r]),log_revision:sql`${m.log_revision} + 1`}).where(eq$1(m.id,t)).run().changes!==1)throw new R("NOT_FOUND",`Task not found: ${t}`);return {taskId:t,source:d,revision:a.log_revision+1,lastSeq:a.last_log_seq}}let c=a.last_log_seq+1,l=a.last_log_seq+r.length;if(s.insert(Ho).values(r.map((p,f)=>({task_id:t,seq:c+f,timestamp:p.timestamp,level:p.level,message:p.message}))).run(),s.update(m).set({last_log_seq:l,log_revision:sql`${m.log_revision} + 1`}).where(eq$1(m.id,t)).run().changes!==1)throw new R("NOT_FOUND",`Task not found: ${t}`);return {taskId:t,source:d,revision:a.log_revision+1,lastSeq:l}},{behavior:"immediate"})}catch(i){throw i instanceof R?i:new R("DB_ERROR","Failed to append task log",i)}finally{o.close();}}getLogState(t){if(!this.dbExists())return;let n=this.openHandle(false);try{let r=this.findStateRow(n,t);return r?bO(r):void 0}catch(r){throw r instanceof R?r:new R("DB_ERROR","Failed to read task log state",r)}finally{n.close();}}readLogs(t){return this.readLogsInternal(t)}readLogsTail(t,n){return dG(n),this.readLogsInternal(t,n)}readTail(t,n){return this.readLogsTail(t,n)}readLogsInternal(t,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.transaction(o=>{let i=this.findStateRowInTransaction(o,t);if(!i)return;let s=bO(i);if(s.source==="blob"){let l=SO(t,i.logs).map((u,p)=>({...u,seq:p+1}));return {...s,entries:n===void 0?l:l.slice(Math.max(0,l.length-n))}}let a=o.select({seq:Ho.seq,timestamp:Ho.timestamp,level:Ho.level,message:Ho.message}).from(Ho).where(eq$1(Ho.task_id,t)).orderBy(n===void 0?asc(Ho.seq):desc(Ho.seq)),c=(n===void 0?a.all():a.limit(n).all()).map(({seq:l,timestamp:u,level:p,message:f})=>({seq:l,timestamp:u,level:p,message:f}));return n!==void 0&&c.reverse(),{...s,entries:c}},{behavior:"deferred"})}catch(o){throw o instanceof R?o:new R("DB_ERROR","Failed to read task logs",o)}finally{r.close();}}};});var fG,_c,Dm=U(()=>{h();at();Tt();St();Et();Pt();fG=50,_c=class extends ve{dbPath;constructor(t={}){super(),t.dbPath?this.dbPath=t.dbPath:t.dbRoot&&(this.dbPath=`${t.dbRoot}/.crewx/crewx.db`);}resolveDbPath(){return this.dbPath??super.resolveDbPath()}openHandle(){let t=this.resolveDbPath(),n=X(t);try{return $e(n.db,t),n}catch(r){throw n.close(),r}}recordAccepted(t){if(t.actorKind!=="human"||!t.workspaceId||!t.actorId||!t.agentId)return false;let n;try{n=this.openHandle();let r=t.acceptedAt??new Date().toISOString();return n.db.insert(Qn).values({workspace_id:t.workspaceId,actor_id:t.actorId,agent_id:t.agentId,last_accepted_at:r}).onConflictDoUpdate({target:[Qn.workspace_id,Qn.actor_id,Qn.agent_id],set:{last_accepted_at:sql`MAX(${Qn.last_accepted_at}, excluded.last_accepted_at)`}}).run(),!0}catch(r){return console.error("[AgentSendHistoryRepository] Failed to record accepted agent send",r),false}finally{n?.close();}}findRecentAgents(t,n){let r;try{return r=this.openHandle(),r.db.select({agentId:Qn.agent_id,lastAcceptedAt:Qn.last_accepted_at}).from(Qn).where(and(eq$1(Qn.workspace_id,t),eq$1(Qn.actor_id,n))).orderBy(desc(Qn.last_accepted_at),asc(Qn.agent_id)).limit(fG).all()}catch(o){throw o instanceof R?o:new R("DB_ERROR","Failed to find recent agent sends",o)}finally{r?.close();}}};});function Lm(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function gG(e,t){return typeof e=="string"&&e.length>0?e:typeof t=="string"&&t.length>0?t:null}function AT(e){if(typeof e.provider!="string"||e.provider.length===0)return;let n=e.taskLogRepository.readLogs(e.taskId)?.entries.filter(p=>p.level==="stdout").map(p=>p.message).join(`
73
73
  `)??"";if(!n.trim())return;let r=nc(e.provider);if(!r)return;let o;try{o=r.parseResultMeta?.(n);}catch{return {stdout:n,adapter:r}}let i=gG(o?.model,e.model),s=o?.usage;if(!s)return {stdout:n,adapter:r};let a=Lm(s.inputTokens),d=Lm(s.outputTokens),c=Lm(s.cachedInputTokens),l=Nf(Lm(s.costUsd),a,d,c,i);return a!==0||d!==0||c!==0||l!==0?{stdout:n,adapter:r,usage:{inputTokens:a,outputTokens:d,cachedInputTokens:c,costUsd:l,model:i}}:{stdout:n,adapter:r}}var IT=U(()=>{h();xg();ea();});function Ka(e){let t=new Set;for(let n of e)for(let r of mG.get(n)??[n])t.add(r);return [...t]}function TT(e){if(e)try{let t=JSON.parse(e);if(typeof t!="object"||t===null||Array.isArray(t))return;let n=t.terminalReason;return typeof n=="string"&&hG.has(n)?n:void 0}catch{return}}function Zn(e){let t=TT(e.metadata);if(t)return t;if(e.status==="runner_lost")return "runner_lost";if(e.status==="stopped")return "user_stop";if(e.status==="failed"&&typeof e.error=="string"){if(Vu.stopped.test(e.error))return "user_stop";if(Vu.runnerLost.test(e.error))return "runner_lost"}}function Lt(e){switch(e.status){case "stopped":case "pending":case "running":case "paused":case "success":return e.status;case "completed":case "done":return "success";case "error":case "runner_lost":return "failed";case "failed":{let t=TT(e.metadata);return t==="user_stop"?"stopped":t?"failed":typeof e.error=="string"&&Vu.stopped.test(e.error)?"stopped":"failed"}default:return e.status}}function yG(e){if(!e)return {};try{let t=JSON.parse(e);return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:{}}catch{return {}}}function Xa(e){let t=Lt(e);return e.status==="runner_lost"&&TT(e.metadata)===void 0?{...e,status:t,metadata:JSON.stringify({...yG(e.metadata),terminalReason:"runner_lost"})}:{...e,status:t}}function NO(e){return Lt(e)==="failed"&&Zn(e)!=="runner_lost"}var OO,co,mG,Vu,hG,Rs=U(()=>{h();OO=["success","failed","stopped"],co=["success","completed","done","failed","error","stopped","runner_lost"],mG=new Map([["success",["success","completed","done"]],["failed",["failed","error","runner_lost"]]]);Vu={stopped:/^(Killed by user|Stopped by user|Cancelled by user|사용자에 의해 중지됨)/,runnerLost:/^Reaped: (process not found|pid never recorded|stale workflow run)/},hG=new Set(["user_stop","runner_lost","launch_failed"]);});function ET(e,t,n=1){let r=process.env[e];if(r===void 0||r==="")return t;let o=Number(r);return !Number.isFinite(o)||o<=0?t:Math.max(n,Math.trunc(o))}function Qa(){return ET("CREWX_TASK_HEARTBEAT_MS",1e4,200)}function Ss(){return ET("CREWX_TASK_HEARTBEAT_STALE_MS",3e4)}function Ic(){return ET("CREWX_TASK_HEARTBEAT_HARD_STALE_MS",18e5)}function Ac(e){return typeof e=="number"&&Number.isFinite(e)?Math.trunc(e):0}function Mm(e){let t=typeof e=="object"&&e!==null&&"code"in e?String(e.code):e instanceof Error?e.name:typeof e;console.warn(`[crewx] task heartbeat write failed (${t}); execution continues`);}function _G(e){return e?{id:e.id,status:e.status,run_epoch:e.run_epoch,stop_requested_at:e.stop_requested_at,stop_requested_epoch:e.stop_requested_epoch,pid:e.pid,metadata:e.metadata,started_at:e.started_at,duration_ms:e.duration_ms}:null}function xO(e,t){return !!e.stop_requested_at&&Ac(e.stop_requested_epoch)===Ac(t)}function Um(e,t){let n=Ac(t.runEpoch);if(!(t.writeHeartbeat===false?true:e.heartbeatTask({id:t.taskId,runEpoch:n})))return {accepted:false,row:null};let o=_G(e.getTask(t.taskId));return !o||o.status!=="running"||Ac(o.run_epoch)!==n?{accepted:false,row:o}:{accepted:true,row:o}}function LO(e,t){let n=Ya.get(e);return !n||t&&n!==t?false:(clearInterval(n.timer),Ya.delete(e),true)}function kT(e,t){let n=Ya.get(e);return !n||t!==void 0&&n.runEpoch!==Ac(t)?false:LO(e,n)}function MO(e,t){let n=Ac(t.runEpoch);kT(t.taskId);let r=true,o=null;try{let c=Um(e,{...t,runEpoch:n});r=c.accepted,o=c.row;}catch(c){Mm(c);}if(!r)return false;let i=Qa(),s=Math.min(i,1e3),a=setInterval(()=>{let c=Ya.get(t.taskId);if(!(!c||c.timer!==a))try{c.heartbeatElapsedMs+=s;let l=c.heartbeatElapsedMs>=i,u=Um(e,{taskId:t.taskId,runEpoch:n,writeHeartbeat:l});if(!u.accepted){LO(t.taskId,c);return}l&&(c.heartbeatElapsedMs%=i,c.lastHeartbeatAt=Date.now()),u.row&&xO(u.row,n)&&!c.stopRequested&&(c.stopRequested=!0,t.onStopRequested&&Promise.resolve(t.onStopRequested(u.row)).catch(Mm));}catch(l){Mm(l);}},s),d={timer:a,runEpoch:n,stopRequested:false,lastHeartbeatAt:Date.now(),heartbeatElapsedMs:0};return Ya.set(t.taskId,d),typeof a=="object"&&a!==null&&"unref"in a&&a.unref(),o&&xO(o,n)&&t.onStopRequested&&(d.stopRequested=true,Promise.resolve(t.onStopRequested(o)).catch(Mm)),true}var Bm,Fm,Hm,DO,Ya,Tc=U(()=>{h();Bm=1e4,Fm=3e4,Hm=18e5,DO=1e3;Ya=new Map;});function Vm(e,t=Date.now(),n=Ju){let r=e?Date.parse(e):Number.NaN,o=typeof t=="number"?t:Date.parse(t),i=ST(n,Ju,0);return Number.isFinite(r)&&Number.isFinite(o)&&o-r>i?"forced":"cooperative"}function CT(e){let t=[],n=typeof e.pid=="number"&&e.pid>0?e.pid:void 0;n!==void 0&&t.push({pid:n,startedAt:e.pid_started_at});let r=jO(e.metadata),o=r.ownership==="runner"&&typeof r.providerPid=="number"&&Number.isSafeInteger(r.providerPid)&&r.providerPid>0?r.providerPid:void 0;if(o!==void 0&&o!==n){let i=r.providerPidStartedAt;t.push({pid:o,startedAt:typeof i=="string"?i:null});}return t}async function PT(e,t={}){if(e.pid===process.pid||e.pid===process.ppid)return {verdict:"unproven",ownership:"not_owned",reason:"pid is this process or its parent"};let n=typeof e.startedAt=="string"?Date.parse(e.startedAt):Number.NaN,r=Number.isFinite(n),o=t.legacyStartBoundaryMs;if(!r&&o===void 0)return {verdict:"unproven",ownership:"unknown",reason:"no start time recorded"};let i=t.processControlOptions??{},s=t.processControl?.checkProcessOwnershipAsync??YA,a=t.processControl?.readProcessIdentityAsync??Pv,d;try{d=await s(e.pid,t.ownershipMarkers??vT,i);}catch{d="unknown";}let c;try{c=await a(e.pid,i);}catch{c={status:"unknown"};}if(c.status==="not_found")return {verdict:"unproven",ownership:"not_found",reason:"process is no longer running"};if(c.status!=="found")return {verdict:"unproven",ownership:"unknown",reason:"start time could not be read"};let l=new Date(c.startedAtMs).toISOString();if(r){if(Math.abs(c.startedAtMs-n)>Ig)return {verdict:"reused",reason:`started ${l}, not the recorded ${e.startedAt}`}}else return o!==void 0&&c.startedAtMs>o?{verdict:"reused",reason:`started ${l}, after the row's last heartbeat`}:{verdict:"unproven",ownership:"unknown",reason:"no start time recorded and it started before the row's last heartbeat"};return d!=="owned"?{verdict:"unproven",ownership:d,reason:"command line has no owned marker"}:c.groupId!==null&&c.groupId!==e.pid?{verdict:"unproven",ownership:"not_owned",reason:"pid does not lead its process group"}:{verdict:"owned"}}async function HO(e,t={}){let n=await PT(e,t);return n.verdict==="owned"?"owned":n.verdict==="reused"?"not_owned":n.ownership}function ST(e,t,n){return e===void 0||!Number.isFinite(e)?t:Math.max(n,Math.trunc(e))}function jO(e){if(!e)return {};try{let t=JSON.parse(e);if(typeof t=="object"&&t!==null&&!Array.isArray(t))return t}catch{}return {}}function AG(e){if(!e)return;let t=jO(e.metadata).stopMethod;return t==="cooperative"||t==="forced"?t:void 0}function Wo(e,t){if(!e)return {status:"not_running",finalStatus:"not_running",...t?{pid:t}:{}};let n=typeof e.pid=="number"&&e.pid>0?e.pid:t;if(e.status==="stopped"){let r=AG(e);return {status:"stopped",finalStatus:e.status,...r?{method:r}:{},...n?{pid:n}:{}}}return {status:"not_running",finalStatus:e.status,...n?{pid:n}:{}}}function $O(e,t,n="Process owner could not be verified"){let r=t??(e.pid&&e.pid>0?e.pid:void 0);return {status:"ownership_unverified",finalStatus:e.status,...r?{pid:r}:{},error:n}}function Rn(e,t,n){let r=n??(e?.pid&&e.pid>0?e.pid:void 0);return {status:"failed",finalStatus:e?.status??null,...r?{pid:r}:{},error:t}}function wT(e,t){return Rn(e,NT,t)}function IG(e,t){if(!e.heartbeat_at)return false;let n=Date.parse(e.heartbeat_at);return Number.isFinite(n)?t-n<=Ss():false}function TG(e){return {...e.processControlOptions,...e.platform?{platform:e.platform}:{}}}function EG(e,t,n){let r=e.getTask(t);if(!r||r.status!=="running")return Wo(r,n)}async function kG(e,t,n,r){let o=Date.now()+n;for(;;){let i=EG(e,t);if(i)return i;let s=o-Date.now();if(s<=0)return;await new Promise(a=>{setTimeout(a,Math.min(r,s));});}}async function UO(e,t,n){let r=new Date().toISOString(),o={origin:n.origin??"internal",...n.callerPid!==void 0?{callerPid:n.callerPid}:{},...n.callerTaskId!==void 0?{callerTaskId:n.callerTaskId}:{}},i=e.requestTaskStop({id:t,requestedAt:r,...o}),s=e.getTask(t);if(!i.accepted){if(i.status==="pending"){let w=e.stopPendingTask(t,void 0,void 0,{...o,at:r}),E=e.getTask(t);if(w||!E||E.status!=="running")return Wo(E);if(i=e.requestTaskStop({id:t,requestedAt:r,...o}),!i.accepted&&i.status!=="running"||!i.accepted&&!i.alreadyRequestedAt)return Wo(e.getTask(t))}else if(!(i.status==="running"&&i.alreadyRequestedAt))return Wo(s)}let a=i.runEpoch,d=ST(n.graceMs,Ju,0),c=ST(n.pollMs,bT,1),l=await kG(e,t,d,c);if(l)return l;let u=e.getTask(t);if(!u||u.status!=="running")return Wo(u);let p=CT(u),f=p.map(w=>w.pid),g=f[0];if(!g){let w=e.finalizeTaskStop({id:t,runEpoch:a,method:"forced"}),E=e.getTask(t);return w||E?.status!=="running"?Wo(E):Rn(E,"Failed to finalize task stop")}let y=TG(n);if(!IG(u,Date.now())){for(let w of p)if(await HO(w,{ownershipMarkers:n.ownershipMarkers,processControl:n.processControl,processControlOptions:y})!=="owned")return $O(u)}let _=n.processControl?.terminateProcessTree??dn;for(let w of f){let E;try{E=await _(w,{...y,signal:ls});}catch(S){E={status:"failed",pid:w,method:y.platform==="win32"?"taskkill":"process-group",error:S instanceof Error?S.message:String(S)};}if(E.status==="failed")return Rn(e.getTask(t),E.error??"Failed to terminate process tree")}let A=e.finalizeTaskStop({id:t,runEpoch:a,method:"forced"}),I=e.getTask(t);return A||I?.status!=="running"?Wo(I,g):Rn(I,"Task changed before stop was finalized")}function BO(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}function FO(e){return Number.isSafeInteger(e)&&e>=0}function RT(e){return typeof e=="number"&&Number.isFinite(e)?Math.trunc(e):0}function wG(e){return {...e.processControlOptions,...e.platform?{platform:e.platform}:{}}}async function VO(e,t){let n=e.getTask(t.taskId);if(!n||n.status!=="running")return wT(n,BO(t.targetPid)?t.targetPid:void 0);if(!FO(t.sourceRunEpoch)||!FO(t.settleRunEpoch)||RT(n.run_epoch)!==t.settleRunEpoch)return Rn(n,Wu,t.targetPid);if(t.workspaceId!==void 0&&n.workspace_id!==t.workspaceId)return Rn(n,qu,t.targetPid);let r=new Date().toISOString(),o;try{o=e.requestTaskStop({id:t.taskId,requestedAt:r,sourceRunEpoch:t.sourceRunEpoch,settleRunEpoch:t.settleRunEpoch,...t.workspaceId!==void 0?{workspaceId:t.workspaceId}:{}});}catch{return Rn(n,xT,t.targetPid)}let i=e.getTask(t.taskId);if(!i||i.status!=="running")return wT(i,t.targetPid);if(o.runEpoch!==t.settleRunEpoch||RT(i.run_epoch)!==t.settleRunEpoch)return Rn(i,Wu,t.targetPid);if(t.workspaceId!==void 0&&i.workspace_id!==t.workspaceId)return Rn(i,qu,t.targetPid);if(!BO(t.targetPid))return Rn(i,OT);let s=wG(t);if(await HO({pid:t.targetPid,startedAt:i.pid_started_at},{ownershipMarkers:t.ownershipMarkers,processControl:t.processControl,processControlOptions:s})!=="owned")return $O(i,t.targetPid);let d=e.getTask(t.taskId);if(!d||d.status!=="running")return wT(d,t.targetPid);if(RT(d.run_epoch)!==t.settleRunEpoch)return Rn(d,Wu,t.targetPid);if(t.workspaceId!==void 0&&d.workspace_id!==t.workspaceId)return Rn(d,qu,t.targetPid);let c=t.processControl?.terminateProcessTree??dn,l;try{l=await c(t.targetPid,{...s,signal:ls});}catch{return Rn(e.getTask(t.taskId),jm,t.targetPid)}if(l.status==="failed")return Rn(e.getTask(t.taskId),jm,t.targetPid);let u;try{u=e.finalizeTaskStop({id:t.taskId,runEpoch:t.settleRunEpoch,method:"forced"});}catch{return Rn(e.getTask(t.taskId),$m,t.targetPid)}return u?Wo(e.getTask(t.taskId),t.targetPid):Rn(e.getTask(t.taskId),$m,t.targetPid)}function Wm(e,t,n={}){if(typeof e=="string"){let r=e,o=t??{};return Promise.resolve().then(()=>(lo(),WO)).then(({TaskRepository:i})=>UO(new i,r,o))}return UO(e,t,n)}var Ju,bT,vT,OT,Wu,qu,NT,jm,$m,xT,qm=U(()=>{h();mi();Tc();Ju=5e3,bT=250;vT=["crewx","claude","codex","opencode","grok","node"];OT="INSTRUCTION_STOP_TARGET_PID_MISSING",Wu="INSTRUCTION_STOP_EPOCH_MISMATCH",qu="INSTRUCTION_STOP_WORKSPACE_MISMATCH",NT="INSTRUCTION_STOP_GENERATION_ALREADY_SETTLED",jm="INSTRUCTION_STOP_PROCESS_TERMINATION_FAILED",$m="INSTRUCTION_STOP_SETTLE_CAS_FAILED",xT="INSTRUCTION_STOP_REQUEST_FAILED";});var WO={};Ol(WO,{CANONICAL_USER_STOP_ERROR:()=>Xu,DEFAULT_TASK_REAPER_TICK_INTERVAL_MS:()=>Qm,HOST_SHUTDOWN_TERMINAL_ERROR:()=>KO,PENDING_ADOPT_GRACE_MS:()=>YO,PID_NULL_REAP_GRACE_MS:()=>VT,RATED_TASK_EXCERPT_MAX_CHARS:()=>Zu,RATED_TASK_LIST_MAX_LIMIT:()=>eh,TASK_HEARTBEAT_HARD_STALE_MS:()=>Hm,TASK_HEARTBEAT_INTERVAL_MS:()=>Bm,TASK_HEARTBEAT_STALE_MS:()=>Fm,TASK_RATINGS:()=>Zm,TaskRatingError:()=>ed,TaskRepository:()=>Za,WORKFLOW_ANCHOR_TASK_KINDS:()=>Lr,buildRatedTasksCountQuery:()=>ZO,buildRatedTasksQuery:()=>QO,countRatedTasks:()=>GT,hasRecordedUsage:()=>Qu,isWorkflowAnchorTaskKind:()=>Ga,listRatedTasks:()=>JT,mergeTerminalReason:()=>Yu,resolveTaskHeartbeatHardStaleMs:()=>Ic,resolveTaskHeartbeatIntervalMs:()=>Qa,resolveTaskHeartbeatStaleMs:()=>Ss,setTaskRating:()=>qT});function po(e){return Xa(e)}function LT(e){return Xa(e)}function MT(){return or$1(...Lr.map(e=>like(m.metadata,`%"kind":"${e}"%`)))}function qO(){return and(...Lr.map(e=>notLike(m.metadata,`%"kind":"${e}"%`)))}function BT(e=m.model,t=m.metadata){let n=sql`
74
74
  CASE
75
75
  WHEN ${e} LIKE 'claude-%' OR ${e} IN ('opus', 'sonnet', 'haiku', 'opus[1m]', 'sonnet[1m]') THEN 'claude'
@@ -397,7 +397,7 @@ ${e??""}
397
397
  `||e==="\r"||e==="\f"}function Nq(e){if(!e)return false;let t=e.charCodeAt(0);return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||e==="_"||e===":"||e==="-"}function xq(e){return e===void 0||Au(e)||e==="/"||e===">"}function CC(e,t){let n=e[t],r=t+1;for(;r<e.length;){if(e[r]===n)return {end:r+1,value:e.slice(t+1,r)};r++;}return {end:e.length,value:e.slice(t+1)}}function Dq(e,t){if(e[t]==='"'||e[t]==="'")return CC(e,t);let n=t;for(;n<e.length&&!Au(e[n])&&e[n]!==">";)n++;return {end:n,value:e.slice(t,n)}}function Lq(e,t){let n=Object.create(null),r=t+Lg.length,o=false;for(;r<e.length;){let i=e[r];if(i===">")return {end:r+1,closed:true,attrs:n,privileged:o};if(Au(i)||i==="/"){r++;continue}if(i==='"'||i==="'"){r=CC(e,r).end;continue}let s=r;for(;r<e.length&&Nq(e[r]);)r++;if(r===s){r++;continue}let a=e.slice(s,r);for(a==="proof"&&(o=true);r<e.length&&Au(e[r]);)r++;if(e[r]!=="="){n[a]="";continue}for(r++;r<e.length&&Au(e[r]);)r++;let d=Dq(e,r);n[a]=d.value,r=d.end;}return {end:e.length,closed:false,attrs:n,privileged:o}}function RI(e,t){let n=Lq(e,t);return {start:t,end:n.end,raw:e.slice(t,n.end),closed:n.closed,attrs:n.attrs,privileged:n.privileged}}function Iu(e){let t=[],n=0;for(;n<e.length;){let r=e.indexOf(Lg,n);if(r<0)break;if(!xq(e[r+Lg.length])){n=r+Lg.length;continue}let o=RI(e,r);if(t.push(o),!o.closed)break;n=o.end;}return t}function PC(e){return e&&Iu(e).find(r=>!!r.attrs.run_id?.trim())?.attrs.run_id?.trim()||void 0}Nt();Pa();Ha();var EP="[workflow card omitted from AI context]",$I="[workflow UI instance omitted from AI context]",T1=/\{\s*"instanceId"\s*:\s*"uic_[A-Za-z0-9_-]+"\s*\}/g;function mm(e){return typeof e=="string"?e.replace(T1,$I):""}function hm(e){if(typeof e!="string"||e.length===0)return "";let t="",n=0;for(let r of Iu(e))if(t+=e.slice(n,r.start),t+=r.privileged?EP:r.raw,n=r.end,!r.closed)break;return t+=e.slice(n),t}function E1(e){return e.replace(/</g,"&lt;").replace(/>/g,"&gt;")}function k1(e,t){if(typeof e!="string")return "";let n=t?hm(e):e,r=t?mm(n):n;return E1(r)}function VI(e){return e.map(t=>({...t,text:k1(t.text,t.isAssistant)}))}function kP(e,t){let n=VI(e);if(!t||t.length===0)return n;let r=[];for(let o of t)try{if(Object.keys(o).sort().join(",")!=="availableActions,definition,facts,instanceId,pendingDecision,recentChanges,revision"||!/^uic_[A-Za-z0-9_-]+$/.test(o.instanceId))continue;let s=Ae(o),a=JSON.stringify(s);if(typeof a!="string"||Me(a)>64*1024)continue;r.push(s);}catch{}return r.length===0?n:[...n,{text:`CrewX workflow context:
398
398
  ${JSON.stringify(r)}`,isAssistant:true}]}function WI(e){return VI(e.messages.map(t=>({id:t.id,text:t.text,isAssistant:t.isAssistant,taskId:t.taskId,timestamp:t.timestamp,metadata:t.metadata,files:void 0})))}h();cs();Is();lo();var HG=new Set(["Read","Grep","Find","Glob"]),jG=["git status","git log","git branch","git diff --stat","git show","git remote","git rev-parse","git ls-files","pwd","ls ","echo ","cat ","head ","tail ","crewx skill tsserver find","crewx skill tsserver refs","crewx skill tsserver type","npx skill tsserver find","npx skill tsserver refs","npx skill tsserver type","crewx memory index","crewx memory find","crewx memory get","crewx doc toc","crewx doc section","crewx doc status","crewx search","crewx agent ls","crewx agent list"],$G=[/\bgit\s+(commit|push|pull|merge|rebase|reset|checkout|switch|add|rm)\b/,/\bnpm\s+(install|ci|publish|run\s+(test|lint|build))\b/,/\bnpx\s+tsc\b/,/\bpnpm\s+(install|run)\b/,/\bvitest\b/,/\bjest\b/],VG=8e3,WG=100,qG=3,JG=Number.MAX_SAFE_INTEGER,YT=3e3;function td(){return typeof performance<"u"?performance.now():Date.now()}function GG(e){let t=e.toLowerCase();return t==="bash"||t==="terminal"?"Bash":t==="read"||t==="view"?"Read":t==="edit"||t==="apply_patch"?"Edit":t==="write"?"Write":t==="grep"||t==="rg"?"Grep":t==="glob"||t==="find"?"Find":e}function zG(e,t){if(HG.has(e))return true;if(e!=="Bash"||!t)return false;let n=t.split(`
399
399
  `)[0].trimStart();return $G.some(r=>r.test(n))?false:jG.some(r=>n.startsWith(r))}function bc(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function KG(e,t,n){if(e!=="Read"||!t)return "ok";let o=t.split(`
400
- `).find(i=>i.trim()&&!i.startsWith("Read "))?.trim()??t.trim();if(!o)return "unknown";try{let i=fn.statSync(o);if(n){let s=Date.parse(n);if(!Number.isNaN(s)&&i.mtimeMs>s)return "stale"}return "ok"}catch{return "unknown"}}var XG=new Set([...Object.keys(br),"gemini"]);function YG(e){let t=e?.split("/").pop()?.trim();return t&&XG.has(t)?t:void 0}function QG(e){if(e.type==="system"&&e.subtype==="init")return true;if(e.type!=="assistant"&&e.type!=="user")return false;let t=e.message;return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function ZG(e){let t={types:new Set,claudeShaped:false,typedRows:0};for(let n of e)try{let r=JSON.parse(n);if(typeof r!="object"||r===null||typeof r.type!="string"||!r.type)continue;t.types.add(r.type),t.typedRows+=1,!t.claudeShaped&&QG(r)&&(t.claudeShaped=!0);}catch{}return t}function ez(e){let{types:t}=e;return t.has("turn.started")||t.has("thread.started")?"codex":t.has("assistant.message_delta")?"copilot":t.has("step_start")&&t.has("step_finish")?"opencode":t.has("system")&&t.has("result")?"claude":t.has("init")&&t.has("message")?"gemini":t.has("result")&&t.has("assistant")||e.claudeShaped?"claude":t.has("tool_call")||t.has("tool_call_update")?"grok":null}function tz(e,t){if(!Array.isArray(e))return {entries:[],readable:true};let n=e,r=n.filter(d=>d.level==="stdout"&&d.message).map(d=>d.message),o=ZG(r),i=r.length>0?YG(t)??ez(o):null,s;try{s=nz(n,i);}catch{return {entries:[],readable:false}}let a=s.length>0||r.length===0||i!==null&&o.typedRows>0;return {entries:s,readable:a}}function nz(e,t){let n=[],r=HA(t??void 0);for(let[s,a]of e.entries())a.level==="info"&&a.message?n.push(...ro(a.message,a.timestamp)):a.level==="stdout"&&a.message&&t&&n.push(...r.parse(a.timestamp??"",a.message,s));let o=new Map,i=[];for(let s of n)if(s.type==="tool_use"){let a={tool:GG(s.toolName??""),input:s.toolInput??null,result:null,isError:false},d=s.toolUseId;if(d){if(o.has(d)){o.get(d).input=a.input;continue}o.set(d,a);}i.push(a);}else if(s.type==="tool_result"){if(s.toolUseId&&o.has(s.toolUseId)){let a=o.get(s.toolUseId);a.isError=s.isError===true,a.result=s.resultPreview??null;}else if(t!=="codex"){for(let a=i.length-1;a>=0;a--)if(i[a].result===null){i[a].isError=s.isError===true,i[a].result=s.resultPreview??null;break}}}return i}function rz(e,t){let n=[];for(let r of e){let o=r.tool==="Bash"?r.input?.split(`
400
+ `).find(i=>i.trim()&&!i.startsWith("Read "))?.trim()??t.trim();if(!o)return "unknown";try{let i=fn.statSync(o);if(n){let s=Date.parse(n);if(!Number.isNaN(s)&&i.mtimeMs>s)return "stale"}return "ok"}catch{return "unknown"}}var XG=new Set([...Object.keys(br),"gemini"]);function YG(e){let t=e?.split("/").pop()?.trim();return t&&XG.has(t)?t:void 0}function QG(e){if(e.type==="system"&&e.subtype==="init")return true;if(e.type!=="assistant"&&e.type!=="user")return false;let t=e.message;return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function ZG(e){let t={types:new Set,claudeShaped:false,typedRows:0};for(let n of e)try{let r=JSON.parse(n);if(typeof r!="object"||r===null||typeof r.type!="string"||!r.type)continue;t.types.add(r.type),t.typedRows+=1,!t.claudeShaped&&QG(r)&&(t.claudeShaped=!0);}catch{}return t}function ez(e){let{types:t}=e;return t.has("turn.started")||t.has("thread.started")?"codex":t.has("assistant.message_delta")?"copilot":t.has("step_start")&&t.has("step_finish")?"opencode":t.has("system")&&t.has("result")?"claude":t.has("init")&&t.has("message")?"gemini":t.has("result")&&t.has("assistant")||e.claudeShaped?"claude":t.has("tool_call")||t.has("tool_call_update")?"grok":null}function tz(e,t){if(!Array.isArray(e))return {entries:[],readable:true};let n=e,r=n.filter(d=>d.level==="stdout"&&d.message).map(d=>d.message),o=ZG(r),i=r.length>0?YG(t)??ez(o):null,s;try{s=nz(n,i);}catch{return {entries:[],readable:false}}let a=s.length>0||r.length===0||i!==null&&o.typedRows>0;return {entries:s,readable:a}}function nz(e,t){let n=[],r=HA(t??void 0);for(let[s,a]of e.entries())if(a.level==="info"&&a.message)n.push(...ro(a.message,a.timestamp));else if(a.level==="stdout"&&a.message&&t){let d=typeof a.seq=="number"&&Number.isFinite(a.seq)?a.seq:s;n.push(...r.parse(a.timestamp??"",a.message,d));}let o=new Map,i=[];for(let s of n)if(s.type==="tool_use"){let a={tool:GG(s.toolName??""),input:s.toolInput??null,result:null,isError:false},d=s.toolUseId;if(d){if(o.has(d)){o.get(d).input=a.input;continue}o.set(d,a);}i.push(a);}else if(s.type==="tool_result"){if(s.toolUseId&&o.has(s.toolUseId)){let a=o.get(s.toolUseId);a.isError=s.isError===true,a.result=s.resultPreview??null;}else if(t!=="codex"){for(let a=i.length-1;a>=0;a--)if(i[a].result===null){i[a].isError=s.isError===true,i[a].result=s.resultPreview??null;break}}}return i}function rz(e,t){let n=[];for(let r of e){let o=r.tool==="Bash"?r.input?.split(`
401
401
  `)[0]?.slice(0,150)??null:r.input?.slice(0,150)??null,i=zG(r.tool,r.input)&&!r.isError&&r.result!==null;n.push({tool:r.tool,cmd:o,result:r.result,status:KG(r.tool,r.input,t),reusable:i});}return n}function oz(e,t){try{return e.readLogs(t)?.entries??[]}catch{return []}}function iz(e,t){try{let n=e.findTaskStatus(t)?.metadata;if(!n)return;let r=JSON.parse(n);if(typeof r!="object"||r===null||Array.isArray(r))return;let o=r.provider;return typeof o=="string"?o:void 0}catch{return}}function nN(e){let t=e.entry,n=`tool="${bc(t.tool)}"`,r=t.cmd?` cmd="${bc(t.cmd)}"`:"",o="";if(t.reusable&&(o=t.status==="stale"?' reused="stale"':' reused="ok"'),t.reusable&&t.status==="stale")return [` <entry ${n}${r}${o}>\u26A0\uFE0F changed since \u2014 re-read</entry>`];if(t.result){let i=hm(t.result),s=Math.min(e.bodyCharsShown??i.length,i.length);return [` <entry ${n}${r}${o}>`,i.length>s?bc(i.slice(0,s))+` \u2026 [truncated, ${s}/${i.length} chars shown]`:bc(i)," </entry>"]}return [` <entry ${n}${r}${o} />`]}function rN(e){let t=["<activity_log>"],{entries:n,omissions:r,tokenCap:o,totalEntries:i}=e,s=r.reduce((a,d)=>a+d.count,0);if(n.length===0&&s===0)t.push(" <!-- no activity found in previous tasks -->");else if(t.push(" <!-- tool activity from previous tasks -->"),r.length>0){t.push(` <!-- activity_log_budget token_cap="${o}" included_entries="${n.length}" omitted_entries="${s}" total_entries="${i}" -->`);for(let a of r)t.push(` <!-- omitted_entries reason="${bc(a.reason)}" count="${a.count}": ${bc(a.message)} -->`);}return t.push("</activity_log>"),t}function oN(e){return nN(e).join(`
402
402
  `)}function KT(e){let t=rN(e);return e.entries.length>0&&t.splice(t.length-1,0,...e.entries.flatMap(n=>nN(n))),t}function sz(e){return typeof e!="number"||!Number.isFinite(e)||e<0?VG:Math.floor(e)}function az(e,t,n){let r=Math.floor(t/WG),o=Math.pow(2,e+r);return !Number.isFinite(o)||o<=0?0:Math.floor(n/o)}function eN(e,t){let n=Math.pow(2,t+qG);return !Number.isFinite(n)||n<=0?0:Math.floor(e/n)}function XT(e,t,n,r){let o=e.result?.length??null,i=o===null?null:Math.min(o,Math.max(0,n));return {entry:e,newestIndex:t,bodyLimitChars:n,bodyCharsShown:o===null?null:Math.max(0,Math.min(r??i??0,i??0)),originalBodyChars:o}}function th(e,t){let n=[];return e>0&&n.push({reason:"token_cap",count:e,message:"older entries omitted after the per-task token cap was reached"}),t>0&&n.push({reason:"repository_limit",count:t,message:"older entries omitted by the explicit repository safety limit before budgeting"}),n}function iN(e){let t=th(e.omittedByTokenCap,e.repositoryLimitOmitted);return KT({entries:e.entries,omissions:t,tokenCap:e.tokenCap,totalEntries:e.totalEntries}).join(`
403
403
  `)}function Cs(e,t){let n=e(t);return !Number.isFinite(n)||n<0?0:Math.floor(n)}function dz(e){let{entry:t,bodyLimitChars:n}=e;if(!t.result)return null;let r=Math.min(t.result.length,Math.max(0,n)),o=y=>{let _=XT(t,e.newestIndex,n,y),A=`${oN(_)}
@@ -29,7 +29,7 @@ ${r.join(`
29
29
  OR
30
30
  (${t.status} IN ('deferred', 'failed') AND ${t.code} IS NOT NULL
31
31
  AND ${t.to_revision} IS NULL)
32
- )`)}));});var zi=v(()=>{_();sqliteTable("ui_definition_archive",{definition_hash:text("definition_hash").primaryKey().notNull(),definition_json:text("definition_json").notNull(),created_at:integer("created_at").notNull()},t=>({definitionHashCheck:check("ui_definition_archive_definition_hash_ck",sql`length(${t.definition_hash}) = 64 AND ${t.definition_hash} NOT GLOB '*[^0-9a-f]*'`),definitionJsonCheck:check("ui_definition_archive_definition_json_ck",sql`json_valid(${t.definition_json}) AND json_type(${t.definition_json}) = 'object'`),createdAtCheck:check("ui_definition_archive_created_at_ck",sql`${t.created_at} >= 0`)}));});var Ji,Vi=v(()=>{_();Ji=sqliteTable("projects",{id:text("id").primaryKey().notNull(),workspace_id:text("workspace_id").notNull(),name:text("name").notNull(),outcome:text("outcome").notNull(),due_date:text("due_date"),scene:text("scene").notNull().default("planning"),stages_json:text("stages_json").notNull(),stage_index:integer("stage_index").notNull(),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),accepted_at:text("accepted_at"),archived_at:text("archived_at")},t=>({idCheck:check("projects_id_ck",sql`${t.id} GLOB 'prj_*'`),sceneCheck:check("projects_scene_ck",sql`${t.scene} IN ('planning', 'plan_review', 'running', 'human_wait', 'limit_wait', 'failed_stop', 'analyzing_feedback', 'replanned', 'awaiting_review', 'accepted')`),stagesJsonCheck:check("projects_stages_json_ck",sql`json_valid(${t.stages_json}) AND json_type(${t.stages_json}) = 'array'`),stageIndexCheck:check("projects_stage_index_ck",sql`${t.stage_index} >= 1`)})),sqliteTable("project_criteria",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>Ji.id,{onDelete:"cascade"}),position:integer("position").notNull(),statement:text("statement").notNull(),verify_status:text("verify_status").notNull().default("pending"),verified_at:text("verified_at"),evidence_json:text("evidence_json").notNull().default("[]"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},t=>({idCheck:check("project_criteria_id_ck",sql`${t.id} GLOB 'pjc_*'`),verifyStatusCheck:check("project_criteria_verify_status_ck",sql`${t.verify_status} IN ('pending', 'verifying', 'passed', 'failed')`),evidenceJsonCheck:check("project_criteria_evidence_json_ck",sql`json_valid(${t.evidence_json}) AND json_type(${t.evidence_json}) = 'array'`),projectPositionUnique:uniqueIndex("project_criteria_project_position_uq").on(t.project_id,t.position)})),sqliteTable("project_events",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>Ji.id,{onDelete:"restrict"}),seq:integer("seq").notNull(),actor_type:text("actor_type").notNull(),actor_id:text("actor_id"),type:text("type").notNull(),title:text("title").notNull(),summary:text("summary"),payload_json:text("payload_json").notNull().default("{}"),created_at:text("created_at").notNull()},t=>({idCheck:check("project_events_id_ck",sql`${t.id} GLOB 'pje_*'`),actorTypeCheck:check("project_events_actor_type_ck",sql`${t.actor_type} IN ('user', 'project_manager', 'system')`),payloadJsonCheck:check("project_events_payload_json_ck",sql`json_valid(${t.payload_json}) AND json_type(${t.payload_json}) = 'object'`),projectSeqUnique:uniqueIndex("project_events_project_seq_uq").on(t.project_id,t.seq)}));});var Es,Rs,C,Ss=v(()=>{_();Es=["THREAD_STATE","THREAD_PRIORITY"],Rs=["gray","blue","violet","green","amber","orange","red","pink"],C=sqliteTable("common_codes",{code_group:text("code_group").notNull(),code:text("code").notNull(),code_name:text("code_name"),color:text("color").notNull().default("gray"),sort_order:integer("sort_order").notNull(),workspace_id:text("workspace_id"),is_builtin:integer("is_builtin").notNull().default(0),is_archived:integer("is_archived").notNull().default(0),metadata:text("metadata"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},t=>({pk:primaryKey({columns:[t.code_group,t.code]}),metadataCheck:check("common_codes_metadata_ck",sql`${t.metadata} IS NULL OR (json_valid(${t.metadata}) AND json_type(${t.metadata}) = 'object')`),builtinCheck:check("common_codes_builtin_ck",sql`${t.is_builtin} IN (0, 1)`),archivedCheck:check("common_codes_archived_ck",sql`${t.is_archived} IN (0, 1)`),idxCommonCodesSelection:index("idx_common_codes_group_archived_order").on(t.code_group,t.is_archived,t.sort_order)}));});var Xi,Yi,Qi,Zi,ea,j,q,U,ta=v(()=>{_();En();Xi=["thread.snapshot.imported","thread.title.changed","thread.priority.changed","thread.state.changed","thread.highlight.created","thread.highlight.updated","thread.highlight.deleted","thread.highlights.regenerated"],Yi=["user","agent","system"],Qi=["auto","manual"],Zi=["decision","judgment","issue","result","pivot"],ea=["queued","running","completed","failed"],j=sqliteTable("thread_events",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),seq:integer("seq").notNull(),type:text("type").notNull(),actor_type:text("actor_type").notNull(),payload_json:text("payload_json").notNull(),created_at:text("created_at").notNull(),actor_id:text("actor_id"),task_id:text("task_id"),highlight_id:text("highlight_id")},t=>({typeCheck:check("thread_events_type_ck",sql`${t.type} IN ('thread.snapshot.imported', 'thread.title.changed', 'thread.priority.changed', 'thread.state.changed', 'thread.highlight.created', 'thread.highlight.updated', 'thread.highlight.deleted', 'thread.highlights.regenerated')`),actorTypeCheck:check("thread_events_actor_type_ck",sql`${t.actor_type} IN ('user', 'agent', 'system')`),payloadJsonCheck:check("thread_events_payload_json_ck",sql`json_valid(${t.payload_json}) AND json_type(${t.payload_json}) = 'object'`),threadSeqIndex:index("idx_thread_events_thread_seq").on(t.thread_id,t.seq),threadCreatedIndex:index("idx_thread_events_thread_created").on(t.thread_id,t.created_at),threadSeqUnique:uniqueIndex("thread_events_thread_seq_uq").on(t.thread_id,t.seq)})),q=sqliteTable("thread_highlight_runs",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),request_id:text("request_id").notNull(),status:text("status").notNull(),detector_version:text("detector_version").notNull(),requested_at:text("requested_at").notNull(),started_at:text("started_at"),completed_at:text("completed_at"),error_code:text("error_code"),previous_auto_count:integer("previous_auto_count"),new_auto_count:integer("new_auto_count")},t=>({statusCheck:check("thread_highlight_runs_status_ck",sql`${t.status} IN ('queued', 'running', 'completed', 'failed')`),countCheck:check("thread_highlight_runs_counts_ck",sql`(${t.previous_auto_count} IS NULL OR ${t.previous_auto_count} >= 0) AND (${t.new_auto_count} IS NULL OR ${t.new_auto_count} >= 0)`),threadRequestUnique:uniqueIndex("thread_highlight_runs_thread_request_uq").on(t.thread_id,t.request_id),inProgressThreadUnique:uniqueIndex("thread_highlight_runs_in_progress_thread_uq").on(t.thread_id).where(sql`${t.status} IN ('queued', 'running')`),threadStatusRequestedIndex:index("idx_thread_highlight_runs_thread_status_requested").on(t.thread_id,t.status,t.requested_at)})),U=sqliteTable("thread_highlights",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),source:text("source").notNull(),kind:text("kind").notNull(),status:text("status").notNull().default("active"),text:text("text"),covers_from_task_id:text("covers_from_task_id").notNull(),covers_to_task_id:text("covers_to_task_id").notNull(),revision:integer("revision").notNull().default(0),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),agent_id:text("agent_id"),source_task_id:text("source_task_id"),detector_version:text("detector_version"),content_fingerprint:text("content_fingerprint"),dismissed_at:text("dismissed_at")},t=>({sourceCheck:check("thread_highlights_source_ck",sql`${t.source} IN ('auto', 'manual')`),kindCheck:check("thread_highlights_kind_ck",sql`${t.kind} IN ('decision', 'judgment', 'issue', 'result', 'pivot')`),statusCheck:check("thread_highlights_status_ck",sql`${t.status} IN ('active', 'dismissed')`),activeTextCheck:check("thread_highlights_active_text_ck",sql`${t.status} = 'dismissed' OR (${t.text} IS NOT NULL AND length(${t.text}) > 0)`),coversCheck:check("thread_highlights_covers_ck",sql`length(${t.covers_from_task_id}) > 0 AND length(${t.covers_to_task_id}) > 0`),autoKeyCheck:check("thread_highlights_auto_key_ck",sql`${t.source} = 'manual' OR (${t.source} = 'auto' AND ${t.source_task_id} IS NOT NULL AND ${t.detector_version} IS NOT NULL AND ${t.content_fingerprint} IS NOT NULL AND length(${t.source_task_id}) > 0 AND length(${t.detector_version}) > 0 AND length(${t.content_fingerprint}) > 0)`),threadStatusCreatedIndex:index("idx_thread_highlights_thread_status_created").on(t.thread_id,t.status,t.created_at),threadCoversIndex:index("idx_thread_highlights_thread_covers").on(t.thread_id,t.covers_from_task_id,t.covers_to_task_id),autoIdempotencyUnique:uniqueIndex("thread_highlights_auto_idempotency_uq").on(t.thread_id,t.source_task_id,t.detector_version,t.content_fingerprint).where(sql`${t.source} = 'auto'`)}));});var ra=v(()=>{_();sqliteTable("storage_metadata",{source_kind:text("source_kind").notNull(),source_id:text("source_id").notNull(),utc_ts:text("utc_ts"),bytes:integer("bytes").notNull()},t=>({pk:primaryKey({columns:[t.source_kind,t.source_id]}),kindTimestampBytesIndex:index("idx_storage_metadata_kind_ts_bytes").on(t.source_kind,t.utc_ts,t.bytes)})),sqliteTable("storage_metadata_state",{unit:text("unit").primaryKey().notNull(),cursor_rowid:integer("cursor_rowid").notNull().default(0),end_rowid:integer("end_rowid"),complete:integer("complete").notNull().default(0),updated_at:text("updated_at").notNull()});});var Ie,sa=v(()=>{_();Ie=sqliteTable("agent_send_history",{workspace_id:text("workspace_id").notNull(),actor_id:text("actor_id").notNull(),agent_id:text("agent_id").notNull(),last_accepted_at:text("last_accepted_at").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.actor_id,t.agent_id]}),recentIndex:index("idx_agent_send_history_recent").on(t.workspace_id,t.actor_id,t.last_accepted_at,t.agent_id)}));});var aa,da=v(()=>{_();En();dr();sqliteTable("sidebar_states",{workspace_id:text("workspace_id").primaryKey().references(()=>te.id,{onDelete:"cascade"}),revision:integer("revision").notNull().default(0),rail_collapsed:integer("rail_collapsed").notNull().default(0),seeded_at:text("seeded_at").notNull()},t=>({railCollapsedCheck:check("sidebar_states_rail_collapsed_ck",sql`${t.rail_collapsed} IN (0, 1)`)})),aa=sqliteTable("sidebar_groups",{id:text("id").primaryKey(),workspace_id:text("workspace_id").notNull().references(()=>te.id,{onDelete:"cascade"}),name:text("name").notNull(),color:text("color").notNull(),collapsed:integer("collapsed").notNull().default(0),position:integer("position").notNull()},t=>({colorCheck:check("sidebar_groups_color_ck",sql`${t.color} IN ('cyan', 'orange', 'purple', 'blue')`),collapsedCheck:check("sidebar_groups_collapsed_ck",sql`${t.collapsed} IN (0, 1)`),idxSidebarGroupsWorkspacePosition:index("idx_sidebar_groups_workspace_position").on(t.workspace_id,t.position)})),sqliteTable("sidebar_tabs",{workspace_id:text("workspace_id").notNull().references(()=>te.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>aa.id,{onDelete:"set null"}),position:integer("position").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.thread_id]})})),sqliteTable("sidebar_closed_tabs",{id:integer("id").primaryKey({autoIncrement:true}),workspace_id:text("workspace_id").notNull().references(()=>te.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>aa.id,{onDelete:"set null"}),position:integer("position").notNull(),closed_at:text("closed_at").notNull()},t=>({idxSidebarClosedTabsWorkspaceId:index("idx_sidebar_closed_tabs_workspace_id").on(t.workspace_id,t.id)})),sqliteTable("thread_reads",{workspace_id:text("workspace_id").notNull().references(()=>te.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),read_through_at:text("read_through_at").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.thread_id]})}));});var ua=v(()=>{_();sqliteTable("schedule_runs",{id:text("id").primaryKey(),schedule_id:text("schedule_id").notNull(),workspace_id:text("workspace_id").notNull(),mode:text("mode").notNull(),trigger:text("trigger").notNull(),occurrence_key:text("occurrence_key"),task_id:text("task_id"),app_id:text("app_id"),schedule_name:text("schedule_name"),builtin_id:text("builtin_id"),command:text("command"),high_frequency:integer("high_frequency").notNull().default(0),status:text("status").notNull(),error_code:text("error_code"),exit_code:integer("exit_code"),signal:text("signal"),started_at:text("started_at").notNull(),finished_at:text("finished_at"),duration_ms:integer("duration_ms"),pid:integer("pid"),host_pid:integer("host_pid"),output_tail:text("output_tail"),output_bytes:integer("output_bytes"),output_truncated:integer("output_truncated").notNull().default(0)},t=>({idx_schedule_runs_workspace_started:index("idx_schedule_runs_workspace_started").on(t.workspace_id,sql`${t.started_at} DESC`),idx_schedule_runs_schedule_started:index("idx_schedule_runs_schedule_started").on(t.schedule_id,sql`${t.started_at} DESC`),idx_schedule_runs_task_id:index("idx_schedule_runs_task_id").on(t.task_id),idx_schedule_runs_running:index("idx_schedule_runs_running").on(t.workspace_id,t.started_at).where(sql`${t.status} = 'running'`)}));});var ca=v(()=>{_();sqliteTable("run_column_backfill",{name:text("name").primaryKey(),cursor:integer("cursor"),anchor_id:text("anchor_id"),completed_at:text("completed_at")});});var vt=v(()=>{_();dr();Gt();Ti();yi();En();Si();Ai();Oi();Ni();vi();Ci();Li();Mi();Hi();Fi();qi();Wi();Gi();zi();Vi();Ss();ta();ra();sa();da();ua();ca();});function bn(t){return typeof t=="string"&&pt.includes(t)}function la(t){if(!t||!t.includes("workflow"))return null;let e;try{e=JSON.parse(t);}catch{return null}if(typeof e!="object"||e===null||Array.isArray(e))return null;let n=e,r=n.workflowRunId;if(typeof r=="string"&&r!=="")return r;let s=n.workflow;if(typeof s=="object"&&s!==null&&!Array.isArray(s)){let o=s.exec_id;if(typeof o=="string"&&o!=="")return o}return null}var pt,Tr=v(()=>{_();pt=["workflow_card","workflow_ui_instance","workflow_run"];});var zt,xs,pa,vs=v(()=>{_();zt={"claude-fable-5-1":{input:10,cachedInput:.25,output:50},"claude-fable-5":{input:10,cachedInput:1,output:50},"claude-opus-5-5":{input:4,cachedInput:.2,output:20},"claude-opus-5":{input:5,cachedInput:.5,output:25},"claude-opus-4-8":{input:5,cachedInput:.5,output:25},"claude-opus-4-7":{input:5,cachedInput:.5,output:25},"claude-opus-4-6":{input:5,cachedInput:.5,output:25},"claude-sonnet-5-5":{input:2,cachedInput:.1,output:10},"claude-sonnet-5":{input:2,cachedInput:.2,output:10},"claude-sonnet-4-6":{input:3,cachedInput:.3,output:15},"claude-haiku-5-5":{input:.1,cachedInput:.01,output:.5},"claude-haiku-4-5":{input:1,cachedInput:.1,output:5},"gpt-6-astra":{input:10,cachedInput:1,output:50},"gpt-6.1-sol":{input:2,cachedInput:.1,output:10},"gpt-6-sol":{input:2,cachedInput:.2,output:10},"gpt-6-luna":{input:.1,cachedInput:.01,output:.5},"gpt-5.6-sol":{input:4,cachedInput:.4,output:20},"gpt-5.6-terra":{input:2,cachedInput:.2,output:12},"gpt-5.6-luna":{input:.2,cachedInput:.02,output:1.2},"gpt-5.5":{input:5,cachedInput:.5,output:30},"gpt-5.4":{input:2.5,cachedInput:.25,output:15},"gpt-5.4-mini":{input:.75,cachedInput:.075,output:4.5},"gpt-5.3-codex":{input:1.75,cachedInput:.175,output:14},"gpt-5-mini":{input:.4,cachedInput:.1,output:1.6},"gpt-4.1":{input:2,cachedInput:.5,output:8},"gpt-4o":{input:2.5,cachedInput:1.25,output:10},"glm-5.2":{input:1.4,cachedInput:.26,output:4.4},"glm-5.1":{input:1.4,cachedInput:.26,output:4.4},"gemini-3.7-flash":{input:1.5,cachedInput:.15,output:7.5},"gemini-3.6-flash":{input:1.5,cachedInput:.15,output:7.5},"grok-4.7":{input:2,cachedInput:.5,output:6},"grok-4.6":{input:2,cachedInput:.5,output:6},"grok-4.5":{input:2,cachedInput:.3,output:6}},xs=new Set(["gpt-5.3-codex-spark"]),pa=new Set(["auto","claude-fable-5","claude-fable-5-1","claude-haiku-4-5","claude-haiku-5-5","claude-opus-4-6","claude-opus-4-6-thinking","claude-opus-4-6[1m]","claude-opus-4-7","claude-opus-4-7[1m]","claude-opus-4-8","claude-opus-4-8[1m]","claude-opus-5","claude-opus-5-5","claude-sonnet-4-6","claude-sonnet-4-6[1m]","claude-sonnet-5","claude-sonnet-5-5","gemini-3.1-pro","gemini-3.6-flash","gemini-3.7-flash","glm-5.1","glm-5.2","gpt-4.1","gpt-4o","gpt-5-mini","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini","gpt-5.5","gpt-5.6-luna","gpt-5.6-sol","gpt-5.6-terra","gpt-6-astra","gpt-6-luna","gpt-6-sol","gpt-6.1-sol","gpt-oss-120b","grok-4.5","grok-4.6","grok-4.7"]);});function Cs(t){let e=t.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let n=e.lastIndexOf("/");return n>=0&&(e=e.slice(n+1)),e=e.replace(/-\d{8}$/,""),e}function vl(t){if(!t)return console.warn("[pricing] missing model id; cost is being recorded as 0"),Nn;let e=Cs(t),n=xl[e];if(n)return wr[n]??zt[n]??Nn;if(wr[e])return wr[e];if(zt[e])return zt[e];if(xs.has(e))return console.warn(`[pricing] unpublished model pricing: ${t}, cost_usd=0`),Nn;if(pa.has(e))return console.warn(`[pricing] missing catalog pricing: ${t}, cost_usd=0`),Nn;let r={...zt,...wr};for(let s of Object.keys(r))if(e.includes(s))return r[s];return console.warn(`[pricing] Unknown model: ${t}, cost_usd=0`),Nn}function Cl(t,e,n,r=0,s){let o=vl(n),i=Math.min(r,t),d=(t-i)*o.input/1e6,c=i*o.cachedInput/1e6,l=e*o.output/1e6;return d+c+l}function fa(t,e,n,r,s,o){return t&&t>0?t:!e&&!n?0:Cl(e??0,n??0,s,r??0)}var xl,Nn,wr,yr=v(()=>{_();vs();vs();xl={opus:"claude-opus-4-8",sonnet:"claude-sonnet-4-6",haiku:"claude-haiku-4-5","codex-mini":"gpt-5.3-codex",codex:"gpt-5.3-codex"},Nn={input:0,cachedInput:0,output:0},wr={};});function ma(t){if(!t||!t.includes("schedule_id"))return null;let e;try{e=JSON.parse(t);}catch{return null}if(typeof e!="object"||e===null||Array.isArray(e))return null;let n=e,r=n.trigger;if(typeof r!="string"||!Pl.includes(r))return null;let s=n.schedule_id;return typeof s=="string"&&s!==""?s:null}var Pl,ka=v(()=>{_();Pl=["cron","cron_manual"];});function Ds(t){return t instanceof Error?t:t===void 0?void 0:new Error(String(t))}function Ta(t){return typeof t=="object"&&t!==null&&"code"in t?String(t.code):void 0}function Er(t){return Number.isSafeInteger(t)&&t>0}function Ul(t,e){try{let n=spawnSync(t,e,{encoding:"utf8",timeout:Ps,windowsHide:!0});return {status:n.status,stdout:typeof n.stdout=="string"?n.stdout:"",stderr:typeof n.stderr=="string"?n.stderr:"",error:n.error}}catch(n){return {status:null,stdout:"",stderr:"",error:Ds(n)}}}function Fl(t,e){return new Promise(n=>{let r;try{r=spawn(t,e,{windowsHide:!0});}catch(c){n({status:null,stdout:"",stderr:"",error:Ds(c)});return}let s="",o="",i=false,u,d=setTimeout(()=>{try{r.kill();}catch{}u({status:null,stdout:s,stderr:o,error:new Error(`Command timed out after ${Ps}ms`)});},Ps);u=c=>{i||(i=true,clearTimeout(d),n(c));},r.stdout?.setEncoding("utf8"),r.stderr?.setEncoding("utf8"),r.stdout?.on("data",c=>{s+=String(c);}),r.stderr?.on("data",c=>{o+=String(c);}),r.once("error",c=>{u({status:null,stdout:s,stderr:o,error:c});}),r.once("close",c=>{u({status:c,stdout:s,stderr:o});});})}async function Ls(t,e,n){return n.runCommandAsync?n.runCommandAsync(t,e):n.runCommand?n.runCommand(t,e):Fl(t,e)}function ql(t){return new Promise(e=>{setTimeout(e,Math.max(0,t));})}function Bl(){return new Promise(t=>{setImmediate(t);})}function ft(t,e=process.kill){try{return e(t,0),"alive"}catch(n){return Ta(n)==="ESRCH"?"not_found":Ta(n)==="EPERM"?"alive":"unknown"}}function Wl(t,e){let n=ft(-t,e),r=ft(t,e);return n==="alive"||r==="alive"?"alive":n==="unknown"||r==="unknown"?"unknown":"not_found"}async function ya(t,e,n,r){let s=Math.max(0,n),o=Math.max(1,r.pollIntervalMs??$l),i=Date.now()+s,u,d=s===0,c=r.sleep?Promise.resolve().then(()=>r.sleep(s)).then(()=>{},()=>{}):new Promise(l=>{u=setTimeout(l,s);});c.then(()=>{d=true;});try{for(await Bl();;){let l=Wl(t,e);if(l==="not_found")return l;let p=i-Date.now();if(d||p<=0)return l;await Promise.race([c,ql(Math.min(o,p))]);}}finally{u!==void 0&&clearTimeout(u);}}async function wa(t,e,n,r,s){let o=await ya(t,e,s.hardConfirmMs??Hl,{...s,sleep:void 0});return o==="not_found"?n?{status:"not_found",pid:t,method:r}:{status:"terminated",pid:t,method:r}:o==="alive"?{status:"failed",pid:t,method:r,error:"Process is still running after termination attempt"}:{status:"failed",pid:t,method:r,error:"Unable to verify process termination"}}async function Ea(t,e,n={}){if(!Er(t))return "unknown";let r=n.platform??process.platform,s=r==="win32"?"powershell.exe":"ps",o=r==="win32"?["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",`$p = Get-CimInstance -ClassName Win32_Process -Filter 'ProcessId = ${t}' -ErrorAction Stop; if ($null -ne $p) { [Console]::Write([string]$p.CommandLine) }`]:["-p",String(t),"-o","command="],i;try{i=await Ls(s,o,n);}catch{return "unknown"}if(i.error||i.status!==0)return "unknown";let u=i.stdout.trim();if(!u)return "not_found";let d=r==="win32"?u.toLowerCase():u;return e.filter(l=>l.trim().length>0).some(l=>{let p=r==="win32"?l.toLowerCase():l;return d.includes(p)})?"owned":"not_owned"}function Kl(t){let e=Gl.exec(t.trim());if(!e)return;let[,n="0",r="0",s="0",o="0"]=e;return ((Number(n)*24+Number(r))*60+Number(s))*60+Number(o)}function Jl(t){let e=t.trim(),n=zl.exec(e);if(n){let[,s,o,i,u,d,c,l,p]=n;return Date.UTC(Number(s),Number(o)-1,Number(i),Number(u),Number(d),Number(c),Math.trunc(Number(l)/1e3))-Number(p)*6e4}let r=Date.parse(e);return Number.isFinite(r)?r:void 0}function Ra(t,e){return e==="win32"?{command:"powershell.exe",args:["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",`$p = Get-CimInstance -ClassName Win32_Process -Filter 'ProcessId = ${t}' -ErrorAction Stop; if ($null -ne $p) { [Console]::Write($p.CreationDate.ToUniversalTime().ToString('o')) }`]}:{command:"ps",args:["-p",String(t),"-o","pgid=","-o","etime=","-o","stat="]}}function Sa(t,e,n){if(t.error)return {status:"unknown"};let r=t.stdout.trim();if(!r)return t.status===0||t.status===1?{status:"not_found"}:{status:"unknown"};if(t.status!==0)return {status:"unknown"};if(e==="win32"){let i=Jl(r);return i===void 0?{status:"unknown"}:{status:"found",startedAtMs:i,groupId:null}}let s=jl.exec(r),o=s?Kl(s[2]):void 0;return !s||o===void 0?{status:"unknown"}:s[3].startsWith("Z")?{status:"unknown"}:{status:"found",startedAtMs:n-o*1e3,groupId:Number(s[1])}}function Ia(t,e={}){if(!Er(t))return {status:"unknown"};let n=e.platform??process.platform,{command:r,args:s}=Ra(t,n),o=e.runCommand??Ul,i;try{i=o(r,s);}catch{return {status:"unknown"}}return Sa(i,n,Date.now())}async function Aa(t,e={}){if(!Er(t))return {status:"unknown"};let n=e.platform??process.platform,{command:r,args:s}=Ra(t,n),o;try{o=await Ls(r,s,e);}catch{return {status:"unknown"}}return Sa(o,n,Date.now())}async function _t(t,e={}){let n=e.platform??process.platform,r=n==="win32"?"taskkill":"process-group",s=g=>({status:"failed",pid:t,method:r,error:g});if(!Er(t))return s("Invalid process ID");let o=e.kill??process.kill,i=ft(t,o);if(i==="not_found")return {status:"not_found",pid:t,method:r};if(i!=="alive")return s("Unable to determine whether the process is alive");if(n==="win32"){let g;try{g=await Ls("taskkill",["/PID",String(t),"/T","/F"],e);}catch(m){g={status:null,stdout:"",stderr:"",error:Ds(m)};}let h=ft(t,o);return h==="not_found"?g.status===0&&!g.error?{status:"terminated",pid:t,method:r}:{status:"not_found",pid:t,method:r}:s(h==="alive"?"Process is still running after termination attempt":"Unable to verify process termination")}let u,d=e.signal??"SIGKILL";try{o(-t,d);}catch(g){u=g;}if(d==="SIGKILL")return wa(t,o,u,r,e);if(await ya(t,o,e.graceMs??Ml,e)==="not_found")return u?{status:"not_found",pid:t,method:r}:{status:"terminated",pid:t,method:r};let l;try{o(-t,"SIGKILL");}catch(g){l=g;}let p=await wa(t,o,l,r,e);return p.status==="terminated"?p:p.status==="not_found"?u?p:{status:"terminated",pid:t,method:r}:s(p.error??"Process termination failed")}var Ps,gt,Ml,$l,Hl,Rr,Gl,jl,zl,Sr=v(()=>{_();Ps=3e3,gt="SIGINT",Ml=2e3,$l=25,Hl=100;Rr=3e3,Gl=/^(?:(\d+)-)?(?:(\d+):)?(\d{1,2}):(\d{2})$/,jl=/^\s*(\d+)\s+(\S+)\s+(\S+)\s*$/,zl=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d{6})([+-]\d{3})$/;});function va(t,e){let n=e===void 0?"":` at index ${e}`;if(!t||typeof t!="object")throw new f("VALIDATION",`Task log entry${n} must be an object`);if(typeof t.timestamp!="string"||typeof t.level!="string"||typeof t.message!="string")throw new f("VALIDATION",`Task log entry${n} must contain string timestamp, level, and message fields`);return {timestamp:t.timestamp,level:t.level,message:t.message}}function Na(t,e){if(e===null||e.trim()==="")return [];let n;try{n=JSON.parse(e);}catch(r){throw new f("DB_ERROR",`Malformed legacy task logs: ${t}`,r)}if(!Array.isArray(n))throw new f("DB_ERROR",`Malformed legacy task logs: ${t} (expected an array)`);try{return n.map((r,s)=>va(r,s))}catch(r){throw r instanceof f?new f("DB_ERROR",`Malformed legacy task logs: ${t}`,r):r}}function Ca(t){if(t.log_storage!=="blob"&&t.log_storage!=="events")throw new f("DB_ERROR",`Invalid task log storage for task: ${t.id}`);if(!Number.isInteger(t.last_log_seq)||t.last_log_seq<0)throw new f("DB_ERROR",`Invalid task log sequence for task: ${t.id}`);if(!Number.isInteger(t.log_revision)||t.log_revision<0)throw new f("DB_ERROR",`Invalid task log revision for task: ${t.id}`);return t.log_storage}function xa(t){return {taskId:t.id,source:Ca(t),revision:t.log_revision,lastSeq:t.last_log_seq}}function ep(t){if(!Number.isInteger(t)||t<0)throw new f("VALIDATION","Task log tail limit must be a non-negative integer")}var Ir,Pa=v(()=>{_();ut();Rt();St();dt();vt();Ir=class extends Te{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?Et(this.dbPath):super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let s=dirname(n);existsSync(s)||mkdirSync(s,{recursive:true});}else if(!existsSync(n))throw new f("NOT_FOUND","Database not found");let r=$(n);if(e)try{xe(r.db,n);}catch(s){throw r.close(),s}return r}findStateRow(e,n){return e.db.select({id:a.id,log_storage:a.log_storage,last_log_seq:a.last_log_seq,log_revision:a.log_revision,logs:a.logs}).from(a).where(eq(a.id,n)).limit(1).get()}findStateRowInTransaction(e,n){return e.select({id:a.id,log_storage:a.log_storage,last_log_seq:a.last_log_seq,log_revision:a.log_revision,logs:a.logs}).from(a).where(eq(a.id,n)).limit(1).get()}requireStateRowInTransaction(e,n){let r=this.findStateRowInTransaction(e,n);if(!r)throw new f("NOT_FOUND",`Task not found: ${n}`);return r}appendLog(e,n){return this.appendLogs(e,[n])}appendLogs(e,n){let r=n.map((o,i)=>va(o,i));if(r.length===0){let o=this.getLogState(e);if(!o)throw new f("NOT_FOUND",`Task not found: ${e}`);return o}let s=this.openHandle(true);try{return s.db.transaction(i=>{let u=this.requireStateRowInTransaction(i,e),d=Ca(u);if(d==="blob"){let g=Na(e,u.logs);if(i.update(a).set({logs:JSON.stringify([...g,...r]),log_revision:sql`${a.log_revision} + 1`}).where(eq(a.id,e)).run().changes!==1)throw new f("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:d,revision:u.log_revision+1,lastSeq:u.last_log_seq}}let c=u.last_log_seq+1,l=u.last_log_seq+r.length;if(i.insert(Xe).values(r.map((g,h)=>({task_id:e,seq:c+h,timestamp:g.timestamp,level:g.level,message:g.message}))).run(),i.update(a).set({last_log_seq:l,log_revision:sql`${a.log_revision} + 1`}).where(eq(a.id,e)).run().changes!==1)throw new f("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:d,revision:u.log_revision+1,lastSeq:l}},{behavior:"immediate"})}catch(o){throw o instanceof f?o:new f("DB_ERROR","Failed to append task log",o)}finally{s.close();}}getLogState(e){if(!this.dbExists())return;let n=this.openHandle(false);try{let r=this.findStateRow(n,e);return r?xa(r):void 0}catch(r){throw r instanceof f?r:new f("DB_ERROR","Failed to read task log state",r)}finally{n.close();}}readLogs(e){return this.readLogsInternal(e)}readLogsTail(e,n){return ep(n),this.readLogsInternal(e,n)}readTail(e,n){return this.readLogsTail(e,n)}readLogsInternal(e,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.transaction(s=>{let o=this.findStateRowInTransaction(s,e);if(!o)return;let i=xa(o);if(i.source==="blob"){let l=Na(e,o.logs);return {...i,entries:n===void 0?l:l.slice(Math.max(0,l.length-n))}}let u=s.select({seq:Xe.seq,timestamp:Xe.timestamp,level:Xe.level,message:Xe.message}).from(Xe).where(eq(Xe.task_id,e)).orderBy(n===void 0?asc(Xe.seq):desc(Xe.seq)),c=(n===void 0?u.all():u.limit(n).all()).map(({timestamp:l,level:p,message:g})=>({timestamp:l,level:p,message:g}));return n!==void 0&&c.reverse(),{...i,entries:c}},{behavior:"deferred"})}catch(s){throw s instanceof f?s:new f("DB_ERROR","Failed to read task logs",s)}finally{r.close();}}};});var op,Ar,La=v(()=>{_();ut();Rt();St();dt();vt();op=50,Ar=class extends Te{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=`${e.dbRoot}/.crewx/crewx.db`);}resolveDbPath(){return this.dbPath??super.resolveDbPath()}openHandle(){let e=this.resolveDbPath(),n=$(e);try{return xe(n.db,e),n}catch(r){throw n.close(),r}}recordAccepted(e){if(e.actorKind!=="human"||!e.workspaceId||!e.actorId||!e.agentId)return false;let n;try{n=this.openHandle();let r=e.acceptedAt??new Date().toISOString();return n.db.insert(Ie).values({workspace_id:e.workspaceId,actor_id:e.actorId,agent_id:e.agentId,last_accepted_at:r}).onConflictDoUpdate({target:[Ie.workspace_id,Ie.actor_id,Ie.agent_id],set:{last_accepted_at:sql`MAX(${Ie.last_accepted_at}, excluded.last_accepted_at)`}}).run(),!0}catch(r){return console.error("[AgentSendHistoryRepository] Failed to record accepted agent send",r),false}finally{n?.close();}}findRecentAgents(e,n){let r;try{return r=this.openHandle(),r.db.select({agentId:Ie.agent_id,lastAcceptedAt:Ie.last_accepted_at}).from(Ie).where(and(eq(Ie.workspace_id,e),eq(Ie.actor_id,n))).orderBy(desc(Ie.last_accepted_at),asc(Ie.agent_id)).limit(op).all()}catch(s){throw s instanceof f?s:new f("DB_ERROR","Failed to find recent agent sends",s)}finally{r?.close();}}};});var Ma=v(()=>{_();});var Z,Ct=v(()=>{_();Z=class extends Error{constructor(n,r,s){super(n);this.providerStr=r;this.name="ProviderError",this.code=s?.code??"UNKNOWN",this.kind=s?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=s?.retryAfterMs;}providerStr;code;kind;retryAfterMs;stdout};});var Pt,Ms=v(()=>{_();Ct();Pt=class extends Z{name="RateLimitError";constructor(e,n="cli/claude"){super(e,n,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function Ha(t){if(typeof t!="string")return;let e=t.trim();if(e)return e=e.replace(/^\s*at\s+[^\r\n]+(?:\r?\n|$)/gim,""),e=e.replace(/(^|[\r\n])\s*(?:authorization|proxy-authorization|x-api-key|x-goog-api-key|x-auth-token|cookie|set-cookie)\s*:\s*[^\r\n]*/gim,`$1[HTTP HEADER ${he}]`),e=ap(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${he}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,he),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,he),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,he),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,he),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,he),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,he),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,he),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,he),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,he),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${he}${r}${he}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${he}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,$a),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,$a),e=e.replace(/[\r\n]{3,}/g,`
32
+ )`)}));});var zi=v(()=>{_();sqliteTable("ui_definition_archive",{definition_hash:text("definition_hash").primaryKey().notNull(),definition_json:text("definition_json").notNull(),created_at:integer("created_at").notNull()},t=>({definitionHashCheck:check("ui_definition_archive_definition_hash_ck",sql`length(${t.definition_hash}) = 64 AND ${t.definition_hash} NOT GLOB '*[^0-9a-f]*'`),definitionJsonCheck:check("ui_definition_archive_definition_json_ck",sql`json_valid(${t.definition_json}) AND json_type(${t.definition_json}) = 'object'`),createdAtCheck:check("ui_definition_archive_created_at_ck",sql`${t.created_at} >= 0`)}));});var Ji,Vi=v(()=>{_();Ji=sqliteTable("projects",{id:text("id").primaryKey().notNull(),workspace_id:text("workspace_id").notNull(),name:text("name").notNull(),outcome:text("outcome").notNull(),due_date:text("due_date"),scene:text("scene").notNull().default("planning"),stages_json:text("stages_json").notNull(),stage_index:integer("stage_index").notNull(),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),accepted_at:text("accepted_at"),archived_at:text("archived_at")},t=>({idCheck:check("projects_id_ck",sql`${t.id} GLOB 'prj_*'`),sceneCheck:check("projects_scene_ck",sql`${t.scene} IN ('planning', 'plan_review', 'running', 'human_wait', 'limit_wait', 'failed_stop', 'analyzing_feedback', 'replanned', 'awaiting_review', 'accepted')`),stagesJsonCheck:check("projects_stages_json_ck",sql`json_valid(${t.stages_json}) AND json_type(${t.stages_json}) = 'array'`),stageIndexCheck:check("projects_stage_index_ck",sql`${t.stage_index} >= 1`)})),sqliteTable("project_criteria",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>Ji.id,{onDelete:"cascade"}),position:integer("position").notNull(),statement:text("statement").notNull(),verify_status:text("verify_status").notNull().default("pending"),verified_at:text("verified_at"),evidence_json:text("evidence_json").notNull().default("[]"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},t=>({idCheck:check("project_criteria_id_ck",sql`${t.id} GLOB 'pjc_*'`),verifyStatusCheck:check("project_criteria_verify_status_ck",sql`${t.verify_status} IN ('pending', 'verifying', 'passed', 'failed')`),evidenceJsonCheck:check("project_criteria_evidence_json_ck",sql`json_valid(${t.evidence_json}) AND json_type(${t.evidence_json}) = 'array'`),projectPositionUnique:uniqueIndex("project_criteria_project_position_uq").on(t.project_id,t.position)})),sqliteTable("project_events",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>Ji.id,{onDelete:"restrict"}),seq:integer("seq").notNull(),actor_type:text("actor_type").notNull(),actor_id:text("actor_id"),type:text("type").notNull(),title:text("title").notNull(),summary:text("summary"),payload_json:text("payload_json").notNull().default("{}"),created_at:text("created_at").notNull()},t=>({idCheck:check("project_events_id_ck",sql`${t.id} GLOB 'pje_*'`),actorTypeCheck:check("project_events_actor_type_ck",sql`${t.actor_type} IN ('user', 'project_manager', 'system')`),payloadJsonCheck:check("project_events_payload_json_ck",sql`json_valid(${t.payload_json}) AND json_type(${t.payload_json}) = 'object'`),projectSeqUnique:uniqueIndex("project_events_project_seq_uq").on(t.project_id,t.seq)}));});var Es,Rs,C,Ss=v(()=>{_();Es=["THREAD_STATE","THREAD_PRIORITY"],Rs=["gray","blue","violet","green","amber","orange","red","pink"],C=sqliteTable("common_codes",{code_group:text("code_group").notNull(),code:text("code").notNull(),code_name:text("code_name"),color:text("color").notNull().default("gray"),sort_order:integer("sort_order").notNull(),workspace_id:text("workspace_id"),is_builtin:integer("is_builtin").notNull().default(0),is_archived:integer("is_archived").notNull().default(0),metadata:text("metadata"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},t=>({pk:primaryKey({columns:[t.code_group,t.code]}),metadataCheck:check("common_codes_metadata_ck",sql`${t.metadata} IS NULL OR (json_valid(${t.metadata}) AND json_type(${t.metadata}) = 'object')`),builtinCheck:check("common_codes_builtin_ck",sql`${t.is_builtin} IN (0, 1)`),archivedCheck:check("common_codes_archived_ck",sql`${t.is_archived} IN (0, 1)`),idxCommonCodesSelection:index("idx_common_codes_group_archived_order").on(t.code_group,t.is_archived,t.sort_order)}));});var Xi,Yi,Qi,Zi,ea,j,q,U,ta=v(()=>{_();En();Xi=["thread.snapshot.imported","thread.title.changed","thread.priority.changed","thread.state.changed","thread.highlight.created","thread.highlight.updated","thread.highlight.deleted","thread.highlights.regenerated"],Yi=["user","agent","system"],Qi=["auto","manual"],Zi=["decision","judgment","issue","result","pivot"],ea=["queued","running","completed","failed"],j=sqliteTable("thread_events",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),seq:integer("seq").notNull(),type:text("type").notNull(),actor_type:text("actor_type").notNull(),payload_json:text("payload_json").notNull(),created_at:text("created_at").notNull(),actor_id:text("actor_id"),task_id:text("task_id"),highlight_id:text("highlight_id")},t=>({typeCheck:check("thread_events_type_ck",sql`${t.type} IN ('thread.snapshot.imported', 'thread.title.changed', 'thread.priority.changed', 'thread.state.changed', 'thread.highlight.created', 'thread.highlight.updated', 'thread.highlight.deleted', 'thread.highlights.regenerated')`),actorTypeCheck:check("thread_events_actor_type_ck",sql`${t.actor_type} IN ('user', 'agent', 'system')`),payloadJsonCheck:check("thread_events_payload_json_ck",sql`json_valid(${t.payload_json}) AND json_type(${t.payload_json}) = 'object'`),threadSeqIndex:index("idx_thread_events_thread_seq").on(t.thread_id,t.seq),threadCreatedIndex:index("idx_thread_events_thread_created").on(t.thread_id,t.created_at),threadSeqUnique:uniqueIndex("thread_events_thread_seq_uq").on(t.thread_id,t.seq)})),q=sqliteTable("thread_highlight_runs",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),request_id:text("request_id").notNull(),status:text("status").notNull(),detector_version:text("detector_version").notNull(),requested_at:text("requested_at").notNull(),started_at:text("started_at"),completed_at:text("completed_at"),error_code:text("error_code"),previous_auto_count:integer("previous_auto_count"),new_auto_count:integer("new_auto_count")},t=>({statusCheck:check("thread_highlight_runs_status_ck",sql`${t.status} IN ('queued', 'running', 'completed', 'failed')`),countCheck:check("thread_highlight_runs_counts_ck",sql`(${t.previous_auto_count} IS NULL OR ${t.previous_auto_count} >= 0) AND (${t.new_auto_count} IS NULL OR ${t.new_auto_count} >= 0)`),threadRequestUnique:uniqueIndex("thread_highlight_runs_thread_request_uq").on(t.thread_id,t.request_id),inProgressThreadUnique:uniqueIndex("thread_highlight_runs_in_progress_thread_uq").on(t.thread_id).where(sql`${t.status} IN ('queued', 'running')`),threadStatusRequestedIndex:index("idx_thread_highlight_runs_thread_status_requested").on(t.thread_id,t.status,t.requested_at)})),U=sqliteTable("thread_highlights",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),source:text("source").notNull(),kind:text("kind").notNull(),status:text("status").notNull().default("active"),text:text("text"),covers_from_task_id:text("covers_from_task_id").notNull(),covers_to_task_id:text("covers_to_task_id").notNull(),revision:integer("revision").notNull().default(0),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),agent_id:text("agent_id"),source_task_id:text("source_task_id"),detector_version:text("detector_version"),content_fingerprint:text("content_fingerprint"),dismissed_at:text("dismissed_at")},t=>({sourceCheck:check("thread_highlights_source_ck",sql`${t.source} IN ('auto', 'manual')`),kindCheck:check("thread_highlights_kind_ck",sql`${t.kind} IN ('decision', 'judgment', 'issue', 'result', 'pivot')`),statusCheck:check("thread_highlights_status_ck",sql`${t.status} IN ('active', 'dismissed')`),activeTextCheck:check("thread_highlights_active_text_ck",sql`${t.status} = 'dismissed' OR (${t.text} IS NOT NULL AND length(${t.text}) > 0)`),coversCheck:check("thread_highlights_covers_ck",sql`length(${t.covers_from_task_id}) > 0 AND length(${t.covers_to_task_id}) > 0`),autoKeyCheck:check("thread_highlights_auto_key_ck",sql`${t.source} = 'manual' OR (${t.source} = 'auto' AND ${t.source_task_id} IS NOT NULL AND ${t.detector_version} IS NOT NULL AND ${t.content_fingerprint} IS NOT NULL AND length(${t.source_task_id}) > 0 AND length(${t.detector_version}) > 0 AND length(${t.content_fingerprint}) > 0)`),threadStatusCreatedIndex:index("idx_thread_highlights_thread_status_created").on(t.thread_id,t.status,t.created_at),threadCoversIndex:index("idx_thread_highlights_thread_covers").on(t.thread_id,t.covers_from_task_id,t.covers_to_task_id),autoIdempotencyUnique:uniqueIndex("thread_highlights_auto_idempotency_uq").on(t.thread_id,t.source_task_id,t.detector_version,t.content_fingerprint).where(sql`${t.source} = 'auto'`)}));});var ra=v(()=>{_();sqliteTable("storage_metadata",{source_kind:text("source_kind").notNull(),source_id:text("source_id").notNull(),utc_ts:text("utc_ts"),bytes:integer("bytes").notNull()},t=>({pk:primaryKey({columns:[t.source_kind,t.source_id]}),kindTimestampBytesIndex:index("idx_storage_metadata_kind_ts_bytes").on(t.source_kind,t.utc_ts,t.bytes)})),sqliteTable("storage_metadata_state",{unit:text("unit").primaryKey().notNull(),cursor_rowid:integer("cursor_rowid").notNull().default(0),end_rowid:integer("end_rowid"),complete:integer("complete").notNull().default(0),updated_at:text("updated_at").notNull()});});var Ie,sa=v(()=>{_();Ie=sqliteTable("agent_send_history",{workspace_id:text("workspace_id").notNull(),actor_id:text("actor_id").notNull(),agent_id:text("agent_id").notNull(),last_accepted_at:text("last_accepted_at").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.actor_id,t.agent_id]}),recentIndex:index("idx_agent_send_history_recent").on(t.workspace_id,t.actor_id,t.last_accepted_at,t.agent_id)}));});var aa,da=v(()=>{_();En();dr();sqliteTable("sidebar_states",{workspace_id:text("workspace_id").primaryKey().references(()=>te.id,{onDelete:"cascade"}),revision:integer("revision").notNull().default(0),rail_collapsed:integer("rail_collapsed").notNull().default(0),seeded_at:text("seeded_at").notNull()},t=>({railCollapsedCheck:check("sidebar_states_rail_collapsed_ck",sql`${t.rail_collapsed} IN (0, 1)`)})),aa=sqliteTable("sidebar_groups",{id:text("id").primaryKey(),workspace_id:text("workspace_id").notNull().references(()=>te.id,{onDelete:"cascade"}),name:text("name").notNull(),color:text("color").notNull(),collapsed:integer("collapsed").notNull().default(0),position:integer("position").notNull()},t=>({colorCheck:check("sidebar_groups_color_ck",sql`${t.color} IN ('cyan', 'orange', 'purple', 'blue')`),collapsedCheck:check("sidebar_groups_collapsed_ck",sql`${t.collapsed} IN (0, 1)`),idxSidebarGroupsWorkspacePosition:index("idx_sidebar_groups_workspace_position").on(t.workspace_id,t.position)})),sqliteTable("sidebar_tabs",{workspace_id:text("workspace_id").notNull().references(()=>te.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>aa.id,{onDelete:"set null"}),position:integer("position").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.thread_id]})})),sqliteTable("sidebar_closed_tabs",{id:integer("id").primaryKey({autoIncrement:true}),workspace_id:text("workspace_id").notNull().references(()=>te.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>aa.id,{onDelete:"set null"}),position:integer("position").notNull(),closed_at:text("closed_at").notNull()},t=>({idxSidebarClosedTabsWorkspaceId:index("idx_sidebar_closed_tabs_workspace_id").on(t.workspace_id,t.id)})),sqliteTable("thread_reads",{workspace_id:text("workspace_id").notNull().references(()=>te.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>k.id,{onDelete:"cascade"}),read_through_at:text("read_through_at").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.thread_id]})}));});var ua=v(()=>{_();sqliteTable("schedule_runs",{id:text("id").primaryKey(),schedule_id:text("schedule_id").notNull(),workspace_id:text("workspace_id").notNull(),mode:text("mode").notNull(),trigger:text("trigger").notNull(),occurrence_key:text("occurrence_key"),task_id:text("task_id"),app_id:text("app_id"),schedule_name:text("schedule_name"),builtin_id:text("builtin_id"),command:text("command"),high_frequency:integer("high_frequency").notNull().default(0),status:text("status").notNull(),error_code:text("error_code"),exit_code:integer("exit_code"),signal:text("signal"),started_at:text("started_at").notNull(),finished_at:text("finished_at"),duration_ms:integer("duration_ms"),pid:integer("pid"),host_pid:integer("host_pid"),output_tail:text("output_tail"),output_bytes:integer("output_bytes"),output_truncated:integer("output_truncated").notNull().default(0)},t=>({idx_schedule_runs_workspace_started:index("idx_schedule_runs_workspace_started").on(t.workspace_id,sql`${t.started_at} DESC`),idx_schedule_runs_schedule_started:index("idx_schedule_runs_schedule_started").on(t.schedule_id,sql`${t.started_at} DESC`),idx_schedule_runs_task_id:index("idx_schedule_runs_task_id").on(t.task_id),idx_schedule_runs_running:index("idx_schedule_runs_running").on(t.workspace_id,t.started_at).where(sql`${t.status} = 'running'`)}));});var ca=v(()=>{_();sqliteTable("run_column_backfill",{name:text("name").primaryKey(),cursor:integer("cursor"),anchor_id:text("anchor_id"),completed_at:text("completed_at")});});var vt=v(()=>{_();dr();Gt();Ti();yi();En();Si();Ai();Oi();Ni();vi();Ci();Li();Mi();Hi();Fi();qi();Wi();Gi();zi();Vi();Ss();ta();ra();sa();da();ua();ca();});function bn(t){return typeof t=="string"&&pt.includes(t)}function la(t){if(!t||!t.includes("workflow"))return null;let e;try{e=JSON.parse(t);}catch{return null}if(typeof e!="object"||e===null||Array.isArray(e))return null;let n=e,r=n.workflowRunId;if(typeof r=="string"&&r!=="")return r;let s=n.workflow;if(typeof s=="object"&&s!==null&&!Array.isArray(s)){let o=s.exec_id;if(typeof o=="string"&&o!=="")return o}return null}var pt,Tr=v(()=>{_();pt=["workflow_card","workflow_ui_instance","workflow_run"];});var zt,xs,pa,vs=v(()=>{_();zt={"claude-fable-5-1":{input:10,cachedInput:.25,output:50},"claude-fable-5":{input:10,cachedInput:1,output:50},"claude-opus-5-5":{input:4,cachedInput:.2,output:20},"claude-opus-5":{input:5,cachedInput:.5,output:25},"claude-opus-4-8":{input:5,cachedInput:.5,output:25},"claude-opus-4-7":{input:5,cachedInput:.5,output:25},"claude-opus-4-6":{input:5,cachedInput:.5,output:25},"claude-sonnet-5-5":{input:2,cachedInput:.1,output:10},"claude-sonnet-5":{input:2,cachedInput:.2,output:10},"claude-sonnet-4-6":{input:3,cachedInput:.3,output:15},"claude-haiku-5-5":{input:.1,cachedInput:.01,output:.5},"claude-haiku-4-5":{input:1,cachedInput:.1,output:5},"gpt-6-astra":{input:10,cachedInput:1,output:50},"gpt-6.1-sol":{input:2,cachedInput:.1,output:10},"gpt-6-sol":{input:2,cachedInput:.2,output:10},"gpt-6-luna":{input:.1,cachedInput:.01,output:.5},"gpt-5.6-sol":{input:4,cachedInput:.4,output:20},"gpt-5.6-terra":{input:2,cachedInput:.2,output:12},"gpt-5.6-luna":{input:.2,cachedInput:.02,output:1.2},"gpt-5.5":{input:5,cachedInput:.5,output:30},"gpt-5.4":{input:2.5,cachedInput:.25,output:15},"gpt-5.4-mini":{input:.75,cachedInput:.075,output:4.5},"gpt-5.3-codex":{input:1.75,cachedInput:.175,output:14},"gpt-5-mini":{input:.4,cachedInput:.1,output:1.6},"gpt-4.1":{input:2,cachedInput:.5,output:8},"gpt-4o":{input:2.5,cachedInput:1.25,output:10},"glm-5.2":{input:1.4,cachedInput:.26,output:4.4},"glm-5.1":{input:1.4,cachedInput:.26,output:4.4},"gemini-3.7-flash":{input:1.5,cachedInput:.15,output:7.5},"gemini-3.6-flash":{input:1.5,cachedInput:.15,output:7.5},"grok-4.7":{input:2,cachedInput:.5,output:6},"grok-4.6":{input:2,cachedInput:.5,output:6},"grok-4.5":{input:2,cachedInput:.3,output:6}},xs=new Set(["gpt-5.3-codex-spark"]),pa=new Set(["auto","claude-fable-5","claude-fable-5-1","claude-haiku-4-5","claude-haiku-5-5","claude-opus-4-6","claude-opus-4-6-thinking","claude-opus-4-6[1m]","claude-opus-4-7","claude-opus-4-7[1m]","claude-opus-4-8","claude-opus-4-8[1m]","claude-opus-5","claude-opus-5-5","claude-sonnet-4-6","claude-sonnet-4-6[1m]","claude-sonnet-5","claude-sonnet-5-5","gemini-3.1-pro","gemini-3.6-flash","gemini-3.7-flash","glm-5.1","glm-5.2","gpt-4.1","gpt-4o","gpt-5-mini","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini","gpt-5.5","gpt-5.6-luna","gpt-5.6-sol","gpt-5.6-terra","gpt-6-astra","gpt-6-luna","gpt-6-sol","gpt-6.1-sol","gpt-oss-120b","grok-4.5","grok-4.6","grok-4.7"]);});function Cs(t){let e=t.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let n=e.lastIndexOf("/");return n>=0&&(e=e.slice(n+1)),e=e.replace(/-\d{8}$/,""),e}function vl(t){if(!t)return console.warn("[pricing] missing model id; cost is being recorded as 0"),Nn;let e=Cs(t),n=xl[e];if(n)return wr[n]??zt[n]??Nn;if(wr[e])return wr[e];if(zt[e])return zt[e];if(xs.has(e))return console.warn(`[pricing] unpublished model pricing: ${t}, cost_usd=0`),Nn;if(pa.has(e))return console.warn(`[pricing] missing catalog pricing: ${t}, cost_usd=0`),Nn;let r={...zt,...wr};for(let s of Object.keys(r))if(e.includes(s))return r[s];return console.warn(`[pricing] Unknown model: ${t}, cost_usd=0`),Nn}function Cl(t,e,n,r=0,s){let o=vl(n),i=Math.min(r,t),d=(t-i)*o.input/1e6,c=i*o.cachedInput/1e6,l=e*o.output/1e6;return d+c+l}function fa(t,e,n,r,s,o){return t&&t>0?t:!e&&!n?0:Cl(e??0,n??0,s,r??0)}var xl,Nn,wr,yr=v(()=>{_();vs();vs();xl={opus:"claude-opus-4-8",sonnet:"claude-sonnet-4-6",haiku:"claude-haiku-4-5","codex-mini":"gpt-5.3-codex",codex:"gpt-5.3-codex"},Nn={input:0,cachedInput:0,output:0},wr={};});function ma(t){if(!t||!t.includes("schedule_id"))return null;let e;try{e=JSON.parse(t);}catch{return null}if(typeof e!="object"||e===null||Array.isArray(e))return null;let n=e,r=n.trigger;if(typeof r!="string"||!Pl.includes(r))return null;let s=n.schedule_id;return typeof s=="string"&&s!==""?s:null}var Pl,ka=v(()=>{_();Pl=["cron","cron_manual"];});function Ds(t){return t instanceof Error?t:t===void 0?void 0:new Error(String(t))}function Ta(t){return typeof t=="object"&&t!==null&&"code"in t?String(t.code):void 0}function Er(t){return Number.isSafeInteger(t)&&t>0}function Ul(t,e){try{let n=spawnSync(t,e,{encoding:"utf8",timeout:Ps,windowsHide:!0});return {status:n.status,stdout:typeof n.stdout=="string"?n.stdout:"",stderr:typeof n.stderr=="string"?n.stderr:"",error:n.error}}catch(n){return {status:null,stdout:"",stderr:"",error:Ds(n)}}}function Fl(t,e){return new Promise(n=>{let r;try{r=spawn(t,e,{windowsHide:!0});}catch(c){n({status:null,stdout:"",stderr:"",error:Ds(c)});return}let s="",o="",i=false,u,d=setTimeout(()=>{try{r.kill();}catch{}u({status:null,stdout:s,stderr:o,error:new Error(`Command timed out after ${Ps}ms`)});},Ps);u=c=>{i||(i=true,clearTimeout(d),n(c));},r.stdout?.setEncoding("utf8"),r.stderr?.setEncoding("utf8"),r.stdout?.on("data",c=>{s+=String(c);}),r.stderr?.on("data",c=>{o+=String(c);}),r.once("error",c=>{u({status:null,stdout:s,stderr:o,error:c});}),r.once("close",c=>{u({status:c,stdout:s,stderr:o});});})}async function Ls(t,e,n){return n.runCommandAsync?n.runCommandAsync(t,e):n.runCommand?n.runCommand(t,e):Fl(t,e)}function ql(t){return new Promise(e=>{setTimeout(e,Math.max(0,t));})}function Bl(){return new Promise(t=>{setImmediate(t);})}function ft(t,e=process.kill){try{return e(t,0),"alive"}catch(n){return Ta(n)==="ESRCH"?"not_found":Ta(n)==="EPERM"?"alive":"unknown"}}function Wl(t,e){let n=ft(-t,e),r=ft(t,e);return n==="alive"||r==="alive"?"alive":n==="unknown"||r==="unknown"?"unknown":"not_found"}async function ya(t,e,n,r){let s=Math.max(0,n),o=Math.max(1,r.pollIntervalMs??$l),i=Date.now()+s,u,d=s===0,c=r.sleep?Promise.resolve().then(()=>r.sleep(s)).then(()=>{},()=>{}):new Promise(l=>{u=setTimeout(l,s);});c.then(()=>{d=true;});try{for(await Bl();;){let l=Wl(t,e);if(l==="not_found")return l;let p=i-Date.now();if(d||p<=0)return l;await Promise.race([c,ql(Math.min(o,p))]);}}finally{u!==void 0&&clearTimeout(u);}}async function wa(t,e,n,r,s){let o=await ya(t,e,s.hardConfirmMs??Hl,{...s,sleep:void 0});return o==="not_found"?n?{status:"not_found",pid:t,method:r}:{status:"terminated",pid:t,method:r}:o==="alive"?{status:"failed",pid:t,method:r,error:"Process is still running after termination attempt"}:{status:"failed",pid:t,method:r,error:"Unable to verify process termination"}}async function Ea(t,e,n={}){if(!Er(t))return "unknown";let r=n.platform??process.platform,s=r==="win32"?"powershell.exe":"ps",o=r==="win32"?["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",`$p = Get-CimInstance -ClassName Win32_Process -Filter 'ProcessId = ${t}' -ErrorAction Stop; if ($null -ne $p) { [Console]::Write([string]$p.CommandLine) }`]:["-p",String(t),"-o","command="],i;try{i=await Ls(s,o,n);}catch{return "unknown"}if(i.error||i.status!==0)return "unknown";let u=i.stdout.trim();if(!u)return "not_found";let d=r==="win32"?u.toLowerCase():u;return e.filter(l=>l.trim().length>0).some(l=>{let p=r==="win32"?l.toLowerCase():l;return d.includes(p)})?"owned":"not_owned"}function Kl(t){let e=Gl.exec(t.trim());if(!e)return;let[,n="0",r="0",s="0",o="0"]=e;return ((Number(n)*24+Number(r))*60+Number(s))*60+Number(o)}function Jl(t){let e=t.trim(),n=zl.exec(e);if(n){let[,s,o,i,u,d,c,l,p]=n;return Date.UTC(Number(s),Number(o)-1,Number(i),Number(u),Number(d),Number(c),Math.trunc(Number(l)/1e3))-Number(p)*6e4}let r=Date.parse(e);return Number.isFinite(r)?r:void 0}function Ra(t,e){return e==="win32"?{command:"powershell.exe",args:["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",`$p = Get-CimInstance -ClassName Win32_Process -Filter 'ProcessId = ${t}' -ErrorAction Stop; if ($null -ne $p) { [Console]::Write($p.CreationDate.ToUniversalTime().ToString('o')) }`]}:{command:"ps",args:["-p",String(t),"-o","pgid=","-o","etime=","-o","stat="]}}function Sa(t,e,n){if(t.error)return {status:"unknown"};let r=t.stdout.trim();if(!r)return t.status===0||t.status===1?{status:"not_found"}:{status:"unknown"};if(t.status!==0)return {status:"unknown"};if(e==="win32"){let i=Jl(r);return i===void 0?{status:"unknown"}:{status:"found",startedAtMs:i,groupId:null}}let s=jl.exec(r),o=s?Kl(s[2]):void 0;return !s||o===void 0?{status:"unknown"}:s[3].startsWith("Z")?{status:"unknown"}:{status:"found",startedAtMs:n-o*1e3,groupId:Number(s[1])}}function Ia(t,e={}){if(!Er(t))return {status:"unknown"};let n=e.platform??process.platform,{command:r,args:s}=Ra(t,n),o=e.runCommand??Ul,i;try{i=o(r,s);}catch{return {status:"unknown"}}return Sa(i,n,Date.now())}async function Aa(t,e={}){if(!Er(t))return {status:"unknown"};let n=e.platform??process.platform,{command:r,args:s}=Ra(t,n),o;try{o=await Ls(r,s,e);}catch{return {status:"unknown"}}return Sa(o,n,Date.now())}async function _t(t,e={}){let n=e.platform??process.platform,r=n==="win32"?"taskkill":"process-group",s=g=>({status:"failed",pid:t,method:r,error:g});if(!Er(t))return s("Invalid process ID");let o=e.kill??process.kill,i=ft(t,o);if(i==="not_found")return {status:"not_found",pid:t,method:r};if(i!=="alive")return s("Unable to determine whether the process is alive");if(n==="win32"){let g;try{g=await Ls("taskkill",["/PID",String(t),"/T","/F"],e);}catch(m){g={status:null,stdout:"",stderr:"",error:Ds(m)};}let h=ft(t,o);return h==="not_found"?g.status===0&&!g.error?{status:"terminated",pid:t,method:r}:{status:"not_found",pid:t,method:r}:s(h==="alive"?"Process is still running after termination attempt":"Unable to verify process termination")}let u,d=e.signal??"SIGKILL";try{o(-t,d);}catch(g){u=g;}if(d==="SIGKILL")return wa(t,o,u,r,e);if(await ya(t,o,e.graceMs??Ml,e)==="not_found")return u?{status:"not_found",pid:t,method:r}:{status:"terminated",pid:t,method:r};let l;try{o(-t,"SIGKILL");}catch(g){l=g;}let p=await wa(t,o,l,r,e);return p.status==="terminated"?p:p.status==="not_found"?u?p:{status:"terminated",pid:t,method:r}:s(p.error??"Process termination failed")}var Ps,gt,Ml,$l,Hl,Rr,Gl,jl,zl,Sr=v(()=>{_();Ps=3e3,gt="SIGINT",Ml=2e3,$l=25,Hl=100;Rr=3e3,Gl=/^(?:(\d+)-)?(?:(\d+):)?(\d{1,2}):(\d{2})$/,jl=/^\s*(\d+)\s+(\S+)\s+(\S+)\s*$/,zl=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d{6})([+-]\d{3})$/;});function va(t,e){let n=e===void 0?"":` at index ${e}`;if(!t||typeof t!="object")throw new f("VALIDATION",`Task log entry${n} must be an object`);if(typeof t.timestamp!="string"||typeof t.level!="string"||typeof t.message!="string")throw new f("VALIDATION",`Task log entry${n} must contain string timestamp, level, and message fields`);return {timestamp:t.timestamp,level:t.level,message:t.message}}function Na(t,e){if(e===null||e.trim()==="")return [];let n;try{n=JSON.parse(e);}catch(r){throw new f("DB_ERROR",`Malformed legacy task logs: ${t}`,r)}if(!Array.isArray(n))throw new f("DB_ERROR",`Malformed legacy task logs: ${t} (expected an array)`);try{return n.map((r,s)=>va(r,s))}catch(r){throw r instanceof f?new f("DB_ERROR",`Malformed legacy task logs: ${t}`,r):r}}function Ca(t){if(t.log_storage!=="blob"&&t.log_storage!=="events")throw new f("DB_ERROR",`Invalid task log storage for task: ${t.id}`);if(!Number.isInteger(t.last_log_seq)||t.last_log_seq<0)throw new f("DB_ERROR",`Invalid task log sequence for task: ${t.id}`);if(!Number.isInteger(t.log_revision)||t.log_revision<0)throw new f("DB_ERROR",`Invalid task log revision for task: ${t.id}`);return t.log_storage}function xa(t){return {taskId:t.id,source:Ca(t),revision:t.log_revision,lastSeq:t.last_log_seq}}function ep(t){if(!Number.isInteger(t)||t<0)throw new f("VALIDATION","Task log tail limit must be a non-negative integer")}var Ir,Pa=v(()=>{_();ut();Rt();St();dt();vt();Ir=class extends Te{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?Et(this.dbPath):super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let s=dirname(n);existsSync(s)||mkdirSync(s,{recursive:true});}else if(!existsSync(n))throw new f("NOT_FOUND","Database not found");let r=$(n);if(e)try{xe(r.db,n);}catch(s){throw r.close(),s}return r}findStateRow(e,n){return e.db.select({id:a.id,log_storage:a.log_storage,last_log_seq:a.last_log_seq,log_revision:a.log_revision,logs:a.logs}).from(a).where(eq(a.id,n)).limit(1).get()}findStateRowInTransaction(e,n){return e.select({id:a.id,log_storage:a.log_storage,last_log_seq:a.last_log_seq,log_revision:a.log_revision,logs:a.logs}).from(a).where(eq(a.id,n)).limit(1).get()}requireStateRowInTransaction(e,n){let r=this.findStateRowInTransaction(e,n);if(!r)throw new f("NOT_FOUND",`Task not found: ${n}`);return r}appendLog(e,n){return this.appendLogs(e,[n])}appendLogs(e,n){let r=n.map((o,i)=>va(o,i));if(r.length===0){let o=this.getLogState(e);if(!o)throw new f("NOT_FOUND",`Task not found: ${e}`);return o}let s=this.openHandle(true);try{return s.db.transaction(i=>{let u=this.requireStateRowInTransaction(i,e),d=Ca(u);if(d==="blob"){let g=Na(e,u.logs);if(i.update(a).set({logs:JSON.stringify([...g,...r]),log_revision:sql`${a.log_revision} + 1`}).where(eq(a.id,e)).run().changes!==1)throw new f("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:d,revision:u.log_revision+1,lastSeq:u.last_log_seq}}let c=u.last_log_seq+1,l=u.last_log_seq+r.length;if(i.insert(Xe).values(r.map((g,h)=>({task_id:e,seq:c+h,timestamp:g.timestamp,level:g.level,message:g.message}))).run(),i.update(a).set({last_log_seq:l,log_revision:sql`${a.log_revision} + 1`}).where(eq(a.id,e)).run().changes!==1)throw new f("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:d,revision:u.log_revision+1,lastSeq:l}},{behavior:"immediate"})}catch(o){throw o instanceof f?o:new f("DB_ERROR","Failed to append task log",o)}finally{s.close();}}getLogState(e){if(!this.dbExists())return;let n=this.openHandle(false);try{let r=this.findStateRow(n,e);return r?xa(r):void 0}catch(r){throw r instanceof f?r:new f("DB_ERROR","Failed to read task log state",r)}finally{n.close();}}readLogs(e){return this.readLogsInternal(e)}readLogsTail(e,n){return ep(n),this.readLogsInternal(e,n)}readTail(e,n){return this.readLogsTail(e,n)}readLogsInternal(e,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.transaction(s=>{let o=this.findStateRowInTransaction(s,e);if(!o)return;let i=xa(o);if(i.source==="blob"){let l=Na(e,o.logs).map((p,g)=>({...p,seq:g+1}));return {...i,entries:n===void 0?l:l.slice(Math.max(0,l.length-n))}}let u=s.select({seq:Xe.seq,timestamp:Xe.timestamp,level:Xe.level,message:Xe.message}).from(Xe).where(eq(Xe.task_id,e)).orderBy(n===void 0?asc(Xe.seq):desc(Xe.seq)),c=(n===void 0?u.all():u.limit(n).all()).map(({seq:l,timestamp:p,level:g,message:h})=>({seq:l,timestamp:p,level:g,message:h}));return n!==void 0&&c.reverse(),{...i,entries:c}},{behavior:"deferred"})}catch(s){throw s instanceof f?s:new f("DB_ERROR","Failed to read task logs",s)}finally{r.close();}}};});var op,Ar,La=v(()=>{_();ut();Rt();St();dt();vt();op=50,Ar=class extends Te{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=`${e.dbRoot}/.crewx/crewx.db`);}resolveDbPath(){return this.dbPath??super.resolveDbPath()}openHandle(){let e=this.resolveDbPath(),n=$(e);try{return xe(n.db,e),n}catch(r){throw n.close(),r}}recordAccepted(e){if(e.actorKind!=="human"||!e.workspaceId||!e.actorId||!e.agentId)return false;let n;try{n=this.openHandle();let r=e.acceptedAt??new Date().toISOString();return n.db.insert(Ie).values({workspace_id:e.workspaceId,actor_id:e.actorId,agent_id:e.agentId,last_accepted_at:r}).onConflictDoUpdate({target:[Ie.workspace_id,Ie.actor_id,Ie.agent_id],set:{last_accepted_at:sql`MAX(${Ie.last_accepted_at}, excluded.last_accepted_at)`}}).run(),!0}catch(r){return console.error("[AgentSendHistoryRepository] Failed to record accepted agent send",r),false}finally{n?.close();}}findRecentAgents(e,n){let r;try{return r=this.openHandle(),r.db.select({agentId:Ie.agent_id,lastAcceptedAt:Ie.last_accepted_at}).from(Ie).where(and(eq(Ie.workspace_id,e),eq(Ie.actor_id,n))).orderBy(desc(Ie.last_accepted_at),asc(Ie.agent_id)).limit(op).all()}catch(s){throw s instanceof f?s:new f("DB_ERROR","Failed to find recent agent sends",s)}finally{r?.close();}}};});var Ma=v(()=>{_();});var Z,Ct=v(()=>{_();Z=class extends Error{constructor(n,r,s){super(n);this.providerStr=r;this.name="ProviderError",this.code=s?.code??"UNKNOWN",this.kind=s?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=s?.retryAfterMs;}providerStr;code;kind;retryAfterMs;stdout};});var Pt,Ms=v(()=>{_();Ct();Pt=class extends Z{name="RateLimitError";constructor(e,n="cli/claude"){super(e,n,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function Ha(t){if(typeof t!="string")return;let e=t.trim();if(e)return e=e.replace(/^\s*at\s+[^\r\n]+(?:\r?\n|$)/gim,""),e=e.replace(/(^|[\r\n])\s*(?:authorization|proxy-authorization|x-api-key|x-goog-api-key|x-auth-token|cookie|set-cookie)\s*:\s*[^\r\n]*/gim,`$1[HTTP HEADER ${he}]`),e=ap(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${he}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,he),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,he),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,he),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,he),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,he),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,he),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,he),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,he),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,he),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${he}${r}${he}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${he}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,$a),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,$a),e=e.replace(/[\r\n]{3,}/g,`
33
33
 
34
34
  `).trim(),ip(e,1024)||void 0}function ip(t,e){let n=new TextEncoder;if(n.encode(t).byteLength<=e)return t;let r="",s=0;for(let o of t){let i=n.encode(o).byteLength;if(s+i>e)break;r+=o,s+=i;}return r}function ap(t){let e=/\b(?:request|response|http)?\s*body\s*[:=]\s*/gim,n="",r=0,s;for(;(s=e.exec(t))!==null;){if(s.index<r)continue;let o=s.index+s[0].length,i=dp(t,o),u=i>=0?i:t.indexOf(`
35
35
  `,o)>=0?t.indexOf(`
@@ -29,7 +29,7 @@ ${r.join(`
29
29
  OR
30
30
  (${t.status} IN ('deferred', 'failed') AND ${t.code} IS NOT NULL
31
31
  AND ${t.to_revision} IS NULL)
32
- )`)}));});var pu=x(()=>{m();sqliteTable("ui_definition_archive",{definition_hash:text("definition_hash").primaryKey().notNull(),definition_json:text("definition_json").notNull(),created_at:integer("created_at").notNull()},t=>({definitionHashCheck:check("ui_definition_archive_definition_hash_ck",sql`length(${t.definition_hash}) = 64 AND ${t.definition_hash} NOT GLOB '*[^0-9a-f]*'`),definitionJsonCheck:check("ui_definition_archive_definition_json_ck",sql`json_valid(${t.definition_json}) AND json_type(${t.definition_json}) = 'object'`),createdAtCheck:check("ui_definition_archive_created_at_ck",sql`${t.created_at} >= 0`)}));});var Q,Ze,ht,gu=x(()=>{m();Q=sqliteTable("projects",{id:text("id").primaryKey().notNull(),workspace_id:text("workspace_id").notNull(),name:text("name").notNull(),outcome:text("outcome").notNull(),due_date:text("due_date"),scene:text("scene").notNull().default("planning"),stages_json:text("stages_json").notNull(),stage_index:integer("stage_index").notNull(),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),accepted_at:text("accepted_at"),archived_at:text("archived_at")},t=>({idCheck:check("projects_id_ck",sql`${t.id} GLOB 'prj_*'`),sceneCheck:check("projects_scene_ck",sql`${t.scene} IN ('planning', 'plan_review', 'running', 'human_wait', 'limit_wait', 'failed_stop', 'analyzing_feedback', 'replanned', 'awaiting_review', 'accepted')`),stagesJsonCheck:check("projects_stages_json_ck",sql`json_valid(${t.stages_json}) AND json_type(${t.stages_json}) = 'array'`),stageIndexCheck:check("projects_stage_index_ck",sql`${t.stage_index} >= 1`)})),Ze=sqliteTable("project_criteria",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>Q.id,{onDelete:"cascade"}),position:integer("position").notNull(),statement:text("statement").notNull(),verify_status:text("verify_status").notNull().default("pending"),verified_at:text("verified_at"),evidence_json:text("evidence_json").notNull().default("[]"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},t=>({idCheck:check("project_criteria_id_ck",sql`${t.id} GLOB 'pjc_*'`),verifyStatusCheck:check("project_criteria_verify_status_ck",sql`${t.verify_status} IN ('pending', 'verifying', 'passed', 'failed')`),evidenceJsonCheck:check("project_criteria_evidence_json_ck",sql`json_valid(${t.evidence_json}) AND json_type(${t.evidence_json}) = 'array'`),projectPositionUnique:uniqueIndex("project_criteria_project_position_uq").on(t.project_id,t.position)})),ht=sqliteTable("project_events",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>Q.id,{onDelete:"restrict"}),seq:integer("seq").notNull(),actor_type:text("actor_type").notNull(),actor_id:text("actor_id"),type:text("type").notNull(),title:text("title").notNull(),summary:text("summary"),payload_json:text("payload_json").notNull().default("{}"),created_at:text("created_at").notNull()},t=>({idCheck:check("project_events_id_ck",sql`${t.id} GLOB 'pje_*'`),actorTypeCheck:check("project_events_actor_type_ck",sql`${t.actor_type} IN ('user', 'project_manager', 'system')`),payloadJsonCheck:check("project_events_payload_json_ck",sql`json_valid(${t.payload_json}) AND json_type(${t.payload_json}) = 'object'`),projectSeqUnique:uniqueIndex("project_events_project_seq_uq").on(t.project_id,t.seq)}));});var Os,Ns,P,ii=x(()=>{m();Os=["THREAD_STATE","THREAD_PRIORITY"],Ns=["gray","blue","violet","green","amber","orange","red","pink"],P=sqliteTable("common_codes",{code_group:text("code_group").notNull(),code:text("code").notNull(),code_name:text("code_name"),color:text("color").notNull().default("gray"),sort_order:integer("sort_order").notNull(),workspace_id:text("workspace_id"),is_builtin:integer("is_builtin").notNull().default(0),is_archived:integer("is_archived").notNull().default(0),metadata:text("metadata"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},t=>({pk:primaryKey({columns:[t.code_group,t.code]}),metadataCheck:check("common_codes_metadata_ck",sql`${t.metadata} IS NULL OR (json_valid(${t.metadata}) AND json_type(${t.metadata}) = 'object')`),builtinCheck:check("common_codes_builtin_ck",sql`${t.is_builtin} IN (0, 1)`),archivedCheck:check("common_codes_archived_ck",sql`${t.is_archived} IN (0, 1)`),idxCommonCodesSelection:index("idx_common_codes_group_archived_order").on(t.code_group,t.is_archived,t.sort_order)}));});var _u,hu,mu,ku,Tu,Z,G,q,wu=x(()=>{m();Ir();_u=["thread.snapshot.imported","thread.title.changed","thread.priority.changed","thread.state.changed","thread.highlight.created","thread.highlight.updated","thread.highlight.deleted","thread.highlights.regenerated"],hu=["user","agent","system"],mu=["auto","manual"],ku=["decision","judgment","issue","result","pivot"],Tu=["queued","running","completed","failed"],Z=sqliteTable("thread_events",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),seq:integer("seq").notNull(),type:text("type").notNull(),actor_type:text("actor_type").notNull(),payload_json:text("payload_json").notNull(),created_at:text("created_at").notNull(),actor_id:text("actor_id"),task_id:text("task_id"),highlight_id:text("highlight_id")},t=>({typeCheck:check("thread_events_type_ck",sql`${t.type} IN ('thread.snapshot.imported', 'thread.title.changed', 'thread.priority.changed', 'thread.state.changed', 'thread.highlight.created', 'thread.highlight.updated', 'thread.highlight.deleted', 'thread.highlights.regenerated')`),actorTypeCheck:check("thread_events_actor_type_ck",sql`${t.actor_type} IN ('user', 'agent', 'system')`),payloadJsonCheck:check("thread_events_payload_json_ck",sql`json_valid(${t.payload_json}) AND json_type(${t.payload_json}) = 'object'`),threadSeqIndex:index("idx_thread_events_thread_seq").on(t.thread_id,t.seq),threadCreatedIndex:index("idx_thread_events_thread_created").on(t.thread_id,t.created_at),threadSeqUnique:uniqueIndex("thread_events_thread_seq_uq").on(t.thread_id,t.seq)})),G=sqliteTable("thread_highlight_runs",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),request_id:text("request_id").notNull(),status:text("status").notNull(),detector_version:text("detector_version").notNull(),requested_at:text("requested_at").notNull(),started_at:text("started_at"),completed_at:text("completed_at"),error_code:text("error_code"),previous_auto_count:integer("previous_auto_count"),new_auto_count:integer("new_auto_count")},t=>({statusCheck:check("thread_highlight_runs_status_ck",sql`${t.status} IN ('queued', 'running', 'completed', 'failed')`),countCheck:check("thread_highlight_runs_counts_ck",sql`(${t.previous_auto_count} IS NULL OR ${t.previous_auto_count} >= 0) AND (${t.new_auto_count} IS NULL OR ${t.new_auto_count} >= 0)`),threadRequestUnique:uniqueIndex("thread_highlight_runs_thread_request_uq").on(t.thread_id,t.request_id),inProgressThreadUnique:uniqueIndex("thread_highlight_runs_in_progress_thread_uq").on(t.thread_id).where(sql`${t.status} IN ('queued', 'running')`),threadStatusRequestedIndex:index("idx_thread_highlight_runs_thread_status_requested").on(t.thread_id,t.status,t.requested_at)})),q=sqliteTable("thread_highlights",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),source:text("source").notNull(),kind:text("kind").notNull(),status:text("status").notNull().default("active"),text:text("text"),covers_from_task_id:text("covers_from_task_id").notNull(),covers_to_task_id:text("covers_to_task_id").notNull(),revision:integer("revision").notNull().default(0),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),agent_id:text("agent_id"),source_task_id:text("source_task_id"),detector_version:text("detector_version"),content_fingerprint:text("content_fingerprint"),dismissed_at:text("dismissed_at")},t=>({sourceCheck:check("thread_highlights_source_ck",sql`${t.source} IN ('auto', 'manual')`),kindCheck:check("thread_highlights_kind_ck",sql`${t.kind} IN ('decision', 'judgment', 'issue', 'result', 'pivot')`),statusCheck:check("thread_highlights_status_ck",sql`${t.status} IN ('active', 'dismissed')`),activeTextCheck:check("thread_highlights_active_text_ck",sql`${t.status} = 'dismissed' OR (${t.text} IS NOT NULL AND length(${t.text}) > 0)`),coversCheck:check("thread_highlights_covers_ck",sql`length(${t.covers_from_task_id}) > 0 AND length(${t.covers_to_task_id}) > 0`),autoKeyCheck:check("thread_highlights_auto_key_ck",sql`${t.source} = 'manual' OR (${t.source} = 'auto' AND ${t.source_task_id} IS NOT NULL AND ${t.detector_version} IS NOT NULL AND ${t.content_fingerprint} IS NOT NULL AND length(${t.source_task_id}) > 0 AND length(${t.detector_version}) > 0 AND length(${t.content_fingerprint}) > 0)`),threadStatusCreatedIndex:index("idx_thread_highlights_thread_status_created").on(t.thread_id,t.status,t.created_at),threadCoversIndex:index("idx_thread_highlights_thread_covers").on(t.thread_id,t.covers_from_task_id,t.covers_to_task_id),autoIdempotencyUnique:uniqueIndex("thread_highlights_auto_idempotency_uq").on(t.thread_id,t.source_task_id,t.detector_version,t.content_fingerprint).where(sql`${t.source} = 'auto'`)}));});var Ru=x(()=>{m();sqliteTable("storage_metadata",{source_kind:text("source_kind").notNull(),source_id:text("source_id").notNull(),utc_ts:text("utc_ts"),bytes:integer("bytes").notNull()},t=>({pk:primaryKey({columns:[t.source_kind,t.source_id]}),kindTimestampBytesIndex:index("idx_storage_metadata_kind_ts_bytes").on(t.source_kind,t.utc_ts,t.bytes)})),sqliteTable("storage_metadata_state",{unit:text("unit").primaryKey().notNull(),cursor_rowid:integer("cursor_rowid").notNull().default(0),end_rowid:integer("end_rowid"),complete:integer("complete").notNull().default(0),updated_at:text("updated_at").notNull()});});var ze,Eu=x(()=>{m();ze=sqliteTable("agent_send_history",{workspace_id:text("workspace_id").notNull(),actor_id:text("actor_id").notNull(),agent_id:text("agent_id").notNull(),last_accepted_at:text("last_accepted_at").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.actor_id,t.agent_id]}),recentIndex:index("idx_agent_send_history_recent").on(t.workspace_id,t.actor_id,t.last_accepted_at,t.agent_id)}));});var Iu,tt,ee,z,fe,ut,Au=x(()=>{m();Ir();Rs();Iu=["cyan","orange","purple","blue"],tt=sqliteTable("sidebar_states",{workspace_id:text("workspace_id").primaryKey().references(()=>L.id,{onDelete:"cascade"}),revision:integer("revision").notNull().default(0),rail_collapsed:integer("rail_collapsed").notNull().default(0),seeded_at:text("seeded_at").notNull()},t=>({railCollapsedCheck:check("sidebar_states_rail_collapsed_ck",sql`${t.rail_collapsed} IN (0, 1)`)})),ee=sqliteTable("sidebar_groups",{id:text("id").primaryKey(),workspace_id:text("workspace_id").notNull().references(()=>L.id,{onDelete:"cascade"}),name:text("name").notNull(),color:text("color").notNull(),collapsed:integer("collapsed").notNull().default(0),position:integer("position").notNull()},t=>({colorCheck:check("sidebar_groups_color_ck",sql`${t.color} IN ('cyan', 'orange', 'purple', 'blue')`),collapsedCheck:check("sidebar_groups_collapsed_ck",sql`${t.collapsed} IN (0, 1)`),idxSidebarGroupsWorkspacePosition:index("idx_sidebar_groups_workspace_position").on(t.workspace_id,t.position)})),z=sqliteTable("sidebar_tabs",{workspace_id:text("workspace_id").notNull().references(()=>L.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>ee.id,{onDelete:"set null"}),position:integer("position").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.thread_id]})})),fe=sqliteTable("sidebar_closed_tabs",{id:integer("id").primaryKey({autoIncrement:true}),workspace_id:text("workspace_id").notNull().references(()=>L.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>ee.id,{onDelete:"set null"}),position:integer("position").notNull(),closed_at:text("closed_at").notNull()},t=>({idxSidebarClosedTabsWorkspaceId:index("idx_sidebar_closed_tabs_workspace_id").on(t.workspace_id,t.id)})),ut=sqliteTable("thread_reads",{workspace_id:text("workspace_id").notNull().references(()=>L.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),read_through_at:text("read_through_at").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.thread_id]})}));});var te,Ou=x(()=>{m();te=sqliteTable("schedule_runs",{id:text("id").primaryKey(),schedule_id:text("schedule_id").notNull(),workspace_id:text("workspace_id").notNull(),mode:text("mode").notNull(),trigger:text("trigger").notNull(),occurrence_key:text("occurrence_key"),task_id:text("task_id"),app_id:text("app_id"),schedule_name:text("schedule_name"),builtin_id:text("builtin_id"),command:text("command"),high_frequency:integer("high_frequency").notNull().default(0),status:text("status").notNull(),error_code:text("error_code"),exit_code:integer("exit_code"),signal:text("signal"),started_at:text("started_at").notNull(),finished_at:text("finished_at"),duration_ms:integer("duration_ms"),pid:integer("pid"),host_pid:integer("host_pid"),output_tail:text("output_tail"),output_bytes:integer("output_bytes"),output_truncated:integer("output_truncated").notNull().default(0)},t=>({idx_schedule_runs_workspace_started:index("idx_schedule_runs_workspace_started").on(t.workspace_id,sql`${t.started_at} DESC`),idx_schedule_runs_schedule_started:index("idx_schedule_runs_schedule_started").on(t.schedule_id,sql`${t.started_at} DESC`),idx_schedule_runs_task_id:index("idx_schedule_runs_task_id").on(t.task_id),idx_schedule_runs_running:index("idx_schedule_runs_running").on(t.workspace_id,t.started_at).where(sql`${t.status} = 'running'`)}));});var Nu=x(()=>{m();sqliteTable("run_column_backfill",{name:text("name").primaryKey(),cursor:integer("cursor"),anchor_id:text("anchor_id"),completed_at:text("completed_at")});});var he=x(()=>{m();Rs();Dn();Hd();Ud();Ir();jd();Gd();zd();Vd();Yd();Qd();tu();nu();su();iu();au();uu();cu();pu();gu();ii();wu();Ru();Eu();Au();Ou();Nu();});var Z_,xr,ki=x(()=>{m();oe();pe();_e();le();he();Z_=50,xr=class extends U{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=`${e.dbRoot}/.crewx/crewx.db`);}resolveDbPath(){return this.dbPath??super.resolveDbPath()}openHandle(){let e=this.resolveDbPath(),n=v(e);try{return V(n.db,e),n}catch(r){throw n.close(),r}}recordAccepted(e){if(e.actorKind!=="human"||!e.workspaceId||!e.actorId||!e.agentId)return false;let n;try{n=this.openHandle();let r=e.acceptedAt??new Date().toISOString();return n.db.insert(ze).values({workspace_id:e.workspaceId,actor_id:e.actorId,agent_id:e.agentId,last_accepted_at:r}).onConflictDoUpdate({target:[ze.workspace_id,ze.actor_id,ze.agent_id],set:{last_accepted_at:sql`MAX(${ze.last_accepted_at}, excluded.last_accepted_at)`}}).run(),!0}catch(r){return console.error("[AgentSendHistoryRepository] Failed to record accepted agent send",r),false}finally{n?.close();}}findRecentAgents(e,n){let r;try{return r=this.openHandle(),r.db.select({agentId:ze.agent_id,lastAcceptedAt:ze.last_accepted_at}).from(ze).where(and(eq(ze.workspace_id,e),eq(ze.actor_id,n))).orderBy(desc(ze.last_accepted_at),asc(ze.agent_id)).limit(Z_).all()}catch(s){throw s instanceof f?s:new f("DB_ERROR","Failed to find recent agent sends",s)}finally{r?.close();}}};});function Un(t){return typeof t=="string"&&kt.includes(t)}function Lr(t){if(!t||!t.includes("workflow"))return null;let e;try{e=JSON.parse(t);}catch{return null}if(typeof e!="object"||e===null||Array.isArray(e))return null;let n=e,r=n.workflowRunId;if(typeof r=="string"&&r!=="")return r;let s=n.workflow;if(typeof s=="object"&&s!==null&&!Array.isArray(s)){let o=s.exec_id;if(typeof o=="string"&&o!=="")return o}return null}var kt,Bn=x(()=>{m();kt=["workflow_card","workflow_ui_instance","workflow_run"];});var Fn,Ri,Zu,Ei=x(()=>{m();Fn={"claude-fable-5-1":{input:10,cachedInput:.25,output:50},"claude-fable-5":{input:10,cachedInput:1,output:50},"claude-opus-5-5":{input:4,cachedInput:.2,output:20},"claude-opus-5":{input:5,cachedInput:.5,output:25},"claude-opus-4-8":{input:5,cachedInput:.5,output:25},"claude-opus-4-7":{input:5,cachedInput:.5,output:25},"claude-opus-4-6":{input:5,cachedInput:.5,output:25},"claude-sonnet-5-5":{input:2,cachedInput:.1,output:10},"claude-sonnet-5":{input:2,cachedInput:.2,output:10},"claude-sonnet-4-6":{input:3,cachedInput:.3,output:15},"claude-haiku-5-5":{input:.1,cachedInput:.01,output:.5},"claude-haiku-4-5":{input:1,cachedInput:.1,output:5},"gpt-6-astra":{input:10,cachedInput:1,output:50},"gpt-6.1-sol":{input:2,cachedInput:.1,output:10},"gpt-6-sol":{input:2,cachedInput:.2,output:10},"gpt-6-luna":{input:.1,cachedInput:.01,output:.5},"gpt-5.6-sol":{input:4,cachedInput:.4,output:20},"gpt-5.6-terra":{input:2,cachedInput:.2,output:12},"gpt-5.6-luna":{input:.2,cachedInput:.02,output:1.2},"gpt-5.5":{input:5,cachedInput:.5,output:30},"gpt-5.4":{input:2.5,cachedInput:.25,output:15},"gpt-5.4-mini":{input:.75,cachedInput:.075,output:4.5},"gpt-5.3-codex":{input:1.75,cachedInput:.175,output:14},"gpt-5-mini":{input:.4,cachedInput:.1,output:1.6},"gpt-4.1":{input:2,cachedInput:.5,output:8},"gpt-4o":{input:2.5,cachedInput:1.25,output:10},"glm-5.2":{input:1.4,cachedInput:.26,output:4.4},"glm-5.1":{input:1.4,cachedInput:.26,output:4.4},"gemini-3.7-flash":{input:1.5,cachedInput:.15,output:7.5},"gemini-3.6-flash":{input:1.5,cachedInput:.15,output:7.5},"grok-4.7":{input:2,cachedInput:.5,output:6},"grok-4.6":{input:2,cachedInput:.5,output:6},"grok-4.5":{input:2,cachedInput:.3,output:6}},Ri=new Set(["gpt-5.3-codex-spark"]),Zu=new Set(["auto","claude-fable-5","claude-fable-5-1","claude-haiku-4-5","claude-haiku-5-5","claude-opus-4-6","claude-opus-4-6-thinking","claude-opus-4-6[1m]","claude-opus-4-7","claude-opus-4-7[1m]","claude-opus-4-8","claude-opus-4-8[1m]","claude-opus-5","claude-opus-5-5","claude-sonnet-4-6","claude-sonnet-4-6[1m]","claude-sonnet-5","claude-sonnet-5-5","gemini-3.1-pro","gemini-3.6-flash","gemini-3.7-flash","glm-5.1","glm-5.2","gpt-4.1","gpt-4o","gpt-5-mini","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini","gpt-5.5","gpt-5.6-luna","gpt-5.6-sol","gpt-5.6-terra","gpt-6-astra","gpt-6-luna","gpt-6-sol","gpt-6.1-sol","gpt-oss-120b","grok-4.5","grok-4.6","grok-4.7"]);});function Si(t){let e=t.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let n=e.lastIndexOf("/");return n>=0&&(e=e.slice(n+1)),e=e.replace(/-\d{8}$/,""),e}function bh(t){if(!t)return console.warn("[pricing] missing model id; cost is being recorded as 0"),Pr;let e=Si(t),n=Sh[e];if(n)return Us[n]??Fn[n]??Pr;if(Us[e])return Us[e];if(Fn[e])return Fn[e];if(Ri.has(e))return console.warn(`[pricing] unpublished model pricing: ${t}, cost_usd=0`),Pr;if(Zu.has(e))return console.warn(`[pricing] missing catalog pricing: ${t}, cost_usd=0`),Pr;let r={...Fn,...Us};for(let s of Object.keys(r))if(e.includes(s))return r[s];return console.warn(`[pricing] Unknown model: ${t}, cost_usd=0`),Pr}function Ih(t,e,n,r=0,s){let o=bh(n),i=Math.min(r,t),u=(t-i)*o.input/1e6,c=i*o.cachedInput/1e6,p=e*o.output/1e6;return u+c+p}function ec(t,e,n,r,s,o){return t&&t>0?t:!e&&!n?0:Ih(e??0,n??0,s,r??0)}var Sh,Pr,Us,Bs=x(()=>{m();Ei();Ei();Sh={opus:"claude-opus-4-8",sonnet:"claude-sonnet-4-6",haiku:"claude-haiku-4-5","codex-mini":"gpt-5.3-codex",codex:"gpt-5.3-codex"},Pr={input:0,cachedInput:0,output:0},Us={};});function qs(t){if(!t||!t.includes("schedule_id"))return null;let e;try{e=JSON.parse(t);}catch{return null}if(typeof e!="object"||e===null||Array.isArray(e))return null;let n=e,r=n.trigger;if(typeof r!="string"||!Ah.includes(r))return null;let s=n.schedule_id;return typeof s=="string"&&s!==""?s:null}var Fs,tc,nc,rc,bi,Ah,Ii=x(()=>{m();Fs="tasks_run_columns",tc="idx_tasks_workflow_run_id",nc="idx_tasks_ws_schedule_started",rc="idx_tasks_ws_human_started",bi=[{name:tc,sql:`CREATE INDEX IF NOT EXISTS ${tc} ON tasks (workflow_run_id) WHERE workflow_run_id IS NOT NULL`},{name:nc,sql:`CREATE INDEX IF NOT EXISTS ${nc} ON tasks (workspace_id, started_at) WHERE schedule_id IS NOT NULL`},{name:rc,sql:`CREATE INDEX IF NOT EXISTS ${rc} ON tasks (workspace_id, started_at) WHERE actor_kind = 'human'`}],Ah=["cron","cron_manual"];});function Oi(t){return t instanceof Error?t:t===void 0?void 0:new Error(String(t))}function sc(t){return typeof t=="object"&&t!==null&&"code"in t?String(t.code):void 0}function js(t){return Number.isSafeInteger(t)&&t>0}function xh(t,e){try{let n=spawnSync(t,e,{encoding:"utf8",timeout:Ai,windowsHide:!0});return {status:n.status,stdout:typeof n.stdout=="string"?n.stdout:"",stderr:typeof n.stderr=="string"?n.stderr:"",error:n.error}}catch(n){return {status:null,stdout:"",stderr:"",error:Oi(n)}}}function Lh(t,e){return new Promise(n=>{let r;try{r=spawn(t,e,{windowsHide:!0});}catch(c){n({status:null,stdout:"",stderr:"",error:Oi(c)});return}let s="",o="",i=false,a,u=setTimeout(()=>{try{r.kill();}catch{}a({status:null,stdout:s,stderr:o,error:new Error(`Command timed out after ${Ai}ms`)});},Ai);a=c=>{i||(i=true,clearTimeout(u),n(c));},r.stdout?.setEncoding("utf8"),r.stderr?.setEncoding("utf8"),r.stdout?.on("data",c=>{s+=String(c);}),r.stderr?.on("data",c=>{o+=String(c);}),r.once("error",c=>{a({status:null,stdout:s,stderr:o,error:c});}),r.once("close",c=>{a({status:c,stdout:s,stderr:o});});})}async function Ni(t,e,n){return n.runCommandAsync?n.runCommandAsync(t,e):n.runCommand?n.runCommand(t,e):Lh(t,e)}function Ph(t){return new Promise(e=>{setTimeout(e,Math.max(0,t));})}function Mh(){return new Promise(t=>{setImmediate(t);})}function Yt(t,e=process.kill){try{return e(t,0),"alive"}catch(n){return sc(n)==="ESRCH"?"not_found":sc(n)==="EPERM"?"alive":"unknown"}}function Hh(t,e){let n=Yt(-t,e),r=Yt(t,e);return n==="alive"||r==="alive"?"alive":n==="unknown"||r==="unknown"?"unknown":"not_found"}async function ic(t,e,n,r){let s=Math.max(0,n),o=Math.max(1,r.pollIntervalMs??Ch),i=Date.now()+s,a,u=s===0,c=r.sleep?Promise.resolve().then(()=>r.sleep(s)).then(()=>{},()=>{}):new Promise(p=>{a=setTimeout(p,s);});c.then(()=>{u=true;});try{for(await Mh();;){let p=Hh(t,e);if(p==="not_found")return p;let l=i-Date.now();if(u||l<=0)return p;await Promise.race([c,Ph(Math.min(o,l))]);}}finally{a!==void 0&&clearTimeout(a);}}async function oc(t,e,n,r,s){let o=await ic(t,e,s.hardConfirmMs??Dh,{...s,sleep:void 0});return o==="not_found"?n?{status:"not_found",pid:t,method:r}:{status:"terminated",pid:t,method:r}:o==="alive"?{status:"failed",pid:t,method:r,error:"Process is still running after termination attempt"}:{status:"failed",pid:t,method:r,error:"Unable to verify process termination"}}async function ac(t,e,n={}){if(!js(t))return "unknown";let r=n.platform??process.platform,s=r==="win32"?"powershell.exe":"ps",o=r==="win32"?["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",`$p = Get-CimInstance -ClassName Win32_Process -Filter 'ProcessId = ${t}' -ErrorAction Stop; if ($null -ne $p) { [Console]::Write([string]$p.CommandLine) }`]:["-p",String(t),"-o","command="],i;try{i=await Ni(s,o,n);}catch{return "unknown"}if(i.error||i.status!==0)return "unknown";let a=i.stdout.trim();if(!a)return "not_found";let u=r==="win32"?a.toLowerCase():a;return e.filter(p=>p.trim().length>0).some(p=>{let l=r==="win32"?p.toLowerCase():p;return u.includes(l)})?"owned":"not_owned"}function Fh(t){let e=$h.exec(t.trim());if(!e)return;let[,n="0",r="0",s="0",o="0"]=e;return ((Number(n)*24+Number(r))*60+Number(s))*60+Number(o)}function qh(t){let e=t.trim(),n=Bh.exec(e);if(n){let[,s,o,i,a,u,c,p,l]=n;return Date.UTC(Number(s),Number(o)-1,Number(i),Number(a),Number(u),Number(c),Math.trunc(Number(p)/1e3))-Number(l)*6e4}let r=Date.parse(e);return Number.isFinite(r)?r:void 0}function dc(t,e){return e==="win32"?{command:"powershell.exe",args:["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",`$p = Get-CimInstance -ClassName Win32_Process -Filter 'ProcessId = ${t}' -ErrorAction Stop; if ($null -ne $p) { [Console]::Write($p.CreationDate.ToUniversalTime().ToString('o')) }`]}:{command:"ps",args:["-p",String(t),"-o","pgid=","-o","etime=","-o","stat="]}}function uc(t,e,n){if(t.error)return {status:"unknown"};let r=t.stdout.trim();if(!r)return t.status===0||t.status===1?{status:"not_found"}:{status:"unknown"};if(t.status!==0)return {status:"unknown"};if(e==="win32"){let i=qh(r);return i===void 0?{status:"unknown"}:{status:"found",startedAtMs:i,groupId:null}}let s=Uh.exec(r),o=s?Fh(s[2]):void 0;return !s||o===void 0?{status:"unknown"}:s[3].startsWith("Z")?{status:"unknown"}:{status:"found",startedAtMs:n-o*1e3,groupId:Number(s[1])}}function cc(t,e={}){if(!js(t))return {status:"unknown"};let n=e.platform??process.platform,{command:r,args:s}=dc(t,n),o=e.runCommand??xh,i;try{i=o(r,s);}catch{return {status:"unknown"}}return uc(i,n,Date.now())}async function lc(t,e={}){if(!js(t))return {status:"unknown"};let n=e.platform??process.platform,{command:r,args:s}=dc(t,n),o;try{o=await Ni(r,s,e);}catch{return {status:"unknown"}}return uc(o,n,Date.now())}async function Hr(t,e={}){let n=e.platform??process.platform,r=n==="win32"?"taskkill":"process-group",s=g=>({status:"failed",pid:t,method:r,error:g});if(!js(t))return s("Invalid process ID");let o=e.kill??process.kill,i=Yt(t,o);if(i==="not_found")return {status:"not_found",pid:t,method:r};if(i!=="alive")return s("Unable to determine whether the process is alive");if(n==="win32"){let g;try{g=await Ni("taskkill",["/PID",String(t),"/T","/F"],e);}catch(h){g={status:null,stdout:"",stderr:"",error:Oi(h)};}let _=Yt(t,o);return _==="not_found"?g.status===0&&!g.error?{status:"terminated",pid:t,method:r}:{status:"not_found",pid:t,method:r}:s(_==="alive"?"Process is still running after termination attempt":"Unable to verify process termination")}let a,u=e.signal??"SIGKILL";try{o(-t,u);}catch(g){a=g;}if(u==="SIGKILL")return oc(t,o,a,r,e);if(await ic(t,o,e.graceMs??vh,e)==="not_found")return a?{status:"not_found",pid:t,method:r}:{status:"terminated",pid:t,method:r};let p;try{o(-t,"SIGKILL");}catch(g){p=g;}let l=await oc(t,o,p,r,e);return l.status==="terminated"?l:l.status==="not_found"?a?l:{status:"terminated",pid:t,method:r}:s(l.error??"Process termination failed")}var Ai,Mr,vh,Ch,Dh,Ws,$h,Uh,Bh,vi=x(()=>{m();Ai=3e3,Mr="SIGINT",vh=2e3,Ch=25,Dh=100;Ws=3e3,$h=/^(?:(\d+)-)?(?:(\d+):)?(\d{1,2}):(\d{2})$/,Uh=/^\s*(\d+)\s+(\S+)\s+(\S+)\s*$/,Bh=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d{6})([+-]\d{3})$/;});function hc(t,e){let n=e===void 0?"":` at index ${e}`;if(!t||typeof t!="object")throw new f("VALIDATION",`Task log entry${n} must be an object`);if(typeof t.timestamp!="string"||typeof t.level!="string"||typeof t.message!="string")throw new f("VALIDATION",`Task log entry${n} must contain string timestamp, level, and message fields`);return {timestamp:t.timestamp,level:t.level,message:t.message}}function gc(t,e){if(e===null||e.trim()==="")return [];let n;try{n=JSON.parse(e);}catch(r){throw new f("DB_ERROR",`Malformed legacy task logs: ${t}`,r)}if(!Array.isArray(n))throw new f("DB_ERROR",`Malformed legacy task logs: ${t} (expected an array)`);try{return n.map((r,s)=>hc(r,s))}catch(r){throw r instanceof f?new f("DB_ERROR",`Malformed legacy task logs: ${t}`,r):r}}function mc(t){if(t.log_storage!=="blob"&&t.log_storage!=="events")throw new f("DB_ERROR",`Invalid task log storage for task: ${t.id}`);if(!Number.isInteger(t.last_log_seq)||t.last_log_seq<0)throw new f("DB_ERROR",`Invalid task log sequence for task: ${t.id}`);if(!Number.isInteger(t.log_revision)||t.log_revision<0)throw new f("DB_ERROR",`Invalid task log revision for task: ${t.id}`);return t.log_storage}function _c(t){return {taskId:t.id,source:mc(t),revision:t.log_revision,lastSeq:t.last_log_seq}}function Vh(t){if(!Number.isInteger(t)||t<0)throw new f("VALIDATION","Task log tail limit must be a non-negative integer")}var fn,Gs=x(()=>{m();oe();pe();_e();le();he();fn=class extends U{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?Je(this.dbPath):super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let s=dirname(n);existsSync(s)||mkdirSync(s,{recursive:true});}else if(!existsSync(n))throw new f("NOT_FOUND","Database not found");let r=v(n);if(e)try{V(r.db,n);}catch(s){throw r.close(),s}return r}findStateRow(e,n){return e.db.select({id:d.id,log_storage:d.log_storage,last_log_seq:d.last_log_seq,log_revision:d.log_revision,logs:d.logs}).from(d).where(eq(d.id,n)).limit(1).get()}findStateRowInTransaction(e,n){return e.select({id:d.id,log_storage:d.log_storage,last_log_seq:d.last_log_seq,log_revision:d.log_revision,logs:d.logs}).from(d).where(eq(d.id,n)).limit(1).get()}requireStateRowInTransaction(e,n){let r=this.findStateRowInTransaction(e,n);if(!r)throw new f("NOT_FOUND",`Task not found: ${n}`);return r}appendLog(e,n){return this.appendLogs(e,[n])}appendLogs(e,n){let r=n.map((o,i)=>hc(o,i));if(r.length===0){let o=this.getLogState(e);if(!o)throw new f("NOT_FOUND",`Task not found: ${e}`);return o}let s=this.openHandle(true);try{return s.db.transaction(i=>{let a=this.requireStateRowInTransaction(i,e),u=mc(a);if(u==="blob"){let g=gc(e,a.logs);if(i.update(d).set({logs:JSON.stringify([...g,...r]),log_revision:sql`${d.log_revision} + 1`}).where(eq(d.id,e)).run().changes!==1)throw new f("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:u,revision:a.log_revision+1,lastSeq:a.last_log_seq}}let c=a.last_log_seq+1,p=a.last_log_seq+r.length;if(i.insert(vt).values(r.map((g,_)=>({task_id:e,seq:c+_,timestamp:g.timestamp,level:g.level,message:g.message}))).run(),i.update(d).set({last_log_seq:p,log_revision:sql`${d.log_revision} + 1`}).where(eq(d.id,e)).run().changes!==1)throw new f("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:u,revision:a.log_revision+1,lastSeq:p}},{behavior:"immediate"})}catch(o){throw o instanceof f?o:new f("DB_ERROR","Failed to append task log",o)}finally{s.close();}}getLogState(e){if(!this.dbExists())return;let n=this.openHandle(false);try{let r=this.findStateRow(n,e);return r?_c(r):void 0}catch(r){throw r instanceof f?r:new f("DB_ERROR","Failed to read task log state",r)}finally{n.close();}}readLogs(e){return this.readLogsInternal(e)}readLogsTail(e,n){return Vh(n),this.readLogsInternal(e,n)}readTail(e,n){return this.readLogsTail(e,n)}readLogsInternal(e,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.transaction(s=>{let o=this.findStateRowInTransaction(s,e);if(!o)return;let i=_c(o);if(i.source==="blob"){let p=gc(e,o.logs);return {...i,entries:n===void 0?p:p.slice(Math.max(0,p.length-n))}}let a=s.select({seq:vt.seq,timestamp:vt.timestamp,level:vt.level,message:vt.message}).from(vt).where(eq(vt.task_id,e)).orderBy(n===void 0?asc(vt.seq):desc(vt.seq)),c=(n===void 0?a.all():a.limit(n).all()).map(({timestamp:p,level:l,message:g})=>({timestamp:p,level:l,message:g}));return n!==void 0&&c.reverse(),{...i,entries:c}},{behavior:"deferred"})}catch(s){throw s instanceof f?s:new f("DB_ERROR","Failed to read task logs",s)}finally{r.close();}}};});var kc=x(()=>{m();});var ge,gn=x(()=>{m();ge=class extends Error{constructor(n,r,s){super(n);this.providerStr=r;this.name="ProviderError",this.code=s?.code??"UNKNOWN",this.kind=s?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=s?.retryAfterMs;}providerStr;code;kind;retryAfterMs;stdout};});var _n,Ci=x(()=>{m();gn();_n=class extends ge{name="RateLimitError";constructor(e,n="cli/claude"){super(e,n,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function wc(t){if(typeof t!="string")return;let e=t.trim();if(e)return e=e.replace(/^\s*at\s+[^\r\n]+(?:\r?\n|$)/gim,""),e=e.replace(/(^|[\r\n])\s*(?:authorization|proxy-authorization|x-api-key|x-goog-api-key|x-auth-token|cookie|set-cookie)\s*:\s*[^\r\n]*/gim,`$1[HTTP HEADER ${je}]`),e=Xh(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${je}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,je),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,je),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,je),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,je),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,je),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,je),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,je),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,je),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,je),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${je}${r}${je}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${je}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,Tc),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,Tc),e=e.replace(/[\r\n]{3,}/g,`
32
+ )`)}));});var pu=x(()=>{m();sqliteTable("ui_definition_archive",{definition_hash:text("definition_hash").primaryKey().notNull(),definition_json:text("definition_json").notNull(),created_at:integer("created_at").notNull()},t=>({definitionHashCheck:check("ui_definition_archive_definition_hash_ck",sql`length(${t.definition_hash}) = 64 AND ${t.definition_hash} NOT GLOB '*[^0-9a-f]*'`),definitionJsonCheck:check("ui_definition_archive_definition_json_ck",sql`json_valid(${t.definition_json}) AND json_type(${t.definition_json}) = 'object'`),createdAtCheck:check("ui_definition_archive_created_at_ck",sql`${t.created_at} >= 0`)}));});var Q,Ze,ht,gu=x(()=>{m();Q=sqliteTable("projects",{id:text("id").primaryKey().notNull(),workspace_id:text("workspace_id").notNull(),name:text("name").notNull(),outcome:text("outcome").notNull(),due_date:text("due_date"),scene:text("scene").notNull().default("planning"),stages_json:text("stages_json").notNull(),stage_index:integer("stage_index").notNull(),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),accepted_at:text("accepted_at"),archived_at:text("archived_at")},t=>({idCheck:check("projects_id_ck",sql`${t.id} GLOB 'prj_*'`),sceneCheck:check("projects_scene_ck",sql`${t.scene} IN ('planning', 'plan_review', 'running', 'human_wait', 'limit_wait', 'failed_stop', 'analyzing_feedback', 'replanned', 'awaiting_review', 'accepted')`),stagesJsonCheck:check("projects_stages_json_ck",sql`json_valid(${t.stages_json}) AND json_type(${t.stages_json}) = 'array'`),stageIndexCheck:check("projects_stage_index_ck",sql`${t.stage_index} >= 1`)})),Ze=sqliteTable("project_criteria",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>Q.id,{onDelete:"cascade"}),position:integer("position").notNull(),statement:text("statement").notNull(),verify_status:text("verify_status").notNull().default("pending"),verified_at:text("verified_at"),evidence_json:text("evidence_json").notNull().default("[]"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},t=>({idCheck:check("project_criteria_id_ck",sql`${t.id} GLOB 'pjc_*'`),verifyStatusCheck:check("project_criteria_verify_status_ck",sql`${t.verify_status} IN ('pending', 'verifying', 'passed', 'failed')`),evidenceJsonCheck:check("project_criteria_evidence_json_ck",sql`json_valid(${t.evidence_json}) AND json_type(${t.evidence_json}) = 'array'`),projectPositionUnique:uniqueIndex("project_criteria_project_position_uq").on(t.project_id,t.position)})),ht=sqliteTable("project_events",{id:text("id").primaryKey().notNull(),project_id:text("project_id").notNull().references(()=>Q.id,{onDelete:"restrict"}),seq:integer("seq").notNull(),actor_type:text("actor_type").notNull(),actor_id:text("actor_id"),type:text("type").notNull(),title:text("title").notNull(),summary:text("summary"),payload_json:text("payload_json").notNull().default("{}"),created_at:text("created_at").notNull()},t=>({idCheck:check("project_events_id_ck",sql`${t.id} GLOB 'pje_*'`),actorTypeCheck:check("project_events_actor_type_ck",sql`${t.actor_type} IN ('user', 'project_manager', 'system')`),payloadJsonCheck:check("project_events_payload_json_ck",sql`json_valid(${t.payload_json}) AND json_type(${t.payload_json}) = 'object'`),projectSeqUnique:uniqueIndex("project_events_project_seq_uq").on(t.project_id,t.seq)}));});var Os,Ns,P,ii=x(()=>{m();Os=["THREAD_STATE","THREAD_PRIORITY"],Ns=["gray","blue","violet","green","amber","orange","red","pink"],P=sqliteTable("common_codes",{code_group:text("code_group").notNull(),code:text("code").notNull(),code_name:text("code_name"),color:text("color").notNull().default("gray"),sort_order:integer("sort_order").notNull(),workspace_id:text("workspace_id"),is_builtin:integer("is_builtin").notNull().default(0),is_archived:integer("is_archived").notNull().default(0),metadata:text("metadata"),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull()},t=>({pk:primaryKey({columns:[t.code_group,t.code]}),metadataCheck:check("common_codes_metadata_ck",sql`${t.metadata} IS NULL OR (json_valid(${t.metadata}) AND json_type(${t.metadata}) = 'object')`),builtinCheck:check("common_codes_builtin_ck",sql`${t.is_builtin} IN (0, 1)`),archivedCheck:check("common_codes_archived_ck",sql`${t.is_archived} IN (0, 1)`),idxCommonCodesSelection:index("idx_common_codes_group_archived_order").on(t.code_group,t.is_archived,t.sort_order)}));});var _u,hu,mu,ku,Tu,Z,G,q,wu=x(()=>{m();Ir();_u=["thread.snapshot.imported","thread.title.changed","thread.priority.changed","thread.state.changed","thread.highlight.created","thread.highlight.updated","thread.highlight.deleted","thread.highlights.regenerated"],hu=["user","agent","system"],mu=["auto","manual"],ku=["decision","judgment","issue","result","pivot"],Tu=["queued","running","completed","failed"],Z=sqliteTable("thread_events",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),seq:integer("seq").notNull(),type:text("type").notNull(),actor_type:text("actor_type").notNull(),payload_json:text("payload_json").notNull(),created_at:text("created_at").notNull(),actor_id:text("actor_id"),task_id:text("task_id"),highlight_id:text("highlight_id")},t=>({typeCheck:check("thread_events_type_ck",sql`${t.type} IN ('thread.snapshot.imported', 'thread.title.changed', 'thread.priority.changed', 'thread.state.changed', 'thread.highlight.created', 'thread.highlight.updated', 'thread.highlight.deleted', 'thread.highlights.regenerated')`),actorTypeCheck:check("thread_events_actor_type_ck",sql`${t.actor_type} IN ('user', 'agent', 'system')`),payloadJsonCheck:check("thread_events_payload_json_ck",sql`json_valid(${t.payload_json}) AND json_type(${t.payload_json}) = 'object'`),threadSeqIndex:index("idx_thread_events_thread_seq").on(t.thread_id,t.seq),threadCreatedIndex:index("idx_thread_events_thread_created").on(t.thread_id,t.created_at),threadSeqUnique:uniqueIndex("thread_events_thread_seq_uq").on(t.thread_id,t.seq)})),G=sqliteTable("thread_highlight_runs",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),request_id:text("request_id").notNull(),status:text("status").notNull(),detector_version:text("detector_version").notNull(),requested_at:text("requested_at").notNull(),started_at:text("started_at"),completed_at:text("completed_at"),error_code:text("error_code"),previous_auto_count:integer("previous_auto_count"),new_auto_count:integer("new_auto_count")},t=>({statusCheck:check("thread_highlight_runs_status_ck",sql`${t.status} IN ('queued', 'running', 'completed', 'failed')`),countCheck:check("thread_highlight_runs_counts_ck",sql`(${t.previous_auto_count} IS NULL OR ${t.previous_auto_count} >= 0) AND (${t.new_auto_count} IS NULL OR ${t.new_auto_count} >= 0)`),threadRequestUnique:uniqueIndex("thread_highlight_runs_thread_request_uq").on(t.thread_id,t.request_id),inProgressThreadUnique:uniqueIndex("thread_highlight_runs_in_progress_thread_uq").on(t.thread_id).where(sql`${t.status} IN ('queued', 'running')`),threadStatusRequestedIndex:index("idx_thread_highlight_runs_thread_status_requested").on(t.thread_id,t.status,t.requested_at)})),q=sqliteTable("thread_highlights",{id:text("id").primaryKey().notNull(),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),source:text("source").notNull(),kind:text("kind").notNull(),status:text("status").notNull().default("active"),text:text("text"),covers_from_task_id:text("covers_from_task_id").notNull(),covers_to_task_id:text("covers_to_task_id").notNull(),revision:integer("revision").notNull().default(0),created_at:text("created_at").notNull(),updated_at:text("updated_at").notNull(),agent_id:text("agent_id"),source_task_id:text("source_task_id"),detector_version:text("detector_version"),content_fingerprint:text("content_fingerprint"),dismissed_at:text("dismissed_at")},t=>({sourceCheck:check("thread_highlights_source_ck",sql`${t.source} IN ('auto', 'manual')`),kindCheck:check("thread_highlights_kind_ck",sql`${t.kind} IN ('decision', 'judgment', 'issue', 'result', 'pivot')`),statusCheck:check("thread_highlights_status_ck",sql`${t.status} IN ('active', 'dismissed')`),activeTextCheck:check("thread_highlights_active_text_ck",sql`${t.status} = 'dismissed' OR (${t.text} IS NOT NULL AND length(${t.text}) > 0)`),coversCheck:check("thread_highlights_covers_ck",sql`length(${t.covers_from_task_id}) > 0 AND length(${t.covers_to_task_id}) > 0`),autoKeyCheck:check("thread_highlights_auto_key_ck",sql`${t.source} = 'manual' OR (${t.source} = 'auto' AND ${t.source_task_id} IS NOT NULL AND ${t.detector_version} IS NOT NULL AND ${t.content_fingerprint} IS NOT NULL AND length(${t.source_task_id}) > 0 AND length(${t.detector_version}) > 0 AND length(${t.content_fingerprint}) > 0)`),threadStatusCreatedIndex:index("idx_thread_highlights_thread_status_created").on(t.thread_id,t.status,t.created_at),threadCoversIndex:index("idx_thread_highlights_thread_covers").on(t.thread_id,t.covers_from_task_id,t.covers_to_task_id),autoIdempotencyUnique:uniqueIndex("thread_highlights_auto_idempotency_uq").on(t.thread_id,t.source_task_id,t.detector_version,t.content_fingerprint).where(sql`${t.source} = 'auto'`)}));});var Ru=x(()=>{m();sqliteTable("storage_metadata",{source_kind:text("source_kind").notNull(),source_id:text("source_id").notNull(),utc_ts:text("utc_ts"),bytes:integer("bytes").notNull()},t=>({pk:primaryKey({columns:[t.source_kind,t.source_id]}),kindTimestampBytesIndex:index("idx_storage_metadata_kind_ts_bytes").on(t.source_kind,t.utc_ts,t.bytes)})),sqliteTable("storage_metadata_state",{unit:text("unit").primaryKey().notNull(),cursor_rowid:integer("cursor_rowid").notNull().default(0),end_rowid:integer("end_rowid"),complete:integer("complete").notNull().default(0),updated_at:text("updated_at").notNull()});});var ze,Eu=x(()=>{m();ze=sqliteTable("agent_send_history",{workspace_id:text("workspace_id").notNull(),actor_id:text("actor_id").notNull(),agent_id:text("agent_id").notNull(),last_accepted_at:text("last_accepted_at").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.actor_id,t.agent_id]}),recentIndex:index("idx_agent_send_history_recent").on(t.workspace_id,t.actor_id,t.last_accepted_at,t.agent_id)}));});var Iu,tt,ee,z,fe,ut,Au=x(()=>{m();Ir();Rs();Iu=["cyan","orange","purple","blue"],tt=sqliteTable("sidebar_states",{workspace_id:text("workspace_id").primaryKey().references(()=>L.id,{onDelete:"cascade"}),revision:integer("revision").notNull().default(0),rail_collapsed:integer("rail_collapsed").notNull().default(0),seeded_at:text("seeded_at").notNull()},t=>({railCollapsedCheck:check("sidebar_states_rail_collapsed_ck",sql`${t.rail_collapsed} IN (0, 1)`)})),ee=sqliteTable("sidebar_groups",{id:text("id").primaryKey(),workspace_id:text("workspace_id").notNull().references(()=>L.id,{onDelete:"cascade"}),name:text("name").notNull(),color:text("color").notNull(),collapsed:integer("collapsed").notNull().default(0),position:integer("position").notNull()},t=>({colorCheck:check("sidebar_groups_color_ck",sql`${t.color} IN ('cyan', 'orange', 'purple', 'blue')`),collapsedCheck:check("sidebar_groups_collapsed_ck",sql`${t.collapsed} IN (0, 1)`),idxSidebarGroupsWorkspacePosition:index("idx_sidebar_groups_workspace_position").on(t.workspace_id,t.position)})),z=sqliteTable("sidebar_tabs",{workspace_id:text("workspace_id").notNull().references(()=>L.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>ee.id,{onDelete:"set null"}),position:integer("position").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.thread_id]})})),fe=sqliteTable("sidebar_closed_tabs",{id:integer("id").primaryKey({autoIncrement:true}),workspace_id:text("workspace_id").notNull().references(()=>L.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),group_id:text("group_id").references(()=>ee.id,{onDelete:"set null"}),position:integer("position").notNull(),closed_at:text("closed_at").notNull()},t=>({idxSidebarClosedTabsWorkspaceId:index("idx_sidebar_closed_tabs_workspace_id").on(t.workspace_id,t.id)})),ut=sqliteTable("thread_reads",{workspace_id:text("workspace_id").notNull().references(()=>L.id,{onDelete:"cascade"}),thread_id:text("thread_id").notNull().references(()=>T.id,{onDelete:"cascade"}),read_through_at:text("read_through_at").notNull()},t=>({pk:primaryKey({columns:[t.workspace_id,t.thread_id]})}));});var te,Ou=x(()=>{m();te=sqliteTable("schedule_runs",{id:text("id").primaryKey(),schedule_id:text("schedule_id").notNull(),workspace_id:text("workspace_id").notNull(),mode:text("mode").notNull(),trigger:text("trigger").notNull(),occurrence_key:text("occurrence_key"),task_id:text("task_id"),app_id:text("app_id"),schedule_name:text("schedule_name"),builtin_id:text("builtin_id"),command:text("command"),high_frequency:integer("high_frequency").notNull().default(0),status:text("status").notNull(),error_code:text("error_code"),exit_code:integer("exit_code"),signal:text("signal"),started_at:text("started_at").notNull(),finished_at:text("finished_at"),duration_ms:integer("duration_ms"),pid:integer("pid"),host_pid:integer("host_pid"),output_tail:text("output_tail"),output_bytes:integer("output_bytes"),output_truncated:integer("output_truncated").notNull().default(0)},t=>({idx_schedule_runs_workspace_started:index("idx_schedule_runs_workspace_started").on(t.workspace_id,sql`${t.started_at} DESC`),idx_schedule_runs_schedule_started:index("idx_schedule_runs_schedule_started").on(t.schedule_id,sql`${t.started_at} DESC`),idx_schedule_runs_task_id:index("idx_schedule_runs_task_id").on(t.task_id),idx_schedule_runs_running:index("idx_schedule_runs_running").on(t.workspace_id,t.started_at).where(sql`${t.status} = 'running'`)}));});var Nu=x(()=>{m();sqliteTable("run_column_backfill",{name:text("name").primaryKey(),cursor:integer("cursor"),anchor_id:text("anchor_id"),completed_at:text("completed_at")});});var he=x(()=>{m();Rs();Dn();Hd();Ud();Ir();jd();Gd();zd();Vd();Yd();Qd();tu();nu();su();iu();au();uu();cu();pu();gu();ii();wu();Ru();Eu();Au();Ou();Nu();});var Z_,xr,ki=x(()=>{m();oe();pe();_e();le();he();Z_=50,xr=class extends U{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=`${e.dbRoot}/.crewx/crewx.db`);}resolveDbPath(){return this.dbPath??super.resolveDbPath()}openHandle(){let e=this.resolveDbPath(),n=v(e);try{return V(n.db,e),n}catch(r){throw n.close(),r}}recordAccepted(e){if(e.actorKind!=="human"||!e.workspaceId||!e.actorId||!e.agentId)return false;let n;try{n=this.openHandle();let r=e.acceptedAt??new Date().toISOString();return n.db.insert(ze).values({workspace_id:e.workspaceId,actor_id:e.actorId,agent_id:e.agentId,last_accepted_at:r}).onConflictDoUpdate({target:[ze.workspace_id,ze.actor_id,ze.agent_id],set:{last_accepted_at:sql`MAX(${ze.last_accepted_at}, excluded.last_accepted_at)`}}).run(),!0}catch(r){return console.error("[AgentSendHistoryRepository] Failed to record accepted agent send",r),false}finally{n?.close();}}findRecentAgents(e,n){let r;try{return r=this.openHandle(),r.db.select({agentId:ze.agent_id,lastAcceptedAt:ze.last_accepted_at}).from(ze).where(and(eq(ze.workspace_id,e),eq(ze.actor_id,n))).orderBy(desc(ze.last_accepted_at),asc(ze.agent_id)).limit(Z_).all()}catch(s){throw s instanceof f?s:new f("DB_ERROR","Failed to find recent agent sends",s)}finally{r?.close();}}};});function Un(t){return typeof t=="string"&&kt.includes(t)}function Lr(t){if(!t||!t.includes("workflow"))return null;let e;try{e=JSON.parse(t);}catch{return null}if(typeof e!="object"||e===null||Array.isArray(e))return null;let n=e,r=n.workflowRunId;if(typeof r=="string"&&r!=="")return r;let s=n.workflow;if(typeof s=="object"&&s!==null&&!Array.isArray(s)){let o=s.exec_id;if(typeof o=="string"&&o!=="")return o}return null}var kt,Bn=x(()=>{m();kt=["workflow_card","workflow_ui_instance","workflow_run"];});var Fn,Ri,Zu,Ei=x(()=>{m();Fn={"claude-fable-5-1":{input:10,cachedInput:.25,output:50},"claude-fable-5":{input:10,cachedInput:1,output:50},"claude-opus-5-5":{input:4,cachedInput:.2,output:20},"claude-opus-5":{input:5,cachedInput:.5,output:25},"claude-opus-4-8":{input:5,cachedInput:.5,output:25},"claude-opus-4-7":{input:5,cachedInput:.5,output:25},"claude-opus-4-6":{input:5,cachedInput:.5,output:25},"claude-sonnet-5-5":{input:2,cachedInput:.1,output:10},"claude-sonnet-5":{input:2,cachedInput:.2,output:10},"claude-sonnet-4-6":{input:3,cachedInput:.3,output:15},"claude-haiku-5-5":{input:.1,cachedInput:.01,output:.5},"claude-haiku-4-5":{input:1,cachedInput:.1,output:5},"gpt-6-astra":{input:10,cachedInput:1,output:50},"gpt-6.1-sol":{input:2,cachedInput:.1,output:10},"gpt-6-sol":{input:2,cachedInput:.2,output:10},"gpt-6-luna":{input:.1,cachedInput:.01,output:.5},"gpt-5.6-sol":{input:4,cachedInput:.4,output:20},"gpt-5.6-terra":{input:2,cachedInput:.2,output:12},"gpt-5.6-luna":{input:.2,cachedInput:.02,output:1.2},"gpt-5.5":{input:5,cachedInput:.5,output:30},"gpt-5.4":{input:2.5,cachedInput:.25,output:15},"gpt-5.4-mini":{input:.75,cachedInput:.075,output:4.5},"gpt-5.3-codex":{input:1.75,cachedInput:.175,output:14},"gpt-5-mini":{input:.4,cachedInput:.1,output:1.6},"gpt-4.1":{input:2,cachedInput:.5,output:8},"gpt-4o":{input:2.5,cachedInput:1.25,output:10},"glm-5.2":{input:1.4,cachedInput:.26,output:4.4},"glm-5.1":{input:1.4,cachedInput:.26,output:4.4},"gemini-3.7-flash":{input:1.5,cachedInput:.15,output:7.5},"gemini-3.6-flash":{input:1.5,cachedInput:.15,output:7.5},"grok-4.7":{input:2,cachedInput:.5,output:6},"grok-4.6":{input:2,cachedInput:.5,output:6},"grok-4.5":{input:2,cachedInput:.3,output:6}},Ri=new Set(["gpt-5.3-codex-spark"]),Zu=new Set(["auto","claude-fable-5","claude-fable-5-1","claude-haiku-4-5","claude-haiku-5-5","claude-opus-4-6","claude-opus-4-6-thinking","claude-opus-4-6[1m]","claude-opus-4-7","claude-opus-4-7[1m]","claude-opus-4-8","claude-opus-4-8[1m]","claude-opus-5","claude-opus-5-5","claude-sonnet-4-6","claude-sonnet-4-6[1m]","claude-sonnet-5","claude-sonnet-5-5","gemini-3.1-pro","gemini-3.6-flash","gemini-3.7-flash","glm-5.1","glm-5.2","gpt-4.1","gpt-4o","gpt-5-mini","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini","gpt-5.5","gpt-5.6-luna","gpt-5.6-sol","gpt-5.6-terra","gpt-6-astra","gpt-6-luna","gpt-6-sol","gpt-6.1-sol","gpt-oss-120b","grok-4.5","grok-4.6","grok-4.7"]);});function Si(t){let e=t.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let n=e.lastIndexOf("/");return n>=0&&(e=e.slice(n+1)),e=e.replace(/-\d{8}$/,""),e}function bh(t){if(!t)return console.warn("[pricing] missing model id; cost is being recorded as 0"),Pr;let e=Si(t),n=Sh[e];if(n)return Us[n]??Fn[n]??Pr;if(Us[e])return Us[e];if(Fn[e])return Fn[e];if(Ri.has(e))return console.warn(`[pricing] unpublished model pricing: ${t}, cost_usd=0`),Pr;if(Zu.has(e))return console.warn(`[pricing] missing catalog pricing: ${t}, cost_usd=0`),Pr;let r={...Fn,...Us};for(let s of Object.keys(r))if(e.includes(s))return r[s];return console.warn(`[pricing] Unknown model: ${t}, cost_usd=0`),Pr}function Ih(t,e,n,r=0,s){let o=bh(n),i=Math.min(r,t),u=(t-i)*o.input/1e6,c=i*o.cachedInput/1e6,p=e*o.output/1e6;return u+c+p}function ec(t,e,n,r,s,o){return t&&t>0?t:!e&&!n?0:Ih(e??0,n??0,s,r??0)}var Sh,Pr,Us,Bs=x(()=>{m();Ei();Ei();Sh={opus:"claude-opus-4-8",sonnet:"claude-sonnet-4-6",haiku:"claude-haiku-4-5","codex-mini":"gpt-5.3-codex",codex:"gpt-5.3-codex"},Pr={input:0,cachedInput:0,output:0},Us={};});function qs(t){if(!t||!t.includes("schedule_id"))return null;let e;try{e=JSON.parse(t);}catch{return null}if(typeof e!="object"||e===null||Array.isArray(e))return null;let n=e,r=n.trigger;if(typeof r!="string"||!Ah.includes(r))return null;let s=n.schedule_id;return typeof s=="string"&&s!==""?s:null}var Fs,tc,nc,rc,bi,Ah,Ii=x(()=>{m();Fs="tasks_run_columns",tc="idx_tasks_workflow_run_id",nc="idx_tasks_ws_schedule_started",rc="idx_tasks_ws_human_started",bi=[{name:tc,sql:`CREATE INDEX IF NOT EXISTS ${tc} ON tasks (workflow_run_id) WHERE workflow_run_id IS NOT NULL`},{name:nc,sql:`CREATE INDEX IF NOT EXISTS ${nc} ON tasks (workspace_id, started_at) WHERE schedule_id IS NOT NULL`},{name:rc,sql:`CREATE INDEX IF NOT EXISTS ${rc} ON tasks (workspace_id, started_at) WHERE actor_kind = 'human'`}],Ah=["cron","cron_manual"];});function Oi(t){return t instanceof Error?t:t===void 0?void 0:new Error(String(t))}function sc(t){return typeof t=="object"&&t!==null&&"code"in t?String(t.code):void 0}function js(t){return Number.isSafeInteger(t)&&t>0}function xh(t,e){try{let n=spawnSync(t,e,{encoding:"utf8",timeout:Ai,windowsHide:!0});return {status:n.status,stdout:typeof n.stdout=="string"?n.stdout:"",stderr:typeof n.stderr=="string"?n.stderr:"",error:n.error}}catch(n){return {status:null,stdout:"",stderr:"",error:Oi(n)}}}function Lh(t,e){return new Promise(n=>{let r;try{r=spawn(t,e,{windowsHide:!0});}catch(c){n({status:null,stdout:"",stderr:"",error:Oi(c)});return}let s="",o="",i=false,a,u=setTimeout(()=>{try{r.kill();}catch{}a({status:null,stdout:s,stderr:o,error:new Error(`Command timed out after ${Ai}ms`)});},Ai);a=c=>{i||(i=true,clearTimeout(u),n(c));},r.stdout?.setEncoding("utf8"),r.stderr?.setEncoding("utf8"),r.stdout?.on("data",c=>{s+=String(c);}),r.stderr?.on("data",c=>{o+=String(c);}),r.once("error",c=>{a({status:null,stdout:s,stderr:o,error:c});}),r.once("close",c=>{a({status:c,stdout:s,stderr:o});});})}async function Ni(t,e,n){return n.runCommandAsync?n.runCommandAsync(t,e):n.runCommand?n.runCommand(t,e):Lh(t,e)}function Ph(t){return new Promise(e=>{setTimeout(e,Math.max(0,t));})}function Mh(){return new Promise(t=>{setImmediate(t);})}function Yt(t,e=process.kill){try{return e(t,0),"alive"}catch(n){return sc(n)==="ESRCH"?"not_found":sc(n)==="EPERM"?"alive":"unknown"}}function Hh(t,e){let n=Yt(-t,e),r=Yt(t,e);return n==="alive"||r==="alive"?"alive":n==="unknown"||r==="unknown"?"unknown":"not_found"}async function ic(t,e,n,r){let s=Math.max(0,n),o=Math.max(1,r.pollIntervalMs??Ch),i=Date.now()+s,a,u=s===0,c=r.sleep?Promise.resolve().then(()=>r.sleep(s)).then(()=>{},()=>{}):new Promise(p=>{a=setTimeout(p,s);});c.then(()=>{u=true;});try{for(await Mh();;){let p=Hh(t,e);if(p==="not_found")return p;let l=i-Date.now();if(u||l<=0)return p;await Promise.race([c,Ph(Math.min(o,l))]);}}finally{a!==void 0&&clearTimeout(a);}}async function oc(t,e,n,r,s){let o=await ic(t,e,s.hardConfirmMs??Dh,{...s,sleep:void 0});return o==="not_found"?n?{status:"not_found",pid:t,method:r}:{status:"terminated",pid:t,method:r}:o==="alive"?{status:"failed",pid:t,method:r,error:"Process is still running after termination attempt"}:{status:"failed",pid:t,method:r,error:"Unable to verify process termination"}}async function ac(t,e,n={}){if(!js(t))return "unknown";let r=n.platform??process.platform,s=r==="win32"?"powershell.exe":"ps",o=r==="win32"?["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",`$p = Get-CimInstance -ClassName Win32_Process -Filter 'ProcessId = ${t}' -ErrorAction Stop; if ($null -ne $p) { [Console]::Write([string]$p.CommandLine) }`]:["-p",String(t),"-o","command="],i;try{i=await Ni(s,o,n);}catch{return "unknown"}if(i.error||i.status!==0)return "unknown";let a=i.stdout.trim();if(!a)return "not_found";let u=r==="win32"?a.toLowerCase():a;return e.filter(p=>p.trim().length>0).some(p=>{let l=r==="win32"?p.toLowerCase():p;return u.includes(l)})?"owned":"not_owned"}function Fh(t){let e=$h.exec(t.trim());if(!e)return;let[,n="0",r="0",s="0",o="0"]=e;return ((Number(n)*24+Number(r))*60+Number(s))*60+Number(o)}function qh(t){let e=t.trim(),n=Bh.exec(e);if(n){let[,s,o,i,a,u,c,p,l]=n;return Date.UTC(Number(s),Number(o)-1,Number(i),Number(a),Number(u),Number(c),Math.trunc(Number(p)/1e3))-Number(l)*6e4}let r=Date.parse(e);return Number.isFinite(r)?r:void 0}function dc(t,e){return e==="win32"?{command:"powershell.exe",args:["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",`$p = Get-CimInstance -ClassName Win32_Process -Filter 'ProcessId = ${t}' -ErrorAction Stop; if ($null -ne $p) { [Console]::Write($p.CreationDate.ToUniversalTime().ToString('o')) }`]}:{command:"ps",args:["-p",String(t),"-o","pgid=","-o","etime=","-o","stat="]}}function uc(t,e,n){if(t.error)return {status:"unknown"};let r=t.stdout.trim();if(!r)return t.status===0||t.status===1?{status:"not_found"}:{status:"unknown"};if(t.status!==0)return {status:"unknown"};if(e==="win32"){let i=qh(r);return i===void 0?{status:"unknown"}:{status:"found",startedAtMs:i,groupId:null}}let s=Uh.exec(r),o=s?Fh(s[2]):void 0;return !s||o===void 0?{status:"unknown"}:s[3].startsWith("Z")?{status:"unknown"}:{status:"found",startedAtMs:n-o*1e3,groupId:Number(s[1])}}function cc(t,e={}){if(!js(t))return {status:"unknown"};let n=e.platform??process.platform,{command:r,args:s}=dc(t,n),o=e.runCommand??xh,i;try{i=o(r,s);}catch{return {status:"unknown"}}return uc(i,n,Date.now())}async function lc(t,e={}){if(!js(t))return {status:"unknown"};let n=e.platform??process.platform,{command:r,args:s}=dc(t,n),o;try{o=await Ni(r,s,e);}catch{return {status:"unknown"}}return uc(o,n,Date.now())}async function Hr(t,e={}){let n=e.platform??process.platform,r=n==="win32"?"taskkill":"process-group",s=g=>({status:"failed",pid:t,method:r,error:g});if(!js(t))return s("Invalid process ID");let o=e.kill??process.kill,i=Yt(t,o);if(i==="not_found")return {status:"not_found",pid:t,method:r};if(i!=="alive")return s("Unable to determine whether the process is alive");if(n==="win32"){let g;try{g=await Ni("taskkill",["/PID",String(t),"/T","/F"],e);}catch(h){g={status:null,stdout:"",stderr:"",error:Oi(h)};}let _=Yt(t,o);return _==="not_found"?g.status===0&&!g.error?{status:"terminated",pid:t,method:r}:{status:"not_found",pid:t,method:r}:s(_==="alive"?"Process is still running after termination attempt":"Unable to verify process termination")}let a,u=e.signal??"SIGKILL";try{o(-t,u);}catch(g){a=g;}if(u==="SIGKILL")return oc(t,o,a,r,e);if(await ic(t,o,e.graceMs??vh,e)==="not_found")return a?{status:"not_found",pid:t,method:r}:{status:"terminated",pid:t,method:r};let p;try{o(-t,"SIGKILL");}catch(g){p=g;}let l=await oc(t,o,p,r,e);return l.status==="terminated"?l:l.status==="not_found"?a?l:{status:"terminated",pid:t,method:r}:s(l.error??"Process termination failed")}var Ai,Mr,vh,Ch,Dh,Ws,$h,Uh,Bh,vi=x(()=>{m();Ai=3e3,Mr="SIGINT",vh=2e3,Ch=25,Dh=100;Ws=3e3,$h=/^(?:(\d+)-)?(?:(\d+):)?(\d{1,2}):(\d{2})$/,Uh=/^\s*(\d+)\s+(\S+)\s+(\S+)\s*$/,Bh=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d{6})([+-]\d{3})$/;});function hc(t,e){let n=e===void 0?"":` at index ${e}`;if(!t||typeof t!="object")throw new f("VALIDATION",`Task log entry${n} must be an object`);if(typeof t.timestamp!="string"||typeof t.level!="string"||typeof t.message!="string")throw new f("VALIDATION",`Task log entry${n} must contain string timestamp, level, and message fields`);return {timestamp:t.timestamp,level:t.level,message:t.message}}function gc(t,e){if(e===null||e.trim()==="")return [];let n;try{n=JSON.parse(e);}catch(r){throw new f("DB_ERROR",`Malformed legacy task logs: ${t}`,r)}if(!Array.isArray(n))throw new f("DB_ERROR",`Malformed legacy task logs: ${t} (expected an array)`);try{return n.map((r,s)=>hc(r,s))}catch(r){throw r instanceof f?new f("DB_ERROR",`Malformed legacy task logs: ${t}`,r):r}}function mc(t){if(t.log_storage!=="blob"&&t.log_storage!=="events")throw new f("DB_ERROR",`Invalid task log storage for task: ${t.id}`);if(!Number.isInteger(t.last_log_seq)||t.last_log_seq<0)throw new f("DB_ERROR",`Invalid task log sequence for task: ${t.id}`);if(!Number.isInteger(t.log_revision)||t.log_revision<0)throw new f("DB_ERROR",`Invalid task log revision for task: ${t.id}`);return t.log_storage}function _c(t){return {taskId:t.id,source:mc(t),revision:t.log_revision,lastSeq:t.last_log_seq}}function Vh(t){if(!Number.isInteger(t)||t<0)throw new f("VALIDATION","Task log tail limit must be a non-negative integer")}var fn,Gs=x(()=>{m();oe();pe();_e();le();he();fn=class extends U{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?Je(this.dbPath):super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let s=dirname(n);existsSync(s)||mkdirSync(s,{recursive:true});}else if(!existsSync(n))throw new f("NOT_FOUND","Database not found");let r=v(n);if(e)try{V(r.db,n);}catch(s){throw r.close(),s}return r}findStateRow(e,n){return e.db.select({id:d.id,log_storage:d.log_storage,last_log_seq:d.last_log_seq,log_revision:d.log_revision,logs:d.logs}).from(d).where(eq(d.id,n)).limit(1).get()}findStateRowInTransaction(e,n){return e.select({id:d.id,log_storage:d.log_storage,last_log_seq:d.last_log_seq,log_revision:d.log_revision,logs:d.logs}).from(d).where(eq(d.id,n)).limit(1).get()}requireStateRowInTransaction(e,n){let r=this.findStateRowInTransaction(e,n);if(!r)throw new f("NOT_FOUND",`Task not found: ${n}`);return r}appendLog(e,n){return this.appendLogs(e,[n])}appendLogs(e,n){let r=n.map((o,i)=>hc(o,i));if(r.length===0){let o=this.getLogState(e);if(!o)throw new f("NOT_FOUND",`Task not found: ${e}`);return o}let s=this.openHandle(true);try{return s.db.transaction(i=>{let a=this.requireStateRowInTransaction(i,e),u=mc(a);if(u==="blob"){let g=gc(e,a.logs);if(i.update(d).set({logs:JSON.stringify([...g,...r]),log_revision:sql`${d.log_revision} + 1`}).where(eq(d.id,e)).run().changes!==1)throw new f("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:u,revision:a.log_revision+1,lastSeq:a.last_log_seq}}let c=a.last_log_seq+1,p=a.last_log_seq+r.length;if(i.insert(vt).values(r.map((g,_)=>({task_id:e,seq:c+_,timestamp:g.timestamp,level:g.level,message:g.message}))).run(),i.update(d).set({last_log_seq:p,log_revision:sql`${d.log_revision} + 1`}).where(eq(d.id,e)).run().changes!==1)throw new f("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:u,revision:a.log_revision+1,lastSeq:p}},{behavior:"immediate"})}catch(o){throw o instanceof f?o:new f("DB_ERROR","Failed to append task log",o)}finally{s.close();}}getLogState(e){if(!this.dbExists())return;let n=this.openHandle(false);try{let r=this.findStateRow(n,e);return r?_c(r):void 0}catch(r){throw r instanceof f?r:new f("DB_ERROR","Failed to read task log state",r)}finally{n.close();}}readLogs(e){return this.readLogsInternal(e)}readLogsTail(e,n){return Vh(n),this.readLogsInternal(e,n)}readTail(e,n){return this.readLogsTail(e,n)}readLogsInternal(e,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.transaction(s=>{let o=this.findStateRowInTransaction(s,e);if(!o)return;let i=_c(o);if(i.source==="blob"){let p=gc(e,o.logs).map((l,g)=>({...l,seq:g+1}));return {...i,entries:n===void 0?p:p.slice(Math.max(0,p.length-n))}}let a=s.select({seq:vt.seq,timestamp:vt.timestamp,level:vt.level,message:vt.message}).from(vt).where(eq(vt.task_id,e)).orderBy(n===void 0?asc(vt.seq):desc(vt.seq)),c=(n===void 0?a.all():a.limit(n).all()).map(({seq:p,timestamp:l,level:g,message:_})=>({seq:p,timestamp:l,level:g,message:_}));return n!==void 0&&c.reverse(),{...i,entries:c}},{behavior:"deferred"})}catch(s){throw s instanceof f?s:new f("DB_ERROR","Failed to read task logs",s)}finally{r.close();}}};});var kc=x(()=>{m();});var ge,gn=x(()=>{m();ge=class extends Error{constructor(n,r,s){super(n);this.providerStr=r;this.name="ProviderError",this.code=s?.code??"UNKNOWN",this.kind=s?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=s?.retryAfterMs;}providerStr;code;kind;retryAfterMs;stdout};});var _n,Ci=x(()=>{m();gn();_n=class extends ge{name="RateLimitError";constructor(e,n="cli/claude"){super(e,n,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function wc(t){if(typeof t!="string")return;let e=t.trim();if(e)return e=e.replace(/^\s*at\s+[^\r\n]+(?:\r?\n|$)/gim,""),e=e.replace(/(^|[\r\n])\s*(?:authorization|proxy-authorization|x-api-key|x-goog-api-key|x-auth-token|cookie|set-cookie)\s*:\s*[^\r\n]*/gim,`$1[HTTP HEADER ${je}]`),e=Xh(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${je}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,je),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,je),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,je),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,je),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,je),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,je),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,je),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,je),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,je),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${je}${r}${je}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${je}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,Tc),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,Tc),e=e.replace(/[\r\n]{3,}/g,`
33
33
 
34
34
  `).trim(),Jh(e,1024)||void 0}function Jh(t,e){let n=new TextEncoder;if(n.encode(t).byteLength<=e)return t;let r="",s=0;for(let o of t){let i=n.encode(o).byteLength;if(s+i>e)break;r+=o,s+=i;}return r}function Xh(t){let e=/\b(?:request|response|http)?\s*body\s*[:=]\s*/gim,n="",r=0,s;for(;(s=e.exec(t))!==null;){if(s.index<r)continue;let o=s.index+s[0].length,i=Yh(t,o),a=i>=0?i:t.indexOf(`
35
35
  `,o)>=0?t.indexOf(`