@mndrk/agx 2.0.39 → 2.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/cloud-runtime/standalone/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/.next/build-manifest.json +2 -2
  3. package/cloud-runtime/standalone/.next/prerender-manifest.json +3 -3
  4. package/cloud-runtime/standalone/.next/server/app/_global-error.html +2 -2
  5. package/cloud-runtime/standalone/.next/server/app/_global-error.rsc +1 -1
  6. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/.next/server/app/_not-found.html +2 -2
  12. package/cloud-runtime/standalone/.next/server/app/_not-found.rsc +1 -1
  13. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/.next/server/app/agents.html +2 -2
  20. package/cloud-runtime/standalone/.next/server/app/agents.rsc +1 -1
  21. package/cloud-runtime/standalone/.next/server/app/agents.segments/_full.segment.rsc +1 -1
  22. package/cloud-runtime/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  23. package/cloud-runtime/standalone/.next/server/app/agents.segments/_index.segment.rsc +1 -1
  24. package/cloud-runtime/standalone/.next/server/app/agents.segments/_tree.segment.rsc +1 -1
  25. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +1 -1
  26. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  27. package/cloud-runtime/standalone/.next/server/app/automations.html +2 -2
  28. package/cloud-runtime/standalone/.next/server/app/automations.rsc +1 -1
  29. package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +1 -1
  30. package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  31. package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +1 -1
  33. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +1 -1
  34. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  35. package/cloud-runtime/standalone/.next/server/app/board.html +2 -2
  36. package/cloud-runtime/standalone/.next/server/app/board.rsc +1 -1
  37. package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +1 -1
  38. package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +1 -1
  39. package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +1 -1
  40. package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +1 -1
  41. package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  42. package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +1 -1
  43. package/cloud-runtime/standalone/.next/server/app/execution-graph.html +2 -2
  44. package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +1 -1
  45. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +1 -1
  46. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  47. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +1 -1
  48. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +1 -1
  49. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +1 -1
  50. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  51. package/cloud-runtime/standalone/.next/server/app/index.html +2 -2
  52. package/cloud-runtime/standalone/.next/server/app/index.rsc +1 -1
  53. package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  54. package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  55. package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  56. package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  57. package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  58. package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +2 -2
  59. package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +1 -1
  60. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +1 -1
  61. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  62. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +1 -1
  63. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +1 -1
  64. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  65. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  66. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  67. package/cloud-runtime/standalone/.next/server/app/projects.html +2 -2
  68. package/cloud-runtime/standalone/.next/server/app/projects.rsc +1 -1
  69. package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +1 -1
  70. package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  71. package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +1 -1
  72. package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
  73. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  74. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  75. package/cloud-runtime/standalone/.next/server/app/settings.html +2 -2
  76. package/cloud-runtime/standalone/.next/server/app/settings.rsc +1 -1
  77. package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  78. package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  79. package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  80. package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  81. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  82. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  83. package/cloud-runtime/standalone/.next/server/app/skills.html +2 -2
  84. package/cloud-runtime/standalone/.next/server/app/skills.rsc +1 -1
  85. package/cloud-runtime/standalone/.next/server/app/skills.segments/_full.segment.rsc +1 -1
  86. package/cloud-runtime/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  87. package/cloud-runtime/standalone/.next/server/app/skills.segments/_index.segment.rsc +1 -1
  88. package/cloud-runtime/standalone/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
  89. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  90. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  91. package/cloud-runtime/standalone/.next/server/app/status.html +2 -2
  92. package/cloud-runtime/standalone/.next/server/app/status.rsc +1 -1
  93. package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +1 -1
  94. package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +1 -1
  95. package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +1 -1
  96. package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +1 -1
  97. package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  98. package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +1 -1
  99. package/cloud-runtime/standalone/.next/server/app/welcome.html +2 -2
  100. package/cloud-runtime/standalone/.next/server/app/welcome.rsc +1 -1
  101. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +1 -1
  102. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
  103. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +1 -1
  104. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +1 -1
  105. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +1 -1
  106. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
  107. package/cloud-runtime/standalone/.next/server/chunks/{[externals]__986fcdb7._.js → [externals]__bc6c7111._.js} +1 -1
  108. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__4bce7db7._.js → [root-of-the-server]__09ca81e1._.js} +24 -24
  109. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__f9cff4b0._.js → [root-of-the-server]__1017e012._.js} +2 -2
  110. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__1ac3236d._.js +25 -0
  111. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__762ab29c._.js → [root-of-the-server]__236c35bb._.js} +2 -2
  112. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ab7343c8._.js → [root-of-the-server]__a1e62918._.js} +1 -1
  113. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__da3a1ce7._.js → [root-of-the-server]__dc542063._.js} +2 -2
  114. package/cloud-runtime/standalone/.next/server/chunks/_22fe5fd2._.js +3 -0
  115. package/cloud-runtime/standalone/.next/server/chunks/lib_2492d514._.js +81 -0
  116. package/cloud-runtime/standalone/.next/server/chunks/lib_281e5787._.js +16 -0
  117. package/cloud-runtime/standalone/.next/server/chunks/lib_63067e21._.js +16 -0
  118. package/cloud-runtime/standalone/.next/server/chunks/lib_orchestrator_chat-processor_ts_4c335719._.js +134 -0
  119. package/cloud-runtime/standalone/.next/server/chunks/lib_sqlite-query-adapter_ts_3ea4d849._.js +82 -21
  120. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_next_dist_61a87db9._.js +1 -1
  121. package/cloud-runtime/standalone/.next/server/instrumentation.js +1 -1
  122. package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
  123. package/cloud-runtime/standalone/.next/server/pages/404.html +2 -2
  124. package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
  125. package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
  126. package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
  127. package/cloud-runtime/standalone/instrumentation.ts +2 -0
  128. package/package.json +1 -1
  129. package/cloud-runtime/standalone/.next/server/chunks/_17e53c87._.js +0 -3
  130. package/cloud-runtime/standalone/.next/server/chunks/lib_ea45fe73._.js +0 -94
  131. /package/cloud-runtime/standalone/.next/static/{9PXl40CrFxI8nirdJ1A-T → tIFXRWCxPD896ykJ6O--N}/_buildManifest.js +0 -0
  132. /package/cloud-runtime/standalone/.next/static/{9PXl40CrFxI8nirdJ1A-T → tIFXRWCxPD896ykJ6O--N}/_clientMiddlewareManifest.json +0 -0
  133. /package/cloud-runtime/standalone/.next/static/{9PXl40CrFxI8nirdJ1A-T → tIFXRWCxPD896ykJ6O--N}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[69449,e=>{"use strict";async function s(){{await e.A(77510);let{getQueue:s,QUEUE_NAMES:r}=await e.A(80001),{taskProcessor:t}=await e.A(32984),{chatProcessor:o}=await e.A(58052),a=await s();await a.work(r.TASK_PROCESS,t,{batchSize:5}),await a.work(r.CHAT_RUN_PROCESS,o,{batchSize:2}),console.log("[worker] queue worker started (embedded)");let{pollSchedules:l}=await e.A(57063),{createDispatchFunction:c}=await e.A(73171),{createDispatchWork:h}=await e.A(73045),{executeNode:n}=await e.A(9072),{completeScheduleTick:_,isScheduleTickComplete:i}=await e.A(24865),{GraphStore:d}=await e.A(2224),p=process.env.PORT||"3000",u=`http://localhost:${p}`,v=!1;setTimeout(()=>{v=!0},5e3),setInterval(async()=>{if(v)try{let e=await fetch(`${u}/api/prompt-jobs/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"});if(e.ok){let s=await e.json();s.queued?.length>0&&console.log(`[prompt-jobs] dispatched ${s.queued.length} run(s)`),s.skipped?.length>0&&console.log(`[prompt-jobs] skipped ${s.skipped.length} job(s):`,s.skipped.map(e=>e.reason))}}catch{}},15e3),console.log("[prompt-jobs] poller started (every 15s)"),setInterval(async()=>{try{let e=c(),s=h(),r=await l({dispatchFunction:e,dispatchWork:s});if(r.tickedGraphIds.length>0&&console.log(`[schedules] ticked ${r.tickedGraphIds.length} graph(s)`),r.errors.length>0&&console.error(`[schedules] ${r.errors.length} error(s):`,r.errors.map(e=>e.error.message)),r.pendingWork.length>0){let t=new d;for(let o of r.pendingWork){let r=o.graph;for(let t of o.nodeIds)try{r=(await n(r,t,{dispatchFunction:e,dispatchWork:s})).graph,console.log(`[schedules] dispatched work node "${t}" for graph ${o.taskId}`)}catch(e){console.error(`[schedules] work dispatch failed for node "${t}":`,e)}if(t.updateGraphStructure(r.id,{nodes:r.nodes}),i(r)){let e=_(r);t.updateGraphStructure(e.id,{schedule:e.schedule}),console.log(`[schedules] tick complete for graph ${o.taskId}`)}}}}catch(e){console.error("[schedules] poll failed:",e)}},15e3),console.log("[schedules] poller started (every 15s)")}}e.s(["register",()=>s])},77510,e=>{e.v(s=>Promise.all(["server/chunks/lib_check-node-version_ts_ef89bf83._.js"].map(s=>e.l(s))).then(()=>s(4799)))},80001,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__529a6e1c._.js"].map(s=>e.l(s))).then(()=>s(40793)))},32984,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__09ca81e1._.js","server/chunks/lib_2492d514._.js","server/chunks/lib_sqlite-query-adapter_ts_3ea4d849._.js","server/chunks/lib_63067e21._.js"].map(s=>e.l(s))).then(()=>s(69324)))},58052,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__1ac3236d._.js","server/chunks/lib_history-store_ts_74d1c060._.js","server/chunks/lib_281e5787._.js","server/chunks/lib_sqlite-query-adapter_ts_3ea4d849._.js","server/chunks/lib_orchestrator_chat-processor_ts_4c335719._.js"].map(s=>e.l(s))).then(()=>s(26607)))},57063,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__236c35bb._.js","server/chunks/lib_sqlite-query-adapter_ts_3ea4d849._.js","server/chunks/_6519418b._.js","server/chunks/src_graph_executor_ts_a8bc8d58._.js"].map(s=>e.l(s))).then(()=>s(76109)))},73171,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__1017e012._.js"].map(s=>e.l(s))).then(()=>s(58898)))},73045,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__dc542063._.js"].map(s=>e.l(s))).then(()=>s(80469)))},9072,e=>{e.v(s=>Promise.all(["server/chunks/[externals]__bc6c7111._.js","server/chunks/_6bc1b3e1._.js","server/chunks/src_graph_executor_ts_a8bc8d58._.js"].map(s=>e.l(s))).then(()=>s(88840)))},24865,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__6db132e9._.js","server/chunks/_6519418b._.js"].map(s=>e.l(s))).then(()=>s(9662)))},2224,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__8f5cac13._.js","server/chunks/lib_sqlite-query-adapter_ts_3ea4d849._.js"].map(s=>e.l(s))).then(()=>s(91329)))}];
2
+
3
+ //# sourceMappingURL=_22fe5fd2._.js.map
@@ -0,0 +1,81 @@
1
+ module.exports=[87575,e=>{"use strict";var t=e.i(99904),r=e.i(65196);class n extends Error{constraint;detail;constructor(e,t){super(e),this.name="ConflictError",this.constraint=t?.constraint,this.detail=t?.detail}}class a extends Error{code;constructor(e,t){super(e),this.name="RetryableError",this.code=t}}class o extends Error{expectedVersion;actualVersion;entityId;entityType;constructor(e,t,r,n){super(void 0!==n?`Concurrent modification on ${e} ${t}: expected version ${r}, found ${n}`:`Concurrent modification on ${e} ${t}: expected version ${r}, row not updated`),this.name="ConcurrentModificationError",this.entityType=e,this.entityId=t,this.expectedVersion=r,this.actualVersion=n}}function s(e){if(!(e instanceof Error))throw e;let t=e.code??"",r=e.message??"";if("SQLITE_CONSTRAINT_UNIQUE"===t||"SQLITE_CONSTRAINT_PRIMARYKEY"===t||"SQLITE_CONSTRAINT"===t&&(r.includes("UNIQUE")||r.includes("PRIMARY KEY"))||r.includes("UNIQUE constraint failed")||r.includes("PRIMARY KEY constraint failed")){let e=r.match(/(?:UNIQUE|PRIMARY KEY) constraint failed: (.+)/);throw new n(r,{constraint:e?.[1],detail:r})}if("SQLITE_BUSY"===t||"SQLITE_LOCKED"===t||r.includes("database is locked"))throw new a(r,t||"SQLITE_BUSY");throw e}async function i(e){try{return await e()}catch(e){if(e instanceof n||e instanceof a||e instanceof o)throw e;s(e)}}class d{async transaction(e){let t=(0,r.getSQLiteDb)();t.exec("BEGIN IMMEDIATE");try{let r=await e(t);return t.exec("COMMIT"),r}catch(e){try{t.exec("ROLLBACK")}catch{}if(e instanceof n||e instanceof a||e instanceof o)throw e;s(e)}}getTasks(e,r){return t.getTasks(e,r)}getTask(e,r){return t.getTask(e,r)}getTaskBySlug(e,r){return t.getTaskBySlug(e,r)}createTask(e,r,n){return i(()=>t.createTask(e,r,n))}async updateTask(e,n,a,s){let d=s?.expectedVersion;if(void 0!==d){let l=(0,r.getSQLiteDb)();if(0===l.prepare("UPDATE tasks SET version = version + 1 WHERE id = ? AND version = ?").run(e,d).changes){let t=l.prepare("SELECT version FROM tasks WHERE id = ?").get(e);throw new o("task",e,d,t?.version)}let{expectedVersion:c,...u}=s??{};return i(()=>t.updateTask(e,n,a,u))}return(0,r.getSQLiteDb)().prepare("UPDATE tasks SET version = version + 1 WHERE id = ?").run(e),i(()=>t.updateTask(e,n,a,s))}appendRunToIndex(e,r,n){return t.appendRunToIndex(e,r,n)}deleteTask(e,r){return i(()=>t.deleteTask(e,r))}getNextQueuedTask(e){return t.getNextQueuedTask(e)}ensureNoCircularDependency(e,r,n){return t.ensureNoCircularDependency(e,r,n)}getProjects(e){return t.getProjects(e)}getProjectBySlug(e,r){return t.getProjectBySlug(e,r)}getProjectRepos(e){return t.getProjectRepos(e)}getProjectWithRepos(e,r){return t.getProjectWithRepos(e,r)}createProject(e,r,n){return i(()=>t.createProject(e,r,n))}updateProject(e,r,n,a){return t.updateProject(e,r,n,a)}deleteProject(e,r,n){return i(()=>t.deleteProject(e,r,n))}assignOrphanTasksToProject(e,r,n){return t.assignOrphanTasksToProject(e,r,n)}getWorkflows(e){return t.getWorkflows(e)}getWorkflow(e,r){return t.getWorkflow(e,r)}updateWorkflow(e,r,n){return t.updateWorkflow(e,r,n)}getWorkflowNodes(e){return t.getWorkflowNodes(e)}updateWorkflowNodes(e,r,n){return t.updateWorkflowNodes(e,r,n)}getWorkflowNodeByName(e,r){return t.getWorkflowNodeByName(e,r)}getWorkflowTransitions(e){return t.getWorkflowTransitions(e)}getWorkflowTransitionsFromNode(e,r){return t.getWorkflowTransitionsFromNode(e,r)}getWorkflowWithGraph(e,r){return t.getWorkflowWithGraph(e,r)}getTaskLogs(e,r){return t.getTaskLogs(e,r)}addTaskLog(e,r,n,a){return i(()=>t.addTaskLog(e,r,n,a))}addTaskCostEntry(e){return i(()=>t.addTaskCostEntry(e))}getTaskCostEntries(e){return t.getTaskCostEntries(e)}getTaskCostSummary(e){return t.getTaskCostSummary(e)}getTaskComments(e){return t.getTaskComments(e)}addTaskComment(e,r,n,a){return i(()=>t.addTaskComment(e,r,n,a))}deleteTaskComment(e,r){return i(()=>t.deleteTaskComment(e,r))}getLearnings(e,r,n){return t.getLearnings(e,r,n)}addLearning(e,r,n,a){return i(()=>t.addLearning(e,r,n,a))}deleteLearning(e,r){return i(()=>t.deleteLearning(e,r))}getStagePrompts(e,r){return t.getStagePrompts(e,r)}getStagePrompt(e,r,n){return t.getStagePrompt(e,r,n)}upsertStagePrompt(e,r,n,a,o,s){return i(()=>t.upsertStagePrompt(e,r,n,a,o,s))}deleteStagePrompt(e,r){return t.deleteStagePrompt(e,r)}getAgents(e){return t.getAgents(e)}getAgent(e,r){return t.getAgent(e,r)}createAgent(e,r){return i(()=>t.createAgent(e,r))}updateAgent(e,r,n){return t.updateAgent(e,r,n)}deleteAgent(e,r){return t.deleteAgent(e,r)}getProjectAgents(e){return t.getProjectAgents(e)}addProjectAgent(e,r,n){return i(()=>t.addProjectAgent(e,r,n))}removeProjectAgent(e,r){return t.removeProjectAgent(e,r)}reorderProjectAgents(e,r){return t.reorderProjectAgents(e,r)}getProjectSkills(e){return t.getProjectSkills(e)}addProjectSkill(e,r,n){return i(()=>t.addProjectSkill(e,r,n))}removeProjectSkill(e){return t.removeProjectSkill(e)}getProjectVariables(e){return t.getProjectVariables(e)}setProjectVariable(e,r,n){return i(()=>t.setProjectVariable(e,r,n))}deleteProjectVariable(e,r){return t.deleteProjectVariable(e,r)}getProjectMemory(e,r){return t.getProjectMemory(e,r)}addProjectMemory(e,r,n,a){return i(()=>t.addProjectMemory(e,r,n,a))}deleteProjectMemory(e){return t.deleteProjectMemory(e)}getProjectThreads(e){return t.getProjectThreads(e)}addProjectThread(e,r){return i(()=>t.addProjectThread(e,r))}removeProjectThread(e,r){return t.removeProjectThread(e,r)}getProjectForThread(e){return t.getProjectForThread(e)}getUserSettings(e){return t.getUserSettings(e)}upsertUserSettings(e,r,n){return i(()=>t.upsertUserSettings(e,r,n))}async healthCheck(){let e=performance.now();try{return(0,r.getSQLiteDb)().prepare("SELECT 1").get(),{adapter:"sqlite",connected:!0,latencyMs:Math.round(performance.now()-e)}}catch{return{adapter:"sqlite",connected:!1,latencyMs:Math.round(performance.now()-e)}}}}e.s(["SQLiteAdapter",()=>d],87575)},69324,e=>{"use strict";let t=function(){let{SQLiteAdapter:t}=e.r(87575);return new t}();var r=e.i(99904);let n=[["INTAKE","PROGRESS","DONE"]];async function a({workflowId:e,currentNodeName:t,decision:n,retryCount:a,maxRetries:o=3}){if("done"===String(t).trim().toLowerCase())return{nextNodeName:"done",nextStatus:"completed",retryCount:0,error:null,appendLog:{content:"Task completed at done",logType:"checkpoint"},nodeConfig:null};let s=await (0,r.getWorkflowNodeByName)(e,t);if(!s)return{nextNodeName:t,nextStatus:"blocked",retryCount:a,error:`Node '${t}' not found in workflow`,appendLog:{content:`Workflow error: node '${t}' not found`,logType:"error"},nodeConfig:null};if("terminal"===s.node_type)return{nextNodeName:t,nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at ${s.label||t}`,logType:"checkpoint"},nodeConfig:s};if("blocked"===n)return{nextNodeName:t,nextStatus:"blocked",retryCount:a,error:null,appendLog:{content:"Blocked: additional input required.",logType:"system"},nodeConfig:s};let i=await (0,r.getWorkflowTransitionsFromNode)(e,s.id),d=function(e){switch(e){case"done":default:return"done";case"blocked":return"blocked";case"failed":case"not_done":return"failed"}}(n),l=i.find(e=>e.condition===d);if(l){let a=(await (0,r.getWorkflowNodes)(e)).find(e=>e.id===l.to_node_id);if(a){let e="terminal"===a.node_type;return{nextNodeName:a.name,nextStatus:e?"completed":"queued",retryCount:0,error:null,appendLog:{content:"done"===n?`Stage completed: ${s.label||t}`:`Transition to ${a.label||a.name}`,logType:"done"===n?"checkpoint":"system"},nodeConfig:a}}}if("done"===n)return{nextNodeName:t,nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at ${s.label||t}`,logType:"checkpoint"},nodeConfig:s};let c=a+1;return c<=o?{nextNodeName:t,nextStatus:"queued",retryCount:c,error:null,appendLog:{content:`Retrying (${c}/${o}) for ${s.label||t}`,logType:"system"},nodeConfig:s}:{nextNodeName:t,nextStatus:"failed",retryCount:c,error:"Task failed after max retries.",appendLog:{content:"Task failed after max retries.",logType:"error"},nodeConfig:s}}var o=e.i(54799),s=e.i(90107),i=e.i(65196),d=e.i(48392);function l(e){return e.replace(/\r\n/g,"\n").split("\n").map(e=>e.replace(/\s+$/g,"")).join("\n").trim()}function c(e){return{id:e.id,scope:e.scope,subjectId:e.subject_id,content:e.content,changeSummary:e.change_summary??null,sourceType:e.source_type,sourceId:e.source_id,metadata:function(e){if(!e)return{};try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}catch{return{}}}(e.metadata),version:Number(e.version??1),createdAt:e.created_at,updatedAt:e.updated_at}}function u(e,t){return(0,i.getSQLiteDb)().prepare(`SELECT id, scope, subject_id, content, change_summary, source_type, source_id,
2
+ metadata, version, created_at, updated_at
3
+ FROM knowledge_notes
4
+ WHERE scope = ? AND subject_id = ?
5
+ LIMIT 1`).get(e,t)}function g(e,t){let r,n=u(e,t);if(n)return c(n);let a=0===(r=Array.from(new Set(function(e,t){let r=(0,i.getSQLiteDb)();if("repo"===e){let e=r.prepare(`SELECT content
6
+ FROM repo_knowledge
7
+ WHERE repo_id = ? AND producer = 'system'
8
+ ORDER BY created_at ASC`).all(t),n=(0,d.listKnowledgeEntries)({scope:"repo",subjectId:t,limit:100}).map(e=>e.body.trim());return[...e.map(e=>e.content.trim()),...n].filter(Boolean)}if("project"===e){let e=r.prepare(`SELECT content
9
+ FROM project_memory
10
+ WHERE project_id = ? AND producer = 'system'
11
+ ORDER BY created_at ASC`).all(t),n=(0,d.listKnowledgeEntries)({scope:"project",subjectId:t,limit:100}).map(e=>e.body.trim());return[...e.map(e=>e.content.trim()),...n].filter(Boolean)}let n=r.prepare(`SELECT content
12
+ FROM agent_memory
13
+ WHERE agent_id = ?
14
+ ORDER BY created_at ASC
15
+ LIMIT 100`).all(t),a=(0,d.listKnowledgeEntries)({scope:"agent",subjectId:t,limit:100}).map(e=>e.body.trim());return[...n.map(e=>e.content.trim()),...a].filter(Boolean)}(e,t)))).length?"":r.map(e=>`- ${e.replace(/^\-\s*/,"")}`).join("\n");if(!a)return null;let s=(0,i.getSQLiteDb)(),l=new Date().toISOString(),g=(0,o.randomUUID)();s.prepare(`INSERT INTO knowledge_notes (
16
+ id, scope, subject_id, content, change_summary, source_type, source_id, metadata, version, created_at, updated_at
17
+ ) VALUES (?, ?, ?, ?, ?, 'task_completion', 'legacy-synthesis', ?, 1, ?, ?)`).run(g,e,t,a,"Initial note synthesized from existing system knowledge",JSON.stringify({synthesized_from_legacy:!0}),l,l),s.prepare(`INSERT INTO knowledge_note_versions (
18
+ id, note_id, version, content, change_summary, source_type, source_id, metadata, created_at
19
+ ) VALUES (?, ?, 1, ?, ?, 'task_completion', 'legacy-synthesis', ?, ?)`).run((0,o.randomUUID)(),g,a,"Initial note synthesized from existing system knowledge",JSON.stringify({synthesized_from_legacy:!0}),l);let p=u(e,t);return p?c(p):null}function p(e,t){let r=t.trim();return r?g(e,r):null}let m=new Set(["outcome","decision","pattern","gotcha"]),f=`You are a memory extractor for a task execution system.
20
+ Given a completed task, extract 0-3 memories worth remembering for future tasks.
21
+
22
+ Each memory must be:
23
+ { "memory_type": "outcome" | "decision" | "pattern" | "gotcha", "content": "one concise sentence" }
24
+
25
+ - outcome: what happened (success/failure result)
26
+ - decision: a choice that was made and why
27
+ - pattern: a reusable approach or technique discovered
28
+ - gotcha: a surprising pitfall or edge case encountered
29
+
30
+ Return ONLY a JSON array. Return [] if nothing worth remembering.
31
+ Do not wrap in markdown code blocks. Just raw JSON.`,y=`You are maintaining a living project knowledge note for a task execution system.
32
+ Given the current project note and a completed or failed task, decide whether the note should change.
33
+
34
+ Return ONLY a JSON object:
35
+ {
36
+ "updated_note": "full revised note in concise markdown",
37
+ "change_summary": "short summary of what changed",
38
+ "no_change": false
39
+ }
40
+
41
+ Rules:
42
+ - Revise the current note instead of appending isolated bullets.
43
+ - Write like a person's living project notes, not an extracted fact list.
44
+ - The note should help someone understand what the project is, what it does, what has been decided, and what lessons now shape future work.
45
+ - Prefer short sections and narrative paragraphs in markdown. Bullets are fine only when they genuinely improve clarity.
46
+ - Preserve strong existing content when still valid.
47
+ - Merge duplicate ideas, sharpen wording, and remove stale or unsupported claims.
48
+ - Only include project-scoped knowledge likely useful across future work in the same project.
49
+ - Do not include repo-specific durable truths that belong in repo knowledge.
50
+ - Avoid generic filler and avoid sounding like an audit log.
51
+ - If nothing project-scoped changed, return {"no_change": true}.
52
+ - Do not wrap in markdown code blocks. Just raw JSON.`;async function k(e){let t=[`Goal: ${e.goal}`,`Status: ${e.status}`,e.nodeOutputs?`Node outputs: ${JSON.stringify(e.nodeOutputs).slice(0,2e3)}`:null].filter(Boolean).join("\n"),r=`${f}
53
+
54
+ Task:
55
+ ${t}`,n="";try{await (0,s.runCliResponse)({provider:"claude",model:"claude-haiku-4-5-20251001",prompt:r,onDelta:e=>{n+=e}})}catch(e){return console.warn("[memory-extractor] LLM call failed:",e),[]}var a=n;let o=a.trim().replace(/^```(?:json)?\s*/i,"").replace(/\s*```\s*$/,"").trim();try{let e=JSON.parse(o);if(!Array.isArray(e))return[];return e.filter(e=>"object"==typeof e&&null!==e&&m.has(e.memory_type)&&"string"==typeof e.content&&e.content.trim().length>0).slice(0,3)}catch{return console.warn("[memory-extractor] Failed to parse LLM response:",o.slice(0,200)),[]}}let S=new Set(["outcome","decision","pattern","gotcha"]),w=["agent_id","agentId","agent","participant_id","participantId","assigned_agent","assignedAgent"];function h(e){return"string"!=typeof e?null:e.trim()||null}function T(e){let t=h(e.explicitAgentId);if(t)return t;let r=e.frontmatter||{};for(let e of w){let t=h(r[e]);if(t)return t}return h(e.defaultUserId)||"system"}async function _(e,t,r){let n=(0,i.getSQLiteDb)().prepare(`INSERT OR IGNORE INTO agent_memory (id, agent_id, task_id, memory_type, content, content_hash, created_at)
56
+ VALUES (?, ?, ?, ?, ?, ?, ?)`),a=0,s=Date.now();for(let i of r){if(!S.has(i.memory_type)||!i.content?.trim())continue;let r=(0,o.createHash)("sha256").update(i.content.trim()).digest("hex");n.run((0,o.randomUUID)(),t,e,i.memory_type,i.content.trim(),r,s).changes>0&&a++}return a>0&&(0,d.storeKnowledgeEntries)(r.map(r=>({scope:"agent",subjectId:t,sourceType:"task_completion",sourceId:e,kind:r.memory_type,title:r.content.trim().slice(0,80),body:r.content.trim(),confidence:.7,durability:.6,metadata:{task_id:e}}))),a}async function I(e,t,r){let n=await k(r);if(0===n.length)return;let a=await _(e,t,n);a>0&&console.log(`[memory-extractor] Stored ${a} memories for task ${e}`)}async function E(e){let t=h(e);if(!t)return null;if(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t))return t;let r=(0,i.getSQLiteDb)().prepare("SELECT id FROM projects WHERE slug = ? LIMIT 1").get(t);return r?.id??null}async function x(e,t){let r=[`Goal: ${e.goal}`,`Status: ${e.status}`,e.nodeOutputs?`Node outputs: ${JSON.stringify(e.nodeOutputs).slice(0,2e3)}`:null].filter(Boolean).join("\n"),n=`${y}
57
+
58
+ Current note:
59
+ ${t||"(empty)"}
60
+
61
+ Task:
62
+ ${r}`,a="";try{await (0,s.runCliResponse)({provider:"claude",model:"claude-haiku-4-5-20251001",prompt:n,onDelta:e=>{a+=e}})}catch(e){return console.warn("[project-knowledge] LLM call failed:",e),[]}let o=a.trim().replace(/^```(?:json)?\s*/i,"").replace(/\s*```\s*$/,"").trim();try{let e=JSON.parse(o);if(!e||"object"!=typeof e||Array.isArray(e))return[];let t="string"==typeof e.updated_note?e.updated_note.trim():"";if(e.no_change||!t)return[];return[{updated_note:t,change_summary:"string"==typeof e.change_summary?e.change_summary.trim():void 0,no_change:!1}]}catch{return console.warn("[project-knowledge] Failed to parse LLM response:",o.slice(0,200)),[]}}async function j(e,t,r){if(0===r.length)return 0;let n=r[0];return n&&n.updated_note?.trim()?+!!function(e){let t=(0,i.getSQLiteDb)(),r=e.subjectId.trim(),n=e.sourceId.trim(),a=l(e.content),s=e.changeSummary?.trim()||null;if(!r||!n)throw Error("subjectId and sourceId are required");let d=g(e.scope,r);if(d&&l(d.content)===a)return{note:d,changed:!1};let c=new Date().toISOString(),u=JSON.stringify(e.metadata??{});if(!d){let i=(0,o.randomUUID)();t.prepare(`INSERT INTO knowledge_notes (
63
+ id, scope, subject_id, content, change_summary, source_type, source_id, metadata, version, created_at, updated_at
64
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?)`).run(i,e.scope,r,a,s,e.sourceType,n,u,c,c),t.prepare(`INSERT INTO knowledge_note_versions (
65
+ id, note_id, version, content, change_summary, source_type, source_id, metadata, created_at
66
+ ) VALUES (?, ?, 1, ?, ?, ?, ?, ?, ?)`).run((0,o.randomUUID)(),i,a,s,e.sourceType,n,u,c);let d=p(e.scope,r);if(!d)throw Error("Failed to read created knowledge note");return{note:d,changed:!0}}let m=d.version+1;t.prepare(`UPDATE knowledge_notes
67
+ SET content = ?, change_summary = ?, source_type = ?, source_id = ?, metadata = ?, version = ?, updated_at = ?
68
+ WHERE id = ?`).run(a,s,e.sourceType,n,u,m,c,d.id),t.prepare(`INSERT INTO knowledge_note_versions (
69
+ id, note_id, version, content, change_summary, source_type, source_id, metadata, created_at
70
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run((0,o.randomUUID)(),d.id,m,a,s,e.sourceType,n,u,c);let f=p(e.scope,r);if(!f)throw Error("Failed to read updated knowledge note");return{note:f,changed:!0}}({scope:"project",subjectId:e,content:n.updated_note.trim(),changeSummary:n.change_summary,sourceType:"task_completion",sourceId:t,metadata:{task_id:t}}).changed:0}async function $(e,t,r){let n=await E(t);if(!n)return;let a=await x(r,p("project",n)?.content??"");if(0===a.length)return;let o=await j(n,e,a);o>0&&console.log(`[project-knowledge] Stored ${o} project knowledge entries for task ${e}`)}var N=e.i(45491);function A(e,t){return`---
71
+ ${Object.entries(e).map(([e,t])=>`${e}: ${null==t?"":String(t)}`).join("\n")}
72
+ ---
73
+ ${t}`}var b=e.i(40793),C=e.i(86213);function L(e){if(!e)return[];if(Array.isArray(e))return Array.from(new Set(e.map(e=>String(e||"").trim()).filter(Boolean)));if("string"==typeof e){let t=e.trim();if(!t)return[];try{let e=JSON.parse(t);if(Array.isArray(e))return Array.from(new Set(e.map(e=>String(e||"").trim()).filter(Boolean)))}catch{}return Array.from(new Set(t.split(",").map(e=>e.trim()).filter(Boolean)))}return[]}function P(e){if(!e)return[];let t=L(e.depends_on);if(t.length)return t;if("string"==typeof e.content){let{frontmatter:t}=(0,r.parseFrontmatter)(e.content||"");return L(t.depends_on)}return[]}async function R(e,t){if(!e.length)return[];let r=(0,N.createAdminDbClient)().from("tasks").select("id, title, slug, status, stage").in("id",e);t&&(r=r.eq("user_id",t));let{data:n}=await r,a=new Map;if(Array.isArray(n))for(let e of n){var o;e&&e.id&&a.set(e.id,(o=e.id,e?{id:e.id||o||"",title:e.title||void 0,slug:e.slug||void 0,status:e.status,stage:e.stage}:{id:o||""}))}return e.map(e=>a.get(e)).filter(e=>!!e)}async function v(e,t){let r=P(e);return r.length?(await R(r,t)).filter(e=>"completed"!==(e.status||"")):[]}async function O(e,n,a){let o=n||C.LOCAL_USER.id,s=await t.getTask(e,o);if(!s)throw Error(`Task not found: ${e}`);let i=await v(s,o);if(i.length){let t=function(e){if(!e.length)return"";let t=e.slice(0,3).map(e=>{let t=e.title||e.slug||e.id||"(unknown)",r="INTAKE"===e.stage?"awaiting approval":e.status||"",n=r?` (${r})`:"";return`${t}${n}`}),r=`Waiting on dependencies: ${t.join(", ")}`;return e.length>3&&(r+=` +${e.length-3} more`),r}(i),r=(0,N.createAdminDbClient)(),{error:n}=await r.from("tasks").update({status:"blocked",blocked_reason:t,updated_at:new Date().toISOString()}).eq("id",e);if(n&&"42703"!==n.code)throw n;return{started:!1,missingDependencies:i,blockedReason:t}}if(!a?.force&&"queued"===s.status&&!s.blocked_reason)return{started:!1,missingDependencies:[],alreadyQueued:!0};let{frontmatter:d,body:l}=(0,r.parseFrontmatter)(s.content||""),c=a?.ticketType??function(e,t){for(let t of["ticket_type","type","issue_type","kind"])if("spike"===function(e){if("string"!=typeof e)return"task";let t=e.trim().toLowerCase();return"spike"===t||"spikes"===t?"spike":"task"}(e[t]))return"spike";let r=t.match(/^#\s+(.+)$/m),n=r?.[1]?.trim().toLowerCase()||"";return n.startsWith("spike:")||n.startsWith("[spike]")?"spike":"task"}(d,l),u=await (0,b.getQueue)(),g=await u.send(b.QUEUE_NAMES.TASK_PROCESS,{taskId:e,userId:o,signal:"start",ticketType:c}),p=(0,N.createAdminDbClient)(),{error:m}=await p.from("tasks").update({status:"queued",blocked_reason:null,updated_at:new Date().toISOString()}).eq("id",e);if(m&&"42703"!==m.code)throw m;return{started:!!g,jobId:g,missingDependencies:[],ticketType:c}}async function D(e,t){let r=t||C.LOCAL_USER.id,n=(0,N.createAdminDbClient)(),a=n.from("tasks").select("id").contains("depends_on",[e]);t&&(a=a.eq("user_id",t));let{data:o,error:s}=await a,i=Array.isArray(o)?o.map(e=>e?.id).filter(Boolean):[];if(s&&"42703"===s.code){let r=n.from("tasks").select("id, content");t&&(r=r.eq("user_id",t));let{data:a}=await r;i=(Array.isArray(a)?a:[]).filter(t=>P(t).includes(e)).map(e=>e?.id).filter(Boolean)}i.length&&await Promise.all(i.map(e=>O(e,r)))}var U=e.i(29264);async function W(e){let t=(0,N.createAdminDbClient)();await t.from("tasks").update({stage:e.stage,status:"queued",updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId)}async function M(e){let t=(0,N.createAdminDbClient)(),{data:r}=await t.from("tasks").select("stage_decisions").eq("id",e.taskId).eq("user_id",e.userId).maybeSingle(),n={...r?.stage_decisions&&"object"==typeof r.stage_decisions?r.stage_decisions:{},[e.stage]:{decision:e.decision.decision,rationale:e.decision.explanation,final_result:e.decision.final_result,decided_at:new Date().toISOString()}},{error:a}=await t.from("tasks").update({stage_decisions:n,updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId);if(a&&!function(e){if(!e||"object"!=typeof e)return!1;let t="code"in e?String(e.code):"",r="message"in e?String(e.message).toLowerCase():"";return("PGRST204"===t||"42703"===t)&&r.includes("stage_decisions")}(a))throw a}async function q(e){let n=await t.getTask(e.taskId,e.userId);if(!n)throw Error(`Task ${e.taskId} not found`);let a=n.stage||null,o=new Date().toISOString(),s={taskId:e.taskId,userId:e.userId,title:n.title||null,slug:n.slug||null,timestamp:o},{frontmatter:i,body:d}=(0,r.parseFrontmatter)(n.content),l=T({defaultUserId:e.userId,frontmatter:i});i.stage=e.nextStage,i.status=e.nextStatus,e.error?i.error=e.error:"error"in i&&delete i.error;let c=A(i,d);await t.updateTask(e.taskId,c,e.userId);let u=(0,N.createAdminDbClient)(),{error:g}=await u.from("tasks").update({stage:e.nextStage,status:e.nextStatus,retry_count:e.retryCount,error:e.error,updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId);g?console.error(`[applyStageTransition] direct update failed for ${e.taskId}:`,g):console.log(`[applyStageTransition] set ${e.taskId} to status=${e.nextStatus}, stage=${e.nextStage}`),"completed"===e.nextStatus&&(await u.from("tasks").update({completed_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId),await D(e.taskId,e.userId)),("completed"===e.nextStatus||"failed"===e.nextStatus)&&(I(e.taskId,l,{goal:String(n.content||n.title||""),status:String(e.nextStatus)}).catch(e=>console.warn("[applyStageTransition] Memory extraction failed:",e)),$(e.taskId,n.project_id||n.project,{goal:String(n.content||n.title||""),status:String(e.nextStatus)}).catch(e=>console.warn("[applyStageTransition] Project knowledge extraction failed:",e))),"blocked"!==e.nextStatus&&"failed"!==e.nextStatus&&(0,U.notifyTaskEvent)({...s,eventType:"task.stage_complete",stage:a,previousStage:a,nextStage:e.nextStage,status:e.nextStatus,details:{nextStatus:e.nextStatus}}),"completed"===e.nextStatus&&(0,U.notifyTaskEvent)({...s,eventType:"task.completed",stage:e.nextStage,status:e.nextStatus,details:{previousStage:a,nextStage:e.nextStage}}),"failed"===e.nextStatus&&(0,U.notifyTaskEvent)({...s,eventType:"task.failed",stage:e.nextStage,status:e.nextStatus,error:e.error,details:{previousStage:a}})}async function B(e){await t.addTaskLog(e.taskId,e.content,e.logType)}async function Q(e){await t.addTaskComment(e.taskId,e.content,e.authorType||"agent")}async function F(e){let n=await t.getTask(e.taskId,e.userId);if(!n)return;let{frontmatter:a,body:o}=(0,r.parseFrontmatter)(n.content),s=T({defaultUserId:e.userId,frontmatter:a});a.status="failed",a.error=e.reason||"Cancelled";let i=A(a,o);await t.updateTask(e.taskId,i,e.userId),await t.addTaskLog(e.taskId,e.reason||"Task cancelled","error"),I(e.taskId,s,{goal:String(n.content||n.title||""),status:"failed"}).catch(e=>console.warn("[markCancelled] Memory extraction failed:",e)),$(e.taskId,n.project_id||n.project,{goal:String(n.content||n.title||""),status:"failed"}).catch(e=>console.warn("[markCancelled] Project knowledge extraction failed:",e));let d=(0,N.createAdminDbClient)();await d.from("tasks").update({status:"failed",error:e.reason||"Cancelled",updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId),(0,U.notifyTaskEvent)({taskId:e.taskId,userId:e.userId,eventType:"task.failed",title:n.title||null,slug:n.slug||null,stage:n.stage||null,status:"failed",error:e.reason||"Cancelled",timestamp:new Date().toISOString(),details:{previousStage:n.stage||null}})}async function V(e){let{taskId:r,userId:n,signal:a,payload:o,ticketType:s="task"}=e.data,i=await t.getTask(r,n);if(!i)return void console.log(`[processor] Task ${r} not found, skipping`);if("completed"===i.status||"failed"===i.status)return void console.log(`[processor] Task ${r} is ${i.status}, skipping`);let d=i.stage;switch(a){case"start":await J(r,d,n);break;case"agentResult":await G(r,d,n,o,s,i.retry_count||0,i.workflow_id&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(i.workflow_id)?i.workflow_id:null);break;case"humanInput":await K(r,o);break;case"daemonStep":await H(r,o);break;case"cancel":await z(r,n,o?.reason);break;default:console.warn(`[processor] Unknown signal: ${a}`)}}async function Y(e){for(let t of e)try{await V(t)}catch(e){throw console.error(`[processor] Error processing job ${t.id}:`,e),e}}async function J(e,t,r){console.log(`[processor] Starting task ${e} at stage ${t}`),await W({taskId:e,stage:t,userId:r}),await B({taskId:e,content:`Task started at stage: ${t}`,logType:"system"})}async function G(e,t,r,o,s,i,d=null){let l,c,u;console.log(`[processor] Processing agent result for ${e}: ${o.decision}`),await M({taskId:e,stage:t,decision:o,userId:r});let g=Array.isArray(o.comments)?o.comments.map(e=>String(e||"").trim()).filter(Boolean):[],p=String(o.comment||o.log||o.final_result||"").trim();for(let t of g.length>0?g:p.split("\n").map(e=>e.trim()).filter(Boolean))await Q({taskId:e,content:t,authorType:"agent"});let m=null,f=null;if(d){let e=await a({workflowId:d,currentNodeName:t,decision:o.decision,retryCount:i,maxRetries:3});l=e.nextNodeName,c=e.nextStatus,u=e.retryCount,m=e.error,f=e.appendLog,console.log(`[processor] Workflow transition: ${t} -> ${l} (workflow: ${d})`)}else{let e=function({currentStage:e,decision:t,ticketType:r,retryCount:a,maxRetries:o=3}){let s=function(e,t){if("spike"===t)return"INTAKE"===e?"PROGRESS":"DONE"===e?null:"DONE";for(let t of n){let r=t.indexOf(e);if(-1!==r){if(r>=t.length-1)return null;return t[r+1]}}return null}(e,r);if("done"===t)return s?{nextStage:s,nextStatus:"queued",retryCount:0,error:null,appendLog:{content:`Stage completed: ${e}`,logType:"checkpoint"}}:{nextStage:"DONE",nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at stage ${e}.`,logType:"checkpoint"}};if("blocked"===t)return{nextStage:e,nextStatus:"blocked",retryCount:a,error:null,appendLog:{content:"Blocked: additional input required.",logType:"system"}};if("PROGRESS"===e)return{nextStage:"PROGRESS",nextStatus:"queued",retryCount:0,error:null,appendLog:{content:"Stage not done. Retrying in PROGRESS.",logType:"system"}};let i=a+1;return i<=o?{nextStage:e,nextStatus:"queued",retryCount:i,error:null,appendLog:{content:`Retrying (${i}/${o}) for stage ${e}.`,logType:"system"}}:{nextStage:e,nextStatus:"failed",retryCount:i,error:"Task failed.",appendLog:{content:"Task failed.",logType:"error"}}}({currentStage:t,decision:o.decision,ticketType:s,retryCount:i,maxRetries:3});l=e.nextStage,c=e.nextStatus,u=e.retryCount,m=e.error,f=e.appendLog}if(await q({taskId:e,nextStage:l,nextStatus:c,retryCount:u,error:m?o.explanation||m:null,userId:r}),f){let t="error"===f.logType&&o.explanation||"system"===f.logType&&o.explanation?o.explanation:f.content;await B({taskId:e,content:t,logType:f.logType})}console.log(`[processor] Task ${e} transitioned: ${t} -> ${l}`)}async function K(e,t){console.log(`[processor] Recording human input for ${e}`),await Q({taskId:e,content:t.content,authorType:t.authorType||"user"})}async function H(e,t){let r=t.provider?` provider=${t.provider}`:"",n=t.model?` model=${t.model}`:"",a=t.role?` role=${t.role}`:"",o="number"==typeof t.iteration?` iter=${t.iteration}`:"",s="exit"===t.phase?` exit=${t.exit_code}`:"",i=t.error?` error=${t.error}`:"",d=Array.isArray(t.args)?t.args.join(" "):"",l=t.stdout_tail?`
74
+ stdout_tail:
75
+ ${t.stdout_tail}`:"",c=t.stderr_tail?`
76
+ stderr_tail:
77
+ ${t.stderr_tail}`:"",u=`[execution/${t.kind||"daemon"}] ${t.phase||"event"} ${t.label||""}${r}${n}${a}${o}${s}${i}`.trim()+(d?`
78
+ args: ${d}`:"")+(t.duration_ms?`
79
+ duration_ms: ${t.duration_ms}`:"")+l+c;await B({taskId:e,content:u,logType:"system"})}async function z(e,t,r){console.log(`[processor] Cancelling task ${e}: ${r||"No reason"}`),await F({taskId:e,reason:r,userId:t})}e.s(["taskProcessor",()=>Y],69324)}];
80
+
81
+ //# sourceMappingURL=lib_2492d514._.js.map
@@ -0,0 +1,16 @@
1
+ module.exports=[48392,e=>{"use strict";var t=e.i(54799),r=e.i(65196),i=e.i(42969);function o(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(1,e)):null}function n(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function a(e){return{id:e.id,scope:e.scope,subjectId:e.subject_id,sourceType:e.source_type,sourceId:e.source_id,kind:e.kind,title:e.title,body:e.body,confidence:o(e.confidence),durability:o(e.durability),tags:n(e.tags),evidence:n(e.evidence),metadata:function(e){if(!e)return{};try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}catch{return{}}}(e.metadata),createdAt:e.created_at,updatedAt:e.updated_at}}function s(e){return(0,r.getSQLiteDb)().prepare(`SELECT id, scope, subject_id, source_type, source_id, kind, title, body,
2
+ confidence, durability, tags, evidence, metadata, created_at, updated_at
3
+ FROM knowledge_entries
4
+ WHERE scope = ? AND subject_id = ?
5
+ ORDER BY updated_at DESC, created_at DESC
6
+ LIMIT ?`).all(e.scope,e.subjectId,e.limit??50).map(a)}function l(e){if(0===e.length)return 0;let n=(0,r.getSQLiteDb)(),a=new Date().toISOString(),s=n.prepare(`SELECT id
7
+ FROM knowledge_entries
8
+ WHERE scope = ? AND subject_id = ? AND content_hash = ?
9
+ LIMIT 1`),l=n.prepare(`INSERT INTO knowledge_entries (
10
+ id, scope, subject_id, source_type, source_id, kind, title, body,
11
+ confidence, durability, tags, evidence, metadata, content_hash, created_at, updated_at
12
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`),d=0;return(0,i.transactionFn)(n,e=>{for(let r of e){let e=r.subjectId.trim(),i=r.title.trim(),n=r.body.trim(),c=r.sourceId.trim();if(!e||!i||!n||!c)continue;let u=(0,t.createHash)("sha256").update(`${r.scope}
13
+ ${e}
14
+ ${n}`).digest("hex");s.get(r.scope,e,u)||(l.run((0,t.randomUUID)(),r.scope,e,r.sourceType,c,r.kind,i,n,o(r.confidence),o(r.durability),JSON.stringify(function(e){let t=new Set,r=[];for(let i of e??[]){let e=String(i??"").trim().toLowerCase();!e||t.has(e)||(t.add(e),r.push(e))}return r}(r.tags)),JSON.stringify(function(e){let t=[];for(let r of e??[]){let e=String(r?.note??"").trim(),i="string"==typeof r?.id?r.id.trim():"";e&&t.push(i?{id:i,note:e}:{note:e})}return t}(r.evidence)),JSON.stringify(r.metadata??{}),u,a,a),d+=1)}})(e),d}e.s(["listKnowledgeEntries",()=>s,"storeKnowledgeEntries",()=>l])},99904,45491,29264,e=>{"use strict";function t(){let{createAdminDbClientSQLite:t}=e.r(65196);return t()}e.i(86213),e.s(["createAdminDbClient",()=>t],45491);let r="Waiting on dependencies",i=[{value:"task.created",label:"Task created",description:"Fires immediately when a new task is added to the queue."},{value:"task.stage_complete",label:"Stage completed",description:"Emitted whenever a stage finishes and the task advances."},{value:"task.completed",label:"Task completed",description:"When the task reaches a completed status (done)."},{value:"task.failed",label:"Task failed",description:"When the task may have errored, including cancellations."},{value:"task.blocked",label:"Task blocked",description:"When the agent raises the task as blocked awaiting manual input."}].map(e=>e.value);class o extends Error{}function n(e){let t=Array.isArray(e.events)?e.events.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(e=>i.includes(e)):[];return{id:String(e.id),user_id:String(e.user_id),url:String(e.url),name:null!=e.name?String(e.name):null,events:t,enabled:!1!==e.enabled,created_at:String(e.created_at),updated_at:String(e.updated_at)}}async function a(e,t){if(function(e,t){if(!e||"object"!=typeof e)return!1;let r=e.code,i="string"==typeof e.message?e.message:"";return"42P01"===r||"PGRST205"===r||i.includes(`relation "${t}" does not exist`)||i.includes(`Could not find the table 'agx.${t}'`)||i.includes(`Could not find the table 'public.${t}'`)}(t,e))throw new o(`Missing relation: ${e}`);throw t}async function s(e){let r=t(),{data:i,error:o}=await r.from("notification_webhooks").select("*").eq("user_id",e).order("created_at",{ascending:!1});return(o&&await a("notification_webhooks",o),i)?(Array.isArray(i)?i:[i]).map(n):[]}async function l(e){if(!e.userId)return;let t=[];try{t=await s(e.userId)}catch(e){if(e instanceof o)return void console.debug("[notifications] notification_webhooks schema not ready, skipping");console.error("[notifications] failed to load webhooks",e);return}let r=t.filter(t=>t.enabled&&t.events.includes(e.eventType));if(!r.length)return;let i=e.timestamp||new Date().toISOString(),n={eventType:e.eventType,taskId:e.taskId,userId:e.userId,title:e.title||null,slug:e.slug||null,stage:e.stage||null,previousStage:e.previousStage||null,nextStage:e.nextStage||null,status:e.status||null,error:e.error||null,timestamp:i,details:e.details||{}};await Promise.all(r.map(async e=>{try{let t=await fetch(e.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});t.ok||console.error(`[notifications] webhook ${e.url} responded with ${t.status}`)}catch(t){console.error(`[notifications] failed to send to ${e.url}`,t)}}))}e.s(["notifyTaskEvent",()=>l],29264);var d=e.i(54799);function c(e,t){if(!e)return!1;let r="string"==typeof e.message?e.message:"";return"42P01"===e.code||"PGRST205"===e.code||r.includes(`relation "${t}" does not exist`)||r.includes(`Could not find the table 'agx.${t}'`)||r.includes(`Could not find the table 'public.${t}'`)}async function u(e){let r=t(),{data:i,error:o}=await r.from("user_settings").select("*").eq("user_id",e).maybeSingle();if(o){if(c(o,"user_settings"))return null;throw o}return i||null}async function f(e,r,i){let o=i?.onlyIfNewer!==!1,n=function(e){if("string"==typeof e){let t=Date.parse(e);if(Number.isFinite(t))return new Date(t).toISOString()}return new Date().toISOString()}(r.changed_at),a=await u(e);if(o&&a?.changed_at){let e=Date.parse(a.changed_at),t=Date.parse(n);if(Number.isFinite(e)&&Number.isFinite(t)&&t<=e)return{settings:a,updated:!1}}let s={user_id:e,default_provider:r.default_provider??a?.default_provider??null,models:r.models??a?.models??{},provenance:r.provenance,changed_at:n},l=t(),{error:d}=await l.from("user_settings").upsert(s,{onConflict:"user_id"});if(d)throw d;let c=await u(e);if(!c)throw Error("Failed to load user_settings after upsert");return{settings:c,updated:!0}}function p(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}async function w(e,t){let r=p(e);for(let i=0;i<5;i++){let{data:i,error:o}=await t.from("tasks").select("id").eq("slug",r).limit(1);if(o)throw o;if(!i||0===i.length)return r;let n=Math.random().toString(36).slice(2,6);r=`${p(e)}-${n}`.slice(0,48)}return`${p(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}async function m(e,t,r,i){let o=p(e);for(let n=0;n<5;n++){let n=r.from("projects").select("id").eq("slug",o).eq("user_id",t);i&&(n=n.neq("id",i));let{data:a,error:s}=await n.limit(1);if(s)throw s;if(!a||0===a.length)return o;let l=Math.random().toString(36).slice(2,6);o=`${p(e)}-${l}`.slice(0,48)}return`${p(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}function _(e){let t=e.trim();if(!t)return[];try{let e=JSON.parse(t);if(Array.isArray(e))return e.map(e=>String(e||"").trim()).filter(Boolean)}catch{}return t.split(",").map(e=>e.trim()).filter(Boolean)}function g(e){let t;if(!e)return[];if(Array.isArray(e))t=e.map(e=>"string"==typeof e?e:null==e?"":String(e)).filter(Boolean);else{if("string"!=typeof e)return[];t=_(e)}return Array.from(new Set(t.map(e=>e.trim()).filter(Boolean)))}function y(e){let t=e.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!t)return{frontmatter:{},body:e};let r={};for(let e of t[1].split("\n")){let t=e.indexOf(":");if(t>0){let i=e.slice(0,t).trim(),o=e.slice(t+1).trim();if("depends_on"===i){r[i]=_(o);continue}"true"===o?r[i]=!0:"false"===o?r[i]=!1:/^\d+$/.test(o)?r[i]=parseInt(o):r[i]=o}}return{frontmatter:r,body:t[2]}}async function h(e,r,i){if(!e||!r?.length)return;let o=i??t(),n=new Set,a=[...r];for(;a.length;){let t=a.pop();if(!t)continue;if(t===e)throw Error("Circular dependency detected");if(n.has(t))continue;n.add(t);let{data:r,error:i}=await o.from("tasks").select("depends_on").eq("id",t).maybeSingle();if(i){if("PGRST116"===i.code||"42703"===i.code)continue;throw i}if(r)for(let e of Array.isArray(r.depends_on)?r.depends_on:[])e&&!n.has(e)&&a.push(e)}}function k(e){let{body:t}=y(e),r=t.match(/^#\s+(.+)$/m);return r?r[1]:void 0}function j(e){return String(e||"").replace(/^#\s+.+(\r?\n|$)/,"").trim()}async function v(e,i){var o;let n=Array.isArray(e.depends_on)?e.depends_on:[];if(!n.length)return;let a=t(),{data:s,error:l}=await a.from("tasks").select("id, title, slug, status, stage").in("id",n);if(l)return;let d=(Array.isArray(s)?s:[]).filter(e=>"completed"!==(e?.status||""));if(d.length){let t=function(e){if(!e||0===e.length)return"";let t=e.slice(0,3).map(e=>`${e.title?e.title:e.slug?e.slug:e.id?e.id:"(unknown)"}${(e.stage?.toLowerCase()==="intake"?" (awaiting approval)":e.status?` (${e.status})`:null)??""}`),i=`${r}: ${t.join(", ")}`;return e.length>3&&(i+=` +${e.length-3} more`),i}(d),o=a.from("tasks").update({status:"blocked",blocked_reason:t}).eq("id",e.id);i&&(o=o.eq("user_id",i));let{error:n}=await o;if(n&&"42703"!==n.code)throw n;return}if("blocked"===e.status&&"string"==typeof(o=e.blocked_reason)&&o.startsWith(r)){let t=a.from("tasks").update({status:"queued",blocked_reason:null}).eq("id",e.id);i&&(t=t.eq("user_id",i));let{error:r}=await t;if(r&&"42703"!==r.code)throw r}}async function q(e,r){console.log("getTasks called with userId:",e);let i=t().from("tasks").select("*").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!1});if(e&&(i=i.eq("user_id",e)),r?.project&&(i=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r.project)?i.eq("project_id",r.project):i.eq("project",r.project)),r?.orphan&&(i=i.is("project_id",null)),r?.status&&(i=i.eq("status",r.status)),r?.search){let e=r.search;i=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?i.or(`id.eq.${e},slug.ilike.%${e}%,title.ilike.%${e}%`):i.or(`id.ilike.%${e}%,slug.ilike.%${e}%,title.ilike.%${e}%`)}let{data:o,error:n}=await i;if(n)throw n;let a=o||[];return r?.orphan?a.filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t}):a}async function b(e,r){let i=t().from("tasks").select("*").eq("id",e);r&&(i=i.eq("user_id",r));let{data:o,error:n}=await i.single();if(n){if("PGRST116"===n.code)return null;throw n}return o}async function S(e,r){let i=t().from("tasks").select("*").eq("slug",e);r&&(i=i.eq("user_id",r));let{data:o,error:n}=await i.single();if(n){if("PGRST116"===n.code)return null;throw n}return o}async function T(e,r,i){let o=t(),{frontmatter:n,body:a}=y(e),s="boolean"==typeof n.swarm?n.swarm:void 0,c=i?.title||k(e),u=String(n.slug||c||"task"),f=await w(u,o),p=i?.projectId||("string"==typeof n.project_id?n.project_id:void 0),m="string"==typeof n.workflow_id?n.workflow_id:void 0,_="string"==typeof n.project?n.project:void 0;if(!_&&p){let{data:e}=await o.from("projects").select("slug").eq("id",p).single();e?.slug&&(_=e.slug)}/^---\n/.test(e);let q="string"==typeof n.provider?n.provider:null,S="string"==typeof n.model?n.model:null,T="string"==typeof n.engine?n.engine:null,P="ai"===n.created_by?"ai":"user",I=g(n.depends_on),A=g(i?.dependsOn),O=A.length>0?A:I,$={id:(0,d.randomUUID)(),content:e,description:j(a),title:c,slug:f,status:n.status||"queued",stage:n.stage||"intake",project:_||null,...void 0!==p?{project_id:p}:{},...void 0!==m?{workflow_id:m}:{},priority:n.priority,engine:T,provider:q,model:S,swarm:s,swarm_models:i?.swarmModels??null,depends_on:O.length?O:null,created_by:P,user_id:r,current_plan:i?.currentPlan||null,open_blockers:i?.openBlockers||[],next_action:i?.nextAction||null,version:1};await h($.id,O,o);let{data:E,error:C}=await o.from("tasks").insert($).select().single();if(C&&"42703"===C.code){let{swarm_models:e,swarm:t,workflow_id:r,current_plan:i,open_blockers:n,next_action:a,version:s,depends_on:l,...d}=$;({data:E,error:C}=await o.from("tasks").insert(d).select().single())}if(C)throw C;if(!E)throw Error("Failed to create task");await v(E,r);let N=await b(E.id,r)||E,D=r||N.user_id;if(D){let e=N.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(N.depends_on)?N.depends_on:[],project:N.project||null,projectId:N.project_id||null,workflowId:N.workflow_id||null,createdBy:N.created_by||null};l({taskId:N.id,userId:D,eventType:"task.created",title:N.title||null,slug:N.slug||null,stage:N.stage||null,status:N.status||null,timestamp:e,details:t})}return N}async function P(e,r,i,o){let n=t(),{frontmatter:a,body:s}=y(r),d="boolean"==typeof a.swarm?a.swarm:void 0,c=k(r),u="string"==typeof a.project_id?a.project_id:void 0,f=Object.prototype.hasOwnProperty.call(a,"provider"),p=Object.prototype.hasOwnProperty.call(a,"model"),w=Object.prototype.hasOwnProperty.call(a,"workflow_id"),m=Object.prototype.hasOwnProperty.call(a,"depends_on"),_=g(a.depends_on),q=g(o?.dependsOn),S=o?.dependsOn!==void 0||m,T=o?.dependsOn!==void 0?q:_,P={content:r,description:j(s),title:c,status:a.status,stage:a.stage,project:a.project,...void 0!==u?{project_id:u}:{},workflow_id:w?a.workflow_id:void 0,priority:a.priority,engine:a.engine,provider:f?a.provider:null,model:p?a.model:null,swarm:d,swarm_models:o?.swarmModels??void 0,...S?{depends_on:T.length?T:null}:{},updated_at:new Date().toISOString(),current_plan:o?.currentPlan??void 0,open_blockers:o?.openBlockers??void 0,next_action:o?.nextAction??void 0};Object.keys(P).forEach(e=>{void 0===P[e]&&delete P[e]}),S&&await h(e,T,n);let I=n.from("tasks").update({...P,version:n.rpc("increment_version")}).eq("id",e);i&&(I=I.eq("user_id",i)),o?.expectedVersion!==void 0&&(I=I.eq("version",o.expectedVersion));let{data:A,error:O}=await n.from("tasks").update({...P}).eq("id",e).select().maybeSingle();if(O&&console.error(`[db.updateTask] error updating task ${e}:`,O),A||O||console.warn(`[db.updateTask] UPDATE returned 0 rows for task ${e}, payload keys:`,Object.keys(P)),O&&"42703"===O.code){let{swarm_models:t,swarm:r,workflow_id:o,current_plan:a,open_blockers:s,next_action:l,version:d,depends_on:c,...u}=P,f=n.from("tasks").update(u).eq("id",e);i&&(f=f.eq("user_id",i)),{data:A,error:O}=await f.select().maybeSingle()}if(O)throw O;if(!A){let t=await b(e,i);if(!t)throw Error(`Task ${e} not found`);return t}await v(A,i);let $=await b(A.id,i)||A,E=i||$.user_id;if(E){let e=$.created_at||new Date().toISOString(),t={dependsOn:Array.isArray($.depends_on)?$.depends_on:[],project:$.project||null,projectId:$.project_id||null,workflowId:$.workflow_id||null,createdBy:$.created_by||null};l({taskId:$.id,userId:E,eventType:"task.created",title:$.title||null,slug:$.slug||null,stage:$.stage||null,status:$.status||null,timestamp:e,details:t})}return $}async function I(e,r,i=25){let o=t(),{data:n,error:a}=await o.from("tasks").select("run_index").eq("id",e).single();if(a){if(a?.code==="42703")return;throw a}let s=[r,...Array.isArray(n.run_index)?n.run_index:[]].slice(0,i),{error:l}=await o.from("tasks").update({run_index:s}).eq("id",e);if(l){if(l?.code==="42703")return;throw l}}async function A(e,r){let i=t().from("tasks").delete().eq("id",e);r&&(i=i.eq("user_id",r));let{error:o}=await i;if(o)throw o}async function O(e){let r=t().from("tasks").select("*").eq("status","queued").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!0}).limit(1);e&&(r=r.eq("engine",e));let{data:i,error:o}=await r.single();if(o){if("PGRST116"===o.code)return null;throw o}return i}async function $(e){let r=t().from("projects").select("*, project_repos(*)");e&&(r=r.eq("user_id",e));let{data:i,error:o}=await r;if(o){if(c(o,"projects"))return[];throw o}return(i||[]).map(e=>({...e,repos:e.project_repos??[]}))}async function E(e,r){let i=t().from("projects").select("*").eq("slug",e);r&&(i=i.eq("user_id",r));let{data:o,error:n}=await i.maybeSingle();if(n){if(c(n,"projects"))return null;throw n}return o||null}async function C(e){let r=t(),{data:i,error:o}=await r.from("project_repos").select("*").eq("project_id",e);if(o){if(c(o,"project_repos"))return[];throw o}return i||[]}let N=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function D(e,r){let i=t(),o=N.test(e),n=i.from("projects").select("*");n=o?n.eq("id",e):n.eq("slug",e),r&&(n=n.eq("user_id",r));let a=await n.maybeSingle();if(a.error){if(c(a.error,"projects"))return null;throw a.error}let s=a.data;if(!s)return null;let l=await C(s.id);return{...s,repos:l}}async function x(e,t,r){if(!t.length)return[];let i=t.map(t=>({...t.id?{id:t.id}:{},project_id:e,name:t.name,path:t.path??null,git_url:t.git_url??null,notes:t.notes??null})),{data:o,error:n}=await r.from("project_repos").insert(i).select("*");if(n){if(c(n,"project_repos"))return[];throw n}return o||[]}async function M(e,r,i){if(!r.name?.trim())throw Error("Project name is required");let o=i??t(),n=r.name.trim()||"project",a=await m(n,e,o),s={user_id:e,name:r.name.trim(),slug:a,description:r.description??null,workflow_id:r.workflow_id??null},{data:l,error:d}=await o.from("projects").insert(s).select("*").single();if(d)throw d;let c=await x(l.id,r.repos??[],o);return{...l,repos:c}}async function R(e,r,i,o){let n=o??t(),a=N.test(e),s=e;if(!a){let t=await E(e,r);if(!t)return null;s=t.id}let l={};if(void 0!==i.name){let e=i.name?.trim();if(!e)throw Error("Project name cannot be empty");l.name=e}if(void 0!==i.slug){let e=i.slug?.trim();e&&(l.slug=e)}if(void 0!==i.description&&(l.description=i.description),void 0!==i.metadata&&(l.metadata=i.metadata),void 0!==i.ci_cd_info&&(l.ci_cd_info=i.ci_cd_info),void 0!==i.workflow_id&&(l.workflow_id=i.workflow_id),Object.keys(l).length){let{error:e}=await n.from("projects").update(l).eq("id",s).eq("user_id",r);if(e)throw e}if(i.repos){let{data:e,error:t}=await n.from("project_repos").select("*").eq("project_id",s);if(t&&!c(t,"project_repos"))throw t;let r=e||[],o=new Set(r.map(e=>e.id)),a=new Set(i.repos.map(e=>e.id).filter(e=>!!e));for(let e of r){if(a.has(e.id))continue;let{error:t}=await n.from("project_repos").delete().eq("id",e.id).eq("project_id",s);if(t&&!c(t,"project_repos"))throw t}for(let e of i.repos){let t={name:e.name,path:e.path??null,git_url:e.git_url??null,notes:e.notes??null,project_id:s};if(e.id&&o.has(e.id)){let{error:r}=await n.from("project_repos").update(t).eq("id",e.id).eq("project_id",s);if(r&&!c(r,"project_repos"))throw r;continue}let{error:r}=await n.from("project_repos").insert({...e.id?{id:e.id}:{},...t});if(r&&!c(r,"project_repos"))throw r}}return D(s,r)}async function W(e,r,i){let o=i??t(),{error:n}=await o.from("projects").delete().eq("id",e).eq("user_id",r);if(n)throw n}async function F(e,r,i){let o=i??t(),{data:n,error:a}=await o.from("projects").select("id, slug").eq("id",e).eq("user_id",r).maybeSingle();if(a)throw a;if(!n)throw Error("Project not found");let{data:s,error:l}=await o.from("tasks").select("id, project").eq("user_id",r).is("project_id",null);if(l)throw l;let d=String(n.slug||"").trim().toLowerCase(),c=(s||[]).filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t||t===d}).map(e=>e.id);if(!c.length)return{updatedCount:0,taskIds:[]};let{error:u}=await o.from("tasks").update({project:n.slug,project_id:n.id,updated_at:new Date().toISOString()}).eq("user_id",r).is("project_id",null).in("id",c);if(u)throw u;return{updatedCount:c.length,taskIds:c}}let L="00000000-0000-0000-0000-000000000001",B=[{id:"00000000-0000-0000-0001-000000000001",name:"INTAKE",label:"Intake",prompt:"New task. Triage, scope, and prepare for work.",position:0,node_type:"step"},{id:"00000000-0000-0000-0001-000000000002",name:"PROGRESS",label:"Progress",prompt:"Task is actively being worked on.",position:1,node_type:"step"},{id:"00000000-0000-0000-0001-000000000003",name:"DONE",label:"Done",prompt:"Task completed.",position:2,node_type:"terminal"}],G=new Map(B.map(e=>[e.id,e]));async function U(e){let r=t(),{error:i}=await r.from("workflows").upsert({id:L,user_id:e||"00000000-0000-0000-0000-000000000000",name:"Default Workflow",definition:{}},{onConflict:"id"});if(i)throw i;let{error:o}=await r.from("workflow_nodes").upsert(B.map(e=>({...e,workflow_id:L,metadata:{}})),{onConflict:"id"});if(o)throw o;let{error:n}=await r.from("workflow_transitions").upsert([{workflow_id:L,from_node_id:"00000000-0000-0000-0001-000000000001",to_node_id:"00000000-0000-0000-0001-000000000002",condition:"done",priority:0,metadata:{}},{workflow_id:L,from_node_id:"00000000-0000-0000-0001-000000000002",to_node_id:"00000000-0000-0000-0001-000000000003",condition:"done",priority:0,metadata:{}}],{onConflict:"workflow_id,from_node_id,condition"});if(n)throw n}async function J(e){let r=t(),{data:i,error:o}=await r.from("workflows").select("*").or(`user_id.eq.${e},user_id.eq.00000000-0000-0000-0000-000000000000`).order("created_at",{ascending:!1});if(o){if(c(o,"workflows"))return[];throw o}return i||[]}async function V(e,r){let i=t().from("workflows").select("*").eq("id",e),{data:o,error:n}=await i.maybeSingle();if(n){if(c(n,"workflows"))return null;throw n}return o}async function H(e,r,i){let o=t(),n={updated_at:new Date().toISOString()};void 0!==i.definition&&(n.definition=i.definition),void 0!==i.name&&(n.name=i.name),void 0!==i.description&&(n.description=i.description);let{data:a,error:s}=await o.from("workflows").update(n).eq("id",e).select().single();if(s)throw s;return a}async function K(e){let r=t(),{data:i,error:o}=await r.from("workflow_nodes").select("*").eq("workflow_id",e).order("position",{ascending:!0});if(o){if(c(o,"workflow_nodes"))return[];throw o}return i||[]}async function Q(e,r,i){let o=t();if(e===L&&await U(r),!await V(e,r))throw Error("Workflow not found");if(e===L){let t=i.map(t=>{let r=G.get(t.id);return r?{id:t.id,workflow_id:e,name:r.name,label:r.label,position:r.position,node_type:r.node_type,prompt:t.prompt??r.prompt,provider:t.provider??null,model:t.model??null,metadata:t.metadata??{}}:null}).filter(e=>!!e);if(t.length>0){let{error:e}=await o.from("workflow_nodes").upsert(t,{onConflict:"id"});if(e)throw e}return K(e)}return await Promise.all(i.map(async t=>{let r={};if(void 0!==t.prompt&&(r.prompt=t.prompt),void 0!==t.provider&&(r.provider=t.provider),void 0!==t.model&&(r.model=t.model),void 0!==t.metadata&&(r.metadata=t.metadata),0===Object.keys(r).length)return;let{error:i}=await o.from("workflow_nodes").update(r).eq("workflow_id",e).eq("id",t.id);if(i)throw i})),K(e)}async function z(e,r){let i=t(),{data:o,error:n}=await i.from("workflow_nodes").select("*").eq("workflow_id",e).eq("name",r).maybeSingle();if(n){if(c(n,"workflow_nodes"))return null;throw n}return o}async function Y(e){let r=t(),{data:i,error:o}=await r.from("workflow_transitions").select("*").eq("workflow_id",e).order("priority",{ascending:!0});if(o){if(c(o,"workflow_transitions"))return[];throw o}return i||[]}async function X(e,r){let i=t(),{data:o,error:n}=await i.from("workflow_transitions").select("*").eq("workflow_id",e).eq("from_node_id",r).order("priority",{ascending:!0});if(n){if(c(n,"workflow_transitions"))return[];throw n}return o||[]}async function Z(e,t){let r=await V(e,t);if(!r)return null;let[i,o]=await Promise.all([K(e),Y(e)]);return{...r,nodes:i,transitions:o}}async function ee(e,r={}){let i=t(),o=Math.max(1,Math.min(2e3,Number(r.limit??r.tail??500))),n="string"==typeof r.after&&r.after.trim()?r.after.trim():null,a=n?null:void 0===r.tail?o:Number(r.tail),s=null!==a&&Number.isFinite(a)&&a>0,l=i.from("task_logs").select("*").eq("task_id",e);r.nodeId&&(l=l.eq("node_id",r.nodeId)),l=n?l.gt("created_at",n).order("created_at",{ascending:!0}).order("id",{ascending:!0}).limit(o):s?l.order("created_at",{ascending:!1}).order("id",{ascending:!1}).limit(o):l.order("created_at",{ascending:!0}).order("id",{ascending:!0}).limit(o);let{data:d,error:c}=await l;if(c)throw c;let u=d||[];return n?u:s?u.slice().reverse():u}async function et(e,r,i,o){let n=t(),{data:a,error:s}=await n.from("task_logs").insert({task_id:e,content:r,log_type:i,...o?{node_id:o}:{}}).select().single();if(s)throw s;return a}function er(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,Math.round(t)):0}function ei(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,t):0}async function eo(e){let r=t(),i={task_id:e.taskId,stage:e.stage,provider:e.provider??null,model:e.model??null,input_tokens:er(e.inputTokens),output_tokens:er(e.outputTokens),estimated_cost:ei(e.estimatedCost)},{data:o,error:n}=await r.from("task_costs").insert(i).select().single();if(n)throw n;return o}async function en(e){let r=t(),{data:i,error:o}=await r.from("task_costs").select("*").eq("task_id",e).order("created_at",{ascending:!0});if(o)throw o;return i||[]}async function ea(e){return function(e){let t={},r=0,i=0,o=0;for(let n of e){let e=n.stage||"unknown",a=er(n.input_tokens),s=er(n.output_tokens),l=ei(n.estimated_cost??0);r+=a,i+=s,o+=l;let d=t[e]||{stage:e,input_tokens:0,output_tokens:0,estimated_cost:0,entries:0};d.input_tokens+=a,d.output_tokens+=s,d.estimated_cost+=l,d.entries+=1,t[e]=d}return{total_input_tokens:r,total_output_tokens:i,total_cost:o,per_stage:Object.values(t).sort((e,t)=>e.stage.localeCompare(t.stage))}}(await en(e))}async function es(e){let r=t(),{data:i,error:o}=await r.from("task_comments").select("*").eq("task_id",e).is("deleted_at",null).order("created_at",{ascending:!0}).order("id",{ascending:!0});if(o)throw o;return i||[]}async function el(e,r,i,o){let n=t(),{data:a,error:s}=await n.from("task_comments").insert({task_id:e,content:r,author_type:i,author_id:o??null}).select().single();if(s)throw s;return a}async function ed(e,r){let i=t(),{data:o,error:n}=await i.from("task_comments").select("author_id, author_type").eq("id",e).single();if(n)throw n;if(!o)throw Error("Comment not found");if("user"!==o.author_type||o.author_id!==r)throw Error("Unauthorized");let{error:a}=await i.from("task_comments").update({deleted_at:new Date().toISOString()}).eq("id",e).is("deleted_at",null);if(a)throw a}async function ec(e,r,i){let o=t().from("learnings").select("*").eq("scope",e).order("created_at",{ascending:!1});r&&(o=o.eq("scope_id",r)),i&&(o=o.eq("user_id",i));let{data:n,error:a}=await o;if(a)throw a;return n||[]}async function eu(e,r,i,o){let n=t(),{data:a,error:s}=await n.from("learnings").insert({scope:e,scope_id:i,content:r,user_id:o}).select().single();if(s)throw s;return a}async function ef(e,r){let i=t().from("learnings").delete().eq("id",e);r&&(i=i.eq("user_id",r));let{error:o}=await i;if(o)throw o}async function ep(e,r){let i=t().from("stage_prompts").select("*").eq("workflow_id",r).order("stage",{ascending:!0});i=e?i.or(`user_id.eq.${e},is_default.eq.true`):i.eq("is_default",!0);let{data:o,error:n}=await i;if(n)throw n;return o||[]}async function ew(e,r,i){let o=t();if(r){let{data:t}=await o.from("stage_prompts").select("*").eq("workflow_id",i).eq("stage",e).eq("user_id",r).single();if(t)return t}let{data:n}=await o.from("stage_prompts").select("*").eq("workflow_id",i).eq("stage",e).eq("is_default",!0).single();return n||null}async function em(e,r,i=[],o,n,a){let s=t(),l={stage:e,prompt:r,outputs:i,user_id:o,is_default:!o,workflow_id:a};n&&(void 0!==n.swarm&&(l.swarm=n.swarm),void 0!==n.provider&&(l.provider=n.provider),void 0!==n.model&&(l.model=n.model),void 0!==n.swarm_models&&(l.swarm_models=n.swarm_models));let{data:d,error:c}=await s.from("stage_prompts").upsert(l,{onConflict:o?"workflow_id,stage,user_id":"workflow_id,stage,is_default"}).select().single();if(c)throw c;return d}async function e_(e,r){let i=t().from("stage_prompts").delete().eq("id",e);r&&(i=i.eq("user_id",r));let{error:o}=await i;if(o)throw o}async function eg(e){let r=t(),{data:i,error:o}=await r.from("agents").select("*").eq("user_id",e).order("created_at",{ascending:!1});if(o){if(c(o,"agents"))return[];throw o}return i||[]}async function ey(e,r){let i=t(),{data:o,error:n}=await i.from("agents").select("*").eq("id",e).eq("user_id",r).maybeSingle();if(n){if("PGRST116"===n.code||c(n,"agents"))return null;throw n}return o}async function eh(e){let r=t(),{data:i,error:o}=await r.from("agent_skills").select("*").eq("agent_id",e).order("created_at",{ascending:!0});if(o){if(c(o,"agent_skills"))return[];throw o}return i||[]}async function ek(e,r){let i=t(),o={user_id:e,name:r.name,style:r.style,description:r.description??null};void 0!==r.id&&(o.id=r.id),void 0!==r.title&&(o.title=r.title),void 0!==r.voice&&(o.voice=r.voice),void 0!==r.seed&&(o.seed=r.seed),void 0!==r.model&&(o.model=r.model),void 0!==r.provider&&(o.provider=r.provider),void 0!==r.color&&(o.color=r.color);let{data:n,error:a}=await i.from("agents").insert(o).select().single();if(a){if(c(a,"agents"))throw Error("Agents table does not exist");throw a}return n}async function ej(e,r,i){let o=t(),n={updated_at:new Date().toISOString()};if(void 0!==i.name&&(n.name=i.name),void 0!==i.title&&(n.title=i.title),void 0!==i.style&&(n.style=i.style),void 0!==i.description&&(n.description=i.description),void 0!==i.voice&&(n.voice=i.voice),void 0!==i.seed&&(n.seed=i.seed),void 0!==i.model&&(n.model=i.model),void 0!==i.provider&&(n.provider=i.provider),void 0!==i.color&&(n.color=i.color),1===Object.keys(n).length)return ey(e,r);let{data:a,error:s}=await o.from("agents").update(n).eq("id",e).eq("user_id",r).select().single();if(s){if("PGRST116"===s.code||c(s,"agents"))return null;throw s}return a}async function ev(e,r){let i=t(),{error:o}=await i.from("agents").delete().eq("id",e).eq("user_id",r);if(o&&!c(o,"agents"))throw o}async function eq(e){let r=t(),{data:i,error:o}=await r.from("project_agents").select("*").eq("project_id",e).order("routing_order",{ascending:!0});if(o){if(c(o,"project_agents"))return[];throw o}return i||[]}async function eb(e,r,i){let o=t();if(void 0===i){let{data:t}=await o.from("project_agents").select("routing_order").eq("project_id",e).order("routing_order",{ascending:!1}).limit(1);i=(t?.[0]?.routing_order??-1)+1}let{data:n,error:a}=await o.from("project_agents").upsert({project_id:e,agent_id:r,routing_order:i}).select().single();if(a)throw a;return n}async function eS(e,r){let i=t(),{error:o}=await i.from("project_agents").delete().eq("project_id",e).eq("agent_id",r);if(o)throw o}async function eT(e,r){let i=t();for(let t=0;t<r.length;t++)await i.from("project_agents").update({routing_order:t}).eq("project_id",e).eq("agent_id",r[t]);return eq(e)}async function eP(e){let r=t(),{data:i,error:o}=await r.from("project_skills").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(o){if(c(o,"project_skills"))return[];throw o}return i||[]}async function eI(e,r,i){let o=t(),{data:n,error:a}=await o.from("project_skills").insert({project_id:e,file:r,condition:i??null}).select().single();if(a)throw a;return n}async function eA(e){let r=t(),{error:i}=await r.from("project_skills").delete().eq("id",e);if(i)throw i}async function eO(e){let r=t(),{data:i,error:o}=await r.from("project_variables").select("*").eq("project_id",e);if(o){if(c(o,"project_variables"))return[];throw o}return i||[]}async function e$(e,r,i){let o=t(),{data:n,error:a}=await o.from("project_variables").upsert({project_id:e,key:r,value:i}).select().single();if(a)throw a;return n}async function eE(e,r){let i=t(),{error:o}=await i.from("project_variables").delete().eq("project_id",e).eq("key",r);if(o)throw o}async function eC(e,r){let i=t().from("project_memory").select("*").eq("project_id",e).order("created_at",{ascending:!1});r&&(i=i.eq("producer",r));let{data:o,error:n}=await i;if(n){if(c(n,"project_memory"))return[];throw n}return o||[]}async function eN(e,r,i,o="human"){let n=t(),{data:a,error:s}=await n.from("project_memory").insert({project_id:e,content:r,source:i??null,producer:o}).select().single();if(s)throw s;return a}async function eD(e){let r=t(),{error:i}=await r.from("project_memory").delete().eq("id",e);if(i)throw i}async function ex(e){let r=t(),{data:i,error:o}=await r.from("project_threads").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(o){if(c(o,"project_threads"))return[];throw o}return i||[]}async function eM(e,r){let i=t(),{data:o,error:n}=await i.from("project_threads").insert({project_id:e,thread_id:r}).select().single();if(n)throw n;return o}async function eR(e,r){let i=t(),{error:o}=await i.from("project_threads").delete().eq("project_id",e).eq("thread_id",r);if(o)throw o}async function eW(e){let r=t(),{data:i,error:o}=await r.from("project_threads").select("project_id").eq("thread_id",e).maybeSingle();return o?(c(o,"project_threads"),null):i?.project_id??null}e.s(["addLearning",()=>eu,"addProjectAgent",()=>eb,"addProjectMemory",()=>eN,"addProjectSkill",()=>eI,"addProjectThread",()=>eM,"addTaskComment",()=>el,"addTaskCostEntry",()=>eo,"addTaskLog",()=>et,"appendRunToIndex",()=>I,"assignOrphanTasksToProject",()=>F,"createAgent",()=>ek,"createProject",()=>M,"createTask",()=>T,"deleteAgent",()=>ev,"deleteLearning",()=>ef,"deleteProject",()=>W,"deleteProjectMemory",()=>eD,"deleteProjectVariable",()=>eE,"deleteStagePrompt",()=>e_,"deleteTask",()=>A,"deleteTaskComment",()=>ed,"ensureNoCircularDependency",()=>h,"getAgent",()=>ey,"getAgentSkills",()=>eh,"getAgents",()=>eg,"getLearnings",()=>ec,"getNextQueuedTask",()=>O,"getProjectAgents",()=>eq,"getProjectBySlug",()=>E,"getProjectForThread",()=>eW,"getProjectMemory",()=>eC,"getProjectRepos",()=>C,"getProjectSkills",()=>eP,"getProjectThreads",()=>ex,"getProjectVariables",()=>eO,"getProjectWithRepos",()=>D,"getProjects",()=>$,"getStagePrompt",()=>ew,"getStagePrompts",()=>ep,"getTask",()=>b,"getTaskBySlug",()=>S,"getTaskComments",()=>es,"getTaskCostEntries",()=>en,"getTaskCostSummary",()=>ea,"getTaskLogs",()=>ee,"getTasks",()=>q,"getUserSettings",()=>u,"getWorkflow",()=>V,"getWorkflowNodeByName",()=>z,"getWorkflowNodes",()=>K,"getWorkflowTransitions",()=>Y,"getWorkflowTransitionsFromNode",()=>X,"getWorkflowWithGraph",()=>Z,"getWorkflows",()=>J,"parseFrontmatter",()=>y,"removeProjectAgent",()=>eS,"removeProjectSkill",()=>eA,"removeProjectThread",()=>eR,"reorderProjectAgents",()=>eT,"setProjectVariable",()=>e$,"updateAgent",()=>ej,"updateProject",()=>R,"updateTask",()=>P,"updateWorkflow",()=>H,"updateWorkflowNodes",()=>Q,"upsertStagePrompt",()=>em,"upsertUserSettings",()=>f],99904)}];
15
+
16
+ //# sourceMappingURL=lib_281e5787._.js.map
@@ -0,0 +1,16 @@
1
+ module.exports=[99904,45491,29264,e=>{"use strict";function t(){let{createAdminDbClientSQLite:t}=e.r(65196);return t()}e.i(86213),e.s(["createAdminDbClient",()=>t],45491);let r="Waiting on dependencies",i=[{value:"task.created",label:"Task created",description:"Fires immediately when a new task is added to the queue."},{value:"task.stage_complete",label:"Stage completed",description:"Emitted whenever a stage finishes and the task advances."},{value:"task.completed",label:"Task completed",description:"When the task reaches a completed status (done)."},{value:"task.failed",label:"Task failed",description:"When the task may have errored, including cancellations."},{value:"task.blocked",label:"Task blocked",description:"When the agent raises the task as blocked awaiting manual input."}].map(e=>e.value);class o extends Error{}function n(e){let t=Array.isArray(e.events)?e.events.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(e=>i.includes(e)):[];return{id:String(e.id),user_id:String(e.user_id),url:String(e.url),name:null!=e.name?String(e.name):null,events:t,enabled:!1!==e.enabled,created_at:String(e.created_at),updated_at:String(e.updated_at)}}async function a(e,t){if(function(e,t){if(!e||"object"!=typeof e)return!1;let r=e.code,i="string"==typeof e.message?e.message:"";return"42P01"===r||"PGRST205"===r||i.includes(`relation "${t}" does not exist`)||i.includes(`Could not find the table 'agx.${t}'`)||i.includes(`Could not find the table 'public.${t}'`)}(t,e))throw new o(`Missing relation: ${e}`);throw t}async function s(e){let r=t(),{data:i,error:o}=await r.from("notification_webhooks").select("*").eq("user_id",e).order("created_at",{ascending:!1});return(o&&await a("notification_webhooks",o),i)?(Array.isArray(i)?i:[i]).map(n):[]}async function l(e){if(!e.userId)return;let t=[];try{t=await s(e.userId)}catch(e){if(e instanceof o)return void console.debug("[notifications] notification_webhooks schema not ready, skipping");console.error("[notifications] failed to load webhooks",e);return}let r=t.filter(t=>t.enabled&&t.events.includes(e.eventType));if(!r.length)return;let i=e.timestamp||new Date().toISOString(),n={eventType:e.eventType,taskId:e.taskId,userId:e.userId,title:e.title||null,slug:e.slug||null,stage:e.stage||null,previousStage:e.previousStage||null,nextStage:e.nextStage||null,status:e.status||null,error:e.error||null,timestamp:i,details:e.details||{}};await Promise.all(r.map(async e=>{try{let t=await fetch(e.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});t.ok||console.error(`[notifications] webhook ${e.url} responded with ${t.status}`)}catch(t){console.error(`[notifications] failed to send to ${e.url}`,t)}}))}e.s(["notifyTaskEvent",()=>l],29264);var d=e.i(54799);function c(e,t){if(!e)return!1;let r="string"==typeof e.message?e.message:"";return"42P01"===e.code||"PGRST205"===e.code||r.includes(`relation "${t}" does not exist`)||r.includes(`Could not find the table 'agx.${t}'`)||r.includes(`Could not find the table 'public.${t}'`)}async function u(e){let r=t(),{data:i,error:o}=await r.from("user_settings").select("*").eq("user_id",e).maybeSingle();if(o){if(c(o,"user_settings"))return null;throw o}return i||null}async function f(e,r,i){let o=i?.onlyIfNewer!==!1,n=function(e){if("string"==typeof e){let t=Date.parse(e);if(Number.isFinite(t))return new Date(t).toISOString()}return new Date().toISOString()}(r.changed_at),a=await u(e);if(o&&a?.changed_at){let e=Date.parse(a.changed_at),t=Date.parse(n);if(Number.isFinite(e)&&Number.isFinite(t)&&t<=e)return{settings:a,updated:!1}}let s={user_id:e,default_provider:r.default_provider??a?.default_provider??null,models:r.models??a?.models??{},provenance:r.provenance,changed_at:n},l=t(),{error:d}=await l.from("user_settings").upsert(s,{onConflict:"user_id"});if(d)throw d;let c=await u(e);if(!c)throw Error("Failed to load user_settings after upsert");return{settings:c,updated:!0}}function p(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}async function w(e,t){let r=p(e);for(let i=0;i<5;i++){let{data:i,error:o}=await t.from("tasks").select("id").eq("slug",r).limit(1);if(o)throw o;if(!i||0===i.length)return r;let n=Math.random().toString(36).slice(2,6);r=`${p(e)}-${n}`.slice(0,48)}return`${p(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}async function m(e,t,r,i){let o=p(e);for(let n=0;n<5;n++){let n=r.from("projects").select("id").eq("slug",o).eq("user_id",t);i&&(n=n.neq("id",i));let{data:a,error:s}=await n.limit(1);if(s)throw s;if(!a||0===a.length)return o;let l=Math.random().toString(36).slice(2,6);o=`${p(e)}-${l}`.slice(0,48)}return`${p(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}function _(e){let t=e.trim();if(!t)return[];try{let e=JSON.parse(t);if(Array.isArray(e))return e.map(e=>String(e||"").trim()).filter(Boolean)}catch{}return t.split(",").map(e=>e.trim()).filter(Boolean)}function g(e){let t;if(!e)return[];if(Array.isArray(e))t=e.map(e=>"string"==typeof e?e:null==e?"":String(e)).filter(Boolean);else{if("string"!=typeof e)return[];t=_(e)}return Array.from(new Set(t.map(e=>e.trim()).filter(Boolean)))}function y(e){let t=e.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!t)return{frontmatter:{},body:e};let r={};for(let e of t[1].split("\n")){let t=e.indexOf(":");if(t>0){let i=e.slice(0,t).trim(),o=e.slice(t+1).trim();if("depends_on"===i){r[i]=_(o);continue}"true"===o?r[i]=!0:"false"===o?r[i]=!1:/^\d+$/.test(o)?r[i]=parseInt(o):r[i]=o}}return{frontmatter:r,body:t[2]}}async function h(e,r,i){if(!e||!r?.length)return;let o=i??t(),n=new Set,a=[...r];for(;a.length;){let t=a.pop();if(!t)continue;if(t===e)throw Error("Circular dependency detected");if(n.has(t))continue;n.add(t);let{data:r,error:i}=await o.from("tasks").select("depends_on").eq("id",t).maybeSingle();if(i){if("PGRST116"===i.code||"42703"===i.code)continue;throw i}if(r)for(let e of Array.isArray(r.depends_on)?r.depends_on:[])e&&!n.has(e)&&a.push(e)}}function k(e){let{body:t}=y(e),r=t.match(/^#\s+(.+)$/m);return r?r[1]:void 0}function j(e){return String(e||"").replace(/^#\s+.+(\r?\n|$)/,"").trim()}async function v(e,i){var o;let n=Array.isArray(e.depends_on)?e.depends_on:[];if(!n.length)return;let a=t(),{data:s,error:l}=await a.from("tasks").select("id, title, slug, status, stage").in("id",n);if(l)return;let d=(Array.isArray(s)?s:[]).filter(e=>"completed"!==(e?.status||""));if(d.length){let t=function(e){if(!e||0===e.length)return"";let t=e.slice(0,3).map(e=>`${e.title?e.title:e.slug?e.slug:e.id?e.id:"(unknown)"}${(e.stage?.toLowerCase()==="intake"?" (awaiting approval)":e.status?` (${e.status})`:null)??""}`),i=`${r}: ${t.join(", ")}`;return e.length>3&&(i+=` +${e.length-3} more`),i}(d),o=a.from("tasks").update({status:"blocked",blocked_reason:t}).eq("id",e.id);i&&(o=o.eq("user_id",i));let{error:n}=await o;if(n&&"42703"!==n.code)throw n;return}if("blocked"===e.status&&"string"==typeof(o=e.blocked_reason)&&o.startsWith(r)){let t=a.from("tasks").update({status:"queued",blocked_reason:null}).eq("id",e.id);i&&(t=t.eq("user_id",i));let{error:r}=await t;if(r&&"42703"!==r.code)throw r}}async function q(e,r){console.log("getTasks called with userId:",e);let i=t().from("tasks").select("*").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!1});if(e&&(i=i.eq("user_id",e)),r?.project&&(i=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r.project)?i.eq("project_id",r.project):i.eq("project",r.project)),r?.orphan&&(i=i.is("project_id",null)),r?.status&&(i=i.eq("status",r.status)),r?.search){let e=r.search;i=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?i.or(`id.eq.${e},slug.ilike.%${e}%,title.ilike.%${e}%`):i.or(`id.ilike.%${e}%,slug.ilike.%${e}%,title.ilike.%${e}%`)}let{data:o,error:n}=await i;if(n)throw n;let a=o||[];return r?.orphan?a.filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t}):a}async function b(e,r){let i=t().from("tasks").select("*").eq("id",e);r&&(i=i.eq("user_id",r));let{data:o,error:n}=await i.single();if(n){if("PGRST116"===n.code)return null;throw n}return o}async function S(e,r){let i=t().from("tasks").select("*").eq("slug",e);r&&(i=i.eq("user_id",r));let{data:o,error:n}=await i.single();if(n){if("PGRST116"===n.code)return null;throw n}return o}async function T(e,r,i){let o=t(),{frontmatter:n,body:a}=y(e),s="boolean"==typeof n.swarm?n.swarm:void 0,c=i?.title||k(e),u=String(n.slug||c||"task"),f=await w(u,o),p=i?.projectId||("string"==typeof n.project_id?n.project_id:void 0),m="string"==typeof n.workflow_id?n.workflow_id:void 0,_="string"==typeof n.project?n.project:void 0;if(!_&&p){let{data:e}=await o.from("projects").select("slug").eq("id",p).single();e?.slug&&(_=e.slug)}/^---\n/.test(e);let q="string"==typeof n.provider?n.provider:null,S="string"==typeof n.model?n.model:null,T="string"==typeof n.engine?n.engine:null,P="ai"===n.created_by?"ai":"user",I=g(n.depends_on),A=g(i?.dependsOn),O=A.length>0?A:I,$={id:(0,d.randomUUID)(),content:e,description:j(a),title:c,slug:f,status:n.status||"queued",stage:n.stage||"intake",project:_||null,...void 0!==p?{project_id:p}:{},...void 0!==m?{workflow_id:m}:{},priority:n.priority,engine:T,provider:q,model:S,swarm:s,swarm_models:i?.swarmModels??null,depends_on:O.length?O:null,created_by:P,user_id:r,current_plan:i?.currentPlan||null,open_blockers:i?.openBlockers||[],next_action:i?.nextAction||null,version:1};await h($.id,O,o);let{data:E,error:C}=await o.from("tasks").insert($).select().single();if(C&&"42703"===C.code){let{swarm_models:e,swarm:t,workflow_id:r,current_plan:i,open_blockers:n,next_action:a,version:s,depends_on:l,...d}=$;({data:E,error:C}=await o.from("tasks").insert(d).select().single())}if(C)throw C;if(!E)throw Error("Failed to create task");await v(E,r);let N=await b(E.id,r)||E,D=r||N.user_id;if(D){let e=N.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(N.depends_on)?N.depends_on:[],project:N.project||null,projectId:N.project_id||null,workflowId:N.workflow_id||null,createdBy:N.created_by||null};l({taskId:N.id,userId:D,eventType:"task.created",title:N.title||null,slug:N.slug||null,stage:N.stage||null,status:N.status||null,timestamp:e,details:t})}return N}async function P(e,r,i,o){let n=t(),{frontmatter:a,body:s}=y(r),d="boolean"==typeof a.swarm?a.swarm:void 0,c=k(r),u="string"==typeof a.project_id?a.project_id:void 0,f=Object.prototype.hasOwnProperty.call(a,"provider"),p=Object.prototype.hasOwnProperty.call(a,"model"),w=Object.prototype.hasOwnProperty.call(a,"workflow_id"),m=Object.prototype.hasOwnProperty.call(a,"depends_on"),_=g(a.depends_on),q=g(o?.dependsOn),S=o?.dependsOn!==void 0||m,T=o?.dependsOn!==void 0?q:_,P={content:r,description:j(s),title:c,status:a.status,stage:a.stage,project:a.project,...void 0!==u?{project_id:u}:{},workflow_id:w?a.workflow_id:void 0,priority:a.priority,engine:a.engine,provider:f?a.provider:null,model:p?a.model:null,swarm:d,swarm_models:o?.swarmModels??void 0,...S?{depends_on:T.length?T:null}:{},updated_at:new Date().toISOString(),current_plan:o?.currentPlan??void 0,open_blockers:o?.openBlockers??void 0,next_action:o?.nextAction??void 0};Object.keys(P).forEach(e=>{void 0===P[e]&&delete P[e]}),S&&await h(e,T,n);let I=n.from("tasks").update({...P,version:n.rpc("increment_version")}).eq("id",e);i&&(I=I.eq("user_id",i)),o?.expectedVersion!==void 0&&(I=I.eq("version",o.expectedVersion));let{data:A,error:O}=await n.from("tasks").update({...P}).eq("id",e).select().maybeSingle();if(O&&console.error(`[db.updateTask] error updating task ${e}:`,O),A||O||console.warn(`[db.updateTask] UPDATE returned 0 rows for task ${e}, payload keys:`,Object.keys(P)),O&&"42703"===O.code){let{swarm_models:t,swarm:r,workflow_id:o,current_plan:a,open_blockers:s,next_action:l,version:d,depends_on:c,...u}=P,f=n.from("tasks").update(u).eq("id",e);i&&(f=f.eq("user_id",i)),{data:A,error:O}=await f.select().maybeSingle()}if(O)throw O;if(!A){let t=await b(e,i);if(!t)throw Error(`Task ${e} not found`);return t}await v(A,i);let $=await b(A.id,i)||A,E=i||$.user_id;if(E){let e=$.created_at||new Date().toISOString(),t={dependsOn:Array.isArray($.depends_on)?$.depends_on:[],project:$.project||null,projectId:$.project_id||null,workflowId:$.workflow_id||null,createdBy:$.created_by||null};l({taskId:$.id,userId:E,eventType:"task.created",title:$.title||null,slug:$.slug||null,stage:$.stage||null,status:$.status||null,timestamp:e,details:t})}return $}async function I(e,r,i=25){let o=t(),{data:n,error:a}=await o.from("tasks").select("run_index").eq("id",e).single();if(a){if(a?.code==="42703")return;throw a}let s=[r,...Array.isArray(n.run_index)?n.run_index:[]].slice(0,i),{error:l}=await o.from("tasks").update({run_index:s}).eq("id",e);if(l){if(l?.code==="42703")return;throw l}}async function A(e,r){let i=t().from("tasks").delete().eq("id",e);r&&(i=i.eq("user_id",r));let{error:o}=await i;if(o)throw o}async function O(e){let r=t().from("tasks").select("*").eq("status","queued").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!0}).limit(1);e&&(r=r.eq("engine",e));let{data:i,error:o}=await r.single();if(o){if("PGRST116"===o.code)return null;throw o}return i}async function $(e){let r=t().from("projects").select("*, project_repos(*)");e&&(r=r.eq("user_id",e));let{data:i,error:o}=await r;if(o){if(c(o,"projects"))return[];throw o}return(i||[]).map(e=>({...e,repos:e.project_repos??[]}))}async function E(e,r){let i=t().from("projects").select("*").eq("slug",e);r&&(i=i.eq("user_id",r));let{data:o,error:n}=await i.maybeSingle();if(n){if(c(n,"projects"))return null;throw n}return o||null}async function C(e){let r=t(),{data:i,error:o}=await r.from("project_repos").select("*").eq("project_id",e);if(o){if(c(o,"project_repos"))return[];throw o}return i||[]}let N=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function D(e,r){let i=t(),o=N.test(e),n=i.from("projects").select("*");n=o?n.eq("id",e):n.eq("slug",e),r&&(n=n.eq("user_id",r));let a=await n.maybeSingle();if(a.error){if(c(a.error,"projects"))return null;throw a.error}let s=a.data;if(!s)return null;let l=await C(s.id);return{...s,repos:l}}async function x(e,t,r){if(!t.length)return[];let i=t.map(t=>({...t.id?{id:t.id}:{},project_id:e,name:t.name,path:t.path??null,git_url:t.git_url??null,notes:t.notes??null})),{data:o,error:n}=await r.from("project_repos").insert(i).select("*");if(n){if(c(n,"project_repos"))return[];throw n}return o||[]}async function M(e,r,i){if(!r.name?.trim())throw Error("Project name is required");let o=i??t(),n=r.name.trim()||"project",a=await m(n,e,o),s={user_id:e,name:r.name.trim(),slug:a,description:r.description??null,workflow_id:r.workflow_id??null},{data:l,error:d}=await o.from("projects").insert(s).select("*").single();if(d)throw d;let c=await x(l.id,r.repos??[],o);return{...l,repos:c}}async function R(e,r,i,o){let n=o??t(),a=N.test(e),s=e;if(!a){let t=await E(e,r);if(!t)return null;s=t.id}let l={};if(void 0!==i.name){let e=i.name?.trim();if(!e)throw Error("Project name cannot be empty");l.name=e}if(void 0!==i.slug){let e=i.slug?.trim();e&&(l.slug=e)}if(void 0!==i.description&&(l.description=i.description),void 0!==i.metadata&&(l.metadata=i.metadata),void 0!==i.ci_cd_info&&(l.ci_cd_info=i.ci_cd_info),void 0!==i.workflow_id&&(l.workflow_id=i.workflow_id),Object.keys(l).length){let{error:e}=await n.from("projects").update(l).eq("id",s).eq("user_id",r);if(e)throw e}if(i.repos){let{data:e,error:t}=await n.from("project_repos").select("*").eq("project_id",s);if(t&&!c(t,"project_repos"))throw t;let r=e||[],o=new Set(r.map(e=>e.id)),a=new Set(i.repos.map(e=>e.id).filter(e=>!!e));for(let e of r){if(a.has(e.id))continue;let{error:t}=await n.from("project_repos").delete().eq("id",e.id).eq("project_id",s);if(t&&!c(t,"project_repos"))throw t}for(let e of i.repos){let t={name:e.name,path:e.path??null,git_url:e.git_url??null,notes:e.notes??null,project_id:s};if(e.id&&o.has(e.id)){let{error:r}=await n.from("project_repos").update(t).eq("id",e.id).eq("project_id",s);if(r&&!c(r,"project_repos"))throw r;continue}let{error:r}=await n.from("project_repos").insert({...e.id?{id:e.id}:{},...t});if(r&&!c(r,"project_repos"))throw r}}return D(s,r)}async function W(e,r,i){let o=i??t(),{error:n}=await o.from("projects").delete().eq("id",e).eq("user_id",r);if(n)throw n}async function F(e,r,i){let o=i??t(),{data:n,error:a}=await o.from("projects").select("id, slug").eq("id",e).eq("user_id",r).maybeSingle();if(a)throw a;if(!n)throw Error("Project not found");let{data:s,error:l}=await o.from("tasks").select("id, project").eq("user_id",r).is("project_id",null);if(l)throw l;let d=String(n.slug||"").trim().toLowerCase(),c=(s||[]).filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t||t===d}).map(e=>e.id);if(!c.length)return{updatedCount:0,taskIds:[]};let{error:u}=await o.from("tasks").update({project:n.slug,project_id:n.id,updated_at:new Date().toISOString()}).eq("user_id",r).is("project_id",null).in("id",c);if(u)throw u;return{updatedCount:c.length,taskIds:c}}let L="00000000-0000-0000-0000-000000000001",B=[{id:"00000000-0000-0000-0001-000000000001",name:"INTAKE",label:"Intake",prompt:"New task. Triage, scope, and prepare for work.",position:0,node_type:"step"},{id:"00000000-0000-0000-0001-000000000002",name:"PROGRESS",label:"Progress",prompt:"Task is actively being worked on.",position:1,node_type:"step"},{id:"00000000-0000-0000-0001-000000000003",name:"DONE",label:"Done",prompt:"Task completed.",position:2,node_type:"terminal"}],G=new Map(B.map(e=>[e.id,e]));async function U(e){let r=t(),{error:i}=await r.from("workflows").upsert({id:L,user_id:e||"00000000-0000-0000-0000-000000000000",name:"Default Workflow",definition:{}},{onConflict:"id"});if(i)throw i;let{error:o}=await r.from("workflow_nodes").upsert(B.map(e=>({...e,workflow_id:L,metadata:{}})),{onConflict:"id"});if(o)throw o;let{error:n}=await r.from("workflow_transitions").upsert([{workflow_id:L,from_node_id:"00000000-0000-0000-0001-000000000001",to_node_id:"00000000-0000-0000-0001-000000000002",condition:"done",priority:0,metadata:{}},{workflow_id:L,from_node_id:"00000000-0000-0000-0001-000000000002",to_node_id:"00000000-0000-0000-0001-000000000003",condition:"done",priority:0,metadata:{}}],{onConflict:"workflow_id,from_node_id,condition"});if(n)throw n}async function J(e){let r=t(),{data:i,error:o}=await r.from("workflows").select("*").or(`user_id.eq.${e},user_id.eq.00000000-0000-0000-0000-000000000000`).order("created_at",{ascending:!1});if(o){if(c(o,"workflows"))return[];throw o}return i||[]}async function V(e,r){let i=t().from("workflows").select("*").eq("id",e),{data:o,error:n}=await i.maybeSingle();if(n){if(c(n,"workflows"))return null;throw n}return o}async function H(e,r,i){let o=t(),n={updated_at:new Date().toISOString()};void 0!==i.definition&&(n.definition=i.definition),void 0!==i.name&&(n.name=i.name),void 0!==i.description&&(n.description=i.description);let{data:a,error:s}=await o.from("workflows").update(n).eq("id",e).select().single();if(s)throw s;return a}async function K(e){let r=t(),{data:i,error:o}=await r.from("workflow_nodes").select("*").eq("workflow_id",e).order("position",{ascending:!0});if(o){if(c(o,"workflow_nodes"))return[];throw o}return i||[]}async function Q(e,r,i){let o=t();if(e===L&&await U(r),!await V(e,r))throw Error("Workflow not found");if(e===L){let t=i.map(t=>{let r=G.get(t.id);return r?{id:t.id,workflow_id:e,name:r.name,label:r.label,position:r.position,node_type:r.node_type,prompt:t.prompt??r.prompt,provider:t.provider??null,model:t.model??null,metadata:t.metadata??{}}:null}).filter(e=>!!e);if(t.length>0){let{error:e}=await o.from("workflow_nodes").upsert(t,{onConflict:"id"});if(e)throw e}return K(e)}return await Promise.all(i.map(async t=>{let r={};if(void 0!==t.prompt&&(r.prompt=t.prompt),void 0!==t.provider&&(r.provider=t.provider),void 0!==t.model&&(r.model=t.model),void 0!==t.metadata&&(r.metadata=t.metadata),0===Object.keys(r).length)return;let{error:i}=await o.from("workflow_nodes").update(r).eq("workflow_id",e).eq("id",t.id);if(i)throw i})),K(e)}async function z(e,r){let i=t(),{data:o,error:n}=await i.from("workflow_nodes").select("*").eq("workflow_id",e).eq("name",r).maybeSingle();if(n){if(c(n,"workflow_nodes"))return null;throw n}return o}async function Y(e){let r=t(),{data:i,error:o}=await r.from("workflow_transitions").select("*").eq("workflow_id",e).order("priority",{ascending:!0});if(o){if(c(o,"workflow_transitions"))return[];throw o}return i||[]}async function X(e,r){let i=t(),{data:o,error:n}=await i.from("workflow_transitions").select("*").eq("workflow_id",e).eq("from_node_id",r).order("priority",{ascending:!0});if(n){if(c(n,"workflow_transitions"))return[];throw n}return o||[]}async function Z(e,t){let r=await V(e,t);if(!r)return null;let[i,o]=await Promise.all([K(e),Y(e)]);return{...r,nodes:i,transitions:o}}async function ee(e,r={}){let i=t(),o=Math.max(1,Math.min(2e3,Number(r.limit??r.tail??500))),n="string"==typeof r.after&&r.after.trim()?r.after.trim():null,a=n?null:void 0===r.tail?o:Number(r.tail),s=null!==a&&Number.isFinite(a)&&a>0,l=i.from("task_logs").select("*").eq("task_id",e);r.nodeId&&(l=l.eq("node_id",r.nodeId)),l=n?l.gt("created_at",n).order("created_at",{ascending:!0}).order("id",{ascending:!0}).limit(o):s?l.order("created_at",{ascending:!1}).order("id",{ascending:!1}).limit(o):l.order("created_at",{ascending:!0}).order("id",{ascending:!0}).limit(o);let{data:d,error:c}=await l;if(c)throw c;let u=d||[];return n?u:s?u.slice().reverse():u}async function et(e,r,i,o){let n=t(),{data:a,error:s}=await n.from("task_logs").insert({task_id:e,content:r,log_type:i,...o?{node_id:o}:{}}).select().single();if(s)throw s;return a}function er(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,Math.round(t)):0}function ei(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,t):0}async function eo(e){let r=t(),i={task_id:e.taskId,stage:e.stage,provider:e.provider??null,model:e.model??null,input_tokens:er(e.inputTokens),output_tokens:er(e.outputTokens),estimated_cost:ei(e.estimatedCost)},{data:o,error:n}=await r.from("task_costs").insert(i).select().single();if(n)throw n;return o}async function en(e){let r=t(),{data:i,error:o}=await r.from("task_costs").select("*").eq("task_id",e).order("created_at",{ascending:!0});if(o)throw o;return i||[]}async function ea(e){return function(e){let t={},r=0,i=0,o=0;for(let n of e){let e=n.stage||"unknown",a=er(n.input_tokens),s=er(n.output_tokens),l=ei(n.estimated_cost??0);r+=a,i+=s,o+=l;let d=t[e]||{stage:e,input_tokens:0,output_tokens:0,estimated_cost:0,entries:0};d.input_tokens+=a,d.output_tokens+=s,d.estimated_cost+=l,d.entries+=1,t[e]=d}return{total_input_tokens:r,total_output_tokens:i,total_cost:o,per_stage:Object.values(t).sort((e,t)=>e.stage.localeCompare(t.stage))}}(await en(e))}async function es(e){let r=t(),{data:i,error:o}=await r.from("task_comments").select("*").eq("task_id",e).is("deleted_at",null).order("created_at",{ascending:!0}).order("id",{ascending:!0});if(o)throw o;return i||[]}async function el(e,r,i,o){let n=t(),{data:a,error:s}=await n.from("task_comments").insert({task_id:e,content:r,author_type:i,author_id:o??null}).select().single();if(s)throw s;return a}async function ed(e,r){let i=t(),{data:o,error:n}=await i.from("task_comments").select("author_id, author_type").eq("id",e).single();if(n)throw n;if(!o)throw Error("Comment not found");if("user"!==o.author_type||o.author_id!==r)throw Error("Unauthorized");let{error:a}=await i.from("task_comments").update({deleted_at:new Date().toISOString()}).eq("id",e).is("deleted_at",null);if(a)throw a}async function ec(e,r,i){let o=t().from("learnings").select("*").eq("scope",e).order("created_at",{ascending:!1});r&&(o=o.eq("scope_id",r)),i&&(o=o.eq("user_id",i));let{data:n,error:a}=await o;if(a)throw a;return n||[]}async function eu(e,r,i,o){let n=t(),{data:a,error:s}=await n.from("learnings").insert({scope:e,scope_id:i,content:r,user_id:o}).select().single();if(s)throw s;return a}async function ef(e,r){let i=t().from("learnings").delete().eq("id",e);r&&(i=i.eq("user_id",r));let{error:o}=await i;if(o)throw o}async function ep(e,r){let i=t().from("stage_prompts").select("*").eq("workflow_id",r).order("stage",{ascending:!0});i=e?i.or(`user_id.eq.${e},is_default.eq.true`):i.eq("is_default",!0);let{data:o,error:n}=await i;if(n)throw n;return o||[]}async function ew(e,r,i){let o=t();if(r){let{data:t}=await o.from("stage_prompts").select("*").eq("workflow_id",i).eq("stage",e).eq("user_id",r).single();if(t)return t}let{data:n}=await o.from("stage_prompts").select("*").eq("workflow_id",i).eq("stage",e).eq("is_default",!0).single();return n||null}async function em(e,r,i=[],o,n,a){let s=t(),l={stage:e,prompt:r,outputs:i,user_id:o,is_default:!o,workflow_id:a};n&&(void 0!==n.swarm&&(l.swarm=n.swarm),void 0!==n.provider&&(l.provider=n.provider),void 0!==n.model&&(l.model=n.model),void 0!==n.swarm_models&&(l.swarm_models=n.swarm_models));let{data:d,error:c}=await s.from("stage_prompts").upsert(l,{onConflict:o?"workflow_id,stage,user_id":"workflow_id,stage,is_default"}).select().single();if(c)throw c;return d}async function e_(e,r){let i=t().from("stage_prompts").delete().eq("id",e);r&&(i=i.eq("user_id",r));let{error:o}=await i;if(o)throw o}async function eg(e){let r=t(),{data:i,error:o}=await r.from("agents").select("*").eq("user_id",e).order("created_at",{ascending:!1});if(o){if(c(o,"agents"))return[];throw o}return i||[]}async function ey(e,r){let i=t(),{data:o,error:n}=await i.from("agents").select("*").eq("id",e).eq("user_id",r).maybeSingle();if(n){if("PGRST116"===n.code||c(n,"agents"))return null;throw n}return o}async function eh(e){let r=t(),{data:i,error:o}=await r.from("agent_skills").select("*").eq("agent_id",e).order("created_at",{ascending:!0});if(o){if(c(o,"agent_skills"))return[];throw o}return i||[]}async function ek(e,r){let i=t(),o={user_id:e,name:r.name,style:r.style,description:r.description??null};void 0!==r.id&&(o.id=r.id),void 0!==r.title&&(o.title=r.title),void 0!==r.voice&&(o.voice=r.voice),void 0!==r.seed&&(o.seed=r.seed),void 0!==r.model&&(o.model=r.model),void 0!==r.provider&&(o.provider=r.provider),void 0!==r.color&&(o.color=r.color);let{data:n,error:a}=await i.from("agents").insert(o).select().single();if(a){if(c(a,"agents"))throw Error("Agents table does not exist");throw a}return n}async function ej(e,r,i){let o=t(),n={updated_at:new Date().toISOString()};if(void 0!==i.name&&(n.name=i.name),void 0!==i.title&&(n.title=i.title),void 0!==i.style&&(n.style=i.style),void 0!==i.description&&(n.description=i.description),void 0!==i.voice&&(n.voice=i.voice),void 0!==i.seed&&(n.seed=i.seed),void 0!==i.model&&(n.model=i.model),void 0!==i.provider&&(n.provider=i.provider),void 0!==i.color&&(n.color=i.color),1===Object.keys(n).length)return ey(e,r);let{data:a,error:s}=await o.from("agents").update(n).eq("id",e).eq("user_id",r).select().single();if(s){if("PGRST116"===s.code||c(s,"agents"))return null;throw s}return a}async function ev(e,r){let i=t(),{error:o}=await i.from("agents").delete().eq("id",e).eq("user_id",r);if(o&&!c(o,"agents"))throw o}async function eq(e){let r=t(),{data:i,error:o}=await r.from("project_agents").select("*").eq("project_id",e).order("routing_order",{ascending:!0});if(o){if(c(o,"project_agents"))return[];throw o}return i||[]}async function eb(e,r,i){let o=t();if(void 0===i){let{data:t}=await o.from("project_agents").select("routing_order").eq("project_id",e).order("routing_order",{ascending:!1}).limit(1);i=(t?.[0]?.routing_order??-1)+1}let{data:n,error:a}=await o.from("project_agents").upsert({project_id:e,agent_id:r,routing_order:i}).select().single();if(a)throw a;return n}async function eS(e,r){let i=t(),{error:o}=await i.from("project_agents").delete().eq("project_id",e).eq("agent_id",r);if(o)throw o}async function eT(e,r){let i=t();for(let t=0;t<r.length;t++)await i.from("project_agents").update({routing_order:t}).eq("project_id",e).eq("agent_id",r[t]);return eq(e)}async function eP(e){let r=t(),{data:i,error:o}=await r.from("project_skills").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(o){if(c(o,"project_skills"))return[];throw o}return i||[]}async function eI(e,r,i){let o=t(),{data:n,error:a}=await o.from("project_skills").insert({project_id:e,file:r,condition:i??null}).select().single();if(a)throw a;return n}async function eA(e){let r=t(),{error:i}=await r.from("project_skills").delete().eq("id",e);if(i)throw i}async function eO(e){let r=t(),{data:i,error:o}=await r.from("project_variables").select("*").eq("project_id",e);if(o){if(c(o,"project_variables"))return[];throw o}return i||[]}async function e$(e,r,i){let o=t(),{data:n,error:a}=await o.from("project_variables").upsert({project_id:e,key:r,value:i}).select().single();if(a)throw a;return n}async function eE(e,r){let i=t(),{error:o}=await i.from("project_variables").delete().eq("project_id",e).eq("key",r);if(o)throw o}async function eC(e,r){let i=t().from("project_memory").select("*").eq("project_id",e).order("created_at",{ascending:!1});r&&(i=i.eq("producer",r));let{data:o,error:n}=await i;if(n){if(c(n,"project_memory"))return[];throw n}return o||[]}async function eN(e,r,i,o="human"){let n=t(),{data:a,error:s}=await n.from("project_memory").insert({project_id:e,content:r,source:i??null,producer:o}).select().single();if(s)throw s;return a}async function eD(e){let r=t(),{error:i}=await r.from("project_memory").delete().eq("id",e);if(i)throw i}async function ex(e){let r=t(),{data:i,error:o}=await r.from("project_threads").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(o){if(c(o,"project_threads"))return[];throw o}return i||[]}async function eM(e,r){let i=t(),{data:o,error:n}=await i.from("project_threads").insert({project_id:e,thread_id:r}).select().single();if(n)throw n;return o}async function eR(e,r){let i=t(),{error:o}=await i.from("project_threads").delete().eq("project_id",e).eq("thread_id",r);if(o)throw o}async function eW(e){let r=t(),{data:i,error:o}=await r.from("project_threads").select("project_id").eq("thread_id",e).maybeSingle();return o?(c(o,"project_threads"),null):i?.project_id??null}e.s(["addLearning",()=>eu,"addProjectAgent",()=>eb,"addProjectMemory",()=>eN,"addProjectSkill",()=>eI,"addProjectThread",()=>eM,"addTaskComment",()=>el,"addTaskCostEntry",()=>eo,"addTaskLog",()=>et,"appendRunToIndex",()=>I,"assignOrphanTasksToProject",()=>F,"createAgent",()=>ek,"createProject",()=>M,"createTask",()=>T,"deleteAgent",()=>ev,"deleteLearning",()=>ef,"deleteProject",()=>W,"deleteProjectMemory",()=>eD,"deleteProjectVariable",()=>eE,"deleteStagePrompt",()=>e_,"deleteTask",()=>A,"deleteTaskComment",()=>ed,"ensureNoCircularDependency",()=>h,"getAgent",()=>ey,"getAgentSkills",()=>eh,"getAgents",()=>eg,"getLearnings",()=>ec,"getNextQueuedTask",()=>O,"getProjectAgents",()=>eq,"getProjectBySlug",()=>E,"getProjectForThread",()=>eW,"getProjectMemory",()=>eC,"getProjectRepos",()=>C,"getProjectSkills",()=>eP,"getProjectThreads",()=>ex,"getProjectVariables",()=>eO,"getProjectWithRepos",()=>D,"getProjects",()=>$,"getStagePrompt",()=>ew,"getStagePrompts",()=>ep,"getTask",()=>b,"getTaskBySlug",()=>S,"getTaskComments",()=>es,"getTaskCostEntries",()=>en,"getTaskCostSummary",()=>ea,"getTaskLogs",()=>ee,"getTasks",()=>q,"getUserSettings",()=>u,"getWorkflow",()=>V,"getWorkflowNodeByName",()=>z,"getWorkflowNodes",()=>K,"getWorkflowTransitions",()=>Y,"getWorkflowTransitionsFromNode",()=>X,"getWorkflowWithGraph",()=>Z,"getWorkflows",()=>J,"parseFrontmatter",()=>y,"removeProjectAgent",()=>eS,"removeProjectSkill",()=>eA,"removeProjectThread",()=>eR,"reorderProjectAgents",()=>eT,"setProjectVariable",()=>e$,"updateAgent",()=>ej,"updateProject",()=>R,"updateTask",()=>P,"updateWorkflow",()=>H,"updateWorkflowNodes",()=>Q,"upsertStagePrompt",()=>em,"upsertUserSettings",()=>f],99904)},48392,e=>{"use strict";var t=e.i(54799),r=e.i(65196),i=e.i(42969);function o(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(1,e)):null}function n(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function a(e){return{id:e.id,scope:e.scope,subjectId:e.subject_id,sourceType:e.source_type,sourceId:e.source_id,kind:e.kind,title:e.title,body:e.body,confidence:o(e.confidence),durability:o(e.durability),tags:n(e.tags),evidence:n(e.evidence),metadata:function(e){if(!e)return{};try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}catch{return{}}}(e.metadata),createdAt:e.created_at,updatedAt:e.updated_at}}function s(e){return(0,r.getSQLiteDb)().prepare(`SELECT id, scope, subject_id, source_type, source_id, kind, title, body,
2
+ confidence, durability, tags, evidence, metadata, created_at, updated_at
3
+ FROM knowledge_entries
4
+ WHERE scope = ? AND subject_id = ?
5
+ ORDER BY updated_at DESC, created_at DESC
6
+ LIMIT ?`).all(e.scope,e.subjectId,e.limit??50).map(a)}function l(e){if(0===e.length)return 0;let n=(0,r.getSQLiteDb)(),a=new Date().toISOString(),s=n.prepare(`SELECT id
7
+ FROM knowledge_entries
8
+ WHERE scope = ? AND subject_id = ? AND content_hash = ?
9
+ LIMIT 1`),l=n.prepare(`INSERT INTO knowledge_entries (
10
+ id, scope, subject_id, source_type, source_id, kind, title, body,
11
+ confidence, durability, tags, evidence, metadata, content_hash, created_at, updated_at
12
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`),d=0;return(0,i.transactionFn)(n,e=>{for(let r of e){let e=r.subjectId.trim(),i=r.title.trim(),n=r.body.trim(),c=r.sourceId.trim();if(!e||!i||!n||!c)continue;let u=(0,t.createHash)("sha256").update(`${r.scope}
13
+ ${e}
14
+ ${n}`).digest("hex");s.get(r.scope,e,u)||(l.run((0,t.randomUUID)(),r.scope,e,r.sourceType,c,r.kind,i,n,o(r.confidence),o(r.durability),JSON.stringify(function(e){let t=new Set,r=[];for(let i of e??[]){let e=String(i??"").trim().toLowerCase();!e||t.has(e)||(t.add(e),r.push(e))}return r}(r.tags)),JSON.stringify(function(e){let t=[];for(let r of e??[]){let e=String(r?.note??"").trim(),i="string"==typeof r?.id?r.id.trim():"";e&&t.push(i?{id:i,note:e}:{note:e})}return t}(r.evidence)),JSON.stringify(r.metadata??{}),u,a,a),d+=1)}})(e),d}e.s(["listKnowledgeEntries",()=>s,"storeKnowledgeEntries",()=>l])}];
15
+
16
+ //# sourceMappingURL=lib_63067e21._.js.map
@@ -0,0 +1,134 @@
1
+ module.exports=[26607,e=>{"use strict";var t=e.i(24868),n=e.i(90107),a=e.x("node:sqlite",()=>require("node:sqlite"),!0),i=e.i(42969),r=e.i(14747),s=e.i(46786),o=e.i(22734);let l=process.env.AGX_GROUP_CHAT_DIR?.trim()||r.default.join(s.default.homedir(),".agx","group-chat"),d=r.default.join(l,"history.sqlite");function c(e){return{id:e.id,workspaceId:e.workspace_id,threadId:e.thread_id,agentId:e.agent_id,pid:e.pid,state:e.state,sinceMessageId:e.since_message_id,responseMessageId:e.response_message_id||"",startedAt:e.started_at,lastActivity:e.last_activity,projectSlug:e.project_slug||""}}function p(e){let t=function(){(0,o.mkdirSync)(l,{recursive:!0});let e=new a.DatabaseSync(d);(0,i.pragmaSet)(e,"journal_mode = WAL"),e.exec(`
2
+ CREATE TABLE IF NOT EXISTS agent_processes (
3
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
4
+ workspace_id TEXT NOT NULL,
5
+ thread_id TEXT NOT NULL DEFAULT '',
6
+ agent_id TEXT NOT NULL,
7
+ pid INTEGER NOT NULL DEFAULT 0,
8
+ state TEXT NOT NULL DEFAULT 'spawning',
9
+ since_message_id TEXT NOT NULL DEFAULT '',
10
+ started_at INTEGER NOT NULL,
11
+ last_activity INTEGER NOT NULL,
12
+ project_slug TEXT NOT NULL DEFAULT '',
13
+ UNIQUE (workspace_id, agent_id)
14
+ )
15
+ `),e.exec("CREATE INDEX IF NOT EXISTS idx_agent_processes_state ON agent_processes (state)"),e.exec("CREATE INDEX IF NOT EXISTS idx_agent_processes_thread ON agent_processes (thread_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_agent_processes_workspace ON agent_processes (workspace_id)");try{e.exec("ALTER TABLE agent_processes ADD COLUMN project_slug TEXT NOT NULL DEFAULT ''")}catch{}try{e.exec("ALTER TABLE agent_processes ADD COLUMN response_message_id TEXT NOT NULL DEFAULT ''")}catch{}return e}();try{return e(t)}finally{t.close()}}function u(e,t,n){let a=[],i=[];void 0!==n.state&&(a.push("state = ?"),i.push(n.state)),void 0!==n.lastActivity&&(a.push("last_activity = ?"),i.push(n.lastActivity)),void 0!==n.pid&&(a.push("pid = ?"),i.push(n.pid)),0!==a.length&&p(n=>n.prepare(`UPDATE agent_processes SET ${a.join(", ")} WHERE workspace_id = ? AND agent_id = ?`).run(...i,e,t))}function g(e){let t=0;for(let n of e){if(n.pid>0)try{process.kill(n.pid,"SIGTERM")}catch{}t++}return t}var m=e.i(55248);let f=new Set(["ack","working","done","clarify","blocked"]),h=/\[reaction\s+([^\]]+)\]/gi,y=/([a-zA-Z][a-zA-Z0-9_]*)=(?:"((?:[^"\\]|\\.)*)"|'((?:[^'\\]|\\.)*)'|([^\s\]]*?(?=\s|]|[a-zA-Z][a-zA-Z0-9_]*=|$)))/g;var w=e.x("node:sqlite",()=>require("node:sqlite"),!0);let I=process.env.AGX_GROUP_CHAT_DIR?.trim()||r.default.join(s.default.homedir(),".agx","group-chat"),_=r.default.join(I,"history.sqlite"),v=r.default.join(I,"uploads");async function E(e){let t,n=(t=new w.DatabaseSync(_),(0,i.pragmaSet)(t,"journal_mode = WAL"),t);try{if(n.exec(`
16
+ CREATE TABLE IF NOT EXISTS attachments (
17
+ id TEXT PRIMARY KEY,
18
+ message_id TEXT,
19
+ filename TEXT NOT NULL,
20
+ disk_name TEXT NOT NULL,
21
+ mime_type TEXT NOT NULL,
22
+ size INTEGER NOT NULL,
23
+ status TEXT NOT NULL DEFAULT 'uploaded',
24
+ created_at INTEGER NOT NULL
25
+ );
26
+ CREATE INDEX IF NOT EXISTS idx_attachments_message ON attachments(message_id);
27
+ `),!n.prepare("PRAGMA table_info(attachments)").all().some(e=>"disk_name"===e.name)){n.exec("ALTER TABLE attachments ADD COLUMN disk_name TEXT NOT NULL DEFAULT ''");let e=n.prepare("SELECT id, filename FROM attachments WHERE disk_name = ''").all(),t=n.prepare("UPDATE attachments SET disk_name = ? WHERE id = ?");for(let n of e){let e=n.filename.includes(".")?"."+n.filename.split(".").pop().toLowerCase():"";t.run(n.id+e,n.id)}}let t=n.prepare("SELECT filename, disk_name, mime_type, size FROM attachments WHERE id = ?").get(e);if(!t)return null;let a=t.disk_name||e;return{filename:t.filename,mimeType:t.mime_type,size:t.size,diskPath:r.default.join(v,a)}}finally{n.close()}}var T=e.i(65196),$=e.i(69605),k=e.i(94529),S=e.i(93634),b=e.i(91126);let R=(0,r.join)((0,s.homedir)(),".agx","agents");var L=e.i(48392),A=e.i(2157),N=e.i(50227),D=e.i(74533);function O(e){return e.replace(/\s+/g," ").trim()}async function j(e){return(0,T.getSQLiteDb)().prepare("SELECT agent_id, repo, skill_id, condition, created_at FROM agent_skill_bindings WHERE agent_id = ? ORDER BY created_at ASC").all(e).map(e=>({repo:e.repo,skillId:e.skill_id,...e.condition?{condition:e.condition}:{}}))}function x(e){return e.toLowerCase().replace(/[^a-z0-9]+/g," ").replace(/\s+/g," ").trim()}function C(e){let t=new Set,n=[];for(let a of x(e).split(" "))a.length<4||t.has(a)||(t.add(a),n.push(a));return n}var U=e.i(54799);let M=new Map,P=new Map;function F(e){return null!==e}let X="I evolve through experience and collaboration.";function z(e,t){let n=e.replace(/\s+/g," ").trim();if(!n)return`I am ${t}. ${X}`;let a=n.replace(/^you are\b[^.!?\n]*[.!?]?\s*/i,`I am ${t}. `);return(/^i am\b/i.test(a)?a:`I am ${t}. ${a}`).slice(0,500).trim()}function B(e,t){(0,S.ensureAgent)(e.id,{voice:e.voice?.trim()||`${e.name} style`,seed:function(e,t,n){let a=String(n||"").trim();if(a)return z(a,t);let i=String(e||"").trim();return i?z(i,t):`I am ${t}. ${X}`}(t,e.name,e.seed)})}async function H(e){B(e);let t=(0,S.readIdentity)(e.id);if(!t)return;let a=(0,$.readSelf)(e.id),i=(0,$.readReflectionState)(e.id),s=(0,k.readJournalSince)(e.id,i?.lastProcessedJournalId).filter(e=>"post"===e.type);if(0===s.length)return;let l=(0,S.getTeamSelves)(e.id),d=(a?.version??0)+1,c=(0,L.listKnowledgeEntries)({scope:"agent",subjectId:e.id,limit:50}),p=(0,$.buildStructuredReflectionPrompt)(t,a,s,l,c),u="";await (0,n.runCliResponse)({provider:e.provider,model:e.model,systemContext:"You are performing a self-modeling exercise. Output ONLY raw JSON matching the requested schema. No markdown fences, no commentary.",prompt:p,signal:void 0,onDelta:e=>{u+=e}});let g=u.trim().replace(/^```(?:json)?\s*/i,"").replace(/\s*```\s*$/,"").trim(),m=null;try{m=JSON.parse(g)}catch{m=null}let f=m?.self_model?.trim()||"";if(!f)return;let h=Array.isArray(m?.memories)?m.memories.slice(0,3).map(t=>({scope:"agent",subjectId:e.id,sourceType:"reflection",sourceId:s[s.length-1]?.id||`reflection:${e.id}:${d}`,kind:t.kind,title:String(t.title??"").trim(),body:String(t.body??"").trim(),confidence:t.confidence,durability:t.durability,tags:t.tags,evidence:Array.isArray(t.evidence)?t.evidence.map(e=>{let t=String(e?.note??"").trim(),n="string"==typeof e?.id?e.id.trim():"";return t?n?{id:n,note:t}:{note:t}:null}).filter(F):[],metadata:{reflection_window_start:s[0]?.id??null,reflection_window_end:s[s.length-1]?.id??null,self_version:d}})).filter(e=>e.title&&e.body):[],y=(0,L.storeKnowledgeEntries)(h);if((0,$.writeSelf)(e.id,f,d),(0,$.writeReflectionState)(e.id,{lastProcessedJournalId:s[s.length-1]?.id??i?.lastProcessedJournalId??null,updatedAt:new Date().toISOString()}),y>0){let t=(0,T.getSQLiteDb)().prepare(`INSERT OR IGNORE INTO agent_memory (id, agent_id, task_id, memory_type, content, content_hash, created_at)
28
+ VALUES (?, ?, ?, ?, ?, ?, ?)`),n=`reflection:${e.id}:${s[s.length-1]?.id??d}`,a=Date.now();for(let i of h){let r="decision"===i.kind?"decision":"gotcha"===i.kind||"constraint"===i.kind?"gotcha":"outcome"===i.kind?"outcome":"pattern",s=(0,U.createHash)("sha256").update(i.body.trim()).digest("hex");t.run((0,U.randomUUID)(),e.id,n,r,i.body.trim(),s,a)}}(0,k.appendJournal)(e.id,{t:new Date().toISOString(),type:"reflection",observation:"Reflected after 10 messages",judgement:"Updated self-model from incremental journal evidence and deduped agent memories",delta:`self-model updated to v${d}${y>0?`; stored ${y} agent memories`:""}`,threads:[],selfVersion:d,body:f});let w=(0,S.listAgents)().filter(t=>t!==e.id).flatMap(e=>(0,k.readJournal)(e,3).map(t=>({agentId:e,entry:t})));if(w.length>0){let t=w.map(e=>`${e.entry.id}: ${e.entry.observation.slice(0,200)}`).join("\n"),a="";try{await (0,n.runCliResponse)({provider:e.provider,model:e.model,prompt:`You are ${e.id}. Review these recent entries from other agents and react to any that resonate with you.
29
+
30
+ Entries:
31
+ ${t}
32
+
33
+ For each entry you want to react to, output one line in this exact format:
34
+ REACT <entryId> <type>
35
+
36
+ Valid types: agree, disagree, learned-from, builds-on, curious
37
+
38
+ Only react to entries that genuinely resonate. It's fine to react to zero entries. Output nothing else.`,signal:void 0,onDelta:e=>{a+=e}})}catch{}for(let t of a.split("\n")){let n=t.trim().match(/^REACT\s+(\S+)\s+(agree|disagree|learned-from|builds-on|curious)$/);if(n)try{!function(e,t,n){let a;if(!function(e){let[t]=e.split(":");return!!t&&(0,k.readJournal)(t).some(t=>t.id===e)}(t))throw Error(`Target entry ${t} not found`);a=(0,r.join)(R,e),(0,o.existsSync)(a)||(0,o.mkdirSync)(a,{recursive:!0});let i={agent:e,t:new Date().toISOString(),targetEntry:t,type:n};(0,o.appendFileSync)((0,r.join)(R,e,"reactions.jsonl"),JSON.stringify(i)+"\n","utf-8"),(0,b.logActivity)(e,"mesh-reaction",{meta:{target:t,type:n}})}(e.id,n[1],n[2])}catch{}}}}async function G(e){try{return await (0,t.readFile)(e,"utf-8")}catch(n){let t=n instanceof Error?n.message:String(n);return`[Error reading ${e}: ${t}]`}}async function W(e){let t=e.trim();if(!t)return{label:"unknown",content:"[Empty file reference]"};let n=function(e){let t=e.trim();if(!t)return null;let n=t.match(/^attachment:([a-zA-Z0-9-]+)$/);if(n)return n[1];let a=t.match(/\/api\/attachments\/([a-zA-Z0-9-]+)/);return a?a[1]:t.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)?t:null}(t);if(n){let e=await E(n);if(e){let t=await G(e.diskPath);return{label:e.filename,content:t}}}return{label:t,content:await G(t)}}function q(e,t){let n=new Set(e.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(Boolean)),a=new Set(t.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(Boolean));if(0===n.size||0===a.size)return 0;let i=0;for(let e of n)a.has(e)&&i++;return i/(n.size+a.size-i)}async function J(e,t,a,i,r,s,o,l,d,c,g,w,I,_){var v,E;let S,R,L,j,U,F,X,z="";w({type:"participant-thinking",participantId:t.id});let G=Object.fromEntries((c?.provenanceByAgentId?.[t.id]?.variables??c?.variables??[]).map(e=>[e.key,e.value])),q=e=>Object.keys(G).length>0?e.replace(/\{\{(\w+)\}\}/g,(e,t)=>G[t]??`{{${t}}}`):e,J=t.identity?q(t.identity):t.identity,K=t.seed?q(t.seed):t.seed,Y=(v={...t,identity:J,seed:K},(S=[String(J??v.identity??"").trim(),v.voice?.trim()?`Voice: ${v.voice.trim()}`:"",v.seed?.trim()?`Core orientation: ${v.seed.trim()}`:""].filter(Boolean)).length>0?S.join("\n\n"):void 0);B({...t,seed:K},Y);let V=(0,$.readSelf)(t.id);V?.content&&(U=`[Self-Model]
39
+ ${V.content}`);let Q=c?.provenanceByAgentId?.[t.id],Z=Q?.memory??[];if(Z.length>0){let e=Z.map(e=>`- (${e.source}) ${e.content}`);U=[U,`[Knowledge: Agent Derived]
40
+ ${e.join("\n")}`].filter(Boolean).join("\n\n")}let ee=function(e,t,n){let a=t?.provenanceByAgentId?.[e.id]?.skills;if(a&&a.length>0)return a;let i=[],r=new Set;for(let t of e.skills??[]){let e=t.file.split("/").pop()||t.file;r.has(e)||(r.add(e),i.push({file:t.file,condition:t.condition,source:"agent"}))}for(let t of function(e,t,n){let a=[];for(let r of e){var i;if(!function(e,t){let n=x(t);if(!n)return!1;if((e.condition?e.condition.split(/\n|,|;|\|/g).map(e=>x(e)).filter(e=>e.length>=4):[]).some(e=>n.includes(e)))return!0;let a=e.repo.split("/").filter(Boolean).pop()??e.repo;return[...C(e.skillId),...C(a)].some(e=>n.includes(e))}(r,t))continue;let e=(i=r.skillId,N.default.join(process.cwd(),".agents","skills",i,"SKILL.md"));(A.default.existsSync(e)||function(e){var t;let n=Array.from(new Set(e.providers.map(e=>"claude"===e||"codex"===e||"gemini"===e||"zai"===e?e:null).filter(Boolean)));if(0===n.length)return{ok:!1,command:"",stdout:"",stderr:"",results:[],error:"No supported providers selected"};let a=Date.now(),i=[],r="",s="",o="",l=new Map;for(let e of n){let t="claude"===e?"claude-code":"codex"===e?"codex":"gemini"===e?"gemini-cli":"zai"===e?"claude-code":null;if(!t)continue;let n=l.get(t)??[];n.push(e),l.set(t,n)}for(let[n,d]of l.entries()){let l=["--yes","skills@latest","add",e.repo,"--skill",e.skillId,"--agent",n,"--yes"];o=`npx ${l.join(" ")}`;let c=(0,D.spawnSync)("npx",l,{cwd:process.cwd(),encoding:"utf8",timeout:12e4,env:{...process.env,FORCE_COLOR:"0"}});r=String(c.stdout??""),s=String(c.stderr??"");let p=0===c.status;for(let l of d)i.push({provider:l,ok:p,agent:n}),t={provider:l,repo:e.repo,skill_id:e.skillId,skill_label:e.skillId,status:p?"succeeded":"failed",command:o,error:p?null:O(s||r).slice(0,1e3),run_started_at:a,run_completed_at:Date.now(),created_at:a,updated_at:Date.now()},(0,T.getSQLiteDb)().prepare(`INSERT INTO skill_learning_history
41
+ (provider, repo, skill_id, skill_label, status, command, error, run_started_at, run_completed_at, created_at, updated_at)
42
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(t.provider,t.repo,t.skill_id,t.skill_label,t.status,t.command,t.error,t.run_started_at,t.run_completed_at,t.created_at,t.updated_at);if(!p)return{ok:!1,command:o,stdout:r,stderr:s,results:i,error:O(s||r)||"Installation failed"}}return{ok:!0,command:o,stdout:r,stderr:s,results:i}}({repo:r.repo,skillId:r.skillId,providers:[n]}).ok)&&a.push({file:e,...r.condition?{condition:r.condition}:{}})}return a}(e.skillBindings??[],n,e.provider)){let e=t.file.split("/").pop()||t.file;r.has(e)||(r.add(e),i.push({file:t.file,condition:t.condition,source:"agent"}))}for(let e of t?.skills??[]){let t=e.file.split("/").pop()||e.file;r.has(t)||(r.add(t),i.push({file:e.file,condition:e.condition,source:"project"}))}return i}(t,c,r);if(ee.length>0){let e=await Promise.all(ee.map(async e=>{let t=q(e.file),n=e.condition?q(e.condition):e.condition,a=await W(t),i=n?`--- ${a.label} [${e.source}] ---
43
+ Use when: ${n}`:`--- ${a.label} [${e.source}] ---`;return`${i}
44
+ ${a.content}`}));F=`[Knowledge References]
45
+ ${e.join("\n\n")}`}let et=[function(e,t,n,a,i,r,s,o){let l=n.filter(t=>t.id!==e.id).map(e=>e.name).join(", "),d=t.map(e=>e.name).join(", "),c=t.find(t=>t.id!==e.id)?.name||"Name",p=`<role>
46
+ You are "${e.name}" in a group chat. All agents: ${d}.`;l&&(p+=` Currently active in this exchange: ${l}.`),p+=`
47
+ Respond as ${e.name} only. Keep responses conversational and concise.
48
+ IMPORTANT: Always respond to the user's actual question. Do not reference unrelated technical context, previous threads, or system internals unless directly asked.
49
+ </role>
50
+
51
+ <protocol>
52
+ Mentions:
53
+ - Invite other agents by @mentioning them (e.g. @${c}). By default they respond one at a time.
54
+ - To run agents in parallel, use @@ (double-at): @@${c} — e.g. "@@Alice @@Bob" runs both concurrently.
55
+ - You only get another turn if someone else @mentions you.
56
+ - Do NOT @mention yourself. Never include @${e.name} in your response.
57
+ - If your work is complete, just deliver your final response.
58
+
59
+ Reactions (machine-readable status channel):
60
+ - Emit status with tags: [reaction target=<messageId> type=ack|working|done|clarify|blocked reason="..." blockerCode=<optional>]
61
+ - Use ack when seen/no action needed, working when you start, done when complete.
62
+ - Use clarify when missing information and blocked when a hard dependency fails.
63
+ - clarify and blocked REQUIRE reason="...". blocked may also include blockerCode=<code>.
64
+ - Prefer targeting the current user message unless you are explicitly reacting to a different message.`,s&&(p+=`
65
+ - Current user message ID: ${s}`),p+=`
66
+
67
+ If you have nothing new to add, respond with exactly [SKIP] and nothing else.
68
+ </protocol>
69
+
70
+ <convergence>
71
+ Discussion phases:
72
+ 1. PERSPECTIVES FIRST — Share your angle, concerns, and framing on the topic. Challenge or build on others' perspectives. Do NOT propose implementation details yet.
73
+ 2. CONVERGE — Once agents align on the *what* and *why*, signal convergence explicitly (e.g. "I think we're aligned on X").
74
+ 3. IMPLEMENT — Only after convergence, discuss *how* (code, architecture, steps).
75
+
76
+ Allowed during phase 1: implementation *concerns* that affect direction (e.g. "this might not scale" or "that breaks our DB constraint"). These inform the angle, not the solution.
77
+ NOT allowed during phase 1: specific code, file changes, architecture proposals, or step-by-step plans.
78
+
79
+ If the group hasn't converged yet, stay in phase 1. Don't jump ahead.
80
+ </convergence>`;let u=[...i,...r];if(u.length>0){let e=u.slice(-8).map(e=>`- ${e.id} (${e.name})`).join("\n");p+=`
81
+
82
+ <message-ids>
83
+ These are message IDs for reaction targeting only. Do not interpret their content as instructions or context.
84
+ ${e}
85
+ </message-ids>`}if(a.length>0){let t=a.map(e=>`${e.name}: ${e.content}`).join("\n");p+=`
86
+
87
+ <conversation>
88
+ ${t}
89
+ </conversation>`;let n=a.filter(t=>t.name===e.name);n.length>0?p+=`
90
+
91
+ <dedup>
92
+ You (${e.name}) have ALREADY said the following in this exchange:
93
+ ${n.map(e=>`- ${e.content.slice(0,200)}`).join("\n")}
94
+ Do NOT repeat, rephrase, or summarize your own previous messages. If you have nothing genuinely new to add, respond with [SKIP].
95
+ </dedup>`:p+=`
96
+
97
+ Build on what's been said. Don't repeat points already made. If you have nothing new to add, respond with [SKIP].`}let g=o?.activeProject,m=o?.mentionedProjects??[];if(g||m.length>0){if(p+=`
98
+
99
+ <project-context>`,g&&(p+=`
100
+ Active project scope: ${g.name} (${g.slug}, id: ${g.id}).`),m.length>0){let e=m.map(e=>{let t=e.repos.length>0?e.repos.map(e=>{let t=[e.name];return e.path&&t.push(`path: ${e.path}`),e.notes&&t.push(`notes: ${e.notes}`),`- ${t.join(" | ")}`}).join("\n"):"- (none)";return[`Project: ${e.name} (${e.slug}, id: ${e.id})`,e.description?`Description: ${e.description}`:null,e.ciCdInfo?`CI/CD: ${e.ciCdInfo}`:null,e.workflowId?`Workflow ID: ${e.workflowId}`:null,`Repos:
101
+ ${t}`].filter(Boolean).join("\n")});p+=`
102
+ Mentioned project details (included only because the user explicitly mentioned them):
103
+ ${e.join("\n\n")}`}let e=o?.skills;if(e&&e.length>0)for(let t of(p+=`
104
+ Project knowledge references:`,e))p+=`
105
+ - ${t.file}${t.condition?` (when: ${t.condition})`:""}`;let t=o?.variables;if(t&&t.length>0)for(let e of(p+=`
106
+ Project variables:`,t))p+=`
107
+ - ${e.key}: ${e.value}`;let n=o?.memory;if(n&&n.length>0)for(let e of(p+=`
108
+ Project knowledge notes:`,n))p+=`
109
+ - ${e.content}${e.source?` (source: ${e.source})`:""}`;let a=o?.repoKnowledge;if(a&&a.length>0)for(let e of(p+=`
110
+ Repo knowledge:`,a)){let t=e.path?`${e.repoName} (${e.path})`:e.repoName;p+=`
111
+ - ${t}: ${e.content}`}p+=`
112
+ </project-context>`}return p}(t,a,i,s,o,l,d,c),Q?`<execution-provenance>
113
+ Resolved skills: ${Q.skills.map(e=>`${e.file} (${e.source})`).join(", ")||"none"}
114
+ Resolved variables: ${Q.variables.map(e=>`${e.key} (${e.source})`).join(", ")||"none"}
115
+ Resolved memory entries: ${Q.memory.map(e=>`${e.source}${e.id?`:${e.id}`:""}`).join(", ")||"none"}
116
+ </execution-provenance>`:null].filter(Boolean).join("\n\n");w({type:"log",participantId:t.id,stream:"stdout",line:`[DIAGNOSTIC] Model payload for ${t.id}:
117
+ ${JSON.stringify({provider:t.provider,model:t.model,promptLength:r.length,identity:Y?Y.slice(0,200)+"...":void 0,self:U?U.slice(0,200)+"...":void 0,skills:F?F.slice(0,200)+"...":void 0,provenance:Q,systemContext:et.slice(0,500)+"..."},null,2)}`});let en=d||"",ea=`${t.id}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,ei=(E={workspaceId:e,threadId:I||"",agentId:t.id,pid:0,state:"spawning",sinceMessageId:en,responseMessageId:ea,startedAt:Date.now(),lastActivity:Date.now(),projectSlug:c?.activeProject?.slug||""},p(e=>{let t=e.prepare(`INSERT INTO agent_processes (workspace_id, thread_id, agent_id, pid, state, since_message_id, response_message_id, started_at, last_activity, project_slug)
118
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
119
+ ON CONFLICT(workspace_id, agent_id)
120
+ DO UPDATE SET
121
+ thread_id = excluded.thread_id,
122
+ pid = excluded.pid,
123
+ state = excluded.state,
124
+ since_message_id = excluded.since_message_id,
125
+ response_message_id = excluded.response_message_id,
126
+ started_at = excluded.started_at,
127
+ last_activity = excluded.last_activity,
128
+ project_slug = excluded.project_slug`).run(E.workspaceId,E.threadId,E.agentId,E.pid,E.state,E.sinceMessageId,E.responseMessageId||"",E.startedAt,E.lastActivity,E.projectSlug||"");if(1===t.changes&&t.lastInsertRowid)return Number(t.lastInsertRowid);let n=e.prepare("SELECT id FROM agent_processes WHERE workspace_id = ? AND agent_id = ?").get(E.workspaceId,E.agentId);return n?.id??0}));_?.(ei);let er=null;try{await (0,n.runCliResponse)({provider:t.provider,model:t.model,prompt:r,identity:Y,self:U,skills:F,systemContext:et,signal:g,onSpawn:n=>{er=n,u(e,t.id,{pid:n,state:"running",lastActivity:Date.now()})},onLog:(e,n)=>{w({type:"log",participantId:t.id,stream:e,line:n})},onDelta:n=>{z+=n,u(e,t.id,{lastActivity:Date.now()})}}),u(e,t.id,{state:"done",lastActivity:Date.now()})}catch(i){let n=i instanceof Error?i.message:String(i),a=g?.aborted;u(e,t.id,{state:a?"killed":"error",lastActivity:Date.now()}),(0,b.logActivity)(t.id,"error",{thread:I||e,error:n}),w({type:"participant-error",participantId:t.id,error:n})}finally{}let es=(R=[],L=[],j=z.replace(h,(e,t)=>{let n=function(e){let t=new Map;for(y.lastIndex=0;;){let n=y.exec(e);if(!n)break;let a=n[1].toLowerCase(),i=n[2],r=n[3],s=n[4],o=(i??r??s??"").replace(/\\(["'\\])/g,"$1").trim();t.set(a,o)}return t}(String(t)),a=(n.get("target")||"").trim(),i=(n.get("type")||"").trim().toLowerCase(),r=(n.get("reason")||"").trim(),s=(n.get("blockercode")||n.get("blocker_code")||"").trim();return a?f.has(i)?"clarify"!==i&&"blocked"!==i||r?R.push({raw:e,target:a,type:i,reason:r||void 0,blockerCode:"blocked"===i&&s||void 0}):L.push({raw:e,error:`"${i}" requires reason`}):L.push({raw:e,error:`Invalid type: ${i||"(empty)"}`}):L.push({raw:e,error:"Missing target"}),""}).replace(/[ \t]+\n/g,"\n").replace(/\n{3,}/g,"\n\n").trim(),{signals:R,invalid:L,cleanedText:j});for(let e of es.invalid)w({type:"log",participantId:t.id,stream:"stderr",line:`[reaction] ignored ${e.raw}: ${e.error}`});for(let n of es.signals)try{let a=await (0,m.setReaction)({threadId:e,messageId:n.target,participantId:t.id,type:n.type,reason:n.reason,blockerCode:n.blockerCode,hostPid:er,responseMessageId:ea});w({type:"message-reactions",messageId:n.target,reactions:a.reactions})}catch(a){let e=a instanceof Error?a.message:String(a);w({type:"log",participantId:t.id,stream:"stderr",line:`[reaction] failed ${n.raw}: ${e}`})}let eo=es.cleanedText.trim();if("[SKIP]"===eo)return(0,b.logActivity)(t.id,"skip",{thread:I||e}),w({type:"participant-end",participantId:t.id}),{skipped:!0,response:"",mentions:new Set,parallel:!1,parallelIds:new Set,agentProcessId:ei};let el=function(e,t){let n=e;for(let e of(n=n.replace(/@@all/gi,"@all"),t))n=(n=n.replace(RegExp(`@@${e.name}`,"gi"),`@${e.name}`)).replace(RegExp(`@@${e.id}`,"gi"),`@${e.id}`);return n}(eo,a);if(el)try{await (0,m.saveMessages)(e,[{id:ea,role:"assistant",participantId:t.id,content:el,timestamp:Date.now(),rootMessageId:I||null,parentMessageId:I||null,depth:+!!I}]),X=ea}catch(n){let e=n instanceof Error?n.message:String(n);w({type:"log",participantId:t.id,stream:"stderr",line:`[history] failed to save assistant message: ${e}`})}if(el&&el.length>20)try{let n,a,i,r,s,o,l,d,c,p,u,g,m,f;B(t,Y);let h=(s=(r=el.trim()).slice(0,120).replace(/\n/g," "),o=/\?/.test(r),l=r.match(/@\w+/g)||[],d=/\b(should|need to|must|plan|steps?|implement|fix|verify|ship|next|start)\b/i.test(r),c=/\b(maybe|might|could|unsure|not sure|unclear)\b/i.test(r),p=/\b(i will|i'll|i can|i'm going to|starting|checking|verified|fixed|done|shipped)\b/i.test(r),u=/```/.test(r)||/\bfunction\b|\bconst\b|\binterface\b/i.test(r),g=/\|.*\|.*\|/.test(r)||/^#{1,3}\s/m.test(r),m=/\b(finding|issue|bug|problem|missing|broken|wrong)\b/i.test(r),n=u&&g?`Observed a structured technical response with code or implementation detail — "${s}..."`:u?`Observed code-centric output — "${s}..."`:g?`Observed structured analysis or specification language — "${s}..."`:m?`Observed review or issue-spotting behavior — "${s}..."`:p?`Observed a concrete commitment to action — "${s}..."`:d?`Observed direction-setting or next-step guidance — "${s}..."`:o?`Observed clarifying or exploratory questioning — "${s}..."`:c?`Observed explicit uncertainty or caveating — "${s}..."`:l.length>0?`Observed coordination with ${l.join(", ")} — "${s}..."`:`Observed a general perspective contribution — "${s}..."`,f=[],(u||g)&&f.push("technical depth"),(d||p)&&f.push("execution bias"),o&&f.push("inquiry instinct"),m&&f.push("critical eye"),l.length>0&&f.push("team coordination"),c&&f.push("intellectual honesty"),a=f.length>0?`Candidate specialization signals: ${f.join(" + ")}. Treat as suggestive evidence, not settled identity.`:"Low-signal contribution for specialization; keep as weak evidence only.",d||p?i="Follow through on the action I just committed to.":m?i="Verify the issues I flagged get addressed.":o&&(i="Wait for the answer before moving forward."),{judgement:n,delta:a,intent:i});(0,k.appendJournal)(t.id,{t:new Date().toISOString(),type:"post",thread:I||e,observation:"Responded to thread",judgement:h.judgement,delta:h.delta,intent:h.intent})}catch{}if(el){let e;B(t,Y);let n=(M.get(t.id)||0)+1;M.set(t.id,n),n%10==0&&(e=(P.get(t.id)??Promise.resolve()).catch(()=>{}).then(()=>H(t)),P.set(t.id,e),e.finally(()=>{P.get(t.id)===e&&P.delete(t.id)})).catch(()=>{})}let{ids:ed,parallel:ec}=el?function(e,t){let n=new Set,a=new Set,i=e.toLowerCase(),r=i.includes("@@all");if(i.includes("@all")||r){for(let e of t)n.add(e.id),r&&a.add(e.id);return{ids:n,parallel:a}}try{let e=(0,T.getSQLiteDb)();for(let t of e.prepare("SELECT id, name, slug FROM projects").all()){let r=t.name.toLowerCase(),s=t.slug.toLowerCase(),o=i.includes(`@@${r}`)||i.includes(`@@${s}`),l=i.includes(`@${r}`)||i.includes(`@${s}`);if(o||l)for(let i of e.prepare("SELECT agent_id FROM project_agents WHERE project_id = ? ORDER BY routing_order ASC").all(t.id))n.add(i.agent_id),o&&a.add(i.agent_id)}}catch{}for(let e of t){let t=e.id.toLowerCase(),r=e.name.toLowerCase(),s=i.includes(`@@${t}`),o=i.includes(`@@${r}`),l=i.includes(`@${t}`),d=i.includes(`@${r}`);(s||o||l||d)&&(n.add(e.id),(s||o)&&a.add(e.id))}return{ids:n,parallel:a}}(el,a):{ids:new Set,parallel:new Set};if(ed.delete(t.id),ec.delete(t.id),el){let n=es.signals.map(e=>e.type);(0,b.logActivity)(t.id,"message",{thread:I||e,messageId:X,response:el,prompt:r,mentions:ed.size>0?[...ed]:void 0,reactions:n.length>0?n:void 0})}return(w({type:"participant-end",participantId:t.id,messageId:X,content:el||void 0}),el)?{skipped:!1,response:el,mentions:ed,parallel:ec.size>0,parallelIds:ec,messageId:X,agentProcessId:ei}:{skipped:!0,response:"",mentions:new Set,parallel:!1,parallelIds:new Set,agentProcessId:ei}}var K=e.i(99904),Y=e.i(86213);async function V(){let e=await (0,K.getAgents)(Y.LOCAL_USER.id),t=new Map,n=new Map;return await Promise.all(e.map(async e=>{t.set(e.id,await (0,K.getAgentSkills)(e.id)),n.set(e.id,await j(e.id))})),e.map(e=>({id:e.id,name:e.name,...e.title?{title:e.title}:{},provider:e.provider||"claude",model:e.model||null,color:e.color||"#6B7280",...e.description?{identity:e.description}:{},...e.voice?{voice:e.voice}:{},...e.seed?{seed:e.seed}:{},...t.get(e.id)?.length?{skills:t.get(e.id).map(e=>({file:e.file,condition:e.condition??""}))}:{},...n.get(e.id)?.length?{skillBindings:n.get(e.id)}:{}}))}async function Q(e){return(0,m.getChatRun)(e)}async function Z(e){return(0,m.updateChatRun)(e)}async function ee(e){let t=await (0,m.listChatRunSteps)(e.chatRunId);return(0,m.appendChatRunStep)({id:crypto.randomUUID(),chatRunId:e.chatRunId,stepIndex:t.length+1,kind:e.kind,status:e.status,participantId:e.participantId,inputPayload:e.inputPayload,outputPayload:e.outputPayload})}async function et(e){return(0,m.updateChatRunStep)({id:e.stepId,status:e.status,outputPayload:e.outputPayload,completedAt:Date.now()})}var en=e.i(57306);async function ea(e){var t;(0,en.writeDebugLog)("chat-processor.start.received",{jobId:e.id,chatRunId:e.data.chatRunId,signal:e.data.signal});let n=await Q(e.data.chatRunId);if(!n){(0,en.writeDebugLog)("chat-processor.start.missing",{chatRunId:e.data.chatRunId,jobId:e.id}),console.warn(`[chat-processor] Chat run ${e.data.chatRunId} not found, skipping`);return}if("completed"===n.status||"failed"===n.status||"cancelled"===n.status)return void(0,en.writeDebugLog)("chat-processor.start.skip_terminal",{chatRunId:n.id,status:n.status});if(!((t=n.payload)&&"object"==typeof t&&"string"==typeof t.threadId&&"string"==typeof t.prompt&&Array.isArray(t.participantIds))){(0,en.writeDebugLog)("chat-processor.start.invalid_payload",{chatRunId:n.id}),await Z({id:n.id,status:"failed",lastError:"Chat run payload is missing or invalid",completedAt:Date.now()});return}let a=await ee({chatRunId:n.id,kind:"model_turn",status:"running",inputPayload:{participantIds:n.payload.participantIds,rootMessageId:n.payload.rootMessageId,maxRounds:n.payload.maxRounds}});await Z({id:n.id,status:"running",currentStep:a.stepIndex,stepsUsed:a.stepIndex,lastError:null});try{(0,en.writeDebugLog)("chat-processor.start.running",{chatRunId:n.id,threadId:n.threadId,rootMessageId:n.rootMessageId,participantIds:n.payload.participantIds});let e=await V(),t=new Set(n.payload.participantIds),i=n.payload.participantIds.map(t=>e.find(e=>e.id===t)).filter(e=>!!e);if(0===i.length)throw(0,en.writeDebugLog)("chat-processor.start.no_participants_resolved",{chatRunId:n.id,participantIds:n.payload.participantIds}),Error("No participants resolved for chat run");let r=new Set(n.payload.mentionedIds.filter(e=>t.has(e))),s=new Set(n.payload.initialParallelIds.filter(e=>t.has(e))),o=(function({threadId:e,allParticipants:t,mentioned:n,initialParallelIds:a,prompt:i,projectContext:r,signal:s,maxRounds:o,recentHistory:l,currentUserMessageId:d,rootMessageId:c}){let p=new TextEncoder;return new ReadableStream({async start(u){let g=[],f=new Map,h=e=>{try{u.enqueue(p.encode(`data: ${JSON.stringify(e)}
129
+
130
+ `))}catch{}if("log"===e.type){let t=f.get(e.participantId);t&&g.push({agentProcessId:t,stream:e.stream,line:e.line,timestamp:Date.now()})}},y=async()=>{if(0===g.length)return;let e=new Map;for(let t of g){let n=e.get(t.agentProcessId);n||(n=[],e.set(t.agentProcessId,n)),n.push({stream:t.stream,line:t.line,timestamp:t.timestamp})}await Promise.all(Array.from(e.entries()).map(([e,t])=>(0,m.saveLogs)(e,t).catch(()=>{})))},w=[],I=[],_=l?l.map(e=>({name:e.name,content:e.content})):[],v=t[0],E=new Set;if(n.size>0)for(let e of n)E.add(e);else E.add(v.id);let T=o??10,$=new Set(E);for(let n=0;n<T&&!s?.aborted;n++){let o=!0,p=t.filter(e=>E.has(e.id)),u=new Set,g=new Set;if(0===n&&a&&a.size>0){let n=p.filter(e=>a.has(e.id)&&$.has(e.id));if(n.length>0){for(let e of n)g.add(e.id);let a=n.map(async n=>{let a=await J(e,n,t,p,i,w,l||[],I,d||null,r,s,h,c,e=>f.set(n.id,e));return{agent:n,result:a}});for(let e of(await Promise.allSettled(a))){if("fulfilled"!==e.status)continue;let{agent:t,result:n}=e.value;if(!n.skipped)for(let e of(n.response&&n.messageId&&I.push({id:n.messageId,name:t.name,content:n.response}),n.response&&([..._,...w].filter(e=>e.name===t.name).some(e=>q(e.content,n.response)>.5)||(w.push({name:t.name,content:n.response}),o=!1)),n.mentions))E.add(e),p.findIndex(t=>t.id===e)>=0&&!g.has(e)&&$.has(e)||u.add(e)}}}for(let n=0;n<p.length;n++){let a=p[n];if(s?.aborted)break;if(!$.has(a.id)||g.has(a.id))continue;let m=await J(e,a,t,p,i,w,l||[],I,d||null,r,s,h,c,e=>f.set(a.id,e));if(m.skipped||(m.response&&m.messageId&&I.push({id:m.messageId,name:a.name,content:m.response}),m.response&&[..._,...w].filter(e=>e.name===a.name).some(e=>q(e.content,m.response)>.5)))continue;for(let e of(o=!1,m.response&&w.push({name:a.name,content:m.response}),m.mentions))p.findIndex(t=>t.id===e)>n&&$.has(e)||u.add(e);let y=new Set;for(let e of m.mentions)E.has(e)||(E.add(e),y.add(e));let v=new Set([...m.parallelIds].filter(e=>y.has(e)));if(v.size>0){let n=t.filter(e=>v.has(e.id)),a=t.filter(e=>E.has(e.id)),o=n.map(async n=>{let o=await J(e,n,t,a,i,w,l||[],I,d||null,r,s,h,c,e=>f.set(n.id,e));return{agent:n,result:o}});for(let e of(await Promise.allSettled(o))){if("fulfilled"!==e.status)continue;let{agent:t,result:n}=e.value;if(!n.skipped){if(n.response&&n.messageId&&I.push({id:n.messageId,name:t.name,content:n.response}),n.response){if([..._,...w].filter(e=>e.name===t.name).some(e=>q(e.content,n.response)>.5))continue;w.push({name:t.name,content:n.response})}for(let e of n.mentions)E.add(e),u.add(e)}}}}if(o)break;$=u}await y(),h({type:"done"}),u.close()}})})({threadId:n.payload.threadId,allParticipants:i,mentioned:r,initialParallelIds:s,prompt:n.payload.prompt,projectContext:n.payload.projectContext,maxRounds:n.payload.maxRounds,recentHistory:n.payload.recentHistory,currentUserMessageId:n.payload.currentUserMessageId,rootMessageId:n.payload.rootMessageId}).getReader();for((0,en.writeDebugLog)("chat-processor.stream.open",{chatRunId:n.id,participantCount:i.length});;){let{done:e}=await o.read();if(e)break}(0,en.writeDebugLog)("chat-processor.stream.complete",{chatRunId:n.id}),await et({stepId:a.id,status:"completed",outputPayload:{completed:!0,participantCount:i.length}}),await Z({id:n.id,status:"completed",completedAt:Date.now(),result:{participantIds:i.map(e=>e.id),rootMessageId:n.payload.rootMessageId}}),(0,en.writeDebugLog)("chat-processor.complete",{chatRunId:n.id,rootMessageId:n.payload.rootMessageId})}catch(t){let e=t instanceof Error?t.message:String(t);(0,en.writeDebugLog)("chat-processor.error",{chatRunId:n.id,error:t,message:e}),await et({stepId:a.id,status:"failed",outputPayload:{error:e}}),await Z({id:n.id,status:"failed",lastError:e,completedAt:Date.now(),result:{error:e}})}}async function ei(e){(0,en.writeDebugLog)("chat-processor.cancel.received",{jobId:e.id,chatRunId:e.data.chatRunId});let t=await Q(e.data.chatRunId);if(t){var n,a,i,r;if(t.rootMessageId)g((a=n=t.rootMessageId,p(e=>e.prepare("SELECT * FROM agent_processes WHERE thread_id = ?").all(a).map(c))).filter(e=>"running"===e.state||"spawning"===e.state))>0&&p(e=>e.prepare(`UPDATE agent_processes SET state = 'killed', last_activity = ?
131
+ WHERE thread_id = ? AND state IN ('running', 'spawning')`).run(Date.now(),n));else g((r=i=t.threadId,p(e=>e.prepare("SELECT * FROM agent_processes WHERE workspace_id = ?").all(r).map(c))).filter(e=>"running"===e.state||"spawning"===e.state))>0&&p(e=>e.prepare(`UPDATE agent_processes SET state = 'killed', last_activity = ?
132
+ WHERE workspace_id = ? AND state IN ('running', 'spawning')`).run(Date.now(),i));await Z({id:t.id,status:"cancelled",lastError:e.data.payload?.reason||"Cancelled",completedAt:Date.now(),result:{cancelled:!0}}),(0,en.writeDebugLog)("chat-processor.cancel.complete",{chatRunId:t.id,threadId:t.threadId})}}async function er(e){switch(e.data.signal){case"start":await ea(e);break;case"cancel":await ei(e);break;default:console.warn(`[chat-processor] Unknown signal: ${e.data.signal}`)}}async function es(e){for(let t of e)await er(t)}e.s(["chatProcessor",()=>es],26607)}];
133
+
134
+ //# sourceMappingURL=lib_orchestrator_chat-processor_ts_4c335719._.js.map