elanous 0.2.6 → 0.2.7

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 (450) hide show
  1. package/.env.example +10 -7
  2. package/README.md +4 -0
  3. package/apps/pwa/out/404/index.html +1 -1
  4. package/apps/pwa/out/404.html +1 -1
  5. package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1201-09613bce624467c0.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/{3995-bee512a7063036ce.js → 2375-cb6debea56cce4fb.js} +1 -1
  12. package/apps/pwa/out/_next/static/chunks/2415.ed6428ff334c7ce2.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/2929-617f1e66a55be184.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +25 -0
  16. package/apps/pwa/out/_next/static/chunks/{8d0d9faf-97887ff99713b84e.js → 2ea96958-e8c7e112de50b067.js} +1 -1
  17. package/apps/pwa/out/_next/static/chunks/{5329.8b7e4bca684b6eec.js → 3403.4bc97b4066945a94.js} +2 -2
  18. package/apps/pwa/out/_next/static/chunks/3441-a1dd4acfeda14488.js +1 -0
  19. package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/{7633.0654fe6ea259c1ee.js → 4323.c5dfb6f503304775.js} +1 -1
  22. package/apps/pwa/out/_next/static/chunks/4836-2eba6079f31b88d4.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/{2984-977cfa339fcd65a5.js → 5080-1613752891fcadb4.js} +3 -3
  24. package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/{763-7d0e1913b5074e98.js → 5791-bb82743fa6299562.js} +1 -1
  26. package/apps/pwa/out/_next/static/chunks/{4240-7153881b0b377306.js → 6062-73e68343a9814f6a.js} +1 -1
  27. package/apps/pwa/out/_next/static/chunks/6090-85a3f05f954e5697.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/6284-69db415193d5f8bd.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/6416-505ba707cacafbba.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/{91ff6dda-3b33d42d20657429.js → 8046cadf-211ca3c0e00f2b72.js} +1 -1
  37. package/apps/pwa/out/_next/static/chunks/8067-f74bf14d67ad98f1.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/8519-f6b5d8a5833a7603.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8894-e92491a164192cc1.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/9454-a3e0953307216c58.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +1 -0
  45. package/apps/pwa/out/_next/static/chunks/9740-67051141115ce775.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/9804-64c02c3c127d5014.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +1 -0
  48. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/app/approvals/page-d5ebde04844689e6.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-10ed24f413ed66e9.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/app/board/page-211810b6c93ab66a.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/app/botlab/page-624f7a2f89b60c8f.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/app/bots/page-5a5fb385a4df0ffe.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/chat/page-80497e93a878ddc5.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/consult/page-7457f52683562161.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/app/control/page-cee86394de407aa6.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/design-check/page-4ff8edab44196b8c.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/editor/page-92e4f44428d5e290.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/exec/page-b7dcf5d48a854b76.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/field/page-51480757e7d68b92.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/intake/page-2a05dfe80c8bdf16.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/layout-d9979633aa82f8e6.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/live/page-30533117beb53625.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/market/page-f7857826c2f97ad7.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-07267f1391b96aba.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/morning/page-55d50e9b0006a91d.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/not-found-9699b1786be6171d.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/observatory/page-43dd772aee8af75f.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/page-a7e37af7d0399cb8.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/reflection/page-973ab7af59c718b7.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-a9f8d3865b91e436.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/sessions/page-15e5a15db84c56aa.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-a2e572e4511f2a16.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/settings/page-dd107bf1c7d52a90.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-d42b99cdfb9f27c6.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/setup/page-2764ff40dad5a995.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/share/page-c5f1152db116ff96.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/showroom/page-f933bca81ea38a6f.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/tasks/page-c1c95739c0bff3b8.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/term/page-a7aaffcf771662d8.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/trace/page-71d18eec33b9c667.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/vault/page-56adbe1a1f1379bd.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-2c4e59079ee357ac.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/app/workflows/page-a81f113f3ef89d72.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/app/workspace/page-5d422f38c052967e.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-fc27b00e20733146.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/main-app-6870f30ea99f8346.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/{webpack-37b8bf78a3c6eec5.js → webpack-e5bea36f183b25e6.js} +1 -1
  95. package/apps/pwa/out/_next/static/css/f537bdb19c69306a.css +1 -0
  96. package/apps/pwa/out/_next/static/keajW7DDyghEs1y8oJe6T/_buildManifest.js +1 -0
  97. package/apps/pwa/out/approvals/index.html +1 -1
  98. package/apps/pwa/out/approvals/index.txt +22 -22
  99. package/apps/pwa/out/autopilot/index.html +1 -1
  100. package/apps/pwa/out/autopilot/index.txt +22 -22
  101. package/apps/pwa/out/board/index.html +1 -1
  102. package/apps/pwa/out/board/index.txt +22 -22
  103. package/apps/pwa/out/botlab/index.html +1 -1
  104. package/apps/pwa/out/botlab/index.txt +21 -21
  105. package/apps/pwa/out/bots/index.html +1 -1
  106. package/apps/pwa/out/bots/index.txt +21 -21
  107. package/apps/pwa/out/chat/index.html +1 -1
  108. package/apps/pwa/out/chat/index.txt +21 -21
  109. package/apps/pwa/out/consult/index.html +1 -0
  110. package/apps/pwa/out/consult/index.txt +32 -0
  111. package/apps/pwa/out/control/index.html +1 -1
  112. package/apps/pwa/out/control/index.txt +22 -22
  113. package/apps/pwa/out/design-check/index.html +1 -1
  114. package/apps/pwa/out/design-check/index.txt +22 -22
  115. package/apps/pwa/out/editor/index.html +1 -1
  116. package/apps/pwa/out/editor/index.txt +22 -22
  117. package/apps/pwa/out/exec/index.html +1 -0
  118. package/apps/pwa/out/exec/index.txt +32 -0
  119. package/apps/pwa/out/field/index.html +1 -0
  120. package/apps/pwa/out/field/index.txt +32 -0
  121. package/apps/pwa/out/healthz +1 -1
  122. package/apps/pwa/out/index.html +1 -1
  123. package/apps/pwa/out/index.txt +21 -21
  124. package/apps/pwa/out/intake/index.html +1 -1
  125. package/apps/pwa/out/intake/index.txt +22 -22
  126. package/apps/pwa/out/live/index.html +1 -1
  127. package/apps/pwa/out/live/index.txt +22 -22
  128. package/apps/pwa/out/market/index.html +1 -1
  129. package/apps/pwa/out/market/index.txt +21 -21
  130. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  131. package/apps/pwa/out/missions/placeholder/index.txt +21 -21
  132. package/apps/pwa/out/morning/index.html +1 -1
  133. package/apps/pwa/out/morning/index.txt +22 -22
  134. package/apps/pwa/out/observatory/index.html +1 -1
  135. package/apps/pwa/out/observatory/index.txt +22 -22
  136. package/apps/pwa/out/reflection/index.html +1 -1
  137. package/apps/pwa/out/reflection/index.txt +22 -22
  138. package/apps/pwa/out/scheduler/index.html +1 -1
  139. package/apps/pwa/out/scheduler/index.txt +22 -22
  140. package/apps/pwa/out/sessions/index.html +1 -1
  141. package/apps/pwa/out/sessions/index.txt +21 -21
  142. package/apps/pwa/out/settings/devices/index.html +1 -1
  143. package/apps/pwa/out/settings/devices/index.txt +22 -22
  144. package/apps/pwa/out/settings/index.html +1 -1
  145. package/apps/pwa/out/settings/index.txt +22 -22
  146. package/apps/pwa/out/setup/done/index.html +1 -1
  147. package/apps/pwa/out/setup/done/index.txt +22 -22
  148. package/apps/pwa/out/setup/index.html +1 -1
  149. package/apps/pwa/out/setup/index.txt +22 -22
  150. package/apps/pwa/out/share/index.html +1 -1
  151. package/apps/pwa/out/share/index.txt +22 -22
  152. package/apps/pwa/out/showroom/index.html +1 -1
  153. package/apps/pwa/out/showroom/index.txt +21 -21
  154. package/apps/pwa/out/tasks/index.html +1 -1
  155. package/apps/pwa/out/tasks/index.txt +22 -22
  156. package/apps/pwa/out/term/index.html +1 -1
  157. package/apps/pwa/out/term/index.txt +22 -22
  158. package/apps/pwa/out/trace/index.html +1 -1
  159. package/apps/pwa/out/trace/index.txt +22 -22
  160. package/apps/pwa/out/vault/index.html +1 -1
  161. package/apps/pwa/out/vault/index.txt +22 -22
  162. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  163. package/apps/pwa/out/workflows/chat-ui/index.txt +22 -22
  164. package/apps/pwa/out/workflows/index.html +1 -1
  165. package/apps/pwa/out/workflows/index.txt +22 -22
  166. package/apps/pwa/out/workspace/index.html +1 -1
  167. package/apps/pwa/out/workspace/index.txt +22 -22
  168. package/apps/pwa/out/worktrees/index.html +1 -1
  169. package/apps/pwa/out/worktrees/index.txt +22 -22
  170. package/bin/elanous.cjs +107 -0
  171. package/graphs/field/field-feed.yaml +24 -0
  172. package/graphs/field/recipes.yaml +12 -0
  173. package/graphs/landing/landing-heal.yaml +3 -1
  174. package/graphs/landing/recipes.yaml +3 -0
  175. package/graphs/release/recipes.yaml +10 -0
  176. package/graphs/release/release-loop.yaml +10 -3
  177. package/package.json +5 -5
  178. package/plugins/card-followup/README.md +13 -4
  179. package/plugins/card-followup/graphs/card-followup.yaml +3 -1
  180. package/plugins/card-followup/graphs/recipes.yaml +5 -1
  181. package/plugins/card-followup/graphs/run-step.ts +122 -18
  182. package/plugins/card-followup/graphs/sales-strategy.ts +173 -0
  183. package/plugins/card-followup/plugin.json +1 -1
  184. package/plugins/doc-draft/README.md +13 -0
  185. package/plugins/doc-draft/examples/brief-sample.json +8 -0
  186. package/plugins/doc-draft/graphs/doc-draft.yaml +14 -0
  187. package/plugins/doc-draft/graphs/recipes.yaml +9 -0
  188. package/plugins/doc-draft/graphs/run-step.ts +113 -0
  189. package/plugins/doc-draft/plugin.json +24 -0
  190. package/plugins/geo-check/README.md +3 -1
  191. package/plugins/geo-check/graphs/run-step.ts +24 -3
  192. package/plugins/geo-check/plugin.json +1 -1
  193. package/plugins/job-coach/.codex-plugin/plugin.json +1 -1
  194. package/plugins/job-coach/README.md +1 -1
  195. package/plugins/job-coach/graphs/run-step.ts +2 -2
  196. package/plugins/job-coach/plugin.json +1 -1
  197. package/plugins/job-coach/plugin.ts +1 -1
  198. package/scripts/affinity/endcard.sh +3 -2
  199. package/scripts/affinity/reframe.sh +3 -1
  200. package/scripts/ci-public-export-leak-gate.ts +48 -0
  201. package/scripts/codex-quota-alert.ts +122 -258
  202. package/scripts/coord-tracks.json +4 -4
  203. package/scripts/field-feed/deliver-node.ts +52 -0
  204. package/scripts/field-feed/feed-node.ts +67 -0
  205. package/scripts/field-feed/lib.ts +162 -0
  206. package/scripts/field-feed/reel-node.ts +24 -0
  207. package/scripts/field-feed/start.ts +62 -0
  208. package/scripts/fixtures/vflow-sample.ndjson +6 -0
  209. package/scripts/install.sh +92 -13
  210. package/scripts/landing-heal/clean-checkout.ts +114 -0
  211. package/scripts/landing-heal/run-mission.ts +38 -3
  212. package/scripts/lib/pwa-scenarios/scenarios.ts +2 -1
  213. package/scripts/public-export.ts +8 -4
  214. package/scripts/release-loop/baseline-from-logs.ts +92 -0
  215. package/scripts/release-loop/env-known-failures.ts +31 -0
  216. package/scripts/release-loop/gate-node.ts +81 -19
  217. package/scripts/release-loop/known-issues-node.ts +159 -0
  218. package/scripts/release-loop/npm-publish-node.ts +118 -0
  219. package/scripts/release-loop/ops-upgrade-node.ts +87 -0
  220. package/scripts/release-loop/release-readiness.ts +58 -0
  221. package/scripts/release-loop/unattended-release.ts +93 -0
  222. package/scripts/ux/measure-first-text.ts +102 -0
  223. package/scripts/vflow-collect.ts +20 -7
  224. package/scripts/vflow-search.ts +73 -0
  225. package/scripts/video-free-line-test-walker.ts +36 -0
  226. package/scripts/video-pipeline.ts +2 -2
  227. package/skills/explainer-video/SKILL.md +12 -9
  228. package/skills/explainer-video/engine/build.mjs +1 -1
  229. package/skills/explainer-video/engine/reel.mjs +138 -31
  230. package/skills/explainer-video/engine/reel.sh +2 -1
  231. package/skills/explainer-video/examples/elanous-0.2.5/script.json +1 -1
  232. package/skills/grill-me/SKILL.md +1 -1
  233. package/skills/omni-digest/docs/diagrams/noncode-terminal-promotion-path-2026-08-13.mmd +1 -1
  234. package/src/a2a/server.ts +2 -0
  235. package/src/acp/elanous-aware-peers.ts +30 -0
  236. package/src/acp/server.ts +91 -15
  237. package/src/agent/monad-agent-turn.ts +25 -6
  238. package/src/agent/shared-app-tools.ts +5 -3
  239. package/src/agent-substrate/review-intent.ts +6 -2
  240. package/src/agent-substrate/shard-boundary-intent.ts +70 -0
  241. package/src/auth/github-app-token.ts +4 -1
  242. package/src/autopilot/track-agent-shadow.ts +151 -0
  243. package/src/autopilot/track-agent.ts +23 -3
  244. package/src/boot/acp-server-help.ts +16 -0
  245. package/src/boot/daemon-prompt-turn.ts +31 -10
  246. package/src/boot/daemon-tools/index.ts +7 -1
  247. package/src/budget/codex-credit-pace.ts +84 -0
  248. package/src/budget/codex-credit-plan.ts +154 -0
  249. package/src/budget/codex-reset-credit-state.ts +2 -0
  250. package/src/chat/chat-cli.ts +4 -1
  251. package/src/chat/short-question.ts +40 -0
  252. package/src/cli/agent-cli.ts +24 -15
  253. package/src/cli/ask-bare.ts +42 -0
  254. package/src/cli/cli-user-error.ts +25 -0
  255. package/src/cli/codex-credit-plan-view.ts +25 -0
  256. package/src/cli/dependence-gauge.ts +237 -0
  257. package/src/cli/doctor-cli.ts +5 -0
  258. package/src/cli/doctor-modes.ts +48 -0
  259. package/src/cli/intake-cli.ts +12 -2
  260. package/src/cli/intake-source-cli.ts +58 -0
  261. package/src/cli/machine-cli.ts +23 -0
  262. package/src/cli/msg-cli.ts +137 -0
  263. package/src/cli/plugin-cli.ts +25 -0
  264. package/src/cli/pr-cli.ts +36 -0
  265. package/src/cli/provider-cli.ts +5 -0
  266. package/src/cli/release-cli.ts +42 -1
  267. package/src/cli/release-run-if-ready.ts +48 -0
  268. package/src/cli/setup-cli.ts +27 -6
  269. package/src/cli/setup-recommend.ts +8 -0
  270. package/src/cli/usage-cli.ts +11 -1
  271. package/src/codex/setup.ts +27 -8
  272. package/src/dashboard/index.ts +1 -1
  273. package/src/discord.ts +56 -6
  274. package/src/domains/core-tools.ts +37 -14
  275. package/src/domains/outbound-alert.ts +50 -11
  276. package/src/exec-requests/planner.ts +140 -0
  277. package/src/exec-requests/runner.ts +338 -0
  278. package/src/exec-requests/store.ts +76 -0
  279. package/src/field/field-media.ts +8 -3
  280. package/src/field/field-reel.ts +196 -0
  281. package/src/grok/credential.ts +7 -5
  282. package/src/harness/aside-run-status.ts +33 -0
  283. package/src/harness/browser-verify.ts +48 -17
  284. package/src/harness/harness-cli-command.ts +25 -3
  285. package/src/harness/image-load-state.ts +21 -0
  286. package/src/harness/process-garbage.ts +45 -0
  287. package/src/index.ts +86 -14
  288. package/src/instance/leader.ts +13 -1
  289. package/src/intake-plane/collect-github.ts +5 -3
  290. package/src/intake-plane/collect-telegram-saved.ts +15 -3
  291. package/src/intake-plane/discord-seat-work.ts +56 -0
  292. package/src/intake-plane/intake-sources.ts +202 -0
  293. package/src/intake-plane/items.ts +28 -12
  294. package/src/intake-plane/seat-doc-route.ts +207 -0
  295. package/src/intake-plane/submit-intake-work.ts +9 -1
  296. package/src/intake-plane/telegram-seat-work.ts +72 -0
  297. package/src/llm/model-defaults.ts +24 -1
  298. package/src/llm.ts +5 -4
  299. package/src/machines/machine-ledger.ts +127 -0
  300. package/src/market/pack-internal-refs.ts +28 -0
  301. package/src/market/publish.ts +31 -4
  302. package/src/maturity/feature-maturity.ts +65 -0
  303. package/src/model-tier/turn-tier.ts +24 -0
  304. package/src/msg/msg-store.ts +149 -0
  305. package/src/native-tool-catalog.ts +2 -1
  306. package/src/nexus/api/chat-fast-path-config.ts +28 -0
  307. package/src/nexus/api/consult-requests.ts +117 -0
  308. package/src/nexus/api/discord-trigger-bot.ts +3 -0
  309. package/src/nexus/api/exec-requests.ts +51 -0
  310. package/src/nexus/api/field-uploads.ts +40 -3
  311. package/src/nexus/api/graph-approvals-feed.ts +140 -0
  312. package/src/nexus/api/graph-approvals.ts +71 -4
  313. package/src/nexus/api/http-server.ts +61 -7
  314. package/src/nexus/api/seat-requests.ts +254 -0
  315. package/src/nexus/api/trace-run-scan.ts +37 -0
  316. package/src/nexus/api/trace.ts +19 -3
  317. package/src/nexus/index.ts +3 -0
  318. package/src/nexus/setup-status.ts +4 -5
  319. package/src/notify/llm-budget-alert.ts +16 -10
  320. package/src/oauth/codex-account-rotation.ts +26 -4
  321. package/src/oauth/codex-account-store.ts +20 -2
  322. package/src/oauth/codex-browser-login.ts +173 -0
  323. package/src/oauth/codex.ts +4 -1
  324. package/src/oauth/fallback-chain.ts +5 -5
  325. package/src/oauth/store.ts +42 -5
  326. package/src/onboarding/continue-here.ts +29 -0
  327. package/src/onboarding/entry-hints.ts +8 -0
  328. package/src/onboarding/full-screen-io.ts +35 -3
  329. package/src/onboarding/help/skills.md +1 -1
  330. package/src/onboarding/non-interactive.ts +1 -0
  331. package/src/onboarding/subscription-hint.ts +27 -0
  332. package/src/onboarding/web-first.ts +83 -0
  333. package/src/onboarding.ts +230 -23
  334. package/src/plugins/maker/node-install.ts +92 -0
  335. package/src/plugins/maker/node-maker.ts +139 -0
  336. package/src/plugins/maker/plugin-maker.ts +19 -7
  337. package/src/policy/llm-policy.ts +268 -0
  338. package/src/prompt-library/session-guidance.ts +7 -1
  339. package/src/prompt-library/universal-preamble.ts +2 -2
  340. package/src/relay/relay-cli.ts +20 -0
  341. package/src/relay/relay-server.ts +220 -0
  342. package/src/release-loop/checklist.ts +9 -8
  343. package/src/self-dev/decompose.ts +1 -0
  344. package/src/self-dev/dev-pipeline.ts +6 -3
  345. package/src/self-dev/run-record-mirror.ts +44 -0
  346. package/src/self-dev/run-store.ts +12 -3
  347. package/src/self-implement/harness-policy-gates.ts +4 -1
  348. package/src/self-implement/report-origin.ts +12 -1
  349. package/src/session/chat.ts +17 -5
  350. package/src/skills/shared-agent-skill-roots.ts +25 -0
  351. package/src/steward/failure-streak.ts +78 -0
  352. package/src/steward/steward-cards.ts +24 -0
  353. package/src/steward/triage-budget.ts +127 -0
  354. package/src/steward/triage-plan.ts +75 -0
  355. package/src/steward/triage.ts +244 -42
  356. package/src/task-cards/card-store.ts +1 -1
  357. package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +11 -5
  358. package/src/task-orchestrator/surfaces/pod-ledger-events.ts +68 -0
  359. package/src/task-orchestrator/surfaces/self-implement-pod.ts +78 -4
  360. package/src/telegram.ts +38 -2
  361. package/src/tool-runtime/elanous-skills-list-runtime.ts +3 -3
  362. package/src/tool-runtime/self-cognition-runtimes.ts +160 -2
  363. package/src/user-config.ts +80 -4
  364. package/src/version/packed-revision.json +1 -1
  365. package/src/video-pipeline/recipes/character.ts +42 -5
  366. package/src/video-pipeline/recipes/ffmpeg.ts +1 -1
  367. package/src/video-pipeline/recipes/free-line.ts +16 -3
  368. package/src/video-pipeline/recipes/remote.ts +7 -1
  369. package/src/video-pipeline/vflow-reference.ts +109 -0
  370. package/apps/pwa/out/_next/static/chunks/1169-696263ac7af8c4d4.js +0 -1
  371. package/apps/pwa/out/_next/static/chunks/1883.c91a2648af4842fd.js +0 -1
  372. package/apps/pwa/out/_next/static/chunks/1947-9d64872eeb9cfdec.js +0 -1
  373. package/apps/pwa/out/_next/static/chunks/2808-dc06482994b40f70.js +0 -1
  374. package/apps/pwa/out/_next/static/chunks/3165-95515ca5f299a120.js +0 -1
  375. package/apps/pwa/out/_next/static/chunks/3190-e9282753e7ebde85.js +0 -1
  376. package/apps/pwa/out/_next/static/chunks/4259-99614149577e77cb.js +0 -1
  377. package/apps/pwa/out/_next/static/chunks/4283-329eabeaf233e6cd.js +0 -1
  378. package/apps/pwa/out/_next/static/chunks/4328-cb5058b1acc2de5e.js +0 -25
  379. package/apps/pwa/out/_next/static/chunks/4801-ecee6ef62b349b18.js +0 -1
  380. package/apps/pwa/out/_next/static/chunks/5110-8058791dd25a2e14.js +0 -1
  381. package/apps/pwa/out/_next/static/chunks/5330-c41e9670f594c38f.js +0 -1
  382. package/apps/pwa/out/_next/static/chunks/5423-e95fd125d1794349.js +0 -1
  383. package/apps/pwa/out/_next/static/chunks/5478-b5eae07dc79ea619.js +0 -1
  384. package/apps/pwa/out/_next/static/chunks/5787-96ee6642b9a661e5.js +0 -1
  385. package/apps/pwa/out/_next/static/chunks/6448-79d72368589f98bc.js +0 -1
  386. package/apps/pwa/out/_next/static/chunks/6522-9866c002b5531836.js +0 -1
  387. package/apps/pwa/out/_next/static/chunks/6729-b4a558b7aa891e0c.js +0 -1
  388. package/apps/pwa/out/_next/static/chunks/6969-cb03f9410b7d2e03.js +0 -1
  389. package/apps/pwa/out/_next/static/chunks/7007-3b9861091bb8dd21.js +0 -1
  390. package/apps/pwa/out/_next/static/chunks/7930-8dc7e20fc6fc19ca.js +0 -1
  391. package/apps/pwa/out/_next/static/chunks/8071-187edbc22a86741f.js +0 -1
  392. package/apps/pwa/out/_next/static/chunks/8198-d4101ad70cb9a579.js +0 -1
  393. package/apps/pwa/out/_next/static/chunks/8250.4a2c5553a07cdf47.js +0 -1
  394. package/apps/pwa/out/_next/static/chunks/8293-123b91e7b0330dc0.js +0 -1
  395. package/apps/pwa/out/_next/static/chunks/8296-d6d5d87dfa911d41.js +0 -1
  396. package/apps/pwa/out/_next/static/chunks/8305-603963c33ee8eec3.js +0 -1
  397. package/apps/pwa/out/_next/static/chunks/8612-4a0066f20951b8fd.js +0 -1
  398. package/apps/pwa/out/_next/static/chunks/9181-cf4e1b61c4783f92.js +0 -1
  399. package/apps/pwa/out/_next/static/chunks/9262-26c2ecbd5a67e4a2.js +0 -1
  400. package/apps/pwa/out/_next/static/chunks/9328-45abdebce4fbecb7.js +0 -1
  401. package/apps/pwa/out/_next/static/chunks/9355-dbc67205adf8745f.js +0 -1
  402. package/apps/pwa/out/_next/static/chunks/9763.255b90dd69875689.js +0 -1
  403. package/apps/pwa/out/_next/static/chunks/9933-66d31ec25c0231af.js +0 -1
  404. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-bd06fb55f4da0381.js +0 -1
  405. package/apps/pwa/out/_next/static/chunks/app/approvals/page-4e586142da455a25.js +0 -1
  406. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-889ad5cddcf45b0d.js +0 -1
  407. package/apps/pwa/out/_next/static/chunks/app/board/page-47ba401d56572c27.js +0 -1
  408. package/apps/pwa/out/_next/static/chunks/app/botlab/page-0b54f9c83458e038.js +0 -1
  409. package/apps/pwa/out/_next/static/chunks/app/bots/page-4fcc296ef6c8ed90.js +0 -1
  410. package/apps/pwa/out/_next/static/chunks/app/chat/page-fe9fda494a87f4e5.js +0 -1
  411. package/apps/pwa/out/_next/static/chunks/app/control/page-f9642e25ce129590.js +0 -1
  412. package/apps/pwa/out/_next/static/chunks/app/design-check/page-e1063e8ba5f3e2e7.js +0 -1
  413. package/apps/pwa/out/_next/static/chunks/app/editor/page-9d0df30027d8aa9d.js +0 -1
  414. package/apps/pwa/out/_next/static/chunks/app/healthz/route-bd06fb55f4da0381.js +0 -1
  415. package/apps/pwa/out/_next/static/chunks/app/intake/page-d97adf2c9455b8d0.js +0 -1
  416. package/apps/pwa/out/_next/static/chunks/app/layout-236b80d202110362.js +0 -1
  417. package/apps/pwa/out/_next/static/chunks/app/live/page-21a30f35f1a276ad.js +0 -1
  418. package/apps/pwa/out/_next/static/chunks/app/market/page-b1a5be357c4fa25d.js +0 -1
  419. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-1705a60303f7f573.js +0 -1
  420. package/apps/pwa/out/_next/static/chunks/app/morning/page-76b337c11ad0e237.js +0 -1
  421. package/apps/pwa/out/_next/static/chunks/app/not-found-7c0f85fbb56f64c6.js +0 -1
  422. package/apps/pwa/out/_next/static/chunks/app/observatory/page-65ca16b20617b44d.js +0 -1
  423. package/apps/pwa/out/_next/static/chunks/app/page-e7f9b8fc29411c1d.js +0 -1
  424. package/apps/pwa/out/_next/static/chunks/app/reflection/page-92ea6213d1aeec04.js +0 -1
  425. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-a913a005aacb5476.js +0 -1
  426. package/apps/pwa/out/_next/static/chunks/app/sessions/page-2d78804a40dfdef6.js +0 -1
  427. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-08a99148e780ac00.js +0 -1
  428. package/apps/pwa/out/_next/static/chunks/app/settings/page-deb674e7ed36f815.js +0 -1
  429. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-49f8de0534d192d7.js +0 -1
  430. package/apps/pwa/out/_next/static/chunks/app/setup/layout-bd06fb55f4da0381.js +0 -1
  431. package/apps/pwa/out/_next/static/chunks/app/setup/page-ba162a28d2176e18.js +0 -1
  432. package/apps/pwa/out/_next/static/chunks/app/share/page-1ff1a37b550ab41a.js +0 -1
  433. package/apps/pwa/out/_next/static/chunks/app/showroom/page-ccaa698f56c0fbdb.js +0 -1
  434. package/apps/pwa/out/_next/static/chunks/app/tasks/page-53b944082de1d7db.js +0 -1
  435. package/apps/pwa/out/_next/static/chunks/app/term/page-9b70adf1552789bf.js +0 -1
  436. package/apps/pwa/out/_next/static/chunks/app/trace/page-30d482aa63241fe8.js +0 -1
  437. package/apps/pwa/out/_next/static/chunks/app/vault/page-aecf786f54651d8a.js +0 -1
  438. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-6ab9b62c7b6e08f2.js +0 -1
  439. package/apps/pwa/out/_next/static/chunks/app/workflows/page-08949735455e0c9a.js +0 -1
  440. package/apps/pwa/out/_next/static/chunks/app/workspace/page-a1479005234a46c2.js +0 -1
  441. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-c3890e90bd232732.js +0 -1
  442. package/apps/pwa/out/_next/static/chunks/beb5cf10-9adcc10b83930090.js +0 -1
  443. package/apps/pwa/out/_next/static/chunks/framework-d68d41c88e05c801.js +0 -1
  444. package/apps/pwa/out/_next/static/chunks/main-app-11c63971b7a9593b.js +0 -1
  445. package/apps/pwa/out/_next/static/chunks/main-d09452353bd0d9cc.js +0 -1
  446. package/apps/pwa/out/_next/static/chunks/pages/_app-184d727cebeca767.js +0 -1
  447. package/apps/pwa/out/_next/static/chunks/pages/_error-21bbbbac99b720b1.js +0 -1
  448. package/apps/pwa/out/_next/static/css/eaa74e8bb2f62269.css +0 -1
  449. package/apps/pwa/out/_next/static/qMI0jnlZaBjjm4aIDYNGM/_buildManifest.js +0 -1
  450. /package/apps/pwa/out/_next/static/{qMI0jnlZaBjjm4aIDYNGM → keajW7DDyghEs1y8oJe6T}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4283],{4866:(e,t,s)=>{function n(e){let t=e.filter(e=>"cron"===e.kind&&e.id).map(e=>e.id);return t.length?"/scheduler?ids=".concat(t.map(encodeURIComponent).join(",")):null}s.d(t,{NE:()=>d,Yt:()=>i,on:()=>n});let a=["task","goal-loop","single-shot"],r=["scheduler","monitor-trigger"];function l(e){var t,s,n,l,i,d,o;let c=e.autopilot,u=null!=(t=null==c?void 0:c.executionModel)?t:null;return{id:e.id,goal:e.title||e.description||e.id,source:null!=(s=null==c?void 0:c.origin)?s:"human",status:null!=(n=null==c?void 0:c.apmStatus)?n:e.status,model:u,tier:null!=(l=null==c?void 0:c.tier)?l:null,engine:null!=(i=null==c?void 0:c.engine)?i:null,kind:(o=null!=(d=null==c?void 0:c.executionModel)?d:null)&&a.includes(o)?"finite":o&&r.includes(o)?"continuous":"other",reviewDue:!1,createdAt:new Date(e.createdAt).toISOString(),isAutopilot:null!=c,toxStatus:e.status,taskCount:e.taskCount,taskCounts:e.taskStatusCounts}}class i{async triagePreview(e,t){return this.client.fetchJson("/v1/autopilot/triage-preview",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({goal:e,...t?{category:t}:{}})})}async commitMission(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"intake",s=arguments.length>2?arguments[2]:void 0;return this.client.fetchJson("/v1/autopilot/triage-preview",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({goal:e,commit:!0,source:t,...s?{category:s}:{}})})}async missions(e,t){let s=new URLSearchParams({...e?{status:e}:{},...t?{source:t}:{}}).toString();return this.client.fetchJson("/v1/autopilot/missions".concat(s?"?".concat(s):""))}async missionsUnified(e){var t,s;let n=new URLSearchParams({...e?{status:e}:{}}).toString(),a=await this.client.fetchJson("/v1/missions".concat(n?"?".concat(n):"")),r=null!=(t=a.missions)?t:[];return{ok:!0,total:null!=(s=a.total)?s:r.length,missions:r.map(l)}}async trace(e){return this.client.fetchJson("/v1/autopilot/trace?id=".concat(encodeURIComponent(e)))}async missionArcMap(){var e,t,s;let n=await this.client.fetchJson("/v1/missions"),a=new Map;for(let r of null!=(e=n.missions)?e:[]){let e=null==(t=r.autopilot)?void 0:t.arcs;e&&e.length>0&&a.set(r.id,{apmStatus:null==(s=r.autopilot)?void 0:s.apmStatus,arcs:e})}return a}async missionAction(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.client.fetchJson("/v1/autopilot/mission-action",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:e,action:t,...s})})}async repoWatch(){return this.client.fetchJson("/v1/autopilot/repo-watch")}async autonomy(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50,t=arguments.length>1?arguments[1]:void 0,s=new URLSearchParams({limit:String(e),...t?{loop:t}:{}});return this.client.fetchJson("/v1/autopilot/autonomy?".concat(s.toString()))}async arming(){return this.client.fetchJson("/v1/autopilot/arming")}constructor(e){this.client=e}}let d={task:{label:"작업 분해",tone:"bg-sky-500/15 text-sky-200 ring-sky-500/30"},"goal-loop":{label:"목표 루프",tone:"bg-violet-500/15 text-violet-200 ring-violet-500/30"},scheduler:{label:"스케줄러",tone:"bg-emerald-500/15 text-emerald-200 ring-emerald-500/30"},"monitor-trigger":{label:"감시 트리거",tone:"bg-amber-500/15 text-amber-200 ring-amber-500/30"},hybrid:{label:"하이브리드",tone:"bg-fuchsia-500/15 text-fuchsia-200 ring-fuchsia-500/30"},fanout:{label:"병렬 팬아웃",tone:"bg-cyan-500/15 text-cyan-200 ring-cyan-500/30"},"single-shot":{label:"즉답",tone:"bg-muted text-muted-foreground ring-border"},"hitl-delegate":{label:"HITL 위임",tone:"bg-rose-500/15 text-rose-200 ring-rose-500/30"}}},64283:(e,t,s)=>{s.d(t,{B:()=>T});var n=s(35563),a=s(19707),r=s(45787),l=s(7090);class i{buildSnapshot(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:80;return this.client.fetchJson("/v1/builds/".concat(encodeURIComponent(e),"?tail=").concat(t))}list(){return this.client.fetchJson("/v1/tasks")}detail(e){return this.client.fetchJson("/v1/tasks/".concat(encodeURIComponent(e)))}constructor(e){this.client=e}}var d=s(4866),o=s(53403),c=s(84240),u=s(5031);class m extends Error{constructor(e,t,s){super("fluent-chain ".concat(e," on ").concat(t)),this.status=e,this.path=t,this.body=s,this.name="FluentChainApiError"}}function x(e){var t;let s=e.baseUrl.replace(/\/+$/,""),n=null!=(t=e.fetchImpl)?t:fetch,a="/v1/next-fluent/preview";return{async preview(t){let r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader);let l=await n("".concat(s).concat(a),{method:"POST",headers:r,body:JSON.stringify(t)});if(204===l.status)return{kind:"no-suggestions",enabled:!0};let i=await l.json().catch(()=>null);if(409===l.status){let e=!!i&&"object"==typeof i&&"enabled"in i&&!!i.enabled;return e?{kind:"no-suggestions",enabled:e}:{kind:"disabled"}}if(503===l.status&&i&&"object"==typeof i&&"next-fluent-not-wired"===i.error)return{kind:"disabled"};if(!l.ok||!(null==i?void 0:i.card))throw new m(l.status,a,i);return{kind:"card",card:i.card}},async dispatch(t,a){let r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader);let l=u.m,i=await n("".concat(s).concat(l),{method:"POST",headers:r,body:JSON.stringify({refId:t,action:a})}),d=await i.json().catch(()=>null);return d&&"object"==typeof d&&"ok"in d?d:{ok:!1,error:"dispatch ".concat(i.status)}}}}function p(e){var t;let[s,r]=(0,a.useState)({kind:"loading"});if((0,a.useEffect)(()=>{var t;let s=!1;return(null!=(t=e.api)?t:x({baseUrl:window.location.origin})).preview(e.trigger).then(e=>{s||("card"===e.kind?r({kind:"card",card:e.card}):"no-suggestions"===e.kind?r({kind:"empty"}):r({kind:"disabled"}))}).catch(e=>{s||r({kind:"error",message:e instanceof Error?e.message:String(e)})}),()=>{s=!0}},[e.api,e.trigger.refId,e.trigger.refKind,e.trigger.outcome,e.trigger.completedAt]),"loading"===s.kind)return(0,n.jsx)("span",{className:"text-xs opacity-60",children:"checking next-action…"});if("disabled"===s.kind||"empty"===s.kind)return null;if("error"===s.kind)return(0,n.jsxs)("span",{className:"text-xs text-rose-700",children:["next-action: ",s.message]});let l=null!=(t=e.limit)?t:3,i=s.card.suggestions.slice(0,l);return 0===i.length?null:(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-1 text-xs","data-fluent-ref":e.trigger.refId,children:[(0,n.jsx)("span",{className:"opacity-60",children:"next:"}),i.map(t=>(0,n.jsxs)("button",{type:"button",className:"rounded-full border border-zinc-300 bg-white px-2 py-0.5 hover:bg-zinc-50",onClick:()=>{var s;return null==(s=e.onChoose)?void 0:s.call(e,t.kind,t)},title:t.reason||t.kind,children:[t.kind,"none"!==t.endorsedBy&&(0,n.jsxs)("span",{className:"ml-1 text-[10px] opacity-60",children:["\xb7 ",t.endorsedBy]})]},t.kind))]})}class h extends Error{constructor(e,t,s){super("idle-nudge ".concat(e," on ").concat(t)),this.status=e,this.path=t,this.body=s,this.name="IdleNudgeApiError"}}function g(e){let[t,s]=(0,a.useState)({kind:"loading"});if((0,a.useEffect)(()=>{var t;let n=!1;return(null!=(t=e.api)?t:function(e){var t;let s=e.baseUrl.replace(/\/+$/,""),n=null!=(t=e.fetchImpl)?t:fetch,a=u.J3;return{async preview(t){let r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader);let l=await n("".concat(s).concat(a),{method:"POST",headers:r,body:JSON.stringify(t)}),i=await l.json().catch(()=>null);if(!l.ok)throw new h(l.status,a,i);return i}}}({baseUrl:window.location.origin})).preview(e.request).then(e=>{n||("nudge"===e.decision.kind&&e.record?s({kind:"nudge",decision:e.decision,record:e.record}):"defer"===e.decision.kind?s({kind:"defer",nextAt:e.decision.nextEligibleAt}):s({kind:"idle"}))}).catch(e=>{n||s({kind:"error",message:e instanceof h?"Idle-nudge error (".concat(e.status,")"):e instanceof Error?e.message:String(e)})}),()=>{n=!0}},[e.api,e.request.taskId,e.request.observedAt,e.request.status,e.request.enteredStatusAt]),"loading"===t.kind||"idle"===t.kind)return null;if("defer"===t.kind)return(0,n.jsxs)("span",{className:"text-[10px] opacity-60",children:["nudge deferred until ",new Date(t.nextAt).toLocaleTimeString()]});if("error"===t.kind)return(0,n.jsx)("span",{className:"text-[10px] text-rose-700",children:t.message});let r=Math.round(t.decision.idleMs/36e5);return(0,n.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-full border border-amber-300 bg-amber-50 px-2 py-0.5 text-[11px] text-amber-900 hover:bg-amber-100",onClick:()=>{var s;return null==(s=e.onOpenShowroom)?void 0:s.call(e,t.record.showroomSessionId)},title:"Idle ".concat(r,"h \xb7 click to open nudge room"),"data-task-id":t.record.taskId,children:[(0,n.jsx)("span",{"aria-hidden":!0,children:"⏳"}),"idle ",r,"h \xb7 ",t.record.lanes.length," lanes"]})}var f=s(92772);let b=(0,a.createContext)(null),v=new Set(["ready","running","review","blocked"]),y=new Set(["done","failed"]),k=[{id:"backlog",label:"Backlog",statuses:["backlog","blocked"]},{id:"scheduled",label:"Scheduled",statuses:["scheduled"]},{id:"ready",label:"Ready",statuses:["ready"]},{id:"running",label:"Running",statuses:["running"]},{id:"review",label:"Review",statuses:["review"]},{id:"closed",label:"Closed",statuses:["done","failed","cancelled","superseded"]}],j={urgent:"bg-red-500/15 text-red-300 ring-red-500/30",high:"bg-amber-500/15 text-amber-200 ring-amber-500/30",medium:"bg-sky-500/15 text-sky-200 ring-sky-500/30",low:"bg-muted text-muted-foreground ring-border"},N={pending:"bg-slate-500/15 text-slate-300 ring-slate-500/30",active:"bg-sky-500/15 text-sky-200 ring-sky-500/30",verifying:"bg-amber-500/15 text-amber-200 ring-amber-500/30",done:"bg-emerald-500/15 text-emerald-300 ring-emerald-500/30",failed:"bg-red-500/15 text-red-300 ring-red-500/30"};function w(e){let t=Math.max(0,Math.floor((Date.now()-e)/1e3));if(t<60)return"".concat(t,"s ago");let s=Math.floor(t/60);if(s<60)return"".concat(s,"m ago");let n=Math.floor(s/60);return n<24?"".concat(n,"h ago"):"".concat(Math.floor(n/24),"d ago")}let S={running:0,review:1,ready:2,blocked:3,backlog:4,done:5,failed:5,cancelled:6,superseded:6,scheduled:3};function C(e){var t;let{group:s,selectedId:r,onSelect:l,arcDetail:i}=e,d=s.total>0?Math.round(s.doneCount/s.total*100):0,[o,c]=(0,a.useState)(!1),u=(null!=(t=null==i?void 0:i.length)?t:0)>0;return(0,n.jsxs)("section",{className:"rounded-2xl border border-border bg-muted/20 p-3",children:[(0,n.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-2",children:[!s.isStandalone&&(0,n.jsx)("span",{className:"text-xs",children:"\uD83C\uDFAF"}),u&&(0,n.jsx)("button",{type:"button",onClick:()=>c(e=>!e),className:"text-xs text-muted-foreground hover:text-foreground",title:"아크 상세",children:o?"▾":"▸"}),(0,n.jsx)("h2",{className:"text-sm font-semibold",title:s.missionTitle,children:s.missionTitle}),(0,n.jsxs)("span",{className:"rounded-full bg-background px-2 py-0.5 text-[11px] text-muted-foreground",children:[s.doneCount,"/",s.total," \xb7 ",d,"%"]}),s.runningCount>0&&(0,n.jsxs)("span",{className:"animate-pulse rounded-full bg-sky-500/15 px-2 py-0.5 text-[10px] text-sky-200 ring-1 ring-sky-500/30",children:["● ",s.runningCount," 빌드중"]}),s.failedCount>0&&(0,n.jsxs)("span",{className:"rounded-full bg-red-500/15 px-2 py-0.5 text-[10px] text-red-300 ring-1 ring-red-500/30",children:["✗ ",s.failedCount," 실패"]})]}),s.arcs.length>0&&(0,n.jsx)("div",{className:"mb-2 flex flex-wrap gap-1.5",children:s.arcs.map((e,t)=>{var s;return(0,n.jsxs)("span",{className:"flex items-center gap-1 text-[10px]",children:[t>0&&(0,n.jsx)("span",{className:"text-muted-foreground",children:"→"}),(0,n.jsxs)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat(null!=(s=N[e.status])?s:N.pending),children:["⬡ ",e.name," ",e.done,"/",e.total]})]},e.name)})}),o&&u&&(0,n.jsx)("div",{className:"mb-3 space-y-1.5 rounded-xl border border-border bg-background/40 p-2",children:i.map((e,t)=>{var s,a,r,l;let i="failed"===e.status||(null==(s=e.verifyResult)?void 0:s.ok)===!1;return(0,n.jsxs)("div",{className:"text-[11px]",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:["아크 ",t+1]}),(0,n.jsxs)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat(null!=(l=N[e.status])?l:N.pending),children:["⬡ ",e.name," \xb7 ",e.status]}),e.dependsOnArcs.length>0&&(0,n.jsxs)("span",{className:"text-muted-foreground",children:["← 선행 ",e.dependsOnArcs.length]})]}),(0,n.jsx)("div",{className:"mt-0.5 pl-1 text-muted-foreground",children:e.intent}),i&&(null==(a=e.verifyResult)?void 0:a.missing)&&(0,n.jsxs)("div",{className:"mt-0.5 rounded-md bg-red-500/10 px-2 py-1 text-red-300",children:["\uD83D\uDD12 아크 통합검증 실패: ",e.verifyResult.missing,(0,n.jsx)("div",{className:"text-red-400/70",children:"→ arc-revise 초안 카드가 발송됩니다(페이즈는 완료돼도 아크로는 미충족)."})]}),(null==(r=e.verifyResult)?void 0:r.ok)&&(0,n.jsxs)("div",{className:"mt-0.5 pl-1 text-emerald-400/70",children:["✓ 통합검증 통과: ",e.verifyResult.evidence.slice(0,80)]}),e.preflightVerdict&&"founded"!==e.preflightVerdict.verdict&&(0,n.jsxs)("div",{className:"mt-0.5 rounded-md bg-amber-500/10 px-2 py-1 text-amber-300",children:["⚠️ pre-flight: ","mirage"===e.preflightVerdict.verdict?"허상 의심":"과대 범위"," → ",e.preflightVerdict.action,(0,n.jsx)("div",{className:"text-amber-400/70",children:e.preflightVerdict.reason.slice(0,120)})]})]},e.arcId)})}),(0,n.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-3",children:s.tasks.map(e=>(0,n.jsx)(A,{task:e,selected:e.id===r,onClick:()=>l(e.id)},e.id))})]})}function I(e){var t;let{api:s,buildId:r}=e,[l,i]=(0,a.useState)(null),[d,o]=(0,a.useState)(null),c=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let e,t=!1,n=async()=>{try{let a=await s.buildSnapshot(r,120);if(t)return;i(a),o(null),"running"===a.build.status&&(e=window.setTimeout(()=>void n(),2e3))}catch(e){t||o(e instanceof Error?e.message:String(e))}};return n(),()=>{t=!0,e&&window.clearTimeout(e)}},[s,r]),(0,a.useEffect)(()=>{c.current&&(c.current.scrollTop=c.current.scrollHeight)},[l]),(0,n.jsxs)("div",{className:"space-y-1.5",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 text-[11px]",children:[(0,n.jsx)("span",{className:"font-medium",children:"빌드 로그"}),(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground",children:r}),l&&(0,n.jsx)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat("running"===l.build.status?"bg-sky-500/15 text-sky-200 ring-sky-500/30":"bg-muted text-muted-foreground ring-border"),children:"running"===l.build.status?"● 라이브":l.build.status}),(null==l?void 0:l.diffStat)&&(0,n.jsxs)("span",{className:"text-muted-foreground",children:["+",l.diffStat.insertions,"/-",l.diffStat.deletions," \xb7 ",l.diffStat.files,"파일"]})]}),d&&(0,n.jsxs)("div",{className:"text-[11px] text-red-300",children:["로그 조회 실패: ",d]}),(0,n.jsx)("div",{ref:c,className:"max-h-64 overflow-auto rounded-lg border border-border bg-background/60 p-2 font-mono text-[10px] leading-relaxed text-muted-foreground",children:(null==l||null==(t=l.logTail)?void 0:t.length)?l.logTail.map((e,t)=>(0,n.jsx)("div",{className:"whitespace-pre-wrap break-all",children:e},t)):(0,n.jsx)("div",{className:"opacity-60",children:"로그 대기 중…"})})]})}function A(e){var t,s,a;let{task:r,selected:l,onClick:i}=e;return(0,n.jsxs)("button",{type:"button",onClick:i,className:["w-full rounded-xl border p-3 text-left transition-colors",l?"border-primary bg-primary/10 ring-1 ring-primary/40":"border-border bg-card hover:bg-accent/40"].join(" "),children:[(0,n.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,n.jsxs)("div",{className:"min-w-0",children:[r.missionTitle&&(0,n.jsxs)("div",{className:"mb-1 flex items-center gap-1 truncate text-[10px] text-indigo-300",title:r.missionTitle,children:[(0,n.jsx)("span",{className:"shrink-0",children:"\uD83C\uDFAF 미션"}),(0,n.jsx)("span",{className:"truncate opacity-80",children:r.missionTitle})]}),(0,n.jsx)("div",{className:"text-sm font-medium leading-5",children:r.title}),(0,n.jsx)("div",{className:"mt-1 text-[11px] text-muted-foreground",children:r.id})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[r.dryRun&&(0,n.jsx)("span",{className:"rounded-full bg-emerald-500/15 px-2 py-0.5 text-[10px] text-emerald-300",children:"dry run"}),(0,n.jsx)("span",{className:"rounded-full px-2 py-0.5 text-[10px] ring-1 ".concat(null!=(t=j[r.priority])?t:j.low),children:r.priority})]})]}),(0,n.jsxs)("div",{className:"mt-3 flex flex-wrap gap-1.5 text-[11px] text-muted-foreground",children:[(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5",children:r.surfaceKind}),"running"===r.status&&r.build&&(0,n.jsxs)("span",{className:"flex items-center gap-1 rounded-full bg-sky-500/15 px-2 py-0.5 text-sky-200 ring-1 ring-sky-500/30",title:"빌드 ".concat(r.build.buildId," \xb7 ").concat(r.build.backend).concat(r.build.maxTurns?" \xb7 ".concat(r.build.maxTurns,"턴"):""),children:[(0,n.jsx)("span",{className:"animate-pulse",children:"●"})," 빌드중 ",r.build.backend.replace(/^elanous-self:/,"")," 시도",r.build.attemptSeq]}),r.arcName&&(0,n.jsxs)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat(null!=(a=N[null!=(s=r.arcStatus)?s:"pending"])?a:N.pending),title:"아크: ".concat(r.arcName).concat(r.arcStatus?" \xb7 ".concat(r.arcStatus):""),children:["⬡ ",r.arcName,r.phaseIndexInArc&&r.arcTotalPhases?" \xb7 ".concat(r.phaseIndexInArc,"/").concat(r.arcTotalPhases):""]}),r.featureName&&(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5",children:r.featureName}),r.scheduleText&&(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5",children:r.scheduleText}),r.showroomSessionId&&(0,n.jsx)("a",{href:"/showroom?session=".concat(encodeURIComponent(r.showroomSessionId)),onClick:e=>e.stopPropagation(),className:"rounded-full bg-sky-500/15 px-2 py-0.5 text-sky-200 ring-1 ring-sky-500/30 hover:bg-sky-500/25",title:"Open showroom session ".concat(r.showroomSessionId),children:"↗ showroom"})]}),(0,n.jsxs)("div",{className:"mt-3 flex items-center justify-between text-[11px] text-muted-foreground",children:[(0,n.jsxs)("span",{children:["attempt ",r.attempt,"/",r.maxRetries]}),(0,n.jsx)("span",{children:w(r.updatedAt)})]}),(0,n.jsx)(M,{task:r})]})}function M(e){let{task:t}=e,s=y.has(t.status),r=v.has(t.status),l=(0,a.useContext)(b);return s||r?(0,n.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-2",onClick:e=>e.stopPropagation(),children:[s&&(0,n.jsx)(p,{trigger:{refId:t.id,refKind:"task",finishedSurface:function(e){switch(e){case"terminal-pane":case"vw-slot":case"subagent":case"skill":case"chat-prompt":case"cron":case"llm-direct":case"acx-session":case"showroom":return e;default:return null}}(t.surfaceKind),outcome:"done"===t.status?"ok":"failed",completedAt:t.updatedAt,...t.featureName?{tags:[t.featureName]}:{}},...l?{onChoose:e=>{l(t.id,e)}}:{}}),r&&(0,n.jsx)(g,{request:{taskId:t.id,status:t.status,enteredStatusAt:t.updatedAt,observedAt:Date.now(),taskTitle:t.title}})]}):null}function R(e){let{label:t,value:s}=e;return(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsx)("div",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:t}),(0,n.jsx)("div",{className:"text-sm",children:s})]})}function T(){var e,t,s,u,m,p;let{client:h}=(0,r.Q)(),g=(0,a.useMemo)(()=>new i(h),[h]),v=(0,a.useMemo)(()=>new d.Yt(h),[h]),[y,j]=(0,a.useState)(""),[N,M]=(0,a.useState)(!1),[T,J]=(0,a.useState)(new Map),[E,O]=(0,a.useState)([]),[D,P]=(0,a.useState)(null),[U,_]=(0,a.useState)(null),[F,H]=(0,a.useState)(null),[q,z]=(0,a.useState)(!1),[L,K]=(0,a.useState)(!1),[V,B]=(0,a.useState)("mission"),$=(0,a.useCallback)(async()=>{(0,o.cY)("webterm.tasks.list.refresh",{}),z(!0);try{let e=await g.list();O(e.tasks),P(e.summary),v.missionArcMap().then(J).catch(()=>{}),_(t=>t&&e.tasks.some(e=>e.id===t)?t:null)}catch(e){c.oR.error("task board failed: ".concat(e instanceof Error?e.message:e))}finally{z(!1)}},[g,v]),Y=(0,a.useCallback)(async(e,t)=>{try{var s;let n=await x({baseUrl:window.location.origin}).dispatch(e,t);n.ok?c.oR.success("".concat(t," 실행됨")):c.oR.error("".concat(t," 실패: ").concat(null!=(s=n.error)?s:""))}catch(e){c.oR.error("".concat(t," 실패: ").concat(e instanceof Error?e.message:e))}await $()},[$]),G=(0,a.useCallback)(async()=>{let e=y.trim();if(e&&!N){M(!0);try{let t=await v.commitMission(e,"intake");t.ok?(c.oR.success("태스크 생성 → 미션 fabric 이 플랜화 중".concat(t.missionId?" (".concat(t.missionId,")"):"")),j(""),setTimeout(()=>void $(),1200)):c.oR.error("태스크 생성 실패")}catch(e){c.oR.error("태스크 생성 실패: ".concat(e instanceof Error?e.message:e))}finally{M(!1)}}},[y,N,v,$]);(0,a.useEffect)(()=>{$();let e=window.setInterval(()=>void $(),15e3);return()=>window.clearInterval(e)},[$]),(0,a.useEffect)(()=>{if(!U)return void H(null);let e=!1;return K(!0),(async()=>{try{var t;let s=await g.detail(U);if(e)return;H({task:s.task,executions:s.executions.map(e=>({id:e.id,status:e.status,startedAt:e.startedAt,durationMs:e.durationMs,output:e.output})),events:s.events,linkedSchedulerJob:null!=(t=s.linkedSchedulerJob)?t:null})}catch(t){e||c.oR.error("task detail failed: ".concat(t instanceof Error?t.message:t))}finally{e||K(!1)}})(),()=>{e=!0}},[g,U]);let Q=(0,a.useMemo)(()=>k.map(e=>({...e,tasks:E.filter(t=>e.statuses.some(e=>e===t.status))})),[E]),W=(0,a.useMemo)(()=>(function(e){var t,s,n,a,r,l,i;let d=new Map;for(let n of e){let e=n.missionTitle?null!=(t=n.goalSlug)?t:n.missionTitle:"__standalone__";(null!=(s=d.get(e))?s:d.set(e,[]).get(e)).push(n)}let o=[];for(let[e,t]of Array.from(d.entries())){let s="__standalone__"===e,d=new Map;for(let e of t)if(e.arcName){let t=null!=(l=d.get(e.arcName))?l:{name:e.arcName,total:0,done:0,status:null!=(a=e.arcStatus)?a:"pending",index:null!=(r=e.arcIndex)?r:0};t.total+=1,"done"===e.status&&(t.done+=1),e.arcStatus&&(t.status=e.arcStatus),d.set(e.arcName,t)}let c=[...t].sort((e,t)=>{var s,n;return(null!=(s=S[e.status])?s:9)-(null!=(n=S[t.status])?n:9)||t.createdAt-e.createdAt});o.push({key:e,missionTitle:s?"독립 태스크 (미션 외)":null!=(i=null==(n=t[0])?void 0:n.missionTitle)?i:e,tasks:c,total:t.length,doneCount:t.filter(e=>"done"===e.status).length,runningCount:t.filter(e=>"running"===e.status).length,failedCount:t.filter(e=>"failed"===e.status).length,arcs:Array.from(d.values()).sort((e,t)=>e.index-t.index),isStandalone:s})}return o.sort((e,t)=>{if(e.isStandalone!==t.isStandalone)return e.isStandalone?1:-1;let s=e.runningCount>0||e.doneCount<e.total;return s!==(t.runningCount>0||t.doneCount<t.total)?s?-1:1:t.total-e.total})})(E),[E]);return(0,n.jsx)(b.Provider,{value:Y,children:(0,n.jsxs)("div",{className:"mx-auto max-w-[1600px] space-y-4 p-4",children:[(0,n.jsx)(f.r,{active:"tasks"}),(0,n.jsxs)("header",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Task Manager"}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"TOX board snapshot for backlog, running work, and closed items."})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[D&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-card px-3 py-2 text-xs",children:[(0,n.jsx)("div",{className:"text-muted-foreground",children:"open"}),(0,n.jsx)("div",{className:"text-sm font-semibold",children:D.open})]}),(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-card px-3 py-2 text-xs",children:[(0,n.jsx)("div",{className:"text-muted-foreground",children:"closed"}),(0,n.jsx)("div",{className:"text-sm font-semibold",children:D.terminal})]}),(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-card px-3 py-2 text-xs",children:[(0,n.jsx)("div",{className:"text-muted-foreground",children:"linked schedules"}),(0,n.jsx)("div",{className:"text-sm font-semibold",children:D.linkedScheduler})]})]}),(0,n.jsxs)("div",{className:"flex rounded-lg border border-border bg-card p-0.5 text-xs",children:[(0,n.jsx)("button",{type:"button",onClick:()=>B("mission"),className:"rounded-md px-2.5 py-1 ".concat("mission"===V?"bg-primary/20 text-primary":"text-muted-foreground hover:text-foreground"),children:"\uD83C\uDFAF 미션별"}),(0,n.jsx)("button",{type:"button",onClick:()=>B("kanban"),className:"rounded-md px-2.5 py-1 ".concat("kanban"===V?"bg-primary/20 text-primary":"text-muted-foreground hover:text-foreground"),children:"칸반"})]}),(0,n.jsx)(l.$,{size:"sm",variant:"outline",onClick:()=>void $(),disabled:q,children:"Refresh"})]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 rounded-xl border border-border bg-card p-2",children:[(0,n.jsx)("span",{className:"pl-1 text-sm text-muted-foreground",children:"+"}),(0,n.jsx)("input",{type:"text",value:y,onChange:e=>j(e.target.value),onKeyDown:e=>{"Enter"===e.key&&G()},placeholder:"새 태스크(골)를 입력하면 미션 fabric 이 플랜화→구현→DONE… 예: 'README 중복 정리 리포트 만들어줘'",className:"min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground/60",disabled:N}),(0,n.jsx)(l.$,{size:"sm",onClick:()=>void G(),disabled:N||!y.trim(),children:N?"생성 중…":"Create Task"})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-4 xl:flex-row xl:items-start",children:[(0,n.jsx)("section",{className:"min-w-0 flex-1 space-y-3",children:"mission"===V?(0,n.jsx)("div",{className:"space-y-3",children:W.length>0?W.map(e=>{var t;return(0,n.jsx)(C,{group:e,selectedId:U,onSelect:_,arcDetail:null==(t=T.get(e.key))?void 0:t.arcs},e.key)}):(0,n.jsx)("div",{className:"rounded-xl border border-dashed border-border px-3 py-12 text-center text-sm text-muted-foreground",children:"미션/태스크 없음"})}):(0,n.jsx)("div",{className:"pb-2",children:(0,n.jsx)("div",{className:"flex flex-wrap gap-3",children:Q.map(e=>(0,n.jsxs)("div",{className:"min-w-[170px] flex-1 rounded-2xl border border-border bg-muted/30 p-3",children:[(0,n.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,n.jsx)("h2",{className:"text-sm font-semibold",children:e.label}),(0,n.jsx)("span",{className:"rounded-full bg-background px-2 py-0.5 text-[11px] text-muted-foreground",children:e.tasks.length})]}),(0,n.jsx)("div",{className:"space-y-2",children:e.tasks.length>0?e.tasks.map(e=>(0,n.jsx)(A,{task:e,selected:e.id===U,onClick:()=>_(e.id)},e.id)):(0,n.jsx)("div",{className:"rounded-xl border border-dashed border-border px-3 py-8 text-center text-xs text-muted-foreground",children:"no tasks"})})]},e.id))})})}),U&&(0,n.jsxs)("aside",{className:"w-full shrink-0 space-y-3 rounded-2xl border border-border bg-card p-4 xl:w-[360px]",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("h2",{className:"text-base font-semibold",children:"Detail"}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(null==F?void 0:F.task)&&(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-[11px] text-muted-foreground",children:F.task.status}),(0,n.jsx)("button",{type:"button",onClick:()=>_(null),className:"rounded-md px-1.5 py-0.5 text-xs text-muted-foreground hover:bg-accent/40 hover:text-foreground","aria-label":"Close detail",children:"✕"})]})]}),L||!F?(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"Loading task detail…"}):(0,n.jsxs)("div",{className:"space-y-4",children:[(()=>{let e=E.find(e=>e.id===U);return(null==e?void 0:e.status)==="running"&&e.build?(0,n.jsx)(I,{api:g,buildId:e.build.buildId}):null})(),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-lg font-semibold leading-6",children:F.task.title}),(0,n.jsx)("div",{className:"mt-1 text-xs text-muted-foreground",children:F.task.id}),F.task.description&&(0,n.jsx)("p",{className:"mt-3 whitespace-pre-wrap text-sm text-muted-foreground",children:F.task.description})]}),(0,n.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,n.jsx)(R,{label:"Surface",value:F.task.surface.kind}),(0,n.jsx)(R,{label:"Priority",value:F.task.priority}),(0,n.jsx)(R,{label:"Goal",value:null!=(u=F.task.goalSlug)?u:"—"}),(0,n.jsx)(R,{label:"Feature",value:null!=(m=F.task.featureName)?m:"—"}),(0,n.jsx)(R,{label:"Depends On",value:F.task.dependsOn.length>0?F.task.dependsOn.join(", "):"—"}),(0,n.jsx)(R,{label:"Schedule",value:null!=(p=F.task.schedulerJobId)?p:"—"})]}),F.linkedSchedulerJob&&(0,n.jsxs)("div",{className:"rounded-xl border border-border bg-muted/40 px-3 py-2 text-sm",children:["linked schedule: ",F.linkedSchedulerJob.title,(0,n.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:F.linkedSchedulerJob.taskId}),(null==(e=F.linkedSchedulerJob.taskMeta)?void 0:e.dryRun)&&(0,n.jsxs)("span",{className:"ml-2 rounded-full bg-emerald-500/15 px-2 py-0.5 text-[10px] text-emerald-300",children:["dry run",F.linkedSchedulerJob.taskMeta.dryRunOutcome?" \xb7 ".concat(F.linkedSchedulerJob.taskMeta.dryRunOutcome):""]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("div",{className:"text-sm font-semibold",children:"Acceptance"}),(null==(s=F.task.acceptance)||null==(t=s.criteria)?void 0:t.length)?(0,n.jsx)("ul",{className:"space-y-1 text-sm text-muted-foreground",children:F.task.acceptance.criteria.map(e=>(0,n.jsx)("li",{className:"rounded-lg bg-muted/50 px-3 py-2",children:e},e))}):(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"No acceptance criteria."})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("div",{className:"text-sm font-semibold",children:"Recent Executions"}),F.executions.length>0?(0,n.jsx)("div",{className:"space-y-2",children:F.executions.map(e=>(0,n.jsxs)("div",{className:"rounded-xl border border-border bg-background p-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,n.jsx)("span",{className:"font-medium",children:e.status}),(0,n.jsx)("span",{className:"text-xs text-muted-foreground",children:w(e.startedAt)})]}),void 0!==e.durationMs&&(0,n.jsxs)("div",{className:"mt-1 text-xs text-muted-foreground",children:["duration ",Math.round(e.durationMs/1e3),"s"]}),e.output&&(0,n.jsx)("pre",{className:"mt-2 max-h-28 overflow-auto whitespace-pre-wrap rounded-lg bg-muted p-2 text-xs text-muted-foreground",children:e.output.slice(0,600)})]},e.id))}):(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"No executions recorded yet."})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("div",{className:"text-sm font-semibold",children:"Recent Events"}),F.events.length>0?(0,n.jsx)("div",{className:"space-y-1",children:F.events.slice(-8).reverse().map((e,t)=>(0,n.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-muted/50 px-3 py-2 text-xs",children:[(0,n.jsx)("span",{children:e.kind}),(0,n.jsx)("span",{className:"text-muted-foreground",children:w(e.timestamp)})]},"".concat(e.kind,"-").concat(e.timestamp,"-").concat(t)))}):(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"No events recorded yet."})]})]})]})]})]})})}},92772:(e,t,s)=>{s.d(t,{r:()=>i});var n=s(35563),a=s(75423),r=s.n(a);let l=[{key:"autopilot",href:"/autopilot",num:"①",label:"미션",sub:"Autopilot"},{key:"tasks",href:"/tasks",num:"②",label:"작업",sub:"Tasks"},{key:"scheduler",href:"/scheduler",num:"③",label:"스케줄",sub:"Schedules"}];function i(e){let{active:t}=e;return(0,n.jsxs)("nav",{"aria-label":"Mission Fabric 파이프라인","data-testid":"fabric-stage-header",className:"flex flex-wrap items-center gap-1 text-xs",children:[(0,n.jsx)("span",{className:"mr-1 text-muted-foreground",children:"Missions"}),l.map((e,s)=>(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsxs)(r(),{href:e.href,"aria-current":e.key===t?"page":void 0,className:["rounded px-2 py-1 ring-1 transition-colors",e.key===t?"bg-primary/15 font-medium text-foreground ring-primary/40":"text-muted-foreground ring-border hover:bg-muted hover:text-foreground"].join(" "),children:[(0,n.jsx)("span",{className:"mr-1",children:e.num}),e.label,(0,n.jsx)("span",{className:"ml-1 text-[10px] opacity-70",children:e.sub})]}),s<l.length-1&&(0,n.jsx)("span",{className:"text-muted-foreground/50","aria-hidden":!0,children:"→"})]},e.key))]})}}}]);