@mndrk/agx 2.4.5 → 2.4.6

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 (156) hide show
  1. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
  3. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  4. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
  5. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +2 -2
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +2 -2
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page_client-reference-manifest.js +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.html +2 -2
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.rsc +2 -2
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +2 -2
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_head.segment.rsc +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_index.segment.rsc +2 -2
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_tree.segment.rsc +2 -2
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos/__PAGE__.segment.rsc +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos.segment.rsc +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github.segment.rsc +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations.segment.rsc +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page_client-reference-manifest.js +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page_client-reference-manifest.js +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +1 -1
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +1 -1
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +2 -2
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +2 -2
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +2 -2
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +2 -2
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +2 -2
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__23838f87._.js +3 -0
  118. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__a61463b8._.js +7 -0
  119. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ecd68e8._.js +3 -0
  120. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_5c140c38._.js +7 -0
  121. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_30d021de._.js +3 -0
  122. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_page_tsx_6dcfdd52._.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_281b2873._.js +2 -2
  125. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +3 -3
  126. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  127. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  128. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
  129. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/static/chunks/692103d55fcd0328.js +5 -0
  132. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8b5d6f5bade8c4ea.js → 8d8fe711583a59f0.js} +2 -2
  133. package/cloud-runtime/standalone/apps/local/.next/static/chunks/92467c495ad08a85.js +5 -0
  134. package/cloud-runtime/standalone/apps/local/.next/static/chunks/add53c2fe147af75.css +1 -0
  135. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d662272e49df1950.js +20 -0
  136. package/cloud-runtime/standalone/apps/local/.next/static/chunks/e0d68c6af17c8c87.js +1 -0
  137. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{93b2b6aa0c9593f6.js → e6d4118b7c32d11c.js} +1 -1
  138. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/page.tsx +58 -2
  139. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +73 -33
  140. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +78 -239
  141. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +2 -2
  142. package/cloud-runtime/standalone/apps/local/worker/index.js +2 -2
  143. package/package.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7e3c2ea1._.js +0 -7
  145. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__dbda910b._.js +0 -7
  146. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_917d90b4._.js +0 -3
  147. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_a2835b49._.js +0 -3
  148. package/cloud-runtime/standalone/apps/local/.next/static/chunks/55a31773f8c2833f.js +0 -20
  149. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7c8515a24aeea102.js +0 -1
  150. package/cloud-runtime/standalone/apps/local/.next/static/chunks/80446e085a3aad56.css +0 -1
  151. package/cloud-runtime/standalone/apps/local/.next/static/chunks/9c29ef447bef1576.js +0 -5
  152. package/cloud-runtime/standalone/apps/local/.next/static/chunks/a9111ccc979d4933.js +0 -5
  153. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d2b34ade19d9d8da.js +0 -1
  154. /package/cloud-runtime/standalone/apps/local/.next/static/{C3-tP4djbU34_g7VoIFac → fipnHmd6JPn9sTuFdYS0y}/_buildManifest.js +0 -0
  155. /package/cloud-runtime/standalone/apps/local/.next/static/{C3-tP4djbU34_g7VoIFac → fipnHmd6JPn9sTuFdYS0y}/_clientMiddlewareManifest.json +0 -0
  156. /package/cloud-runtime/standalone/apps/local/.next/static/{C3-tP4djbU34_g7VoIFac → fipnHmd6JPn9sTuFdYS0y}/_ssgManifest.js +0 -0
@@ -10474,6 +10474,7 @@ ${skills}
10474
10474
  var import_child_process2, import_fs10, import_os10, import_path10, isNonEmptyString, CliRunError, createRawParser, extractClaudeAssistantText, createClaudeStreamJsonParser, createGeminiStreamJsonParser, extractCodexAssistantText, createCodexJsonParser, createThoughtFilterParser, AGX_WRAPPED_PROVIDERS;
10475
10475
  var init_cli_runner = __esm({
10476
10476
  "apps/local/lib/cli-runner.ts"() {
10477
+ "use strict";
10477
10478
  import_child_process2 = require("child_process");
10478
10479
  import_fs10 = __toESM(require("fs"));
10479
10480
  import_os10 = __toESM(require("os"));
@@ -10484,8 +10485,6 @@ var init_cli_runner = __esm({
10484
10485
  init_scheduled_task_skill();
10485
10486
  isNonEmptyString = (value) => typeof value === "string" && value.trim().length > 0;
10486
10487
  CliRunError = class extends Error {
10487
- exitCode;
10488
- logs;
10489
10488
  constructor(message, exitCode, logs) {
10490
10489
  super(message);
10491
10490
  this.name = "CliRunError";
@@ -13713,6 +13712,7 @@ function resolveBoundSkillFiles(bindings, prompt, provider) {
13713
13712
  var import_node_fs4;
13714
13713
  var init_agent_skill_bindings = __esm({
13715
13714
  "apps/local/lib/agent-skill-bindings.ts"() {
13715
+ "use strict";
13716
13716
  import_node_fs4 = __toESM(require("node:fs"));
13717
13717
  init_sqlite_query_adapter();
13718
13718
  init_skills_library();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mndrk/agx",
3
- "version": "2.4.5",
3
+ "version": "2.4.6",
4
4
  "description": "Autonomous AI Agent Orchestrator for Claude, Gemini, and Ollama",
5
5
  "engines": {
6
6
  "node": ">=22.16.0"
@@ -1,7 +0,0 @@
1
- module.exports=[556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},419920,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.HooksClientContext},731042,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.ServerInsertedHtml},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},263841,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.AppRouterContext},234154,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored["react-ssr"].ReactServerDOMTurbopackClient},831709,a=>{"use strict";var b=a.i(786220);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],831709)},830284,a=>{"use strict";var b=a.i(786220);function c(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!1),[f,g]=(0,b.useState)(null),h=(0,b.useCallback)(async()=>{e(!0);try{let a=await fetch("/api/projects");if(!a.ok)throw Error("Failed to fetch projects");let b=await a.json();c(b.projects??[]),g(null)}catch(a){g(a instanceof Error?a:Error("Unknown error"))}finally{e(!1)}},[]);(0,b.useEffect)(()=>{h()},[h]);let i=(0,b.useCallback)(async a=>{let b=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to create project");let d=(await b.json()).project;return c(a=>[d,...a]),d},[]);return{projects:a,isLoading:d,error:f,refetch:h,createProject:i,updateProject:(0,b.useCallback)(async(a,b)=>{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok)throw Error((await d.json().catch(()=>({}))).error||"Failed to update project");let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?e:b)),e},[]),deleteProject:(0,b.useCallback)(async a=>{let b=await fetch(`/api/projects/${a}`,{method:"DELETE"});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to delete project");c(b=>b.filter(b=>b.id!==a))},[])}}function d(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!0),f=(0,b.useCallback)(async()=>{try{let a=await fetch("/api/projects");if(!a.ok)return;let{projects:b}=await a.json(),d=await Promise.all((b??[]).map(async a=>{let b=[],c=[];try{let[d,e]=await Promise.all([fetch(`/api/projects/${a.id}/agents`),fetch(`/api/projects/${a.id}/threads`)]);d.ok&&(b=(await d.json()).agents??[]),e.ok&&(c=((await e.json()).threads??[]).map(a=>a.thread_id))}catch{}return{...a,repos:a.repos??[],agents:b.map(b=>({project_id:a.id,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at})),thread_ids:c,workspace_ids:c}}));c(d)}catch{}finally{e(!1)}},[]);(0,b.useEffect)(()=>{f()},[f]);let g=(0,b.useCallback)(async(a,b)=>{try{let d="string"==typeof a?{name:a}:a,e=d.name.trim(),f=(d.slug||e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),g=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...d,name:e,slug:f})});if(!g.ok)return null;let{project:h}=await g.json(),i=Array.isArray(b)?b:b?[b]:[];for(let a of i)await fetch(`/api/projects/${h.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:a})}).catch(a=>console.warn("[useProjects] link thread failed:",a));let j={...h,repos:h.repos??[],agents:[],thread_ids:i,workspace_ids:i};return c(a=>[...a,j].sort((a,b)=>a.name.localeCompare(b.name))),j}catch{return null}},[]),h=(0,b.useCallback)(async(a,b)=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:b})})).ok)return;c(c=>c.map(c=>c.id===a?{...c,name:b}:c).sort((a,b)=>a.name.localeCompare(b.name)))}catch{}},[]),i=(0,b.useCallback)(async a=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"DELETE"})).ok)return;c(b=>b.filter(b=>b.id!==a))}catch{}},[]),j=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok){let a=await d.json().catch(()=>({}));throw Error(a.error||"Failed to update project")}let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?{...b,...e,repos:e.repos??b.repos}:b)),e}catch{return null}},[]),k=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),l=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents?agentId=${b}`,{method:"DELETE"});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]);return{projects:a,isLoading:d,createProject:g,updateProject:j,renameProject:h,deleteProject:i,addAgent:k,removeAgent:l,reorderAgents:(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedAgentIds:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),moveAgent:(0,b.useCallback)(async(a,b,c)=>{try{await fetch(`/api/projects/${b}/agents?agentId=${a}`,{method:"DELETE"}),await fetch(`/api/projects/${c}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:a})}),await f()}catch{}},[f]),refresh:f}}a.s(["useProjects",()=>c,"useProjectsWithAgents",()=>d])},824179,a=>{"use strict";let b=(0,a.i(831709).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["X",()=>b],824179)},353532,a=>{"use strict";let b=(0,a.i(831709).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],353532)},667597,a=>{"use strict";let b=(0,a.i(831709).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",()=>b],667597)},864061,a=>{"use strict";let b=(0,a.i(831709).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",()=>b],864061)},820859,a=>{"use strict";let b=(0,a.i(831709).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);a.s(["Clock",()=>b],820859)},204246,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},490335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={BailoutToCSRError:function(){return g},isBailoutToCSRError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="BAILOUT_TO_CLIENT_SIDE_RENDERING";class g extends Error{constructor(a){super(`Bail out to client-side rendering: ${a}`),this.reason=a,this.digest=f}}function h(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===f}},422662,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={getDeploymentId:function(){return f},getDeploymentIdQueryOrEmptyString:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(){return!1}function g(){return""}},737313,a=>{"use strict";let b=(0,a.i(831709).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);a.s(["MessageSquare",()=>b],737313)},66456,a=>{"use strict";let b=(0,a.i(831709).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);a.s(["Zap",()=>b],66456)},756490,a=>{"use strict";let b=(0,a.i(831709).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>b],756490)},89613,a=>{"use strict";let b=(0,a.i(831709).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",()=>b],89613)},542341,a=>{"use strict";let b=(0,a.i(831709).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);a.s(["Search",()=>b],542341)},811760,a=>{"use strict";let b=(0,a.i(831709).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",()=>b],811760)},627421,a=>{"use strict";let b=(0,a.i(831709).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["Check",()=>b],627421)},252197,a=>{"use strict";let b=(0,a.i(831709).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],252197)},529889,a=>{"use strict";var b=a.i(786220);function c(){return{isCoarsePointer:!1,canHover:!0,isPhone:!1,isTablet:!1,isTouchLayout:!1}}function d(){let[a,d]=(0,b.useState)(c);return(0,b.useEffect)(()=>{},[]),a}a.s(["useInputCapabilities",()=>d])},47349,(a,b,c)=>{"use strict";var d=a.r(786220);d.useState,d.useEffect,d.useLayoutEffect,d.useDebugValue,c.useSyncExternalStore=void 0!==d.useSyncExternalStore?d.useSyncExternalStore:function(a,b){return b()}},487610,(a,b,c)=>{"use strict";b.exports=a.r(47349)},997514,(a,b,c)=>{"use strict";var d=a.r(786220),e=a.r(487610),f="function"==typeof Object.is?Object.is:function(a,b){return a===b&&(0!==a||1/a==1/b)||a!=a&&b!=b},g=e.useSyncExternalStore,h=d.useRef,i=d.useEffect,j=d.useMemo,k=d.useDebugValue;c.useSyncExternalStoreWithSelector=function(a,b,c,d,e){var l=h(null);if(null===l.current){var m={hasValue:!1,value:null};l.current=m}else m=l.current;var n=g(a,(l=j(function(){function a(a){if(!i){if(i=!0,g=a,a=d(a),void 0!==e&&m.hasValue){var b=m.value;if(e(b,a))return h=b}return h=a}if(b=h,f(g,a))return b;var c=d(a);return void 0!==e&&e(b,c)?(g=a,b):(g=a,h=c)}var g,h,i=!1,j=void 0===c?null:c;return[function(){return a(b())},null===j?void 0:function(){return a(j())}]},[b,c,d,e]))[0],l[1]);return i(function(){m.hasValue=!0,m.value=n},[n]),k(n),n}},864442,(a,b,c)=>{"use strict";b.exports=a.r(997514)},804632,a=>{"use strict";let b=(0,a.i(831709).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",()=>b],804632)},724938,a=>{"use strict";let b=(0,a.i(831709).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",()=>b],724938)},985339,a=>{"use strict";let b=(0,a.i(831709).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);a.s(["Users",()=>b],985339)},766412,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(811760),e=a.i(542341),f=a.i(627421),g=a.i(824179);function h({options:a,value:h,onChange:i,placeholder:j,disabled:k}){let[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(""),p=(0,c.useRef)(null),q=(0,c.useRef)(null),r=(0,c.useMemo)(()=>{if(!n)return a;let b=n.toLowerCase();return a.filter(a=>a.label.toLowerCase().includes(b)||a.description?.toLowerCase().includes(b)||a.meta?.toLowerCase().includes(b))},[a,n]),s=(0,c.useMemo)(()=>a.find(a=>a.id===h),[a,h]),t=(0,c.useCallback)(a=>{p.current&&!p.current.contains(a.target)&&m(!1)},[]);return(0,c.useEffect)(()=>(document.addEventListener("pointerdown",t),()=>document.removeEventListener("pointerdown",t)),[t]),(0,b.jsxs)("div",{ref:p,className:"relative",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>{k||(m(!l),o(""),setTimeout(()=>q.current?.focus(),0))},disabled:k,className:"input w-full flex items-center justify-between gap-2 text-left cursor-pointer",children:[s?(0,b.jsx)("span",{className:"truncate",children:s.label}):(0,b.jsx)("span",{className:"text-[var(--muted-foreground)] truncate",children:j}),(0,b.jsx)(d.ChevronDown,{className:`w-4 h-4 text-[var(--muted-foreground)] flex-shrink-0 transition-transform ${l?"rotate-180":""}`})]}),l&&(0,b.jsxs)("div",{className:"absolute z-50 mt-2 min-w-full w-max max-w-[28rem] rounded-2xl overflow-hidden right-0",style:{background:"var(--card-bg)",border:"1px solid var(--border)",boxShadow:"0 8px 30px rgba(0,0,0,0.35), 0 0 0 1px rgba(255,255,255,0.05)"},children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5 px-3.5 py-3 border-b",style:{borderColor:"var(--border)"},children:[(0,b.jsx)(e.Search,{className:"w-4 h-4 text-[var(--muted-foreground)] flex-shrink-0"}),(0,b.jsx)("input",{ref:q,value:n,onChange:a=>o(a.target.value),placeholder:"Search...",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]"}),n&&(0,b.jsx)("button",{onClick:()=>o(""),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,b.jsx)(g.X,{className:"w-3.5 h-3.5"})})]}),(0,b.jsxs)("div",{className:"max-h-72 overflow-y-auto py-1",children:[0===r.length&&(0,b.jsx)("div",{className:"px-4 py-6 text-xs text-[var(--muted-foreground)] text-center",children:"No matches"}),r.map(a=>{let c=a.id===h;return(0,b.jsxs)("button",{onClick:()=>{a.disabled||(i(a.id),m(!1),o(""))},disabled:a.disabled,className:`
2
- w-full text-left px-3.5 py-2.5 flex items-center gap-3 transition-colors
3
- ${a.disabled?"opacity-35 cursor-not-allowed":""}
4
- ${c?"bg-[var(--primary)]/10":"hover:bg-[var(--muted)]/40"}
5
- `,children:[(0,b.jsx)("div",{className:`w-5 h-5 rounded-md flex items-center justify-center flex-shrink-0 border ${c?"bg-[var(--primary)] border-[var(--primary)]":"border-[var(--border)]"}`,children:c&&(0,b.jsx)(f.Check,{className:"w-3 h-3 text-white"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a.label}),a.meta&&(0,b.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-[var(--muted)]/50 text-[var(--muted-foreground)]",children:a.meta})]}),a.description&&(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:a.description})]})]},a.id)})]})]})]})}a.s(["default",()=>h])},285320,a=>{"use strict";let b=(0,a.i(831709).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],285320)},316099,a=>{"use strict";let b=(0,a.i(831709).default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);a.s(["Hash",()=>b],316099)},340492,a=>{"use strict";let b=(0,a.i(831709).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["Download",()=>b],340492)},654340,a=>{"use strict";let b=(0,a.i(831709).default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);a.s(["Activity",()=>b],654340)},489461,a=>{"use strict";let b=(0,a.i(831709).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);a.s(["Target",()=>b],489461)},701065,a=>{"use strict";let b=(0,a.i(831709).default)("brain-circuit",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M9 13a4.5 4.5 0 0 0 3-4",key:"10igwf"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M12 13h4",key:"1ku699"}],["path",{d:"M12 18h6a2 2 0 0 1 2 2v1",key:"105ag5"}],["path",{d:"M12 8h8",key:"1lhi5i"}],["path",{d:"M16 8V5a2 2 0 0 1 2-2",key:"u6izg6"}],["circle",{cx:"16",cy:"13",r:".5",key:"ry7gng"}],["circle",{cx:"18",cy:"3",r:".5",key:"1aiba7"}],["circle",{cx:"20",cy:"21",r:".5",key:"yhc1fs"}],["circle",{cx:"20",cy:"8",r:".5",key:"1e43v0"}]]);a.s(["BrainCircuit",()=>b],701065)},675222,a=>{"use strict";let b=(0,a.i(831709).default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["ShieldCheck",()=>b],675222)},438311,a=>{"use strict";let b=(0,a.i(831709).default)("corner-down-right",[["path",{d:"m15 10 5 5-5 5",key:"qqa56n"}],["path",{d:"M4 4v7a4 4 0 0 0 4 4h12",key:"z08zvw"}]]);a.s(["CornerDownRight",()=>b],438311)}];
6
-
7
- //# sourceMappingURL=%5Broot-of-the-server%5D__7e3c2ea1._.js.map
@@ -1,7 +0,0 @@
1
- module.exports=[556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},419920,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.HooksClientContext},731042,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.ServerInsertedHtml},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},263841,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.AppRouterContext},234154,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored["react-ssr"].ReactServerDOMTurbopackClient},285320,a=>{"use strict";let b=(0,a.i(831709).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],285320)},804632,a=>{"use strict";let b=(0,a.i(831709).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",()=>b],804632)},724938,a=>{"use strict";let b=(0,a.i(831709).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",()=>b],724938)},985339,a=>{"use strict";let b=(0,a.i(831709).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);a.s(["Users",()=>b],985339)},766412,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(811760),e=a.i(542341),f=a.i(627421),g=a.i(824179);function h({options:a,value:h,onChange:i,placeholder:j,disabled:k}){let[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(""),p=(0,c.useRef)(null),q=(0,c.useRef)(null),r=(0,c.useMemo)(()=>{if(!n)return a;let b=n.toLowerCase();return a.filter(a=>a.label.toLowerCase().includes(b)||a.description?.toLowerCase().includes(b)||a.meta?.toLowerCase().includes(b))},[a,n]),s=(0,c.useMemo)(()=>a.find(a=>a.id===h),[a,h]),t=(0,c.useCallback)(a=>{p.current&&!p.current.contains(a.target)&&m(!1)},[]);return(0,c.useEffect)(()=>(document.addEventListener("pointerdown",t),()=>document.removeEventListener("pointerdown",t)),[t]),(0,b.jsxs)("div",{ref:p,className:"relative",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>{k||(m(!l),o(""),setTimeout(()=>q.current?.focus(),0))},disabled:k,className:"input w-full flex items-center justify-between gap-2 text-left cursor-pointer",children:[s?(0,b.jsx)("span",{className:"truncate",children:s.label}):(0,b.jsx)("span",{className:"text-[var(--muted-foreground)] truncate",children:j}),(0,b.jsx)(d.ChevronDown,{className:`w-4 h-4 text-[var(--muted-foreground)] flex-shrink-0 transition-transform ${l?"rotate-180":""}`})]}),l&&(0,b.jsxs)("div",{className:"absolute z-50 mt-2 min-w-full w-max max-w-[28rem] rounded-2xl overflow-hidden right-0",style:{background:"var(--card-bg)",border:"1px solid var(--border)",boxShadow:"0 8px 30px rgba(0,0,0,0.35), 0 0 0 1px rgba(255,255,255,0.05)"},children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5 px-3.5 py-3 border-b",style:{borderColor:"var(--border)"},children:[(0,b.jsx)(e.Search,{className:"w-4 h-4 text-[var(--muted-foreground)] flex-shrink-0"}),(0,b.jsx)("input",{ref:q,value:n,onChange:a=>o(a.target.value),placeholder:"Search...",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]"}),n&&(0,b.jsx)("button",{onClick:()=>o(""),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,b.jsx)(g.X,{className:"w-3.5 h-3.5"})})]}),(0,b.jsxs)("div",{className:"max-h-72 overflow-y-auto py-1",children:[0===r.length&&(0,b.jsx)("div",{className:"px-4 py-6 text-xs text-[var(--muted-foreground)] text-center",children:"No matches"}),r.map(a=>{let c=a.id===h;return(0,b.jsxs)("button",{onClick:()=>{a.disabled||(i(a.id),m(!1),o(""))},disabled:a.disabled,className:`
2
- w-full text-left px-3.5 py-2.5 flex items-center gap-3 transition-colors
3
- ${a.disabled?"opacity-35 cursor-not-allowed":""}
4
- ${c?"bg-[var(--primary)]/10":"hover:bg-[var(--muted)]/40"}
5
- `,children:[(0,b.jsx)("div",{className:`w-5 h-5 rounded-md flex items-center justify-center flex-shrink-0 border ${c?"bg-[var(--primary)] border-[var(--primary)]":"border-[var(--border)]"}`,children:c&&(0,b.jsx)(f.Check,{className:"w-3 h-3 text-white"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a.label}),a.meta&&(0,b.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-[var(--muted)]/50 text-[var(--muted-foreground)]",children:a.meta})]}),a.description&&(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:a.description})]})]},a.id)})]})]})]})}a.s(["default",()=>h])},66456,a=>{"use strict";let b=(0,a.i(831709).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);a.s(["Zap",()=>b],66456)},489461,a=>{"use strict";let b=(0,a.i(831709).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);a.s(["Target",()=>b],489461)},654340,a=>{"use strict";let b=(0,a.i(831709).default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);a.s(["Activity",()=>b],654340)},639211,a=>{"use strict";a.s(["GRAPH_TIMEOUT_DEFAULT_MS",0,864e5,"NODE_TIMEOUT_DEFAULT_MS",0,18e5,"UI_POLL_CHAT_ALT_MS",0,15e3,"UI_POLL_CHAT_CHECK_MS",0,1e4,"UI_POLL_DB_HEALTH_MS",0,3e4,"UI_POLL_PROMPT_RUNS_MS",0,5e3,"UI_POLL_SYSTEM_STATUS_MS",0,3e4,"UI_POLL_UPDATE_CHECK_MS",0,18e5])},296037,a=>{"use strict";var b=a.i(786220);function c(a,d={}){let[e,f]=(0,b.useState)([]),[g,h]=(0,b.useState)(!0),[i,j]=(0,b.useState)(null),k=(0,b.useRef)(!1),l=d.requireProjectId??!1,m=d.includeObjectiveJobs??!1,n=d.objectiveId?.trim()||null,o=(0,b.useCallback)(async()=>{if(l&&!a){f([]),j(null),h(!1),k.current=!0;return}try{k.current||h(!0);let b=new URLSearchParams;a&&b.set("projectId",a),n&&b.set("objectiveId",n),m&&b.set("includeObjectiveJobs","true");let c=b.toString(),d=await fetch(`/api/prompt-jobs${c?`?${c}`:""}`);if(!d.ok)throw Error(`Failed to fetch: ${d.status}`);let e=await d.json();f(e.jobs??[]),j(null)}catch(a){j(a instanceof Error?a.message:String(a))}finally{h(!1),k.current=!0}},[m,n,a,l]);(0,b.useEffect)(()=>{k.current=!1,o();let a=setInterval(o,1e4);return()=>clearInterval(a)},[o]);let p=(0,b.useCallback)(async a=>{let b=await fetch("/api/prompt-jobs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)return null;let{job:c}=await b.json();return await o(),c?.id??null},[o]),q=(0,b.useCallback)(async(a,b)=>{let c=await fetch(`/api/prompt-jobs/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});return c.ok&&await o(),c.ok},[o]),r=(0,b.useCallback)(async a=>{let b=await fetch(`/api/prompt-jobs/${a}`,{method:"DELETE"});if(b.ok)return await o(),{ok:!0};let c=await b.json().catch(()=>({}));return{ok:!1,error:c.error||c.message||`Failed to delete scheduled task (${b.status})`}},[o]),s=(0,b.useCallback)(async a=>{let b="active"===a.state?"paused":"active",c=await fetch(`/api/prompt-jobs/${a.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({state:b})});return c.ok&&await o(),c.ok},[o]),t=(0,b.useCallback)(async a=>{let b=await fetch("/api/prompt-jobs/poll",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jobId:a})});return b.ok&&await o(),b.ok},[o]),u=(0,b.useCallback)(async a=>{let b=await fetch(`/api/prompt-jobs/${a}/cancel`,{method:"POST"});return b.ok&&await o(),b.ok},[o]);return{jobs:e,loading:g,error:i,refresh:o,createJob:p,updateJob:q,deleteJob:r,toggleJob:s,runNow:t,cancelRun:u,fetchRuns:(0,b.useCallback)(async a=>{let b=await fetch(`/api/prompt-jobs/${a}/runs`);return b.ok?(await b.json()).runs??[]:[]},[])}}a.s(["usePromptJobs",()=>c])},97723,a=>{"use strict";let b=(0,a.i(831709).default)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]);a.s(["Bell",()=>b],97723)},144462,962684,a=>{"use strict";let b=(0,a.i(831709).default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);a.s(["default",()=>b],962684),a.s(["TerminalSquare",()=>b],144462)},227444,a=>{"use strict";var b=a.i(786220);function c(a){let[c,d]=(0,b.useState)([]),[e,f]=(0,b.useState)(null),[g,h]=(0,b.useState)(!0),i=(0,b.useCallback)(async()=>{if(!a){d([]),f(null),h(!1);return}try{let b=await fetch(`/api/trackers/connections?projectId=${encodeURIComponent(a)}`),c=await b.json();d(Array.isArray(c.connections)?c.connections:[]),f("string"==typeof c.defaultTracker?c.defaultTracker:null)}catch{d([]),f(null)}finally{h(!1)}},[a]);(0,b.useEffect)(()=>{i()},[i]);let j=(0,b.useCallback)(async(b,c)=>{if(!a)return{ok:!1,error:"Missing projectId"};try{let d=await fetch("/api/trackers/connections",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:b,projectId:a,metadata:c})});if(!d.ok){let a=await d.json().catch(()=>({}));return{ok:!1,error:a.error||"Failed to add connection"}}return await i(),{ok:!0}}catch{return{ok:!1,error:"Failed to add connection"}}},[a,i]),k=(0,b.useCallback)(async b=>{if(!a)return{ok:!1,error:"Missing projectId"};try{let c=await fetch(`/api/trackers/${b}/status?projectId=${encodeURIComponent(a)}`,{method:"DELETE"});if(!c.ok){let a=await c.json().catch(()=>({}));return{ok:!1,error:a.error||"Failed to remove connection"}}return await i(),{ok:!0}}catch{return{ok:!1,error:"Failed to remove connection"}}},[a,i]),l=(0,b.useCallback)(async b=>{if(!a)return{ok:!1,error:"Missing projectId"};try{let c=await fetch("/api/trackers/connections",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:a,defaultTracker:b})});if(!c.ok){let a=await c.json().catch(()=>({}));return{ok:!1,error:a.error||"Failed to set default tracker"}}return await i(),{ok:!0}}catch{return{ok:!1,error:"Failed to set default tracker"}}},[a,i]);return{connections:c,defaultTracker:e,loading:g,refresh:i,addConnection:j,removeConnection:k,setDefaultTracker:l}}a.s(["useTrackerConnections",()=>c])},157633,a=>{"use strict";let b=(0,a.i(831709).default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);a.s(["Folder",()=>b],157633)},427411,a=>{"use strict";let b={bounds:null,sidebar:{workspaceWidth:260,logPanelHeight:200,workspaceVisible:!0,logPanelVisible:!1,linearTicketPanelWidth:576,objectiveChatPanelWidth:440,objectiveListPanelWidth:320},scroll:{lastThreadId:null,lastWorkspaceId:null}};function c(){return({...b}).sidebar}function d(a){let c={...b};c.sidebar={...c.sidebar,...a}}function e(){return c().workspaceWidth}function f(a){d({workspaceWidth:a})}function g(){return c().linearTicketPanelWidth}function h(a){d({linearTicketPanelWidth:a})}function i(){return c().objectiveChatPanelWidth}function j(a){d({objectiveChatPanelWidth:a})}function k(){return c().objectiveListPanelWidth}function l(a){d({objectiveListPanelWidth:a})}a.s(["loadLinearTicketPanelWidth",()=>g,"loadObjectiveChatPanelWidth",()=>i,"loadObjectiveListPanelWidth",()=>k,"loadWorkspaceWidth",()=>e,"persistLinearTicketPanelWidth",()=>h,"persistObjectiveChatPanelWidth",()=>j,"persistObjectiveListPanelWidth",()=>l,"persistWorkspaceWidth",()=>f])},552605,a=>{"use strict";let b=(0,a.i(831709).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["FileText",()=>b],552605)},737313,a=>{"use strict";let b=(0,a.i(831709).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);a.s(["MessageSquare",()=>b],737313)},392045,70014,a=>{"use strict";var b=a.i(308316);function c({className:a}){return(0,b.jsx)("svg",{className:a,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{d:"M2.886 4.18A11.982 11.982 0 0 1 11.99 0C18.624 0 24 5.376 24 12.009c0 3.64-1.62 6.903-4.18 9.105L2.887 4.18ZM1.817 5.626l16.556 16.556c-.524.33-1.075.62-1.65.866L.951 7.277c.247-.575.537-1.126.866-1.65ZM.322 9.163l14.515 14.515c-.71.172-1.443.282-2.195.322L0 11.358a12 12 0 0 1 .322-2.195Zm-.17 4.862 9.823 9.824a12.02 12.02 0 0 1-9.824-9.824Z"})})}a.s(["LinearIcon",()=>c],70014);let d={linear:c,jira:function({className:a}){return(0,b.jsxs)("svg",{className:a,viewBox:"12 12 104 104",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:[(0,b.jsx)("path",{d:"M108.023 16H61.805c0 11.52 9.324 20.848 20.847 20.848h8.5v8.226c0 11.52 9.328 20.848 20.848 20.848V19.977A3.98 3.98 0 00108.023 16zm0 0"}),(0,b.jsx)("path",{d:"M85.121 39.04H38.902c0 11.519 9.325 20.847 20.844 20.847h8.504v8.226c0 11.52 9.328 20.848 20.848 20.848V43.016a3.983 3.983 0 00-3.977-3.977zm0 0"}),(0,b.jsx)("path",{d:"M62.219 62.078H16c0 11.524 9.324 20.848 20.848 20.848h8.5v8.23c0 11.52 9.328 20.844 20.847 20.844V66.059a3.984 3.984 0 00-3.976-3.98zm0 0"})]})},github:function({className:a}){return(0,b.jsx)("svg",{className:a,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"})})}};function e({trackerType:a,className:c}){let e=d[a];return e?(0,b.jsx)(e,{className:c}):(0,b.jsx)(f,{className:c})}function f({className:a}){return(0,b.jsxs)("svg",{className:a,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("path",{d:"M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2"}),(0,b.jsx)("rect",{x:"9",y:"3",width:"6",height:"4",rx:"2"}),(0,b.jsx)("path",{d:"M9 12h6"}),(0,b.jsx)("path",{d:"M9 16h6"})]})}a.s(["TrackerIcon",()=>e],392045)},971382,a=>{"use strict";let b=(0,a.i(831709).default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);a.s(["Bot",()=>b],971382)}];
6
-
7
- //# sourceMappingURL=%5Broot-of-the-server%5D__dbda910b._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[422662,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={getDeploymentId:function(){return f},getDeploymentIdQueryOrEmptyString:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(){return!1}function g(){return""}},756490,a=>{"use strict";let b=(0,a.i(831709).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>b],756490)},89613,a=>{"use strict";let b=(0,a.i(831709).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",()=>b],89613)},831709,a=>{"use strict";var b=a.i(786220);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],831709)},830284,a=>{"use strict";var b=a.i(786220);function c(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!1),[f,g]=(0,b.useState)(null),h=(0,b.useCallback)(async()=>{e(!0);try{let a=await fetch("/api/projects");if(!a.ok)throw Error("Failed to fetch projects");let b=await a.json();c(b.projects??[]),g(null)}catch(a){g(a instanceof Error?a:Error("Unknown error"))}finally{e(!1)}},[]);(0,b.useEffect)(()=>{h()},[h]);let i=(0,b.useCallback)(async a=>{let b=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to create project");let d=(await b.json()).project;return c(a=>[d,...a]),d},[]);return{projects:a,isLoading:d,error:f,refetch:h,createProject:i,updateProject:(0,b.useCallback)(async(a,b)=>{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok)throw Error((await d.json().catch(()=>({}))).error||"Failed to update project");let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?e:b)),e},[]),deleteProject:(0,b.useCallback)(async a=>{let b=await fetch(`/api/projects/${a}`,{method:"DELETE"});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to delete project");c(b=>b.filter(b=>b.id!==a))},[])}}function d(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!0),f=(0,b.useCallback)(async()=>{try{let a=await fetch("/api/projects");if(!a.ok)return;let{projects:b}=await a.json(),d=await Promise.all((b??[]).map(async a=>{let b=[],c=[];try{let[d,e]=await Promise.all([fetch(`/api/projects/${a.id}/agents`),fetch(`/api/projects/${a.id}/threads`)]);d.ok&&(b=(await d.json()).agents??[]),e.ok&&(c=((await e.json()).threads??[]).map(a=>a.thread_id))}catch{}return{...a,repos:a.repos??[],agents:b.map(b=>({project_id:a.id,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at})),thread_ids:c,workspace_ids:c}}));c(d)}catch{}finally{e(!1)}},[]);(0,b.useEffect)(()=>{f()},[f]);let g=(0,b.useCallback)(async(a,b)=>{try{let d="string"==typeof a?{name:a}:a,e=d.name.trim(),f=(d.slug||e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),g=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...d,name:e,slug:f})});if(!g.ok)return null;let{project:h}=await g.json(),i=Array.isArray(b)?b:b?[b]:[];for(let a of i)await fetch(`/api/projects/${h.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:a})}).catch(a=>console.warn("[useProjects] link thread failed:",a));let j={...h,repos:h.repos??[],agents:[],thread_ids:i,workspace_ids:i};return c(a=>[...a,j].sort((a,b)=>a.name.localeCompare(b.name))),j}catch{return null}},[]),h=(0,b.useCallback)(async(a,b)=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:b})})).ok)return;c(c=>c.map(c=>c.id===a?{...c,name:b}:c).sort((a,b)=>a.name.localeCompare(b.name)))}catch{}},[]),i=(0,b.useCallback)(async a=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"DELETE"})).ok)return;c(b=>b.filter(b=>b.id!==a))}catch{}},[]),j=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok){let a=await d.json().catch(()=>({}));throw Error(a.error||"Failed to update project")}let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?{...b,...e,repos:e.repos??b.repos}:b)),e}catch{return null}},[]),k=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),l=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents?agentId=${b}`,{method:"DELETE"});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]);return{projects:a,isLoading:d,createProject:g,updateProject:j,renameProject:h,deleteProject:i,addAgent:k,removeAgent:l,reorderAgents:(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedAgentIds:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),moveAgent:(0,b.useCallback)(async(a,b,c)=>{try{await fetch(`/api/projects/${b}/agents?agentId=${a}`,{method:"DELETE"}),await fetch(`/api/projects/${c}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:a})}),await f()}catch{}},[f]),refresh:f}}a.s(["useProjects",()=>c,"useProjectsWithAgents",()=>d])},824179,a=>{"use strict";let b=(0,a.i(831709).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["X",()=>b],824179)},353532,a=>{"use strict";let b=(0,a.i(831709).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],353532)},542341,a=>{"use strict";let b=(0,a.i(831709).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);a.s(["Search",()=>b],542341)},627421,a=>{"use strict";let b=(0,a.i(831709).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["Check",()=>b],627421)},811760,a=>{"use strict";let b=(0,a.i(831709).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",()=>b],811760)},252197,a=>{"use strict";let b=(0,a.i(831709).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],252197)},529889,a=>{"use strict";var b=a.i(786220);function c(){return{isCoarsePointer:!1,canHover:!0,isPhone:!1,isTablet:!1,isTouchLayout:!1}}function d(){let[a,d]=(0,b.useState)(c);return(0,b.useEffect)(()=>{},[]),a}a.s(["useInputCapabilities",()=>d])},47349,(a,b,c)=>{"use strict";var d=a.r(786220);d.useState,d.useEffect,d.useLayoutEffect,d.useDebugValue,c.useSyncExternalStore=void 0!==d.useSyncExternalStore?d.useSyncExternalStore:function(a,b){return b()}},487610,(a,b,c)=>{"use strict";b.exports=a.r(47349)},997514,(a,b,c)=>{"use strict";var d=a.r(786220),e=a.r(487610),f="function"==typeof Object.is?Object.is:function(a,b){return a===b&&(0!==a||1/a==1/b)||a!=a&&b!=b},g=e.useSyncExternalStore,h=d.useRef,i=d.useEffect,j=d.useMemo,k=d.useDebugValue;c.useSyncExternalStoreWithSelector=function(a,b,c,d,e){var l=h(null);if(null===l.current){var m={hasValue:!1,value:null};l.current=m}else m=l.current;var n=g(a,(l=j(function(){function a(a){if(!i){if(i=!0,g=a,a=d(a),void 0!==e&&m.hasValue){var b=m.value;if(e(b,a))return h=b}return h=a}if(b=h,f(g,a))return b;var c=d(a);return void 0!==e&&e(b,c)?(g=a,b):(g=a,h=c)}var g,h,i=!1,j=void 0===c?null:c;return[function(){return a(b())},null===j?void 0:function(){return a(j())}]},[b,c,d,e]))[0],l[1]);return i(function(){m.hasValue=!0,m.value=n},[n]),k(n),n}},864442,(a,b,c)=>{"use strict";b.exports=a.r(997514)}];
2
-
3
- //# sourceMappingURL=_917d90b4._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[204246,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},490335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={BailoutToCSRError:function(){return g},isBailoutToCSRError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="BAILOUT_TO_CLIENT_SIDE_RENDERING";class g extends Error{constructor(a){super(`Bail out to client-side rendering: ${a}`),this.reason=a,this.digest=f}}function h(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===f}},349692,372871,a=>{"use strict";let b=(0,a.i(831709).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["default",()=>b],372871),a.s(["Loader2",()=>b],349692)},599086,a=>{"use strict";let b=(0,a.i(831709).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);a.s(["AlertTriangle",()=>b],599086)},870630,a=>{"use strict";let b="agx-chat:threads";function c(){let a=globalThis.localStorage;if(!a)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return a}function d(){let a=c().getItem(b);if(!a)return{threads:{}};try{let b=JSON.parse(a);if(b&&"object"==typeof b&&b.threads&&"object"==typeof b.threads)return{threads:Object.fromEntries(Object.entries(b.threads).map(([a,b])=>{var c,d;return[a,(c=a,d=b,{id:c,title:d?.title,messages:Array.isArray(d?.messages)?[...d.messages]:[],createdAt:"number"==typeof d?.createdAt?d.createdAt:Date.now(),updatedAt:"number"==typeof d?.updatedAt?d.updatedAt:Date.now(),metadata:d?.metadata,status:d?.status,outcomeNote:d?.outcomeNote,projectId:"string"==typeof d?.projectId?d.projectId:"string"==typeof d?.teamId?d.teamId:d?.projectId===null||d?.teamId===null?null:void 0})]}))}}catch{}return{threads:{}}}function e(a){c().setItem(b,JSON.stringify(a))}function f(a){return{...a,messages:a.messages.map(a=>({...a})),metadata:a.metadata?{...a.metadata}:void 0}}let g=new class{async saveThread(a){let b=Date.now(),c=d(),g=c.threads[a.id],h=g?.createdAt??a.createdAt??b,i=a.updatedAt??b,j={id:a.id,title:a.title,messages:a.messages.map(a=>({...a})),metadata:a.metadata,createdAt:h,updatedAt:i,status:a.status,outcomeNote:a.outcomeNote,projectId:a.projectId??a.teamId};return c.threads[a.id]=j,e(c),f(j)}async loadThread(a){let b=d().threads[a];return b?f(b):null}async listThreads(a){let b=Object.values(d().threads),c=a?.order??"desc",e=[...b].sort((a,b)=>"asc"===c?a.updatedAt-b.updatedAt:b.updatedAt-a.updatedAt),g=Math.max(0,a?.offset??0),h=a?.limit,i="number"==typeof h&&h>=0?e.slice(g,g+h):e.slice(g);return{total:b.length,threads:i.map(f)}}async deleteThread(a){let b=d();b.threads[a]&&(delete b.threads[a],e(b))}};a.s(["threadService",0,{listThreads:async()=>[...(await g.listThreads({order:"desc"})).threads.filter(a=>!0!==a.metadata?.archived)].sort((a,b)=>b.updatedAt-a.updatedAt),async createThread(a){let b="string"==typeof a?.id?a.id.trim():"";if(b){let c=await g.loadThread(b);if(c){let b={...c.metadata??{},...a?.metadata??{},archived:!1,archivedAt:null};return g.saveThread({id:c.id,title:a?.title??c.title,messages:a?.messages?.length?a.messages:c.messages,metadata:b,createdAt:c.createdAt})}}let c={id:b||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:a?.messages?.length?a.messages:[],title:a?.title,metadata:a?.metadata};return g.saveThread(c)},async deleteThread(a){let b=a.trim();if(!b)return;let c=await g.loadThread(b);if(!c)return;let d={...c.metadata??{},archived:!0,archivedAt:Date.now()};await g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:d,createdAt:c.createdAt})},async renameThread(a,b){let c=a.trim(),d=b.trim();if(!c||!d)return null;let e=await g.loadThread(c);return e?(e.title?.trim()??"")===d?e:g.saveThread({id:e.id,title:d,messages:e.messages,metadata:e.metadata,createdAt:e.createdAt}):null},async updateThreadStatus(a,b){let c=await g.loadThread(a);return c?c.status===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:b,outcomeNote:c.outcomeNote}):null},async updateThreadOutcomeNote(a,b){let c=await g.loadThread(a);return c?c.outcomeNote===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:c.status,outcomeNote:b}):null},async updateMessageThreadStatus(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,threadStatus:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async updateMessageOutcomeNote(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,outcomeNote:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async saveThreadMessages(a,b){let c=await g.loadThread(a);if(!c)return null;let d=c.title?.trim()||function(a){let b=a.find(a=>"user"===a.role)?.content?.trim();if(!b)return;let c=b.replace(/\s+/g," ");return c.length>60?`${c.slice(0,60).trim()}…`:c}(b);return function(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c+=1){let d=a[c],e=b[c];if(d.id!==e.id||d.role!==e.role||d.participantId!==e.participantId||d.content!==e.content||d.timestamp!==e.timestamp)return!1}return!0}(c.messages,b)&&(c.title?.trim()||void 0)===d?c:g.saveThread({id:c.id,title:d,messages:b,metadata:c.metadata,createdAt:c.createdAt})}}],870630)},736868,a=>{"use strict";let b=(0,a.i(831709).default)("folder-git-2",[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);a.s(["FolderGit2",()=>b],736868)},769677,a=>{"use strict";let b="project_objectives_workspace",c="project_goals_workspace",d=new Set(["on_track","at_risk","off_track","done"]);function e(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function f(a){return`${a}_${Math.random().toString(36).slice(2,10)}`}function g(a){return[...a].sort((a,b)=>Date.parse(b.updatedAt)-Date.parse(a.updatedAt))}function h(a){return[...a].sort((a,b)=>Date.parse(a.createdAt)-Date.parse(b.createdAt))}function i(a){return[...a].sort((a,b)=>Date.parse(b.createdAt)-Date.parse(a.createdAt))}function j(a,b=""){return"string"==typeof a?a:b}function k(a){return Array.isArray(a)?Array.from(new Set(a.map(a=>"string"==typeof a?a.trim():"").filter(Boolean))):[]}function l(a,b="1970-01-01T00:00:00.000Z"){if("string"!=typeof a)return b;let c=Date.parse(a);return Number.isNaN(c)?b:new Date(c).toISOString()}function m(a){return"number"==typeof a&&Number.isFinite(a)?Math.max(0,Math.min(100,Math.round(a))):0}function n(a,b=0){return"number"==typeof a&&Number.isFinite(a)?Math.max(0,Math.floor(a)):b}function o(a,b="objective"){let c=a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,32);return c||b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"objective"}function p(a,b,c="objective"){let d=o(c),e=o(a,d),f=e,g=2;for(;b.has(f);){let a=`-${g}`,b=Math.max(1,32-a.length);f=`${e.slice(0,b)}${a}`,g+=1}return b.add(f),f}function q(a,b,c){return p(a,new Set(b.filter(a=>a.id!==c).map(a=>o(a.key||a.title||a.id))),c??a)}function r(a){var b;if(!e(a))return null;let c=l(a.updatedAt??a.createdAt),g=l(a.createdAt,c);return{id:j(a.id,f("objective")),title:j(a.title,"Untitled objective"),teamId:j(a.teamId??a.team_id??a.ownerTeamId),key:o(j(a.key??a.slug??a.label),j(a.title??a.id,"objective")),threadId:j(a.threadId)||null,chatSessionVersion:n(a.chatSessionVersion,0),scheduledTaskIds:k(a.scheduledTaskIds??a.promptJobIds),summary:j(a.summary),progress:m(a.progress),status:"string"==typeof(b=a.status)&&d.has(b)?b:"on_track",createdAt:g,updatedAt:c}}function s(a){if(!e(a))return null;let b=l(a.updatedAt??a.createdAt),c=l(a.createdAt,b),d=j(a.objectiveId??a.goalId);return d?{id:j(a.id,f("objective_activity")),objectiveId:d,sourceType:"note",sourceLabel:j(a.sourceLabel,"Update"),title:j(a.title,"Untitled activity"),body:j(a.body),createdAt:c,updatedAt:b,relatedTaskId:j(a.relatedTaskId)||null}:null}function t(a){if(!e(a))return null;let b=j(a.activityId);return b?{id:j(a.id,f("objective_thread_message")),activityId:b,author:j(a.author,"You"),body:j(a.body),createdAt:l(a.createdAt)}:null}function u(){return{objectives:[],activities:[],activityThreads:{}}}function v(a){let b;if(!e(a))return u();let c=Array.isArray(a.objectives)?a.objectives.map(a=>r(a)).filter(a=>null!==a):[],d=Array.isArray(a.activities)?a.activities.map(a=>s(a)).filter(a=>null!==a):[],f=e(a.activityThreads)?Object.fromEntries(Object.entries(a.activityThreads).map(([a,b])=>[a,h(Array.isArray(b)?b.map(a=>t(a)).filter(a=>null!==a):[])])):{};return{objectives:g((b=new Set,c.map(a=>{let c=p(a.key||a.title||a.id,b,a.id||a.title||"objective");return a.key===c?a:{...a,key:c}}))),activities:i(d),activityThreads:f}}function w(a){if(!e(a))return u();let d=a[b];if(void 0!==d){let a=v(d);if(a.objectives.length>0||a.activities.length>0||Object.keys(a.activityThreads).length>0)return a}let f=a[c];if(void 0!==f){if(!e(f))return u();let a=Array.isArray(f.goals)?f.goals.map(a=>(function(a){if(!e(a))return null;let b=j(a.target),c=[j(a.summary),b?`Measure: ${b}`:""].filter(Boolean).join("\n\n");return r({...a,summary:c})})(a)).filter(a=>null!==a):[],b=Array.isArray(f.manualActivities)?f.manualActivities.map(a=>s({...a,sourceLabel:"Update"})).filter(a=>null!==a):[],c=e(f.activityThreads)?Object.fromEntries(Object.entries(f.activityThreads).map(([a,b])=>[a,h(Array.isArray(b)?b.map(b=>t({...b,activityId:a})).filter(a=>null!==a):[])])):{};return{objectives:g(a),activities:i(b),activityThreads:c}}return u()}function x(a,d){let e={...a};return delete e[c],e[b]=v(d),e}function y(a){return{id:a.id??f("objective"),title:a.title.trim(),teamId:a.teamId.trim(),key:o(a.key?.trim()??a.title.trim(),a.id??a.title),threadId:"string"==typeof a.threadId&&a.threadId.trim()?a.threadId.trim():null,chatSessionVersion:n(a.chatSessionVersion??2,2),scheduledTaskIds:k(a.scheduledTaskIds??[]),summary:a.summary?.trim()??"",progress:m(a.progress??0),status:a.status??"on_track",createdAt:a.now,updatedAt:a.now}}function z(a,b){let c=a.objectives.findIndex(a=>a.id===b.id)>=0?a.objectives.map(a=>a.id===b.id?b:a):[b,...a.objectives];return{...a,objectives:g(c)}}function A(a,b){let c=new Set(a.activities.filter(a=>a.objectiveId===b).map(a=>a.id)),d=Object.fromEntries(Object.entries(a.activityThreads).filter(([a])=>!c.has(a)));return{objectives:a.objectives.filter(a=>a.id!==b),activities:a.activities.filter(a=>a.objectiveId!==b),activityThreads:d}}function B({objective:a,workspace:b}){return b.activities.filter(b=>b.objectiveId===a.id).map(a=>({...a,threadCount:b.activityThreads[a.id]?.length??0})).sort((a,b)=>Date.parse(b.createdAt)-Date.parse(a.createdAt))}a.s(["CURRENT_OBJECTIVE_CHAT_SESSION_VERSION",0,2,"LEGACY_PROJECT_GOALS_METADATA_KEY",0,c,"PROJECT_HEALTH_METADATA_KEY",0,"project_health_snapshot","PROJECT_OBJECTIVES_METADATA_KEY",0,b,"buildObjectiveTimelineActivities",()=>B,"createProjectObjective",()=>y,"generateProjectObjectiveKey",()=>q,"readProjectObjectivesWorkspace",()=>w,"removeProjectObjective",()=>A,"upsertProjectObjective",()=>z,"writeProjectObjectivesWorkspace",()=>x])}];
2
-
3
- //# sourceMappingURL=apps_local_a2835b49._.js.map
@@ -1,20 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,568656,e=>{"use strict";var t=e.i(762281),r=e.i(307241),a=e.i(506420),s=e.i(935851),o=e.i(958164),n=e.i(429056),i=e.i(417442),l=e.i(363732);let d=(0,l.default)("calendar-clock",[["path",{d:"M16 14v2.2l1.6 1",key:"fo4ql5"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]]);var c=e.i(529471),u=e.i(580873),m=e.i(575479),x=e.i(640481),p=e.i(929870),b=e.i(8707),h=e.i(794731),f=e.i(169610),v=e.i(572665),g=e.i(519132),j=e.i(797167),y=e.i(524123),k=e.i(945028),N=e.i(490011),w=e.i(984242),S=e.i(208343),C=e.i(133232),$=e.i(884564),I=e.i(423709),A=e.i(40527),T=e.i(378764);let E=(0,l.default)("pause",[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]);var O=e.i(245900),M=e.i(437307),R=e.i(715908),P=e.i(553069),L=e.i(827430),D=e.i(352687),F=e.i(667480);function _(e){let t=e.cadence||e.cronExpr;return t?(0,P.cronToHuman)(e.cronExpr||t)??t:"No frequency"}function U(e){return"active"===e.state&&(null!==e.nextRunAt&&e.nextRunAt-Date.now()<0?!e.lastRunAt||!(e.lastRunAt>=e.nextRunAt):!!e.prevScheduledAt&&!!e.lastRunAt&&e.lastRunAt>e.prevScheduledAt+3e5)}function z(e,t){if("paused"===t)return"Paused";if("stopped"===t)return"Stopped";if(null===e)return"Pending";let r=e-Date.now();return r<0?"Overdue":r<6e4?`in ${Math.round(r/1e3)}s`:r<36e5?`in ${Math.round(r/6e4)}m`:r<864e5?`in ${Math.round(r/36e5)}h`:`in ${Math.round(r/864e5)}d`}function q(e){return new Date(e).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function J({job:e,onClose:r,onUpdate:a}){let[o,n]=(0,s.useState)({cadence:e.cronExpr||e.cadence||"",condition:e.condition||""}),[i,l]=(0,s.useState)(!0),[d,c]=(0,s.useState)(!1),m=async()=>{if(!i)return;c(!0);let e=await a({cadence:o.cadence,condition:o.condition});c(!1),e&&r()};return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4 py-6",children:(0,t.jsxs)("div",{className:"flex w-full max-w-md max-h-[85vh] flex-col rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--border)] px-6 py-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,t.jsx)(u.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("p",{className:"text-sm font-semibold text-[var(--foreground)]",children:e.name})]}),(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)]",children:(0,t.jsx)(j.X,{className:"h-4 w-4"})})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-5",children:(0,t.jsx)(F.ScheduleConditionPicker,{value:o,onChange:(e,t)=>{n(e),l(t.isScheduleValid)},scheduleLabel:"Schedule",conditionLabel:"Condition",conditionHelpText:"Scheduled runs and Run now will check this condition before executing."})}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center justify-end gap-3 border-t border-[var(--border)] px-6 py-4",children:[(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-xl border border-[var(--border)] px-4 py-2.5 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:()=>void m(),disabled:d||!i,className:"rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-4 py-2.5 text-sm text-emerald-400 transition-colors hover:bg-emerald-500/20 disabled:opacity-50",children:d?"Saving...":"Save"})]})]})})}function V({job:e,onClose:r,onUpdate:a}){let[o,n]=(0,s.useState)(e.prompt||""),[i,l]=(0,s.useState)(!1),d=async()=>{o!==e.prompt&&(l(!0),await a({prompt:o}),l(!1))};return(0,t.jsx)("div",{className:"fixed inset-0 z-40 flex items-center justify-center bg-black/50 px-4 py-6",children:(0,t.jsxs)("div",{className:"flex w-full max-w-6xl max-h-[85vh] flex-col rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex shrink-0 items-start justify-between gap-4 border-b border-[var(--border)] px-6 py-5",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2.5",children:[(0,t.jsx)("p",{className:"truncate text-lg font-semibold text-[var(--foreground)]",children:e.name}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${H(e.state)}`,children:W(e.state)}),e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),_(e)]}),(0,t.jsxs)("span",{children:["Next run ",z(e.nextRunAt,e.state)]}),(0,t.jsxs)("span",{children:["Updated ",q(e.updatedAt)]})]})]}),(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)]","aria-label":"Close scheduled task details",children:(0,t.jsx)(j.X,{className:"h-4 w-4"})})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 space-y-5",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Instructions"}),(0,t.jsx)("div",{className:"rounded-2xl border border-[var(--card-hover-border)] bg-[var(--overlay-panel-muted)] px-1 py-1 text-sm leading-6 text-[var(--foreground)]",children:(0,t.jsx)(A.default,{content:o,editable:!0,onChange:n,placeholder:"Write instructions in markdown…"})})]})}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center justify-end gap-3 border-t border-[var(--border)] px-6 py-4",children:[(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-xl border border-[var(--border)] px-4 py-2.5 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:()=>void d(),disabled:i,className:"rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-4 py-2.5 text-sm text-emerald-400 transition-colors hover:bg-emerald-500/20 disabled:opacity-50",children:i?"Saving...":"Save"})]})]})})}function W(e){return"active"===e?"Active":"paused"===e?"Paused":"Stopped"}function H(e){return"active"===e?"border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed)]":"paused"===e?"border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked)]":"border-[var(--tone-neutral-border)] bg-[var(--tone-neutral-bg)] text-[var(--tone-neutral)]"}function B({projectId:e,objectiveId:r,objectiveKey:a,createDefaults:o,onCreateTask:n}){let{jobs:i,loading:l,refresh:d,deleteJob:m,toggleJob:x,updateJob:b,fetchRuns:f,runNow:v}=(0,R.usePromptJobs)(e,{requireProjectId:!0,includeObjectiveJobs:!0,objectiveId:r}),[g,j]=(0,s.useState)(!1),[y,k]=(0,s.useState)(null),[N,w]=(0,s.useState)(null),[S,C]=(0,s.useState)(null),[$,I]=(0,s.useState)(null),[A,T]=(0,s.useState)(null),[P,F]=(0,s.useState)([]),B=(0,s.useMemo)(()=>i.filter(e=>e.objectiveId===r).sort((e,t)=>!e.name.toLowerCase().includes("objective worker")-!t.name.toLowerCase().includes("objective worker")),[i,r]),K=(0,s.useMemo)(()=>B.find(e=>e.id===S)??null,[S,B]),G=(0,s.useCallback)(async()=>{if(0===B.length)return void F([]);let e=[];await Promise.all(B.map(async t=>{for(let r of(await f(t.id)))e.push({...r,jobName:t.name})})),e.sort((e,t)=>new Date(t.startedAt??t.createdAt).getTime()-new Date(e.startedAt??e.createdAt).getTime()),F(e.slice(0,10))},[B,f]);(0,s.useEffect)(()=>{G()},[G]);let X=async e=>{k(e.id),w(null);let t=await m(e.id);(k(null),t.ok)?(S===e.id&&C(null),await d()):w(t.error??`Failed to hide "${e.name}".`)},Y=async e=>{w(null);let t=await n(e);return t&&await d(),t},Q=(0,s.useMemo)(()=>B.find(e=>e.id===A)??null,[A,B]),Z=(0,s.useCallback)(async(e,t)=>{let r=await b(e,t);return r&&(C(e),await d()),r},[d,b]);return(0,t.jsxs)(t.Fragment,{children:[g?(0,t.jsx)(L.CreateJobModal,{onClose:()=>j(!1),onSubmit:async e=>{await Y(e)},createDefaults:o,contextLabel:a}):null,K?(0,t.jsx)(V,{job:K,onClose:()=>C(null),onUpdate:e=>Z(K.id,e)}):null,Q?(0,t.jsx)(J,{job:Q,onClose:()=>T(null),onUpdate:e=>Z(Q.id,e)}):null,(0,t.jsxs)("div",{className:"px-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Scheduled Jobs"}),(0,t.jsxs)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:["Shared scheduled-task list filtered to objective label"," ",(0,t.jsx)("span",{className:"font-mono text-[var(--foreground)]",children:a}),"."]})]}),(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:(0,t.jsxs)("button",{type:"button",onClick:()=>j(!0),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:[(0,t.jsx)(p.Plus,{className:"h-4 w-4"}),"New task"]})})]}),N?(0,t.jsx)("p",{className:"mt-4 text-sm text-[var(--destructive)]",children:N}):null,(0,t.jsx)("div",{className:"mt-5 space-y-3",children:l&&0===B.length?(0,t.jsx)("div",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-8 text-sm text-[var(--muted-foreground)]",children:"Loading scheduled tasks..."}):0===B.length?(0,t.jsx)("div",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-8 text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks for this objective yet."}):B.map(e=>(0,t.jsx)("div",{onClick:()=>C(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),C(e.id))},role:"button",tabIndex:0,className:`block w-full rounded-2xl border px-4 py-4 text-left transition-colors focus:outline-none focus:ring-2 focus:ring-[var(--card-hover-border)] ${U(e)?"border-amber-500/40 bg-amber-500/5 hover:border-amber-500/60":"border-[var(--border)] bg-[var(--overlay-panel-muted)] hover:border-[var(--card-hover-border)]"}`,children:(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2.5",children:[(0,t.jsx)("span",{className:`inline-block size-2 shrink-0 rounded-full ${"active"===e.state?"bg-emerald-400":"paused"===e.state?"bg-amber-400":"bg-[var(--tone-neutral)]"}`}),(0,t.jsx)("p",{className:"truncate text-sm font-semibold text-[var(--foreground)]",children:e.name}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${H(e.state)}`,children:W(e.state)}),U(e)&&(0,t.jsxs)("span",{className:"shrink-0 text-[10px] font-semibold uppercase tracking-[0.16em] text-amber-400 bg-amber-500/10 px-2 py-0.5 rounded-full border border-amber-500/20 inline-flex items-center gap-1",children:[(0,t.jsx)(u.Clock,{className:"h-3 w-3"}),"overdue"]})]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:`inline-flex items-center gap-1.5 ${U(e)?"text-amber-400 font-medium":""}`,children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),"Next run ",z(e.nextRunAt,e.state)]}),(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),_(e)]}),e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null]}),(0,t.jsx)("p",{className:"mt-3 line-clamp-2 text-sm leading-6 text-[var(--muted-foreground)]",children:e.prompt.split("\n").map(e=>e.trim()).find(Boolean)||"No instructions yet"}),e.condition?(0,t.jsxs)("p",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:["Condition: ",e.condition]}):null]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[(0,t.jsx)("button",{type:"button",title:"Run now",onClick:async t=>{t.stopPropagation(),C(e.id),k(e.id),await v(e.id),k(null),await d(),await G()},disabled:y===e.id,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-emerald-400/40 hover:text-emerald-300 disabled:cursor-not-allowed disabled:opacity-50",children:(0,t.jsx)(O.Play,{className:"h-3.5 w-3.5 fill-current"})}),(0,t.jsx)("button",{type:"button",title:"Edit schedule",onClick:t=>{t.stopPropagation(),T(e.id)},className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-sky-400/40 hover:text-sky-300",children:(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"})}),(0,t.jsx)("button",{type:"button",title:"active"===e.state?"Pause":"Resume",onClick:async t=>{t.stopPropagation(),k(e.id),await x(e),k(null)},disabled:y===e.id,className:`rounded-lg border p-2 transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${"active"===e.state?"border-[var(--border)] text-[var(--muted-foreground)] hover:border-amber-400/40 hover:text-amber-300":"border-emerald-500/30 text-emerald-400 hover:border-emerald-400/50 hover:text-emerald-300"}`,children:"active"===e.state?(0,t.jsx)(E,{className:"h-3.5 w-3.5"}):(0,t.jsx)(O.Play,{className:"h-3.5 w-3.5 fill-current"})}),(0,t.jsx)("button",{type:"button",title:"Delete",onClick:t=>{t.stopPropagation(),I(e)},disabled:y===e.id,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--status-failed-border)] hover:text-[var(--destructive)] disabled:cursor-not-allowed disabled:opacity-50",children:(0,t.jsx)(h.Trash2,{className:"h-3.5 w-3.5"})})]})]})},e.id))}),P.length>0&&(0,t.jsxs)("div",{className:"mt-8",children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.18em] text-[var(--muted-foreground)] mb-3",children:"Recent executions"}),(0,t.jsx)("div",{className:"space-y-0.5",children:P.map(e=>{let r=e.startedAt??e.createdAt,a="success"===e.status,s="failed"===e.status,o="running"===e.status;return(0,t.jsxs)("div",{className:"py-2 px-2 rounded-md text-xs",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:`flex size-5 shrink-0 items-center justify-center rounded-full border ${a?"border-emerald-500/40 text-emerald-400":s?"border-[var(--status-failed-border)] text-[var(--destructive)]":o?"border-sky-500/40 text-sky-400":"border-[var(--border)] text-[var(--muted-foreground)]"}`,children:a?(0,t.jsx)(c.Check,{className:"h-3 w-3"}):s?(0,t.jsx)(M.XCircle,{className:"h-3 w-3"}):(0,t.jsx)("span",{className:`block size-1.5 rounded-full ${o?"bg-sky-400 animate-pulse":"bg-current"}`})}),(0,t.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:e.jobName}),(0,t.jsx)("span",{className:"ml-auto shrink-0 text-[11px] text-[var(--muted-foreground)]",children:q(r)}),null!=e.durationMs&&(0,t.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-[var(--muted-foreground)]",children:e.durationMs<1e3?`${e.durationMs}ms`:`${Math.round(e.durationMs/1e3)}s`})]}),s&&e.error&&(0,t.jsxs)("p",{className:"mt-1 ml-8 text-[11px] leading-snug text-[var(--destructive)] opacity-80 line-clamp-2",children:[e.error,null!=e.exitCode&&` (exit ${e.exitCode})`]}),s&&e.logs&&(0,t.jsxs)("details",{className:"mt-1 ml-8 group",children:[(0,t.jsx)("summary",{className:"cursor-pointer text-[10px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] select-none",children:"Show tail logs"}),(0,t.jsx)("pre",{className:"mt-1 max-h-40 overflow-auto rounded bg-[var(--muted)] px-2 py-1.5 text-[10px] leading-[1.4] text-[var(--foreground)] whitespace-pre-wrap break-words",children:e.logs})]})]},e.id)})})]})]}),(0,t.jsx)(D.default,{isOpen:!!$,title:"Delete scheduled task?",message:"This permanently removes the task and all its run history. This cannot be undone.",preview:$?.name,confirmLabel:"Delete",variant:"danger",onConfirm:()=>{$&&X($),I(null)},onCancel:()=>I(null)})]})}var K=e.i(498027),G=e.i(367859);let X=(0,l.default)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]),Y={"metric-check":{label:"Metric",className:"bg-blue-500/15 text-blue-400 border-blue-500/30"},"status-update":{label:"Status",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30"},milestone:{label:"Milestone",className:"bg-amber-500/15 text-amber-400 border-amber-500/30"},note:{label:"Note",className:"bg-[var(--tone-neutral-bg)] text-[var(--tone-neutral)] border-[var(--tone-neutral-border)]"}},Q=["metric-check","status-update","milestone","note"];function Z({activity:e}){let[r,a]=(0,s.useState)(!1),o=Y[e.type]??Y.note,n=e.body.length>200;return(0,t.jsxs)("div",{className:"relative pl-6 pb-6 last:pb-0",children:[(0,t.jsx)("div",{className:"absolute left-0 top-1.5 h-3 w-3 rounded-full border-2 border-[var(--timeline-node-border)] bg-[var(--timeline-node-bg)]"}),(0,t.jsx)("div",{className:"absolute bottom-0 left-[5px] top-4 w-px bg-[var(--timeline-track)] last:hidden"}),(0,t.jsxs)("div",{className:"mb-1.5 flex items-center gap-2",children:[(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] ${o.className}`,children:o.label}),(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:function(e){let t=Date.now(),r=Date.parse(e);if(Number.isNaN(r))return e;let a=Math.floor((t-r)/6e4);if(a<1)return"just now";if(a<60)return`${a}m ago`;let s=Math.floor(a/60);if(s<24)return`${s}h ago`;let o=Math.floor(s/24);return o<30?`${o}d ago`:new Date(r).toLocaleDateString("en-US",{month:"short",day:"numeric",year:o>365?"numeric":void 0})}(e.createdAt)}),"manual"!==e.source&&(0,t.jsx)("span",{className:"max-w-[180px] truncate font-mono text-[11px] text-[var(--app-shell-soft-text)]",children:e.source})]}),r?(0,t.jsx)("div",{className:"prose prose-sm max-w-none text-sm text-[var(--foreground)] prose-neutral dark:prose-invert",children:(0,t.jsx)(S.Markdown,{content:e.body})}):(0,t.jsx)("div",{className:`text-sm leading-relaxed text-[var(--muted-foreground)] ${n?"max-h-24 overflow-hidden [mask-image:linear-gradient(to_bottom,black_72%,transparent)]":""}`,children:(0,t.jsx)(S.Markdown,{content:e.body})}),n&&(0,t.jsxs)("button",{type:"button",onClick:()=>a(!r),className:"mt-1.5 flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[r?(0,t.jsx)(K.ChevronDown,{size:12}):(0,t.jsx)(G.ChevronRight,{size:12}),r?"Show less":"Show more"]})]})}function ee({projectId:e,objectiveId:r,onCreated:a,onCancel:o}){let[n,i]=(0,s.useState)("note"),[l,d]=(0,s.useState)(""),[c,u]=(0,s.useState)(!1),m=(0,s.useRef)(null);(0,s.useEffect)(()=>{m.current?.focus()},[]);let x=async()=>{let t=l.trim();if(t&&!c){u(!0);try{let s=await fetch(`/api/projects/${e}/objectives/${r}/activities`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:n,body:t})});if(!s.ok)throw Error("Failed to create activity");let o=await s.json();a(o)}catch(e){console.error("Failed to create activity:",e)}finally{u(!1)}}};return(0,t.jsxs)("div",{className:"mb-4 rounded-lg border border-[var(--border)] bg-[var(--overlay-panel-muted)] p-3",children:[(0,t.jsx)("div",{className:"mb-3 flex flex-wrap gap-1.5",children:Q.map(e=>{let r=Y[e],a=n===e;return(0,t.jsx)("button",{type:"button",onClick:()=>i(e),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${a?"border-[var(--foreground)] bg-[var(--foreground)] text-[var(--background)]":`${r.className} hover:opacity-80`}`,children:r.label},e)})}),(0,t.jsx)("textarea",{ref:m,value:l,onChange:e=>d(e.target.value),placeholder:"What did you do?",rows:3,className:"w-full resize-none rounded-md border border-[var(--border)] bg-[var(--input)] px-3 py-2 text-sm text-[var(--foreground)] placeholder:text-[var(--app-shell-soft-text)] focus:border-[var(--card-hover-border)] focus:outline-none"}),(0,t.jsxs)("div",{className:"mt-2 flex items-center justify-end gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:o,className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:x,disabled:!l.trim()||c,className:"px-3 py-1.5 text-xs font-medium rounded-md bg-sky-600 text-white hover:bg-sky-500 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",children:c?"Saving...":"Log activity"})]})]})}function et({projectId:e,objectiveId:r,onTotalChange:a}){let[o,n]=(0,s.useState)([]),[i,l]=(0,s.useState)(0),[d,c]=(0,s.useState)(!1),[u,m]=(0,s.useState)(1),[x,b]=(0,s.useState)(!0),[h,f]=(0,s.useState)("all"),[v,g]=(0,s.useState)(!1),[y,k]=(0,s.useState)(!1),N=(0,s.useCallback)(async(t,s,o)=>{b(!0);try{let i=new URLSearchParams({page:String(t),limit:"25"});"all"!==s&&i.set("type",s);let d=await fetch(`/api/projects/${e}/objectives/${r}/activities?${i}`);if(!d.ok)throw Error("Failed to load activities");let u=await d.json(),m=Array.isArray(u.activities)?u.activities:[],x="number"==typeof u.total?u.total:m.length,p=!!u.hasMore;n(e=>o?[...e,...m]:m),l(x),a?.(x),c(p)}catch(e){console.error("Failed to fetch activities:",e)}finally{b(!1)}},[e,r]);return(0,s.useEffect)(()=>{m(1),N(1,h,!1)},[N,h]),(0,t.jsxs)("section",{children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Time-ordered log of outputs from scheduled tasks and manual entries."}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>k(!y),className:`flex items-center gap-1 px-2.5 py-1 rounded-md text-xs font-medium transition-colors ${y?"text-sky-400 bg-sky-500/10":"text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]"}`,children:[y?(0,t.jsx)(j.X,{size:12}):(0,t.jsx)(p.Plus,{size:12}),"Log activity"]}),(0,t.jsx)("button",{type:"button",onClick:()=>g(!v),className:`p-1.5 rounded-md transition-colors ${v||"all"!==h?"text-sky-400 bg-sky-500/10":"text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]"}`,"aria-label":"Filter activities",children:(0,t.jsx)(X,{size:14})})]})]}),v&&(0,t.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-4",children:[(0,t.jsx)("button",{type:"button",onClick:()=>f("all"),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${"all"===h?"border-[var(--foreground)] bg-[var(--foreground)] text-[var(--background)]":"border-[var(--tone-neutral-border)] bg-[var(--tone-neutral-bg)] text-[var(--tone-neutral)] hover:border-[var(--card-hover-border)]"}`,children:"All"}),Q.map(e=>{let r=Y[e],a=h===e;return(0,t.jsx)("button",{type:"button",onClick:()=>f(e),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${a?"border-[var(--foreground)] bg-[var(--foreground)] text-[var(--background)]":`${r.className} hover:opacity-80`}`,children:r.label},e)})]}),y&&(0,t.jsx)(ee,{projectId:e,objectiveId:r,onCreated:e=>{n(t=>[e,...t]),l(e=>{let t=e+1;return a?.(t),t}),k(!1)},onCancel:()=>k(!1)}),x&&0===o.length?(0,t.jsx)("div",{className:"py-6 text-center text-sm text-[var(--muted-foreground)]",children:"Loading activities..."}):0===o.length?(0,t.jsxs)("div",{className:"rounded-xl border border-dashed border-[var(--border)] bg-[var(--overlay-panel-muted)] p-6 text-center",children:[(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No activities yet."}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--app-shell-soft-text)]",children:"Activities are created by scheduled tasks and agent actions."})]}):(0,t.jsxs)("div",{children:[o.map(e=>(0,t.jsx)(Z,{activity:e},e.id)),d&&(0,t.jsx)("div",{className:"pt-2 pl-6",children:(0,t.jsx)("button",{type:"button",onClick:()=>{let e=u+1;m(e),N(e,h,!0)},disabled:x,className:"text-xs text-sky-400 hover:text-sky-300 transition-colors disabled:opacity-50",children:x?"Loading...":"Load more"})})]})]})}let er=/(?:^|\n)Objective health:\s*(\d{1,3})%\s*(On track|At risk|Off track|Done)\b/im,ea={"on track":"on_track","at risk":"at_risk","off track":"off_track",done:"done"};function es(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function eo(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function en(e){if("string"!=typeof e)return null;let t=e.trim().toLowerCase();return"on_track"===t||"at_risk"===t||"off_track"===t||"done"===t?t:ea[t]??null}function ei(e){if("string"!=typeof e)return null;let t=Date.parse(e);return Number.isNaN(t)?null:new Date(t).toISOString()}function el(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function ed(...e){let t=e.flatMap(e=>e??[]),r=[];for(let e of[...t].sort((e,t)=>Date.parse(e.recordedAt)-Date.parse(t.recordedAt))){let t=r[r.length-1]??null;t&&t.progress===e.progress&&t.status===e.status&&(!t.source||!e.source||t.source===e.source)&&5e3>=Math.abs(Date.parse(e.recordedAt)-Date.parse(t.recordedAt))||r.push(e)}return r}let ec={on_track:{label:"On track",stroke:"var(--status-completed)"},at_risk:{label:"At risk",stroke:"var(--status-blocked)"},off_track:{label:"Off track",stroke:"var(--status-failed)"},done:{label:"Done",stroke:"var(--status-in-progress)"}};function eu(e){let{projectId:r,objectiveId:a,objectiveKey:o,metadata:n,currentProgress:i,currentStatus:l,objectiveUpdatedAt:d}=e,c=(0,s.useMemo)(()=>(function(e,t){if(!es(e)||!t.trim())return[];let r=e.project_objective_health_history;if(!es(r))return[];let a=r[t.trim()];return Array.isArray(a)?ed(a.map(e=>(function(e){if(!es(e))return null;let t=en(e.status),r=ei(e.recordedAt);return t&&r?{progress:eo(e.progress),status:t,recordedAt:r,source:el(e.source),note:el(e.note),objectiveId:el(e.objectiveId)??null,objectiveKey:el(e.objectiveKey)??null}:null})(e)).filter(e=>!!e)):[]})(n,a),[n,a]),[u,m]=(0,s.useState)(c),x=(0,s.useMemo)(()=>({progress:i,status:l,recordedAt:d,objectiveId:a,objectiveKey:o}),[i,l,a,o,d]);(0,s.useEffect)(()=>{m(c)},[c]),(0,s.useEffect)(()=>{let e=!1;return async function(){try{let t=await fetch(`/api/projects/${r}/objectives/${a}/activities?type=status-update&limit=100`);if(!t.ok)throw Error("Failed to load objective activity history");let s=await t.json(),n=Array.isArray(s.activities)?s.activities:[],i=ed(c,ed(n.map(e=>(function(e){if("status-update"!==e.type)return null;let t=e.body.match(er);if(!t)return null;let r=eo(Number(t[1])),a=en(t[2]),s=ei(e.createdAt);return a&&s?{progress:r,status:a,recordedAt:s,source:el(e.source),objectiveKey:el(e.objectiveLabel)??null}:null})(e)).filter(e=>!!e&&(!o||e.objectiveKey===o))));e||m(i)}catch{e||m(c)}}(),()=>{e=!0}},[c,a,o,r]);let[p,b]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let e=requestAnimationFrame(()=>b(!0));return()=>cancelAnimationFrame(e)},[]);let h=ed(u,[x]),f=h[h.length-1],v=ec[f.status];return 0===u.length||1===h.length||h.length,(0,t.jsxs)("div",{"data-testid":"objective-health-trend",className:"ml-auto inline-flex items-center gap-3 rounded-xl border border-[var(--border)] bg-[var(--overlay-panel-muted)] px-3 py-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--muted-foreground)]",children:"Objective health"}),(0,t.jsxs)("div",{className:"mt-0.5 text-[20px] font-semibold leading-none text-[var(--foreground)]",children:[f.progress,"%"]}),(0,t.jsx)("div",{className:"mt-0.5 text-[10px] font-medium",style:{color:v.stroke},children:v.label})]}),(0,t.jsx)("div",{className:"h-[40px] w-[14px] overflow-hidden rounded-sm",style:{background:"var(--muted)"},role:"progressbar","aria-valuenow":f.progress,"aria-valuemin":0,"aria-valuemax":100,"aria-label":"Objective health",title:`${f.progress}%`,children:(0,t.jsx)("div",{className:"flex h-full flex-col justify-end",children:(0,t.jsx)("div",{className:"relative w-full overflow-hidden rounded-sm transition-[height] duration-700 ease-out",style:{height:p?`${f.progress}%`:"0%",backgroundColor:v.stroke},children:(0,t.jsx)("div",{className:"absolute inset-0 animate-pulse",style:{background:"linear-gradient(0deg, transparent 0%, rgba(255,255,255,0.15) 50%, transparent 100%)"}})})})})]})}var em=e.i(681619),ex=e.i(638703),ep=e.i(276013),eb=e.i(44054),eh=e.i(434405),ef=e.i(169433),ev=e.i(982141),eg=e.i(902572);let ej={on_track:{label:"On track",chipClass:"border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed-text)]",toneClass:"text-[var(--status-completed-text)]"},at_risk:{label:"At risk",chipClass:"border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked-text)]",toneClass:"text-[var(--status-blocked-text)]"},off_track:{label:"Off track",chipClass:"border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed-text)]",toneClass:"text-[var(--status-failed-text)]"},done:{label:"Done",chipClass:"border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] text-[var(--status-in-progress-text)]",toneClass:"text-[var(--status-in-progress-text)]"}};function ey({onResize:e}){let{isTouchLayout:r}=(0,eb.useInputCapabilities)();return r?null:(0,t.jsx)(ep.ResizeHandle,{onResize:e,className:"hidden xl:block",ariaLabel:"Resize objective chat panel"})}function ek(e){return new Date(e).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function eN(){return{title:"",teamId:"",summary:""}}function ew(e){let{projects:t,isLoading:r,refetch:a,updateProject:o}=(0,y.useProjects)(),[n,i]=(0,s.useState)([]),l=(0,s.useMemo)(()=>t.find(t=>t.slug===e)??null,[e,t]),d=(0,s.useMemo)(()=>(0,eg.readProjectObjectivesWorkspace)(l?.metadata),[l?.metadata]),c=(0,s.useCallback)(async e=>{if(!l)throw Error("Project not found.");await o(l.id,{metadata:(0,eg.writeProjectObjectivesWorkspace)(l.metadata??{},e)})},[l,o]);return(0,s.useEffect)(()=>{let e=!0;return async function(){if(!l?.id)return i([]);try{let t=await fetch(`/api/projects/${l.id}/teams`);if(!t.ok)throw Error("Failed to fetch teams");let r=await t.json();if(!e)return;i((r.teams??[]).map(e=>({id:"string"==typeof e.id?e.id:"",name:"string"==typeof e.name?e.name:"Untitled team"})).filter(e=>e.id))}catch{if(!e)return;i([])}}(),()=>{e=!1}},[l?.id]),{isLoading:r,project:l,workspace:d,teams:n,persistWorkspace:c,refetchProject:a}}function eS(e){return"user"===e.role&&!e.rootMessageId}function eC({projectId:e,projectSlug:r,objective:o,teamName:l,trackerConnections:d,availableTrackers:c,defaultTrackerType:u,onThreadLinked:m,onObjectiveUpdated:x}){let[p,b]=(0,s.useState)(()=>(0,ef.loadObjectiveChatPanelWidth)()||800),[h,v]=(0,s.useState)(o.threadId??(o.id?`objective-chat:${o.id}`:null)),g=(0,a.useSearchParams)(),j=g?.get("session")??null,y=g?.get("message")??null,[A,T]=(0,s.useState)(j?"detail":"list"),[E,O]=(0,s.useState)(j),[M,R]=(0,s.useState)(y),[P,L]=(0,s.useState)(!1),[D,F]=(0,s.useState)(o.chatSessionVersion),[_,U]=(0,s.useState)([]),[z,q]=(0,s.useState)(null),J=(0,s.useRef)(!1),V=(0,s.useRef)(!1),W=(0,s.useRef)(null),H=(0,s.useRef)(null),[B,K]=(0,s.useState)(!1),G=window.location?.origin?window.location.origin:null,{messages:X,setMessages:Y,sendMessage:Q,loadHistory:Z,setChatRuns:ee,stop:et,chatRuns:er}=(0,k.useGroupChat)(h),{processes:ea,streaming:es,chatRuns:eo,poll:en}=(0,N.useProcessPolling)(h?{workspaceId:h}:null,{messages:X,setMessages:Y});(0,s.useEffect)(()=>{o.threadId&&o.threadId!==h&&v(o.threadId)},[o.threadId,h]),(0,s.useEffect)(()=>{let e=W.current;if(!e)return;let t=()=>{K(e.scrollHeight-e.scrollTop-e.clientHeight>200)};return t(),e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[A,E]);let ei=(0,s.useCallback)(()=>{H.current?.scrollIntoView({behavior:"smooth"})},[]);(0,s.useEffect)(()=>{T("list"),O(null),L(!1),V.current=!1},[o.id]),(0,s.useEffect)(()=>{F(o.chatSessionVersion),o.chatSessionVersion>=eg.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION&&(V.current=!0)},[o.chatSessionVersion]);let el=(0,s.useCallback)(async t=>{let r=t.trim();if(r&&!(await fetch(`/api/projects/${e}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:r})})).ok)throw Error("Failed to link objective chat to the project.")},[e]);(0,s.useEffect)(()=>{let e=!1;return h?(L(!1),(async()=>{await Z(h),e||L(!0)})(),()=>{e=!0}):void L(!0)},[Z,h]),(0,s.useEffect)(()=>{let t=!1;return async function(){try{let r=o.teamId?`/api/projects/${e}/teams/${o.teamId}/agents`:`/api/projects/${e}/agents`,[a,s]=await Promise.all([fetch("/api/participants"),fetch(r)]),n=a.ok?await a.json():[],i=Array.isArray(n)?n:[],l=s.ok?await s.json():{agents:[]};if(t)return;let d=((l&&"object"==typeof l?l:{agents:[]}).agents??[]).slice().sort((e,t)=>e.routing_order-t.routing_order).map(e=>e.agent_id);if(0===d.length)return void U(i);let c=new Map(i.map(e=>[e.id,e]));U(d.map(e=>c.get(e)).filter(e=>!!e))}catch(e){if(t)return;console.error("Failed to load objective chat participants",e),U([])}}(),()=>{t=!0}},[e,o.teamId]),(0,s.useEffect)(()=>{o.threadId&&el(o.threadId).catch(e=>{console.warn("Failed to re-link objective chat thread to project",e)})},[el,o.threadId]),(0,s.useEffect)(()=>{if(!o.threadId||!h||!P||D>=eg.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION||V.current)return;V.current=!0;let t=function(e){let t=e.filter(eS).sort((e,t)=>e.timestamp-t.timestamp);if(t.length<=1)return null;let r=t[0]?.id;if(!r)return null;let a=t.slice(1).map(e=>e.id),s=new Set(a);return{messages:[...e].map(e=>{let t=s.has(e.id)&&eS(e),a="string"==typeof e.rootMessageId&&s.has(e.rootMessageId);return t||a?{...e,rootMessageId:r,parentMessageId:r,depth:1}:e}).sort((e,t)=>e.timestamp-t.timestamp),primaryRootMessageId:r,mergedRootMessageIds:a}}(X),r=!1;return(async()=>{q(null);try{if(t){if(!(await fetch("/api/history",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:h,messages:t.messages})})).ok)throw Error("Failed to migrate the objective chat history.");if(r)return;Y(t.messages),O(e=>e&&t.mergedRootMessageIds.includes(e)?t.primaryRootMessageId:e)}if(!(await fetch(`/api/projects/${e}/objectives/${o.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatSessionVersion:eg.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION})})).ok)throw Error("Failed to update the objective chat session version.");if(r)return;F(eg.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION),x().catch(e=>{console.warn("Failed to refresh objective after objective chat migration",e)})}catch(e){if(r)return;console.warn("Failed to migrate legacy objective chat sessions",e),q(e instanceof Error?e.message:"Failed to migrate the objective chat history.")}})(),()=>{r=!0}},[D,P,X,o.id,o.threadId,x,e,Y,h]);let ed=(0,s.useCallback)(async()=>{if(o.threadId)return o.threadId;let t=h??(o.id?`objective-chat:${o.id}`:null);if(!t)return null;q(null);try{let a=await eh.threadService.createThread({id:t,title:o.title,metadata:{scope:"objective",objectiveId:o.id,projectId:e,projectSlug:r}});return v(a.id),await el(a.id),await m(a.id),a.id}catch(e){return q(e instanceof Error?e.message:"Failed to create the objective chat."),null}},[el,o.id,o.threadId,o.title,m,e,r,h]),ec=(0,s.useMemo)(()=>new Map(_.map(e=>[e.id,e])),[_]);(0,s.useEffect)(()=>{ee(e=>{let t=Date.now(),r=new Map(e.filter(e=>"string"==typeof e.chatRunId&&e.chatRunId.length>0).map(e=>[e.chatRunId,e]));for(let e of eo)e?.chatRunId&&r.set(e.chatRunId,e);return Array.from(r.values()).filter(e=>!!(!e.optimistic||eo.some(t=>t.chatRunId===e.chatRunId))||t-(e.enqueuedAt??0)<=5e3).sort((e,t)=>String(e.chatRunId||"").localeCompare(String(t.chatRunId||"")))})},[eo,ee]);let eu=(0,s.useMemo)(()=>{let e=Date.now(),t=new Map(eo.map(e=>[e.chatRunId,e]));for(let r of er)!(!r.optimistic||t.has(r.chatRunId))&&(e-(r.enqueuedAt??0)>5e3||t.set(r.chatRunId,r));return Array.from(t.values()).filter(e=>"queued"===e.status||"running"===e.status||"awaiting_user"===e.status||"blocked"===e.status)},[er,eo]),em=(0,s.useMemo)(()=>X.filter(eS).sort((e,t)=>t.timestamp-e.timestamp).map(e=>{let t,r=X.filter(t=>t.rootMessageId===e.id).sort((e,t)=>e.timestamp-t.timestamp),a=[e,...r],s=a[a.length-1]??e;return{rootMessageId:e.id,title:(t=e.content.replace(/\s+/g," ").trim())?t.length>56?`${t.slice(0,56).trim()}...`:t:"Untitled session",updatedAt:s.timestamp,messageCount:a.length,messages:a}}),[X]),ep=(0,s.useMemo)(()=>E?em.find(e=>e.rootMessageId===E)??null:null,[E,em]),eb="detail"===A&&!!E,ej=new Set(["queued","running","awaiting_user","blocked"]),eN=eu.length>0||ea.some(e=>"spawning"===e.state||"running"===e.state),ew=(0,s.useMemo)(()=>{let e=new Map;for(let t of eu){if(!t.rootMessageId||!ej.has(t.status))continue;let r="queued"===t.status?"queued":"working";"working"!==e.get(t.rootMessageId)&&e.set(t.rootMessageId,r)}for(let t of ea)t.threadId&&("spawning"===t.state||"running"===t.state)&&e.set(t.threadId,"working");return e},[eu,ea]),eC=(0,s.useMemo)(()=>ea.some(e=>"spawning"===e.state||"running"===e.state)||eu.some(e=>ej.has(e.status)&&"queued"!==e.status)?"working":eu.some(e=>"queued"===e.status)?"queued":"ready",[eu,ej,ea]);(0,s.useEffect)(()=>{J.current&&!eN&&x().catch(e=>{console.warn("Failed to refresh objective after objective chat activity",e)}),J.current=eN},[eN,x]),(0,s.useEffect)(()=>{E&&(0,ev.persistLastSessionForEntity)(o.id,E)},[o.id,E]),(0,s.useEffect)(()=>{j&&(O(j),T("detail"))},[j]),(0,s.useEffect)(()=>{y&&R(y)},[y]),(0,s.useEffect)(()=>{if(!M)return;let e=requestAnimationFrame(()=>{let e=document.querySelector(`[data-objective-message-id="${CSS.escape(M)}"]`);e&&e.scrollIntoView({behavior:"smooth",block:"center"})});return()=>cancelAnimationFrame(e)},[M,P,E]),(0,s.useEffect)(()=>{if(E||0===em.length)return;let e=(0,ev.loadLastSessionForEntity)(o.id);e&&em.some(t=>t.rootMessageId===e)&&O(e)},[o.id,E,em,O]);let e$=(0,s.useCallback)(async e=>{await fetch(`/api/chat-runs/${encodeURIComponent(e)}/signal`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({signal:"cancel",reason:"Interrupted by a new objective chat message"})}).catch(e=>{console.warn("Failed to cancel objective chat run",e)})},[]),eA=(0,s.useCallback)(async()=>{let e=Array.from(new Set(eu.map(e=>e.chatRunId).filter(e=>!!e)));await Promise.all(e.map(e=>e$(e))),await et(),await en()},[eu,e$,en,et]),eT=(0,s.useCallback)(async(t,a,s,n,i,m,x)=>{var p;let b,h,f,v,g,j,y,k,N;eN&&await eA(),q(null);let w=await ed();if(!w)return;let S=_.map(e=>e.id),C=eb?E:null,$=[(p={available:c,configured:d.filter(e=>e.connected).map(e=>({type:e.type,displayName:e.displayName})),defaultType:u},b=`/api/projects/${e}/objectives/${o.id}`,h=G?`${G}${b}`:b,f=`${h}/scheduled-tasks`,v=`${h}/notes`,g=G?`${G}/api/trackers`:"/api/trackers",j=`~/.agx/projects/${r}/objectives/${o.key}.md`,y=`~/.agx/projects/${r}/objectives/${o.key}/notes/`,k=`${h}/validate`,N=o.notes?.length?o.notes.map(e=>`- **${e.title}**: ${e.body.slice(0,120)}${e.body.length>120?"...":""}`).join("\n"):null,["You are working inside a strategy session for this project objective.",`Project slug: ${r}`,`Objective: ${o.title}`,`Objective label: ${o.key}`,l?`Owning team: ${l}`:"",N?`Current notes:
2
- ${N}`:"Current notes: none yet.","Wake schedule: managed by the built-in objective worker job.",`## Objective file (source of truth)
3
-
4
- This objective is stored as a frontmatter markdown file at:
5
- \`${j}\`
6
-
7
- File format:
8
- - YAML frontmatter between \`---\` delimiters contains all metadata (title, teamId, key, status, progress, scheduledTaskIds, threadId, chatSessionVersion, createdAt, updatedAt).
9
- - \`## Activities\` section contains the activity timeline; each activity is a \`### Title\` block with metadata lines (\`- **id:**\`, \`- **source:**\`, \`- **created:**\`, \`- **body:**\`) and optional \`#### Replies\` sub-section.
10
-
11
- Notes are stored as separate files in \`${y}\`. Each note is a markdown file with YAML frontmatter (id, title, objectiveId, createdAt, updatedAt) and a markdown body.
12
-
13
- When updating the objective, you can edit this file directly. Rules:
14
- - NEVER remove or break the \`---\` frontmatter delimiters.
15
- - NEVER change the \`id\` or \`createdAt\` fields.
16
- - Always update \`updatedAt\` to the current ISO timestamp when making changes.
17
- - After any edit, call \`GET ${k}\` to verify the file is still valid.
18
- - If validation fails, fix the errors immediately before doing anything else.`,"Scheduled tasks live in the shared scheduled-task list and are filtered by this objective label.","Your job is to help the team develop the strategy needed to reach the goal, including the right combination of objective notes, scheduled tasks, and tracker tickets.","Use the current session history to build on prior reasoning. Only reset and start from scratch when the user explicitly starts a new session.","Use this thread to pressure-test strategy, suggest better tactics, rewrite the objective when asked, propose the right operational cadence, and take concrete follow-up actions when the user wants them applied.","When suggesting edits, prefer editing the frontmatter file directly or using the notes API. When the user asks you to make a change, edit the file, validate, then confirm.","Local objective APIs:",`- PATCH ${h} with JSON fields such as {"title","teamId","key"} to update the objective itself.`,`- GET ${v} to list all notes for this objective. Returns {"notes":[...],"total","page","limit","hasMore"}.`,`- POST ${v} with {"title","body"} to create a new note.`,`- GET ${v}/{noteId} to read a single note.`,`- PATCH ${v}/{noteId} with {"title","body"} to update a note.`,`- DELETE ${v}/{noteId} to delete a note.`,`- GET ${f} to inspect the scheduled tasks already tracked for this objective.`,`- POST ${f} with {"name","prompt","cadence","agentId"} to create a scheduled task for this objective.`,`- GET ${k} to validate the objective file on disk. Returns {"valid":true} or {"valid":false,"errors":[...]}.`,"Tracker integrations:",`- Available tracker types: ${p.available.length>0?p.available.map(e=>`${e.displayName} (${e.type})`).join(", "):"none registered"}.`,`- Configured for this project: ${p.configured.length>0?p.configured.map(e=>{let t=p.defaultType===e.type;return`${e.displayName} (${e.type})${t?" — default":""}`}).join(", "):"none — ask the user to connect a tracker in project settings if they want ticket workflows"}.`,p.defaultType?`- Default tracker for ticket workflows: ${p.defaultType}. Prefer this tracker when creating or referencing tickets for this objective unless the user asks otherwise.`:p.configured.length>1?"- No default tracker has been selected; ask the user which connected tracker to use before creating tickets.":"",...p.configured.map(t=>`- GET ${g}/${t.type}/items?projectId=${e} to list ${t.displayName} items. Filter client-side by label "${o.key}" to find tickets tied to this objective.`)].filter(Boolean).join("\n\n")),m].filter(Boolean).join("\n\n"),I=await Q(t,a,w,C,s,n,i?[i]:S,r,$,x);!C&&I&&(O(I),T("detail"))},[G,ed,eN,eA,eb,o,_,e,r,E,Q,l]),eE=(0,s.useMemo)(()=>eb?ep?.messages??[]:[],[eb,ep]),eO=(0,s.useMemo)(()=>eb&&E?Object.entries(es).filter(([,e])=>e.rootMessageId===E):[],[eb,E,es]),eM=(0,s.useCallback)(e=>{b(t=>{let r=Math.max(320,Math.min(1200,t-e));return(0,ef.persistObjectiveChatPanelWidth)(r),r})},[]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(ey,{onResize:eM}),(0,t.jsxs)("aside",{className:"relative flex h-full min-h-[420px] w-full flex-col overflow-hidden border-t border-[var(--border)] bg-[var(--overlay-panel)] xl:min-h-0 xl:w-[var(--objective-chat-panel-width)] xl:shrink-0 xl:self-stretch xl:border-l xl:border-t-0",style:{"--objective-chat-panel-width":`${p}px`},children:[(0,t.jsx)(eI,{message:z}),eb?(0,t.jsx)("div",{className:"border-b border-[var(--border)] px-4 py-4",children:(0,t.jsxs)("button",{type:"button",onClick:()=>T("list"),"aria-label":"Back to sessions",className:"inline-flex min-w-0 items-center gap-2 text-left text-sm font-medium text-[var(--foreground)] transition-colors hover:text-[var(--primary)]",children:[(0,t.jsx)(n.ArrowLeft,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"truncate",children:ep?.title??"Loading session..."})]})}):(0,t.jsx)("div",{className:"border-b border-[var(--border)] px-4 py-4",children:(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Strategy Sessions"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"Start a new strategy conversation below, or open an earlier session to keep building on it."})]})}),(0,t.jsx)("div",{ref:W,className:`min-h-0 flex-1 overflow-y-auto pb-[calc(15rem+env(safe-area-inset-bottom))] ${eb?"px-4 py-4":"px-0 py-0"}`,children:eb?0===eE.length?(0,t.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 px-4 text-center text-[var(--muted-foreground)]",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"Loading strategy session"}),(0,t.jsx)("p",{className:"max-w-sm text-xs",children:"The conversation will appear here once the session history is ready."})]}):(0,t.jsxs)("div",{className:"space-y-5",children:[eE.map(e=>{let r=e.participantId?ec.get(e.participantId):null,a=M===e.id;return(0,t.jsxs)("div",{"data-objective-message-id":e.id,className:`flex gap-3 rounded-2xl transition-colors ${a?"bg-[var(--status-in-progress-bg)] p-2 -m-2":""}`,children:["user"===e.role?(0,t.jsx)("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--overlay-panel-soft)] text-[var(--muted-foreground)]",children:(0,t.jsx)(f.User,{className:"h-4 w-4"})}):(0,t.jsx)("img",{src:(0,$.agentAvatarUrl)(e.participantId??"assistant",32,r?.color),alt:r?.name??"Agent",className:"h-8 w-8 shrink-0 rounded-full border border-[var(--border)] object-cover"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"user"===e.role?"You":r?.name??"Agent"}),(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:new Date(e.timestamp).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})})]}),(0,t.jsx)("div",{className:"mt-2 rounded-2xl border border-[var(--border)] bg-[var(--overlay-panel-muted)] px-4 py-3 text-[15px] leading-relaxed text-[var(--foreground)]",children:"user"===e.role?(0,t.jsx)(S.Markdown,{content:(0,I.stripMarkers)(e.content),isUser:!0}):(0,t.jsx)(C.StreamingSegments,{content:(0,I.stripMarkers)(e.content)})})]})]},e.id)}),eO.map(([e])=>{let r=ec.get(e);return(0,t.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)("img",{src:(0,$.agentAvatarUrl)(e,32,r?.color),alt:r?.name??"Agent",className:"h-8 w-8 shrink-0 rounded-full border border-[var(--border)] object-cover"}),(0,t.jsxs)("span",{children:[r?.name??"Agent"," is thinking..."]})]},`stream-${e}`)}),(0,t.jsx)("div",{ref:H})]}):0===em.length?(0,t.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 px-4 text-center text-[var(--muted-foreground)]",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"No strategy sessions yet"}),(0,t.jsx)("p",{className:"max-w-sm text-xs",children:"Use the composer below to start the first conversation about how this objective should be reached."})]}):(0,t.jsx)("div",{className:"divide-y divide-[var(--border)]",children:em.map(e=>{var r;let a=ew.get(e.rootMessageId)??null;return(0,t.jsxs)("button",{type:"button",onClick:()=>{O(e.rootMessageId),T("detail")},className:"flex w-full items-start justify-between gap-3 px-4 py-3 text-left transition-colors hover:bg-[var(--overlay-panel-soft)]",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:e.title}),(0,t.jsxs)("p",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:[1===(r=e.messageCount)?"1 message":`${r} messages`," · Last"," ",ek(e.updatedAt)]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[a?(0,t.jsx)("span",{className:"rounded-full border border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-[var(--status-in-progress-text)]",children:"queued"===a?"Queued":"Working"}):null,(0,t.jsx)(i.ArrowRight,{className:"mt-0.5 h-4 w-4 text-[var(--muted-foreground)]"})]})]},e.rootMessageId)})})}),(0,t.jsx)(ex.JumpToLatestButton,{visible:eb&&B&&eE.length>10,onClick:ei,direction:"bottom",offsetClassName:"bottom-[calc(15rem+env(safe-area-inset-bottom))]"}),(0,t.jsx)("div",{className:"absolute bottom-0 left-0 right-0 bg-[var(--overlay-panel)] p-3 pb-[calc(0.75rem+env(safe-area-inset-bottom))]",children:(0,t.jsx)(w.Composer,{onSend:eT,onStop:eA,participants:_,commands:[],projectId:e,projectSlug:r,loading:"ready"!==eC,activityStatus:eC,sendInterruptsBusy:!0,placeholder:eb?`Continue strategy for "${o.title}"...`:`Start a new strategy session for "${o.title}"...`,initialPinnedParticipantId:_[0]?.id})})]})]})}function e$({label:e}){return(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:e})}function eI({message:e}){return e?(0,t.jsxs)("div",{className:"mt-3 flex items-center gap-2 rounded-2xl border border-rose-500/20 bg-rose-500/10 px-3 py-2 text-sm text-rose-100",children:[(0,t.jsx)(o.AlertTriangle,{className:"h-4 w-4"}),(0,t.jsx)("span",{children:e})]}):null}function eA({content:e,editable:r=!1,onChange:a,placeholder:s}){let o=e.trim().length>0;return r||o?(0,t.jsx)("div",{className:"overflow-hidden border-l-2 border-[var(--border)]/60 pl-4 transition-all focus-within:border-indigo-500/60",children:r||o?(0,t.jsx)(A.default,{content:e,editable:r,onChange:a,placeholder:s}):null}):null}function eT({onResize:e}){let{isTouchLayout:r}=(0,eb.useInputCapabilities)();return r?null:(0,t.jsx)(ep.ResizeHandle,{onResize:e,ariaLabel:"Resize objective list panel"})}function eE({objective:e,activityCount:r,lastActivityAt:a,activeAgentIds:s,participants:o,isSelected:n,onSelect:i}){let l,d=(l=1===r?"1 activity":`${r} activities`,a?`${l} \xb7 Last ${ek(a)}`:`${l} \xb7 No activity yet`);return(0,t.jsx)("article",{className:"px-2",children:(0,t.jsxs)("button",{type:"button",onClick:i,"aria-label":`Open details for ${e.title}`,className:`group flex w-full items-center gap-3 rounded-xl px-2 py-2 text-left transition-colors ${n?"bg-[var(--primary)]/10 border border-[var(--primary)]/20":"border border-transparent hover:bg-[var(--secondary)]"}`,children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1 py-0.5",children:[(0,t.jsx)("div",{className:"flex min-w-0 items-center gap-2",children:(0,t.jsx)("span",{className:`rounded-full border px-1.5 py-0 text-[9px] font-semibold uppercase tracking-[0.12em] ${ej[e.status].chipClass}`,children:ej[e.status].label})}),(0,t.jsx)("p",{className:"mt-1 truncate text-sm font-medium text-[var(--foreground)]",children:e.title}),(0,t.jsx)("p",{className:"mt-0.5 text-[11px] text-[var(--muted-foreground)]",children:d})]}),s&&s.length>0&&(0,t.jsx)("span",{className:"inline-flex items-center -space-x-1 shrink-0",children:s.slice(0,3).map(e=>{let r=o?.find(t=>t.id===e);return(0,t.jsxs)("span",{className:"relative inline-block",title:r?.name??e,children:[(0,t.jsx)("img",{src:(0,$.agentAvatarUrl)(e,16,r?.color??void 0),alt:r?.name??e,className:"h-3 w-3 rounded-full ring-[1.5px] ring-[var(--background)]"}),(0,t.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--background)]"})]},e)})})]})})}function eO({projectSlug:e,initialObjectiveId:r}){let{isLoading:a,project:o,workspace:n,teams:i,persistWorkspace:l}=ew(e),d=n.objectives,[c,u]=(0,s.useState)(r??null),[m,x]=(0,s.useState)(()=>(0,ef.loadObjectiveListPanelWidth)()||320),[b,h]=(0,s.useState)(null),[f,v]=(0,s.useState)(!1),[g,j]=(0,s.useState)(null),[y,k]=(0,s.useState)(new Map),[N,w]=(0,s.useState)([]);(0,s.useEffect)(()=>{!c&&d.length>0&&u(d[0].id)},[c,d]),(0,s.useEffect)(()=>{c&&d.length>0&&!d.some(e=>e.id===c)&&u(d[0]?.id??null)},[c,d]),(0,s.useEffect)(()=>{let e=!1;return async function(){try{let t=await fetch("/api/participants");t.ok&&!e&&w(await t.json())}catch{}}(),()=>{e=!0}},[]),(0,s.useEffect)(()=>{let e=new Map;for(let t of d)t.threadId&&e.set(t.threadId,t.id);if(0===e.size)return;let t=!1;async function r(){try{let r=Array.from(e.keys()).join(","),a=await fetch(`/api/chat-runs/active-agents?threadIds=${encodeURIComponent(r)}`);if(!a.ok||t)return;let s=await a.json(),o=new Map;for(let[t,r]of Object.entries(s.activeAgents??{})){let a=e.get(t);a&&Array.isArray(r)&&r.length>0&&o.set(a,r)}t||k(o)}catch{}}r();let a=setInterval(()=>void r(),5e3);return()=>{t=!0,clearInterval(a)}},[d]);let S=async()=>{if(!b)return;let e=b.title.trim();if(!e)return void j("Objective statement is required.");let t=b.teamId.trim();if(!t)return void j("Team is required.");let r=new Date().toISOString(),a=(0,eg.createProjectObjective)({title:e,teamId:t,key:(0,eg.generateProjectObjectiveKey)(e,n.objectives),summary:b.summary,now:r});v(!0),j(null);try{await l((0,eg.upsertProjectObjective)(n,a));try{await fetch(`/api/projects/${o?.id}/objectives/${a.id}/worker`,{method:"POST",headers:{"Content-Type":"application/json"}})}catch{}h(null),u(a.id)}catch(e){j(e instanceof Error?e.message:"Failed to save objective updates.")}finally{v(!1)}},C=(0,s.useCallback)(e=>{x(t=>{let r=Math.max(240,Math.min(480,t+e));return(0,ef.persistObjectiveListPanelWidth)(r),r})},[]);return a&&!o?(0,t.jsx)(e$,{label:"Loading objectives..."}):o?(0,t.jsxs)("div",{className:"flex h-full min-h-0 overflow-hidden bg-[var(--background)] text-[var(--foreground)]",children:[(0,t.jsxs)("div",{className:"flex flex-shrink-0 flex-col border-r border-[var(--border)] bg-[var(--background)]",style:{width:m},children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Objectives"}),(0,t.jsx)("p",{className:"mt-0.5 text-[11px] text-[var(--muted-foreground)]",children:0===d.length?"None yet":`${d.length} total`})]}),(0,t.jsx)("button",{type:"button",onClick:()=>h(eN()),className:"inline-flex h-7 w-7 items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]","aria-label":"New objective",children:(0,t.jsx)(p.Plus,{className:"h-4 w-4"})})]}),(0,t.jsx)(eI,{message:g}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto py-1",children:0===d.length?(0,t.jsxs)("div",{className:"px-4 py-8 text-center",children:[(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No objectives yet."}),(0,t.jsx)("button",{type:"button",onClick:()=>h(eN()),className:"mt-2 text-sm text-[var(--primary)] hover:underline",children:"Create one"})]}):(0,t.jsx)("div",{className:"space-y-0.5",children:d.map(e=>{let r=(0,eg.buildObjectiveTimelineActivities)({objective:e,workspace:n});return(0,t.jsx)(eE,{objective:e,activityCount:r.length,lastActivityAt:r[0]?.createdAt??null,activeAgentIds:y.get(e.id),participants:N,isSelected:c===e.id,onSelect:()=>u(e.id)},e.id)})})})]}),(0,t.jsx)(eT,{onResize:C}),(0,t.jsx)("div",{className:"flex-1 min-w-0 min-h-0 overflow-hidden",children:c?(0,t.jsx)(eM,{projectSlug:e,objectiveId:c,onObjectiveDeleted:()=>u(null)}):(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:0===d.length?"Create an objective to get started.":"Select an objective from the list."})}),b?(0,t.jsx)(eP,{mode:"create",draft:b,teams:i,isSaving:f,onChange:h,onClose:()=>h(null),onSave:()=>void S()}):null]}):(0,t.jsx)(e$,{label:"Project not found."})}function eM({projectSlug:e,objectiveId:o,onObjectiveDeleted:n}){var i;let l,f,y,k,N,w,C,$,I,A=(0,a.useRouter)(),{isLoading:E,project:O,workspace:M,teams:P,persistWorkspace:L,refetchProject:D}=ew(e),F=(0,s.useMemo)(()=>M.objectives.find(e=>e.id===o)??null,[o,M.objectives]),_=F?(i=F.teamId,P.find(e=>e.id===i)?.name??null):null,[U,z]=(0,s.useState)(null),[q,J]=(0,s.useState)(null),[V,W]=(0,s.useState)("activity"),[H,K]=(0,s.useState)(0),[G,X]=(0,s.useState)(!1),[Y,Q]=(0,s.useState)(null),[Z,ee]=(0,s.useState)([]),[er,ea]=(0,s.useState)(!1),[es,eo]=(0,s.useState)(null),[en,ei]=(0,s.useState)({}),[el,ed]=(0,s.useState)({}),[ec,ep]=(0,s.useState)(new Set),[eb,eh]=(0,s.useState)(!1),[ef,ev]=(0,s.useState)(""),[ey,eN]=(0,s.useState)([]),[eS,eT]=(0,s.useState)([]),[eE,eO]=(0,s.useState)([]),[eM,eP]=(0,s.useState)(null),[eL,eD]=(0,s.useState)(!1),eF=(0,s.useRef)(null),[e_,eU]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let e=eF.current;if(!e)return;let t=()=>eU(e.scrollTop>400);return e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[o]);let ez=(0,s.useCallback)(()=>{eF.current?.scrollTo({top:0,behavior:"smooth"})},[]),{jobs:eq}=(0,R.usePromptJobs)(O?.id??null,{requireProjectId:!0,includeObjectiveJobs:!0,objectiveId:o}),eJ=(0,s.useMemo)(()=>eq.filter(e=>e.objectiveId===o).length,[eq,o]),eV=async e=>{X(!0),Q(null);try{await L(e)}catch(e){throw Q(e instanceof Error?e.message:"Failed to save objective updates."),e}finally{X(!1)}},eW=async()=>{if(!U||!F)return;let e=U.title.trim();if(!e)return void Q("Objective statement is required.");let t={...F,title:e,updatedAt:new Date().toISOString()};await eV((0,eg.upsertProjectObjective)(M,t)),z(null)},eH=(0,s.useCallback)(async()=>{if(O?.id&&F?.id){ea(!0);try{let e=await fetch(`/api/projects/${O.id}/objectives/${F.id}/notes?limit=100`);if(e.ok){let t=await e.json();ee(t.notes??[])}}catch{}finally{ea(!1)}}},[O?.id,F?.id]);(0,s.useEffect)(()=>{eH()},[eH]),(0,s.useEffect)(()=>{"notes"===V&&eH()},[V,eH]),(0,s.useEffect)(()=>{if(!O?.id||!F?.id)return;let e=new Set;for(let[t,r]of Object.entries(en)){let a=Z.find(e=>e.id===t);a&&a.body!==r&&e.add(t)}for(let[t,r]of Object.entries(el)){let a=Z.find(e=>e.id===t);a&&a.title!==r&&e.add(t)}if(0===e.size)return;let t=[];for(let r of e){let e={},a=en[r],s=el[r],o=Z.find(e=>e.id===r);if(!o||(void 0!==a&&a!==o.body&&(e.body=a),void 0!==s&&s!==o.title&&s.trim()&&(e.title=s.trim()),0===Object.keys(e).length))continue;let n=window.setTimeout(async()=>{ep(e=>new Set(e).add(r));try{let t=await fetch(`/api/projects/${O.id}/objectives/${F.id}/notes/${r}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(t.ok){let e=await t.json();ee(t=>t.map(t=>t.id===r?e.note:t))}}catch{Q("Failed to save note.")}finally{ep(e=>{let t=new Set(e);return t.delete(r),t})}},700);t.push(n)}return()=>{for(let e of t)window.clearTimeout(e)}},[en,el,Z,O?.id,F?.id]);let eB=async()=>{if(O?.id&&F?.id){eh(!0);try{let e=await fetch(`/api/projects/${O.id}/objectives/${F.id}/notes`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:"Untitled",body:""})});if(e.ok){let t=await e.json();ee(e=>[t.note,...e]),eo(t.note.id)}}catch{Q("Failed to create note.")}finally{eh(!1)}}},eK=async e=>{if(O?.id&&F?.id)try{let t=await fetch(`/api/projects/${O.id}/objectives/${F.id}/notes/${e}`,{method:"DELETE"});(t.ok||204===t.status)&&(ee(t=>t.filter(t=>t.id!==e)),es===e&&eo(null))}catch{Q("Failed to delete note.")}},eG=async()=>{!F||window.confirm(`Delete "${F.title}"?`)&&(await eV((0,eg.removeProjectObjective)(M,F.id)),n?n():A.push(`/projects/${e}`))},eX=(0,s.useCallback)(async e=>{F&&F.threadId!==e&&await eV((0,eg.upsertProjectObjective)(M,{...F,threadId:e,updatedAt:new Date().toISOString()}))},[F,eV,M]),eY=(0,s.useCallback)(async e=>{if(!O?.id||!F?.id)return Q("Objective not found."),!1;Q(null);try{let t=await fetch(`/api/projects/${O.id}/objectives/${F.id}/scheduled-tasks`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,prompt:function(e,t){let r=t.trim();if(!r)return r;let a=`Objective label: ${e.key}`;return r.toLowerCase().includes(a.toLowerCase())?r:[a,`Write your output as an activity file at ~/.agx/projects/<project>/objectives/${e.key}/activities/<timestamp>-<slug>.md
19
- The file must have YAML frontmatter with: id (unique), source (your task ID), objectiveLabel: "${e.key}", createdAt (ISO), type (one of: metric-check, status-update, milestone, note).
20
- The markdown body below the frontmatter contains your output.`,r].join("\n\n")}(F,e.prompt)})}),r=await t.json().catch(()=>({}));if(!t.ok)throw Error(r.error||"Failed to create scheduled task.");return await D(),!0}catch(e){return Q(e instanceof Error?e.message:"Failed to create scheduled task."),!1}},[F,O?.id,D]),eQ=(0,s.useCallback)(async()=>{if(!O?.id||!F?.id)return Q("Objective not found."),!1;if(!F.teamId)return Q("Assign a team to this objective before creating a worker."),!1;Q(null);try{let e=await fetch(`/api/projects/${O.id}/objectives/${F.id}/worker`,{method:"PUT"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Failed to trigger objective worker.");return await D(),!0}catch(e){return Q(e instanceof Error?e.message:"Failed to trigger objective worker."),!1}},[F,O?.id,D]);return((0,s.useEffect)(()=>{if(!O?.id||!F?.id||!F?.key){eN([]),eT([]),eO([]);return}let e=O.id,t=F.key,r=!1;return async function(){try{let a=await fetch(`/api/trackers/connections?projectId=${encodeURIComponent(e)}`);if(!a.ok){r||(eN([]),eT([]),eO([]));return}let s=await a.json();if(r)return;let o=Array.isArray(s.available)?s.available:[],n=(s.connections??[]).map(e=>({type:e.type,displayName:o.find(t=>t.type===e.type)?.displayName??e.type,connected:!1!==e.connected})),i="string"==typeof s.defaultTracker&&s.defaultTracker?s.defaultTracker:null;eO(o),eT(n),eP(i);let l=n.filter(e=>e.connected),d=i&&l.some(e=>e.type===i)?l.filter(e=>e.type===i):l;if(0===d.length)return void eN([]);let c=t.trim().toLowerCase(),u=await Promise.all(d.map(async t=>{try{let r=await fetch(`/api/trackers/${encodeURIComponent(t.type)}/items?projectId=${encodeURIComponent(e)}&limit=500`);if(!r.ok)return[];let a=await r.json();return(Array.isArray(a.items)?a.items:[]).filter(e=>(e.labels??[]).some(e=>e.trim().toLowerCase()===c)).map(e=>({id:e.id,trackerType:e.trackerType??t.type,identifier:e.identifier,title:e.title,url:e.url??null,status:e.status,assignee:e.assignee?.name??null,updatedAt:e.updatedAt,labels:e.labels}))}catch{return[]}}));if(r)return;eN(u.flat())}catch(e){if(r)return;console.warn("Failed to load objective tracker resources",e),eN([]),eT([]),eO([])}}(),()=>{r=!0}},[F?.id,F?.key,O?.id]),E&&!O)?(0,t.jsx)(e$,{label:"Loading objective..."}):O?F?(0,t.jsx)("div",{className:"flex h-full min-h-0 flex-col bg-[radial-gradient(circle_at_top_left,rgba(59,130,246,0.1),transparent_28%),var(--background)] text-[var(--foreground)]",children:(0,t.jsx)("div",{className:"flex-1 min-h-0 overflow-hidden",children:(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-col xl:flex-row",children:[(0,t.jsxs)("div",{className:"relative min-h-0 flex-1 flex flex-col",children:[(0,t.jsx)("div",{ref:eF,className:"min-h-0 flex-1 overflow-y-auto",children:(0,t.jsxs)("div",{className:"max-w-5xl mx-auto pt-16 px-8 pb-20",children:[(0,t.jsx)(eI,{message:Y}),(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,t.jsx)("span",{className:"rounded-full border border-[var(--tone-neutral-border)] bg-[var(--tone-neutral-bg)] px-2.5 py-0.5 text-[10px] font-mono uppercase tracking-wider text-[var(--tone-neutral)]",children:F.key}),(0,t.jsx)("span",{className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.18em] ${ej[F.status].chipClass}`,children:ej[F.status].label})]}),(0,t.jsx)("div",{className:"mb-6",children:U?(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("input",{autoFocus:!0,value:U.title,onChange:e=>z({...U,title:e.target.value}),onKeyDown:e=>{"Enter"===e.key&&eW(),"Escape"===e.key&&z(null)},className:"flex-1 border-b-2 border-[var(--primary)] bg-transparent px-0 py-1 text-[28px] font-semibold leading-tight text-[var(--foreground)] outline-none",placeholder:"Objective statement"}),(0,t.jsx)("button",{type:"button",onClick:()=>void eW(),disabled:G,className:"rounded-md p-1.5 text-[var(--primary)] transition-colors hover:bg-[var(--status-in-progress-bg)]","aria-label":"Save objective",children:(0,t.jsx)(c.Check,{size:18})}),(0,t.jsx)("button",{type:"button",onClick:()=>z(null),className:"rounded-md p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]","aria-label":"Cancel editing",children:(0,t.jsx)(j.X,{size:18})})]}):(0,t.jsxs)("button",{type:"button","aria-label":`Edit objective ${F.title}`,className:"flex items-center gap-3 group cursor-pointer text-left",onClick:()=>z({id:F.id,title:F.title,teamId:F.teamId,summary:F.summary}),children:[(0,t.jsx)("h1",{className:"text-[28px] leading-tight font-semibold text-[var(--foreground)]",children:F.title}),(0,t.jsx)(x.Pencil,{size:16,className:"shrink-0 text-[var(--muted-foreground)] opacity-0 transition-opacity group-hover:opacity-100"})]})}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-6 gap-y-3 mb-10",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:[(0,t.jsx)(v.Users,{size:12})," Team"]}),(0,t.jsx)("span",{className:"text-[var(--app-shell-soft-text)]",children:"·"}),q?(0,t.jsx)("div",{className:"min-w-[180px]",children:(0,t.jsx)(T.default,{options:P.map(e=>({id:e.id,label:e.name})),value:q.teamId,onChange:e=>{J({teamId:e});let t=e.trim();t&&F&&(eV((0,eg.upsertProjectObjective)(M,{...F,teamId:t,updatedAt:new Date().toISOString()})),J(null))},placeholder:"Select a team…"})}):(0,t.jsxs)("button",{type:"button","aria-label":`Edit team for ${F.title}`,onClick:()=>J({teamId:F.teamId}),className:"group -mx-1.5 -my-0.5 flex items-center gap-2 rounded px-1.5 py-0.5 transition-colors hover:bg-[var(--muted)]",children:[(0,t.jsx)("div",{className:"w-5 h-5 rounded-full bg-blue-500/20 text-blue-400 flex items-center justify-center text-[10px] font-bold border border-blue-500/30",children:(_??"?").charAt(0).toUpperCase()}),(0,t.jsx)("span",{className:"text-sm text-[var(--foreground)] transition-colors group-hover:text-[var(--primary)]",children:_??"Not assigned"})]})]}),O.id&&F.id?(0,t.jsx)(eu,{projectId:O.id,objectiveId:F.id,objectiveKey:F.key,metadata:O.metadata,currentProgress:F.progress,currentStatus:F.status,objectiveUpdatedAt:F.updatedAt}):null]}),(0,t.jsx)("div",{className:"mb-6",children:(0,t.jsxs)("button",{type:"button",onClick:async()=>{eD(!0),await eQ(),eD(!1)},disabled:eL,className:"inline-flex items-center gap-2 rounded-xl border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-3 py-2 text-sm text-[var(--status-completed-text)] transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50",children:[(0,t.jsx)(g.Sparkles,{className:"h-4 w-4"}),eL?"Working...":"Work on objective"]})}),(0,t.jsx)("div",{className:"mb-8 border-b border-[var(--border)]",children:(0,t.jsx)("nav",{className:"flex gap-1 -mb-px","aria-label":"Objective sections",children:[{id:"activity",label:"Activity",icon:u.Clock},{id:"notes",label:"Notes",icon:m.FileText},{id:"tasks",label:"Tasks",icon:e=>{let r=eS.filter(e=>e.connected),a=(eM&&r.some(e=>e.type===eM)?eM:r[0]?.type)??"tracker";return(0,t.jsx)(em.TrackerIcon,{trackerType:a,className:"h-3.5 w-3.5"})}},{id:"scheduled-tasks",label:"Scheduled Jobs",icon:d}].map(e=>{let r,a;return(0,t.jsxs)("button",{type:"button",onClick:()=>W(e.id),className:`flex items-center gap-2 px-3 py-2.5 text-sm font-medium border-b-2 transition-colors ${V===e.id?"border-[var(--primary)] text-[var(--foreground)]":"border-transparent text-[var(--muted-foreground)] hover:border-[var(--border)] hover:text-[var(--foreground)]"}`,children:[(0,t.jsx)(e.icon,{size:14}),e.label,"activity"===e.id&&H>0&&(0,t.jsx)("span",{className:"rounded-full bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[10px] text-[var(--tone-neutral)]",children:H}),"notes"===e.id&&Z.length>0&&(0,t.jsx)("span",{className:"rounded-full bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[10px] text-[var(--tone-neutral)]",children:Z.length}),"tasks"===e.id&&(r=["done","canceled","cancelled","completed","duplicate"],(a=ey.filter((e,t,a)=>a.findIndex(t=>t.id===e.id)===t&&!r.includes(e.status.toLowerCase()))).length>0?(0,t.jsx)("span",{className:"rounded-full bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[10px] text-[var(--tone-neutral)]",children:a.length}):null),"scheduled-tasks"===e.id&&eJ>0&&(0,t.jsx)("span",{className:"rounded-full bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[10px] text-[var(--tone-neutral)]",children:eJ})]},e.id)})})}),(0,t.jsxs)("div",{className:"space-y-10",children:["notes"===V&&(0,t.jsxs)("section",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex gap-2 items-center",children:[(0,t.jsxs)("div",{className:"relative flex-1",children:[(0,t.jsx)(b.Search,{size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)]"}),(0,t.jsx)("input",{type:"text",value:ef,onChange:e=>ev(e.target.value),placeholder:"Search notes...",className:"w-full rounded-md border border-[var(--border)] bg-[var(--input)] py-1.5 pl-8 pr-3 text-sm text-[var(--foreground)] placeholder:text-[var(--app-shell-soft-text)] focus:border-[var(--primary)] focus:outline-none"})]}),(0,t.jsxs)("button",{type:"button",onClick:eB,disabled:eb,className:"flex items-center gap-1.5 rounded-md border border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] px-3 py-1.5 text-sm font-medium text-[var(--status-in-progress-text)] transition-opacity hover:opacity-90 disabled:opacity-50",children:[(0,t.jsx)(p.Plus,{size:14}),"New note"]})]}),er?(0,t.jsx)("p",{className:"py-4 text-sm text-[var(--muted-foreground)]",children:"Loading notes..."}):0===Z.length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] py-4",children:"No notes yet. Add one above."}):0===(f=(l=ef.toLowerCase())?Z.filter(e=>e.title.toLowerCase().includes(l)||e.body.toLowerCase().includes(l)):Z).length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] py-4",children:"No notes match your search."}):(0,t.jsx)("div",{className:"columns-1 gap-3 sm:columns-2 lg:columns-3",style:{columnFill:"balance"},children:f.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>eo(e.id),className:"mb-3 block w-full break-inside-avoid overflow-hidden rounded-lg border border-[var(--border)] bg-[var(--overlay-panel-muted)] text-left transition-shadow hover:shadow-md",children:[(0,t.jsx)("div",{className:"px-3 pt-3 pb-1",children:(0,t.jsx)("h4",{className:"text-sm font-medium text-[var(--foreground)] leading-snug",children:e.title})}),e.body.trim()&&(0,t.jsx)("div",{className:"px-3 pb-2 text-xs text-[var(--muted-foreground)] line-clamp-4",children:(0,t.jsx)(S.Markdown,{content:e.body})}),(0,t.jsx)("div",{className:"flex items-center justify-between px-3 pb-2",children:(0,t.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:new Date(e.updatedAt).toLocaleDateString()})})]},e.id))}),es&&(()=>{let e=Z.find(e=>e.id===es);if(!e)return null;let r=en[e.id]??e.body,a=el[e.id]??e.title,s=ec.has(e.id);return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-start justify-center bg-black/50 pt-[5vh]",onClick:e=>{e.target===e.currentTarget&&eo(null)},children:(0,t.jsxs)("div",{className:"mx-6 w-full max-w-7xl rounded-xl border border-[var(--border)] bg-[var(--background)] shadow-xl",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-5 py-3",children:[(0,t.jsx)("input",{type:"text",autoFocus:!0,value:a,onFocus:e=>{"Untitled"===a&&e.target.select()},onChange:t=>ed(r=>({...r,[e.id]:t.target.value})),className:"flex-1 bg-transparent text-base font-semibold text-[var(--foreground)] focus:outline-none"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 ml-3",children:[(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:s?"Saving...":new Date(e.updatedAt).toLocaleDateString()}),(0,t.jsx)("button",{type:"button",onClick:()=>eK(e.id),className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]",children:(0,t.jsx)(h.Trash2,{size:14})}),(0,t.jsx)("button",{type:"button",onClick:()=>eo(null),className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:(0,t.jsx)(j.X,{size:14})})]})]}),(0,t.jsx)("div",{className:"max-h-[75vh] overflow-y-auto px-5 py-4",children:(0,t.jsx)(eA,{content:r,editable:!0,onChange:t=>ei(r=>({...r,[e.id]:t})),placeholder:"Write your note..."})})]})})})()]}),"activity"===V&&O.id&&F.id&&(0,t.jsx)(et,{projectId:O.id,objectiveId:F.id,onTotalChange:K}),"tasks"===V&&(y=ey.filter((e,t,r)=>r.findIndex(t=>t.id===e.id)===t),k=["done","canceled","cancelled","completed","duplicate"],N=y.filter(e=>!k.includes(e.status.toLowerCase())),w=y.filter(e=>k.includes(e.status.toLowerCase())).slice(-5),C=eS.filter(e=>e.connected),I=0===($=eM&&C.some(e=>e.type===eM)?C.filter(e=>e.type===eM):C).length?null:$.map(e=>e.displayName).join(", "),(0,t.jsxs)("section",{children:[(0,t.jsx)("div",{className:"flex flex-wrap items-start justify-between gap-3 mb-4",children:(0,t.jsxs)("p",{className:"text-sm text-[var(--muted-foreground)]",children:["Tickets tracked by the objective label"," ",(0,t.jsx)("code",{className:"rounded bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[11px] text-[var(--foreground)]",children:F.key}),I?(0,t.jsxs)(t.Fragment,{children:[" across ",I,"."]}):"."]})}),0===$.length?(0,t.jsx)(eR,{label:0===eE.length?"No tracker integrations registered.":`Connect a tracker (${eE.map(e=>e.displayName).join(", ")}) to create and track tickets for this objective.`}):0===y.length?(0,t.jsx)(eR,{label:`No tracker tickets with label ${F.key} yet.`}):(0,t.jsxs)(t.Fragment,{children:[N.length>0&&(0,t.jsx)("div",{className:"space-y-3",children:N.map(r=>(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--overlay-panel-muted)] p-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,t.jsx)(em.TrackerIcon,{trackerType:r.trackerType,className:"h-3 w-3"}),(0,t.jsx)("span",{children:r.identifier})]}),(0,t.jsx)("a",{href:r.url??`/projects/${e}/tracking/${r.trackerType}?issue=${r.id}`,target:r.url?"_blank":void 0,rel:r.url?"noreferrer":void 0,className:"mt-1 block text-sm font-medium text-[var(--foreground)] transition-colors hover:text-[var(--primary)]",children:r.title})]}),(0,t.jsx)("span",{className:"rounded-full border border-[var(--tone-neutral-border)] px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-[var(--tone-neutral)]",children:r.status})]}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2 text-[11px] text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{children:["Updated ",ek(r.updatedAt)]}),(0,t.jsx)("span",{children:r.assignee?`Assigned to ${r.assignee}`:"Unassigned"})]})]},r.id))}),w.length>0&&(0,t.jsxs)("div",{className:N.length>0?"mt-6":"",children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.18em] text-[var(--muted-foreground)] mb-2",children:"Completed"}),(0,t.jsx)("div",{className:"space-y-0.5",children:w.map(r=>(0,t.jsxs)("a",{href:r.url??`/projects/${e}/tracking/${r.trackerType}?issue=${r.id}`,target:r.url?"_blank":void 0,rel:r.url?"noreferrer":void 0,className:"group flex items-center gap-3 rounded-md px-2 py-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--foreground)]",children:[(0,t.jsx)(em.TrackerIcon,{trackerType:r.trackerType,className:"h-3 w-3 shrink-0"}),(0,t.jsx)("span",{className:"text-[11px] font-mono shrink-0",children:r.identifier}),(0,t.jsx)("span",{className:"text-[12px] truncate",children:r.title}),(0,t.jsx)("span",{className:"ml-auto shrink-0 text-[10px] text-[var(--app-shell-soft-text)] group-hover:text-[var(--muted-foreground)]",children:r.status})]},r.id))})]})]})]})),"scheduled-tasks"===V&&(0,t.jsx)("section",{children:(0,t.jsx)(B,{projectId:O.id,objectiveId:F.id,objectiveKey:F.key,createDefaults:{name:`Work on ${F.title}`},onCreateTask:eY})}),(0,t.jsxs)("section",{className:"pt-10",children:[(0,t.jsx)("div",{className:"mb-4",children:(0,t.jsx)("h2",{className:"text-sm font-semibold text-[var(--destructive)]",children:"Danger Zone"})}),(0,t.jsxs)("div",{className:"flex items-center justify-between rounded-xl border border-[var(--destructive-border)] bg-[var(--destructive-bg)] p-5",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Delete Objective"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:"Once you delete an objective, there is no going back."})]}),(0,t.jsxs)("button",{type:"button",onClick:()=>void eG(),"aria-label":`Delete objective ${F.title}`,className:"flex items-center gap-2 whitespace-nowrap rounded-md border border-[var(--destructive-border)] bg-[var(--destructive-bg)] px-3 py-1.5 text-sm font-medium text-[var(--destructive)] transition-opacity hover:opacity-90",children:[(0,t.jsx)(h.Trash2,{size:14})," Delete"]})]})]})]})]})}),(0,t.jsx)(ex.JumpToLatestButton,{visible:e_,direction:"top",onClick:ez})]}),(0,t.jsx)(eC,{projectId:O.id,projectSlug:e,objective:F,teamName:_,trackerConnections:eS,availableTrackers:eE,defaultTrackerType:eM,onThreadLinked:eX,onObjectiveUpdated:D})]})})}):(0,t.jsx)("div",{className:"flex h-full items-center justify-center px-4 bg-[var(--background)]",children:(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--card-bg)] p-8 text-center",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-[var(--foreground)]",children:"Objective not found"}),(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"It may have been deleted or the link is stale."}),(0,t.jsx)(r.default,{href:`/projects/${e}`,className:"mt-4 inline-flex items-center gap-2 rounded-md border border-[var(--border)] bg-[var(--card-bg)] px-3 py-1.5 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:"Back to objectives"})]})}):(0,t.jsx)(e$,{label:"Project not found."})}function eR({label:e}){return(0,t.jsx)("div",{className:"flex items-center rounded-xl border border-dashed border-[var(--border)] bg-[var(--overlay-panel-muted)] p-6",children:(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:e})})}function eP({mode:e,draft:r,teams:a=[],isSaving:s,onChange:o,onClose:n,onSave:i}){return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/45 p-4",children:(0,t.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"edit"===e?"Edit objective":"New objective",className:"w-full max-w-3xl overflow-hidden rounded-[32px] border border-[var(--border)] bg-[var(--overlay-panel-strong)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"border-b border-[var(--border)] px-5 py-4",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--foreground)]",children:"edit"===e?"Edit objective":"New objective"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:"edit"===e?"Update the tracking details for this objective.":"Keep the statement measurable and use notes only for context that matters."})]}),(0,t.jsxs)("div",{className:"space-y-4 px-5 py-5",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(eL,{label:"Objective statement"}),(0,t.jsx)("input",{value:r.title,onChange:e=>o({...r,title:e.target.value}),className:"w-full rounded-2xl border border-[var(--border)] bg-[var(--input)] px-4 py-3 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-[var(--primary)]",placeholder:"Get 50 qualified visitors daily"})]}),"create"===e?(0,t.jsxs)("div",{children:[(0,t.jsx)(eL,{label:"Team"}),(0,t.jsxs)("select",{value:r.teamId,onChange:e=>o({...r,teamId:e.target.value}),className:"w-full rounded-2xl border border-[var(--border)] bg-[var(--input)] px-3 py-3 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-[var(--primary)]",children:[(0,t.jsx)("option",{value:"",children:"Select a team"}),a.map(e=>(0,t.jsx)("option",{value:e.id,children:e.name},e.id))]}),(0,t.jsx)("p",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:"Teams can only own one objective at a time."})]}):null]}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-5 py-4",children:[(0,t.jsx)("button",{type:"button",onClick:n,className:"rounded-xl border border-[var(--border)] px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:i,disabled:s,className:"rounded-xl border border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] px-3 py-2 text-sm font-medium text-[var(--status-in-progress-text)] transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50",children:s?"Saving...":"edit"===e?"Save objective":"Create objective"})]})]})})}function eL({label:e}){return(0,t.jsx)("label",{className:"mb-2 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:e})}e.s(["ProjectObjectivesOverview",()=>eO],568656)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,292135,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},716436,e=>{"use strict";let t=(0,e.i(363732).default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);e.s(["Activity",()=>t],716436)},997626,e=>{"use strict";let t=(0,e.i(363732).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);e.s(["Zap",()=>t],997626)},938201,e=>{"use strict";let t=(0,e.i(363732).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);e.s(["Target",()=>t],938201)},202641,e=>{"use strict";let t=(0,e.i(363732).default)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]);e.s(["Bell",()=>t],202641)},99296,846279,e=>{"use strict";let t=(0,e.i(363732).default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);e.s(["default",()=>t],846279),e.s(["TerminalSquare",()=>t],99296)},235136,e=>{"use strict";var t=e.i(935851);function r(e){let[r,a]=(0,t.useState)([]),[s,n]=(0,t.useState)(null),[l,o]=(0,t.useState)(!0),i=(0,t.useCallback)(async()=>{if(!e){a([]),n(null),o(!1);return}try{let t=await fetch(`/api/trackers/connections?projectId=${encodeURIComponent(e)}`),r=await t.json();a(Array.isArray(r.connections)?r.connections:[]),n("string"==typeof r.defaultTracker?r.defaultTracker:null)}catch{a([]),n(null)}finally{o(!1)}},[e]);(0,t.useEffect)(()=>{i()},[i]);let c=(0,t.useCallback)(async(t,r)=>{if(!e)return{ok:!1,error:"Missing projectId"};try{let a=await fetch("/api/trackers/connections",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:t,projectId:e,metadata:r})});if(!a.ok){let e=await a.json().catch(()=>({}));return{ok:!1,error:e.error||"Failed to add connection"}}return await i(),{ok:!0}}catch{return{ok:!1,error:"Failed to add connection"}}},[e,i]),d=(0,t.useCallback)(async t=>{if(!e)return{ok:!1,error:"Missing projectId"};try{let r=await fetch(`/api/trackers/${t}/status?projectId=${encodeURIComponent(e)}`,{method:"DELETE"});if(!r.ok){let e=await r.json().catch(()=>({}));return{ok:!1,error:e.error||"Failed to remove connection"}}return await i(),{ok:!0}}catch{return{ok:!1,error:"Failed to remove connection"}}},[e,i]),u=(0,t.useCallback)(async t=>{if(!e)return{ok:!1,error:"Missing projectId"};try{let r=await fetch("/api/trackers/connections",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:e,defaultTracker:t})});if(!r.ok){let e=await r.json().catch(()=>({}));return{ok:!1,error:e.error||"Failed to set default tracker"}}return await i(),{ok:!0}}catch{return{ok:!1,error:"Failed to set default tracker"}}},[e,i]);return{connections:r,defaultTracker:s,loading:l,refresh:i,addConnection:c,removeConnection:d,setDefaultTracker:u}}e.s(["useTrackerConnections",()=>r])},169433,e=>{"use strict";let t="agx:windowState",r={workspaceWidth:260,logPanelHeight:200,workspaceVisible:!0,logPanelVisible:!1,linearTicketPanelWidth:576,objectiveChatPanelWidth:440,objectiveListPanelWidth:320},a={lastThreadId:null,lastWorkspaceId:null},s={bounds:null,sidebar:r,scroll:a};function n(){return void 0!==window.localStorage}function l(){if(!n())return{...s};let e=window.localStorage.getItem(t);if(!e)return{...s};try{let t=JSON.parse(e);return{bounds:t.bounds||null,sidebar:{...r,...t.sidebar||{}},scroll:{...a,...t.scroll||{}}}}catch{return{...s}}}function o(){return l().sidebar}function i(e){let r=l();r.sidebar={...r.sidebar,...e};if(n())try{window.localStorage.setItem(t,JSON.stringify(r))}catch{}}function c(){return o().workspaceWidth}function d(e){i({workspaceWidth:e})}function u(){return o().linearTicketPanelWidth}function h(e){i({linearTicketPanelWidth:e})}function p(){return o().objectiveChatPanelWidth}function m(e){i({objectiveChatPanelWidth:e})}function x(){return o().objectiveListPanelWidth}function f(e){i({objectiveListPanelWidth:e})}e.s(["loadLinearTicketPanelWidth",()=>u,"loadObjectiveChatPanelWidth",()=>p,"loadObjectiveListPanelWidth",()=>x,"loadWorkspaceWidth",()=>c,"persistLinearTicketPanelWidth",()=>h,"persistObjectiveChatPanelWidth",()=>m,"persistObjectiveListPanelWidth",()=>f,"persistWorkspaceWidth",()=>d])},681619,594643,e=>{"use strict";var t=e.i(762281);function r({className:e}){return(0,t.jsx)("svg",{className:e,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M2.886 4.18A11.982 11.982 0 0 1 11.99 0C18.624 0 24 5.376 24 12.009c0 3.64-1.62 6.903-4.18 9.105L2.887 4.18ZM1.817 5.626l16.556 16.556c-.524.33-1.075.62-1.65.866L.951 7.277c.247-.575.537-1.126.866-1.65ZM.322 9.163l14.515 14.515c-.71.172-1.443.282-2.195.322L0 11.358a12 12 0 0 1 .322-2.195Zm-.17 4.862 9.823 9.824a12.02 12.02 0 0 1-9.824-9.824Z"})})}e.s(["LinearIcon",()=>r],594643);let a={linear:r,jira:function({className:e}){return(0,t.jsxs)("svg",{className:e,viewBox:"12 12 104 104",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("path",{d:"M108.023 16H61.805c0 11.52 9.324 20.848 20.847 20.848h8.5v8.226c0 11.52 9.328 20.848 20.848 20.848V19.977A3.98 3.98 0 00108.023 16zm0 0"}),(0,t.jsx)("path",{d:"M85.121 39.04H38.902c0 11.519 9.325 20.847 20.844 20.847h8.504v8.226c0 11.52 9.328 20.848 20.848 20.848V43.016a3.983 3.983 0 00-3.977-3.977zm0 0"}),(0,t.jsx)("path",{d:"M62.219 62.078H16c0 11.524 9.324 20.848 20.848 20.848h8.5v8.23c0 11.52 9.328 20.844 20.847 20.844V66.059a3.984 3.984 0 00-3.976-3.98zm0 0"})]})},github:function({className:e}){return(0,t.jsx)("svg",{className:e,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"})})}};function s({trackerType:e,className:r}){let s=a[e];return s?(0,t.jsx)(s,{className:r}):(0,t.jsx)(n,{className:r})}function n({className:e}){return(0,t.jsxs)("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2"}),(0,t.jsx)("rect",{x:"9",y:"3",width:"6",height:"4",rx:"2"}),(0,t.jsx)("path",{d:"M9 12h6"}),(0,t.jsx)("path",{d:"M9 16h6"})]})}e.s(["TrackerIcon",()=>s],681619)},55236,e=>{"use strict";let t=(0,e.i(363732).default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);e.s(["Folder",()=>t],55236)},597628,e=>{"use strict";let t=(0,e.i(363732).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);e.s(["MessageSquare",()=>t],597628)},575479,e=>{"use strict";let t=(0,e.i(363732).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>t],575479)},51297,e=>{"use strict";let t=(0,e.i(363732).default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);e.s(["Bot",()=>t],51297)},494999,e=>{"use strict";var t=e.i(762281),r=e.i(935851);function a({initialPath:e,onSelect:a,onCancel:s}){let[n,l]=(0,r.useState)(e||""),[o,i]=(0,r.useState)(null),[c,d]=(0,r.useState)(!1),[u,h]=(0,r.useState)(null),p=(0,r.useRef)(null),m=(0,r.useCallback)(async e=>{d(!0),h(null);try{let t=e?`?path=${encodeURIComponent(e)}`:"",r=await fetch(`/api/filesystem/browse${t}`),a=await r.json();if(!r.ok)return void h(a.error||"Failed to browse");i(a),l(a.current),p.current?.scrollTo(0,0)}catch{h("Failed to connect")}finally{d(!1)}},[]);return(0,r.useEffect)(()=>{m(e||"")},[]),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] overflow-hidden shadow-lg",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-[var(--card-border)] bg-[var(--muted)]/30",children:[(0,t.jsx)("input",{value:n,onChange:e=>l(e.target.value),onKeyDown:e=>{"Enter"===e.key&&m(n)},className:"input text-xs flex-1 py-1",placeholder:"Enter path..."}),(0,t.jsx)("button",{type:"button",onClick:()=>m(n),className:"text-[10px] font-bold uppercase tracking-wider text-[var(--primary)] hover:underline px-2 py-1 shrink-0",children:"Go"})]}),(0,t.jsxs)("div",{ref:p,className:"max-h-48 overflow-y-auto",children:[c&&(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)] text-center",children:"Loading..."}),u&&(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--destructive)] text-center",children:u}),!c&&o&&(0,t.jsxs)("div",{className:"py-1",children:[o.parent&&(0,t.jsxs)("button",{type:"button",onClick:()=>m(o.parent),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-[var(--muted)]/50 transition-colors flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"↑"}),(0,t.jsx)("span",{className:"text-[var(--muted-foreground)]",children:".."})]}),0===o.dirs.length&&!o.parent&&(0,t.jsx)("div",{className:"px-3 py-3 text-xs text-[var(--muted-foreground)] text-center",children:"No subdirectories"}),o.dirs.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>m(e.path),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-[var(--muted)]/50 transition-colors flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"📁"}),(0,t.jsx)("span",{className:"truncate",children:e.name})]},e.path))]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 border-t border-[var(--card-border)] bg-[var(--muted)]/30",children:[(0,t.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)] truncate max-w-[60%]",children:o?.current||n}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:s,className:"text-xs font-medium text-[var(--muted-foreground)] hover:underline px-2 py-1",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:()=>a(o?.current||n),className:"text-xs font-bold text-[var(--primary)] hover:underline px-2 py-1",children:"Select"})]})]})]})}e.s(["default",()=>a])},535208,e=>{"use strict";var t=e.i(762281),r=e.i(935851),a=e.i(494999);let s={name:"",description:""},n={name:"",path:"",notes:""};function l(){let[e,t]=(0,r.useState)(s),[a,l]=(0,r.useState)([n]),[o,i]=(0,r.useState)(!1),[c,d]=(0,r.useState)(null),u=(0,r.useCallback)((e,t,r)=>{l(a=>a.map((a,s)=>s===e?{...a,[t]:r}:a))},[]),h=(0,r.useCallback)(()=>{l(e=>[...e,{...n}])},[]),p=(0,r.useCallback)(e=>{l(t=>t.filter((t,r)=>r!==e))},[]),m=(0,r.useCallback)(()=>{t(s),l([n]),d(null)},[]),x=(0,r.useCallback)(e=>{t({name:e.name||"",description:e.description||""}),e.repos&&e.repos.length>0?l(e.repos.map(e=>({id:e.id,name:e.name||"",path:e.path||"",git_url:e.git_url||"",notes:e.notes||""}))):l([n]),d(null)},[]);return{form:e,setForm:t,repos:a,handleRepoChange:u,addRepo:h,removeRepo:p,resetForm:m,hydrateFromProject:x,isSubmitting:o,setIsSubmitting:i,formError:c,setFormError:d}}function o(e,t){let r=t.filter(e=>e.name.trim()&&e.path.trim()).map(e=>({...e.id?{id:e.id}:{},name:e.name.trim(),path:e.path.trim(),...e.git_url?.trim()?{git_url:e.git_url.trim()}:{},notes:e.notes.trim()||void 0}));return{name:e.name.trim(),description:e.description.trim()||void 0,repos:r.length?r:void 0}}function i({form:e,repos:s,isEditingProject:n,isSubmitting:l,onFieldChange:o,onRepoChange:i,onAddRepo:c,onRemoveRepo:d}){let[u,h]=(0,r.useState)([]),[p,m]=(0,r.useState)(null),x=(0,r.useRef)(0);(0,r.useEffect)(()=>{n?h([]):h(s.map((e,t)=>t)),x.current=s.length},[n,s.length]),(0,r.useEffect)(()=>{if(!n){x.current=s.length;return}let e=x.current;h(t=>{let r=t.filter(e=>e<s.length);return s.length>e&&r.push(...Array.from({length:s.length-e},(t,r)=>e+r)),r}),x.current=s.length},[n,s.length]);let f=(0,r.useCallback)(e=>{h(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),v=(0,r.useCallback)(e=>!n||u.includes(e),[u,n]);return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)("div",{className:"grid gap-4",children:(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Project Name"}),(0,t.jsx)("input",{value:e.name,onChange:e=>o("name",e.target.value),className:"input w-full",placeholder:"e.g. AGX Cloud",disabled:l})]})}),(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Description"}),(0,t.jsx)("textarea",{value:e.description,onChange:e=>o("description",e.target.value),className:"input w-full h-24 resize-none",placeholder:"What is this project about?",disabled:l})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--card-border)] pb-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Folders"}),(0,t.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:"Code repos, doc folders, design assets, config directories — any path your team needs access to."})]}),(0,t.jsx)("button",{type:"button",onClick:c,className:"text-xs font-semibold text-[var(--primary)] hover:underline flex-shrink-0",disabled:l,children:"+ Add Folder"})]}),(0,t.jsx)("div",{className:"space-y-4",children:s.map((e,r)=>(0,t.jsxs)("div",{className:"p-4 rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 space-y-3 relative group",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"text-xs font-bold text-[var(--foreground)] uppercase",children:["Folder #",r+1]}),n&&!v(r)?(0,t.jsxs)("div",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)("div",{children:e.name||"Unnamed folder"}),(0,t.jsx)("div",{className:"truncate",children:e.path||"No local path set"})]}):null]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[n&&(0,t.jsx)("button",{type:"button",onClick:()=>f(r),className:"text-xs font-semibold text-[var(--primary)] hover:underline",disabled:l,children:v(r)?"Done":"Edit"}),s.length>1&&(0,t.jsx)("button",{type:"button",onClick:()=>d(r),className:"text-xs font-semibold text-[var(--destructive)] hover:underline",disabled:l,children:"Remove"})]})]}),v(r)?(0,t.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,t.jsx)("input",{value:e.name,onChange:e=>i(r,"name",e.target.value),placeholder:"Name (e.g. Frontend, API Docs, Design System)",className:"input text-sm",disabled:l}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("input",{value:e.path,onChange:e=>i(r,"path",e.target.value),placeholder:"Local path to folder",className:`input text-sm flex-1${e.name.trim()&&!e.path.trim()?" border-[var(--destructive)]/50 ring-1 ring-[var(--destructive)]/20":""}`,disabled:l}),(0,t.jsx)("button",{type:"button",onClick:async()=>{try{let e=await fetch("/api/filesystem/pick-folder",{method:"POST"}),t=await e.json();t.path&&i(r,"path",t.path)}catch{m(p===r?null:r)}},className:"px-3 py-2 rounded-xl border border-[var(--card-border)] bg-[var(--muted)]/30 hover:bg-[var(--muted)]/60 transition-colors text-xs font-semibold text-[var(--muted-foreground)] whitespace-nowrap",disabled:l,children:"Browse"})]}),e.name.trim()&&!e.path.trim()&&(0,t.jsx)("p",{className:"text-[11px] text-[var(--destructive)]",children:"Local path is required"})]}),p===r&&(0,t.jsx)("div",{className:"md:col-span-2",children:(0,t.jsx)(a.default,{initialPath:e.path||"",onSelect:e=>{i(r,"path",e),m(null)},onCancel:()=>m(null)})}),(0,t.jsx)("div",{className:"md:col-span-2",children:(0,t.jsx)("textarea",{value:e.notes,onChange:e=>i(r,"notes",e.target.value),placeholder:"Notes for this folder — e.g. coding conventions, deploy steps, ownership, doc standards...",className:"input text-sm w-full min-h-24 resize-y",disabled:l})})]}):null]},r))})]})]})}function c({isOpen:e,onClose:a,onSubmit:s,editingProject:n,form:l,repos:o,isSubmitting:c,formError:d,onFieldChange:u,onRepoChange:h,onAddRepo:p,onRemoveRepo:m}){let[x,f]=(0,r.useState)([]);(0,r.useEffect)(()=>{let e=!1;return async function(){if(!n)return f([]);try{let t=await fetch(`/api/knowledge-notes?scope=project&subjectId=${encodeURIComponent(n.id)}`),r=(t.ok?await t.json():{note:null}).note;e||f(r?.content?[{id:r.id,content:r.content,created_at:r.updatedAt??r.createdAt,source:r.sourceType}]:[])}catch{e||f([])}}(),()=>{e=!0}},[n]);let v=o.some(e=>e.name.trim()&&!e.path.trim()),g=!l.name.trim()||v;return e?(0,t.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:e=>e.target===e.currentTarget&&a(),children:(0,t.jsxs)("div",{className:"modal-content w-full max-w-4xl mx-2 sm:mx-auto bg-[var(--card-bg)] rounded-3xl border border-[var(--card-border)] shadow-2xl animate-scale-in flex flex-col max-h-[90vh]",children:[(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-bold",children:n?"Edit Project":"Create New Project"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:n?"Update your project settings and folders.":"Define a new project and connect folders."})]}),(0,t.jsx)("button",{onClick:a,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 sm:p-8",children:[n&&(0,t.jsx)("div",{className:"mb-6",children:(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 p-4",children:[(0,t.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Living Project Note"}),x.length>0?(0,t.jsx)("div",{className:"mt-3 space-y-2",children:x.slice(0,5).map(e=>(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,t.jsx)("div",{children:e.content}),e.created_at?(0,t.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(e.created_at).toLocaleString()}):null]},e.id))}):(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"No project note yet."})]})}),(0,t.jsx)(i,{form:l,repos:o,isEditingProject:!!n,isSubmitting:c,onFieldChange:u,onRepoChange:h,onAddRepo:p,onRemoveRepo:m}),d&&(0,t.jsx)("div",{className:"mt-6 p-4 rounded-xl bg-[var(--destructive-muted)] border border-[var(--destructive)]/20 text-sm text-[var(--destructive)]",children:d})]}),(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-t border-[var(--card-border)] flex items-center justify-end gap-3 flex-shrink-0",children:[(0,t.jsx)("button",{onClick:a,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Cancel"}),(0,t.jsx)("button",{onClick:s,disabled:c||g,className:"btn-primary px-8 py-2 shadow-lg shadow-[var(--primary)]/20 min-w-[120px]",children:c?(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"spinner w-3 h-3 border-2 border-white/20 border-t-white"}),"Saving..."]}):n?"Save Changes":"Create Project"})]})]})}):null}e.s(["createProjectPayload",()=>o,"default",()=>c,"useProjectFormState",()=>l])},563975,e=>{"use strict";var t=e.i(762281),r=e.i(935851),a=e.i(506420),s=e.i(429056),n=e.i(169729),l=e.i(468947),o=e.i(721571),i=e.i(524780),c=e.i(716436),d=e.i(715908);let u=new Set(["spawning","running"]);function h(e,t){if(!e)return{name:"Unknown",color:"#6B7280"};let r=t.find(t=>t.id===e);return r?{name:r.name,color:r.color}:{name:e.slice(0,8),color:"#6B7280"}}var p=e.i(44054),m=e.i(884564);let x={Chat:"bg-blue-500/15 text-blue-400","Scheduled Task":"bg-amber-500/15 text-amber-400",Automation:"bg-purple-500/15 text-purple-400",Daemon:"bg-zinc-500/15 text-zinc-400"};function f({status:e}){return"running"===e?(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse shrink-0"}):"queued"===e?(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-amber-400 shrink-0"}):"failed"===e?(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-red-400 shrink-0"}):(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-zinc-500 shrink-0"})}function v({item:e}){return(0,t.jsxs)("div",{className:"flex items-center gap-2.5 px-3 py-2 hover:bg-[var(--app-shell-subtle)] transition-colors rounded-md",children:[(0,t.jsx)("img",{src:(0,m.agentAvatarUrl)(e.agentId??e.id,20,e.agentColor),alt:"",className:"h-5 w-5 rounded-full shrink-0"}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)(f,{status:e.status}),(0,t.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)] truncate",children:e.agentName})]}),(0,t.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate mt-0.5",children:e.title})]}),(0,t.jsxs)("div",{className:"flex flex-col items-end gap-0.5 shrink-0",children:[(0,t.jsx)("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-medium ${x[e.source]??x.Daemon}`,children:e.source}),(0,t.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:function(e){let t=Date.now()-e;if(t<6e4)return"just now";let r=Math.floor(t/6e4);if(r<60)return`${r}m ago`;let a=Math.floor(r/60);return`${a}h ago`}(e.startedAt)})]})]})}function g({items:e,onClose:a}){let s=(0,r.useRef)(null);(0,r.useEffect)(()=>{let e=e=>{s.current&&!s.current.contains(e.target)&&a()},t=setTimeout(()=>document.addEventListener("pointerdown",e),0);return()=>{clearTimeout(t),document.removeEventListener("pointerdown",e)}},[a]);let n=e.filter(e=>"running"===e.status||"queued"===e.status),l=e.filter(e=>"running"!==e.status&&"queued"!==e.status);return(0,t.jsx)("div",{ref:s,className:"absolute top-full right-0 z-50 mt-1.5 w-80 max-h-96 overflow-y-auto rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg",children:0===e.length?(0,t.jsx)("div",{className:"flex flex-col items-center justify-center py-8 px-4",children:(0,t.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"No recent activity"})}):(0,t.jsxs)("div",{className:"py-1.5",children:[n.length>0&&(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"px-3 py-1.5",children:(0,t.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Active Now"})}),n.map(e=>(0,t.jsx)(v,{item:e},e.id))]}),l.length>0&&(0,t.jsxs)("div",{children:[n.length>0&&(0,t.jsx)("div",{className:"mx-3 my-1 border-t border-[var(--app-shell-border)]"}),(0,t.jsx)("div",{className:"px-3 py-1.5",children:(0,t.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Recent"})}),l.map(e=>(0,t.jsx)(v,{item:e},e.id))]})]})})}function b({projectId:e,participants:a}){let{isTouchLayout:s}=(0,p.useInputCapabilities)(),{items:n,activeCount:l}=function(e,t){let[a,s]=(0,r.useState)([]),n=(0,r.useRef)(null),l=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/processes");if(!e.ok)return;let t=await e.json();s(t)}catch{}},[]);(0,r.useEffect)(()=>(l(),n.current=setInterval(l,5e3),()=>{n.current&&clearInterval(n.current)}),[l]);let{jobs:o}=(0,d.usePromptJobs)(e),{automations:i}=function(){let[e,t]=(0,r.useState)([]),[a,s]=(0,r.useState)(!0),[n,l]=(0,r.useState)(null),o=(0,r.useCallback)(async()=>{try{s(!0);let e=await fetch("/api/automations");if(!e.ok)throw Error(`Failed to fetch: ${e.status}`);let r=await e.json();t(r.automations??[]),l(null)}catch(e){l(e instanceof Error?e.message:String(e))}finally{s(!1)}},[]);(0,r.useEffect)(()=>{o();let e=setInterval(o,1e4);return()=>clearInterval(e)},[o]);let i=(0,r.useCallback)(async e=>{let t=await fetch(`/api/tasks/${e}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pause"})});return t.ok&&await o(),t.ok},[o]),c=(0,r.useCallback)(async e=>{let t=await fetch(`/api/tasks/${e}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resume"})});return t.ok&&await o(),t.ok},[o]),d=(0,r.useCallback)(async e=>{let t=await fetch(`/api/tasks/${e}/graph/schedule`,{method:"DELETE"});return t.ok&&await o(),t.ok},[o]),u=(0,r.useCallback)(async e=>{let t=await fetch("/api/schedules/poll",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(t.ok)return await o(),{ok:!0};let r=await t.json().catch(()=>({}));return await o(),{ok:!1,skipReason:r.skipReason}},[o]);return{automations:e,loading:a,error:n,refresh:o,pauseSchedule:i,resumeSchedule:c,deleteSchedule:d,runNow:u}}(),c=(0,r.useMemo)(()=>{let r=Date.now()-36e5,s=[];for(let l of a){var n;if(e&&l.projectSlug!==e)continue;let a=(n=l.state,u.has(n)?"running":"done"===n?"completed":"error"===n||"killed"===n?"failed":"completed");if("running"!==a&&l.startedAt<r)continue;let{name:o,color:i}=h(l.agentId,t);s.push({id:`proc-${l.id}`,agentId:l.agentId,agentName:o,agentColor:i,type:l.threadId?"chat-run":"process",title:l.threadId?"Chat response":"Agent process",source:l.threadId?"Chat":"Daemon",status:a,startedAt:l.startedAt,durationMs:l.lastActivity-l.startedAt})}for(let a of o){if(e&&a.projectId!==e)continue;let n="running"===a.lastOutcome||"queued"===a.lastOutcome,l=a.lastRunAt??0;if(!n&&l<r)continue;let o=n?"queued"===a.lastOutcome?"queued":"running":"success"===a.lastOutcome?"completed":"failed"===a.lastOutcome?"failed":"completed",{name:i,color:c}=h(a.agentId,t);s.push({id:`job-${a.id}`,agentId:a.agentId,agentName:i,agentColor:c,type:"prompt-job",title:a.name,source:"Scheduled Task",status:o,startedAt:l,durationMs:null})}for(let t of i){if(e&&t.projectId!==e)continue;let a="running"===t.executionState,n=new Date(t.updatedAt).getTime();(a||!(n<r))&&s.push({id:`auto-${t.taskId}`,agentId:null,agentName:t.title,agentColor:"#7C3AED",type:"automation",title:t.title,source:"Automation",status:a?"running":"completed",startedAt:n,durationMs:null})}return s.sort((e,t)=>{let r=+("running"===e.status||"queued"===e.status),a=+("running"===t.status||"queued"===t.status);return r!==a?a-r:t.startedAt-e.startedAt}),s},[a,o,i,t,e]),p=(0,r.useMemo)(()=>c.filter(e=>"running"===e.status||"queued"===e.status).length,[c]);return{items:c,activeCount:p}}(e,a),[o,i]=(0,r.useState)(!1),m=(0,r.useCallback)(()=>i(!1),[]);return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>i(e=>!e),className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${s?"h-9 w-9":"h-7 w-7"}`,title:"Activity stream","aria-label":"Activity stream",children:[(0,t.jsx)(c.Activity,{className:s?"h-4 w-4":"h-3.5 w-3.5"}),l>0&&(0,t.jsx)("span",{className:"absolute top-0 right-0 h-2 w-2 rounded-full bg-emerald-400 animate-pulse"})]}),o&&(0,t.jsx)(g,{items:n,onClose:m})]})}var j=e.i(51297);let y=(0,e.i(363732).default)("clock-3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6h4",key:"135r8i"}]]);var k=e.i(575479),w=e.i(906724),N=e.i(597628),C=e.i(8707),S=e.i(938201),A=e.i(572665),T=e.i(797167);function M({projectId:e}){let{isTouchLayout:s}=(0,p.useInputCapabilities)(),n=(0,a.useRouter)(),l=(0,a.usePathname)(),o=(0,r.useRef)(null),i=(0,r.useRef)(null),[c,d]=(0,r.useState)(""),[u,h]=(0,r.useState)([]),[m,x]=(0,r.useState)(0),[f,v]=(0,r.useState)(!1),[g,b]=(0,r.useState)(null),[M,P]=(0,r.useState)(!1),[I,E]=(0,r.useState)(0),[L,W]=(0,r.useState)(new Set),$=c.trim(),R=(0,r.useMemo)(()=>u.map(e=>({...e,visibleResults:L.has(e.id)?e.results:e.results.slice(0,3),hiddenCount:Math.max(0,e.results.length-3)})),[L,u]),D=(0,r.useMemo)(()=>R.flatMap(e=>e.visibleResults),[R]),O=(0,r.useMemo)(()=>D.map(e=>`${e.kind}:${e.id}`),[D]),F=(0,r.useCallback)(()=>{d(""),h([]),x(0),b(null),v(!1),E(0)},[]),z=(0,r.useCallback)(e=>{F(),P(!1),n.push(e.href)},[F,n]);(0,r.useEffect)(()=>{F(),P(!1),W(new Set)},[F,l]),(0,r.useEffect)(()=>{let e=e=>{o.current?.contains(e.target)||P(!1)};return window.addEventListener("pointerdown",e),()=>window.removeEventListener("pointerdown",e)},[]),(0,r.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"k"===e.key.toLowerCase()&&(e.preventDefault(),i.current?.focus(),i.current?.select())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),(0,r.useEffect)(()=>{M&&E(0)},[M,u]),(0,r.useEffect)(()=>{if(!$||$.length<2){h([]),x(0),b(null),v(!1),W(new Set);return}let t=!1;v(!0);let r=window.setTimeout(()=>{(async()=>{try{let r=new URLSearchParams({q:$}),a=await fetch(`/api/projects/${encodeURIComponent(e)}/search?${r.toString()}`,{cache:"no-store"}),s=await a.json().catch(()=>null);if(t)return;if(!a.ok){let e=s&&"object"==typeof s&&"error"in s?String(s.error):"Search failed";h([]),x(0),b(e);return}h(Array.isArray(s.sections)?s.sections:[]),x("number"==typeof s.total?s.total:0),b(null),W(new Set)}catch(e){if(t)return;console.error("Project search failed",e),h([]),x(0),b("Search failed")}finally{t||v(!1)}})()},220);return()=>{t=!0,window.clearTimeout(r)}},[$,e]);let q=M&&($.length>0||f||null!==g),U=D.length>0?D[Math.max(0,Math.min(I,D.length-1))]:null,H=(0,r.useCallback)(e=>{W(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]);return(0,t.jsxs)("div",{ref:o,className:"relative w-full max-w-xl",children:[(0,t.jsxs)("div",{className:"group/search relative",children:[(0,t.jsx)(C.Search,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--app-shell-soft-text)] transition-colors group-focus-within/search:text-[var(--primary)]",strokeWidth:1.8}),(0,t.jsx)("input",{ref:i,type:"text",value:c,onFocus:()=>P(!0),onChange:e=>{d(e.target.value),P(!0)},onKeyDown:e=>{if("ArrowDown"===e.key&&D.length>0){e.preventDefault(),E(e=>(e+1)%D.length);return}if("ArrowUp"===e.key&&D.length>0){e.preventDefault(),E(e=>(e-1+D.length)%D.length);return}if("Enter"===e.key&&U){e.preventDefault(),z(U);return}"Escape"===e.key&&($?F():(P(!1),i.current?.blur()))},placeholder:"Search objectives, tickets, tasks, teams, agents, and chat…",className:"h-8 w-full rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] pl-9 pr-16 text-xs font-medium text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)] transition-all hover:border-[var(--app-shell-border-strong)] focus:border-[var(--primary)] focus:ring-2 focus:ring-[var(--ring)]"}),$?(0,t.jsxs)("div",{className:"absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[11px] font-bold text-[var(--muted-foreground)]",children:f?"…":m}),(0,t.jsx)("button",{type:"button",onClick:()=>{F(),i.current?.focus()},className:"inline-flex h-5 w-5 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]","aria-label":"Clear search",children:(0,t.jsx)(T.X,{className:"h-3.5 w-3.5"})})]}):s?null:(0,t.jsx)("kbd",{className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-1.5 py-0.5 font-sans text-[10px] font-bold text-[var(--app-shell-soft-text)]",children:"⌘K"})]}),q?(0,t.jsx)("div",{className:"absolute left-0 right-0 top-[calc(100%+0.5rem)] z-50 overflow-hidden rounded-2xl border border-[var(--app-shell-border)] bg-[var(--app-shell-surface)] shadow-2xl shadow-black/20",children:(0,t.jsxs)("div",{className:"max-h-[28rem] overflow-y-auto p-2",children:[$.length<2?(0,t.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"Keep typing to search across project entities."}):null,f?(0,t.jsxs)("div",{className:"flex items-center gap-2 rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)(w.Loader2,{className:"h-4 w-4 animate-spin"}),"Searching this project…"]}):null,!f&&g?(0,t.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-rose-500",children:g}):null,f||g||!($.length>=2)||0!==u.length?null:(0,t.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"No matches in this project."}),!f&&!g&&R.map(e=>(0,t.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3 px-3 pb-1 pt-2",children:[(0,t.jsxs)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--app-shell-soft-text)]",children:[e.label,(0,t.jsx)("span",{className:"ml-1.5 text-[9px] text-[var(--muted-foreground)]",children:e.results.length})]}),e.results.length>3?(0,t.jsx)("button",{type:"button",onMouseDown:e=>e.preventDefault(),onClick:()=>H(e.id),className:"text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:L.has(e.id)?"Collapse":`Show ${e.hiddenCount} more`}):null]}),(0,t.jsx)("div",{className:"space-y-1",children:e.visibleResults.map(e=>{let r,a,s=`${e.kind}:${e.id}`,n=O.findIndex(e=>e===s),l=n===I,o=function(e){switch(e){case"objective":return S.Target;case"linear_issue":return k.FileText;case"scheduled_task":return y;case"team":return A.Users;case"agent":return j.Bot;case"chat_thread":case"chat_message":return N.MessageSquare;default:return C.Search}}(e.kind);return(0,t.jsxs)("button",{type:"button",onMouseDown:e=>e.preventDefault(),onMouseEnter:()=>E(n),onClick:()=>z(e),className:`flex w-full items-start gap-3 rounded-xl px-3 py-2.5 text-left transition-colors ${l?"bg-[var(--app-shell-subtle)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,children:[(0,t.jsx)("span",{className:"mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--app-shell-muted)]",children:(0,t.jsx)(o,{className:"h-3.5 w-3.5",strokeWidth:1.75})}),(0,t.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium",children:e.title}),(0,t.jsx)("span",{className:"shrink-0 rounded-full bg-[var(--app-shell-subtle)] px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[var(--app-shell-soft-text)]",children:e.label})]}),e.context?(0,t.jsx)("span",{className:"mt-0.5 block truncate text-xs text-[var(--muted-foreground)]",children:e.context}):null,e.description?(0,t.jsx)("span",{className:"mt-1 block text-xs leading-5 text-[var(--muted-foreground)]",children:(r=e.description.split(/(<\/?mark>)/g),a=!1,r.map((e,r)=>"<mark>"===e?(a=!0,null):"</mark>"===e?(a=!1,null):e?a?(0,t.jsx)("mark",{className:"rounded bg-amber-200/80 px-0.5 text-inherit",children:e},`mark-${r}`):(0,t.jsx)("span",{children:e},`text-${r}`):null))}):null]})]},s)})})]},e.id))]})}):null]})}var P=e.i(749410),I=e.i(524123),E=e.i(969039),L=e.i(235136);let W={home:!0,threads:!0,terminal:!0,objectives:!0,objectivesIsNew:!1,tracking:!0,teams:!0,folders:!0,scheduledTasks:!0,envVars:!0,notifications:!0};var $=e.i(481248),R=e.i(169433);let D="agx-theme";function O({children:e,params:c}){let{slug:d}=(0,r.use)(c),{isTouchLayout:u}=(0,p.useInputCapabilities)(),h=(0,a.useRouter)(),m=(0,a.usePathname)(),{projects:x,isLoading:f,createProject:v,updateProject:g,deleteProject:j,addAgent:y,removeAgent:k}=(0,I.useProjectsWithAgents)(),{threads:w,isLoading:N,isCreating:C,deletingThreadId:S,renamingThreadId:A,isRestoringActiveThread:T,createThread:O,renameThread:F,deleteThread:z}=(0,E.useThreadState)(),[q,U]=(0,r.useState)([]),[H,_]=(0,r.useState)(!1),[V,B]=(0,r.useState)(368),[J,K]=(0,r.useState)(()=>{let e=window.localStorage.getItem(D);return"dark"===e||"light"===e?e:document.documentElement.classList.contains("dark")?"dark":"light"});(0,r.useEffect)(()=>{_((0,$.loadWorkspaceSidebarVisible)()),B((0,R.loadWorkspaceWidth)()||368)},[]),(0,r.useEffect)(()=>{let e="dark"===J;document.documentElement.classList.toggle("dark",e),document.documentElement.style.colorScheme=J,window.localStorage.setItem(D,J)},[J]),(0,r.useEffect)(()=>{fetch("/api/participants").then(e=>e.json()).then(e=>U(Array.isArray(e)?e:[])).catch(()=>U([]))},[]);let Z=(0,r.useMemo)(()=>x.find(e=>e.slug===d)??null,[x,d]),G=(0,r.useMemo)(()=>{let e=m.match(/\/projects\/[^/]+\/thread\/([^/]+)/);return e?.[1]?decodeURIComponent(e[1]):Z?.thread_ids[0]??null},[Z?.thread_ids,m]),X=(0,r.useMemo)(()=>m.includes("/linear")?"linear":m.includes("/automations")?"automations":m.includes("/thread/")?"thread":m.includes("/objectives")?"objectives":m.includes("/teams")?"teams":m.includes("/folders")?"folders":m.includes("/env-vars")?"env-vars":m.includes("/notifications")?"notifications":m.includes("/terminal")?"terminal":"home",[m]),{show:Q,trackerConnections:Y}=function(e){let{connections:t,loading:a}=(0,L.useTrackerConnections)(e?.id??null);return(0,r.useMemo)(()=>{let e=t.map(e=>({type:e.type,connected:e.connected,connectedAt:e.connectedAt}));return a?{stage:"stage1",loading:!0,show:{...W},trackerConnections:[]}:{stage:"stage4",loading:!1,show:{...W},trackerConnections:e}},[a,t])}(Z),ee=()=>{let e=!H;_(e),(0,$.persistWorkspaceSidebarVisible)(e)},et=(0,r.useCallback)(e=>{B(e),(0,R.persistWorkspaceWidth)(e)},[]);return f?(0,t.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}):Z?(0,t.jsxs)("div",{className:"flex h-dvh min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,t.jsx)(P.WorkspaceSidebar,{threads:w,participants:q,activeThreadId:G,isLoading:N,isRestoringActiveThread:T,isCreating:C,deletingThreadId:S,renamingThreadId:A,onSelectThread:e=>h.push(`/projects/${d}/thread/${encodeURIComponent(e)}`),onCreateThread:O,onRenameThread:F,onDeleteThread:z,visible:H,onToggle:ee,width:V,onWidthChange:et,projects:x,onCreateProject:v,onUpdateProject:g,onDeleteProject:j,onAddAgentToProject:y,onRemoveAgentFromProject:k,activeProjectId:Z.id,activeProjectView:X,stageShow:Q,trackerConnections:Y,onUpdateParticipant:async e=>{let t=await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error("Failed to update agent");let r=await t.json();U(e=>e.map(e=>e.id===r.id?r:e))},onSelectProject:e=>{let t=x.find(t=>t.id===e);t&&h.push(`/projects/${t.slug}`)}}),(0,t.jsxs)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden",children:[(0,t.jsxs)("div",{className:"desktop-titlebar flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0 flex-shrink-0",children:[!H&&(0,t.jsx)("button",{type:"button",onClick:ee,className:"inline-flex h-9 w-9 items-center justify-center rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",title:"Show sidebar","aria-label":"Show sidebar",children:(0,t.jsx)(n.PanelLeftOpen,{className:"h-4 w-4"})}),m!==`/projects/${d}`&&(0,t.jsx)("button",{type:"button",onClick:()=>h.back(),className:"p-1 -ml-1 rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors",children:(0,t.jsx)(s.ArrowLeft,{className:"w-4 h-4"})}),(0,t.jsx)("button",{type:"button",onClick:()=>h.push(`/projects/${d}`),className:`text-xs transition-colors ${"home"===X?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:Z.name}),"home"!==X&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,t.jsx)("button",{type:"button",onClick:()=>h.push(`/projects/${d}/${"thread"===X?"":X}`),className:"text-xs text-[var(--foreground)] hover:text-[var(--muted-foreground)] transition-colors",children:{objectives:"Objectives",teams:"Teams",folders:"Folders","env-vars":"Environment Variables",notifications:"Notifications",linear:"Tasks",automations:"Scheduled Jobs",thread:"Chat",terminal:"Terminal"}[X]??X}),(0,t.jsx)("span",{id:"topbar-breadcrumb",className:"contents"})]})]}),(0,t.jsx)("div",{className:"flex-1 flex justify-center min-w-0 px-4",children:(0,t.jsx)(M,{projectId:Z.id})}),(0,t.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,t.jsx)(i.StatusIndicator,{}),(0,t.jsx)(b,{projectId:Z.id,participants:q}),(0,t.jsx)("button",{type:"button",onClick:()=>K(e=>"dark"===e?"light":"dark"),"aria-label":"dark"===J?"Switch to light theme":"Switch to dark theme",title:"dark"===J?"Switch to light theme":"Switch to dark theme",className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${u?"h-9 w-9":"h-7 w-7"}`,children:"dark"===J?(0,t.jsx)(l.Sun,{className:u?"h-4 w-4":"h-3.5 w-3.5"}):(0,t.jsx)(o.Moon,{className:u?"h-4 w-4":"h-3.5 w-3.5"})})]})]}),e]})]}):(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,t.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,t.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",d,"” does not exist or you do not have access to it."]}),(0,t.jsx)("button",{onClick:()=>h.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]})}function F({children:e,params:a}){return(0,t.jsx)(r.Suspense,{fallback:(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading project…"}),children:(0,t.jsx)(O,{params:a,children:e})})}e.s(["default",()=>F],563975)}]);