@mndrk/agx 2.0.7 → 2.0.8

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 (108) hide show
  1. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/build-manifest.json +2 -2
  3. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/prerender-manifest.json +3 -3
  4. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.html +2 -2
  5. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.rsc +1 -1
  6. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.html +2 -2
  12. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.rsc +1 -1
  13. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/memories/route.js +1 -1
  20. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.html +2 -2
  21. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.rsc +1 -1
  22. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_full.segment.rsc +1 -1
  23. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_head.segment.rsc +1 -1
  24. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_index.segment.rsc +1 -1
  25. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_tree.segment.rsc +1 -1
  26. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  27. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/board.segment.rsc +1 -1
  28. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.html +2 -2
  29. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.rsc +1 -1
  30. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_full.segment.rsc +1 -1
  31. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_index.segment.rsc +1 -1
  33. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_tree.segment.rsc +1 -1
  34. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +1 -1
  35. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  36. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.html +2 -2
  37. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.rsc +1 -1
  38. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  39. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_full.segment.rsc +1 -1
  40. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_head.segment.rsc +1 -1
  41. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_index.segment.rsc +1 -1
  42. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  43. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.html +1 -1
  44. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.rsc +1 -1
  45. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_full.segment.rsc +1 -1
  46. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  47. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_index.segment.rsc +1 -1
  48. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_tree.segment.rsc +1 -1
  49. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  50. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  51. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  52. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.html +2 -2
  53. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.rsc +1 -1
  54. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_full.segment.rsc +1 -1
  55. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  56. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_index.segment.rsc +1 -1
  57. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
  58. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  59. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  60. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.html +2 -2
  61. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.rsc +1 -1
  62. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  63. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  64. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  65. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  66. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  67. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  68. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.html +2 -2
  69. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.rsc +1 -1
  70. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_full.segment.rsc +1 -1
  71. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_head.segment.rsc +1 -1
  72. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_index.segment.rsc +1 -1
  73. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_tree.segment.rsc +1 -1
  74. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  75. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/status.segment.rsc +1 -1
  76. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.html +2 -2
  77. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.rsc +1 -1
  78. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_full.segment.rsc +1 -1
  79. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
  80. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_index.segment.rsc +1 -1
  81. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_tree.segment.rsc +1 -1
  82. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +1 -1
  83. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
  84. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/Projects_Agents_agx-cloud_lib_6041e016._.js +3 -3
  85. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/Projects_Agents_agx-cloud_lib_6a5d1c80._.js +3 -3
  86. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/Projects_Agents_agx-cloud_lib_8c82981b._.js +3 -3
  87. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__3dfd0006._.js +3 -3
  88. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__45d4a92e._.js +8 -8
  89. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__5d4e1eab._.js +8 -8
  90. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__7fae991f._.js +3 -3
  91. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__ab726f81._.js +1 -1
  92. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__ba50bf22._.js +3 -3
  93. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__bca6e014._.js +3 -3
  94. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__d5556385._.js +3 -3
  95. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/middleware-manifest.json +5 -5
  96. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/404.html +1 -1
  97. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/500.html +2 -2
  98. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.js +1 -1
  99. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.json +1 -1
  100. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/system/db-status/route.ts +2 -1
  101. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/queue/sqlite-adapter.ts +4 -1
  102. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/sqlite-query-adapter.ts +4 -1
  103. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/mcp/src/db.ts +3 -1
  104. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/worker/index.js +7 -3
  105. package/package.json +1 -1
  106. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{_k0qMSp_wt43lYxOSQ90f → DBFP0iucH38AmdVfc-Cwr}/_buildManifest.js +0 -0
  107. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{_k0qMSp_wt43lYxOSQ90f → DBFP0iucH38AmdVfc-Cwr}/_clientMiddlewareManifest.json +0 -0
  108. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{_k0qMSp_wt43lYxOSQ90f → DBFP0iucH38AmdVfc-Cwr}/_ssgManifest.js +0 -0
@@ -1,11 +1,11 @@
1
- module.exports=[41381,41754,e=>{"use strict";let t={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["LOCAL_USER",0,t],41381);var r=e.i(17920),n=e.i(22734),o=e.i(14747),i=e.i(24246);class a{expr;constructor(e){this.expr=e}}function s(e){return new a(e)}let l=null;function d(){if(l)return l;let e=process.env.SQLITE_DB_PATH||o.default.join(process.cwd(),"agx-board.db");n.default.existsSync(e),l=new r.default(e);let t=(0,i.validateSQLiteEnvironment)(l,e);if(t.length>0){let e=t.map(e=>` - ${e.message}${e.fix?` (fix: ${e.fix})`:""}`);throw Error(`SQLite startup validation failed:
2
- ${e.join("\n")}`)}return function(e){let t=o.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)}(l),l}let u=new Set(["definition","depends_on","input","metadata","models","open_blockers","output","payload","run_index","stage_decisions","swarm_models"]);function c(e){return void 0===e?null:e instanceof Date?e.toISOString():e&&"object"==typeof e?JSON.stringify(e):e}function p(e,t){return null==t?null:t instanceof Date?t.toISOString():u.has(e)?JSON.stringify(t):c(t)}function f(e){let t=(e||"*").trim();if(!t||"*"===t)return{columns:["*"],includeProjectRepos:!1};let r=t.includes("project_repos(*)"),n=t.replace(/project_repos\(\*\)/g,"").split(",").map(e=>e.trim()).filter(Boolean);return 0===n.length?{columns:["*"],includeProjectRepos:r}:{columns:n,includeProjectRepos:r}}class g{table;operation="select";filters=[];orderSpecs=[];limitValue=null;selectColumns="*";returningColumns=null;singleMode="none";payload=null;upsertOptions=null;constructor(e){this.table=e}select(e="*"){return"select"===this.operation?this.selectColumns=e:this.returningColumns=e||"*",this}insert(e){return this.operation="insert",this.payload=e,this}update(e){return this.operation="update",this.payload=e,this}delete(){return this.operation="delete",this}upsert(e,t){return this.operation="upsert",this.payload=e,this.upsertOptions=t||{},this}eq(e,t){return this.filters.push({op:"eq",column:e,value:t}),this}neq(e,t){return this.filters.push({op:"neq",column:e,value:t}),this}gt(e,t){return this.filters.push({op:"gt",column:e,value:t}),this}gte(e,t){return this.filters.push({op:"gte",column:e,value:t}),this}lt(e,t){return this.filters.push({op:"lt",column:e,value:t}),this}lte(e,t){return this.filters.push({op:"lte",column:e,value:t}),this}is(e,t){return this.filters.push({op:"is",column:e,value:t}),this}in(e,t){return this.filters.push({op:"in",column:e,value:t||[]}),this}contains(e,t){return this.filters.push({op:"contains",column:e,value:t}),this}or(e){return this.filters.push({op:"or",expression:e}),this}order(e,t){return this.orderSpecs.push({column:e,...t||{}}),this}limit(e){return this.limitValue=e,this}single(){return this.singleMode="single",this.execute()}maybeSingle(){return this.singleMode="maybeSingle",this.execute()}then(e,t){return this.execute().then(e,t)}buildWhere(e,t){for(let r of this.filters){if("or"===r.op){let n=r.expression.split(",").map(e=>e.trim()).filter(Boolean).map(e=>{var r;let[n,o,...i]=e.split("."),a="true"===(r=i.join("."))||"false"!==r&&("null"===r?null:r);return"eq"===o?(t.push(c(a)),`${n} = ?`):"neq"===o?(t.push(c(a)),`${n} <> ?`):"is"===o?null===a?`${n} IS NULL`:(t.push(c(a)),`${n} IS ?`):"ilike"===o||"like"===o?(t.push(c(a)),`${n} LIKE ?`):"1=1"});n.length>0&&e.push(`(${n.join(" OR ")})`);continue}if("eq"===r.op)t.push(c(r.value)),e.push(`${r.column} = ?`);else if("neq"===r.op)t.push(c(r.value)),e.push(`${r.column} <> ?`);else if("gt"===r.op)t.push(c(r.value)),e.push(`${r.column} > ?`);else if("gte"===r.op)t.push(c(r.value)),e.push(`${r.column} >= ?`);else if("lt"===r.op)t.push(c(r.value)),e.push(`${r.column} < ?`);else if("lte"===r.op)t.push(c(r.value)),e.push(`${r.column} <= ?`);else if("is"===r.op)null===r.value?e.push(`${r.column} IS NULL`):(t.push(c(r.value)),e.push(`${r.column} IS ?`));else if("contains"===r.op){let n=(r.value||[]).map(c);if(0===n.length)e.push("1=1");else{let o=n.map(()=>"?").join(", ");t.push(...n),e.push(`(SELECT COUNT(*) FROM json_each(${r.column}) WHERE json_each.value IN (${o})) = ${n.length}`)}}else if("in"===r.op)if(r.value&&0!==r.value.length){let n=(r.value||[]).map(c),o=n.map(()=>"?").join(", ");t.push(...n),e.push(`${r.column} IN (${o})`)}else e.push("1=0")}}executeSelect(){try{let e=d(),{columns:t,includeProjectRepos:r}=f(this.selectColumns),n=[],o=[];this.buildWhere(o,n);let i=`SELECT ${t.join(", ")} FROM ${this.table}`;if(o.length>0&&(i+=` WHERE ${o.join(" AND ")}`),this.orderSpecs.length>0){let e=this.orderSpecs.map(e=>{let t=!1===e.ascending?"DESC":"ASC";return!0===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 0 ELSE 1 END, ${e.column} ${t}`:!1===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 1 ELSE 0 END, ${e.column} ${t}`:`${e.column} ${t}`}).join(", ");i+=` ORDER BY ${e}`}"number"==typeof this.limitValue&&(n.push(this.limitValue),i+=" LIMIT ?");let a=e.prepare(i).all(...n);if(a=a.map(w),r&&"projects"===this.table&&a.length>0){let t=a.map(e=>e.id).filter(Boolean);if(t.length>0){let r=t.map(()=>"?").join(", "),n=e.prepare(`SELECT * FROM project_repos WHERE project_id IN (${r})`).all(...t),o=new Map;for(let e of n){let t=o.get(e.project_id)||[];t.push(e),o.set(e.project_id,t)}a=a.map(e=>({...e,project_repos:o.get(e.id)||[]}))}}if("single"===this.singleMode){if(0===a.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:a[0],error:null}}if("maybeSingle"===this.singleMode)return{data:a[0]||null,error:null};return{data:a,error:null}}catch(e){return{data:null,error:e}}}executeInsertOrUpsert(){try{let e,t=d(),r=Array.isArray(this.payload)?this.payload:[this.payload];if(!r.length)return{data:[],error:null};let n=Array.from(r.reduce((e,t)=>{for(let r of Object.keys(t||{}))e.add(r);return e},new Set)),o=[],i=r.map(e=>{let t=n.map(t=>(o.push(p(t,e[t])),"?"));return`(${t.join(", ")})`}),a=`INSERT INTO ${this.table} (${n.join(", ")}) VALUES ${i.join(", ")}`;if("upsert"===this.operation){let e=this.upsertOptions?.onConflict||"",t=String(e).split(",").map(e=>e.trim()).filter(Boolean);if(t.length>0)if(this.upsertOptions?.ignoreDuplicates)a+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`;else{let e=n.filter(e=>!t.includes(e)).map(e=>`${e} = EXCLUDED.${e}`);e.length>0?a+=` ON CONFLICT (${t.join(", ")}) DO UPDATE SET ${e.join(", ")}`:a+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`}}if(this.returningColumns){let{columns:e}=f(this.returningColumns);a+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(a).all(...o)).map(w):(t.prepare(a).run(...o),e=[]);let s=this.returningColumns?e:null;if("single"===this.singleMode||"maybeSingle"===this.singleMode)return{data:s&&s[0]||null,error:null};return{data:s,error:null}}catch(e){return{data:null,error:e}}}executeUpdateOrDelete(){try{let e,t=d(),r=[],n=[],o=[];this.buildWhere(o,n);let i="";if("update"===this.operation){let e=Object.keys(this.payload||{}).map(e=>{let t=this.payload[e];return t instanceof a?`${e} = ${t.expr}`:(r.push(p(e,t)),`${e} = ?`)});i=`UPDATE ${this.table} SET ${e.join(", ")}`}else i=`DELETE FROM ${this.table}`;o.length>0&&(i+=` WHERE ${o.join(" AND ")}`);let s=[...r,...n];if(this.returningColumns){let{columns:e}=f(this.returningColumns);i+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(i).all(...s)).map(w):(t.prepare(i).run(...s),e=[]);let l=this.returningColumns?e:null;if("single"===this.singleMode){if(!l||0===l.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:l[0],error:null}}if("maybeSingle"===this.singleMode)return{data:l?.[0]||null,error:null};return{data:l,error:null}}catch(e){return{data:null,error:e}}}async execute(){return"select"===this.operation?this.executeSelect():"insert"===this.operation||"upsert"===this.operation?this.executeInsertOrUpsert():this.executeUpdateOrDelete()}}let m=new Set([...u,"depends_on","open_blockers","swarm_models","run_index","stage_decisions","definition","metadata","models","config","policy","done_criteria","outputs","task_snapshot","data_mapping"]);function w(e){if(!e||"object"!=typeof e)return e;let t={...e};for(let e of Object.keys(t)){if(m.has(e)&&"string"==typeof t[e])try{t[e]=JSON.parse(t[e])}catch{}("swarm"===e||"is_default"===e||"is_public"===e||"had_graph_before"===e)&&(0===t[e]?t[e]=!1:1===t[e]&&(t[e]=!0))}return t}function h(){return{from:e=>new g(e),auth:{getUser:async()=>({data:{user:{id:t.id,email:t.email,user_metadata:{name:t.name,full_name:t.name}}},error:null}),exchangeCodeForSession:async()=>({error:null}),refreshSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600},user:{id:t.id,email:t.email}},error:null})},async rpc(e,t){if("check_rate_limit"!==e)return{data:null,error:{message:`Unsupported rpc: ${e}`}};let r=d(),n=t.p_user_id,o=t.p_endpoint,i=Number(t.p_limit||60),a=Number(t.p_window_seconds||60),s=new Date(Math.floor(new Date().getTime()/(1e3*a))*a*1e3);try{let e=`
1
+ module.exports=[41381,41754,e=>{"use strict";let t={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["LOCAL_USER",0,t],41381);var r=e.i(17920),n=e.i(22734),o=e.i(14747),i=e.i(46786),a=e.i(24246);let s=process.env.AGX_DATA_DIR||o.default.join(i.default.homedir(),".agx");class l{expr;constructor(e){this.expr=e}}function d(e){return new l(e)}let u=null;function c(){if(u)return u;let e=process.env.SQLITE_DB_PATH||o.default.join(s,"agx-board.db");n.default.existsSync(e),u=new r.default(e);let t=(0,a.validateSQLiteEnvironment)(u,e);if(t.length>0){let e=t.map(e=>` - ${e.message}${e.fix?` (fix: ${e.fix})`:""}`);throw Error(`SQLite startup validation failed:
2
+ ${e.join("\n")}`)}return function(e){let t=o.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)}(u),u}let p=new Set(["definition","depends_on","input","metadata","models","open_blockers","output","payload","run_index","stage_decisions","swarm_models"]);function f(e){return void 0===e?null:e instanceof Date?e.toISOString():e&&"object"==typeof e?JSON.stringify(e):e}function g(e,t){return null==t?null:t instanceof Date?t.toISOString():p.has(e)?JSON.stringify(t):f(t)}function m(e){let t=(e||"*").trim();if(!t||"*"===t)return{columns:["*"],includeProjectRepos:!1};let r=t.includes("project_repos(*)"),n=t.replace(/project_repos\(\*\)/g,"").split(",").map(e=>e.trim()).filter(Boolean);return 0===n.length?{columns:["*"],includeProjectRepos:r}:{columns:n,includeProjectRepos:r}}class w{table;operation="select";filters=[];orderSpecs=[];limitValue=null;selectColumns="*";returningColumns=null;singleMode="none";payload=null;upsertOptions=null;constructor(e){this.table=e}select(e="*"){return"select"===this.operation?this.selectColumns=e:this.returningColumns=e||"*",this}insert(e){return this.operation="insert",this.payload=e,this}update(e){return this.operation="update",this.payload=e,this}delete(){return this.operation="delete",this}upsert(e,t){return this.operation="upsert",this.payload=e,this.upsertOptions=t||{},this}eq(e,t){return this.filters.push({op:"eq",column:e,value:t}),this}neq(e,t){return this.filters.push({op:"neq",column:e,value:t}),this}gt(e,t){return this.filters.push({op:"gt",column:e,value:t}),this}gte(e,t){return this.filters.push({op:"gte",column:e,value:t}),this}lt(e,t){return this.filters.push({op:"lt",column:e,value:t}),this}lte(e,t){return this.filters.push({op:"lte",column:e,value:t}),this}is(e,t){return this.filters.push({op:"is",column:e,value:t}),this}in(e,t){return this.filters.push({op:"in",column:e,value:t||[]}),this}contains(e,t){return this.filters.push({op:"contains",column:e,value:t}),this}or(e){return this.filters.push({op:"or",expression:e}),this}order(e,t){return this.orderSpecs.push({column:e,...t||{}}),this}limit(e){return this.limitValue=e,this}single(){return this.singleMode="single",this.execute()}maybeSingle(){return this.singleMode="maybeSingle",this.execute()}then(e,t){return this.execute().then(e,t)}buildWhere(e,t){for(let r of this.filters){if("or"===r.op){let n=r.expression.split(",").map(e=>e.trim()).filter(Boolean).map(e=>{var r;let[n,o,...i]=e.split("."),a="true"===(r=i.join("."))||"false"!==r&&("null"===r?null:r);return"eq"===o?(t.push(f(a)),`${n} = ?`):"neq"===o?(t.push(f(a)),`${n} <> ?`):"is"===o?null===a?`${n} IS NULL`:(t.push(f(a)),`${n} IS ?`):"ilike"===o||"like"===o?(t.push(f(a)),`${n} LIKE ?`):"1=1"});n.length>0&&e.push(`(${n.join(" OR ")})`);continue}if("eq"===r.op)t.push(f(r.value)),e.push(`${r.column} = ?`);else if("neq"===r.op)t.push(f(r.value)),e.push(`${r.column} <> ?`);else if("gt"===r.op)t.push(f(r.value)),e.push(`${r.column} > ?`);else if("gte"===r.op)t.push(f(r.value)),e.push(`${r.column} >= ?`);else if("lt"===r.op)t.push(f(r.value)),e.push(`${r.column} < ?`);else if("lte"===r.op)t.push(f(r.value)),e.push(`${r.column} <= ?`);else if("is"===r.op)null===r.value?e.push(`${r.column} IS NULL`):(t.push(f(r.value)),e.push(`${r.column} IS ?`));else if("contains"===r.op){let n=(r.value||[]).map(f);if(0===n.length)e.push("1=1");else{let o=n.map(()=>"?").join(", ");t.push(...n),e.push(`(SELECT COUNT(*) FROM json_each(${r.column}) WHERE json_each.value IN (${o})) = ${n.length}`)}}else if("in"===r.op)if(r.value&&0!==r.value.length){let n=(r.value||[]).map(f),o=n.map(()=>"?").join(", ");t.push(...n),e.push(`${r.column} IN (${o})`)}else e.push("1=0")}}executeSelect(){try{let e=c(),{columns:t,includeProjectRepos:r}=m(this.selectColumns),n=[],o=[];this.buildWhere(o,n);let i=`SELECT ${t.join(", ")} FROM ${this.table}`;if(o.length>0&&(i+=` WHERE ${o.join(" AND ")}`),this.orderSpecs.length>0){let e=this.orderSpecs.map(e=>{let t=!1===e.ascending?"DESC":"ASC";return!0===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 0 ELSE 1 END, ${e.column} ${t}`:!1===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 1 ELSE 0 END, ${e.column} ${t}`:`${e.column} ${t}`}).join(", ");i+=` ORDER BY ${e}`}"number"==typeof this.limitValue&&(n.push(this.limitValue),i+=" LIMIT ?");let a=e.prepare(i).all(...n);if(a=a.map(y),r&&"projects"===this.table&&a.length>0){let t=a.map(e=>e.id).filter(Boolean);if(t.length>0){let r=t.map(()=>"?").join(", "),n=e.prepare(`SELECT * FROM project_repos WHERE project_id IN (${r})`).all(...t),o=new Map;for(let e of n){let t=o.get(e.project_id)||[];t.push(e),o.set(e.project_id,t)}a=a.map(e=>({...e,project_repos:o.get(e.id)||[]}))}}if("single"===this.singleMode){if(0===a.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:a[0],error:null}}if("maybeSingle"===this.singleMode)return{data:a[0]||null,error:null};return{data:a,error:null}}catch(e){return{data:null,error:e}}}executeInsertOrUpsert(){try{let e,t=c(),r=Array.isArray(this.payload)?this.payload:[this.payload];if(!r.length)return{data:[],error:null};let n=Array.from(r.reduce((e,t)=>{for(let r of Object.keys(t||{}))e.add(r);return e},new Set)),o=[],i=r.map(e=>{let t=n.map(t=>(o.push(g(t,e[t])),"?"));return`(${t.join(", ")})`}),a=`INSERT INTO ${this.table} (${n.join(", ")}) VALUES ${i.join(", ")}`;if("upsert"===this.operation){let e=this.upsertOptions?.onConflict||"",t=String(e).split(",").map(e=>e.trim()).filter(Boolean);if(t.length>0)if(this.upsertOptions?.ignoreDuplicates)a+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`;else{let e=n.filter(e=>!t.includes(e)).map(e=>`${e} = EXCLUDED.${e}`);e.length>0?a+=` ON CONFLICT (${t.join(", ")}) DO UPDATE SET ${e.join(", ")}`:a+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`}}if(this.returningColumns){let{columns:e}=m(this.returningColumns);a+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(a).all(...o)).map(y):(t.prepare(a).run(...o),e=[]);let s=this.returningColumns?e:null;if("single"===this.singleMode||"maybeSingle"===this.singleMode)return{data:s&&s[0]||null,error:null};return{data:s,error:null}}catch(e){return{data:null,error:e}}}executeUpdateOrDelete(){try{let e,t=c(),r=[],n=[],o=[];this.buildWhere(o,n);let i="";if("update"===this.operation){let e=Object.keys(this.payload||{}).map(e=>{let t=this.payload[e];return t instanceof l?`${e} = ${t.expr}`:(r.push(g(e,t)),`${e} = ?`)});i=`UPDATE ${this.table} SET ${e.join(", ")}`}else i=`DELETE FROM ${this.table}`;o.length>0&&(i+=` WHERE ${o.join(" AND ")}`);let a=[...r,...n];if(this.returningColumns){let{columns:e}=m(this.returningColumns);i+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(i).all(...a)).map(y):(t.prepare(i).run(...a),e=[]);let s=this.returningColumns?e:null;if("single"===this.singleMode){if(!s||0===s.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:s[0],error:null}}if("maybeSingle"===this.singleMode)return{data:s?.[0]||null,error:null};return{data:s,error:null}}catch(e){return{data:null,error:e}}}async execute(){return"select"===this.operation?this.executeSelect():"insert"===this.operation||"upsert"===this.operation?this.executeInsertOrUpsert():this.executeUpdateOrDelete()}}let h=new Set([...p,"depends_on","open_blockers","swarm_models","run_index","stage_decisions","definition","metadata","models","config","policy","done_criteria","outputs","task_snapshot","data_mapping"]);function y(e){if(!e||"object"!=typeof e)return e;let t={...e};for(let e of Object.keys(t)){if(h.has(e)&&"string"==typeof t[e])try{t[e]=JSON.parse(t[e])}catch{}("swarm"===e||"is_default"===e||"is_public"===e||"had_graph_before"===e)&&(0===t[e]?t[e]=!1:1===t[e]&&(t[e]=!0))}return t}function k(){return{from:e=>new w(e),auth:{getUser:async()=>({data:{user:{id:t.id,email:t.email,user_metadata:{name:t.name,full_name:t.name}}},error:null}),exchangeCodeForSession:async()=>({error:null}),refreshSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600},user:{id:t.id,email:t.email}},error:null})},async rpc(e,t){if("check_rate_limit"!==e)return{data:null,error:{message:`Unsupported rpc: ${e}`}};let r=c(),n=t.p_user_id,o=t.p_endpoint,i=Number(t.p_limit||60),a=Number(t.p_window_seconds||60),s=new Date(Math.floor(new Date().getTime()/(1e3*a))*a*1e3);try{let e=`
3
3
  INSERT INTO rate_limits (user_id, endpoint, window_start, request_count)
4
4
  VALUES (?, ?, ?, 1)
5
5
  ON CONFLICT (user_id, endpoint, window_start)
6
6
  DO UPDATE SET request_count = rate_limits.request_count + 1
7
7
  RETURNING request_count
8
- `,t=r.prepare(e).get(n,o,s.toISOString());return{data:Number(t?.request_count||0)<=i,error:null}}catch(e){return{data:!1,error:e}}},channel:()=>({on(){return this},subscribe(e){return e&&e("SUBSCRIBED"),this}}),removeChannel(){}}}e.s(["SqlExpression",()=>a,"createAdminDbClientSQLite",()=>h,"getSQLiteDb",()=>d,"sqlExpr",()=>s],41754)},8112,14927,14688,e=>{"use strict";function t(){let{createAdminDbClientSQLite:t}=e.r(41754);return t()}e.i(41381),e.s(["createAdminDbClient",()=>t],14927);let r="Waiting on dependencies",n=[{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 i(e){let t=Array.isArray(e.events)?e.events.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(e=>n.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,n="string"==typeof e.message?e.message:"";return"42P01"===r||"PGRST205"===r||n.includes(`relation "${t}" does not exist`)||n.includes(`Could not find the table 'agx.${t}'`)||n.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:n,error:o}=await r.from("notification_webhooks").select("*").eq("user_id",e).order("created_at",{ascending:!1});return(o&&await a("notification_webhooks",o),n)?(Array.isArray(n)?n:[n]).map(i):[]}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 n=e.timestamp||new Date().toISOString(),i={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:n,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(i)});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],14688);var d=e.i(54799);function u(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 c(e){let r=t(),{data:n,error:o}=await r.from("user_settings").select("*").eq("user_id",e).maybeSingle();if(o){if(u(o,"user_settings"))return null;throw o}return n||null}async function p(e,r,n){let o=n?.onlyIfNewer!==!1,i=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 c(e);if(o&&a?.changed_at){let e=Date.parse(a.changed_at),t=Date.parse(i);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:i},l=t(),{error:d}=await l.from("user_settings").upsert(s,{onConflict:"user_id"});if(d)throw d;let u=await c(e);if(!u)throw Error("Failed to load user_settings after upsert");return{settings:u,updated:!0}}function f(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}async function g(e,t){let r=f(e);for(let n=0;n<5;n++){let{data:n,error:o}=await t.from("tasks").select("id").eq("slug",r).limit(1);if(o)throw o;if(!n||0===n.length)return r;let i=Math.random().toString(36).slice(2,6);r=`${f(e)}-${i}`.slice(0,48)}return`${f(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}async function m(e,t,r,n){let o=f(e);for(let i=0;i<5;i++){let i=r.from("projects").select("id").eq("slug",o).eq("user_id",t);n&&(i=i.neq("id",n));let{data:a,error:s}=await i.limit(1);if(s)throw s;if(!a||0===a.length)return o;let l=Math.random().toString(36).slice(2,6);o=`${f(e)}-${l}`.slice(0,48)}return`${f(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}function w(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 h(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=w(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 n=e.slice(0,t).trim(),o=e.slice(t+1).trim();if("depends_on"===n){r[n]=w(o);continue}"true"===o?r[n]=!0:"false"===o?r[n]=!1:/^\d+$/.test(o)?r[n]=parseInt(o):r[n]=o}}return{frontmatter:r,body:t[2]}}async function k(e,r,n){if(!e||!r?.length)return;let o=n??t(),i=new Set,a=[...r];for(;a.length;){let t=a.pop();if(!t)continue;if(t===e)throw Error("Circular dependency detected");if(i.has(t))continue;i.add(t);let{data:r,error:n}=await o.from("tasks").select("depends_on").eq("id",t).maybeSingle();if(n){if("PGRST116"===n.code||"42703"===n.code)continue;throw n}if(r)for(let e of Array.isArray(r.depends_on)?r.depends_on:[])e&&!i.has(e)&&a.push(e)}}function _(e){let{body:t}=y(e),r=t.match(/^#\s+(.+)$/m);return r?r[1]:void 0}function S(e){return String(e||"").replace(/^#\s+.+(\r?\n|$)/,"").trim()}async function T(e,n){var o;let i=Array.isArray(e.depends_on)?e.depends_on:[];if(!i.length)return;let a=t(),{data:s,error:l}=await a.from("tasks").select("id, title, slug, status, stage").in("id",i);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)??""}`),n=`${r}: ${t.join(", ")}`;return e.length>3&&(n+=` +${e.length-3} more`),n}(d),o=a.from("tasks").update({status:"blocked",blocked_reason:t}).eq("id",e.id);n&&(o=o.eq("user_id",n));let{error:i}=await o;if(i&&"42703"!==i.code)throw i;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);n&&(t=t.eq("user_id",n));let{error:r}=await t;if(r&&"42703"!==r.code)throw r}}async function $(e,r){console.log("getTasks called with userId:",e);let n=t().from("tasks").select("*").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!1});if(e&&(n=n.eq("user_id",e)),r?.project&&(n=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r.project)?n.eq("project_id",r.project):n.eq("project",r.project)),r?.orphan&&(n=n.is("project_id",null)),r?.status&&(n=n.eq("status",r.status)),r?.search){let e=r.search;n=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?n.or(`id.eq.${e},slug.ilike.%${e}%,title.ilike.%${e}%`):n.or(`id.ilike.%${e}%,slug.ilike.%${e}%,title.ilike.%${e}%`)}let{data:o,error:i}=await n;if(i)throw i;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 n=t().from("tasks").select("*").eq("id",e);r&&(n=n.eq("user_id",r));let{data:o,error:i}=await n.single();if(i){if("PGRST116"===i.code)return null;throw i}return o}async function x(e,r){let n=t().from("tasks").select("*").eq("slug",e);r&&(n=n.eq("user_id",r));let{data:o,error:i}=await n.single();if(i){if("PGRST116"===i.code)return null;throw i}return o}async function v(e,r,n){let o=t(),{frontmatter:i,body:a}=y(e),s="boolean"==typeof i.swarm?i.swarm:void 0,u=n?.title||_(e),c=String(i.slug||u||"task"),p=await g(c,o),f=n?.projectId||("string"==typeof i.project_id?i.project_id:void 0),m="string"==typeof i.workflow_id?i.workflow_id:void 0,w="string"==typeof i.project?i.project:void 0;if(!w&&f){let{data:e}=await o.from("projects").select("slug").eq("id",f).single();e?.slug&&(w=e.slug)}/^---\n/.test(e);let $="string"==typeof i.provider?i.provider:null,x="string"==typeof i.model?i.model:null,v="string"==typeof i.engine?i.engine:null,I="ai"===i.created_by?"ai":"user",E=h(i.depends_on),j=h(n?.dependsOn),q=j.length>0?j:E,C={id:(0,d.randomUUID)(),content:e,description:S(a),title:u,slug:p,status:i.status||"queued",stage:i.stage||"intake",project:w||null,...void 0!==f?{project_id:f}:{},...void 0!==m?{workflow_id:m}:{},priority:i.priority,engine:v,provider:$,model:x,swarm:s,swarm_models:n?.swarmModels??null,depends_on:q.length?q:null,created_by:I,user_id:r,current_plan:n?.currentPlan||null,open_blockers:n?.openBlockers||[],next_action:n?.nextAction||null,version:1};await k(C.id,q,o);let{data:N,error:O}=await o.from("tasks").insert(C).select().single();if(O&&"42703"===O.code){let{swarm_models:e,swarm:t,workflow_id:r,current_plan:n,open_blockers:i,next_action:a,version:s,depends_on:l,...d}=C;({data:N,error:O}=await o.from("tasks").insert(d).select().single())}if(O)throw O;if(!N)throw Error("Failed to create task");await T(N,r);let A=await b(N.id,r)||N,L=r||A.user_id;if(L){let e=A.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(A.depends_on)?A.depends_on:[],project:A.project||null,projectId:A.project_id||null,workflowId:A.workflow_id||null,createdBy:A.created_by||null};l({taskId:A.id,userId:L,eventType:"task.created",title:A.title||null,slug:A.slug||null,stage:A.stage||null,status:A.status||null,timestamp:e,details:t})}return A}async function I(e,r,n,o){let i=t(),{frontmatter:a,body:s}=y(r),d="boolean"==typeof a.swarm?a.swarm:void 0,u=_(r),c="string"==typeof a.project_id?a.project_id:void 0,p=Object.prototype.hasOwnProperty.call(a,"provider"),f=Object.prototype.hasOwnProperty.call(a,"model"),g=Object.prototype.hasOwnProperty.call(a,"workflow_id"),m=Object.prototype.hasOwnProperty.call(a,"depends_on"),w=h(a.depends_on),$=h(o?.dependsOn),x=o?.dependsOn!==void 0||m,v=o?.dependsOn!==void 0?$:w,I={content:r,description:S(s),title:u,status:a.status,stage:a.stage,project:a.project,...void 0!==c?{project_id:c}:{},workflow_id:g?a.workflow_id:void 0,priority:a.priority,engine:a.engine,provider:p?a.provider:null,model:f?a.model:null,swarm:d,swarm_models:o?.swarmModels??void 0,...x?{depends_on:v.length?v: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(I).forEach(e=>{void 0===I[e]&&delete I[e]}),x&&await k(e,v,i);let E=i.from("tasks").update({...I,version:i.rpc("increment_version")}).eq("id",e);n&&(E=E.eq("user_id",n)),o?.expectedVersion!==void 0&&(E=E.eq("version",o.expectedVersion));let{data:j,error:q}=await i.from("tasks").update({...I}).eq("id",e).select().maybeSingle();if(q&&console.error(`[db.updateTask] error updating task ${e}:`,q),j||q||console.warn(`[db.updateTask] UPDATE returned 0 rows for task ${e}, payload keys:`,Object.keys(I)),q&&"42703"===q.code){let{swarm_models:t,swarm:r,workflow_id:o,current_plan:a,open_blockers:s,next_action:l,version:d,depends_on:u,...c}=I,p=i.from("tasks").update(c).eq("id",e);n&&(p=p.eq("user_id",n)),{data:j,error:q}=await p.select().maybeSingle()}if(q)throw q;if(!j){let t=await b(e,n);if(!t)throw Error(`Task ${e} not found`);return t}await T(j,n);let C=await b(j.id,n)||j,N=n||C.user_id;if(N){let e=C.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(C.depends_on)?C.depends_on:[],project:C.project||null,projectId:C.project_id||null,workflowId:C.workflow_id||null,createdBy:C.created_by||null};l({taskId:C.id,userId:N,eventType:"task.created",title:C.title||null,slug:C.slug||null,stage:C.stage||null,status:C.status||null,timestamp:e,details:t})}return C}async function E(e,r,n=25){let o=t(),{data:i,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(i.run_index)?i.run_index:[]].slice(0,n),{error:l}=await o.from("tasks").update({run_index:s}).eq("id",e);if(l){if(l?.code==="42703")return;throw l}}async function j(e,r){let n=t().from("tasks").delete().eq("id",e);r&&(n=n.eq("user_id",r));let{error:o}=await n;if(o)throw o}async function q(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:n,error:o}=await r.single();if(o){if("PGRST116"===o.code)return null;throw o}return n}async function C(e){let r=t().from("projects").select("*, project_repos(*)");e&&(r=r.eq("user_id",e));let{data:n,error:o}=await r;if(o){if(u(o,"projects"))return[];throw o}return(n||[]).map(e=>({...e,repos:e.project_repos??[]}))}async function N(e,r){let n=t().from("projects").select("*").eq("slug",e);r&&(n=n.eq("user_id",r));let{data:o,error:i}=await n.maybeSingle();if(i){if(u(i,"projects"))return null;throw i}return o||null}async function O(e){let r=t(),{data:n,error:o}=await r.from("project_repos").select("*").eq("project_id",e);if(o){if(u(o,"project_repos"))return[];throw o}return n||[]}let A=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function L(e,r){let n=t(),o=A.test(e),i=n.from("projects").select("*");i=o?i.eq("id",e):i.eq("slug",e),r&&(i=i.eq("user_id",r));let a=await i.maybeSingle();if(a.error){if(u(a.error,"projects"))return null;throw a.error}let s=a.data;if(!s)return null;let l=await O(s.id);return{...s,repos:l}}async function D(e,t,r){if(!t.length)return[];let n=t.map(t=>({project_id:e,name:t.name,path:t.path??null,notes:t.notes??null})),{data:o,error:i}=await r.from("project_repos").insert(n).select("*");if(i){if(u(i,"project_repos"))return[];throw i}return o||[]}async function R(e,r,n){if(!r.name?.trim())throw Error("Project name is required");let o=n??t(),i=r.name.trim()||"project",a=await m(i,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 u=await D(l.id,r.repos??[],o);return{...l,repos:u}}async function P(e,r,n,o){let i=o??t(),a=A.test(e),s=e;if(!a){let t=await N(e,r);if(!t)return null;s=t.id}let l={};if(void 0!==n.name){let e=n.name?.trim();if(!e)throw Error("Project name cannot be empty");l.name=e}if(void 0!==n.slug){let e=n.slug?.trim();e&&(l.slug=e)}if(void 0!==n.description&&(l.description=n.description),void 0!==n.metadata&&(l.metadata=n.metadata),void 0!==n.ci_cd_info&&(l.ci_cd_info=n.ci_cd_info),void 0!==n.workflow_id&&(l.workflow_id=n.workflow_id),Object.keys(l).length){let{error:e}=await i.from("projects").update(l).eq("id",s).eq("user_id",r);if(e)throw e}if(n.repos){let{error:e}=await i.from("project_repos").delete().eq("project_id",s);if(e&&!u(e,"project_repos"))throw e;await D(s,n.repos,i)}return L(s,r)}async function W(e,r,n){let o=n??t(),{error:i}=await o.from("projects").delete().eq("id",e).eq("user_id",r);if(i)throw i}async function U(e,r,n){let o=n??t(),{data:i,error:a}=await o.from("projects").select("id, slug").eq("id",e).eq("user_id",r).maybeSingle();if(a)throw a;if(!i)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(i.slug||"").trim().toLowerCase(),u=(s||[]).filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t||t===d}).map(e=>e.id);if(!u.length)return{updatedCount:0,taskIds:[]};let{error:c}=await o.from("tasks").update({project:i.slug,project_id:i.id,updated_at:new Date().toISOString()}).eq("user_id",r).is("project_id",null).in("id",u);if(c)throw c;return{updatedCount:u.length,taskIds:u}}let M="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"}],F=new Map(B.map(e=>[e.id,e]));async function G(e){let r=t(),{error:n}=await r.from("workflows").upsert({id:M,user_id:e||"00000000-0000-0000-0000-000000000000",name:"Default Workflow",definition:{}},{onConflict:"id"});if(n)throw n;let{error:o}=await r.from("workflow_nodes").upsert(B.map(e=>({...e,workflow_id:M,metadata:{}})),{onConflict:"id"});if(o)throw o;let{error:i}=await r.from("workflow_transitions").upsert([{workflow_id:M,from_node_id:"00000000-0000-0000-0001-000000000001",to_node_id:"00000000-0000-0000-0001-000000000002",condition:"done",priority:0,metadata:{}},{workflow_id:M,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(i)throw i}async function Q(e){let r=t(),{data:n,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(u(o,"workflows"))return[];throw o}return n||[]}async function H(e,r){let n=t().from("workflows").select("*").eq("id",e),{data:o,error:i}=await n.maybeSingle();if(i){if(u(i,"workflows"))return null;throw i}return o}async function V(e,r,n){let o=t(),i={updated_at:new Date().toISOString()};void 0!==n.definition&&(i.definition=n.definition),void 0!==n.name&&(i.name=n.name),void 0!==n.description&&(i.description=n.description);let{data:a,error:s}=await o.from("workflows").update(i).eq("id",e).select().single();if(s)throw s;return a}async function J(e){let r=t(),{data:n,error:o}=await r.from("workflow_nodes").select("*").eq("workflow_id",e).order("position",{ascending:!0});if(o){if(u(o,"workflow_nodes"))return[];throw o}return n||[]}async function K(e,r,n){let o=t();if(e===M&&await G(r),!await H(e,r))throw Error("Workflow not found");if(e===M){let t=n.map(t=>{let r=F.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 J(e)}return await Promise.all(n.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:n}=await o.from("workflow_nodes").update(r).eq("workflow_id",e).eq("id",t.id);if(n)throw n})),J(e)}async function Y(e,r){let n=t(),{data:o,error:i}=await n.from("workflow_nodes").select("*").eq("workflow_id",e).eq("name",r).maybeSingle();if(i){if(u(i,"workflow_nodes"))return null;throw i}return o}async function z(e){let r=t(),{data:n,error:o}=await r.from("workflow_transitions").select("*").eq("workflow_id",e).order("priority",{ascending:!0});if(o){if(u(o,"workflow_transitions"))return[];throw o}return n||[]}async function X(e,r){let n=t(),{data:o,error:i}=await n.from("workflow_transitions").select("*").eq("workflow_id",e).eq("from_node_id",r).order("priority",{ascending:!0});if(i){if(u(i,"workflow_transitions"))return[];throw i}return o||[]}async function Z(e,t){let r=await H(e,t);if(!r)return null;let[n,o]=await Promise.all([J(e),z(e)]);return{...r,nodes:n,transitions:o}}async function ee(e,r={}){let n=t(),o=Math.max(1,Math.min(2e3,Number(r.limit??r.tail??500))),i="string"==typeof r.after&&r.after.trim()?r.after.trim():null,a=i?null:void 0===r.tail?o:Number(r.tail),s=null!==a&&Number.isFinite(a)&&a>0,l=n.from("task_logs").select("*").eq("task_id",e);r.nodeId&&(l=l.eq("node_id",r.nodeId)),l=i?l.gt("created_at",i).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:u}=await l;if(u)throw u;let c=d||[];return i?c:s?c.slice().reverse():c}async function et(e,r,n,o){let i=t(),{data:a,error:s}=await i.from("task_logs").insert({task_id:e,content:r,log_type:n,...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 en(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,t):0}async function eo(e){let r=t(),n={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:en(e.estimatedCost)},{data:o,error:i}=await r.from("task_costs").insert(n).select().single();if(i)throw i;return o}async function ei(e){let r=t(),{data:n,error:o}=await r.from("task_costs").select("*").eq("task_id",e).order("created_at",{ascending:!0});if(o)throw o;return n||[]}async function ea(e){return function(e){let t={},r=0,n=0,o=0;for(let i of e){let e=i.stage||"unknown",a=er(i.input_tokens),s=er(i.output_tokens),l=en(i.estimated_cost??0);r+=a,n+=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:n,total_cost:o,per_stage:Object.values(t).sort((e,t)=>e.stage.localeCompare(t.stage))}}(await ei(e))}async function es(e){let r=t(),{data:n,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 n||[]}async function el(e,r,n,o){let i=t(),{data:a,error:s}=await i.from("task_comments").insert({task_id:e,content:r,author_type:n,author_id:o??null}).select().single();if(s)throw s;return a}async function ed(e,r){let n=t(),{data:o,error:i}=await n.from("task_comments").select("author_id, author_type").eq("id",e).single();if(i)throw i;if(!o)throw Error("Comment not found");if("user"!==o.author_type||o.author_id!==r)throw Error("Unauthorized");let{error:a}=await n.from("task_comments").update({deleted_at:new Date().toISOString()}).eq("id",e).is("deleted_at",null);if(a)throw a}async function eu(e,r,n){let o=t().from("learnings").select("*").eq("scope",e).order("created_at",{ascending:!1});r&&(o=o.eq("scope_id",r)),n&&(o=o.eq("user_id",n));let{data:i,error:a}=await o;if(a)throw a;return i||[]}async function ec(e,r,n,o){let i=t(),{data:a,error:s}=await i.from("learnings").insert({scope:e,scope_id:n,content:r,user_id:o}).select().single();if(s)throw s;return a}async function ep(e,r){let n=t().from("learnings").delete().eq("id",e);r&&(n=n.eq("user_id",r));let{error:o}=await n;if(o)throw o}async function ef(e,r){let n=t().from("stage_prompts").select("*").eq("workflow_id",r).order("stage",{ascending:!0});n=e?n.or(`user_id.eq.${e},is_default.eq.true`):n.eq("is_default",!0);let{data:o,error:i}=await n;if(i)throw i;return o||[]}async function eg(e,r,n){let o=t();if(r){let{data:t}=await o.from("stage_prompts").select("*").eq("workflow_id",n).eq("stage",e).eq("user_id",r).single();if(t)return t}let{data:i}=await o.from("stage_prompts").select("*").eq("workflow_id",n).eq("stage",e).eq("is_default",!0).single();return i||null}async function em(e,r,n=[],o,i,a){let s=t(),l={stage:e,prompt:r,outputs:n,user_id:o,is_default:!o,workflow_id:a};i&&(void 0!==i.swarm&&(l.swarm=i.swarm),void 0!==i.provider&&(l.provider=i.provider),void 0!==i.model&&(l.model=i.model),void 0!==i.swarm_models&&(l.swarm_models=i.swarm_models));let{data:d,error:u}=await s.from("stage_prompts").upsert(l,{onConflict:o?"workflow_id,stage,user_id":"workflow_id,stage,is_default"}).select().single();if(u)throw u;return d}async function ew(e,r){let n=t().from("stage_prompts").delete().eq("id",e);r&&(n=n.eq("user_id",r));let{error:o}=await n;if(o)throw o}async function eh(e){let r=t(),{data:n,error:o}=await r.from("agents").select("*").eq("user_id",e).order("created_at",{ascending:!1});if(o){if(u(o,"agents"))return[];throw o}return n||[]}async function ey(e,r){let n=t(),{data:o,error:i}=await n.from("agents").select("*").eq("id",e).eq("user_id",r).maybeSingle();if(i){if("PGRST116"===i.code||u(i,"agents"))return null;throw i}return o}async function ek(e,r){let n=t(),o={user_id:e,name:r.name,style:r.style,description:r.description??null,config:r.config??{}},{data:i,error:a}=await n.from("agents").insert(o).select().single();if(a){if(u(a,"agents"))throw Error("Agents table does not exist");throw a}return i}async function e_(e,r,n){let o=t(),i={updated_at:new Date().toISOString()};if(void 0!==n.name&&(i.name=n.name),void 0!==n.style&&(i.style=n.style),void 0!==n.description&&(i.description=n.description),void 0!==n.config&&(i.config=n.config),1===Object.keys(i).length)return ey(e,r);let{data:a,error:s}=await o.from("agents").update(i).eq("id",e).eq("user_id",r).select().single();if(s){if("PGRST116"===s.code||u(s,"agents"))return null;throw s}return a}async function eS(e,r){let n=t(),{error:o}=await n.from("agents").delete().eq("id",e).eq("user_id",r);if(o&&!u(o,"agents"))throw o}e.s(["addLearning",()=>ec,"addTaskComment",()=>el,"addTaskCostEntry",()=>eo,"addTaskLog",()=>et,"appendRunToIndex",()=>E,"assignOrphanTasksToProject",()=>U,"createAgent",()=>ek,"createProject",()=>R,"createTask",()=>v,"deleteAgent",()=>eS,"deleteLearning",()=>ep,"deleteProject",()=>W,"deleteStagePrompt",()=>ew,"deleteTask",()=>j,"deleteTaskComment",()=>ed,"ensureNoCircularDependency",()=>k,"getAgent",()=>ey,"getAgents",()=>eh,"getLearnings",()=>eu,"getNextQueuedTask",()=>q,"getProjectBySlug",()=>N,"getProjectRepos",()=>O,"getProjectWithRepos",()=>L,"getProjects",()=>C,"getStagePrompt",()=>eg,"getStagePrompts",()=>ef,"getTask",()=>b,"getTaskBySlug",()=>x,"getTaskComments",()=>es,"getTaskCostEntries",()=>ei,"getTaskCostSummary",()=>ea,"getTaskLogs",()=>ee,"getTasks",()=>$,"getUserSettings",()=>c,"getWorkflow",()=>H,"getWorkflowNodeByName",()=>Y,"getWorkflowNodes",()=>J,"getWorkflowTransitions",()=>z,"getWorkflowTransitionsFromNode",()=>X,"getWorkflowWithGraph",()=>Z,"getWorkflows",()=>Q,"parseFrontmatter",()=>y,"updateAgent",()=>e_,"updateProject",()=>P,"updateTask",()=>I,"updateWorkflow",()=>V,"updateWorkflowNodes",()=>K,"upsertStagePrompt",()=>em,"upsertUserSettings",()=>p],8112)},29012,e=>{"use strict";var t=e.i(8112),r=e.i(41754);class n extends Error{constraint;detail;constructor(e,t){super(e),this.name="ConflictError",this.constraint=t?.constraint,this.detail=t?.detail}}class o extends Error{code;constructor(e,t){super(e),this.name="RetryableError",this.code=t}}class i 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 a(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 o(r,t||"SQLITE_BUSY");throw e}async function s(e){try{return await e()}catch(e){if(e instanceof n||e instanceof o||e instanceof i)throw e;a(e)}}class l{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 o||e instanceof i)throw e;a(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 s(()=>t.createTask(e,r,n))}async updateTask(e,n,o,a){let l=a?.expectedVersion;if(void 0!==l){let d=(0,r.getSQLiteDb)();if(0===d.prepare("UPDATE tasks SET version = version + 1 WHERE id = ? AND version = ?").run(e,l).changes){let t=d.prepare("SELECT version FROM tasks WHERE id = ?").get(e);throw new i("task",e,l,t?.version)}let{expectedVersion:u,...c}=a??{};return s(()=>t.updateTask(e,n,o,c))}return(0,r.getSQLiteDb)().prepare("UPDATE tasks SET version = version + 1 WHERE id = ?").run(e),s(()=>t.updateTask(e,n,o,a))}appendRunToIndex(e,r,n){return t.appendRunToIndex(e,r,n)}deleteTask(e,r){return s(()=>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 s(()=>t.createProject(e,r,n))}updateProject(e,r,n,o){return t.updateProject(e,r,n,o)}deleteProject(e,r,n){return s(()=>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,o){return s(()=>t.addTaskLog(e,r,n,o))}addTaskCostEntry(e){return s(()=>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,o){return s(()=>t.addTaskComment(e,r,n,o))}deleteTaskComment(e,r){return s(()=>t.deleteTaskComment(e,r))}getLearnings(e,r,n){return t.getLearnings(e,r,n)}addLearning(e,r,n,o){return s(()=>t.addLearning(e,r,n,o))}deleteLearning(e,r){return s(()=>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,o,i,a){return s(()=>t.upsertStagePrompt(e,r,n,o,i,a))}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 s(()=>t.createAgent(e,r))}updateAgent(e,r,n){return t.updateAgent(e,r,n)}deleteAgent(e,r){return t.deleteAgent(e,r)}getUserSettings(e){return t.getUserSettings(e)}upsertUserSettings(e,r,n){return s(()=>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",()=>l],29012)},27743,e=>{"use strict";let t=function(){let{SQLiteAdapter:t}=e.r(29012);return new t}();var r=e.i(8112);let n=[["INTAKE","PROGRESS","DONE"]];async function o({workflowId:e,currentNodeName:t,decision:n,retryCount:o,maxRetries:i=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 a=await (0,r.getWorkflowNodeByName)(e,t);if(!a)return{nextNodeName:t,nextStatus:"blocked",retryCount:o,error:`Node '${t}' not found in workflow`,appendLog:{content:`Workflow error: node '${t}' not found`,logType:"error"},nodeConfig:null};if("terminal"===a.node_type)return{nextNodeName:t,nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at ${a.label||t}`,logType:"checkpoint"},nodeConfig:a};if("blocked"===n)return{nextNodeName:t,nextStatus:"blocked",retryCount:o,error:null,appendLog:{content:"Blocked: additional input required.",logType:"system"},nodeConfig:a};let s=await (0,r.getWorkflowTransitionsFromNode)(e,a.id),l=function(e){switch(e){case"done":default:return"done";case"blocked":return"blocked";case"failed":case"not_done":return"failed"}}(n),d=s.find(e=>e.condition===l);if(d){let o=(await (0,r.getWorkflowNodes)(e)).find(e=>e.id===d.to_node_id);if(o){let e="terminal"===o.node_type;return{nextNodeName:o.name,nextStatus:e?"completed":"queued",retryCount:0,error:null,appendLog:{content:"done"===n?`Stage completed: ${a.label||t}`:`Transition to ${o.label||o.name}`,logType:"done"===n?"checkpoint":"system"},nodeConfig:o}}}if("done"===n)return{nextNodeName:t,nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at ${a.label||t}`,logType:"checkpoint"},nodeConfig:a};let u=o+1;return u<=i?{nextNodeName:t,nextStatus:"queued",retryCount:u,error:null,appendLog:{content:`Retrying (${u}/${i}) for ${a.label||t}`,logType:"system"},nodeConfig:a}:{nextNodeName:t,nextStatus:"failed",retryCount:u,error:"Task failed after max retries.",appendLog:{content:"Task failed after max retries.",logType:"error"},nodeConfig:a}}var i=e.i(54799),a=e.i(33405);let s=e=>"string"==typeof e&&e.trim().length>0,l=e=>({push:e,flush:()=>{}}),d=e=>{let t="",r=0,n=!1,o=t=>{let o=t.trim();if(o)try{let t=JSON.parse(o);n=!0;let i=(e=>{if(!e||"object"!=typeof e)return"";if("assistant"===e.type)return(Array.isArray(e?.message?.content)?e.message.content:[]).flatMap(e=>e?.type==="text"&&s(e.text)?[e.text]:[]).join("");let t=e?.event;return"stream_event"===e.type&&t?.type==="content_block_delta"&&t?.delta?.type==="text_delta"&&s(t?.delta?.text)?t.delta.text:""})(t);if(!i||t?.type==="assistant"&&r>0)return;r+=i.length,e(i)}catch{n||e(`${t}
8
+ `,t=r.prepare(e).get(n,o,s.toISOString());return{data:Number(t?.request_count||0)<=i,error:null}}catch(e){return{data:!1,error:e}}},channel:()=>({on(){return this},subscribe(e){return e&&e("SUBSCRIBED"),this}}),removeChannel(){}}}e.s(["SqlExpression",()=>l,"createAdminDbClientSQLite",()=>k,"getSQLiteDb",()=>c,"sqlExpr",()=>d],41754)},8112,14927,14688,e=>{"use strict";function t(){let{createAdminDbClientSQLite:t}=e.r(41754);return t()}e.i(41381),e.s(["createAdminDbClient",()=>t],14927);let r="Waiting on dependencies",n=[{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 i(e){let t=Array.isArray(e.events)?e.events.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(e=>n.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,n="string"==typeof e.message?e.message:"";return"42P01"===r||"PGRST205"===r||n.includes(`relation "${t}" does not exist`)||n.includes(`Could not find the table 'agx.${t}'`)||n.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:n,error:o}=await r.from("notification_webhooks").select("*").eq("user_id",e).order("created_at",{ascending:!1});return(o&&await a("notification_webhooks",o),n)?(Array.isArray(n)?n:[n]).map(i):[]}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 n=e.timestamp||new Date().toISOString(),i={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:n,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(i)});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],14688);var d=e.i(54799);function u(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 c(e){let r=t(),{data:n,error:o}=await r.from("user_settings").select("*").eq("user_id",e).maybeSingle();if(o){if(u(o,"user_settings"))return null;throw o}return n||null}async function p(e,r,n){let o=n?.onlyIfNewer!==!1,i=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 c(e);if(o&&a?.changed_at){let e=Date.parse(a.changed_at),t=Date.parse(i);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:i},l=t(),{error:d}=await l.from("user_settings").upsert(s,{onConflict:"user_id"});if(d)throw d;let u=await c(e);if(!u)throw Error("Failed to load user_settings after upsert");return{settings:u,updated:!0}}function f(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}async function g(e,t){let r=f(e);for(let n=0;n<5;n++){let{data:n,error:o}=await t.from("tasks").select("id").eq("slug",r).limit(1);if(o)throw o;if(!n||0===n.length)return r;let i=Math.random().toString(36).slice(2,6);r=`${f(e)}-${i}`.slice(0,48)}return`${f(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}async function m(e,t,r,n){let o=f(e);for(let i=0;i<5;i++){let i=r.from("projects").select("id").eq("slug",o).eq("user_id",t);n&&(i=i.neq("id",n));let{data:a,error:s}=await i.limit(1);if(s)throw s;if(!a||0===a.length)return o;let l=Math.random().toString(36).slice(2,6);o=`${f(e)}-${l}`.slice(0,48)}return`${f(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}function w(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 h(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=w(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 n=e.slice(0,t).trim(),o=e.slice(t+1).trim();if("depends_on"===n){r[n]=w(o);continue}"true"===o?r[n]=!0:"false"===o?r[n]=!1:/^\d+$/.test(o)?r[n]=parseInt(o):r[n]=o}}return{frontmatter:r,body:t[2]}}async function k(e,r,n){if(!e||!r?.length)return;let o=n??t(),i=new Set,a=[...r];for(;a.length;){let t=a.pop();if(!t)continue;if(t===e)throw Error("Circular dependency detected");if(i.has(t))continue;i.add(t);let{data:r,error:n}=await o.from("tasks").select("depends_on").eq("id",t).maybeSingle();if(n){if("PGRST116"===n.code||"42703"===n.code)continue;throw n}if(r)for(let e of Array.isArray(r.depends_on)?r.depends_on:[])e&&!i.has(e)&&a.push(e)}}function _(e){let{body:t}=y(e),r=t.match(/^#\s+(.+)$/m);return r?r[1]:void 0}function S(e){return String(e||"").replace(/^#\s+.+(\r?\n|$)/,"").trim()}async function T(e,n){var o;let i=Array.isArray(e.depends_on)?e.depends_on:[];if(!i.length)return;let a=t(),{data:s,error:l}=await a.from("tasks").select("id, title, slug, status, stage").in("id",i);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)??""}`),n=`${r}: ${t.join(", ")}`;return e.length>3&&(n+=` +${e.length-3} more`),n}(d),o=a.from("tasks").update({status:"blocked",blocked_reason:t}).eq("id",e.id);n&&(o=o.eq("user_id",n));let{error:i}=await o;if(i&&"42703"!==i.code)throw i;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);n&&(t=t.eq("user_id",n));let{error:r}=await t;if(r&&"42703"!==r.code)throw r}}async function $(e,r){console.log("getTasks called with userId:",e);let n=t().from("tasks").select("*").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!1});if(e&&(n=n.eq("user_id",e)),r?.project&&(n=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r.project)?n.eq("project_id",r.project):n.eq("project",r.project)),r?.orphan&&(n=n.is("project_id",null)),r?.status&&(n=n.eq("status",r.status)),r?.search){let e=r.search;n=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?n.or(`id.eq.${e},slug.ilike.%${e}%,title.ilike.%${e}%`):n.or(`id.ilike.%${e}%,slug.ilike.%${e}%,title.ilike.%${e}%`)}let{data:o,error:i}=await n;if(i)throw i;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 n=t().from("tasks").select("*").eq("id",e);r&&(n=n.eq("user_id",r));let{data:o,error:i}=await n.single();if(i){if("PGRST116"===i.code)return null;throw i}return o}async function x(e,r){let n=t().from("tasks").select("*").eq("slug",e);r&&(n=n.eq("user_id",r));let{data:o,error:i}=await n.single();if(i){if("PGRST116"===i.code)return null;throw i}return o}async function v(e,r,n){let o=t(),{frontmatter:i,body:a}=y(e),s="boolean"==typeof i.swarm?i.swarm:void 0,u=n?.title||_(e),c=String(i.slug||u||"task"),p=await g(c,o),f=n?.projectId||("string"==typeof i.project_id?i.project_id:void 0),m="string"==typeof i.workflow_id?i.workflow_id:void 0,w="string"==typeof i.project?i.project:void 0;if(!w&&f){let{data:e}=await o.from("projects").select("slug").eq("id",f).single();e?.slug&&(w=e.slug)}/^---\n/.test(e);let $="string"==typeof i.provider?i.provider:null,x="string"==typeof i.model?i.model:null,v="string"==typeof i.engine?i.engine:null,I="ai"===i.created_by?"ai":"user",E=h(i.depends_on),j=h(n?.dependsOn),q=j.length>0?j:E,C={id:(0,d.randomUUID)(),content:e,description:S(a),title:u,slug:p,status:i.status||"queued",stage:i.stage||"intake",project:w||null,...void 0!==f?{project_id:f}:{},...void 0!==m?{workflow_id:m}:{},priority:i.priority,engine:v,provider:$,model:x,swarm:s,swarm_models:n?.swarmModels??null,depends_on:q.length?q:null,created_by:I,user_id:r,current_plan:n?.currentPlan||null,open_blockers:n?.openBlockers||[],next_action:n?.nextAction||null,version:1};await k(C.id,q,o);let{data:N,error:O}=await o.from("tasks").insert(C).select().single();if(O&&"42703"===O.code){let{swarm_models:e,swarm:t,workflow_id:r,current_plan:n,open_blockers:i,next_action:a,version:s,depends_on:l,...d}=C;({data:N,error:O}=await o.from("tasks").insert(d).select().single())}if(O)throw O;if(!N)throw Error("Failed to create task");await T(N,r);let A=await b(N.id,r)||N,L=r||A.user_id;if(L){let e=A.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(A.depends_on)?A.depends_on:[],project:A.project||null,projectId:A.project_id||null,workflowId:A.workflow_id||null,createdBy:A.created_by||null};l({taskId:A.id,userId:L,eventType:"task.created",title:A.title||null,slug:A.slug||null,stage:A.stage||null,status:A.status||null,timestamp:e,details:t})}return A}async function I(e,r,n,o){let i=t(),{frontmatter:a,body:s}=y(r),d="boolean"==typeof a.swarm?a.swarm:void 0,u=_(r),c="string"==typeof a.project_id?a.project_id:void 0,p=Object.prototype.hasOwnProperty.call(a,"provider"),f=Object.prototype.hasOwnProperty.call(a,"model"),g=Object.prototype.hasOwnProperty.call(a,"workflow_id"),m=Object.prototype.hasOwnProperty.call(a,"depends_on"),w=h(a.depends_on),$=h(o?.dependsOn),x=o?.dependsOn!==void 0||m,v=o?.dependsOn!==void 0?$:w,I={content:r,description:S(s),title:u,status:a.status,stage:a.stage,project:a.project,...void 0!==c?{project_id:c}:{},workflow_id:g?a.workflow_id:void 0,priority:a.priority,engine:a.engine,provider:p?a.provider:null,model:f?a.model:null,swarm:d,swarm_models:o?.swarmModels??void 0,...x?{depends_on:v.length?v: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(I).forEach(e=>{void 0===I[e]&&delete I[e]}),x&&await k(e,v,i);let E=i.from("tasks").update({...I,version:i.rpc("increment_version")}).eq("id",e);n&&(E=E.eq("user_id",n)),o?.expectedVersion!==void 0&&(E=E.eq("version",o.expectedVersion));let{data:j,error:q}=await i.from("tasks").update({...I}).eq("id",e).select().maybeSingle();if(q&&console.error(`[db.updateTask] error updating task ${e}:`,q),j||q||console.warn(`[db.updateTask] UPDATE returned 0 rows for task ${e}, payload keys:`,Object.keys(I)),q&&"42703"===q.code){let{swarm_models:t,swarm:r,workflow_id:o,current_plan:a,open_blockers:s,next_action:l,version:d,depends_on:u,...c}=I,p=i.from("tasks").update(c).eq("id",e);n&&(p=p.eq("user_id",n)),{data:j,error:q}=await p.select().maybeSingle()}if(q)throw q;if(!j){let t=await b(e,n);if(!t)throw Error(`Task ${e} not found`);return t}await T(j,n);let C=await b(j.id,n)||j,N=n||C.user_id;if(N){let e=C.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(C.depends_on)?C.depends_on:[],project:C.project||null,projectId:C.project_id||null,workflowId:C.workflow_id||null,createdBy:C.created_by||null};l({taskId:C.id,userId:N,eventType:"task.created",title:C.title||null,slug:C.slug||null,stage:C.stage||null,status:C.status||null,timestamp:e,details:t})}return C}async function E(e,r,n=25){let o=t(),{data:i,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(i.run_index)?i.run_index:[]].slice(0,n),{error:l}=await o.from("tasks").update({run_index:s}).eq("id",e);if(l){if(l?.code==="42703")return;throw l}}async function j(e,r){let n=t().from("tasks").delete().eq("id",e);r&&(n=n.eq("user_id",r));let{error:o}=await n;if(o)throw o}async function q(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:n,error:o}=await r.single();if(o){if("PGRST116"===o.code)return null;throw o}return n}async function C(e){let r=t().from("projects").select("*, project_repos(*)");e&&(r=r.eq("user_id",e));let{data:n,error:o}=await r;if(o){if(u(o,"projects"))return[];throw o}return(n||[]).map(e=>({...e,repos:e.project_repos??[]}))}async function N(e,r){let n=t().from("projects").select("*").eq("slug",e);r&&(n=n.eq("user_id",r));let{data:o,error:i}=await n.maybeSingle();if(i){if(u(i,"projects"))return null;throw i}return o||null}async function O(e){let r=t(),{data:n,error:o}=await r.from("project_repos").select("*").eq("project_id",e);if(o){if(u(o,"project_repos"))return[];throw o}return n||[]}let A=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function L(e,r){let n=t(),o=A.test(e),i=n.from("projects").select("*");i=o?i.eq("id",e):i.eq("slug",e),r&&(i=i.eq("user_id",r));let a=await i.maybeSingle();if(a.error){if(u(a.error,"projects"))return null;throw a.error}let s=a.data;if(!s)return null;let l=await O(s.id);return{...s,repos:l}}async function D(e,t,r){if(!t.length)return[];let n=t.map(t=>({project_id:e,name:t.name,path:t.path??null,notes:t.notes??null})),{data:o,error:i}=await r.from("project_repos").insert(n).select("*");if(i){if(u(i,"project_repos"))return[];throw i}return o||[]}async function R(e,r,n){if(!r.name?.trim())throw Error("Project name is required");let o=n??t(),i=r.name.trim()||"project",a=await m(i,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 u=await D(l.id,r.repos??[],o);return{...l,repos:u}}async function P(e,r,n,o){let i=o??t(),a=A.test(e),s=e;if(!a){let t=await N(e,r);if(!t)return null;s=t.id}let l={};if(void 0!==n.name){let e=n.name?.trim();if(!e)throw Error("Project name cannot be empty");l.name=e}if(void 0!==n.slug){let e=n.slug?.trim();e&&(l.slug=e)}if(void 0!==n.description&&(l.description=n.description),void 0!==n.metadata&&(l.metadata=n.metadata),void 0!==n.ci_cd_info&&(l.ci_cd_info=n.ci_cd_info),void 0!==n.workflow_id&&(l.workflow_id=n.workflow_id),Object.keys(l).length){let{error:e}=await i.from("projects").update(l).eq("id",s).eq("user_id",r);if(e)throw e}if(n.repos){let{error:e}=await i.from("project_repos").delete().eq("project_id",s);if(e&&!u(e,"project_repos"))throw e;await D(s,n.repos,i)}return L(s,r)}async function W(e,r,n){let o=n??t(),{error:i}=await o.from("projects").delete().eq("id",e).eq("user_id",r);if(i)throw i}async function U(e,r,n){let o=n??t(),{data:i,error:a}=await o.from("projects").select("id, slug").eq("id",e).eq("user_id",r).maybeSingle();if(a)throw a;if(!i)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(i.slug||"").trim().toLowerCase(),u=(s||[]).filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t||t===d}).map(e=>e.id);if(!u.length)return{updatedCount:0,taskIds:[]};let{error:c}=await o.from("tasks").update({project:i.slug,project_id:i.id,updated_at:new Date().toISOString()}).eq("user_id",r).is("project_id",null).in("id",u);if(c)throw c;return{updatedCount:u.length,taskIds:u}}let M="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"}],F=new Map(B.map(e=>[e.id,e]));async function G(e){let r=t(),{error:n}=await r.from("workflows").upsert({id:M,user_id:e||"00000000-0000-0000-0000-000000000000",name:"Default Workflow",definition:{}},{onConflict:"id"});if(n)throw n;let{error:o}=await r.from("workflow_nodes").upsert(B.map(e=>({...e,workflow_id:M,metadata:{}})),{onConflict:"id"});if(o)throw o;let{error:i}=await r.from("workflow_transitions").upsert([{workflow_id:M,from_node_id:"00000000-0000-0000-0001-000000000001",to_node_id:"00000000-0000-0000-0001-000000000002",condition:"done",priority:0,metadata:{}},{workflow_id:M,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(i)throw i}async function Q(e){let r=t(),{data:n,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(u(o,"workflows"))return[];throw o}return n||[]}async function H(e,r){let n=t().from("workflows").select("*").eq("id",e),{data:o,error:i}=await n.maybeSingle();if(i){if(u(i,"workflows"))return null;throw i}return o}async function V(e,r,n){let o=t(),i={updated_at:new Date().toISOString()};void 0!==n.definition&&(i.definition=n.definition),void 0!==n.name&&(i.name=n.name),void 0!==n.description&&(i.description=n.description);let{data:a,error:s}=await o.from("workflows").update(i).eq("id",e).select().single();if(s)throw s;return a}async function J(e){let r=t(),{data:n,error:o}=await r.from("workflow_nodes").select("*").eq("workflow_id",e).order("position",{ascending:!0});if(o){if(u(o,"workflow_nodes"))return[];throw o}return n||[]}async function K(e,r,n){let o=t();if(e===M&&await G(r),!await H(e,r))throw Error("Workflow not found");if(e===M){let t=n.map(t=>{let r=F.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 J(e)}return await Promise.all(n.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:n}=await o.from("workflow_nodes").update(r).eq("workflow_id",e).eq("id",t.id);if(n)throw n})),J(e)}async function Y(e,r){let n=t(),{data:o,error:i}=await n.from("workflow_nodes").select("*").eq("workflow_id",e).eq("name",r).maybeSingle();if(i){if(u(i,"workflow_nodes"))return null;throw i}return o}async function X(e){let r=t(),{data:n,error:o}=await r.from("workflow_transitions").select("*").eq("workflow_id",e).order("priority",{ascending:!0});if(o){if(u(o,"workflow_transitions"))return[];throw o}return n||[]}async function z(e,r){let n=t(),{data:o,error:i}=await n.from("workflow_transitions").select("*").eq("workflow_id",e).eq("from_node_id",r).order("priority",{ascending:!0});if(i){if(u(i,"workflow_transitions"))return[];throw i}return o||[]}async function Z(e,t){let r=await H(e,t);if(!r)return null;let[n,o]=await Promise.all([J(e),X(e)]);return{...r,nodes:n,transitions:o}}async function ee(e,r={}){let n=t(),o=Math.max(1,Math.min(2e3,Number(r.limit??r.tail??500))),i="string"==typeof r.after&&r.after.trim()?r.after.trim():null,a=i?null:void 0===r.tail?o:Number(r.tail),s=null!==a&&Number.isFinite(a)&&a>0,l=n.from("task_logs").select("*").eq("task_id",e);r.nodeId&&(l=l.eq("node_id",r.nodeId)),l=i?l.gt("created_at",i).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:u}=await l;if(u)throw u;let c=d||[];return i?c:s?c.slice().reverse():c}async function et(e,r,n,o){let i=t(),{data:a,error:s}=await i.from("task_logs").insert({task_id:e,content:r,log_type:n,...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 en(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,t):0}async function eo(e){let r=t(),n={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:en(e.estimatedCost)},{data:o,error:i}=await r.from("task_costs").insert(n).select().single();if(i)throw i;return o}async function ei(e){let r=t(),{data:n,error:o}=await r.from("task_costs").select("*").eq("task_id",e).order("created_at",{ascending:!0});if(o)throw o;return n||[]}async function ea(e){return function(e){let t={},r=0,n=0,o=0;for(let i of e){let e=i.stage||"unknown",a=er(i.input_tokens),s=er(i.output_tokens),l=en(i.estimated_cost??0);r+=a,n+=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:n,total_cost:o,per_stage:Object.values(t).sort((e,t)=>e.stage.localeCompare(t.stage))}}(await ei(e))}async function es(e){let r=t(),{data:n,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 n||[]}async function el(e,r,n,o){let i=t(),{data:a,error:s}=await i.from("task_comments").insert({task_id:e,content:r,author_type:n,author_id:o??null}).select().single();if(s)throw s;return a}async function ed(e,r){let n=t(),{data:o,error:i}=await n.from("task_comments").select("author_id, author_type").eq("id",e).single();if(i)throw i;if(!o)throw Error("Comment not found");if("user"!==o.author_type||o.author_id!==r)throw Error("Unauthorized");let{error:a}=await n.from("task_comments").update({deleted_at:new Date().toISOString()}).eq("id",e).is("deleted_at",null);if(a)throw a}async function eu(e,r,n){let o=t().from("learnings").select("*").eq("scope",e).order("created_at",{ascending:!1});r&&(o=o.eq("scope_id",r)),n&&(o=o.eq("user_id",n));let{data:i,error:a}=await o;if(a)throw a;return i||[]}async function ec(e,r,n,o){let i=t(),{data:a,error:s}=await i.from("learnings").insert({scope:e,scope_id:n,content:r,user_id:o}).select().single();if(s)throw s;return a}async function ep(e,r){let n=t().from("learnings").delete().eq("id",e);r&&(n=n.eq("user_id",r));let{error:o}=await n;if(o)throw o}async function ef(e,r){let n=t().from("stage_prompts").select("*").eq("workflow_id",r).order("stage",{ascending:!0});n=e?n.or(`user_id.eq.${e},is_default.eq.true`):n.eq("is_default",!0);let{data:o,error:i}=await n;if(i)throw i;return o||[]}async function eg(e,r,n){let o=t();if(r){let{data:t}=await o.from("stage_prompts").select("*").eq("workflow_id",n).eq("stage",e).eq("user_id",r).single();if(t)return t}let{data:i}=await o.from("stage_prompts").select("*").eq("workflow_id",n).eq("stage",e).eq("is_default",!0).single();return i||null}async function em(e,r,n=[],o,i,a){let s=t(),l={stage:e,prompt:r,outputs:n,user_id:o,is_default:!o,workflow_id:a};i&&(void 0!==i.swarm&&(l.swarm=i.swarm),void 0!==i.provider&&(l.provider=i.provider),void 0!==i.model&&(l.model=i.model),void 0!==i.swarm_models&&(l.swarm_models=i.swarm_models));let{data:d,error:u}=await s.from("stage_prompts").upsert(l,{onConflict:o?"workflow_id,stage,user_id":"workflow_id,stage,is_default"}).select().single();if(u)throw u;return d}async function ew(e,r){let n=t().from("stage_prompts").delete().eq("id",e);r&&(n=n.eq("user_id",r));let{error:o}=await n;if(o)throw o}async function eh(e){let r=t(),{data:n,error:o}=await r.from("agents").select("*").eq("user_id",e).order("created_at",{ascending:!1});if(o){if(u(o,"agents"))return[];throw o}return n||[]}async function ey(e,r){let n=t(),{data:o,error:i}=await n.from("agents").select("*").eq("id",e).eq("user_id",r).maybeSingle();if(i){if("PGRST116"===i.code||u(i,"agents"))return null;throw i}return o}async function ek(e,r){let n=t(),o={user_id:e,name:r.name,style:r.style,description:r.description??null,config:r.config??{}},{data:i,error:a}=await n.from("agents").insert(o).select().single();if(a){if(u(a,"agents"))throw Error("Agents table does not exist");throw a}return i}async function e_(e,r,n){let o=t(),i={updated_at:new Date().toISOString()};if(void 0!==n.name&&(i.name=n.name),void 0!==n.style&&(i.style=n.style),void 0!==n.description&&(i.description=n.description),void 0!==n.config&&(i.config=n.config),1===Object.keys(i).length)return ey(e,r);let{data:a,error:s}=await o.from("agents").update(i).eq("id",e).eq("user_id",r).select().single();if(s){if("PGRST116"===s.code||u(s,"agents"))return null;throw s}return a}async function eS(e,r){let n=t(),{error:o}=await n.from("agents").delete().eq("id",e).eq("user_id",r);if(o&&!u(o,"agents"))throw o}e.s(["addLearning",()=>ec,"addTaskComment",()=>el,"addTaskCostEntry",()=>eo,"addTaskLog",()=>et,"appendRunToIndex",()=>E,"assignOrphanTasksToProject",()=>U,"createAgent",()=>ek,"createProject",()=>R,"createTask",()=>v,"deleteAgent",()=>eS,"deleteLearning",()=>ep,"deleteProject",()=>W,"deleteStagePrompt",()=>ew,"deleteTask",()=>j,"deleteTaskComment",()=>ed,"ensureNoCircularDependency",()=>k,"getAgent",()=>ey,"getAgents",()=>eh,"getLearnings",()=>eu,"getNextQueuedTask",()=>q,"getProjectBySlug",()=>N,"getProjectRepos",()=>O,"getProjectWithRepos",()=>L,"getProjects",()=>C,"getStagePrompt",()=>eg,"getStagePrompts",()=>ef,"getTask",()=>b,"getTaskBySlug",()=>x,"getTaskComments",()=>es,"getTaskCostEntries",()=>ei,"getTaskCostSummary",()=>ea,"getTaskLogs",()=>ee,"getTasks",()=>$,"getUserSettings",()=>c,"getWorkflow",()=>H,"getWorkflowNodeByName",()=>Y,"getWorkflowNodes",()=>J,"getWorkflowTransitions",()=>X,"getWorkflowTransitionsFromNode",()=>z,"getWorkflowWithGraph",()=>Z,"getWorkflows",()=>Q,"parseFrontmatter",()=>y,"updateAgent",()=>e_,"updateProject",()=>P,"updateTask",()=>I,"updateWorkflow",()=>V,"updateWorkflowNodes",()=>K,"upsertStagePrompt",()=>em,"upsertUserSettings",()=>p],8112)},29012,e=>{"use strict";var t=e.i(8112),r=e.i(41754);class n extends Error{constraint;detail;constructor(e,t){super(e),this.name="ConflictError",this.constraint=t?.constraint,this.detail=t?.detail}}class o extends Error{code;constructor(e,t){super(e),this.name="RetryableError",this.code=t}}class i 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 a(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 o(r,t||"SQLITE_BUSY");throw e}async function s(e){try{return await e()}catch(e){if(e instanceof n||e instanceof o||e instanceof i)throw e;a(e)}}class l{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 o||e instanceof i)throw e;a(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 s(()=>t.createTask(e,r,n))}async updateTask(e,n,o,a){let l=a?.expectedVersion;if(void 0!==l){let d=(0,r.getSQLiteDb)();if(0===d.prepare("UPDATE tasks SET version = version + 1 WHERE id = ? AND version = ?").run(e,l).changes){let t=d.prepare("SELECT version FROM tasks WHERE id = ?").get(e);throw new i("task",e,l,t?.version)}let{expectedVersion:u,...c}=a??{};return s(()=>t.updateTask(e,n,o,c))}return(0,r.getSQLiteDb)().prepare("UPDATE tasks SET version = version + 1 WHERE id = ?").run(e),s(()=>t.updateTask(e,n,o,a))}appendRunToIndex(e,r,n){return t.appendRunToIndex(e,r,n)}deleteTask(e,r){return s(()=>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 s(()=>t.createProject(e,r,n))}updateProject(e,r,n,o){return t.updateProject(e,r,n,o)}deleteProject(e,r,n){return s(()=>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,o){return s(()=>t.addTaskLog(e,r,n,o))}addTaskCostEntry(e){return s(()=>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,o){return s(()=>t.addTaskComment(e,r,n,o))}deleteTaskComment(e,r){return s(()=>t.deleteTaskComment(e,r))}getLearnings(e,r,n){return t.getLearnings(e,r,n)}addLearning(e,r,n,o){return s(()=>t.addLearning(e,r,n,o))}deleteLearning(e,r){return s(()=>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,o,i,a){return s(()=>t.upsertStagePrompt(e,r,n,o,i,a))}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 s(()=>t.createAgent(e,r))}updateAgent(e,r,n){return t.updateAgent(e,r,n)}deleteAgent(e,r){return t.deleteAgent(e,r)}getUserSettings(e){return t.getUserSettings(e)}upsertUserSettings(e,r,n){return s(()=>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",()=>l],29012)},27743,e=>{"use strict";let t=function(){let{SQLiteAdapter:t}=e.r(29012);return new t}();var r=e.i(8112);let n=[["INTAKE","PROGRESS","DONE"]];async function o({workflowId:e,currentNodeName:t,decision:n,retryCount:o,maxRetries:i=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 a=await (0,r.getWorkflowNodeByName)(e,t);if(!a)return{nextNodeName:t,nextStatus:"blocked",retryCount:o,error:`Node '${t}' not found in workflow`,appendLog:{content:`Workflow error: node '${t}' not found`,logType:"error"},nodeConfig:null};if("terminal"===a.node_type)return{nextNodeName:t,nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at ${a.label||t}`,logType:"checkpoint"},nodeConfig:a};if("blocked"===n)return{nextNodeName:t,nextStatus:"blocked",retryCount:o,error:null,appendLog:{content:"Blocked: additional input required.",logType:"system"},nodeConfig:a};let s=await (0,r.getWorkflowTransitionsFromNode)(e,a.id),l=function(e){switch(e){case"done":default:return"done";case"blocked":return"blocked";case"failed":case"not_done":return"failed"}}(n),d=s.find(e=>e.condition===l);if(d){let o=(await (0,r.getWorkflowNodes)(e)).find(e=>e.id===d.to_node_id);if(o){let e="terminal"===o.node_type;return{nextNodeName:o.name,nextStatus:e?"completed":"queued",retryCount:0,error:null,appendLog:{content:"done"===n?`Stage completed: ${a.label||t}`:`Transition to ${o.label||o.name}`,logType:"done"===n?"checkpoint":"system"},nodeConfig:o}}}if("done"===n)return{nextNodeName:t,nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at ${a.label||t}`,logType:"checkpoint"},nodeConfig:a};let u=o+1;return u<=i?{nextNodeName:t,nextStatus:"queued",retryCount:u,error:null,appendLog:{content:`Retrying (${u}/${i}) for ${a.label||t}`,logType:"system"},nodeConfig:a}:{nextNodeName:t,nextStatus:"failed",retryCount:u,error:"Task failed after max retries.",appendLog:{content:"Task failed after max retries.",logType:"error"},nodeConfig:a}}var i=e.i(54799),a=e.i(33405);let s=e=>"string"==typeof e&&e.trim().length>0,l=e=>({push:e,flush:()=>{}}),d=e=>{let t="",r=0,n=!1,o=t=>{let o=t.trim();if(o)try{let t=JSON.parse(o);n=!0;let i=(e=>{if(!e||"object"!=typeof e)return"";if("assistant"===e.type)return(Array.isArray(e?.message?.content)?e.message.content:[]).flatMap(e=>e?.type==="text"&&s(e.text)?[e.text]:[]).join("");let t=e?.event;return"stream_event"===e.type&&t?.type==="content_block_delta"&&t?.delta?.type==="text_delta"&&s(t?.delta?.text)?t.delta.text:""})(t);if(!i||t?.type==="assistant"&&r>0)return;r+=i.length,e(i)}catch{n||e(`${t}
9
9
  `)}};return{push:e=>{for(t+=e;;){let e=t.indexOf("\n");if(-1===e)break;o(t.slice(0,e)),t=t.slice(e+1)}},flush:()=>{t.trim()&&o(t),t=""}}},u=e=>{let t="",r=!1,n="",o=t=>{let o=t.trim();if(o)try{let t=JSON.parse(o);r=!0,t?.type==="message"&&t?.role==="assistant"&&s(t?.content)&&((t,r)=>{if(t){if(r){if(n&&t.startsWith(n)){let r=t.slice(n.length);r&&e(r),n=t;return}e(t),n+=t;return}if(n&&t.startsWith(n)){let r=t.slice(n.length);r&&e(r),n=t;return}n||(e(t),n=t)}})(t.content,t?.delta===!0)}catch{r||e(`${t}
10
10
  `)}};return{push:e=>{for(t+=e;;){let e=t.indexOf("\n");if(-1===e)break;o(t.slice(0,e)),t=t.slice(e+1)}},flush:()=>{t.trim()&&o(t),t=""}}},c=e=>{let t="",r=!1,n=new Set,o=t=>{let o=t.trim();if(o)try{let t=JSON.parse(o);if(r=!0,t?.type==="item.completed"&&s(t?.item?.id)){if(n.has(t.item.id))return;n.add(t.item.id)}let i=t&&"object"==typeof t?"item.completed"===t.type&&t.item?.type==="agent_message"&&s(t.item?.text)?t.item.text:"item.delta"===t.type&&t.item?.type==="agent_message"&&s(t.delta?.text)?t.delta.text:"":"";i&&e(i)}catch{r||e(`${t}
11
11
  `)}};return{push:e=>{for(t+=e;;){let e=t.indexOf("\n");if(-1===e)break;o(t.slice(0,e)),t=t.slice(e+1)}},flush:()=>{t.trim()&&o(t),t=""}}},p=e=>{let t="",r=!1,n=[/^Thinking\.\.\./,/^<think>/i],o=[/\.\.\.done thinking\.?\s*/,/<\/think>/i];return{push:i=>{t+=i,(()=>{for(;t.length>0;){if(r){let e=-1,n=0;for(let r of o){let o=t.match(r);o&&void 0!==o.index&&(o.index,o[0].length,(-1===e||o.index<e)&&(e=o.index,n=o[0].length))}if(-1!==e){t=t.slice(e+n),r=!1,t=t.replace(/^\s*\n*/,"");continue}return}for(let o of n){let n=t.match(o);if(n&&void 0!==n.index){let o=t.slice(0,n.index);o&&e.push(o),t=t.slice(n.index+n[0].length),r=!0;break}}if(r)continue;let i=Math.max(0,t.length-30);i>0&&(e.push(t.slice(0,i)),t=t.slice(i));return}})()},flush:()=>{!r&&t&&e.push(t),t="",e.flush()}}};async function f({command:e,args:t,timeoutMs:r,signal:n,onDelta:o,onLog:i}){await new Promise((s,l)=>{i&&i("stderr",`$ ${e} ${t.map(e=>e.length>80?e.slice(0,80)+"…":e).join(" ")}
@@ -1,10 +1,10 @@
1
- module.exports=[62367,e=>{"use strict";let t={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["LOCAL_USER",0,t])},36420,e=>{"use strict";e.i(22734);var t=e.i(46786),r=e.i(14747);let s="3.35.0",n=["json1"],i=["fts5"],l=["nfs","smb","cifs","efs","fuse.sshfs"];function o(e,t){try{if("json1"===t)return e.prepare("SELECT json('{}')").get(),!0;if("fts5"===t)return e.exec("CREATE VIRTUAL TABLE IF NOT EXISTS _fts5_check USING fts5(x)"),e.exec("DROP TABLE IF EXISTS _fts5_check"),!0;return!1}catch{return!1}}function a(a,u){let p=[],h=a.prepare("SELECT sqlite_version() as v").get();for(let e of(0>function(e,t){let r=e.split(".").map(Number),s=t.split(".").map(Number);for(let e=0;e<3;e++){let t=(r[e]||0)-(s[e]||0);if(0!==t)return t}return 0}(h.v,s)&&p.push({kind:"version_mismatch",message:`SQLite version ${h.v} is below minimum ${s}`,found:h.v,required:`>= ${s}`,fix:"darwin"===t.default.platform()?"brew install sqlite3 && npm rebuild better-sqlite3":"TURBOPACK unreachable"}),n))o(a,e)||p.push({kind:"missing_extension",message:`Required SQLite extension '${e}' is not available`,required:e,fix:`Rebuild SQLite with -DSQLITE_ENABLE_${e.toUpperCase()}=1, or use a system SQLite that includes it`});for(let e of i)o(a,e)||console.warn(`[startup] Recommended SQLite extension '${e}' is not available. Full-text search will be disabled.`);let c=function(s){"linux"!==t.default.platform()&&t.default.platform();try{let n=r.default.resolve(s),{execSync:i}=e.r(33405);if("darwin"===t.default.platform()){let e=i(`df -T "${n}" 2>/dev/null || df "${n}"`,{encoding:"utf-8",timeout:3e3}).trim().split("\n");if(e.length>=2){let t=e[1].split(/\s+/),r=t[0]?.toLowerCase()||"";if(r.includes("://")||r.includes("nfs")||r.includes("smb"))return r}}}catch{}return null}(u);c&&l.some(e=>c.toLowerCase().includes(e))&&p.push({kind:"filesystem_error",message:`Database path '${u}' is on a network filesystem (${c})`,path:u,found:c,fix:"Move the database file to a local SSD. WAL mode requires local filesystem with reliable fsync."});try{a.pragma("journal_mode = wal"),a.pragma("foreign_keys = 1"),a.pragma("busy_timeout = 5000"),a.pragma("synchronous = 1"),a.pragma("cache_size = -64000");let e=a.pragma("journal_mode",{simple:!0}).toLowerCase(),t=new Set(["wal","delete"]);if(!t.has(e)){a.pragma("journal_mode = DELETE");let e=a.pragma("journal_mode",{simple:!0}).toLowerCase();t.has(e)?(a.pragma("synchronous = FULL"),console.warn(`[startup] WAL unavailable, using journal_mode=${e} with synchronous=FULL`)):p.push({kind:"pragma_error",message:`Failed to set journal_mode (got '${e}', tried WAL then DELETE)`,found:e,required:"wal or delete",fix:"Ensure the database file is on a local filesystem and no other process holds an exclusive lock."})}}catch(e){p.push({kind:"pragma_error",message:`Failed to apply required PRAGMAs: ${e.message}`,fix:"Check file permissions and ensure the database is not read-only."})}return p}e.s(["validateSQLiteEnvironment",()=>a])},74949,e=>{"use strict";var t=e.i(17920),r=e.i(22734),s=e.i(14747),n=e.i(62367),i=e.i(36420);class l{expr;constructor(e){this.expr=e}}function o(e){return new l(e)}let a=null;function u(){if(a)return a;let e=process.env.SQLITE_DB_PATH||s.default.join(process.cwd(),"agx-board.db");r.default.existsSync(e),a=new t.default(e);let n=(0,i.validateSQLiteEnvironment)(a,e);if(n.length>0){let e=n.map(e=>` - ${e.message}${e.fix?` (fix: ${e.fix})`:""}`);throw Error(`SQLite startup validation failed:
2
- ${e.join("\n")}`)}return function(e){let t=s.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!r.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let n=r.default.readFileSync(t,"utf-8");e.exec(n)}(a),a}let p=new Set(["definition","depends_on","input","metadata","models","open_blockers","output","payload","run_index","stage_decisions","swarm_models"]);function h(e){return void 0===e?null:e instanceof Date?e.toISOString():e&&"object"==typeof e?JSON.stringify(e):e}function c(e,t){return null==t?null:t instanceof Date?t.toISOString():p.has(e)?JSON.stringify(t):h(t)}function d(e){let t=(e||"*").trim();if(!t||"*"===t)return{columns:["*"],includeProjectRepos:!1};let r=t.includes("project_repos(*)"),s=t.replace(/project_repos\(\*\)/g,"").split(",").map(e=>e.trim()).filter(Boolean);return 0===s.length?{columns:["*"],includeProjectRepos:r}:{columns:s,includeProjectRepos:r}}class m{table;operation="select";filters=[];orderSpecs=[];limitValue=null;selectColumns="*";returningColumns=null;singleMode="none";payload=null;upsertOptions=null;constructor(e){this.table=e}select(e="*"){return"select"===this.operation?this.selectColumns=e:this.returningColumns=e||"*",this}insert(e){return this.operation="insert",this.payload=e,this}update(e){return this.operation="update",this.payload=e,this}delete(){return this.operation="delete",this}upsert(e,t){return this.operation="upsert",this.payload=e,this.upsertOptions=t||{},this}eq(e,t){return this.filters.push({op:"eq",column:e,value:t}),this}neq(e,t){return this.filters.push({op:"neq",column:e,value:t}),this}gt(e,t){return this.filters.push({op:"gt",column:e,value:t}),this}gte(e,t){return this.filters.push({op:"gte",column:e,value:t}),this}lt(e,t){return this.filters.push({op:"lt",column:e,value:t}),this}lte(e,t){return this.filters.push({op:"lte",column:e,value:t}),this}is(e,t){return this.filters.push({op:"is",column:e,value:t}),this}in(e,t){return this.filters.push({op:"in",column:e,value:t||[]}),this}contains(e,t){return this.filters.push({op:"contains",column:e,value:t}),this}or(e){return this.filters.push({op:"or",expression:e}),this}order(e,t){return this.orderSpecs.push({column:e,...t||{}}),this}limit(e){return this.limitValue=e,this}single(){return this.singleMode="single",this.execute()}maybeSingle(){return this.singleMode="maybeSingle",this.execute()}then(e,t){return this.execute().then(e,t)}buildWhere(e,t){for(let r of this.filters){if("or"===r.op){let s=r.expression.split(",").map(e=>e.trim()).filter(Boolean).map(e=>{var r;let[s,n,...i]=e.split("."),l="true"===(r=i.join("."))||"false"!==r&&("null"===r?null:r);return"eq"===n?(t.push(h(l)),`${s} = ?`):"neq"===n?(t.push(h(l)),`${s} <> ?`):"is"===n?null===l?`${s} IS NULL`:(t.push(h(l)),`${s} IS ?`):"ilike"===n||"like"===n?(t.push(h(l)),`${s} LIKE ?`):"1=1"});s.length>0&&e.push(`(${s.join(" OR ")})`);continue}if("eq"===r.op)t.push(h(r.value)),e.push(`${r.column} = ?`);else if("neq"===r.op)t.push(h(r.value)),e.push(`${r.column} <> ?`);else if("gt"===r.op)t.push(h(r.value)),e.push(`${r.column} > ?`);else if("gte"===r.op)t.push(h(r.value)),e.push(`${r.column} >= ?`);else if("lt"===r.op)t.push(h(r.value)),e.push(`${r.column} < ?`);else if("lte"===r.op)t.push(h(r.value)),e.push(`${r.column} <= ?`);else if("is"===r.op)null===r.value?e.push(`${r.column} IS NULL`):(t.push(h(r.value)),e.push(`${r.column} IS ?`));else if("contains"===r.op){let s=(r.value||[]).map(h);if(0===s.length)e.push("1=1");else{let n=s.map(()=>"?").join(", ");t.push(...s),e.push(`(SELECT COUNT(*) FROM json_each(${r.column}) WHERE json_each.value IN (${n})) = ${s.length}`)}}else if("in"===r.op)if(r.value&&0!==r.value.length){let s=(r.value||[]).map(h),n=s.map(()=>"?").join(", ");t.push(...s),e.push(`${r.column} IN (${n})`)}else e.push("1=0")}}executeSelect(){try{let e=u(),{columns:t,includeProjectRepos:r}=d(this.selectColumns),s=[],n=[];this.buildWhere(n,s);let i=`SELECT ${t.join(", ")} FROM ${this.table}`;if(n.length>0&&(i+=` WHERE ${n.join(" AND ")}`),this.orderSpecs.length>0){let e=this.orderSpecs.map(e=>{let t=!1===e.ascending?"DESC":"ASC";return!0===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 0 ELSE 1 END, ${e.column} ${t}`:!1===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 1 ELSE 0 END, ${e.column} ${t}`:`${e.column} ${t}`}).join(", ");i+=` ORDER BY ${e}`}"number"==typeof this.limitValue&&(s.push(this.limitValue),i+=" LIMIT ?");let l=e.prepare(i).all(...s);if(l=l.map(g),r&&"projects"===this.table&&l.length>0){let t=l.map(e=>e.id).filter(Boolean);if(t.length>0){let r=t.map(()=>"?").join(", "),s=e.prepare(`SELECT * FROM project_repos WHERE project_id IN (${r})`).all(...t),n=new Map;for(let e of s){let t=n.get(e.project_id)||[];t.push(e),n.set(e.project_id,t)}l=l.map(e=>({...e,project_repos:n.get(e.id)||[]}))}}if("single"===this.singleMode){if(0===l.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:l[0],error:null}}if("maybeSingle"===this.singleMode)return{data:l[0]||null,error:null};return{data:l,error:null}}catch(e){return{data:null,error:e}}}executeInsertOrUpsert(){try{let e,t=u(),r=Array.isArray(this.payload)?this.payload:[this.payload];if(!r.length)return{data:[],error:null};let s=Array.from(r.reduce((e,t)=>{for(let r of Object.keys(t||{}))e.add(r);return e},new Set)),n=[],i=r.map(e=>{let t=s.map(t=>(n.push(c(t,e[t])),"?"));return`(${t.join(", ")})`}),l=`INSERT INTO ${this.table} (${s.join(", ")}) VALUES ${i.join(", ")}`;if("upsert"===this.operation){let e=this.upsertOptions?.onConflict||"",t=String(e).split(",").map(e=>e.trim()).filter(Boolean);if(t.length>0)if(this.upsertOptions?.ignoreDuplicates)l+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`;else{let e=s.filter(e=>!t.includes(e)).map(e=>`${e} = EXCLUDED.${e}`);e.length>0?l+=` ON CONFLICT (${t.join(", ")}) DO UPDATE SET ${e.join(", ")}`:l+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`}}if(this.returningColumns){let{columns:e}=d(this.returningColumns);l+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(l).all(...n)).map(g):(t.prepare(l).run(...n),e=[]);let o=this.returningColumns?e:null;if("single"===this.singleMode||"maybeSingle"===this.singleMode)return{data:o&&o[0]||null,error:null};return{data:o,error:null}}catch(e){return{data:null,error:e}}}executeUpdateOrDelete(){try{let e,t=u(),r=[],s=[],n=[];this.buildWhere(n,s);let i="";if("update"===this.operation){let e=Object.keys(this.payload||{}).map(e=>{let t=this.payload[e];return t instanceof l?`${e} = ${t.expr}`:(r.push(c(e,t)),`${e} = ?`)});i=`UPDATE ${this.table} SET ${e.join(", ")}`}else i=`DELETE FROM ${this.table}`;n.length>0&&(i+=` WHERE ${n.join(" AND ")}`);let o=[...r,...s];if(this.returningColumns){let{columns:e}=d(this.returningColumns);i+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(i).all(...o)).map(g):(t.prepare(i).run(...o),e=[]);let a=this.returningColumns?e:null;if("single"===this.singleMode){if(!a||0===a.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:a[0],error:null}}if("maybeSingle"===this.singleMode)return{data:a?.[0]||null,error:null};return{data:a,error:null}}catch(e){return{data:null,error:e}}}async execute(){return"select"===this.operation?this.executeSelect():"insert"===this.operation||"upsert"===this.operation?this.executeInsertOrUpsert():this.executeUpdateOrDelete()}}let f=new Set([...p,"depends_on","open_blockers","swarm_models","run_index","stage_decisions","definition","metadata","models","config","policy","done_criteria","outputs","task_snapshot","data_mapping"]);function g(e){if(!e||"object"!=typeof e)return e;let t={...e};for(let e of Object.keys(t)){if(f.has(e)&&"string"==typeof t[e])try{t[e]=JSON.parse(t[e])}catch{}("swarm"===e||"is_default"===e||"is_public"===e||"had_graph_before"===e)&&(0===t[e]?t[e]=!1:1===t[e]&&(t[e]=!0))}return t}function _(){return{from:e=>new m(e),auth:{getUser:async()=>({data:{user:{id:n.LOCAL_USER.id,email:n.LOCAL_USER.email,user_metadata:{name:n.LOCAL_USER.name,full_name:n.LOCAL_USER.name}}},error:null}),exchangeCodeForSession:async()=>({error:null}),refreshSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600},user:{id:n.LOCAL_USER.id,email:n.LOCAL_USER.email}},error:null})},async rpc(e,t){if("check_rate_limit"!==e)return{data:null,error:{message:`Unsupported rpc: ${e}`}};let r=u(),s=t.p_user_id,n=t.p_endpoint,i=Number(t.p_limit||60),l=Number(t.p_window_seconds||60),o=new Date(Math.floor(new Date().getTime()/(1e3*l))*l*1e3);try{let e=`
1
+ module.exports=[62367,e=>{"use strict";let t={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["LOCAL_USER",0,t])},36420,e=>{"use strict";e.i(22734);var t=e.i(46786),r=e.i(14747);let s="3.35.0",i=["json1"],n=["fts5"],l=["nfs","smb","cifs","efs","fuse.sshfs"];function o(e,t){try{if("json1"===t)return e.prepare("SELECT json('{}')").get(),!0;if("fts5"===t)return e.exec("CREATE VIRTUAL TABLE IF NOT EXISTS _fts5_check USING fts5(x)"),e.exec("DROP TABLE IF EXISTS _fts5_check"),!0;return!1}catch{return!1}}function a(a,u){let p=[],h=a.prepare("SELECT sqlite_version() as v").get();for(let e of(0>function(e,t){let r=e.split(".").map(Number),s=t.split(".").map(Number);for(let e=0;e<3;e++){let t=(r[e]||0)-(s[e]||0);if(0!==t)return t}return 0}(h.v,s)&&p.push({kind:"version_mismatch",message:`SQLite version ${h.v} is below minimum ${s}`,found:h.v,required:`>= ${s}`,fix:"darwin"===t.default.platform()?"brew install sqlite3 && npm rebuild better-sqlite3":"TURBOPACK unreachable"}),i))o(a,e)||p.push({kind:"missing_extension",message:`Required SQLite extension '${e}' is not available`,required:e,fix:`Rebuild SQLite with -DSQLITE_ENABLE_${e.toUpperCase()}=1, or use a system SQLite that includes it`});for(let e of n)o(a,e)||console.warn(`[startup] Recommended SQLite extension '${e}' is not available. Full-text search will be disabled.`);let c=function(s){"linux"!==t.default.platform()&&t.default.platform();try{let i=r.default.resolve(s),{execSync:n}=e.r(33405);if("darwin"===t.default.platform()){let e=n(`df -T "${i}" 2>/dev/null || df "${i}"`,{encoding:"utf-8",timeout:3e3}).trim().split("\n");if(e.length>=2){let t=e[1].split(/\s+/),r=t[0]?.toLowerCase()||"";if(r.includes("://")||r.includes("nfs")||r.includes("smb"))return r}}}catch{}return null}(u);c&&l.some(e=>c.toLowerCase().includes(e))&&p.push({kind:"filesystem_error",message:`Database path '${u}' is on a network filesystem (${c})`,path:u,found:c,fix:"Move the database file to a local SSD. WAL mode requires local filesystem with reliable fsync."});try{a.pragma("journal_mode = wal"),a.pragma("foreign_keys = 1"),a.pragma("busy_timeout = 5000"),a.pragma("synchronous = 1"),a.pragma("cache_size = -64000");let e=a.pragma("journal_mode",{simple:!0}).toLowerCase(),t=new Set(["wal","delete"]);if(!t.has(e)){a.pragma("journal_mode = DELETE");let e=a.pragma("journal_mode",{simple:!0}).toLowerCase();t.has(e)?(a.pragma("synchronous = FULL"),console.warn(`[startup] WAL unavailable, using journal_mode=${e} with synchronous=FULL`)):p.push({kind:"pragma_error",message:`Failed to set journal_mode (got '${e}', tried WAL then DELETE)`,found:e,required:"wal or delete",fix:"Ensure the database file is on a local filesystem and no other process holds an exclusive lock."})}}catch(e){p.push({kind:"pragma_error",message:`Failed to apply required PRAGMAs: ${e.message}`,fix:"Check file permissions and ensure the database is not read-only."})}return p}e.s(["validateSQLiteEnvironment",()=>a])},74949,e=>{"use strict";var t=e.i(17920),r=e.i(22734),s=e.i(14747),i=e.i(46786),n=e.i(62367),l=e.i(36420);let o=process.env.AGX_DATA_DIR||s.default.join(i.default.homedir(),".agx");class a{expr;constructor(e){this.expr=e}}function u(e){return new a(e)}let p=null;function h(){if(p)return p;let e=process.env.SQLITE_DB_PATH||s.default.join(o,"agx-board.db");r.default.existsSync(e),p=new t.default(e);let i=(0,l.validateSQLiteEnvironment)(p,e);if(i.length>0){let e=i.map(e=>` - ${e.message}${e.fix?` (fix: ${e.fix})`:""}`);throw Error(`SQLite startup validation failed:
2
+ ${e.join("\n")}`)}return function(e){let t=s.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!r.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let i=r.default.readFileSync(t,"utf-8");e.exec(i)}(p),p}let c=new Set(["definition","depends_on","input","metadata","models","open_blockers","output","payload","run_index","stage_decisions","swarm_models"]);function d(e){return void 0===e?null:e instanceof Date?e.toISOString():e&&"object"==typeof e?JSON.stringify(e):e}function m(e,t){return null==t?null:t instanceof Date?t.toISOString():c.has(e)?JSON.stringify(t):d(t)}function f(e){let t=(e||"*").trim();if(!t||"*"===t)return{columns:["*"],includeProjectRepos:!1};let r=t.includes("project_repos(*)"),s=t.replace(/project_repos\(\*\)/g,"").split(",").map(e=>e.trim()).filter(Boolean);return 0===s.length?{columns:["*"],includeProjectRepos:r}:{columns:s,includeProjectRepos:r}}class g{table;operation="select";filters=[];orderSpecs=[];limitValue=null;selectColumns="*";returningColumns=null;singleMode="none";payload=null;upsertOptions=null;constructor(e){this.table=e}select(e="*"){return"select"===this.operation?this.selectColumns=e:this.returningColumns=e||"*",this}insert(e){return this.operation="insert",this.payload=e,this}update(e){return this.operation="update",this.payload=e,this}delete(){return this.operation="delete",this}upsert(e,t){return this.operation="upsert",this.payload=e,this.upsertOptions=t||{},this}eq(e,t){return this.filters.push({op:"eq",column:e,value:t}),this}neq(e,t){return this.filters.push({op:"neq",column:e,value:t}),this}gt(e,t){return this.filters.push({op:"gt",column:e,value:t}),this}gte(e,t){return this.filters.push({op:"gte",column:e,value:t}),this}lt(e,t){return this.filters.push({op:"lt",column:e,value:t}),this}lte(e,t){return this.filters.push({op:"lte",column:e,value:t}),this}is(e,t){return this.filters.push({op:"is",column:e,value:t}),this}in(e,t){return this.filters.push({op:"in",column:e,value:t||[]}),this}contains(e,t){return this.filters.push({op:"contains",column:e,value:t}),this}or(e){return this.filters.push({op:"or",expression:e}),this}order(e,t){return this.orderSpecs.push({column:e,...t||{}}),this}limit(e){return this.limitValue=e,this}single(){return this.singleMode="single",this.execute()}maybeSingle(){return this.singleMode="maybeSingle",this.execute()}then(e,t){return this.execute().then(e,t)}buildWhere(e,t){for(let r of this.filters){if("or"===r.op){let s=r.expression.split(",").map(e=>e.trim()).filter(Boolean).map(e=>{var r;let[s,i,...n]=e.split("."),l="true"===(r=n.join("."))||"false"!==r&&("null"===r?null:r);return"eq"===i?(t.push(d(l)),`${s} = ?`):"neq"===i?(t.push(d(l)),`${s} <> ?`):"is"===i?null===l?`${s} IS NULL`:(t.push(d(l)),`${s} IS ?`):"ilike"===i||"like"===i?(t.push(d(l)),`${s} LIKE ?`):"1=1"});s.length>0&&e.push(`(${s.join(" OR ")})`);continue}if("eq"===r.op)t.push(d(r.value)),e.push(`${r.column} = ?`);else if("neq"===r.op)t.push(d(r.value)),e.push(`${r.column} <> ?`);else if("gt"===r.op)t.push(d(r.value)),e.push(`${r.column} > ?`);else if("gte"===r.op)t.push(d(r.value)),e.push(`${r.column} >= ?`);else if("lt"===r.op)t.push(d(r.value)),e.push(`${r.column} < ?`);else if("lte"===r.op)t.push(d(r.value)),e.push(`${r.column} <= ?`);else if("is"===r.op)null===r.value?e.push(`${r.column} IS NULL`):(t.push(d(r.value)),e.push(`${r.column} IS ?`));else if("contains"===r.op){let s=(r.value||[]).map(d);if(0===s.length)e.push("1=1");else{let i=s.map(()=>"?").join(", ");t.push(...s),e.push(`(SELECT COUNT(*) FROM json_each(${r.column}) WHERE json_each.value IN (${i})) = ${s.length}`)}}else if("in"===r.op)if(r.value&&0!==r.value.length){let s=(r.value||[]).map(d),i=s.map(()=>"?").join(", ");t.push(...s),e.push(`${r.column} IN (${i})`)}else e.push("1=0")}}executeSelect(){try{let e=h(),{columns:t,includeProjectRepos:r}=f(this.selectColumns),s=[],i=[];this.buildWhere(i,s);let n=`SELECT ${t.join(", ")} FROM ${this.table}`;if(i.length>0&&(n+=` WHERE ${i.join(" AND ")}`),this.orderSpecs.length>0){let e=this.orderSpecs.map(e=>{let t=!1===e.ascending?"DESC":"ASC";return!0===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 0 ELSE 1 END, ${e.column} ${t}`:!1===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 1 ELSE 0 END, ${e.column} ${t}`:`${e.column} ${t}`}).join(", ");n+=` ORDER BY ${e}`}"number"==typeof this.limitValue&&(s.push(this.limitValue),n+=" LIMIT ?");let l=e.prepare(n).all(...s);if(l=l.map(S),r&&"projects"===this.table&&l.length>0){let t=l.map(e=>e.id).filter(Boolean);if(t.length>0){let r=t.map(()=>"?").join(", "),s=e.prepare(`SELECT * FROM project_repos WHERE project_id IN (${r})`).all(...t),i=new Map;for(let e of s){let t=i.get(e.project_id)||[];t.push(e),i.set(e.project_id,t)}l=l.map(e=>({...e,project_repos:i.get(e.id)||[]}))}}if("single"===this.singleMode){if(0===l.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:l[0],error:null}}if("maybeSingle"===this.singleMode)return{data:l[0]||null,error:null};return{data:l,error:null}}catch(e){return{data:null,error:e}}}executeInsertOrUpsert(){try{let e,t=h(),r=Array.isArray(this.payload)?this.payload:[this.payload];if(!r.length)return{data:[],error:null};let s=Array.from(r.reduce((e,t)=>{for(let r of Object.keys(t||{}))e.add(r);return e},new Set)),i=[],n=r.map(e=>{let t=s.map(t=>(i.push(m(t,e[t])),"?"));return`(${t.join(", ")})`}),l=`INSERT INTO ${this.table} (${s.join(", ")}) VALUES ${n.join(", ")}`;if("upsert"===this.operation){let e=this.upsertOptions?.onConflict||"",t=String(e).split(",").map(e=>e.trim()).filter(Boolean);if(t.length>0)if(this.upsertOptions?.ignoreDuplicates)l+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`;else{let e=s.filter(e=>!t.includes(e)).map(e=>`${e} = EXCLUDED.${e}`);e.length>0?l+=` ON CONFLICT (${t.join(", ")}) DO UPDATE SET ${e.join(", ")}`:l+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`}}if(this.returningColumns){let{columns:e}=f(this.returningColumns);l+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(l).all(...i)).map(S):(t.prepare(l).run(...i),e=[]);let o=this.returningColumns?e:null;if("single"===this.singleMode||"maybeSingle"===this.singleMode)return{data:o&&o[0]||null,error:null};return{data:o,error:null}}catch(e){return{data:null,error:e}}}executeUpdateOrDelete(){try{let e,t=h(),r=[],s=[],i=[];this.buildWhere(i,s);let n="";if("update"===this.operation){let e=Object.keys(this.payload||{}).map(e=>{let t=this.payload[e];return t instanceof a?`${e} = ${t.expr}`:(r.push(m(e,t)),`${e} = ?`)});n=`UPDATE ${this.table} SET ${e.join(", ")}`}else n=`DELETE FROM ${this.table}`;i.length>0&&(n+=` WHERE ${i.join(" AND ")}`);let l=[...r,...s];if(this.returningColumns){let{columns:e}=f(this.returningColumns);n+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(n).all(...l)).map(S):(t.prepare(n).run(...l),e=[]);let o=this.returningColumns?e:null;if("single"===this.singleMode){if(!o||0===o.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:o[0],error:null}}if("maybeSingle"===this.singleMode)return{data:o?.[0]||null,error:null};return{data:o,error:null}}catch(e){return{data:null,error:e}}}async execute(){return"select"===this.operation?this.executeSelect():"insert"===this.operation||"upsert"===this.operation?this.executeInsertOrUpsert():this.executeUpdateOrDelete()}}let _=new Set([...c,"depends_on","open_blockers","swarm_models","run_index","stage_decisions","definition","metadata","models","config","policy","done_criteria","outputs","task_snapshot","data_mapping"]);function S(e){if(!e||"object"!=typeof e)return e;let t={...e};for(let e of Object.keys(t)){if(_.has(e)&&"string"==typeof t[e])try{t[e]=JSON.parse(t[e])}catch{}("swarm"===e||"is_default"===e||"is_public"===e||"had_graph_before"===e)&&(0===t[e]?t[e]=!1:1===t[e]&&(t[e]=!0))}return t}function E(){return{from:e=>new g(e),auth:{getUser:async()=>({data:{user:{id:n.LOCAL_USER.id,email:n.LOCAL_USER.email,user_metadata:{name:n.LOCAL_USER.name,full_name:n.LOCAL_USER.name}}},error:null}),exchangeCodeForSession:async()=>({error:null}),refreshSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600},user:{id:n.LOCAL_USER.id,email:n.LOCAL_USER.email}},error:null})},async rpc(e,t){if("check_rate_limit"!==e)return{data:null,error:{message:`Unsupported rpc: ${e}`}};let r=h(),s=t.p_user_id,i=t.p_endpoint,n=Number(t.p_limit||60),l=Number(t.p_window_seconds||60),o=new Date(Math.floor(new Date().getTime()/(1e3*l))*l*1e3);try{let e=`
3
3
  INSERT INTO rate_limits (user_id, endpoint, window_start, request_count)
4
4
  VALUES (?, ?, ?, 1)
5
5
  ON CONFLICT (user_id, endpoint, window_start)
6
6
  DO UPDATE SET request_count = rate_limits.request_count + 1
7
7
  RETURNING request_count
8
- `,t=r.prepare(e).get(s,n,o.toISOString());return{data:Number(t?.request_count||0)<=i,error:null}}catch(e){return{data:!1,error:e}}},channel:()=>({on(){return this},subscribe(e){return e&&e("SUBSCRIBED"),this}}),removeChannel(){}}}e.s(["SqlExpression",()=>l,"createAdminDbClientSQLite",()=>_,"getSQLiteDb",()=>u,"sqlExpr",()=>o])}];
8
+ `,t=r.prepare(e).get(s,i,o.toISOString());return{data:Number(t?.request_count||0)<=n,error:null}}catch(e){return{data:!1,error:e}}},channel:()=>({on(){return this},subscribe(e){return e&&e("SUBSCRIBED"),this}}),removeChannel(){}}}e.s(["SqlExpression",()=>a,"createAdminDbClientSQLite",()=>E,"getSQLiteDb",()=>h,"sqlExpr",()=>u])}];
9
9
 
10
10
  //# sourceMappingURL=Projects_Agents_agx-cloud_lib_8c82981b._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},17920,(e,t,r)=>{t.exports=e.x("better-sqlite3-e930ad348bee7320",()=>require("better-sqlite3-e930ad348bee7320"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},89970,e=>{"use strict";function t(){let{createAdminDbClientSQLite:t}=e.r(74949);return t()}e.i(62367),e.s(["createAdminDbClient",()=>t])},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},55192,e=>{"use strict";let t=Number(process.env.AGX_MAX_WORKERS)||10;class r{timestamps=[];lastWarning=0;WARNING_COOLDOWN_MS=6e4;record(){this.timestamps.push(Date.now())}check(){let e=Date.now(),t=e-1e4;this.timestamps=this.timestamps.filter(e=>e>=t);let r=this.timestamps.length/10,a=r>=40;return a&&e-this.lastWarning>this.WARNING_COOLDOWN_MS&&(this.lastWarning=e,console.warn(`[limits] Write QPS at ${r.toFixed(1)} — approaching ceiling of 50. See docs/LIMITS.md for mitigation steps.`)),{qps:r,warning:a}}}e.s(["MAX_WORKERS",0,t,"WRITE_QPS_CEILING",0,50,"WRITE_RATE_SAMPLE_WINDOW_MS",0,1e4,"WriteRateMonitor",()=>r])},27607,e=>{"use strict";var t=e.i(17920),r=e.i(66680);let a={randomUUID:r.randomUUID},s=new Uint8Array(256),n=s.length,i=[];for(let e=0;e<256;++e)i.push((e+256).toString(16).slice(1));let o=function(e,t,o){if(a.randomUUID&&!t&&!e)return a.randomUUID();var l=e,d=o;let u=(l=l||{}).random??l.rng?.()??(n>s.length-16&&((0,r.randomFillSync)(s),n=0),s.slice(n,n+=16));if(u.length<16)throw Error("Random bytes length must be >= 16");if(u[6]=15&u[6]|64,u[8]=63&u[8]|128,t){if((d=d||0)<0||d+16>t.length)throw RangeError(`UUID byte range ${d}:${d+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[d+e]=u[e];return t}return function(e,t=0){return(i[e[t+0]]+i[e[t+1]]+i[e[t+2]]+i[e[t+3]]+"-"+i[e[t+4]]+i[e[t+5]]+"-"+i[e[t+6]]+i[e[t+7]]+"-"+i[e[t+8]]+i[e[t+9]]+"-"+i[e[t+10]]+i[e[t+11]]+i[e[t+12]]+i[e[t+13]]+i[e[t+14]]+i[e[t+15]]).toLowerCase()}(u)};var l=e.i(14747),d=e.i(22734),u=e.i(36420),c=e.i(55192);class p{db;workers=new Map;pollingInterval=null;writeRateInterval=null;writeMonitor=new c.WriteRateMonitor;workerId;constructor(e){this.workerId=o();const r=e||process.env.SQLITE_QUEUE_PATH||l.default.join(process.cwd(),"agx-queue.db"),a=l.default.dirname(r);d.default.existsSync(a)||d.default.mkdirSync(a,{recursive:!0}),this.db=new t.default(r);const s=(0,u.validateSQLiteEnvironment)(this.db,r);if(s.length>0){const e=s.map(e=>e.message).join("; ");console.error(`[SQLiteQueueAdapter] Startup validation failed: ${e}`)}}async start(){this.initSchema(),this.startPolling()}async stop(){this.stopPolling(),this.db.close()}initSchema(){this.db.exec(`
1
+ module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},17920,(e,t,r)=>{t.exports=e.x("better-sqlite3-e930ad348bee7320",()=>require("better-sqlite3-e930ad348bee7320"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},89970,e=>{"use strict";function t(){let{createAdminDbClientSQLite:t}=e.r(74949);return t()}e.i(62367),e.s(["createAdminDbClient",()=>t])},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},55192,e=>{"use strict";let t=Number(process.env.AGX_MAX_WORKERS)||10;class r{timestamps=[];lastWarning=0;WARNING_COOLDOWN_MS=6e4;record(){this.timestamps.push(Date.now())}check(){let e=Date.now(),t=e-1e4;this.timestamps=this.timestamps.filter(e=>e>=t);let r=this.timestamps.length/10,a=r>=40;return a&&e-this.lastWarning>this.WARNING_COOLDOWN_MS&&(this.lastWarning=e,console.warn(`[limits] Write QPS at ${r.toFixed(1)} — approaching ceiling of 50. See docs/LIMITS.md for mitigation steps.`)),{qps:r,warning:a}}}e.s(["MAX_WORKERS",0,t,"WRITE_QPS_CEILING",0,50,"WRITE_RATE_SAMPLE_WINDOW_MS",0,1e4,"WriteRateMonitor",()=>r])},27607,e=>{"use strict";var t=e.i(17920),r=e.i(66680);let a={randomUUID:r.randomUUID},s=new Uint8Array(256),n=s.length,i=[];for(let e=0;e<256;++e)i.push((e+256).toString(16).slice(1));let o=function(e,t,o){if(a.randomUUID&&!t&&!e)return a.randomUUID();var l=e,d=o;let u=(l=l||{}).random??l.rng?.()??(n>s.length-16&&((0,r.randomFillSync)(s),n=0),s.slice(n,n+=16));if(u.length<16)throw Error("Random bytes length must be >= 16");if(u[6]=15&u[6]|64,u[8]=63&u[8]|128,t){if((d=d||0)<0||d+16>t.length)throw RangeError(`UUID byte range ${d}:${d+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[d+e]=u[e];return t}return function(e,t=0){return(i[e[t+0]]+i[e[t+1]]+i[e[t+2]]+i[e[t+3]]+"-"+i[e[t+4]]+i[e[t+5]]+"-"+i[e[t+6]]+i[e[t+7]]+"-"+i[e[t+8]]+i[e[t+9]]+"-"+i[e[t+10]]+i[e[t+11]]+i[e[t+12]]+i[e[t+13]]+i[e[t+14]]+i[e[t+15]]).toLowerCase()}(u)};var l=e.i(14747),d=e.i(22734),u=e.i(46786),c=e.i(36420),p=e.i(55192);let h=process.env.AGX_DATA_DIR||l.default.join(u.default.homedir(),".agx");class E{db;workers=new Map;pollingInterval=null;writeRateInterval=null;writeMonitor=new p.WriteRateMonitor;workerId;constructor(e){this.workerId=o();const r=e||process.env.SQLITE_QUEUE_PATH||l.default.join(h,"agx-queue.db"),a=l.default.dirname(r);d.default.existsSync(a)||d.default.mkdirSync(a,{recursive:!0}),this.db=new t.default(r);const s=(0,c.validateSQLiteEnvironment)(this.db,r);if(s.length>0){const e=s.map(e=>e.message).join("; ");console.error(`[SQLiteQueueAdapter] Startup validation failed: ${e}`)}}async start(){this.initSchema(),this.startPolling()}async stop(){this.stopPolling(),this.db.close()}initSchema(){this.db.exec(`
2
2
  CREATE TABLE IF NOT EXISTS agx_jobs (
3
3
  id TEXT PRIMARY KEY,
4
4
  queue TEXT NOT NULL,
@@ -20,7 +20,7 @@ module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/ap
20
20
  INSERT INTO agx_jobs (
21
21
  id, queue, data, status, created_at, start_after, retry_limit, priority
22
22
  ) VALUES (?, ?, ?, 'pending', ?, ?, ?, ?)
23
- `).run(a,e,JSON.stringify(t),s,n,r?.retryLimit??3,r?.priority??0),this.writeMonitor.record(),a}async work(e,t,r){this.workers.set(e,{handler:t,options:r||{},running:!0})}startPolling(){this.pollingInterval||(this.pollingInterval=setInterval(()=>this.poll(),1e3),this.writeRateInterval=setInterval(()=>this.writeMonitor.check(),c.WRITE_RATE_SAMPLE_WINDOW_MS))}stopPolling(){this.pollingInterval&&(clearInterval(this.pollingInterval),this.pollingInterval=null),this.writeRateInterval&&(clearInterval(this.writeRateInterval),this.writeRateInterval=null)}poll(){for(let[e,t]of this.workers)t.running&&this.processQueue(e,t)}processQueue(e,t){let r=t.options.batchSize||1,a=Date.now(),s=this.db.transaction(()=>{let t=this.db.prepare(`
23
+ `).run(a,e,JSON.stringify(t),s,n,r?.retryLimit??3,r?.priority??0),this.writeMonitor.record(),a}async work(e,t,r){this.workers.set(e,{handler:t,options:r||{},running:!0})}startPolling(){this.pollingInterval||(this.pollingInterval=setInterval(()=>this.poll(),1e3),this.writeRateInterval=setInterval(()=>this.writeMonitor.check(),p.WRITE_RATE_SAMPLE_WINDOW_MS))}stopPolling(){this.pollingInterval&&(clearInterval(this.pollingInterval),this.pollingInterval=null),this.writeRateInterval&&(clearInterval(this.writeRateInterval),this.writeRateInterval=null)}poll(){for(let[e,t]of this.workers)t.running&&this.processQueue(e,t)}processQueue(e,t){let r=t.options.batchSize||1,a=Date.now(),s=this.db.transaction(()=>{let t=this.db.prepare(`
24
24
  SELECT id, data FROM agx_jobs
25
25
  WHERE queue = ?
26
26
  AND (status = 'pending' OR status = 'retry')
@@ -47,6 +47,6 @@ module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/ap
47
47
  UPDATE agx_jobs
48
48
  SET status = 'failed', failed_at = ?, error = ?
49
49
  WHERE id = ?
50
- `);this.db.transaction(()=>{for(let i of e){let e=a.get(i);if(e&&e.retry_count<e.retry_limit){let a=(e.retry_count+1)*2e3;s.run(r+a,t,i)}else n.run(r,t,i)}})()}}let h=null;async function E(){return h||(h=new p,await h.start()),h}e.s(["QUEUE_NAMES",0,{TASK_PROCESS:"agx.task.process",TASK_CLEANUP:"agx.task.cleanup"},"getQueue",()=>E],27607)},77514,e=>{"use strict";var t=e.i(62367);async function r(e){return{ok:!0,userId:t.LOCAL_USER.id}}e.s(["requireUserId",()=>r])},93274,e=>{"use strict";var t=e.i(89970);async function r(e){let r=(0,t.createAdminDbClient)();await r.from("workflow_events").insert({task_id:e.taskId,user_id:e.userId,event_type:e.eventType,payload:e.payload||{},job_id:e.jobId||null,created_at:new Date().toISOString()})}e.s(["appendWorkflowEvent",()=>r])},12291,e=>{"use strict";var t=e.i(11794),r=e.i(41852),a=e.i(19309),s=e.i(90850),n=e.i(24918),i=e.i(84604),o=e.i(37756),l=e.i(90661),d=e.i(90315),u=e.i(9168),c=e.i(12965),p=e.i(43715),h=e.i(79218),E=e.i(66263),f=e.i(15255),g=e.i(93695);e.i(65858);var R=e.i(95175),x=e.i(12244),_=e.i(89970),T=e.i(27607),m=e.i(93274),w=e.i(77514);async function v(e,{params:t}){try{let r=await (0,w.requireUserId)(e),{taskId:a}=await t,s=await e.json().catch(()=>({})),n="string"==typeof s.reason?s.reason:void 0,i=await (0,T.getQueue)(),o=await i.send(T.QUEUE_NAMES.TASK_PROCESS,{taskId:a,userId:r.userId,signal:"cancel",payload:{reason:n}}),l=(0,_.createAdminDbClient)();return await l.from("tasks").update({updated_at:new Date().toISOString()}).eq("id",a).eq("user_id",r.userId),await (0,m.appendWorkflowEvent)({taskId:a,userId:r.userId,eventType:"task.cancelled",payload:n?{reason:n}:{},jobId:o||void 0}),x.NextResponse.json({ok:!0,jobId:o})}catch(e){return console.error("Failed to cancel task:",e),x.NextResponse.json({error:"Failed to cancel task"},{status:500})}}e.s(["POST",()=>v],14887);var I=e.i(14887);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/orchestrator/tasks/[taskId]/cancel/route",pathname:"/api/orchestrator/tasks/[taskId]/cancel",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/Projects/Agents/agx-cloud/app/api/orchestrator/tasks/[taskId]/cancel/route.ts",nextConfigOutput:"standalone",userland:I}),{workAsyncStorage:y,workUnitAsyncStorage:A,serverHooks:S}=b;function N(){return(0,a.patchFetch)({workAsyncStorage:y,workUnitAsyncStorage:A})}async function C(e,t,a){b.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/orchestrator/tasks/[taskId]/cancel/route";x=x.replace(/\/index$/,"")||"/";let _=await b.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,params:m,nextConfig:w,parsedUrl:v,isDraftMode:I,prerenderManifest:y,routerServerContext:A,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:k,serverActionsManifest:O}=_,U=(0,o.normalizeAppPath)(x),D=!!(y.dynamicRoutes[U]||y.routes[C]),L=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,v,!1):t.end("This page could not be found"),null);if(D&&!I){let e=!!y.routes[C],t=y.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(w.experimental.adapterPath)return await L();throw new g.NoFallbackError}}let P=null;!D||b.isDev||I||(P="/index"===(P=C)?"/":P);let j=!0===b.isDev||!D,q=D&&!j;O&&k&&(0,i.setManifestsSingleton)({page:x,clientReferenceManifest:k,serverActionsManifest:O});let M=e.method||"GET",W=(0,n.getTracer)(),H=W.getActiveScopeSpan(),F={params:m,prerenderManifest:y,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:j,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:w.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>b.onRequestError(e,t,a,s,A)},sharedContext:{buildId:T}},G=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),K=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let i=async e=>b.handle(K,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=W.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${x}`)}),o=!!(0,s.getRequestMeta)(e,"minimalMode"),l=async s=>{var n,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&S&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=F.renderOpts.fetchMetrics;let l=F.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=F.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(G,X,n,F.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,a=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:S})},!1,A),t}},u=await b.handleResponse({req:e,nextConfig:w,cacheKey:P,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:o});if(!D)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&D||g.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,E.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(G,X,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};H?await l(H):await W.withPropagatedContext(e.headers,()=>W.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${x}`,kind:n.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:S})},!1,A),D)throw t;return await (0,p.sendResponse)(G,X,new Response(null,{status:500})),null}}e.s(["handler",()=>C,"patchFetch",()=>N,"routeModule",()=>b,"serverHooks",()=>S,"workAsyncStorage",()=>y,"workUnitAsyncStorage",()=>A],12291)}];
50
+ `);this.db.transaction(()=>{for(let i of e){let e=a.get(i);if(e&&e.retry_count<e.retry_limit){let a=(e.retry_count+1)*2e3;s.run(r+a,t,i)}else n.run(r,t,i)}})()}}let f=null;async function g(){return f||(f=new E,await f.start()),f}e.s(["QUEUE_NAMES",0,{TASK_PROCESS:"agx.task.process",TASK_CLEANUP:"agx.task.cleanup"},"getQueue",()=>g],27607)},77514,e=>{"use strict";var t=e.i(62367);async function r(e){return{ok:!0,userId:t.LOCAL_USER.id}}e.s(["requireUserId",()=>r])},93274,e=>{"use strict";var t=e.i(89970);async function r(e){let r=(0,t.createAdminDbClient)();await r.from("workflow_events").insert({task_id:e.taskId,user_id:e.userId,event_type:e.eventType,payload:e.payload||{},job_id:e.jobId||null,created_at:new Date().toISOString()})}e.s(["appendWorkflowEvent",()=>r])},12291,e=>{"use strict";var t=e.i(11794),r=e.i(41852),a=e.i(19309),s=e.i(90850),n=e.i(24918),i=e.i(84604),o=e.i(37756),l=e.i(90661),d=e.i(90315),u=e.i(9168),c=e.i(12965),p=e.i(43715),h=e.i(79218),E=e.i(66263),f=e.i(15255),g=e.i(93695);e.i(65858);var R=e.i(95175),_=e.i(12244),x=e.i(89970),T=e.i(27607),m=e.i(93274),v=e.i(77514);async function w(e,{params:t}){try{let r=await (0,v.requireUserId)(e),{taskId:a}=await t,s=await e.json().catch(()=>({})),n="string"==typeof s.reason?s.reason:void 0,i=await (0,T.getQueue)(),o=await i.send(T.QUEUE_NAMES.TASK_PROCESS,{taskId:a,userId:r.userId,signal:"cancel",payload:{reason:n}}),l=(0,x.createAdminDbClient)();return await l.from("tasks").update({updated_at:new Date().toISOString()}).eq("id",a).eq("user_id",r.userId),await (0,m.appendWorkflowEvent)({taskId:a,userId:r.userId,eventType:"task.cancelled",payload:n?{reason:n}:{},jobId:o||void 0}),_.NextResponse.json({ok:!0,jobId:o})}catch(e){return console.error("Failed to cancel task:",e),_.NextResponse.json({error:"Failed to cancel task"},{status:500})}}e.s(["POST",()=>w],14887);var I=e.i(14887);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/orchestrator/tasks/[taskId]/cancel/route",pathname:"/api/orchestrator/tasks/[taskId]/cancel",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/Projects/Agents/agx-cloud/app/api/orchestrator/tasks/[taskId]/cancel/route.ts",nextConfigOutput:"standalone",userland:I}),{workAsyncStorage:A,workUnitAsyncStorage:y,serverHooks:S}=b;function N(){return(0,a.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:y})}async function C(e,t,a){b.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/orchestrator/tasks/[taskId]/cancel/route";_=_.replace(/\/index$/,"")||"/";let x=await b.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,params:m,nextConfig:v,parsedUrl:w,isDraftMode:I,prerenderManifest:A,routerServerContext:y,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,resolvedPathname:C,clientReferenceManifest:k,serverActionsManifest:D}=x,O=(0,o.normalizeAppPath)(_),U=!!(A.dynamicRoutes[O]||A.routes[C]),L=async()=>((null==y?void 0:y.render404)?await y.render404(e,t,w,!1):t.end("This page could not be found"),null);if(U&&!I){let e=!!A.routes[C],t=A.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(v.experimental.adapterPath)return await L();throw new g.NoFallbackError}}let P=null;!U||b.isDev||I||(P="/index"===(P=C)?"/":P);let j=!0===b.isDev||!U,q=U&&!j;D&&k&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:k,serverActionsManifest:D});let M=e.method||"GET",W=(0,n.getTracer)(),H=W.getActiveScopeSpan(),F={params:m,prerenderManifest:A,renderOpts:{experimental:{authInterrupts:!!v.experimental.authInterrupts},cacheComponents:!!v.cacheComponents,supportsDynamicResponse:j,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:v.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>b.onRequestError(e,t,a,s,y)},sharedContext:{buildId:T}},G=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),K=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let i=async e=>b.handle(K,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=W.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${_}`)}),o=!!(0,s.getRequestMeta)(e,"minimalMode"),l=async s=>{var n,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&S&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=F.renderOpts.fetchMetrics;let l=F.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=F.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(G,X,n,F.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,a=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:S})},!1,y),t}},u=await b.handleResponse({req:e,nextConfig:v,cacheKey:P,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:o});if(!U)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&U||g.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,E.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(G,X,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};H?await l(H):await W.withPropagatedContext(e.headers,()=>W.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${_}`,kind:n.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:S})},!1,y),U)throw t;return await (0,p.sendResponse)(G,X,new Response(null,{status:500})),null}}e.s(["handler",()=>C,"patchFetch",()=>N,"routeModule",()=>b,"serverHooks",()=>S,"workAsyncStorage",()=>A,"workUnitAsyncStorage",()=>y],12291)}];
51
51
 
52
52
  //# sourceMappingURL=%5Broot-of-the-server%5D__3dfd0006._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[17920,(e,t,r)=>{t.exports=e.x("better-sqlite3-e930ad348bee7320",()=>require("better-sqlite3-e930ad348bee7320"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},24246,e=>{"use strict";e.i(22734);var t=e.i(46786),r=e.i(14747);let s="3.35.0",a=["json1"],i=["fts5"],n=["nfs","smb","cifs","efs","fuse.sshfs"];function o(e,t){try{if("json1"===t)return e.prepare("SELECT json('{}')").get(),!0;if("fts5"===t)return e.exec("CREATE VIRTUAL TABLE IF NOT EXISTS _fts5_check USING fts5(x)"),e.exec("DROP TABLE IF EXISTS _fts5_check"),!0;return!1}catch{return!1}}function l(l,u){let d=[],c=l.prepare("SELECT sqlite_version() as v").get();for(let e of(0>function(e,t){let r=e.split(".").map(Number),s=t.split(".").map(Number);for(let e=0;e<3;e++){let t=(r[e]||0)-(s[e]||0);if(0!==t)return t}return 0}(c.v,s)&&d.push({kind:"version_mismatch",message:`SQLite version ${c.v} is below minimum ${s}`,found:c.v,required:`>= ${s}`,fix:"darwin"===t.default.platform()?"brew install sqlite3 && npm rebuild better-sqlite3":"TURBOPACK unreachable"}),a))o(l,e)||d.push({kind:"missing_extension",message:`Required SQLite extension '${e}' is not available`,required:e,fix:`Rebuild SQLite with -DSQLITE_ENABLE_${e.toUpperCase()}=1, or use a system SQLite that includes it`});for(let e of i)o(l,e)||console.warn(`[startup] Recommended SQLite extension '${e}' is not available. Full-text search will be disabled.`);let p=function(s){"linux"!==t.default.platform()&&t.default.platform();try{let a=r.default.resolve(s),{execSync:i}=e.r(33405);if("darwin"===t.default.platform()){let e=i(`df -T "${a}" 2>/dev/null || df "${a}"`,{encoding:"utf-8",timeout:3e3}).trim().split("\n");if(e.length>=2){let t=e[1].split(/\s+/),r=t[0]?.toLowerCase()||"";if(r.includes("://")||r.includes("nfs")||r.includes("smb"))return r}}}catch{}return null}(u);p&&n.some(e=>p.toLowerCase().includes(e))&&d.push({kind:"filesystem_error",message:`Database path '${u}' is on a network filesystem (${p})`,path:u,found:p,fix:"Move the database file to a local SSD. WAL mode requires local filesystem with reliable fsync."});try{l.pragma("journal_mode = wal"),l.pragma("foreign_keys = 1"),l.pragma("busy_timeout = 5000"),l.pragma("synchronous = 1"),l.pragma("cache_size = -64000");let e=l.pragma("journal_mode",{simple:!0}).toLowerCase(),t=new Set(["wal","delete"]);if(!t.has(e)){l.pragma("journal_mode = DELETE");let e=l.pragma("journal_mode",{simple:!0}).toLowerCase();t.has(e)?(l.pragma("synchronous = FULL"),console.warn(`[startup] WAL unavailable, using journal_mode=${e} with synchronous=FULL`)):d.push({kind:"pragma_error",message:`Failed to set journal_mode (got '${e}', tried WAL then DELETE)`,found:e,required:"wal or delete",fix:"Ensure the database file is on a local filesystem and no other process holds an exclusive lock."})}}catch(e){d.push({kind:"pragma_error",message:`Failed to apply required PRAGMAs: ${e.message}`,fix:"Check file permissions and ensure the database is not read-only."})}return d}e.s(["validateSQLiteEnvironment",()=>l])},10165,e=>{"use strict";var t=e.i(17920),r=e.i(66680);let s={randomUUID:r.randomUUID},a=new Uint8Array(256),i=a.length,n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));let o=function(e,t,o){if(s.randomUUID&&!t&&!e)return s.randomUUID();var l=e,u=o;let d=(l=l||{}).random??l.rng?.()??(i>a.length-16&&((0,r.randomFillSync)(a),i=0),a.slice(i,i+=16));if(d.length<16)throw Error("Random bytes length must be >= 16");if(d[6]=15&d[6]|64,d[8]=63&d[8]|128,t){if((u=u||0)<0||u+16>t.length)throw RangeError(`UUID byte range ${u}:${u+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[u+e]=d[e];return t}return function(e,t=0){return(n[e[t+0]]+n[e[t+1]]+n[e[t+2]]+n[e[t+3]]+"-"+n[e[t+4]]+n[e[t+5]]+"-"+n[e[t+6]]+n[e[t+7]]+"-"+n[e[t+8]]+n[e[t+9]]+"-"+n[e[t+10]]+n[e[t+11]]+n[e[t+12]]+n[e[t+13]]+n[e[t+14]]+n[e[t+15]]).toLowerCase()}(d)};var l=e.i(14747),u=e.i(22734),d=e.i(24246);process.env.AGX_MAX_WORKERS;class c{timestamps=[];lastWarning=0;WARNING_COOLDOWN_MS=6e4;record(){this.timestamps.push(Date.now())}check(){let e=Date.now(),t=e-1e4;this.timestamps=this.timestamps.filter(e=>e>=t);let r=this.timestamps.length/10,s=r>=40;return s&&e-this.lastWarning>this.WARNING_COOLDOWN_MS&&(this.lastWarning=e,console.warn(`[limits] Write QPS at ${r.toFixed(1)} — approaching ceiling of 50. See docs/LIMITS.md for mitigation steps.`)),{qps:r,warning:s}}}class p{db;workers=new Map;pollingInterval=null;writeRateInterval=null;writeMonitor=new c;workerId;constructor(e){this.workerId=o();const r=e||process.env.SQLITE_QUEUE_PATH||l.default.join(process.cwd(),"agx-queue.db"),s=l.default.dirname(r);u.default.existsSync(s)||u.default.mkdirSync(s,{recursive:!0}),this.db=new t.default(r);const a=(0,d.validateSQLiteEnvironment)(this.db,r);if(a.length>0){const e=a.map(e=>e.message).join("; ");console.error(`[SQLiteQueueAdapter] Startup validation failed: ${e}`)}}async start(){this.initSchema(),this.startPolling()}async stop(){this.stopPolling(),this.db.close()}initSchema(){this.db.exec(`
1
+ module.exports=[17920,(e,t,r)=>{t.exports=e.x("better-sqlite3-e930ad348bee7320",()=>require("better-sqlite3-e930ad348bee7320"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},24246,e=>{"use strict";e.i(22734);var t=e.i(46786),r=e.i(14747);let a="3.35.0",s=["json1"],i=["fts5"],n=["nfs","smb","cifs","efs","fuse.sshfs"];function o(e,t){try{if("json1"===t)return e.prepare("SELECT json('{}')").get(),!0;if("fts5"===t)return e.exec("CREATE VIRTUAL TABLE IF NOT EXISTS _fts5_check USING fts5(x)"),e.exec("DROP TABLE IF EXISTS _fts5_check"),!0;return!1}catch{return!1}}function l(l,u){let d=[],c=l.prepare("SELECT sqlite_version() as v").get();for(let e of(0>function(e,t){let r=e.split(".").map(Number),a=t.split(".").map(Number);for(let e=0;e<3;e++){let t=(r[e]||0)-(a[e]||0);if(0!==t)return t}return 0}(c.v,a)&&d.push({kind:"version_mismatch",message:`SQLite version ${c.v} is below minimum ${a}`,found:c.v,required:`>= ${a}`,fix:"darwin"===t.default.platform()?"brew install sqlite3 && npm rebuild better-sqlite3":"TURBOPACK unreachable"}),s))o(l,e)||d.push({kind:"missing_extension",message:`Required SQLite extension '${e}' is not available`,required:e,fix:`Rebuild SQLite with -DSQLITE_ENABLE_${e.toUpperCase()}=1, or use a system SQLite that includes it`});for(let e of i)o(l,e)||console.warn(`[startup] Recommended SQLite extension '${e}' is not available. Full-text search will be disabled.`);let p=function(a){"linux"!==t.default.platform()&&t.default.platform();try{let s=r.default.resolve(a),{execSync:i}=e.r(33405);if("darwin"===t.default.platform()){let e=i(`df -T "${s}" 2>/dev/null || df "${s}"`,{encoding:"utf-8",timeout:3e3}).trim().split("\n");if(e.length>=2){let t=e[1].split(/\s+/),r=t[0]?.toLowerCase()||"";if(r.includes("://")||r.includes("nfs")||r.includes("smb"))return r}}}catch{}return null}(u);p&&n.some(e=>p.toLowerCase().includes(e))&&d.push({kind:"filesystem_error",message:`Database path '${u}' is on a network filesystem (${p})`,path:u,found:p,fix:"Move the database file to a local SSD. WAL mode requires local filesystem with reliable fsync."});try{l.pragma("journal_mode = wal"),l.pragma("foreign_keys = 1"),l.pragma("busy_timeout = 5000"),l.pragma("synchronous = 1"),l.pragma("cache_size = -64000");let e=l.pragma("journal_mode",{simple:!0}).toLowerCase(),t=new Set(["wal","delete"]);if(!t.has(e)){l.pragma("journal_mode = DELETE");let e=l.pragma("journal_mode",{simple:!0}).toLowerCase();t.has(e)?(l.pragma("synchronous = FULL"),console.warn(`[startup] WAL unavailable, using journal_mode=${e} with synchronous=FULL`)):d.push({kind:"pragma_error",message:`Failed to set journal_mode (got '${e}', tried WAL then DELETE)`,found:e,required:"wal or delete",fix:"Ensure the database file is on a local filesystem and no other process holds an exclusive lock."})}}catch(e){d.push({kind:"pragma_error",message:`Failed to apply required PRAGMAs: ${e.message}`,fix:"Check file permissions and ensure the database is not read-only."})}return d}e.s(["validateSQLiteEnvironment",()=>l])},10165,e=>{"use strict";var t=e.i(17920),r=e.i(66680);let a={randomUUID:r.randomUUID},s=new Uint8Array(256),i=s.length,n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));let o=function(e,t,o){if(a.randomUUID&&!t&&!e)return a.randomUUID();var l=e,u=o;let d=(l=l||{}).random??l.rng?.()??(i>s.length-16&&((0,r.randomFillSync)(s),i=0),s.slice(i,i+=16));if(d.length<16)throw Error("Random bytes length must be >= 16");if(d[6]=15&d[6]|64,d[8]=63&d[8]|128,t){if((u=u||0)<0||u+16>t.length)throw RangeError(`UUID byte range ${u}:${u+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[u+e]=d[e];return t}return function(e,t=0){return(n[e[t+0]]+n[e[t+1]]+n[e[t+2]]+n[e[t+3]]+"-"+n[e[t+4]]+n[e[t+5]]+"-"+n[e[t+6]]+n[e[t+7]]+"-"+n[e[t+8]]+n[e[t+9]]+"-"+n[e[t+10]]+n[e[t+11]]+n[e[t+12]]+n[e[t+13]]+n[e[t+14]]+n[e[t+15]]).toLowerCase()}(d)};var l=e.i(14747),u=e.i(22734),d=e.i(46786),c=e.i(24246);process.env.AGX_MAX_WORKERS;class p{timestamps=[];lastWarning=0;WARNING_COOLDOWN_MS=6e4;record(){this.timestamps.push(Date.now())}check(){let e=Date.now(),t=e-1e4;this.timestamps=this.timestamps.filter(e=>e>=t);let r=this.timestamps.length/10,a=r>=40;return a&&e-this.lastWarning>this.WARNING_COOLDOWN_MS&&(this.lastWarning=e,console.warn(`[limits] Write QPS at ${r.toFixed(1)} — approaching ceiling of 50. See docs/LIMITS.md for mitigation steps.`)),{qps:r,warning:a}}}let f=process.env.AGX_DATA_DIR||l.default.join(d.default.homedir(),".agx");class h{db;workers=new Map;pollingInterval=null;writeRateInterval=null;writeMonitor=new p;workerId;constructor(e){this.workerId=o();const r=e||process.env.SQLITE_QUEUE_PATH||l.default.join(f,"agx-queue.db"),a=l.default.dirname(r);u.default.existsSync(a)||u.default.mkdirSync(a,{recursive:!0}),this.db=new t.default(r);const s=(0,c.validateSQLiteEnvironment)(this.db,r);if(s.length>0){const e=s.map(e=>e.message).join("; ");console.error(`[SQLiteQueueAdapter] Startup validation failed: ${e}`)}}async start(){this.initSchema(),this.startPolling()}async stop(){this.stopPolling(),this.db.close()}initSchema(){this.db.exec(`
2
2
  CREATE TABLE IF NOT EXISTS agx_jobs (
3
3
  id TEXT PRIMARY KEY,
4
4
  queue TEXT NOT NULL,
@@ -16,28 +16,28 @@ module.exports=[17920,(e,t,r)=>{t.exports=e.x("better-sqlite3-e930ad348bee7320",
16
16
  error TEXT
17
17
  );
18
18
  CREATE INDEX IF NOT EXISTS idx_jobs_fetch ON agx_jobs (queue, status, start_after, priority DESC, created_at ASC);
19
- `);let e=new Set(this.db.pragma("table_info(agx_jobs)").map(e=>e.name));e.has("failed_at")||this.db.exec("ALTER TABLE agx_jobs ADD COLUMN failed_at INTEGER"),e.has("error")||this.db.exec("ALTER TABLE agx_jobs ADD COLUMN error TEXT")}async send(e,t,r){let s=o(),a=Date.now(),i=r?.startAfter?r.startAfter instanceof Date?r.startAfter.getTime():r.startAfter:a;return this.db.prepare(`
19
+ `);let e=new Set(this.db.pragma("table_info(agx_jobs)").map(e=>e.name));e.has("failed_at")||this.db.exec("ALTER TABLE agx_jobs ADD COLUMN failed_at INTEGER"),e.has("error")||this.db.exec("ALTER TABLE agx_jobs ADD COLUMN error TEXT")}async send(e,t,r){let a=o(),s=Date.now(),i=r?.startAfter?r.startAfter instanceof Date?r.startAfter.getTime():r.startAfter:s;return this.db.prepare(`
20
20
  INSERT INTO agx_jobs (
21
21
  id, queue, data, status, created_at, start_after, retry_limit, priority
22
22
  ) VALUES (?, ?, ?, 'pending', ?, ?, ?, ?)
23
- `).run(s,e,JSON.stringify(t),a,i,r?.retryLimit??3,r?.priority??0),this.writeMonitor.record(),s}async work(e,t,r){this.workers.set(e,{handler:t,options:r||{},running:!0})}startPolling(){this.pollingInterval||(this.pollingInterval=setInterval(()=>this.poll(),1e3),this.writeRateInterval=setInterval(()=>this.writeMonitor.check(),1e4))}stopPolling(){this.pollingInterval&&(clearInterval(this.pollingInterval),this.pollingInterval=null),this.writeRateInterval&&(clearInterval(this.writeRateInterval),this.writeRateInterval=null)}poll(){for(let[e,t]of this.workers)t.running&&this.processQueue(e,t)}processQueue(e,t){let r=t.options.batchSize||1,s=Date.now(),a=this.db.transaction(()=>{let t=this.db.prepare(`
23
+ `).run(a,e,JSON.stringify(t),s,i,r?.retryLimit??3,r?.priority??0),this.writeMonitor.record(),a}async work(e,t,r){this.workers.set(e,{handler:t,options:r||{},running:!0})}startPolling(){this.pollingInterval||(this.pollingInterval=setInterval(()=>this.poll(),1e3),this.writeRateInterval=setInterval(()=>this.writeMonitor.check(),1e4))}stopPolling(){this.pollingInterval&&(clearInterval(this.pollingInterval),this.pollingInterval=null),this.writeRateInterval&&(clearInterval(this.writeRateInterval),this.writeRateInterval=null)}poll(){for(let[e,t]of this.workers)t.running&&this.processQueue(e,t)}processQueue(e,t){let r=t.options.batchSize||1,a=Date.now(),s=this.db.transaction(()=>{let t=this.db.prepare(`
24
24
  SELECT id, data FROM agx_jobs
25
25
  WHERE queue = ?
26
26
  AND (status = 'pending' OR status = 'retry')
27
27
  AND start_after <= ?
28
28
  ORDER BY priority DESC, created_at ASC
29
29
  LIMIT ?
30
- `).all(e,s,r);if(0===t.length)return[];let a=t.map(e=>e.id),i=this.db.prepare(`
30
+ `).all(e,a,r);if(0===t.length)return[];let s=t.map(e=>e.id),i=this.db.prepare(`
31
31
  UPDATE agx_jobs
32
32
  SET status = 'active', started_at = ?, worker_id = ?
33
33
  WHERE id = ?
34
- `);for(let e of a)i.run(s,this.workerId,e);return t.map(t=>({id:t.id,name:e,data:JSON.parse(t.data)}))})();a.length>0&&this.executeJobs(a,t.handler)}async executeJobs(e,t){try{await t(e),this.completeJobs(e.map(e=>e.id))}catch(t){this.failJobs(e.map(e=>e.id),t.message||String(t))}}completeJobs(e){let t=Date.now(),r=this.db.prepare(`
34
+ `);for(let e of s)i.run(a,this.workerId,e);return t.map(t=>({id:t.id,name:e,data:JSON.parse(t.data)}))})();s.length>0&&this.executeJobs(s,t.handler)}async executeJobs(e,t){try{await t(e),this.completeJobs(e.map(e=>e.id))}catch(t){this.failJobs(e.map(e=>e.id),t.message||String(t))}}completeJobs(e){let t=Date.now(),r=this.db.prepare(`
35
35
  UPDATE agx_jobs
36
36
  SET status = 'completed', completed_at = ?
37
37
  WHERE id = ?
38
- `);this.db.transaction(()=>{for(let s of e)r.run(t,s)})()}failJobs(e,t){let r=Date.now(),s=this.db.prepare(`
38
+ `);this.db.transaction(()=>{for(let a of e)r.run(t,a)})()}failJobs(e,t){let r=Date.now(),a=this.db.prepare(`
39
39
  SELECT id, retry_count, retry_limit FROM agx_jobs WHERE id = ?
40
- `),a=this.db.prepare(`
40
+ `),s=this.db.prepare(`
41
41
  UPDATE agx_jobs
42
42
  SET status = 'retry', retry_count = retry_count + 1,
43
43
  start_after = ? + (retry_count * 1000 * 2), -- Exponential backoff (kinda)
@@ -47,6 +47,6 @@ module.exports=[17920,(e,t,r)=>{t.exports=e.x("better-sqlite3-e930ad348bee7320",
47
47
  UPDATE agx_jobs
48
48
  SET status = 'failed', failed_at = ?, error = ?
49
49
  WHERE id = ?
50
- `);this.db.transaction(()=>{for(let n of e){let e=s.get(n);if(e&&e.retry_count<e.retry_limit){let s=(e.retry_count+1)*2e3;a.run(r+s,t,n)}else i.run(r,t,n)}})()}}let f=null;async function h(){return f||(f=new p,await f.start()),f}async function m(){f&&(await f.stop(),f=null)}e.s(["QUEUE_NAMES",0,{TASK_PROCESS:"agx.task.process",TASK_CLEANUP:"agx.task.cleanup"},"getQueue",()=>h,"stopQueue",()=>m],10165)}];
50
+ `);this.db.transaction(()=>{for(let n of e){let e=a.get(n);if(e&&e.retry_count<e.retry_limit){let a=(e.retry_count+1)*2e3;s.run(r+a,t,n)}else i.run(r,t,n)}})()}}let m=null;async function E(){return m||(m=new h,await m.start()),m}async function g(){m&&(await m.stop(),m=null)}e.s(["QUEUE_NAMES",0,{TASK_PROCESS:"agx.task.process",TASK_CLEANUP:"agx.task.cleanup"},"getQueue",()=>E,"stopQueue",()=>g],10165)}];
51
51
 
52
52
  //# sourceMappingURL=%5Broot-of-the-server%5D__45d4a92e._.js.map