nodal-agents 0.9.0 → 0.9.2

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 (275) hide show
  1. package/cli.js +727 -62
  2. package/docs-index.json +1524 -0
  3. package/migrations/0118_agent_jobs_deliverable_check_due.sql +53 -0
  4. package/migrations/0119_job_checkpoints_snapshot_ms.sql +51 -0
  5. package/migrations/0120_excluded_project_paths.sql +38 -0
  6. package/migrations/0121_entities_proof_repair_attempts.sql +32 -0
  7. package/migrations/0122_entities_drop_memory_curation_enabled.sql +17 -0
  8. package/migrations/meta/_journal.json +35 -0
  9. package/package.json +2 -1
  10. package/runner.js +5541 -4081
  11. package/web/.next/BUILD_ID +1 -1
  12. package/web/.next/app-path-routes-manifest.json +1 -1
  13. package/web/.next/build-manifest.json +2 -2
  14. package/web/.next/prerender-manifest.json +5 -5
  15. package/web/.next/server/app/(dashboard)/agents/[id]/channels/page.js +1 -1
  16. package/web/.next/server/app/(dashboard)/agents/[id]/channels/page_client-reference-manifest.js +1 -1
  17. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +4 -4
  18. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page_client-reference-manifest.js +1 -1
  19. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js +1 -1
  20. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/agents/page.js +1 -1
  22. package/web/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
  23. package/web/.next/server/app/(dashboard)/approvals/page.js +1 -1
  24. package/web/.next/server/app/(dashboard)/approvals/page_client-reference-manifest.js +1 -1
  25. package/web/.next/server/app/(dashboard)/automations/[id]/page.js +1 -1
  26. package/web/.next/server/app/(dashboard)/automations/[id]/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/(dashboard)/automations/page.js +1 -1
  28. package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -1
  29. package/web/.next/server/app/(dashboard)/chat/[id]/page.js +1 -1
  30. package/web/.next/server/app/(dashboard)/chat/[id]/page_client-reference-manifest.js +1 -1
  31. package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
  32. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/code/[id]/page.js +1 -1
  34. package/web/.next/server/app/(dashboard)/code/[id]/page_client-reference-manifest.js +1 -1
  35. package/web/.next/server/app/(dashboard)/code/page.js +1 -1
  36. package/web/.next/server/app/(dashboard)/code/page_client-reference-manifest.js +1 -1
  37. package/web/.next/server/app/(dashboard)/connectors/page.js +1 -1
  38. package/web/.next/server/app/(dashboard)/connectors/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/credentials/page.js +1 -1
  40. package/web/.next/server/app/(dashboard)/credentials/page_client-reference-manifest.js +1 -1
  41. package/web/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  42. package/web/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/(dashboard)/jobs/[id]/page.js +1 -1
  44. package/web/.next/server/app/(dashboard)/jobs/[id]/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/(dashboard)/jobs/page.js +1 -1
  46. package/web/.next/server/app/(dashboard)/jobs/page_client-reference-manifest.js +1 -1
  47. package/web/.next/server/app/(dashboard)/learned-skills/page.js +1 -1
  48. package/web/.next/server/app/(dashboard)/learned-skills/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/llm-providers/page.js +1 -1
  50. package/web/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(dashboard)/logs/page.js +1 -1
  52. package/web/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
  53. package/web/.next/server/app/(dashboard)/mcp/page.js +1 -1
  54. package/web/.next/server/app/(dashboard)/mcp/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/(dashboard)/memories/page.js +1 -1
  56. package/web/.next/server/app/(dashboard)/memories/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(dashboard)/page.js +1 -1
  58. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  59. package/web/.next/server/app/(dashboard)/scheduled/[id]/page.js +1 -1
  60. package/web/.next/server/app/(dashboard)/scheduled/[id]/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/scheduled/page.js +1 -1
  62. package/web/.next/server/app/(dashboard)/scheduled/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(dashboard)/settings/page.js +1 -1
  64. package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/(dashboard)/settings/root-context/page.js +1 -1
  66. package/web/.next/server/app/(dashboard)/settings/root-context/page_client-reference-manifest.js +1 -1
  67. package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js +1 -1
  68. package/web/.next/server/app/(dashboard)/skills/[id]/edit/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/skills/new/page.js +1 -1
  70. package/web/.next/server/app/(dashboard)/skills/new/page_client-reference-manifest.js +1 -1
  71. package/web/.next/server/app/(dashboard)/skills/page.js +1 -1
  72. package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/spaces/[id]/files/page.js +1 -1
  74. package/web/.next/server/app/(dashboard)/spaces/[id]/files/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(dashboard)/spaces/[id]/page.js +1 -1
  76. package/web/.next/server/app/(dashboard)/spaces/[id]/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/(dashboard)/spaces/page.js +1 -1
  78. package/web/.next/server/app/(dashboard)/spaces/page_client-reference-manifest.js +1 -1
  79. package/web/.next/server/app/_global-error/page.js +2 -2
  80. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/_global-error.html +1 -1
  82. package/web/.next/server/app/_global-error.rsc +2 -2
  83. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  84. package/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  85. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  86. package/web/.next/server/app/_not-found/page.js +1 -1
  87. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/_not-found.html +1 -1
  89. package/web/.next/server/app/_not-found.rsc +5 -4
  90. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +5 -4
  91. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +14 -13
  92. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  93. package/web/.next/server/app/api/chat/stream/route.js +1 -1
  94. package/web/.next/server/app/api/health/route.js +1 -1
  95. package/web/.next/server/app/api/oauth/[provider]/callback/route.js +1 -1
  96. package/web/.next/server/app/api/oauth/[provider]/start/route.js +1 -1
  97. package/web/.next/server/app/login/page.js +1 -1
  98. package/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/onboarding/page.js +2 -2
  100. package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app-paths-manifest.json +1 -1
  102. package/web/.next/server/chunks/1041.js +5 -0
  103. package/web/.next/server/chunks/1447.js +1 -1
  104. package/web/.next/server/chunks/168.js +1 -0
  105. package/web/.next/server/chunks/{3431.js → 192.js} +2 -2
  106. package/web/.next/server/chunks/1960.js +1 -0
  107. package/web/.next/server/chunks/{4332.js → 2096.js} +1 -1
  108. package/web/.next/server/chunks/292.js +1 -0
  109. package/web/.next/server/chunks/2933.js +1 -0
  110. package/web/.next/server/chunks/3370.js +1 -0
  111. package/web/.next/server/chunks/3592.js +1 -1
  112. package/web/.next/server/chunks/3675.js +1 -0
  113. package/web/.next/server/chunks/409.js +1 -0
  114. package/web/.next/server/chunks/42.js +3 -3
  115. package/web/.next/server/chunks/4357.js +1 -1
  116. package/web/.next/server/chunks/494.js +1 -0
  117. package/web/.next/server/chunks/5547.js +1 -0
  118. package/web/.next/server/chunks/5554.js +1 -0
  119. package/web/.next/server/chunks/570.js +1 -0
  120. package/web/.next/server/chunks/5804.js +1 -1
  121. package/web/.next/server/chunks/5974.js +1 -0
  122. package/web/.next/server/chunks/6020.js +1 -1
  123. package/web/.next/server/chunks/6106.js +1 -0
  124. package/web/.next/server/chunks/{2198.js → 6213.js} +39 -23
  125. package/web/.next/server/chunks/692.js +1806 -0
  126. package/web/.next/server/chunks/{2076.js → 7134.js} +7 -7
  127. package/web/.next/server/chunks/7431.js +1 -0
  128. package/web/.next/server/chunks/7533.js +1 -0
  129. package/web/.next/server/chunks/{7957.js → 7663.js} +5 -5
  130. package/web/.next/server/chunks/7709.js +1 -0
  131. package/web/.next/server/chunks/7915.js +1 -0
  132. package/web/.next/server/chunks/8022.js +1 -0
  133. package/web/.next/server/chunks/8536.js +3 -0
  134. package/web/.next/server/chunks/8974.js +63 -47
  135. package/web/.next/server/chunks/9200.js +1 -0
  136. package/web/.next/server/chunks/9557.js +1 -0
  137. package/web/.next/server/middleware-build-manifest.js +1 -1
  138. package/web/.next/server/middleware.js +67 -67
  139. package/web/.next/server/pages/404.html +1 -1
  140. package/web/.next/server/pages/500.html +1 -1
  141. package/web/.next/server/server-reference-manifest.js +1 -1
  142. package/web/.next/server/server-reference-manifest.json +1 -1
  143. package/web/.next/static/chunks/1054-08930540869affcc.js +1 -0
  144. package/web/.next/static/chunks/1091-6d0af9f18ddf99f6.js +1 -0
  145. package/web/.next/static/chunks/1332-c8bed6b750598652.js +1 -0
  146. package/web/.next/static/chunks/{1789-87079e34582418b3.js → 1789-b436bca079b82fcc.js} +1 -1
  147. package/web/.next/static/chunks/{2194-f112ed9e30bd88fb.js → 2194-f3fed902cfeb85b5.js} +1 -1
  148. package/web/.next/static/chunks/296-1b50dd61ac3198f4.js +1 -0
  149. package/web/.next/static/chunks/3051-26ddd67461f743c4.js +1 -0
  150. package/web/.next/static/chunks/3159-f25525771781f5aa.js +1 -0
  151. package/web/.next/static/chunks/341-020b1c47a0991a37.js +1 -0
  152. package/web/.next/static/chunks/{5361-f266407b731effcd.js → 3742-ab3951ecba6248c1.js} +1 -1
  153. package/web/.next/static/chunks/377-4f2ca8d34e126b26.js +1 -0
  154. package/web/.next/static/chunks/3775-3a5a749d63c785a1.js +3 -0
  155. package/web/.next/static/chunks/390-d6132d3a117487df.js +1 -0
  156. package/web/.next/static/chunks/4020-9778230f3cc2164a.js +1 -0
  157. package/web/.next/static/chunks/4771-a0aadf337f224b72.js +1 -0
  158. package/web/.next/static/chunks/494-ed02d105fa0ac132.js +1 -0
  159. package/web/.next/static/chunks/5034-fc9997ff33a114aa.js +1 -0
  160. package/web/.next/static/chunks/{8551-3e88dff507375393.js → 5925-76337eacde3c3bc8.js} +39 -23
  161. package/web/.next/static/chunks/611-e150bff7f1f9dc6c.js +1 -0
  162. package/web/.next/static/chunks/6937-f57b8514bf03179e.js +3 -0
  163. package/web/.next/static/chunks/{7717-41f70e449a27eb21.js → 7879-67ac5a52d74c20d2.js} +1 -1
  164. package/web/.next/static/chunks/7920-40dc6aa63e653d6b.js +1 -0
  165. package/web/.next/static/chunks/8312-6ca4507c5413a23d.js +1 -0
  166. package/web/.next/static/chunks/870-b7151716d04a13c3.js +1 -0
  167. package/web/.next/static/chunks/8794-2a616d1f9c210117.js +1 -0
  168. package/web/.next/static/chunks/8861-a108ed6178a56b21.js +1 -0
  169. package/web/.next/static/chunks/{3196-464a892bb967ebe9.js → 9311-bdd05e5b6fb92a88.js} +1 -1
  170. package/web/.next/static/chunks/9598-202b803aea26a949.js +1 -0
  171. package/web/.next/static/chunks/{9643-135a5b7d3abd518c.js → 9643-e9c8a744dd98813d.js} +1 -1
  172. package/web/.next/static/chunks/{8606-679d56e81c4e4550.js → 9765-1501903a64e09ac0.js} +1 -1
  173. package/web/.next/static/chunks/9952-992cabfb077d287c.js +1 -0
  174. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-5ca9c1eef4d0f837.js +6 -0
  175. package/web/.next/static/chunks/app/(dashboard)/agents/page-5ffa4a2468c1f95a.js +1 -0
  176. package/web/.next/static/chunks/app/(dashboard)/approvals/page-cd46d5e439a20d3e.js +1 -0
  177. package/web/.next/static/chunks/app/(dashboard)/automations/[id]/page-9ef1d76121b6030d.js +1 -0
  178. package/web/.next/static/chunks/app/(dashboard)/automations/page-46eeaa40df9e58f8.js +1 -0
  179. package/web/.next/static/chunks/app/(dashboard)/chat/[id]/page-25e095bf0cdd1c40.js +1 -0
  180. package/web/.next/static/chunks/app/(dashboard)/chat/page-e2df1a328e18da7a.js +1 -0
  181. package/web/.next/static/chunks/app/(dashboard)/code/[id]/page-f5f7624cfbb32ee2.js +1 -0
  182. package/web/.next/static/chunks/app/(dashboard)/connectors/page-2ecbfc5836577888.js +1 -0
  183. package/web/.next/static/chunks/app/(dashboard)/credentials/page-cb6bc64b82b8fb28.js +1 -0
  184. package/web/.next/static/chunks/app/(dashboard)/dashboard/{page-fd2a41310f716a3e.js → page-7473d1190864cbd4.js} +1 -1
  185. package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-47e177ab46926fd7.js +1 -0
  186. package/web/.next/static/chunks/app/(dashboard)/layout-0b429859260736b2.js +1 -0
  187. package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-596d973a31e774db.js +1 -0
  188. package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-ba1968c9430c4dd4.js +1 -0
  189. package/web/.next/static/chunks/app/(dashboard)/logs/page-f74da6f66116c7e7.js +1 -0
  190. package/web/.next/static/chunks/app/(dashboard)/mcp/page-07bdc6780b13cfca.js +1 -0
  191. package/web/.next/static/chunks/app/(dashboard)/memories/page-593161bc7c2a25d7.js +1 -0
  192. package/web/.next/static/chunks/app/(dashboard)/page-889d6e89a8f679f8.js +1 -0
  193. package/web/.next/static/chunks/app/(dashboard)/scheduled/[id]/page-47e177ab46926fd7.js +1 -0
  194. package/web/.next/static/chunks/app/(dashboard)/settings/page-1b40e127c38affda.js +1 -0
  195. package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-6b7e1cffcad40a6a.js +1 -0
  196. package/web/.next/static/chunks/app/(dashboard)/skills/page-3ad87d1a3fbb4f05.js +1 -0
  197. package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/files/page-4e2d27f80456a1ba.js +1 -0
  198. package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/page-c81023eaa26c2c7a.js +1 -0
  199. package/web/.next/static/chunks/app/(dashboard)/spaces/page-9dbb35822503481b.js +1 -0
  200. package/web/.next/static/chunks/app/layout-ef76b16f6546678c.js +1 -0
  201. package/web/.next/static/chunks/app/login/page-5357f030e5018563.js +1 -0
  202. package/web/.next/static/chunks/app/onboarding/page-9b6955cdd3033584.js +26 -0
  203. package/web/.next/static/css/099c0b54fc41e5b0.css +1 -0
  204. package/web/public/logo-128.png +0 -0
  205. package/web/.next/server/chunks/1239.js +0 -1
  206. package/web/.next/server/chunks/1505.js +0 -3
  207. package/web/.next/server/chunks/1632.js +0 -1
  208. package/web/.next/server/chunks/1813.js +0 -1
  209. package/web/.next/server/chunks/2040.js +0 -1
  210. package/web/.next/server/chunks/2310.js +0 -1
  211. package/web/.next/server/chunks/2800.js +0 -1790
  212. package/web/.next/server/chunks/3340.js +0 -1
  213. package/web/.next/server/chunks/3432.js +0 -1
  214. package/web/.next/server/chunks/3580.js +0 -1
  215. package/web/.next/server/chunks/4722.js +0 -3
  216. package/web/.next/server/chunks/5276.js +0 -1
  217. package/web/.next/server/chunks/603.js +0 -1
  218. package/web/.next/server/chunks/7719.js +0 -1
  219. package/web/.next/server/chunks/7781.js +0 -1
  220. package/web/.next/server/chunks/8025.js +0 -3
  221. package/web/.next/server/chunks/8118.js +0 -1
  222. package/web/.next/server/chunks/9637.js +0 -1
  223. package/web/.next/server/chunks/976.js +0 -1
  224. package/web/.next/server/chunks/9939.js +0 -1
  225. package/web/.next/static/chunks/1091-de54f0c0a4d82875.js +0 -1
  226. package/web/.next/static/chunks/114-26058433e4e0911e.js +0 -1
  227. package/web/.next/static/chunks/1219-d120dd8740b553b7.js +0 -1
  228. package/web/.next/static/chunks/146-923ebb6e4b12939e.js +0 -1
  229. package/web/.next/static/chunks/2057-de712956dc309abd.js +0 -1
  230. package/web/.next/static/chunks/2628-662c74c9bc8efdfd.js +0 -1
  231. package/web/.next/static/chunks/2767-84a838e67c8ed919.js +0 -1
  232. package/web/.next/static/chunks/3051-63316a56c4c77b78.js +0 -1
  233. package/web/.next/static/chunks/341-d382e4df5fdd8639.js +0 -1
  234. package/web/.next/static/chunks/4229-5ad9bb0c30eeb117.js +0 -1
  235. package/web/.next/static/chunks/443-b0581a9d59c5eddd.js +0 -1
  236. package/web/.next/static/chunks/4507-e4e79584af8a3dfb.js +0 -1
  237. package/web/.next/static/chunks/4646-daae31f9eaa82ad1.js +0 -3
  238. package/web/.next/static/chunks/5034-1424be65bb762fe0.js +0 -1
  239. package/web/.next/static/chunks/6449-2552e9fd471012bc.js +0 -1
  240. package/web/.next/static/chunks/6974-c390b37b943e5e3a.js +0 -1
  241. package/web/.next/static/chunks/750-5f0494d3bcce44e4.js +0 -1
  242. package/web/.next/static/chunks/7890-8030bd449325507e.js +0 -1
  243. package/web/.next/static/chunks/8288-46c8ea403691cbd8.js +0 -3
  244. package/web/.next/static/chunks/8571-6149c8881bddf392.js +0 -1
  245. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-0a2201e25891e65a.js +0 -6
  246. package/web/.next/static/chunks/app/(dashboard)/agents/page-8dd4afd99c54c317.js +0 -1
  247. package/web/.next/static/chunks/app/(dashboard)/approvals/page-c346b6514a0fb344.js +0 -1
  248. package/web/.next/static/chunks/app/(dashboard)/automations/[id]/page-2ff06d1d46372539.js +0 -1
  249. package/web/.next/static/chunks/app/(dashboard)/automations/page-e70ea0434087cad1.js +0 -1
  250. package/web/.next/static/chunks/app/(dashboard)/chat/[id]/page-600249784190e2a4.js +0 -1
  251. package/web/.next/static/chunks/app/(dashboard)/chat/page-48666512a1c0ac50.js +0 -1
  252. package/web/.next/static/chunks/app/(dashboard)/code/[id]/page-f84236cea1b8e8bd.js +0 -1
  253. package/web/.next/static/chunks/app/(dashboard)/connectors/page-de164554b77a1fa4.js +0 -1
  254. package/web/.next/static/chunks/app/(dashboard)/credentials/page-0741d2da25807489.js +0 -1
  255. package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-702e9eeea18c7ea0.js +0 -1
  256. package/web/.next/static/chunks/app/(dashboard)/layout-1fe1669ec7dc1c13.js +0 -1
  257. package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-a76814c4a20ecd33.js +0 -1
  258. package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-aa611ab9ff0baff2.js +0 -1
  259. package/web/.next/static/chunks/app/(dashboard)/logs/page-f22178e7e15984c1.js +0 -1
  260. package/web/.next/static/chunks/app/(dashboard)/mcp/page-8b248ee23cc92855.js +0 -1
  261. package/web/.next/static/chunks/app/(dashboard)/memories/page-69955b9596175468.js +0 -1
  262. package/web/.next/static/chunks/app/(dashboard)/page-4432bf6e8e594109.js +0 -1
  263. package/web/.next/static/chunks/app/(dashboard)/scheduled/[id]/page-f4857bc821e8868b.js +0 -1
  264. package/web/.next/static/chunks/app/(dashboard)/settings/page-2e6cbceef74a8f8a.js +0 -1
  265. package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-63c38b3c419dfbbc.js +0 -1
  266. package/web/.next/static/chunks/app/(dashboard)/skills/page-99aea8c35e06402b.js +0 -1
  267. package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/files/page-226d430d003759c2.js +0 -1
  268. package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/page-ded0e3c2ae3aede7.js +0 -1
  269. package/web/.next/static/chunks/app/(dashboard)/spaces/page-a833db411140fb1e.js +0 -1
  270. package/web/.next/static/chunks/app/layout-e03e26e403cc87a2.js +0 -1
  271. package/web/.next/static/chunks/app/login/page-16e874ed1f237705.js +0 -1
  272. package/web/.next/static/chunks/app/onboarding/page-5928b7dd0a4606cc.js +0 -26
  273. package/web/.next/static/css/67bc2af77aa905d1.css +0 -1
  274. /package/web/.next/static/{g828Psw_BOEBvk4rOsX86 → x5fvzE6AeZGASlemQTLwd}/_buildManifest.js +0 -0
  275. /package/web/.next/static/{g828Psw_BOEBvk4rOsX86 → x5fvzE6AeZGASlemQTLwd}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5034],{2193:(e,t,r)=>{r.d(t,{default:()=>g});var n=r(48503),a=r(80351),i=r(86045),l=r(22208),o=r.n(l),s=r(61151),d=r(97872),c=r(68926),u=r(82326),h=r(88088),p=r(75551),x=r(18377),m=r(57910),f=r(4978);function v({item:e,onApproved:t}){let[r,i]=(0,a.useTransition)();return(0,n.jsx)("span",{onClick:e=>e.stopPropagation(),children:(0,n.jsx)(p.A,{onClick:function(){i(async()=>{let r=await (0,u.C)({approvalRequestId:e.id,decision:"approve"});r.ok?(c.oR.success("Approved"),await t()):c.oR.error(r.message)})},disabled:r,className:"!border-ok/30 !bg-ok font-semibold !text-canvas hover:!bg-ok hover:brightness-[0.92]",children:r?"…":"Approve"})})}function b({items:e,updates:t,onClose:r,onApproved:l}){let d=(0,a.useRef)(null);return(0,a.useEffect)(()=>{function e(e){d.current&&!d.current.contains(e.target)&&r()}return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[r]),(0,i.Z4)(!0,r),(0,n.jsxs)("div",{ref:d,className:"absolute right-0 top-full z-50 mt-1.5 w-[340px] rounded-xl border border-rule-2 bg-paper shadow-lg",role:"dialog","aria-label":"Pending approvals",children:[(0,n.jsx)("div",{className:"border-b border-rule-2 px-4 py-3",children:(0,n.jsxs)("p",{className:"text-legacy-14 font-semibold text-ink",children:["Pending approvals (",e.length,")"]})}),0===e.length?(0,n.jsx)("p",{className:"px-4 py-5 text-center text-body-13 text-ink-3",children:"No pending approvals."}):(0,n.jsx)("ul",{className:"max-h-[340px] divide-y divide-rule-2 overflow-y-auto",children:e.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)(o(),{href:`/jobs/${e.jobId}`,onClick:r,className:"flex items-start gap-3 px-4 py-3 transition-colors hover:bg-hover",children:[(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsxs)("p",{className:"truncate text-medium-13 text-ink",children:[e.agentName??"Agent",(0,n.jsx)("span",{className:"mx-1 text-ink-4",children:"\xb7"}),(0,n.jsx)("code",{className:"rounded bg-canvas px-1 py-0.5 text-mono-12 text-ink-2",children:e.toolName})]}),(0,n.jsx)("p",{className:"mt-0.5 truncate text-body-12 text-ink-3",children:function(e){if(!e)return"—";if("string"==typeof e.purpose&&e.purpose.trim()){let t=e.purpose.trim();return t.length>80?t.slice(0,77)+"…":t}if("string"==typeof e.command){let t=e.command;return t.length>60?t.slice(0,57)+"…":t}let t=JSON.stringify(e);return t.length>60?t.slice(0,57)+"…":t}(e.toolInput)}),(0,n.jsx)("p",{className:"mt-0.5 text-legacy-11 text-ink-4",children:(0,f.KW)(e.requestedAt)})]}),(0,n.jsx)(v,{item:e,onApproved:l})]})},e.id))}),t.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"border-t border-b border-rule-2 px-4 py-3",children:(0,n.jsxs)("p",{className:"text-legacy-14 font-semibold text-ink",children:["Updates (",t.length,")"]})}),(0,n.jsx)("ul",{className:"max-h-[220px] divide-y divide-rule-2 overflow-y-auto",children:t.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)(o(),{href:"/skills",onClick:r,className:"flex items-center gap-2.5 px-4 py-3 transition-colors hover:bg-hover",children:[(0,n.jsx)(s.S,{size:14,className:"shrink-0 text-warn"}),(0,n.jsxs)("span",{className:"min-w-0 flex-1 truncate text-medium-13 text-ink",children:[e.name," has an update"]})]})},e.slug))})]}),(0,n.jsx)("div",{className:"border-t border-rule-2 px-4 py-2.5",children:(0,n.jsx)(o(),{href:"/approvals",onClick:r,className:"text-medium-13 text-ink-2 transition-colors hover:text-ink",children:"See all approvals →"})})]})}function g(){let{pending:e,refresh:t}=(0,x.e)(),{updates:r}=(0,m.z)(),[i,l]=(0,a.useState)(!1),o=(0,a.useRef)(null),s=e.length+r.length,c=(0,a.useCallback)(()=>l(!1),[]),u=(0,a.useCallback)(()=>l(e=>!e),[]),p=(0,a.useCallback)(async()=>{await t()},[t]);return(0,n.jsxs)("div",{ref:o,className:"relative",children:[(0,n.jsx)(h.A,{"aria-label":s>0?`Notifications (${s} pending)`:"Notifications",title:"Notifications",onClick:u,badge:s>0,children:(0,n.jsx)(d.I,{size:15})}),i&&(0,n.jsx)(b,{items:e,updates:r,onClose:c,onApproved:p})]})}},3816:(e,t,r)=>{r.d(t,{S:()=>a,n:()=>i});var n=r(80351);let a=15e3;function i(e,t,r=!1){(0,n.useEffect)(()=>{r&&e();let n=setInterval(()=>{document.hidden||e()},t);function a(){document.hidden||e()}return document.addEventListener("visibilitychange",a),()=>{clearInterval(n),document.removeEventListener("visibilitychange",a)}},[e,t,r])}},4978:(e,t,r)=>{function n(e){return"string"==typeof e?new Date(e):e}function a(e){if(!e)return"—";let t=n(e),r=Math.floor((Date.now()-t.getTime())/1e3);if(r<60)return"just now";let a=Math.floor(r/60);if(a<60)return`${a}m ago`;let i=Math.floor(a/60);if(i<24)return`${i}h ago`;let l=Math.floor(i/24);return 1===l?"yesterday":l<7?`${l}d ago`:t.toLocaleDateString(void 0,{month:"short",day:"numeric"})}function i(e){return e?n(e).toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"—"}function l(e){return e?n(e).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",hour12:!1}):"—"}function o(e,t){return e.length>t?e.slice(0,t)+"…":e}function s(e){if(!e)return"—";let t=Math.round((n(e).getTime()-Date.now())/1e3),r=Math.abs(t),a=r<60?`${r}s`:r<3600?`${Math.round(r/60)} min`:r<86400?`${Math.round(r/3600)} h`:`${Math.round(r/86400)} d`;return t>=0?`expires in ${a}`:`expired ${a} ago`}function d(e){return!!e&&n(e).getTime()<Date.now()}r.d(t,{B8:()=>s,KW:()=>a,Yq:()=>i,_d:()=>d,ei:()=>l,xv:()=>o})},18377:(e,t,r)=>{r.d(t,{ApprovalsProvider:()=>s,e:()=>c});var n=r(48503),a=r(80351),i=r(40229),l=r(3816);let o=(0,a.createContext)(null);function s({initial:e,children:t}){let[r,d]=(0,a.useState)(e),c=(0,a.useCallback)(async()=>{try{let e=await (0,i.B)({status:"pending"});if(!e.ok)return;d(e.data.map(e=>({id:e.id,jobId:e.jobId,toolName:e.toolName,agentName:e.agentName,toolInput:e.toolInput,requestedAt:e.requestedAt,jobChannel:e.jobChannel,conversationChannel:e.conversationChannel})))}catch(e){console.error("[ApprovalsProvider] reading the pending approvals failed",e)}},[]);(0,l.n)(c,15e3);let u=(0,a.useCallback)(async()=>{await c()},[c]),h=(0,a.useMemo)(()=>({pending:r,refresh:u}),[r,u]);return(0,n.jsx)(o.Provider,{value:h,children:t})}let d={pending:[],refresh:async()=>{}};function c(){let e=(0,a.useContext)(o);return e||(console.warn("[useApprovals] called outside <ApprovalsProvider> — returning empty state."),d)}},40229:(e,t,r)=>{r.d(t,{B:()=>a});var n=r(2439);let a=(0,n.createServerReference)("40e54e694e429d5ce2b48342a8864e448082e3addd",n.callServer,void 0,n.findSourceMapURL,"listApprovalsAction")},57910:(e,t,r)=>{r.d(t,{SkillUpdatesProvider:()=>d,z:()=>u});var n=r(48503),a=r(80351),i=r(2439);let l=(0,i.createServerReference)("00f00e5cbcbfbf91854a8bd87e5167fb68905946d6",i.callServer,void 0,i.findSourceMapURL,"listSkillUpdatesAction");var o=r(3816);let s=(0,a.createContext)(null);function d({initial:e,children:t}){let[r,i]=(0,a.useState)(e),c=(0,a.useCallback)(async()=>{let e=await l();e.ok&&i(e.data)},[]);(0,o.n)(c,15e3);let u=(0,a.useCallback)(()=>{c()},[c]);return(0,n.jsx)(s.Provider,{value:{updates:r,refresh:u},children:t})}let c={updates:[],refresh:()=>{}};function u(){let e=(0,a.useContext)(s);return e||(console.warn("[useSkillUpdates] called outside <SkillUpdatesProvider> — returning empty state."),c)}},75551:(e,t,r)=>{r.d(t,{A:()=>s});var n=r(48503),a=r(22208),i=r.n(a);let l={default:"border-rule-2 text-ink-2 hover:bg-hover hover:text-ink",danger:"border-err/30 text-err hover:border-err hover:bg-warn-bg",success:"border-ok/30 text-ok hover:border-ok hover:bg-ok-bg"},o={default:"border-rule-2 text-ink-2 hover:bg-hover hover:text-ink",danger:"border-err/20 text-err/70 hover:border-err hover:bg-warn-bg hover:text-err",success:"border-ok/20 text-ok/70 hover:border-ok hover:bg-ok-bg hover:text-ok"};function s(e){let{tone:t="default",disabled:r,className:a=""}=e;if(e.square){let{icon:l,title:s}=e,d=`inline-flex h-[30px] w-[30px] shrink-0 items-center justify-center rounded-md border bg-paper transition-colors disabled:opacity-40 ${o[t]} ${a}`;return"href"in e&&e.href?(0,n.jsx)(i(),{href:e.href,title:s,"aria-label":s,"aria-disabled":r||void 0,className:d,children:l}):(0,n.jsx)("button",{type:e.type??"button",onClick:e.onClick,disabled:r,title:s,"aria-label":s,className:d,children:l})}let{icon:s,children:d,title:c,responsive:u=!1}=e,h=`inline-flex h-[30px] items-center gap-1.5 rounded-md border bg-paper px-3 text-medium-12 leading-none! transition-colors disabled:opacity-40 ${l[t]} ${a}`,p=s?(0,n.jsx)("span",{className:u?"sm:hidden":"inline-flex shrink-0",children:s}):null,x=(0,n.jsx)("span",{className:u?"hidden sm:inline":"",children:d});return"href"in e&&e.href?(0,n.jsxs)(i(),{href:e.href,title:c,"aria-label":c,"aria-disabled":r||void 0,className:h,children:[p,x]}):(0,n.jsxs)("button",{type:e.type??"button",onClick:e.onClick,disabled:r,title:c,"aria-label":c,className:h,children:[p,x]})}},81098:(e,t,r)=>{r.d(t,{default:()=>s});var n=r(48503),a=r(80351),i=r(18900),l=r(87092),o=r(88088);function s(){let[e,t]=(0,a.useState)("light"),[r,s]=(0,a.useState)(!1);(0,a.useEffect)(()=>{t("u"<typeof document?"light":"dark"===document.documentElement.getAttribute("data-theme")?"dark":"light"),s(!0)},[]);let d="dark"===e?i.b:l.A,c="dark"===e?"Switch to light theme":"Switch to dark theme";return(0,n.jsx)(o.A,{onClick:()=>{let r="dark"===e?"light":"dark";document.documentElement.setAttribute("data-theme",r);try{localStorage.setItem("nodal.theme",r)}catch{}t(r)},"aria-label":c,title:c,suppressHydrationWarning:!0,children:r?(0,n.jsx)(d,{size:15}):(0,n.jsx)(l.A,{size:15})})}},82326:(e,t,r)=>{r.d(t,{C:()=>a});var n=r(2439);let a=(0,n.createServerReference)("4022b75746d9f1f30d837a16dfa869b40cd0bfcfd9",n.callServer,void 0,n.findSourceMapURL,"resolveApprovalAction")},86045:(e,t,r)=>{r.d(t,{C5:()=>s,Z4:()=>o});var n=r(80351);let a=[],i=!1;function l(e){if("Escape"!==e.key||e.defaultPrevented)return;let t=a[a.length-1];t&&(e.preventDefault(),t.onEscape())}function o(e,t){let r=(0,n.useRef)(t);(0,n.useEffect)(()=>{r.current=t}),(0,n.useEffect)(()=>{if(!e)return;let t={onEscape:()=>r.current()};return a.push(t),i||(window.addEventListener("keydown",l),i=!0),()=>{let e;-1!==(e=a.indexOf(t))&&a.splice(e,1),0===a.length&&i&&(window.removeEventListener("keydown",l),i=!1)}},[e])}let s=()=>{}},88088:(e,t,r)=>{r.d(t,{A:()=>l});var n=r(48503);let a={xs:"h-7 w-7",sm:"h-[30px] w-[30px]",md:"h-[34px] w-[34px]"},i={chrome:"border border-rule-2 bg-paper text-ink-2 hover:text-ink",subtle:"bg-hover-2 text-ink-2 hover:bg-hover",ink:"bg-ink text-canvas hover:brightness-[0.92]"};function l({children:e,badge:t,size:r="md",shape:o="square",fill:s="chrome",ghost:d=!1,className:c="",type:u="button",ref:h,...p}){let x=d?"text-ink-2 hover:text-ink":`${a[r]} ${"round"===o?"rounded-full":"md"===r?"rounded-md":"rounded-[7px]"} ${i[s]}`;return(0,n.jsxs)("button",{ref:h,type:u,className:`relative flex shrink-0 items-center justify-center transition-colors disabled:opacity-40 ${x} ${c}`,...p,children:[e,t&&(0,n.jsx)("span",{className:"absolute top-[6px] right-[7px] h-1.5 w-1.5 rounded-full bg-skill-vivid"})]})}}}]);
@@ -1,4 +1,4 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8551],{7576:(e,t,a)=>{a.d(t,{A:()=>i});var n=a(48503),o=a(80351);let s={ink:"accent-ink",agent:"accent-agent-vivid",skill:"accent-skill-vivid",connector:"accent-conn-vivid"};function i({label:e,tone:t="ink",id:a,className:r="",containerClassName:l="",...d}){let c=(0,o.useId)(),h=a??c,u=(0,n.jsx)("input",{id:h,type:"checkbox",className:`h-4 w-4 shrink-0 cursor-pointer rounded border-rule disabled:cursor-not-allowed disabled:opacity-50 ${s[t]} ${r}`,...d});return e?(0,n.jsxs)("label",{htmlFor:h,className:`flex cursor-pointer items-center gap-2 text-sm text-ink ${l}`,children:[u,e]}):(0,n.jsx)("div",{className:l,children:u})}},32751:(e,t,a)=>{a.d(t,{jz:()=>P,yE:()=>W,Ww:()=>L,t:()=>j});let n={slug:"obsidian",name:"Obsidian",description:"Read, search, create, and edit notes in the Obsidian vault.",requiredBuiltins:[],content:`Skill for working on an Obsidian vault via the filesystem: read, list, search, create, edit notes, with full mastery of the Obsidian Flavored Markdown syntax.
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5925],{7576:(e,t,a)=>{a.d(t,{A:()=>i});var n=a(48503),o=a(80351);let s={ink:"accent-ink",agent:"accent-agent-vivid",skill:"accent-skill-vivid",connector:"accent-conn-vivid"};function i({label:e,tone:t="ink",id:a,className:r="",containerClassName:l="",...d}){let c=(0,o.useId)(),h=a??c,u=(0,n.jsx)("input",{id:h,type:"checkbox",className:`h-4 w-4 shrink-0 cursor-pointer rounded border-rule disabled:cursor-not-allowed disabled:opacity-50 ${s[t]} ${r}`,...d});return e?(0,n.jsxs)("label",{htmlFor:h,className:`flex cursor-pointer items-center gap-2 text-sm text-ink ${l}`,children:[u,e]}):(0,n.jsx)("div",{className:l,children:u})}},60128:(e,t,a)=>{a.d(t,{A:()=>d});var n=a(48503),o=a(64178),s=a(68269),i=a(90566);let r={done:"Done",warn:"Attention",run:"Running",idle:"Idle","lvl-info":"INFO","lvl-ok":"OK","lvl-warn":"WARN","lvl-err":"ERR"},l={done:"bg-ok-bg text-ok",warn:"bg-warn-bg text-warn",run:"bg-run-bg text-run",idle:"bg-black/5 text-ink-3 dark:bg-white/5","lvl-info":"bg-black/5 text-ink-3 dark:bg-white/5","lvl-ok":"bg-ok-bg text-ok","lvl-warn":"bg-warn-bg text-warn","lvl-err":"bg-warn-bg text-err"};function d({variant:e,label:t,icon:a,className:c=""}){let h=t??r[e],u=null;return void 0!==a?u=a:"done"===e?u=(0,n.jsx)(o.r,{size:11,weight:"regular"}):"warn"===e?u=(0,n.jsx)(s.N,{size:11,weight:"regular"}):"run"===e&&(u=(0,n.jsx)(i.A,{variant:"blue",size:"sm"})),(0,n.jsxs)("span",{className:`inline-flex h-[22px] items-center gap-1.5 rounded-[5px] px-2.5 text-medium-12 leading-none! ${l[e]} ${c}`,children:[u,h]})}},67117:(e,t,a)=>{a.d(t,{jz:()=>W,yE:()=>L,Ww:()=>M,t:()=>B});let n={slug:"obsidian",name:"Obsidian",description:"Read, search, create, and edit notes in the Obsidian vault.",requiredBuiltins:[],content:`Skill for working on an Obsidian vault via the filesystem: read, list, search, create, edit notes, with full mastery of the Obsidian Flavored Markdown syntax.
2
2
 
3
3
  ### Setup
4
4
 
@@ -1317,17 +1317,33 @@ Only call tools that are necessary for the stated task. Do not read files, query
1317
1317
  - ❌ Swallowing an error and returning a plausible-but-unverified result.
1318
1318
  - ❌ Calling a destructive tool as a shortcut because the non-destructive path is slower.
1319
1319
  - ❌ Guessing a file path, endpoint, or identifier instead of reading it from context.
1320
- `},p='### Path conventions\n\nAll Office tools take a **workspace-relative path**. For agents with a single workspace the label is optional (e.g. `report.xlsx`). For agents with multiple workspaces, prefix with the workspace label and a slash (e.g. `docs/report.xlsx` for the workspace labelled "docs"). Never use absolute paths.';function m(e,t){return`### Read → modify → save discipline
1320
+ `},p={slug:"platform-support",name:"Know the platform you run in",description:'Look the platform up before saying something is unsupported, and answer "how do I" with the exact place in the dashboard.',requiredBuiltins:["nodal_docs"],kind:"baseline",surfaces:["job"],content:`## The platform you are running in
1321
+
1322
+ You run inside **Nodal-Agents**: the dashboard your owner is looking at, the runner executing this job, the database holding your memory. Its features are documented, and \`nodal_docs\` searches that documentation offline, in one call, with no model and no network.
1323
+
1324
+ ### Look before you say no
1325
+
1326
+ Before you tell anyone that something is unsupported, impossible, not a feature, or would need to be built, call \`nodal_docs\` with what they asked for, in their own words. You are the support desk for this product: a flat refusal from you is the user's answer, and they have no way to know you never checked.
1327
+
1328
+ This is not a suggestion for hard questions only. The failure it exists for looked easy: asked whether a Telegram bot could be set up, an agent answered that Telegram was not supported and offered to build an MCP server instead. Telegram is one of four messaging channels the product ships, with its own tab in the agent's own settings.
1329
+
1330
+ ### Answer "how do I" with a place
1331
+
1332
+ When someone asks how to do something on this platform, the answer is a PLACE and the steps, not a description. \`nodal_docs\` returns the passage and the URL it came from: name the screen, the tab and the field the way the documentation names them, and give the link. "You configure it in the Channels tab of the agent's settings, then paste the token in Bot token" is an answer. "Nodal supports messaging integrations" is not.
1333
+
1334
+ ### What the documentation does not cover
1335
+
1336
+ If \`nodal_docs\` comes back with nothing, say so plainly: you looked and the documentation does not answer it. That is a real answer, and it is different from "this does not exist". Never fill the gap with what seems likely about a product whose manual you just read and did not find it in.`},m='### Path conventions\n\nAll Office tools take a **workspace-relative path**. For agents with a single workspace the label is optional (e.g. `report.xlsx`). For agents with multiple workspaces, prefix with the workspace label and a slash (e.g. `docs/report.xlsx` for the workspace labelled "docs"). Never use absolute paths.';function g(e,t){return`### Read → modify → save discipline
1321
1337
 
1322
1338
  1. **Always read before writing.** Call \`${e}\` first to confirm the file exists and understand its current state.
1323
1339
  2. **One operation at a time.** Prefer targeted mutations (${t.map(e=>`\`${e}\``).join(", ")}) over full rewrites when only part of the content changes.
1324
- 3. **Fail loud on error.** If a tool returns \`ok:false\`, surface the \`reason\` to the user immediately. Do NOT silently retry a different path.`}let g="- **25 MiB cap per file** (read and write). Inform the user and suggest splitting if exceeded.",f=["xlsx_read","xlsx_set_cell","xlsx_set_range","xlsx_append_rows","xlsx_add_sheet","xlsx_create","xlsx_delete_rows","xlsx_format_range","xlsx_insert_rows","xlsx_insert_columns","xlsx_delete_columns","xlsx_merge_cells","xlsx_unmerge_cells","xlsx_set_column_widths","xlsx_freeze_panes","xlsx_find_cells"],w={slug:"spreadsheet-editing",name:"Spreadsheet editing",description:"Create and edit Excel workbooks in the agent workspace — values, formulae, formatting, rows/columns, merges and freeze panes. Spreadsheets only (no Word or PowerPoint).",requiredBuiltins:[...f],toolGroup:!0,content:`## Spreadsheet editing discipline
1340
+ 3. **Fail loud on error.** If a tool returns \`ok:false\`, surface the \`reason\` to the user immediately. Do NOT silently retry a different path.`}let f="- **25 MiB cap per file** (read and write). Inform the user and suggest splitting if exceeded.",w=["xlsx_read","xlsx_set_cell","xlsx_set_range","xlsx_append_rows","xlsx_add_sheet","xlsx_create","xlsx_delete_rows","xlsx_format_range","xlsx_insert_rows","xlsx_insert_columns","xlsx_delete_columns","xlsx_merge_cells","xlsx_unmerge_cells","xlsx_set_column_widths","xlsx_freeze_panes","xlsx_find_cells"],y={slug:"spreadsheet-editing",name:"Spreadsheet editing",description:"Create and edit Excel workbooks in the agent workspace — values, formulae, formatting, rows/columns, merges and freeze panes. Spreadsheets only (no Word or PowerPoint).",requiredBuiltins:[...w],toolGroup:!0,content:`## Spreadsheet editing discipline
1325
1341
 
1326
1342
  This skill unlocks the \`xlsx_*\` tools for working with Excel workbooks stored in the agent's workspace.
1327
1343
 
1328
- ${p}
1344
+ ${m}
1329
1345
 
1330
- ${m("xlsx_read",["xlsx_set_cell","xlsx_set_range"])}
1346
+ ${g("xlsx_read",["xlsx_set_cell","xlsx_set_range"])}
1331
1347
 
1332
1348
  Use \`xlsx_find_cells\` to locate data before mutating it. \`xlsx_delete_rows\` and \`xlsx_delete_columns\` are irreversible — confirm the range with \`xlsx_read\` first and present what will be deleted before proceeding.
1333
1349
 
@@ -1339,19 +1355,19 @@ Read with \`xlsx_read\` and \`xlsx_find_cells\`; create with \`xlsx_create\`; ed
1339
1355
 
1340
1356
  - **Formulae are written, not computed**: \`=SUM(B2:B10)\` is stored and recalculates when the user opens the file. Reading a formula cell returns the formula (and the last cached value if present), not a fresh computation.
1341
1357
  - **No pivot-table or chart support** (library limit): they cannot be created, and the library cannot preserve existing ones through an edit either — so any mutation tool REFUSES a workbook that contains charts or pivot tables (\`ok:false\` with the reason) instead of silently destroying them. Tell the user why, and offer to work on a copy without the charts, or compute the aggregation yourself and write a formatted summary sheet with formulas.
1342
- ${g}
1358
+ ${f}
1343
1359
 
1344
1360
  ### When to ask for confirmation
1345
1361
 
1346
1362
  - Before \`xlsx_delete_rows\` / \`xlsx_delete_columns\`: always confirm range and expected impact.
1347
1363
  - Before \`xlsx_create\` with \`overwrite:true\`: confirm the file should be replaced.
1348
- `},y=["docx_read","docx_create","docx_append_paragraphs","docx_replace_text"],v={slug:"document-editing",name:"Document editing",description:"Create and edit Word documents in the agent workspace — headings, lists, tables, images, append and find/replace. Documents only (no Excel or PowerPoint).",requiredBuiltins:[...y],toolGroup:!0,content:`## Document editing discipline
1364
+ `},v=["docx_read","docx_create","docx_append_paragraphs","docx_replace_text"],b={slug:"document-editing",name:"Document editing",description:"Create and edit Word documents in the agent workspace — headings, lists, tables, images, append and find/replace. Documents only (no Excel or PowerPoint).",requiredBuiltins:[...v],toolGroup:!0,content:`## Document editing discipline
1349
1365
 
1350
1366
  This skill unlocks the \`docx_*\` tools for working with Word documents stored in the agent's workspace.
1351
1367
 
1352
- ${p}
1368
+ ${m}
1353
1369
 
1354
- ${m("docx_read",["docx_replace_text","docx_append_paragraphs"])}
1370
+ ${g("docx_read",["docx_replace_text","docx_append_paragraphs"])}
1355
1371
 
1356
1372
  ### Capabilities
1357
1373
 
@@ -1360,18 +1376,18 @@ Read with \`docx_read\` (text including tables); create with \`docx_create\` (he
1360
1376
  ### Known limits — state them, never work around them silently
1361
1377
 
1362
1378
  - **Text replacement is literal and run-scoped**: \`docx_replace_text\` replaces occurrences that live inside a single text run. Occurrences split across formatting runs are counted in \`skipped_fragmented\` — report them to the user rather than guessing.
1363
- ${g}
1379
+ ${f}
1364
1380
 
1365
1381
  ### When to ask for confirmation
1366
1382
 
1367
1383
  - Before \`docx_create\` with \`overwrite:true\`: confirm the file should be replaced.
1368
- `},b=["pptx_read","pptx_create","pptx_append_slides","pptx_replace_text"],k={slug:"presentation-editing",name:"Presentation editing",description:"Create and edit PowerPoint decks in the agent workspace — slides, bullets, images, tables, speaker notes, append and find/replace. Presentations only (no Excel or Word).",requiredBuiltins:[...b],toolGroup:!0,content:`## Presentation editing discipline
1384
+ `},k=["pptx_read","pptx_create","pptx_append_slides","pptx_replace_text"],x={slug:"presentation-editing",name:"Presentation editing",description:"Create and edit PowerPoint decks in the agent workspace — slides, bullets, images, tables, speaker notes, append and find/replace. Presentations only (no Excel or Word).",requiredBuiltins:[...k],toolGroup:!0,content:`## Presentation editing discipline
1369
1385
 
1370
1386
  This skill unlocks the \`pptx_*\` tools for working with PowerPoint decks stored in the agent's workspace.
1371
1387
 
1372
- ${p}
1388
+ ${m}
1373
1389
 
1374
- ${m("pptx_read",["pptx_replace_text","pptx_append_slides"])}
1390
+ ${g("pptx_read",["pptx_replace_text","pptx_append_slides"])}
1375
1391
 
1376
1392
  ### Capabilities
1377
1393
 
@@ -1380,12 +1396,12 @@ Read with \`pptx_read\` (per-slide text); create with \`pptx_create\` (titles, b
1380
1396
  ### Known limits — state them, never work around them silently
1381
1397
 
1382
1398
  - **Text replacement is literal and run-scoped**: \`pptx_replace_text\` replaces occurrences that live inside a single text run. Occurrences split across formatting runs are counted in \`skipped_fragmented\` — report them to the user rather than guessing.
1383
- ${g}
1399
+ ${f}
1384
1400
 
1385
1401
  ### When to ask for confirmation
1386
1402
 
1387
1403
  - Before \`pptx_create\` with \`overwrite:true\`: confirm the file should be replaced.
1388
- `},x={slug:"office-editing",name:"Office editing (all formats)",description:"Create and edit Excel, Word, and PowerPoint files stored in the agent workspace. Grants all three formats at once — if the agent only needs one, assign Spreadsheet, Document or Presentation editing instead and save the other formats’ context cost.",requiredBuiltins:[...f,...y,...b],toolGroup:!0,content:'## Office editing discipline\n\nThis skill unlocks the `xlsx_*`, `docx_*`, and `pptx_*` tools for working with Office files stored in the agent\'s workspace.\n\n### Path conventions\n\nAll Office tools take a **workspace-relative path**. For agents with a single workspace the label is optional (e.g. `report.xlsx`). For agents with multiple workspaces, prefix with the workspace label and a slash (e.g. `docs/report.xlsx` for the workspace labelled "docs"). Never use absolute paths.\n\n### Read → modify → save discipline\n\n1. **Always read before writing.** Call `xlsx_read` / `docx_read` / `pptx_read` first to confirm the file exists and understand its current state. Use `xlsx_find_cells` to locate data before mutating it.\n2. **One operation at a time.** Prefer targeted mutations (`xlsx_set_cell`, `xlsx_set_range`, `docx_replace_text`, `pptx_replace_text`) over full rewrites when only part of the content changes.\n3. **Confirm destructive operations.** `xlsx_delete_rows` and `xlsx_delete_columns` are irreversible — confirm the range with `xlsx_read` first and present what will be deleted before proceeding.\n4. **Fail loud on error.** If a tool returns `ok:false`, surface the `reason` to the user immediately. Do NOT silently retry a different path.\n\n### Capabilities\n\n| Format | Read | Create new | In-place edit |\n|--------|------|------------|---------------|\n| Excel (.xlsx) | ✅ xlsx_read, xlsx_find_cells | ✅ xlsx_create | ✅ Full edit: values, formulae (`=SUM(...)`), formatting (xlsx_format_range), structure (insert/delete rows and columns, merge, widths, freeze panes). Existing styles and formulae elsewhere in the workbook are preserved. Workbooks containing charts or pivot tables are REFUSED for editing (see limits). |\n| Word (.docx) | ✅ docx_read (text incl. tables) | ✅ docx_create (headings, bold/italic, bullet/numbered lists, tables, images, page breaks) | ✅ docx_append_paragraphs (faithful — original formatting preserved) and docx_replace_text (literal find/replace) |\n| PowerPoint (.pptx) | ✅ pptx_read (per-slide text) | ✅ pptx_create (titles, bullets, body, images, tables, speaker notes, colour theme) | ✅ pptx_append_slides (existing slides untouched) and pptx_replace_text |\n\n### Known limits — state them, never work around them silently\n\n- **Formulae are written, not computed**: `=SUM(B2:B10)` is stored and recalculates when the user opens the file. Reading a formula cell returns the formula (and the last cached value if present), not a fresh computation.\n- **No pivot-table or chart support** in .xlsx (library limit): they cannot be created, and the library cannot preserve existing ones through an edit either — so any mutation tool REFUSES a workbook that contains charts or pivot tables (`ok:false` with the reason) instead of silently destroying them. Tell the user why, and offer to work on a copy without the charts, or compute the aggregation yourself and write a formatted summary sheet with formulas.\n- **Text replacement is literal and run-scoped**: `docx_replace_text` / `pptx_replace_text` replace occurrences that live inside a single text run. Occurrences split across formatting runs are counted in `skipped_fragmented` — report them to the user rather than guessing.\n- **25 MiB cap per file** (read and write). Inform the user and suggest splitting if exceeded.\n\n### When to ask for confirmation\n\n- Before `xlsx_delete_rows` / `xlsx_delete_columns`: always confirm range and expected impact.\n- Before `xlsx_create` / `docx_create` / `pptx_create` with `overwrite:true`: confirm the file should be replaced.\n'},_={slug:"dev",name:"Software development",description:"How to develop: read before writing, make targeted edits instead of rewrites, follow the conventions already in the project, keep one app per top-level folder, and verify before claiming done. Attach it to every agent that writes code — with or without a coding CLI.",content:`## Software development
1404
+ `},_={slug:"office-editing",name:"Office editing (all formats)",description:"Create and edit Excel, Word, and PowerPoint files stored in the agent workspace. Grants all three formats at once — if the agent only needs one, assign Spreadsheet, Document or Presentation editing instead and save the other formats’ context cost.",requiredBuiltins:[...w,...v,...k],toolGroup:!0,content:'## Office editing discipline\n\nThis skill unlocks the `xlsx_*`, `docx_*`, and `pptx_*` tools for working with Office files stored in the agent\'s workspace.\n\n### Path conventions\n\nAll Office tools take a **workspace-relative path**. For agents with a single workspace the label is optional (e.g. `report.xlsx`). For agents with multiple workspaces, prefix with the workspace label and a slash (e.g. `docs/report.xlsx` for the workspace labelled "docs"). Never use absolute paths.\n\n### Read → modify → save discipline\n\n1. **Always read before writing.** Call `xlsx_read` / `docx_read` / `pptx_read` first to confirm the file exists and understand its current state. Use `xlsx_find_cells` to locate data before mutating it.\n2. **One operation at a time.** Prefer targeted mutations (`xlsx_set_cell`, `xlsx_set_range`, `docx_replace_text`, `pptx_replace_text`) over full rewrites when only part of the content changes.\n3. **Confirm destructive operations.** `xlsx_delete_rows` and `xlsx_delete_columns` are irreversible — confirm the range with `xlsx_read` first and present what will be deleted before proceeding.\n4. **Fail loud on error.** If a tool returns `ok:false`, surface the `reason` to the user immediately. Do NOT silently retry a different path.\n\n### Capabilities\n\n| Format | Read | Create new | In-place edit |\n|--------|------|------------|---------------|\n| Excel (.xlsx) | ✅ xlsx_read, xlsx_find_cells | ✅ xlsx_create | ✅ Full edit: values, formulae (`=SUM(...)`), formatting (xlsx_format_range), structure (insert/delete rows and columns, merge, widths, freeze panes). Existing styles and formulae elsewhere in the workbook are preserved. Workbooks containing charts or pivot tables are REFUSED for editing (see limits). |\n| Word (.docx) | ✅ docx_read (text incl. tables) | ✅ docx_create (headings, bold/italic, bullet/numbered lists, tables, images, page breaks) | ✅ docx_append_paragraphs (faithful — original formatting preserved) and docx_replace_text (literal find/replace) |\n| PowerPoint (.pptx) | ✅ pptx_read (per-slide text) | ✅ pptx_create (titles, bullets, body, images, tables, speaker notes, colour theme) | ✅ pptx_append_slides (existing slides untouched) and pptx_replace_text |\n\n### Known limits — state them, never work around them silently\n\n- **Formulae are written, not computed**: `=SUM(B2:B10)` is stored and recalculates when the user opens the file. Reading a formula cell returns the formula (and the last cached value if present), not a fresh computation.\n- **No pivot-table or chart support** in .xlsx (library limit): they cannot be created, and the library cannot preserve existing ones through an edit either — so any mutation tool REFUSES a workbook that contains charts or pivot tables (`ok:false` with the reason) instead of silently destroying them. Tell the user why, and offer to work on a copy without the charts, or compute the aggregation yourself and write a formatted summary sheet with formulas.\n- **Text replacement is literal and run-scoped**: `docx_replace_text` / `pptx_replace_text` replace occurrences that live inside a single text run. Occurrences split across formatting runs are counted in `skipped_fragmented` — report them to the user rather than guessing.\n- **25 MiB cap per file** (read and write). Inform the user and suggest splitting if exceeded.\n\n### When to ask for confirmation\n\n- Before `xlsx_delete_rows` / `xlsx_delete_columns`: always confirm range and expected impact.\n- Before `xlsx_create` / `docx_create` / `pptx_create` with `overwrite:true`: confirm the file should be replaced.\n'},T={slug:"dev",name:"Software development",description:"How to develop: read before writing, make targeted edits instead of rewrites, follow the conventions already in the project, keep one app per top-level folder, and verify before claiming done. Attach it to every agent that writes code — with or without a coding CLI.",content:`## Software development
1389
1405
 
1390
1406
  You write and change code. This is how you do it, whatever tools you hold — a coding CLI, or plain file reads and edits.
1391
1407
 
@@ -1415,7 +1431,7 @@ You write and change code. This is how you do it, whatever tools you hold — a
1415
1431
  ### Getting it reviewed
1416
1432
 
1417
1433
  12. **Code you changed is not done until someone else has looked at it.** If you can delegate a review, do it, stating what was asked, what changed file by file, and how to verify. If you cannot, end your result with a clear REVIEW-REQUIRED marker and the same information — your orchestrator dispatches it from there.
1418
- `},T={slug:"code-review",name:"Code review",description:"Review code work delegated by another agent and return a structured verdict (approve / request changes with findings). Meant for a read-only reviewer agent; pair it with the Read-only preset in Autonomy.",requiredBuiltins:["review_verdict"],content:`## Code review
1434
+ `},I={slug:"code-review",name:"Code review",description:"Review code work delegated by another agent and return a structured verdict (approve / request changes with findings). Meant for a read-only reviewer agent; pair it with the Read-only preset in Autonomy.",requiredBuiltins:["review_verdict"],content:`## Code review
1419
1435
 
1420
1436
  You review code work that another agent (or the owner) hands you, and you answer with a **structured verdict**. You do not fix, rewrite, or improve the code yourself — you judge it.
1421
1437
 
@@ -1430,7 +1446,7 @@ You review code work that another agent (or the owner) hands you, and you answer
1430
1446
  5. **Deliver the verdict.** After \`review_verdict\` validates, WRITE the same verdict as your final answer — that text is what the requesting agent receives. \`return_result\` only signals that you are done; it carries nothing, and signalling it over an empty reply hands back nothing. Keep the written verdict to the verdict and its findings, without prose around them.
1431
1447
  6. **Scope: the work you were asked to review.** Pre-existing issues outside the change belong in at most one "minor" finding, not in the verdict.
1432
1448
  7. **Severity honestly**: "blocker" = wrong result, data loss, security hole, does not run. "major" = real defect worth fixing now. "minor" = advisory. Do not inflate.
1433
- `},I={slug:"request-review",name:"Request a review",description:"Hand finished code work to a reviewer so the review is actually useful: what changed, what it should do, what you already verified, and where you are unsure.",requiredBuiltins:[],content:`## Request a review
1449
+ `},S={slug:"request-review",name:"Request a review",description:"Hand finished code work to a reviewer so the review is actually useful: what changed, what it should do, what you already verified, and where you are unsure.",requiredBuiltins:[],content:`## Request a review
1434
1450
 
1435
1451
  You finished coding. Now you hand the work to a reviewer — another agent, in another job, that has **none of this conversation**. It did not see what you tried, what you rejected, what the owner asked for, or what you already tested. It sees only the files and the text you send it.
1436
1452
 
@@ -1478,7 +1494,7 @@ Ask the opposite: invite it to break the change. "Tell me what fails" gets a bet
1478
1494
  - **\`request_changes\`** — fix the findings, then request the review ONCE more, stating what you changed for each finding. Do not argue the verdict; either fix it or explain, in the new request, why it is deliberate.
1479
1495
  - **\`approve\` with minor findings** — they are advisory; state whether you applied them or deliberately left them.
1480
1496
  - **Two rounds and still failing** — stop. Report to the owner what was attempted, what still fails, and finish blocked. A third round burns budget without new information.
1481
- `},S={slug:"tool-create-agent",name:"Using create_agent",description:"How to format a create_agent call + the create-before-attach sequence and id rules.",requiredBuiltins:[],kind:"agent-internal",content:`## Using create_agent
1497
+ `},A={slug:"tool-create-agent",name:"Using create_agent",description:"How to format a create_agent call + the create-before-attach sequence and id rules.",requiredBuiltins:[],kind:"agent-internal",content:`## Using create_agent
1482
1498
 
1483
1499
  Create a new agent (a worker, or a sub-orchestrator) in your workspace, assigned under you.
1484
1500
 
@@ -1522,7 +1538,7 @@ NEVER invent an id, and don't pass an id where a name is expected. A UUID copied
1522
1538
  - ❌ attach/delegate before create → ✅ create first, then attach using the returned id.
1523
1539
  - ❌ inventing or reusing a stale id → ✅ use the id \`create_agent\` returns.
1524
1540
  - ❌ reusing a slug already in the workspace → choose a unique one.
1525
- `},A={slug:"tool-update-agent",name:"Using update_agent",description:"How to edit an existing agent (model, personality, name) + picking a valid model.",requiredBuiltins:[],kind:"agent-internal",content:`## Using update_agent
1541
+ `},C={slug:"tool-update-agent",name:"Using update_agent",description:"How to edit an existing agent (model, personality, name) + picking a valid model.",requiredBuiltins:[],kind:"agent-internal",content:`## Using update_agent
1526
1542
 
1527
1543
  Edit an EXISTING agent. Use it to change an agent's model, personality, or display name — you do NOT need to recreate it.
1528
1544
 
@@ -1552,7 +1568,7 @@ Passing an id that isn't valid for the agent's provider (e.g. \`deepseek-chat\`
1552
1568
  - ❌ guessing a model string from memory → ✅ call list_models, copy the exact id.
1553
1569
  - ❌ trying to "recreate" the agent to change its model → ✅ update_agent edits it in place.
1554
1570
  - ❌ wrong slug → the agent must exist (check the slug).
1555
- `},C={slug:"tool-attach-mcp",name:"Using attach_mcp",description:"How to make an MCP server usable by an agent (the link create_mcp does not make).",requiredBuiltins:[],kind:"agent-internal",content:`## Using attach_mcp
1571
+ `},N={slug:"tool-attach-mcp",name:"Using attach_mcp",description:"How to make an MCP server usable by an agent (the link create_mcp does not make).",requiredBuiltins:[],kind:"agent-internal",content:`## Using attach_mcp
1556
1572
 
1557
1573
  Creating an MCP server is NOT enough — its tools reach an agent only once the MCP is **attached** to that agent. \`attach_mcp\` creates that link.
1558
1574
 
@@ -1577,7 +1593,7 @@ After this, the agent's next run can call the MCP's \`<slug>__*\` tools. Without
1577
1593
  ### Common mistakes
1578
1594
  - ❌ create_mcp then delegate, expecting the tools to be there → ✅ attach first (or use attachToAgentSlug).
1579
1595
  - ❌ attaching to the orchestrator when a sub-agent needs the tools → attach to the agent that will actually use them.
1580
- `},N={slug:"tool-attach-connector",name:"Using attach_connector",description:"How to make a connector usable by an agent (the link create_connector does not make).",requiredBuiltins:[],kind:"agent-internal",content:`## Using attach_connector
1596
+ `},D={slug:"tool-attach-connector",name:"Using attach_connector",description:"How to make a connector usable by an agent (the link create_connector does not make).",requiredBuiltins:[],kind:"agent-internal",content:`## Using attach_connector
1581
1597
 
1582
1598
  Creating a connector is NOT enough — its operations reach an agent only once the connector is **attached** to that agent. \`attach_connector\` creates that link.
1583
1599
 
@@ -1600,7 +1616,7 @@ Prefer one call: \`create_connector\` with \`attachToAgentSlug: "<agent>"\`. Use
1600
1616
  ### Common mistakes
1601
1617
  - ❌ create_connector then delegate, expecting the tools to be there → ✅ attach first (or use attachToAgentSlug).
1602
1618
  - ❌ OAuth connectors (Gmail, Drive) can't be created by an agent — those are dashboard-only; you can still attach_connector an existing one.
1603
- `},D={slug:"tool-schedules",name:"Using schedules",description:"How to create/edit/pause/run recurring schedules for an agent.",requiredBuiltins:[],kind:"agent-internal",content:`## Using schedules
1619
+ `},R={slug:"tool-schedules",name:"Using schedules",description:"How to create/edit/pause/run recurring schedules for an agent.",requiredBuiltins:[],kind:"agent-internal",content:`## Using schedules
1604
1620
 
1605
1621
  A schedule fires a task for an agent on a recurring timer. Tools:
1606
1622
  - **list_schedules** — see all schedules (name, agent, when, next/last run). Use it to answer "what are my automations?" and to find a name.
@@ -1643,4 +1659,4 @@ block in your prompt tells you the current local time. There is no UTC conversio
1643
1659
  - \`notifyOnSuccess\` defaults false → runs silently. Set true if the user should get a confirmation each run.
1644
1660
  - The agent referenced by agentSlug must exist (create it first).
1645
1661
  - Need an exotic pattern (e.g. "1st of every month")? That's a dashboard-only setup — tell the user.
1646
- `},R={slug:"code-reviewer",name:"Code reviewer",summary:"Reads code and returns a verdict. Never writes. We suggest using multiple reviewers with different LLMs.",purpose:"Give it finished work and it reviews it against what was asked, then answers approve or request changes with concrete findings. It is locked to reading: every tool that could change a file or run a command is blocked, so a review can never turn into an edit. Run it on a different model from the developer — two instances of the same model share the same blind spots.",role:"worker",skills:["code-review"],presets:["read-only"],connectors:[{kind:"mcp",slug:"mcp-playwright"}],needs:["workspace"],kit:["read-only","returns a verdict"]},E={slug:"developer",name:"Developer",summary:"Writes and changes code in a folder you hand it.",purpose:"Give it a task and a folder and it works there: reads before writing, makes targeted edits rather than rewrites, follows the conventions already in the project, and verifies before claiming done. When the work is finished it hands it to a reviewer in a way that makes the review useful — what changed, what it should do, what was already checked.",role:"worker",skills:["dev","request-review"],needs:["workspace","code-runtime"],kit:["needs a folder","writes code","hands off for review"]},O={slug:"team-lead",name:"Team lead",summary:"Takes a request, breaks it down, hands the pieces to other agents.",purpose:"It receives what you ask for, states a plan before acting, and delegates each piece to the agents attached to it — a developer, a reviewer. It does not write code itself. It needs a model that can call tools, because delegating IS a tool call: on a model without that, it would simply look unhelpful.",role:"router",skills:["task-planning"],modelRequirements:["tools"],kit:["delegates","model with tools"]},q={slug:"dev-team",name:"Development",shape:"Team lead → Developer + Code reviewer",rationale:"The lead takes the request and hands it out. The developer writes. The reviewer checks, on a different model — two instances of the same model share the same blind spots.",recipes:[O.slug,E.slug,R.slug]},P=[O,E,R],W=[q];function L(e){return e.recipes.map(e=>P.find(t=>t.slug===e)).filter(e=>void 0!==e)}let M=[n,o,s,i,r,l,{slug:"markdown-output",name:"Markdown output",description:"Formats longer responses with clean, readable markdown: headings, lists, tables, fenced code blocks. Knows when plain prose is better.",requiredBuiltins:[],kind:"channel",content:"## Markdown output\n\nUse markdown to make responses scannable and useful. Apply structure where it genuinely helps; do not apply it reflexively.\n\n### When to use structure\n\n- **Headings (`##`, `###`):** Use for responses with two or more distinct sections. Do not use for answers that are one cohesive thought.\n- **Bullet lists:** Use for enumerations of 3+ parallel items where order does not matter. Do not use for flowing prose or narrative reasoning.\n- **Numbered lists:** Use for ordered steps, sequences, or ranked items.\n- **Tables:** Use to compare multiple items across multiple attributes. Do not use for a single attribute or for two items — a sentence is clearer.\n- **Bold (`**text**`):** Use to highlight key terms, important caveats, or decision points. Limit to 2–4 instances per section; overuse renders it meaningless.\n- **Italics (`*text*`):** Use sparingly for emphasis or introducing a defined term.\n\n### Code fences — always add a language tag\n\n```typescript\n// Always specify the language after the opening backticks:\n// ```typescript, ```python, ```sql, ```bash, ```json, ```yaml …\n```\n\nEven for short snippets, add the language tag. It enables syntax highlighting and signals intent.\n\nFor terminal commands, use ```bash`. For generic output or logs with no language, use ```text`.\n\n### When NOT to use markdown\n\n- Short answers (1–3 sentences): plain prose. A bullet list for two items is noisier than a sentence.\n- Conversational exchanges: direct acknowledgment of a question needs no heading.\n- Inline code references: use backticks (`variableName`), not a full fenced block.\n- Telegram or SMS delivery channels: prefer plain text with minimal formatting (the Telegram skill overrides this if both are active).\n\n### Anti-patterns\n\n- ❌ A heading for every paragraph — turns a response into a bureaucratic document.\n- ❌ Nesting bullets 3+ levels deep — restructure into sections instead.\n- ❌ Bold nearly everything — destroys the contrast that makes bold useful.\n- ❌ A table to show a single column of values — use a list.\n- ❌ Markdown in file content that will be rendered literally (e.g. a plain-text config) — emit raw text.\n"},d,c,h,u,{slug:"workspace-hygiene",name:"Workspace hygiene",description:"Reuse before recreating. One canonical folder per artifact kind. Parametrize scripts. Never write artifacts into a skill bundle.",requiredBuiltins:[],kind:"baseline",surfaces:["job"],content:'## Workspace hygiene\n\nThis is how you keep the SHARED workspace usable. It is a durable, common asset — not a scratch pad — and everything below applies to what you put THERE.\n\nYou have one when your `## Workspaces` block lists a folder labelled `shared` — that block is what your tools can actually reach, so it is the only thing to check. When a `## Shared workspace` block is also present, it lists what is already in there; its absence means the listing was not built for this turn, never that the folder is missing. If no `shared` folder is listed at all, work in the folder your `## Workspaces` block names and ignore this skill\'s folder layout.\n\n### Reuse before recreating\n\nBefore building a workflow, script, or document, check the inventory: if a file already covers the need, load it and adapt it (`file_read`, then edit or pass different arguments). Recreating an existing artifact under a new name is a failure mode, not a fresh start.\n\n### One folder per kind — inside the shared workspace\n\nThese are the canonical folders **of the shared workspace**. When you save there, use them and never invent parallel ones (no `outputs_v2/`, `my_workflows/`, files dumped at the root):\n- `workflows/` — workflow definitions (JSON)\n- `outputs/` — generated artifacts (images, exports)\n- `scripts/` — reusable scripts\n- `documents/` — reports, notes, deliverables\n\nThis layout applies to the shared workspace ONLY. If your `## Workspace` block names a folder of your own, that folder is where your work goes — do not invent a `shared/` path inside it, and do not reach for the folders above.\n\n### One workflow = one graph\n\nA saved workflow file is a reusable GRAPH (models, samplers, node wiring) — not a snapshot of one run. FORBIDDEN: saving a workflow file whose only difference from an existing one is the prompt, seed, or other run values — that is clutter, never value. Pass those as execution arguments instead (e.g. `run_workflow.py --args {"prompt": …, "seed": …}`) against the EXISTING file. The only reason to save a new workflow file is a change to the graph itself (different model, different node chain) — and it is named after the graph, not the scene.\n\n### Scripts must be reusable\n\nA script you write takes its variable values (ids, paths, prompts) as ARGUMENTS — never hardcoded in the file. If you find yourself editing a script only to change a value, parametrize it instead. Before writing a helper, check whether an installed skill already ships one (`skill_view`, then `run_skill_script`).\n\n### Skill bundles are code, not storage\n\nNever write generated artifacts into an installed skill\'s folder. Point a skill script\'s output argument at a real workspace instead — your own if you have one, otherwise the shared workspace, whose absolute path is in the `NODAL_SHARED_WORKSPACE` environment variable of every script/command you run. If a `warning` reports bundle writes, move those files out before finishing.\n\n### Leave it clean\n\nTemporary diagnostic files (probe scripts, dumps, logs) are deleted before you finish the task — or not written to the workspace at all when `stdout` suffices.'},x,w,v,k,{slug:"command-execution",name:"Command execution",description:'Run shell commands in the agent workspace (install deps, run scripts, build steps, CLIs). Every command requires your approval by default; an optional per-agent "Yolo" mode auto-runs them.',requiredBuiltins:["run_command"],content:'## Command execution\n\nThis skill unlocks the `run_command` tool, which runs a shell command in the agent\'s workspace and returns its **stdout**, **stderr** and **exit code**. Use it for anything that needs the shell: installing dependencies (`npm install`, `pip install`), running scripts (`node build.js`, `python gen.py`), build steps, or CLI tools.\n\n### How it runs\n\n- The command runs via **cmd.exe** on Windows and **/bin/sh** on Unix, so shell features like `&&`, `|` and quoting work.\n- The working directory defaults to the **workspace root**. Pass `cwd` (a workspace-relative path, e.g. `"scripts/canvas"`) to run somewhere else inside the workspace.\n- Default timeout is **300 seconds**; pass `timeout_seconds` to change it (e.g. a long native build). On timeout the command and its child processes are killed.\n\n### Discipline\n\n1. **Run, then finish.** As soon as a command gives you the output you need, STOP — write the result as your answer (or publish it with `dashboard_publish`), signal with `return_result`, and end your turn. The signal carries no content: an empty answer delivers nothing. A successful command (exit 0) is DONE; re-running it, or running another just to "double-check", only re-prompts the user for approval and goes nowhere. Run another command ONLY if the task genuinely requires a different one.\n2. **Batch multi-step work into ONE call.** A compound command (`npm install && node download_font.js && node draw_text.js`) runs as a single `run_command` — and, in approval mode, is **one approval** instead of three. Prefer this over three separate calls.\n3. **A non-zero exit code is data, not a crash.** It is returned to you with stderr — read it, fix the cause, and retry a corrected command. Do not silently repeat the same failing command.\n4. **Stay in the workspace.** Read/write files with the `file_*` tools and target the workspace; `cwd` cannot point outside it.\n5. **Non-interactive only.** Commands that wait for input (a `y/n` prompt, a password) will hang until the timeout. Use non-interactive flags (e.g. `npm install --yes`, `--no-input`).\n6. **Output is capped** (~100k characters per stream). If you need full output of a verbose command, redirect it to a file in the workspace and read it back with `file_read`.\n7. **Never install heavyweight software or reinstall a service on your own initiative.** A multi-gigabyte install (a fresh app, large model downloads, a full toolchain — e.g. `comfy install`, `apt install` of a big package) is a heavy, easily-duplicated action. If a local service or CLI you need is NOT responding — a server on a port, a daemon — that is **not** a licence to install it: it may simply be down, on a different port, or misconfigured. Report that it is unreachable and **ask the user** before installing anything large. This matters most under Yolo / auto-approve, where such a command would otherwise run with no human in the loop. A transient connection failure means "tell the user it\'s unreachable", never "install a fresh copy".\n\n### Approval vs Yolo\n\nBy default **every command pauses for human approval**. The user does NOT decide on a raw command first — they decide on the **`purpose`** you provide: a short plain-language sentence, **IN THEIR LANGUAGE**, of what the command does and why. ALWAYS fill `purpose` (it is required). When the command has a real downside — deletes/overwrites files, installs software, downloads from the network, spends money, long-running, hard to undo — also fill **`impact`** (shown to the user as a ⚠️ warning); omit it only when the command is genuinely harmless / read-only. A clear `purpose` gets approved fast; an unexplained wall of shell gets rejected or ignored. If **Yolo mode** is enabled for this agent, commands run immediately without asking — still fill `purpose`/`impact` for the record.\n'},{slug:"code-task",name:"Coding CLI (Claude Code / Codex)",description:"Delegate complete dev tasks (analyse, review, debug, implement) to the coding CLI installed on this machine — Claude Code or Codex — running under the owner's subscription. Read-only by default; every run requires approval unless Yolo is enabled.",requiredBuiltins:["code_task"],toolGroup:!0,content:'## Coding CLI (code_task)\n\nThis skill unlocks the `code_task` tool: it hands a complete dev task to the **coding CLI installed and logged in by the owner** on this machine — `provider: "claude"` (Claude Code) or `provider: "codex"` (OpenAI Codex). The CLI is itself a full autonomous coding agent: it explores the working directory, reasons, and returns a final answer. Its usage counts against the **owner\'s subscription**.\n\n### What it is for\n\n- Analysing a codebase: architecture summary, "where is X handled", dependency questions.\n- Finding bugs, reviewing changes, explaining errors.\n- In `mode: "write"`: implementing a change, fixing a bug, writing tests — inside the workspace.\n\n### How to write a good task\n\n1. **Self-contained.** The CLI sees ONLY your `task` text plus the files in the working directory — none of this conversation. Include every fact it needs (file names, error messages, acceptance criteria).\n2. **One task, one call.** A run takes minutes. Give one complete task and wait for the result. NEVER re-call `code_task` for the same goal because you are unsure — re-running costs the owner real subscription usage.\n3. **Pick the mode honestly.** Default `mode: "read"` — the CLI cannot modify files or run shell commands. Use `mode: "write"` ONLY when the task requires changing files; say so in `purpose` and fill `impact`.\n4. **Pick the directory.** `cwd` is workspace-relative (e.g. `"repos/myapp"`). The run is confined to the workspace.\n4b. **Model and effort.** The owner sets per-provider defaults in the agent settings; omit `model`/`effort` to use them. Override per task only when the task warrants it (e.g. `model: "opus", effort: "high"` for a deep review; a cheaper model for a mechanical rename) — and say why in `purpose`.\n5. **Read the result as data.** `resultText` is the CLI\'s final answer. `isError: true` means the run failed — read `errorDetail`, fix the cause (or report it), do NOT blindly retry. `errorDetail` starting with `subscription_limit_reached` means the owner\'s plan window is exhausted: report it and stop — retrying cannot help until the window resets.\n6. **Report costs honestly.** `costUsd` is the notional cost the CLI reports (informative under subscription). Each agent has a daily cap; when it is hit the tool refuses to start and tells you why.\n\n### Review-required (write-mode work)\n\nCode you changed is NOT done until it has been reviewed. This is a hard rule, learned from harnesses that let coders self-certify.\n\n1. **Never conclude "done" directly after a successful write-mode `code_task` (or hand-written code changes).** The work\'s state is "review-required".\n2. **If you can delegate** (you have an `assign_*` tool whose description names a code reviewer), delegate the review yourself: pass WHAT was asked, WHAT changed (files + one-line each), and how to verify. The reviewer answers with a structured verdict (`approve` / `request_changes` + findings). If you hold the "Request a review" skill, follow it — the reviewer starts blind, and what you put in that request decides whether the review is worth its cost.\n3. **If you cannot delegate** (you are a worker), end your written ANSWER with a prominent `REVIEW-REQUIRED` marker plus the list of changed files and how to verify — that text is what your orchestrator receives, and it dispatches the review from it. `return_result` carries none of it. Never present write-mode work as finished without it.\n4. **On `request_changes`**: fix the findings (one more write-mode run), then request the review ONCE more. Maximum 2 review rounds total.\n5. **After 2 failed rounds, escalate — do not loop.** Tell the owner on their channel what was attempted and what still fails (the remaining findings), write the same thing as your answer, and finish with `return_result` status "blocked". Retrying past 2 rounds only burns budget and anti-loop caps.\n6. **If no reviewer exists anywhere**, say so explicitly in your final result: the work is delivered UNREVIEWED and the owner should review it or attach a reviewer agent.\n\n### Approval vs Yolo\n\nBy default **every run pauses for the owner\'s approval**. They decide on your `purpose` — one plain sentence, IN THEIR LANGUAGE, of what the task does and why. With a real downside (write mode: modifies files, installs deps), also fill `impact`. If **Yolo mode** is enabled for this agent, runs start immediately — still fill `purpose`/`impact` for the record.\n'},_,T,I,{slug:"tool-create-mcp",name:"Using create_mcp",description:"How to format a create_mcp call correctly — http/stdio, where the API key goes, examples.",requiredBuiltins:[],kind:"agent-internal",content:'## Using create_mcp\n\nProvision an MCP server so its tools become available in this workspace. The call is VERIFIED by actually connecting before anything is saved, so a wrong format fails loudly — get it right the first time.\n\n### Fields\n- **name**: human-readable label.\n- **slug**: lowercase-with-hyphens, unique in the workspace. It prefixes the server\'s tool names.\n- **transport**: `"http"` (remote server) or `"stdio"` (local subprocess).\n\n**transport "http":**\n- **url**: the endpoint, WITHOUT the key in it.\n- **apiKey**: the key/token — it goes HERE, never inside the url.\n- **authScheme**: how the key is sent — `"header"` (default), `"query"`, or `"bearer"`.\n- **authParamName**: the header name or query-param name that carries the key (omit only for bearer).\n\n**transport "stdio":** command, args, env.\n\n### #1 mistake: the key inside the URL\nIf you are given a URL like `https://host/api/mcp?api_key=cog_ABC`, do NOT pass that whole string as `url`. **Split it**:\n- url → `https://host/api/mcp`\n- apiKey → `cog_ABC`\n- authScheme → `query`\n- authParamName → `api_key`\n\nThe tool re-attaches the key correctly. Passing the key inside `url` (with `apiKey` empty) fails with: `transport "http" requires an apiKey`.\n\n### Worked example — key as a query param\n```json\n{\n "name": "Cogni Cortex",\n "slug": "cogni-cortex",\n "transport": "http",\n "url": "https://cogni-web-psi.vercel.app/api/mcp",\n "apiKey": "cog_ABC123",\n "authScheme": "query",\n "authParamName": "api_key"\n}\n```\n\n### Worked example — Bearer token\n```json\n{ "name": "Acme", "slug": "acme", "transport": "http", "url": "https://api.acme.com/mcp", "apiKey": "sk-live-...", "authScheme": "bearer" }\n```\n\n### Making it usable: attach it to an agent\nCreating the server does NOT make any agent able to use it. To give its tools to an agent, pass **`attachToAgentSlug`** in the same call — e.g. add `"attachToAgentSlug": "my-agent"`. (Or attach later with `attach_mcp`.) If you skip this, no agent can call the MCP\'s tools.\n\n### Common mistakes\n- ❌ creating the MCP then delegating, without attaching → the agent reports "I don\'t have that tool". Pass `attachToAgentSlug` or call `attach_mcp`.\n- ❌ key inside `url` → ✅ key in `apiKey` + the matching `authScheme`/`authParamName`.\n- ❌ omitting `authParamName` for header/query schemes → it is required (only `bearer` omits it).\n- ❌ reusing a slug already in the workspace → choose a unique one.\n'},S,A,C,N,D];M.map(e=>e.slug);let U=e=>M.filter(t=>(t.kind??"capability")===e).map(e=>e.slug);U("baseline"),U("channel"),U("capability"),U("agent-internal");let j=M.filter(e=>!0===e.toolGroup).map(e=>e.slug)},60128:(e,t,a)=>{a.d(t,{A:()=>d});var n=a(48503),o=a(64178),s=a(68269),i=a(90566);let r={done:"Done",warn:"Attention",run:"Running",idle:"Idle","lvl-info":"INFO","lvl-ok":"OK","lvl-warn":"WARN","lvl-err":"ERR"},l={done:"bg-ok-bg text-ok",warn:"bg-warn-bg text-warn",run:"bg-run-bg text-run",idle:"bg-black/5 text-ink-3 dark:bg-white/5","lvl-info":"bg-black/5 text-ink-3 dark:bg-white/5","lvl-ok":"bg-ok-bg text-ok","lvl-warn":"bg-warn-bg text-warn","lvl-err":"bg-warn-bg text-err"};function d({variant:e,label:t,icon:a,className:c=""}){let h=t??r[e],u=null;return void 0!==a?u=a:"done"===e?u=(0,n.jsx)(o.r,{size:11,weight:"regular"}):"warn"===e?u=(0,n.jsx)(s.N,{size:11,weight:"regular"}):"run"===e&&(u=(0,n.jsx)(i.A,{variant:"blue",size:"sm"})),(0,n.jsxs)("span",{className:`inline-flex h-[22px] items-center gap-1.5 rounded-[5px] px-2.5 text-medium-12 leading-none! ${l[e]} ${c}`,children:[u,h]})}},76381:(e,t,a)=>{a.d(t,{A:()=>i});var n=a(48503),o=a(80351),s=a(5829);let i=(0,o.forwardRef)(function({label:e,error:t,showCount:a,id:i,className:r="",containerClassName:l="",maxLength:d,value:c,bare:h=!1,...u},p){let m=(0,o.useId)(),g=i??m;return(0,n.jsxs)("div",{className:l,children:[e&&(0,n.jsx)(s.A,{htmlFor:g,children:e}),(0,n.jsx)("textarea",{id:g,ref:p,maxLength:d,value:c,"aria-invalid":!!t||void 0,className:h?`w-full text-ink placeholder:text-ink-4 transition-colors focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 ${r}`:`w-full resize-y rounded-md border bg-hover px-2 py-1.5 text-body-14 leading-[1.5]! text-ink placeholder:text-ink-4 transition-colors focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 ${t?"border-err focus:border-err":"border-rule focus:border-ink-3"} ${r}`,...u}),a&&void 0!==d&&"string"==typeof c&&(0,n.jsxs)("div",{className:"mt-1 text-right text-legacy-11 text-ink-4",children:[c.length," / ",d]}),t&&(0,n.jsx)("p",{className:"mt-1 text-xs text-err",children:t})]})})},90566:(e,t,a)=>{a.d(t,{A:()=>i});var n=a(48503);let o={ok:"bg-ok",lime:"bg-agent-vivid",coral:"bg-skill-vivid",blue:"bg-conn-vivid",warn:"bg-warn"},s={ok:"animate-[blip_1.4s_ease-out_infinite]",lime:"animate-[blip-lime_1.5s_ease-out_infinite]",coral:"animate-[blip-coral_1.4s_ease-out_infinite]",blue:"animate-[blip-blue_1.4s_ease-out_infinite]",warn:"animate-[blip-coral_1.4s_ease-out_infinite]"};function i({variant:e="ok",size:t="sm",animate:a=!0,className:r=""}){return(0,n.jsx)("span",{className:`inline-block shrink-0 rounded-full ${"sm"===t?"h-[7px] w-[7px]":"h-2 w-2"} ${o[e]} ${a?s[e]:""} ${r}`})}}}]);
1662
+ `},E={slug:"code-reviewer",name:"Code reviewer",summary:"Reads code and returns a verdict. Never writes. We suggest using multiple reviewers with different LLMs.",purpose:"Give it finished work and it reviews it against what was asked, then answers approve or request changes with concrete findings. It is locked to reading: every tool that could change a file or run a command is blocked, so a review can never turn into an edit. Run it on a different model from the developer — two instances of the same model share the same blind spots.",role:"worker",skills:["code-review"],presets:["read-only"],connectors:[{kind:"mcp",slug:"mcp-playwright"}],needs:["workspace"],kit:["read-only","returns a verdict"]},O={slug:"developer",name:"Developer",summary:"Writes and changes code in a folder you hand it.",purpose:"Give it a task and a folder and it works there: reads before writing, makes targeted edits rather than rewrites, follows the conventions already in the project, and verifies before claiming done. When the work is finished it hands it to a reviewer in a way that makes the review useful — what changed, what it should do, what was already checked.",role:"worker",skills:["dev","request-review"],needs:["workspace","code-runtime"],kit:["needs a folder","writes code","hands off for review"]},q={slug:"team-lead",name:"Team lead",summary:"Takes a request, breaks it down, hands the pieces to other agents.",purpose:"It receives what you ask for, states a plan before acting, and delegates each piece to the agents attached to it — a developer, a reviewer. It does not write code itself. It needs a model that can call tools, because delegating IS a tool call: on a model without that, it would simply look unhelpful.",role:"router",skills:["task-planning"],modelRequirements:["tools"],kit:["delegates","model with tools"]},P={slug:"dev-team",name:"Development",shape:"Team lead → Developer + Code reviewer",rationale:"The lead takes the request and hands it out. The developer writes. The reviewer checks, on a different model — two instances of the same model share the same blind spots.",recipes:[q.slug,O.slug,E.slug]},W=[q,O,E],L=[P];function M(e){return e.recipes.map(e=>W.find(t=>t.slug===e)).filter(e=>void 0!==e)}let U=[n,o,s,i,r,l,{slug:"markdown-output",name:"Markdown output",description:"Formats longer responses with clean, readable markdown: headings, lists, tables, fenced code blocks. Knows when plain prose is better.",requiredBuiltins:[],kind:"channel",content:"## Markdown output\n\nUse markdown to make responses scannable and useful. Apply structure where it genuinely helps; do not apply it reflexively.\n\n### When to use structure\n\n- **Headings (`##`, `###`):** Use for responses with two or more distinct sections. Do not use for answers that are one cohesive thought.\n- **Bullet lists:** Use for enumerations of 3+ parallel items where order does not matter. Do not use for flowing prose or narrative reasoning.\n- **Numbered lists:** Use for ordered steps, sequences, or ranked items.\n- **Tables:** Use to compare multiple items across multiple attributes. Do not use for a single attribute or for two items — a sentence is clearer.\n- **Bold (`**text**`):** Use to highlight key terms, important caveats, or decision points. Limit to 2–4 instances per section; overuse renders it meaningless.\n- **Italics (`*text*`):** Use sparingly for emphasis or introducing a defined term.\n\n### Code fences — always add a language tag\n\n```typescript\n// Always specify the language after the opening backticks:\n// ```typescript, ```python, ```sql, ```bash, ```json, ```yaml …\n```\n\nEven for short snippets, add the language tag. It enables syntax highlighting and signals intent.\n\nFor terminal commands, use ```bash`. For generic output or logs with no language, use ```text`.\n\n### When NOT to use markdown\n\n- Short answers (1–3 sentences): plain prose. A bullet list for two items is noisier than a sentence.\n- Conversational exchanges: direct acknowledgment of a question needs no heading.\n- Inline code references: use backticks (`variableName`), not a full fenced block.\n- Telegram or SMS delivery channels: prefer plain text with minimal formatting (the Telegram skill overrides this if both are active).\n\n### Anti-patterns\n\n- ❌ A heading for every paragraph — turns a response into a bureaucratic document.\n- ❌ Nesting bullets 3+ levels deep — restructure into sections instead.\n- ❌ Bold nearly everything — destroys the contrast that makes bold useful.\n- ❌ A table to show a single column of values — use a list.\n- ❌ Markdown in file content that will be rendered literally (e.g. a plain-text config) — emit raw text.\n"},d,c,h,u,p,{slug:"workspace-hygiene",name:"Workspace hygiene",description:"Reuse before recreating. One canonical folder per artifact kind. Parametrize scripts. Never write artifacts into a skill bundle.",requiredBuiltins:[],kind:"baseline",surfaces:["job"],content:'## Workspace hygiene\n\nThis is how you keep the SHARED workspace usable. It is a durable, common asset — not a scratch pad — and everything below applies to what you put THERE.\n\nYou have one when your `## Workspaces` block lists a folder labelled `shared` — that block is what your tools can actually reach, so it is the only thing to check. When a `## Shared workspace` block is also present, it lists what is already in there; its absence means the listing was not built for this turn, never that the folder is missing. If no `shared` folder is listed at all, work in the folder your `## Workspaces` block names and ignore this skill\'s folder layout.\n\n### Reuse before recreating\n\nBefore building a workflow, script, or document, check the inventory: if a file already covers the need, load it and adapt it (`file_read`, then edit or pass different arguments). Recreating an existing artifact under a new name is a failure mode, not a fresh start.\n\n### One folder per kind — inside the shared workspace\n\nThese are the canonical folders **of the shared workspace**. When you save there, use them and never invent parallel ones (no `outputs_v2/`, `my_workflows/`, files dumped at the root):\n- `workflows/` — workflow definitions (JSON)\n- `outputs/` — generated artifacts (images, exports)\n- `scripts/` — reusable scripts\n- `documents/` — reports, notes, deliverables\n\nThis layout applies to the shared workspace ONLY. If your `## Workspace` block names a folder of your own, that folder is where your work goes — do not invent a `shared/` path inside it, and do not reach for the folders above.\n\n### One workflow = one graph\n\nA saved workflow file is a reusable GRAPH (models, samplers, node wiring) — not a snapshot of one run. FORBIDDEN: saving a workflow file whose only difference from an existing one is the prompt, seed, or other run values — that is clutter, never value. Pass those as execution arguments instead (e.g. `run_workflow.py --args {"prompt": …, "seed": …}`) against the EXISTING file. The only reason to save a new workflow file is a change to the graph itself (different model, different node chain) — and it is named after the graph, not the scene.\n\n### Scripts must be reusable\n\nA script you write takes its variable values (ids, paths, prompts) as ARGUMENTS — never hardcoded in the file. If you find yourself editing a script only to change a value, parametrize it instead. Before writing a helper, check whether an installed skill already ships one (`skill_view`, then `run_skill_script`).\n\n### Skill bundles are code, not storage\n\nNever write generated artifacts into an installed skill\'s folder. Point a skill script\'s output argument at a real workspace instead — your own if you have one, otherwise the shared workspace, whose absolute path is in the `NODAL_SHARED_WORKSPACE` environment variable of every script/command you run. If a `warning` reports bundle writes, move those files out before finishing.\n\n### Leave it clean\n\nTemporary diagnostic files (probe scripts, dumps, logs) are deleted before you finish the task — or not written to the workspace at all when `stdout` suffices.'},_,y,b,x,{slug:"command-execution",name:"Command execution",description:'Run shell commands in the agent workspace (install deps, run scripts, build steps, CLIs). Every command requires your approval by default; an optional per-agent "Yolo" mode auto-runs them.',requiredBuiltins:["run_command"],content:'## Command execution\n\nThis skill unlocks the `run_command` tool, which runs a shell command in the agent\'s workspace and returns its **stdout**, **stderr** and **exit code**. Use it for anything that needs the shell: installing dependencies (`npm install`, `pip install`), running scripts (`node build.js`, `python gen.py`), build steps, or CLI tools.\n\n### How it runs\n\n- The command runs via **cmd.exe** on Windows and **/bin/sh** on Unix, so shell features like `&&`, `|` and quoting work.\n- The working directory defaults to the **workspace root**. Pass `cwd` (a workspace-relative path, e.g. `"scripts/canvas"`) to run somewhere else inside the workspace.\n- Default timeout is **300 seconds**; pass `timeout_seconds` to change it (e.g. a long native build). On timeout the command and its child processes are killed.\n\n### Discipline\n\n1. **Run, then finish.** As soon as a command gives you the output you need, STOP — write the result as your answer (or publish it with `dashboard_publish`), signal with `return_result`, and end your turn. The signal carries no content: an empty answer delivers nothing. A successful command (exit 0) is DONE; re-running it, or running another just to "double-check", only re-prompts the user for approval and goes nowhere. Run another command ONLY if the task genuinely requires a different one.\n2. **Batch multi-step work into ONE call.** A compound command (`npm install && node download_font.js && node draw_text.js`) runs as a single `run_command` — and, in approval mode, is **one approval** instead of three. Prefer this over three separate calls.\n3. **A non-zero exit code is data, not a crash.** It is returned to you with stderr — read it, fix the cause, and retry a corrected command. Do not silently repeat the same failing command.\n4. **Stay in the workspace.** Read/write files with the `file_*` tools and target the workspace; `cwd` cannot point outside it.\n5. **Non-interactive only.** Commands that wait for input (a `y/n` prompt, a password) will hang until the timeout. Use non-interactive flags (e.g. `npm install --yes`, `--no-input`).\n6. **Output is capped** (~100k characters per stream). If you need full output of a verbose command, redirect it to a file in the workspace and read it back with `file_read`.\n7. **Never install heavyweight software or reinstall a service on your own initiative.** A multi-gigabyte install (a fresh app, large model downloads, a full toolchain — e.g. `comfy install`, `apt install` of a big package) is a heavy, easily-duplicated action. If a local service or CLI you need is NOT responding — a server on a port, a daemon — that is **not** a licence to install it: it may simply be down, on a different port, or misconfigured. Report that it is unreachable and **ask the user** before installing anything large. This matters most under Yolo / auto-approve, where such a command would otherwise run with no human in the loop. A transient connection failure means "tell the user it\'s unreachable", never "install a fresh copy".\n\n### Approval vs Yolo\n\nBy default **every command pauses for human approval**. The user does NOT decide on a raw command first — they decide on the **`purpose`** you provide: a short plain-language sentence, **IN THEIR LANGUAGE**, of what the command does and why. ALWAYS fill `purpose` (it is required). When the command has a real downside — deletes/overwrites files, installs software, downloads from the network, spends money, long-running, hard to undo — also fill **`impact`** (shown to the user as a ⚠️ warning); omit it only when the command is genuinely harmless / read-only. A clear `purpose` gets approved fast; an unexplained wall of shell gets rejected or ignored. If **Yolo mode** is enabled for this agent, commands run immediately without asking — still fill `purpose`/`impact` for the record.\n'},{slug:"code-task",name:"Coding CLI (Claude Code / Codex)",description:"Delegate complete dev tasks (analyse, review, debug, implement) to the coding CLI installed on this machine — Claude Code or Codex — running under the owner's subscription. Read-only by default; every run requires approval unless Yolo is enabled.",requiredBuiltins:["code_task"],toolGroup:!0,content:'## Coding CLI (code_task)\n\nThis skill unlocks the `code_task` tool: it hands a complete dev task to the **coding CLI installed and logged in by the owner** on this machine — `provider: "claude"` (Claude Code) or `provider: "codex"` (OpenAI Codex). The CLI is itself a full autonomous coding agent: it explores the working directory, reasons, and returns a final answer. Its usage counts against the **owner\'s subscription**.\n\n### What it is for\n\n- Analysing a codebase: architecture summary, "where is X handled", dependency questions.\n- Finding bugs, reviewing changes, explaining errors.\n- In `mode: "write"`: implementing a change, fixing a bug, writing tests — inside the workspace.\n\n### How to write a good task\n\n1. **Self-contained.** The CLI sees ONLY your `task` text plus the files in the working directory — none of this conversation. Include every fact it needs (file names, error messages, acceptance criteria).\n2. **One task, one call.** A run takes minutes. Give one complete task and wait for the result. NEVER re-call `code_task` for the same goal because you are unsure — re-running costs the owner real subscription usage.\n3. **Pick the mode honestly.** Default `mode: "read"` — the CLI cannot modify files or run shell commands. Use `mode: "write"` ONLY when the task requires changing files; say so in `purpose` and fill `impact`.\n4. **Pick the directory.** `cwd` is workspace-relative (e.g. `"repos/myapp"`). The run is confined to the workspace.\n4b. **Model and effort.** The owner sets per-provider defaults in the agent settings; omit `model`/`effort` to use them. Override per task only when the task warrants it (e.g. `model: "opus", effort: "high"` for a deep review; a cheaper model for a mechanical rename) — and say why in `purpose`.\n5. **Read the result as data.** `resultText` is the CLI\'s final answer. `isError: true` means the run failed — read `errorDetail`, fix the cause (or report it), do NOT blindly retry. `errorDetail` starting with `subscription_limit_reached` means the owner\'s plan window is exhausted: report it and stop — retrying cannot help until the window resets.\n6. **Report costs honestly.** `costUsd` is the notional cost the CLI reports (informative under subscription). Each agent has a daily cap; when it is hit the tool refuses to start and tells you why.\n\n### Review-required (write-mode work)\n\nCode you changed is NOT done until it has been reviewed. This is a hard rule, learned from harnesses that let coders self-certify.\n\n1. **Never conclude "done" directly after a successful write-mode `code_task` (or hand-written code changes).** The work\'s state is "review-required".\n2. **If you can delegate** (you have an `assign_*` tool whose description names a code reviewer), delegate the review yourself: pass WHAT was asked, WHAT changed (files + one-line each), and how to verify. The reviewer answers with a structured verdict (`approve` / `request_changes` + findings). If you hold the "Request a review" skill, follow it — the reviewer starts blind, and what you put in that request decides whether the review is worth its cost.\n3. **If you cannot delegate** (you are a worker), end your written ANSWER with a prominent `REVIEW-REQUIRED` marker plus the list of changed files and how to verify — that text is what your orchestrator receives, and it dispatches the review from it. `return_result` carries none of it. Never present write-mode work as finished without it.\n4. **On `request_changes`**: fix the findings (one more write-mode run), then request the review ONCE more. Maximum 2 review rounds total.\n5. **After 2 failed rounds, escalate — do not loop.** Tell the owner on their channel what was attempted and what still fails (the remaining findings), write the same thing as your answer, and finish with `return_result` status "blocked". Retrying past 2 rounds only burns budget and anti-loop caps.\n6. **If no reviewer exists anywhere**, say so explicitly in your final result: the work is delivered UNREVIEWED and the owner should review it or attach a reviewer agent.\n\n### Approval vs Yolo\n\nBy default **every run pauses for the owner\'s approval**. They decide on your `purpose` — one plain sentence, IN THEIR LANGUAGE, of what the task does and why. With a real downside (write mode: modifies files, installs deps), also fill `impact`. If **Yolo mode** is enabled for this agent, runs start immediately — still fill `purpose`/`impact` for the record.\n'},T,I,S,{slug:"tool-create-mcp",name:"Using create_mcp",description:"How to format a create_mcp call correctly — http/stdio, where the API key goes, examples.",requiredBuiltins:[],kind:"agent-internal",content:'## Using create_mcp\n\nProvision an MCP server so its tools become available in this workspace. The call is VERIFIED by actually connecting before anything is saved, so a wrong format fails loudly — get it right the first time.\n\n### Fields\n- **name**: human-readable label.\n- **slug**: lowercase-with-hyphens, unique in the workspace. It prefixes the server\'s tool names.\n- **transport**: `"http"` (remote server) or `"stdio"` (local subprocess).\n\n**transport "http":**\n- **url**: the endpoint, WITHOUT the key in it.\n- **apiKey**: the key/token — it goes HERE, never inside the url.\n- **authScheme**: how the key is sent — `"header"` (default), `"query"`, or `"bearer"`.\n- **authParamName**: the header name or query-param name that carries the key (omit only for bearer).\n\n**transport "stdio":** command, args, env.\n\n### #1 mistake: the key inside the URL\nIf you are given a URL like `https://host/api/mcp?api_key=cog_ABC`, do NOT pass that whole string as `url`. **Split it**:\n- url → `https://host/api/mcp`\n- apiKey → `cog_ABC`\n- authScheme → `query`\n- authParamName → `api_key`\n\nThe tool re-attaches the key correctly. Passing the key inside `url` (with `apiKey` empty) fails with: `transport "http" requires an apiKey`.\n\n### Worked example — key as a query param\n```json\n{\n "name": "Cogni Cortex",\n "slug": "cogni-cortex",\n "transport": "http",\n "url": "https://cogni-web-psi.vercel.app/api/mcp",\n "apiKey": "cog_ABC123",\n "authScheme": "query",\n "authParamName": "api_key"\n}\n```\n\n### Worked example — Bearer token\n```json\n{ "name": "Acme", "slug": "acme", "transport": "http", "url": "https://api.acme.com/mcp", "apiKey": "sk-live-...", "authScheme": "bearer" }\n```\n\n### Making it usable: attach it to an agent\nCreating the server does NOT make any agent able to use it. To give its tools to an agent, pass **`attachToAgentSlug`** in the same call — e.g. add `"attachToAgentSlug": "my-agent"`. (Or attach later with `attach_mcp`.) If you skip this, no agent can call the MCP\'s tools.\n\n### Common mistakes\n- ❌ creating the MCP then delegating, without attaching → the agent reports "I don\'t have that tool". Pass `attachToAgentSlug` or call `attach_mcp`.\n- ❌ key inside `url` → ✅ key in `apiKey` + the matching `authScheme`/`authParamName`.\n- ❌ omitting `authParamName` for header/query schemes → it is required (only `bearer` omits it).\n- ❌ reusing a slug already in the workspace → choose a unique one.\n'},A,C,N,D,R];U.map(e=>e.slug);let j=e=>U.filter(t=>(t.kind??"capability")===e).map(e=>e.slug);j("baseline"),j("channel"),j("capability"),j("agent-internal");let B=U.filter(e=>!0===e.toolGroup).map(e=>e.slug)},76381:(e,t,a)=>{a.d(t,{A:()=>i});var n=a(48503),o=a(80351),s=a(5829);let i=(0,o.forwardRef)(function({label:e,error:t,showCount:a,id:i,className:r="",containerClassName:l="",maxLength:d,value:c,bare:h=!1,...u},p){let m=(0,o.useId)(),g=i??m;return(0,n.jsxs)("div",{className:l,children:[e&&(0,n.jsx)(s.A,{htmlFor:g,children:e}),(0,n.jsx)("textarea",{id:g,ref:p,maxLength:d,value:c,"aria-invalid":!!t||void 0,className:h?`w-full text-ink placeholder:text-ink-4 transition-colors focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 ${r}`:`w-full resize-y rounded-md border bg-hover px-2 py-1.5 text-body-14 leading-[1.5]! text-ink placeholder:text-ink-4 transition-colors focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 ${t?"border-err focus:border-err":"border-rule focus:border-ink-3"} ${r}`,...u}),a&&void 0!==d&&"string"==typeof c&&(0,n.jsxs)("div",{className:"mt-1 text-right text-legacy-11 text-ink-4",children:[c.length," / ",d]}),t&&(0,n.jsx)("p",{className:"mt-1 text-xs text-err",children:t})]})})},90566:(e,t,a)=>{a.d(t,{A:()=>i});var n=a(48503);let o={ok:"bg-ok",lime:"bg-agent-vivid",coral:"bg-skill-vivid",blue:"bg-conn-vivid",warn:"bg-warn"},s={ok:"animate-[blip_1.4s_ease-out_infinite]",lime:"animate-[blip-lime_1.5s_ease-out_infinite]",coral:"animate-[blip-coral_1.4s_ease-out_infinite]",blue:"animate-[blip-blue_1.4s_ease-out_infinite]",warn:"animate-[blip-coral_1.4s_ease-out_infinite]"};function i({variant:e="ok",size:t="sm",animate:a=!0,className:r=""}){return(0,n.jsx)("span",{className:`inline-block shrink-0 rounded-full ${"sm"===t?"h-[7px] w-[7px]":"h-2 w-2"} ${o[e]} ${a?s[e]:""} ${r}`})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[611],{9481:(e,a,t)=>{t.d(a,{o:()=>c});var l=t(80351),n=t(3674);let r=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208,36H48A20,20,0,0,0,28,56v56c0,54.29,26.32,87.22,48.4,105.29,23.71,19.39,47.44,26,48.44,26.29a12.1,12.1,0,0,0,6.32,0c1-.28,24.73-6.9,48.44-26.29,22.08-18.07,48.4-51,48.4-105.29V56A20,20,0,0,0,208,36Zm-4,76c0,35.71-13.09,64.69-38.91,86.15A126.28,126.28,0,0,1,128,219.38a126.14,126.14,0,0,1-37.09-21.23C65.09,176.69,52,147.71,52,112V60H204ZM79.51,144.49a12,12,0,1,1,17-17L112,143l47.51-47.52a12,12,0,0,1,17,17l-56,56a12,12,0,0,1-17,0Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M216,56v56c0,96-88,120-88,120S40,208,40,112V56a8,8,0,0,1,8-8H208A8,8,0,0,1,216,56Z",opacity:"0.2"}),l.createElement("path",{d:"M208,40H48A16,16,0,0,0,32,56v56c0,52.72,25.52,84.67,46.93,102.19,23.06,18.86,46,25.26,47,25.53a8,8,0,0,0,4.2,0c1-.27,23.91-6.67,47-25.53C198.48,196.67,224,164.72,224,112V56A16,16,0,0,0,208,40Zm0,72c0,37.07-13.66,67.16-40.6,89.42A129.3,129.3,0,0,1,128,223.62a128.25,128.25,0,0,1-38.92-21.81C61.82,179.51,48,149.3,48,112l0-56,160,0ZM82.34,141.66a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32l-56,56a8,8,0,0,1-11.32,0Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208,40H48A16,16,0,0,0,32,56v56c0,52.72,25.52,84.67,46.93,102.19,23.06,18.86,46,25.26,47,25.53a8,8,0,0,0,4.2,0c1-.27,23.91-6.67,47-25.53C198.48,196.67,224,164.72,224,112V56A16,16,0,0,0,208,40Zm-34.32,69.66-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208,42H48A14,14,0,0,0,34,56v56c0,51.94,25.12,83.4,46.2,100.64,22.73,18.6,45.27,24.89,46.22,25.15a6,6,0,0,0,3.16,0c.95-.26,23.49-6.55,46.22-25.15C196.88,195.4,222,163.94,222,112V56A14,14,0,0,0,208,42Zm2,70c0,37.76-13.94,68.39-41.44,91.06A131.17,131.17,0,0,1,128,225.72a130.94,130.94,0,0,1-40.56-22.66C59.94,180.39,46,149.76,46,112V56a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2ZM172.24,99.76a6,6,0,0,1,0,8.48l-56,56a6,6,0,0,1-8.48,0l-24-24a6,6,0,0,1,8.48-8.48L112,151.51l51.76-51.75A6,6,0,0,1,172.24,99.76Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208,40H48A16,16,0,0,0,32,56v56c0,52.72,25.52,84.67,46.93,102.19,23.06,18.86,46,25.26,47,25.53a8,8,0,0,0,4.2,0c1-.27,23.91-6.67,47-25.53C198.48,196.67,224,164.72,224,112V56A16,16,0,0,0,208,40Zm0,72c0,37.07-13.66,67.16-40.6,89.42A129.3,129.3,0,0,1,128,223.62a128.25,128.25,0,0,1-38.92-21.81C61.82,179.51,48,149.3,48,112l0-56,160,0ZM82.34,141.66a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32l-56,56a8,8,0,0,1-11.32,0Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208,44H48A12,12,0,0,0,36,56v56c0,51.16,24.73,82.12,45.47,99.1,22.4,18.32,44.55,24.5,45.48,24.76a4,4,0,0,0,2.1,0c.93-.26,23.08-6.44,45.48-24.76,20.74-17,45.47-47.94,45.47-99.1V56A12,12,0,0,0,208,44Zm4,68c0,38.44-14.23,69.63-42.29,92.71A132.45,132.45,0,0,1,128,227.82a132.23,132.23,0,0,1-41.71-23.11C58.23,181.63,44,150.44,44,112V56a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Zm-41.17-10.83a4,4,0,0,1,0,5.66l-56,56a4,4,0,0,1-5.66,0l-24-24a4,4,0,0,1,5.66-5.66L112,154.34l53.17-53.17A4,4,0,0,1,170.83,101.17Z"}))]]),m=l.forwardRef((e,a)=>l.createElement(n.A,{ref:a,...e,weights:r}));m.displayName="ShieldCheckIcon";let c=m},10975:(e,a,t)=>{Object.defineProperty(a,"__esModule",{value:!0});var l={default:function(){return Z},getImageProps:function(){return A}};for(var n in l)Object.defineProperty(a,n,{enumerable:!0,get:l[n]});let r=t(57546),m=t(30065),c=t(76937),d=r._(t(5491));function A(e){let{props:a}=(0,m.getImgProps)(e,{defaultLoader:d.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,t]of Object.entries(a))void 0===t&&delete a[e];return{props:a}}let Z=c.Image},16763:(e,a,t)=>{t.d(a,{A:()=>n});var l=t(80351);let n=l.forwardRef((e,a)=>{let{alt:t,color:n="currentColor",size:r="1em",weight:m="regular",mirrored:c=!1,children:d,weights:A,...Z}=e;return l.createElement("svg",{ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,fill:n,viewBox:"0 0 256 256",transform:c?"scale(-1, 1)":void 0,...Z},!!t&&l.createElement("title",null,t),d,A.get(m))});n.displayName="SSRBase"},19176:(e,a,t)=>{t.d(a,{default:()=>n.a});var l=t(10975),n=t.n(l)},37306:(e,a,t)=>{t.d(a,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M176,128,96,208V48Z",opacity:"0.2"}),l.createElement("path",{d:"M181.66,122.34l-80-80A8,8,0,0,0,88,48V208a8,8,0,0,0,13.66,5.66l80-80A8,8,0,0,0,181.66,122.34ZM104,188.69V67.31L164.69,128Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M181.66,133.66l-80,80A8,8,0,0,1,88,208V48a8,8,0,0,1,13.66-5.66l80,80A8,8,0,0,1,181.66,133.66Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M180.24,132.24l-80,80a6,6,0,0,1-8.48-8.48L167.51,128,91.76,52.24a6,6,0,0,1,8.48-8.48l80,80A6,6,0,0,1,180.24,132.24Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M178.83,130.83l-80,80a4,4,0,0,1-5.66-5.66L170.34,128,93.17,50.83a4,4,0,0,1,5.66-5.66l80,80A4,4,0,0,1,178.83,130.83Z"}))]])},38178:(e,a,t)=>{t.d(a,{K:()=>c});var l=t(80351),n=t(16763),r=t(37306);let m=l.forwardRef((e,a)=>l.createElement(n.A,{ref:a,...e,weights:r.A}));m.displayName="CaretRightIcon";let c=m},58205:(e,a,t)=>{t.d(a,{N:()=>c});var l=t(80351),n=t(3674),r=t(60709);let m=l.forwardRef((e,a)=>l.createElement(n.A,{ref:a,...e,weights:r.A}));m.displayName="WarningIcon";let c=m},60525:(e,a,t)=>{t.d(a,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M176.49,95.51a12,12,0,0,1,0,17l-56,56a12,12,0,0,1-17,0l-24-24a12,12,0,1,1,17-17L112,143l47.51-47.52A12,12,0,0,1,176.49,95.51ZM236,128A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),l.createElement("path",{d:"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm45.66,85.66-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M172.24,99.76a6,6,0,0,1,0,8.48l-56,56a6,6,0,0,1-8.48,0l-24-24a6,6,0,0,1,8.48-8.48L112,151.51l51.76-51.75A6,6,0,0,1,172.24,99.76ZM230,128A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M170.83,101.17a4,4,0,0,1,0,5.66l-56,56a4,4,0,0,1-5.66,0l-24-24a4,4,0,0,1,5.66-5.66L112,154.34l53.17-53.17A4,4,0,0,1,170.83,101.17ZM228,128A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z"}))]])},60709:(e,a,t)=>{t.d(a,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M240.26,186.1,152.81,34.23h0a28.74,28.74,0,0,0-49.62,0L15.74,186.1a27.45,27.45,0,0,0,0,27.71A28.31,28.31,0,0,0,40.55,228h174.9a28.31,28.31,0,0,0,24.79-14.19A27.45,27.45,0,0,0,240.26,186.1Zm-20.8,15.7a4.46,4.46,0,0,1-4,2.2H40.55a4.46,4.46,0,0,1-4-2.2,3.56,3.56,0,0,1,0-3.73L124,46.2a4.77,4.77,0,0,1,8,0l87.44,151.87A3.56,3.56,0,0,1,219.46,201.8ZM116,136V104a12,12,0,0,1,24,0v32a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,176Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M215.46,216H40.54C27.92,216,20,202.79,26.13,192.09L113.59,40.22c6.3-11,22.52-11,28.82,0l87.46,151.87C236,202.79,228.08,216,215.46,216Z",opacity:"0.2"}),l.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M235.07,189.09,147.61,37.22h0a22.75,22.75,0,0,0-39.22,0L20.93,189.09a21.53,21.53,0,0,0,0,21.72A22.35,22.35,0,0,0,40.55,222h174.9a22.35,22.35,0,0,0,19.6-11.19A21.53,21.53,0,0,0,235.07,189.09ZM224.66,204.8a10.46,10.46,0,0,1-9.21,5.2H40.55a10.46,10.46,0,0,1-9.21-5.2,9.51,9.51,0,0,1,0-9.72L118.79,43.21a10.75,10.75,0,0,1,18.42,0l87.46,151.87A9.51,9.51,0,0,1,224.66,204.8ZM122,144V104a6,6,0,0,1,12,0v40a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,180Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M233.34,190.09,145.88,38.22h0a20.75,20.75,0,0,0-35.76,0L22.66,190.09a19.52,19.52,0,0,0,0,19.71A20.36,20.36,0,0,0,40.54,220H215.46a20.36,20.36,0,0,0,17.86-10.2A19.52,19.52,0,0,0,233.34,190.09ZM226.4,205.8a12.47,12.47,0,0,1-10.94,6.2H40.54a12.47,12.47,0,0,1-10.94-6.2,11.45,11.45,0,0,1,0-11.72L117.05,42.21a12.76,12.76,0,0,1,21.9,0L226.4,194.08A11.45,11.45,0,0,1,226.4,205.8ZM124,144V104a4,4,0,0,1,8,0v40a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,180Z"}))]])},63428:(e,a,t)=>{t.d(a,{a:()=>c});var l=t(80351),n=t(16763),r=t(91692);let m=l.forwardRef((e,a)=>l.createElement(n.A,{ref:a,...e,weights:r.A}));m.displayName="CaretDownIcon";let c=m},64178:(e,a,t)=>{t.d(a,{r:()=>c});var l=t(80351),n=t(16763),r=t(60525);let m=l.forwardRef((e,a)=>l.createElement(n.A,{ref:a,...e,weights:r.A}));m.displayName="CheckCircleIcon";let c=m},68269:(e,a,t)=>{t.d(a,{N:()=>c});var l=t(80351),n=t(16763),r=t(60709);let m=l.forwardRef((e,a)=>l.createElement(n.A,{ref:a,...e,weights:r.A}));m.displayName="WarningIcon";let c=m},78936:(e,a,t)=>{t.d(a,{e:()=>c});var l=t(80351),n=t(3674);let r=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M192,112a80,80,0,1,1-80-80A80,80,0,0,1,192,112Z",opacity:"0.2"}),l.createElement("path",{d:"M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M168,112a56,56,0,1,1-56-56A56,56,0,0,1,168,112Zm61.66,117.66a8,8,0,0,1-11.32,0l-50.06-50.07a88,88,0,1,1,11.32-11.31l50.06,50.06A8,8,0,0,1,229.66,229.66ZM112,184a72,72,0,1,0-72-72A72.08,72.08,0,0,0,112,184Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M228.24,219.76l-51.38-51.38a86.15,86.15,0,1,0-8.48,8.48l51.38,51.38a6,6,0,0,0,8.48-8.48ZM38,112a74,74,0,1,1,74,74A74.09,74.09,0,0,1,38,112Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M226.83,221.17l-52.7-52.7a84.1,84.1,0,1,0-5.66,5.66l52.7,52.7a4,4,0,0,0,5.66-5.66ZM36,112a76,76,0,1,1,76,76A76.08,76.08,0,0,1,36,112Z"}))]]),m=l.forwardRef((e,a)=>l.createElement(n.A,{ref:a,...e,weights:r}));m.displayName="MagnifyingGlassIcon";let c=m},91692:(e,a,t)=>{t.d(a,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208,96l-80,80L48,96Z",opacity:"0.2"}),l.createElement("path",{d:"M215.39,92.94A8,8,0,0,0,208,88H48a8,8,0,0,0-5.66,13.66l80,80a8,8,0,0,0,11.32,0l80-80A8,8,0,0,0,215.39,92.94ZM128,164.69,67.31,104H188.69Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,48,88H208a8,8,0,0,1,5.66,13.66Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M212.24,100.24l-80,80a6,6,0,0,1-8.48,0l-80-80a6,6,0,0,1,8.48-8.48L128,167.51l75.76-75.75a6,6,0,0,1,8.48,8.48Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M210.83,98.83l-80,80a4,4,0,0,1-5.66,0l-80-80a4,4,0,0,1,5.66-5.66L128,170.34l77.17-77.17a4,4,0,1,1,5.66,5.66Z"}))]])}}]);
@@ -0,0 +1,3 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6937],{5491:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let i=r(30365),n=r(67867);function a({config:e,src:t,width:r,quality:o}){let l=(0,n.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//"))if(t.includes("/_next/static/immutable")&&!(0,n.getAssetToken)())l=void 0;else{let e=t.indexOf("?");if(-1!==e){let r=new URLSearchParams(t.slice(e+1)),i=r.get("dpl");if(i){l=i,r.delete("dpl");let n=r.toString();t=t.slice(0,e)+(n?"?"+n:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
2
+ Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let s=(0,i.findClosestQuality)(o,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${r}&q=${s}${t.startsWith("/")&&l?`&dpl=${l}`:""}`}a.__next_img_default=!0;let o=a},11706:(e,t)=>{function r({widthInt:e,heightInt:t,blurWidth:i,blurHeight:n,blurDataURL:a,objectFit:o}){let l=i?40*i:e,s=n?40*n:t,u=l&&s?`viewBox='0 0 ${l} ${s}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${u}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${u?"none":"contain"===o?"xMidYMid":"cover"===o?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${a}'/%3E%3C/svg%3E`}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},28499:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RouterContext",{enumerable:!0,get:function(){return i}});let i=r(57546)._(r(80351)).default.createContext(null)},30065:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImgProps",{enumerable:!0,get:function(){return u}});let i=r(67867),n=r(11706),a=r(55494),o=["-moz-initial","fill","none","scale-down",void 0];function l(e){return void 0!==e.default}function s(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function u({src:e,sizes:t,unoptimized:r=!1,priority:d=!1,preload:c=!1,loading:f,className:p,quality:g,width:m,height:h,fill:b=!1,style:y,overrideSrc:_,onLoad:v,onLoadingComplete:w,placeholder:j="empty",blurDataURL:x,fetchPriority:P,decoding:S="async",layout:O,objectFit:C,objectPosition:E,lazyBoundary:R,lazyRoot:z,...M},I){var $;let k,D,A,{imgConf:N,showAltText:L,blurComplete:T,defaultLoader:U}=I,q=N||a.imageConfigDefault;if("allSizes"in q)k=q;else{let e=[...q.deviceSizes,...q.imageSizes].sort((e,t)=>e-t),t=q.deviceSizes.sort((e,t)=>e-t),r=q.qualities?.sort((e,t)=>e-t);k={...q,allSizes:e,deviceSizes:t,qualities:r}}if(void 0===U)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let F=M.loader||U;delete M.loader,delete M.srcSet;let W="__next_img_default"in F;if(W){if("custom"===k.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
3
+ Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=F;F=t=>{let{config:r,...i}=t;return e(i)}}if(O){"fill"===O&&(b=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[O];e&&(y={...y,...e});let r={responsive:"100vw",fill:"100vw"}[O];r&&!t&&(t=r)}let B="",G=s(m),H=s(h);if(($=e)&&"object"==typeof $&&(l($)||void 0!==$.src)){let t=l(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(D=t.blurWidth,A=t.blurHeight,x=x||t.blurDataURL,B=t.src,!b)if(G||H){if(G&&!H){let e=G/t.width;H=Math.round(t.height*e)}else if(!G&&H){let e=H/t.height;G=Math.round(t.width*e)}}else G=t.width,H=t.height}let X=!d&&!c&&("lazy"===f||void 0===f);(!(e="string"==typeof e?e:B)||e.startsWith("data:")||e.startsWith("blob:"))&&(r=!0,X=!1),k.unoptimized&&(r=!0),W&&!k.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(r=!0);let V=s(g),J=Object.assign(b?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:C,objectPosition:E}:{},L?{}:{color:"transparent"},y),Q=T||"empty"===j?null:"blur"===j?`url("data:image/svg+xml;charset=utf-8,${(0,n.getImageBlurSvg)({widthInt:G,heightInt:H,blurWidth:D,blurHeight:A,blurDataURL:x||"",objectFit:J.objectFit})}")`:`url("${j}")`,Y=o.includes(J.objectFit)?"fill"===J.objectFit?"100% 100%":"cover":J.objectFit,K=Q?{backgroundSize:Y,backgroundPosition:J.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Q}:{},Z=function({config:e,src:t,unoptimized:r,width:n,quality:a,sizes:o,loader:l}){if(r){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,i.getDeploymentId)();if(t.includes("/_next/static/immutable")&&!(0,i.getAssetToken)())e=void 0;else if(e){let r=t.indexOf("?");if(-1!==r){let i=new URLSearchParams(t.slice(r+1));i.get("dpl")||(i.append("dpl",e),t=t.slice(0,r)+"?"+i.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:s,kind:u}=function({deviceSizes:e,allSizes:t},r,i){if(i){let r=/(^|\s)(1?\d?\d)vw/g,n=[];for(let e;e=r.exec(i);)n.push(parseInt(e[2]));if(n.length){let r=.01*Math.min(...n);return{widths:t.filter(t=>t>=e[0]*r),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof r?{widths:e,kind:"w"}:{widths:[...new Set([r,2*r].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,n,o),d=s.length-1;return{sizes:o||"w"!==u?o:"100vw",srcSet:s.map((r,i)=>`${l({config:e,src:t,quality:a,width:r})} ${"w"===u?r:i+1}${u}`).join(", "),src:l({config:e,src:t,quality:a,width:s[d]})}}({config:k,src:e,unoptimized:r,width:G,quality:V,sizes:t,loader:F}),ee=X?"lazy":f;return{props:{...M,loading:ee,fetchPriority:P,width:G,height:H,decoding:S,className:p,style:{...J,...K},sizes:Z.sizes,srcSet:Z.srcSet,src:_||Z.src},meta:{unoptimized:r,preload:c||d,placeholder:j,fill:b}}}},30365:(e,t)=>{function r(e,t){let r=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e,t.qualities[0]):r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findClosestQuality",{enumerable:!0,get:function(){return r}})},50034:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let i=r(57546)._(r(80351)),n=r(55494),a=i.default.createContext(n.imageConfigDefault)},50255:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let i=r(80351),n=i.useLayoutEffect,a=i.useEffect;function o(e){let{headManager:t,reduceComponentsToState:r}=e;function o(){if(t&&t.mountedInstances){let e=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(e))}}return n(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),n(()=>(t&&(t._pendingUpdate=o),()=>{t&&(t._pendingUpdate=o)})),a(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},55494:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var r={VALID_LOADERS:function(){return n},imageConfigDefault:function(){return a}};for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]});let n=["default","imgix","cloudinary","akamai","custom"],a={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},76937:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return w}});let i=r(57546),n=r(57467),a=r(48503),o=n._(r(80351)),l=i._(r(88142)),s=i._(r(85810)),u=r(30065),d=r(55494),c=r(50034),f=r(28499),p=i._(r(5491)),g=r(9136),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function h(e,t,r,i,n,a,o){let l=e?.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&n(!0),r?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let i=!1,n=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>i,isPropagationStopped:()=>n,persist:()=>{},preventDefault:()=>{i=!0,t.preventDefault()},stopPropagation:()=>{n=!0,t.stopPropagation()}})}i?.current&&i.current(e)}}))}function b(e){return o.use?{fetchPriority:e}:{fetchpriority:e}}let y=o.useLayoutEffect,_=(0,o.forwardRef)(({src:e,srcSet:t,sizes:r,height:i,width:n,decoding:l,className:s,style:u,fetchPriority:d,placeholder:c,loading:f,unoptimized:p,fill:m,onLoadRef:_,onLoadingCompleteRef:v,setBlurComplete:w,setShowAltText:j,sizesInput:x,onLoad:P,onError:S,...O},C)=>{let E=(0,o.useRef)(!1),R=(0,o.useRef)(null);y(()=>{let{current:e}=E,{current:t}=R;e||null===t||(S&&(t.src=t.src),t.complete&&h(t,c,_,v,w,p,x),E.current=!0)},[e,c,_,v,S,p,x]);let z=(0,g.useMergedRef)(C,R);return(0,a.jsx)("img",{...O,...b(d),loading:f,width:n,height:i,decoding:l,"data-nimg":m?"fill":"1",className:s,style:u,sizes:r,srcSet:t,src:e,ref:z,onLoad:e=>{h(e.currentTarget,c,_,v,w,p,x)},onError:e=>{j(!0),"empty"!==c&&w(!0),S&&S(e)}})});function v({isAppRouter:e,imgAttributes:t}){let r={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...b(t.fetchPriority)};return e&&l.default.preload?(l.default.preload(t.src,r),null):(0,a.jsx)(s.default,{children:(0,a.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...r},"__nimg-"+t.src+t.srcSet+t.sizes)})}let w=(0,o.forwardRef)((e,t)=>{let r=(0,o.useContext)(f.RouterContext),i=(0,o.useContext)(c.ImageConfigContext),n=(0,o.useMemo)(()=>{let e=m||i||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t),n=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r,qualities:n,localPatterns:e.localPatterns}},[i]),{onLoad:l,onLoadingComplete:s}=e,g=(0,o.useRef)(l);(0,o.useEffect)(()=>{g.current=l},[l]);let h=(0,o.useRef)(s);(0,o.useEffect)(()=>{h.current=s},[s]);let[b,y]=(0,o.useState)(!1),[w,j]=(0,o.useState)(!1),{props:x,meta:P}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:n,blurComplete:b,showAltText:w});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(_,{...x,unoptimized:P.unoptimized,placeholder:P.placeholder,fill:P.fill,onLoadRef:g,onLoadingCompleteRef:h,setBlurComplete:y,setShowAltText:j,sizesInput:e.sizes,ref:t}),P.preload?(0,a.jsx)(v,{isAppRouter:!r,imgAttributes:x}):null]})});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},85810:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var i={default:function(){return m},defaultHead:function(){return c}};for(var n in i)Object.defineProperty(t,n,{enumerable:!0,get:i[n]});let a=r(57546),o=r(57467),l=r(48503),s=o._(r(80351)),u=a._(r(50255)),d=r(25460);function c(){return[(0,l.jsx)("meta",{charSet:"utf-8"},"charset"),(0,l.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===s.default.Fragment?e.concat(s.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}let p=["name","httpEquiv","charSet","itemProp"];function g(e){let t,r,i,n;return e.reduce(f,[]).reverse().concat(c().reverse()).filter((t=new Set,r=new Set,i=new Set,n={},e=>{let a=!0,o=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){o=!0;let r=e.key.slice(e.key.indexOf("$")+1);t.has(r)?a=!1:t.add(r)}switch(e.type){case"title":case"base":r.has(e.type)?a=!1:r.add(e.type);break;case"meta":for(let t=0,r=p.length;t<r;t++){let r=p[t];if(e.props.hasOwnProperty(r))if("charSet"===r)i.has(r)?a=!1:i.add(r);else{let t=e.props[r],i=n[r]||new Set;("name"!==r||!o)&&i.has(t)?a=!1:(i.add(t),n[r]=i)}}}return a})).reverse().map((e,t)=>{let r=e.key||t;return s.default.cloneElement(e,{key:r})})}let m=function({children:e}){let t=(0,s.useContext)(d.HeadManagerContext);return(0,l.jsx)(u.default,{reduceComponentsToState:g,headManager:t,children:e})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7717],{5079:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(48503),l=r(80351),a=r(63428),s=r(5829);let o=(0,l.forwardRef)(function({label:e,error:t,id:r,className:o="",containerClassName:i="",children:c,...d},u){let x=(0,l.useId)(),p=r??x,h=(0,l.useRef)(null);return(0,l.useImperativeHandle)(u,()=>h.current,[]),(0,l.useEffect)(()=>{h.current&&function(e){if(CSS.supports("appearance","base-select"))for(let t of e.querySelectorAll("optgroup")){let e=t.getAttribute("label")??"",r=t.querySelector(":scope > legend");if(!r){if(e){let r=document.createElement("legend");r.textContent=e,t.prepend(r)}continue}r.textContent!==e&&(r.textContent=e),t.firstElementChild!==r&&t.prepend(r)}}(h.current)}),(0,n.jsxs)("div",{className:i,children:[e&&(0,n.jsx)(s.A,{htmlFor:p,children:e}),(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)("select",{id:p,ref:h,"aria-invalid":!!t||void 0,className:`peer h-8.5 w-full rounded-md border bg-hover py-1.5 pr-8 pl-3 text-body-14 leading-5! text-ink transition-colors required:invalid:text-ink-4 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 ${t?"border-err focus:border-err":"border-rule focus:border-ink-3"} ${o}`,...d,children:c}),(0,n.jsx)(a.a,{size:16,"aria-hidden":!0,className:"pointer-events-none absolute top-4.25 right-2 -translate-y-1/2 text-ink-3 peer-disabled:opacity-50"})]}),t&&(0,n.jsx)("p",{className:"mt-1 text-xs text-err",children:t})]})})},17165:(e,t,r)=>{r.d(t,{W:()=>l});var n=r(2439);let l=(0,n.createServerReference)("4096a86aa9ce056684a7d289479a798bb0a068bd67",n.callServer,void 0,n.findSourceMapURL,"listKeyModelsAction")},21166:(e,t,r)=>{r.d(t,{A:()=>x});var n=r(48503),l=r(80351),a=r(86045),s=r(88142);let o=Array.from({length:42},(e,t)=>{let r=String(t+1).padStart(2,"0");return{id:`avatar-${r}`,url:`/avatars/avatar-${r}.png`}});var i=r(45070),c=r(12871),d=r(31093);function u({selected:e,onClick:t,label:r,children:l,className:a=""}){return(0,n.jsx)("button",{type:"button",onClick:t,title:r,"aria-label":r,"aria-pressed":e,className:`flex aspect-square items-center justify-center rounded-lg p-1 transition-all ${e?"bg-ink/10 ring-2 ring-emerald-400":"bg-hover ring-1 ring-transparent hover:bg-hover hover:ring-neutral-700"} ${a}`,children:l})}function x({value:e,onChange:t,label:r="Avatar"}){let[u,m]=(0,l.useState)(!1),[b,f]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{f(!0)},[]),(0,a.Z4)(u,()=>m(!1)),(0,n.jsxs)("div",{children:[r&&(0,n.jsx)("label",{className:"block text-xs text-ink-3 mb-1",children:r}),(0,n.jsx)(d.A,{onClick:()=>m(!0),className:"group max-w-xs gap-3 rounded-md border border-rule bg-hover px-3 py-2 hover:border-rule",icon:(0,n.jsx)(p,{url:e,size:36}),title:e?e.split("/").pop()?.replace(".png",""):"No avatar",titleClassName:"text-sm text-ink",subtitle:`Click to ${e?"change":"pick"}`,subtitleClassName:"text-body-12 text-ink-3"}),b&&u&&(0,s.createPortal)((0,n.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Pick an avatar",onClick:()=>m(!1),className:"fixed inset-0 z-50 bg-black/70 backdrop-blur-sm flex items-center justify-center p-4",children:(0,n.jsxs)("div",{onClick:e=>e.stopPropagation(),className:"bg-paper border border-rule-2 rounded-2xl max-w-2xl w-full max-h-[80vh] overflow-y-auto",children:[(0,n.jsxs)("div",{className:"p-5 pb-4",children:[(0,n.jsx)("h3",{className:"text-sm font-semibold text-ink mb-4",children:"Pick an avatar"}),(0,n.jsxs)("div",{className:"grid grid-cols-6 gap-3",children:[(0,n.jsx)(h,{selected:null===e,onClick:()=>void(t(null),m(!1)),label:"None",url:null}),o.map(r=>(0,n.jsx)(h,{selected:e===r.url,onClick:()=>{t(r.url),m(!1)},label:r.id,url:r.url},r.id))]})]}),(0,n.jsx)(i.j,{className:"rounded-b-2xl",children:(0,n.jsx)(c.A,{variant:"neutral",onClick:()=>m(!1),children:"Close"})})]})}),document.body)]})}function p({url:e,size:t=32}){return e?(0,n.jsx)("img",{src:e,alt:"",width:t,height:t,style:{width:t,height:t},className:"rounded-full object-cover border border-rule shrink-0"}):(0,n.jsx)("div",{style:{width:t,height:t},className:"rounded-full bg-hover border border-dashed border-rule text-ink-3 text-xs flex items-center justify-center shrink-0",children:"?"})}function h({selected:e,onClick:t,label:r,url:l}){return(0,n.jsx)(u,{selected:e,onClick:t,label:r,children:(0,n.jsx)(p,{url:l,size:56})})}},25297:(e,t,r)=>{r.d(t,{A:()=>s});var n=r(48503),l=r(19176);let a={sm:{box:"h-6 w-6",text:"text-label-11",px:24},md:{box:"h-[30px] w-[30px]",text:"text-label-11",px:30},lg:{box:"h-[42px] w-[42px]",text:"text-title-15",px:42}};function s({name:e,imageUrl:t,size:r="md",shape:o="round",className:i=""}){let c=a[r],d=`inline-flex shrink-0 items-center justify-center overflow-hidden bg-hover font-mono font-semibold tracking-[0.04em] text-ink-2 ${c.box} ${c.text} ${"round"===o?"rounded-full":"rounded-[8px]"} ${i}`;return t?(0,n.jsx)("span",{className:d,children:(0,n.jsx)(l.default,{src:t,alt:e,width:c.px,height:c.px,className:"h-full w-full object-cover"})}):(0,n.jsx)("span",{className:d,children:function(e){let t=e.trim();if(!t)return"?";let r=t.split(/\s+/);return r.length>=2?((r[0][0]??"")+(r[1][0]??"")).toUpperCase():t.slice(0,2).toUpperCase()}(e)})}},31093:(e,t,r)=>{r.d(t,{A:()=>l});var n=r(48503);function l({icon:e,title:t,subtitle:r,titleClassName:a="text-medium-12 leading-tight! text-ink",subtitleClassName:s="font-mono text-legacy-10 leading-tight! text-ink-3",className:o="",type:i="button",...c}){return(0,n.jsxs)("button",{type:i,className:`flex w-full items-center text-left transition-colors ${o}`,...c,children:[(0,n.jsx)("span",{className:"shrink-0",children:e}),(0,n.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,n.jsx)("span",{className:`block truncate ${a}`,children:t}),r&&(0,n.jsx)("span",{className:`block truncate ${s}`,children:r})]})]})}},35848:(e,t,r)=>{r.d(t,{A:()=>o,m:()=>i});var n=r(48503);let l={yes:"bg-ok-bg text-ok",no:"bg-warn-bg text-warn",unknown:"bg-hover text-ink-4"},a={yes:"Tools",no:"No tools",unknown:"Tools ?"},s={yes:"This model can call tools.",no:"This model can't call tools and can't power an agent.",unknown:"Tool support is unknown for this model (not in the curated catalog)."};function o({support:e,className:t=""}){return(0,n.jsx)("span",{title:s[e],className:`inline-flex h-[22px] items-center rounded-[5px] px-2.5 text-medium-12 leading-none! ${l[e]} ${t}`,children:a[e]})}function i({className:e=""}){return(0,n.jsxs)("p",{className:`text-body-12 leading-[1.5]! text-ink-4 ${e}`,children:["Models marked ",(0,n.jsx)("span",{className:"font-medium text-warn",children:"(no tools)"})," can't power an agent."]})}},64119:(e,t,r)=>{r.d(t,{R:()=>n});function n(e){switch(e){case"openai-compatible":return"Local LLM";case"anthropic":return"Anthropic";case"openai":return"OpenAI";case"ollama":return"Ollama";case"openrouter":return"OpenRouter";case"google":return"Google";case"mistral":return"Mistral";case"groq":return"Groq";case"deepseek":return"DeepSeek";case"minimax":return"MiniMax";case"moonshot":return"Moonshot (Kimi)";default:return e}}},83047:(e,t,r)=>{r.d(t,{GP:()=>d,In:()=>i,Os:()=>s,W6:()=>l,Xx:()=>o,Z1:()=>n,ah:()=>c,gD:()=>a});let n=["claude-code","codex"];function l(e){return n.includes(e)}let a={"claude-code":"Claude Code",codex:"Codex"},s={"claude-code":"Claude Code — your subscription",codex:"Codex — your subscription"};function o(e){return l(e)?`${a[e]} (subscription)`:null}function i(e){let t=a[e],r=d[e]?"workspace, budget, approvals":"workspace, approvals";return`This agent is driven by the ${t} harness on this machine. Nodal relays its messages and enforces the perimeter (${r}) but does not drive its loop. Runs use your subscription.`}let c={"claude-code":"claude",codex:"codex"},d={"claude-code":!0,codex:!1}},98873:(e,t,r)=>{r.d(t,{f:()=>l});var n=r(2439);let l=(0,n.createServerReference)("40a4cc02353561dd8bab817c268310511ace797cd3",n.callServer,void 0,n.findSourceMapURL,"updateAgentAction")}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7879],{5079:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(48503),l=r(80351),a=r(63428),s=r(5829);let o=(0,l.forwardRef)(function({label:e,error:t,id:r,className:o="",containerClassName:i="",children:c,...d},u){let x=(0,l.useId)(),p=r??x,h=(0,l.useRef)(null);return(0,l.useImperativeHandle)(u,()=>h.current,[]),(0,l.useEffect)(()=>{h.current&&function(e){if(CSS.supports("appearance","base-select"))for(let t of e.querySelectorAll("optgroup")){let e=t.getAttribute("label")??"",r=t.querySelector(":scope > legend");if(!r){if(e){let r=document.createElement("legend");r.textContent=e,t.prepend(r)}continue}r.textContent!==e&&(r.textContent=e),t.firstElementChild!==r&&t.prepend(r)}}(h.current)}),(0,n.jsxs)("div",{className:i,children:[e&&(0,n.jsx)(s.A,{htmlFor:p,children:e}),(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)("select",{id:p,ref:h,"aria-invalid":!!t||void 0,className:`peer h-8.5 w-full rounded-md border bg-hover py-1.5 pr-8 pl-3 text-body-14 leading-5! text-ink transition-colors required:invalid:text-ink-4 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 ${t?"border-err focus:border-err":"border-rule focus:border-ink-3"} ${o}`,...d,children:c}),(0,n.jsx)(a.a,{size:16,"aria-hidden":!0,className:"pointer-events-none absolute top-4.25 right-2 -translate-y-1/2 text-ink-3 peer-disabled:opacity-50"})]}),t&&(0,n.jsx)("p",{className:"mt-1 text-xs text-err",children:t})]})})},12014:(e,t,r)=>{r.d(t,{W:()=>l});var n=r(2439);let l=(0,n.createServerReference)("40640738f34c850782d52fe4f29414a0359c4233c7",n.callServer,void 0,n.findSourceMapURL,"listKeyModelsAction")},21166:(e,t,r)=>{r.d(t,{A:()=>x});var n=r(48503),l=r(80351),a=r(86045),s=r(88142);let o=Array.from({length:42},(e,t)=>{let r=String(t+1).padStart(2,"0");return{id:`avatar-${r}`,url:`/avatars/avatar-${r}.png`}});var i=r(45070),c=r(12871),d=r(31093);function u({selected:e,onClick:t,label:r,children:l,className:a=""}){return(0,n.jsx)("button",{type:"button",onClick:t,title:r,"aria-label":r,"aria-pressed":e,className:`flex aspect-square items-center justify-center rounded-lg p-1 transition-all ${e?"bg-ink/10 ring-2 ring-emerald-400":"bg-hover ring-1 ring-transparent hover:bg-hover hover:ring-neutral-700"} ${a}`,children:l})}function x({value:e,onChange:t,label:r="Avatar"}){let[u,m]=(0,l.useState)(!1),[b,f]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{f(!0)},[]),(0,a.Z4)(u,()=>m(!1)),(0,n.jsxs)("div",{children:[r&&(0,n.jsx)("label",{className:"block text-xs text-ink-3 mb-1",children:r}),(0,n.jsx)(d.A,{onClick:()=>m(!0),className:"group max-w-xs gap-3 rounded-md border border-rule bg-hover px-3 py-2 hover:border-rule",icon:(0,n.jsx)(p,{url:e,size:36}),title:e?e.split("/").pop()?.replace(".png",""):"No avatar",titleClassName:"text-sm text-ink",subtitle:`Click to ${e?"change":"pick"}`,subtitleClassName:"text-body-12 text-ink-3"}),b&&u&&(0,s.createPortal)((0,n.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Pick an avatar",onClick:()=>m(!1),className:"fixed inset-0 z-50 bg-black/70 backdrop-blur-sm flex items-center justify-center p-4",children:(0,n.jsxs)("div",{onClick:e=>e.stopPropagation(),className:"bg-paper border border-rule-2 rounded-2xl max-w-2xl w-full max-h-[80vh] overflow-y-auto",children:[(0,n.jsxs)("div",{className:"p-5 pb-4",children:[(0,n.jsx)("h3",{className:"text-sm font-semibold text-ink mb-4",children:"Pick an avatar"}),(0,n.jsxs)("div",{className:"grid grid-cols-6 gap-3",children:[(0,n.jsx)(h,{selected:null===e,onClick:()=>void(t(null),m(!1)),label:"None",url:null}),o.map(r=>(0,n.jsx)(h,{selected:e===r.url,onClick:()=>{t(r.url),m(!1)},label:r.id,url:r.url},r.id))]})]}),(0,n.jsx)(i.j,{className:"rounded-b-2xl",children:(0,n.jsx)(c.A,{variant:"neutral",onClick:()=>m(!1),children:"Close"})})]})}),document.body)]})}function p({url:e,size:t=32}){return e?(0,n.jsx)("img",{src:e,alt:"",width:t,height:t,style:{width:t,height:t},className:"rounded-full object-cover border border-rule shrink-0"}):(0,n.jsx)("div",{style:{width:t,height:t},className:"rounded-full bg-hover border border-dashed border-rule text-ink-3 text-xs flex items-center justify-center shrink-0",children:"?"})}function h({selected:e,onClick:t,label:r,url:l}){return(0,n.jsx)(u,{selected:e,onClick:t,label:r,children:(0,n.jsx)(p,{url:l,size:56})})}},25297:(e,t,r)=>{r.d(t,{A:()=>s});var n=r(48503),l=r(19176);let a={sm:{box:"h-6 w-6",text:"text-label-11",px:24},md:{box:"h-[30px] w-[30px]",text:"text-label-11",px:30},lg:{box:"h-[42px] w-[42px]",text:"text-title-15",px:42}};function s({name:e,imageUrl:t,size:r="md",shape:o="round",className:i=""}){let c=a[r],d=`inline-flex shrink-0 items-center justify-center overflow-hidden bg-hover font-mono font-semibold tracking-[0.04em] text-ink-2 ${c.box} ${c.text} ${"round"===o?"rounded-full":"rounded-[8px]"} ${i}`;return t?(0,n.jsx)("span",{className:d,children:(0,n.jsx)(l.default,{src:t,alt:e,width:c.px,height:c.px,className:"h-full w-full object-cover"})}):(0,n.jsx)("span",{className:d,children:function(e){let t=e.trim();if(!t)return"?";let r=t.split(/\s+/);return r.length>=2?((r[0][0]??"")+(r[1][0]??"")).toUpperCase():t.slice(0,2).toUpperCase()}(e)})}},31093:(e,t,r)=>{r.d(t,{A:()=>l});var n=r(48503);function l({icon:e,title:t,subtitle:r,titleClassName:a="text-medium-12 leading-tight! text-ink",subtitleClassName:s="font-mono text-legacy-10 leading-tight! text-ink-3",className:o="",type:i="button",...c}){return(0,n.jsxs)("button",{type:i,className:`flex w-full items-center text-left transition-colors ${o}`,...c,children:[(0,n.jsx)("span",{className:"shrink-0",children:e}),(0,n.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,n.jsx)("span",{className:`block truncate ${a}`,children:t}),r&&(0,n.jsx)("span",{className:`block truncate ${s}`,children:r})]})]})}},35848:(e,t,r)=>{r.d(t,{A:()=>o,m:()=>i});var n=r(48503);let l={yes:"bg-ok-bg text-ok",no:"bg-warn-bg text-warn",unknown:"bg-hover text-ink-4"},a={yes:"Tools",no:"No tools",unknown:"Tools ?"},s={yes:"This model can call tools.",no:"This model can't call tools and can't power an agent.",unknown:"Tool support is unknown for this model (not in the curated catalog)."};function o({support:e,className:t=""}){return(0,n.jsx)("span",{title:s[e],className:`inline-flex h-[22px] items-center rounded-[5px] px-2.5 text-medium-12 leading-none! ${l[e]} ${t}`,children:a[e]})}function i({className:e=""}){return(0,n.jsxs)("p",{className:`text-body-12 leading-[1.5]! text-ink-4 ${e}`,children:["Models marked ",(0,n.jsx)("span",{className:"font-medium text-warn",children:"(no tools)"})," can't power an agent."]})}},41852:(e,t,r)=>{r.d(t,{f:()=>l});var n=r(2439);let l=(0,n.createServerReference)("40b865fc488e5dd0c5d652a00f9d74064b57f8faa0",n.callServer,void 0,n.findSourceMapURL,"updateAgentAction")},64119:(e,t,r)=>{r.d(t,{R:()=>n});function n(e){switch(e){case"openai-compatible":return"Local LLM";case"anthropic":return"Anthropic";case"openai":return"OpenAI";case"ollama":return"Ollama";case"openrouter":return"OpenRouter";case"google":return"Google";case"mistral":return"Mistral";case"groq":return"Groq";case"deepseek":return"DeepSeek";case"minimax":return"MiniMax";case"moonshot":return"Moonshot (Kimi)";default:return e}}},83047:(e,t,r)=>{r.d(t,{GP:()=>d,In:()=>i,Os:()=>s,W6:()=>l,Xx:()=>o,Z1:()=>n,ah:()=>c,gD:()=>a});let n=["claude-code","codex"];function l(e){return n.includes(e)}let a={"claude-code":"Claude Code",codex:"Codex"},s={"claude-code":"Claude Code — your subscription",codex:"Codex — your subscription"};function o(e){return l(e)?`${a[e]} (subscription)`:null}function i(e){let t=a[e],r=d[e]?"workspace, budget, approvals":"workspace, approvals";return`This agent is driven by the ${t} harness on this machine. Nodal relays its messages and enforces the perimeter (${r}) but does not drive its loop. Runs use your subscription.`}let c={"claude-code":"claude",codex:"codex"},d={"claude-code":!0,codex:!1}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7920],{10975:(a,e,t)=>{Object.defineProperty(e,"__esModule",{value:!0});var l={default:function(){return Z},getImageProps:function(){return A}};for(var n in l)Object.defineProperty(e,n,{enumerable:!0,get:l[n]});let r=t(57546),m=t(30065),h=t(76937),c=r._(t(5491));function A(a){let{props:e}=(0,m.getImgProps)(a,{defaultLoader:c.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[a,t]of Object.entries(e))void 0===t&&delete e[a];return{props:e}}let Z=h.Image},12165:(a,e,t)=>{t.d(e,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M184,80V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H176A8,8,0,0,1,184,80Z",opacity:"0.2"}),l.createElement("path",{d:"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M192,136v72a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V80A16,16,0,0,1,48,64h72a8,8,0,0,1,0,16H48V208H176V136a8,8,0,0,1,16,0Zm32-96a8,8,0,0,0-8-8H152a8,8,0,0,0-5.66,13.66L172.69,72l-42.35,42.34a8,8,0,0,0,11.32,11.32L184,83.31l26.34,26.35A8,8,0,0,0,224,104Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M222,104a6,6,0,0,1-12,0V54.49l-69.75,69.75a6,6,0,0,1-8.48-8.48L201.51,46H152a6,6,0,0,1,0-12h64a6,6,0,0,1,6,6Zm-38,26a6,6,0,0,0-6,6v72a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V80a2,2,0,0,1,2-2h72a6,6,0,0,0,0-12H48A14,14,0,0,0,34,80V208a14,14,0,0,0,14,14H176a14,14,0,0,0,14-14V136A6,6,0,0,0,184,130Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M220,104a4,4,0,0,1-8,0V49.66l-73.16,73.17a4,4,0,0,1-5.66-5.66L206.34,44H152a4,4,0,0,1,0-8h64a4,4,0,0,1,4,4Zm-36,28a4,4,0,0,0-4,4v72a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4h72a4,4,0,0,0,0-8H48A12,12,0,0,0,36,80V208a12,12,0,0,0,12,12H176a12,12,0,0,0,12-12V136A4,4,0,0,0,184,132Z"}))]])},19176:(a,e,t)=>{t.d(e,{default:()=>n.a});var l=t(10975),n=t.n(l)},24717:(a,e,t)=>{t.d(e,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z",opacity:"0.2"}),l.createElement("path",{d:"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM181.66,170.34a8,8,0,0,1-11.32,11.32L128,139.31,85.66,181.66a8,8,0,0,1-11.32-11.32L116.69,128,74.34,85.66A8,8,0,0,1,85.66,74.34L128,116.69l42.34-42.35a8,8,0,0,1,11.32,11.32L139.31,128Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M204.24,195.76a6,6,0,1,1-8.48,8.48L128,136.49,60.24,204.24a6,6,0,0,1-8.48-8.48L119.51,128,51.76,60.24a6,6,0,0,1,8.48-8.48L128,119.51l67.76-67.75a6,6,0,0,1,8.48,8.48L136.49,128Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M202.83,197.17a4,4,0,0,1-5.66,5.66L128,133.66,58.83,202.83a4,4,0,0,1-5.66-5.66L122.34,128,53.17,58.83a4,4,0,0,1,5.66-5.66L128,122.34l69.17-69.17a4,4,0,1,1,5.66,5.66L133.66,128Z"}))]])},37306:(a,e,t)=>{t.d(e,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M176,128,96,208V48Z",opacity:"0.2"}),l.createElement("path",{d:"M181.66,122.34l-80-80A8,8,0,0,0,88,48V208a8,8,0,0,0,13.66,5.66l80-80A8,8,0,0,0,181.66,122.34ZM104,188.69V67.31L164.69,128Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M181.66,133.66l-80,80A8,8,0,0,1,88,208V48a8,8,0,0,1,13.66-5.66l80,80A8,8,0,0,1,181.66,133.66Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M180.24,132.24l-80,80a6,6,0,0,1-8.48-8.48L167.51,128,91.76,52.24a6,6,0,0,1,8.48-8.48l80,80A6,6,0,0,1,180.24,132.24Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M178.83,130.83l-80,80a4,4,0,0,1-5.66-5.66L170.34,128,93.17,50.83a4,4,0,0,1,5.66-5.66l80,80A4,4,0,0,1,178.83,130.83Z"}))]])},45029:(a,e,t)=>{t.d(e,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M232,56V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56Z",opacity:"0.2"}),l.createElement("path",{d:"M205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M228.24,76.24l-128,128a6,6,0,0,1-8.48,0l-56-56a6,6,0,0,1,8.48-8.48L96,191.51,219.76,67.76a6,6,0,0,1,8.48,8.48Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M226.83,74.83l-128,128a4,4,0,0,1-5.66,0l-56-56a4,4,0,0,1,5.66-5.66L96,194.34,221.17,69.17a4,4,0,1,1,5.66,5.66Z"}))]])},80767:(a,e,t)=>{t.d(e,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M228,128a12,12,0,0,1-12,12H40a12,12,0,0,1,0-24H216A12,12,0,0,1,228,128ZM40,76H216a12,12,0,0,0,0-24H40a12,12,0,0,0,0,24ZM216,180H40a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M216,64V192H40V64Z",opacity:"0.2"}),l.createElement("path",{d:"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM192,184H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Zm0-48H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Zm0-48H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M222,128a6,6,0,0,1-6,6H40a6,6,0,0,1,0-12H216A6,6,0,0,1,222,128ZM40,70H216a6,6,0,0,0,0-12H40a6,6,0,0,0,0,12ZM216,186H40a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M220,128a4,4,0,0,1-4,4H40a4,4,0,0,1,0-8H216A4,4,0,0,1,220,128ZM40,68H216a4,4,0,0,0,0-8H40a4,4,0,0,0,0,8ZM216,188H40a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8Z"}))]])},91692:(a,e,t)=>{t.d(e,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M208,96l-80,80L48,96Z",opacity:"0.2"}),l.createElement("path",{d:"M215.39,92.94A8,8,0,0,0,208,88H48a8,8,0,0,0-5.66,13.66l80,80a8,8,0,0,0,11.32,0l80-80A8,8,0,0,0,215.39,92.94ZM128,164.69,67.31,104H188.69Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,48,88H208a8,8,0,0,1,5.66,13.66Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M212.24,100.24l-80,80a6,6,0,0,1-8.48,0l-80-80a6,6,0,0,1,8.48-8.48L128,167.51l75.76-75.75a6,6,0,0,1,8.48,8.48Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M210.83,98.83l-80,80a4,4,0,0,1-5.66,0l-80-80a4,4,0,0,1,5.66-5.66L128,170.34l77.17-77.17a4,4,0,1,1,5.66,5.66Z"}))]])},97601:(a,e,t)=>{t.d(e,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M252,124a60.14,60.14,0,0,0-32-53.08,52,52,0,0,0-92-32.11A52,52,0,0,0,36,70.92a60,60,0,0,0,0,106.14,52,52,0,0,0,92,32.13,52,52,0,0,0,92-32.13A60.05,60.05,0,0,0,252,124ZM88,204a28,28,0,0,1-26.85-20.07c1,0,1.89.07,2.85.07h8a12,12,0,0,0,0-24H64A36,36,0,0,1,52,90.05a12,12,0,0,0,8-11.32V72a28,28,0,0,1,56,0v60.18a51.61,51.61,0,0,0-7.2-3.85,12,12,0,1,0-9.6,22A28,28,0,0,1,88,204Zm104-44h-8a12,12,0,0,0,0,24h8c1,0,1.9,0,2.85-.07a28,28,0,1,1-38-33.61,12,12,0,1,0-9.6-22,51.61,51.61,0,0,0-7.2,3.85V72a28,28,0,0,1,56,0v6.73a12,12,0,0,0,8,11.32,36,36,0,0,1-12,70Zm16-44a12,12,0,0,1-12,12,40,40,0,0,1-40-40V84a12,12,0,0,1,24,0v4a16,16,0,0,0,16,16A12,12,0,0,1,208,116ZM100,88a40,40,0,0,1-40,40,12,12,0,0,1,0-24A16,16,0,0,0,76,88V84a12,12,0,0,1,24,0Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M240,124a48,48,0,0,1-32,45.27h0V176a40,40,0,0,1-80,0,40,40,0,0,1-80,0v-6.73h0a48,48,0,0,1,0-90.54V72a40,40,0,0,1,80,0,40,40,0,0,1,80,0v6.73A48,48,0,0,1,240,124Z",opacity:"0.2"}),l.createElement("path",{d:"M248,124a56.11,56.11,0,0,0-32-50.61V72a48,48,0,0,0-88-26.49A48,48,0,0,0,40,72v1.39a56,56,0,0,0,0,101.2V176a48,48,0,0,0,88,26.49A48,48,0,0,0,216,176v-1.41A56.09,56.09,0,0,0,248,124ZM88,208a32,32,0,0,1-31.81-28.56A55.87,55.87,0,0,0,64,180h8a8,8,0,0,0,0-16H64A40,40,0,0,1,50.67,86.27,8,8,0,0,0,56,78.73V72a32,32,0,0,1,64,0v68.26A47.8,47.8,0,0,0,88,128a8,8,0,0,0,0,16,32,32,0,0,1,0,64Zm104-44h-8a8,8,0,0,0,0,16h8a55.87,55.87,0,0,0,7.81-.56A32,32,0,1,1,168,144a8,8,0,0,0,0-16,47.8,47.8,0,0,0-32,12.26V72a32,32,0,0,1,64,0v6.73a8,8,0,0,0,5.33,7.54A40,40,0,0,1,192,164Zm16-52a8,8,0,0,1-8,8h-4a36,36,0,0,1-36-36V80a8,8,0,0,1,16,0v4a20,20,0,0,0,20,20h4A8,8,0,0,1,208,112ZM60,120H56a8,8,0,0,1,0-16h4A20,20,0,0,0,80,84V80a8,8,0,0,1,16,0v4A36,36,0,0,1,60,120Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M212,76V72a44,44,0,0,0-74.86-31.31,3.93,3.93,0,0,0-1.14,2.8v88.72a4,4,0,0,0,6.2,3.33A47.67,47.67,0,0,1,167.68,128a8.18,8.18,0,0,1,8.31,7.58,8,8,0,0,1-8,8.42,32,32,0,0,0-32,32v33.88a4,4,0,0,0,1.49,3.12,47.92,47.92,0,0,0,74.21-17.16,4,4,0,0,0-4.49-5.56A68.06,68.06,0,0,1,192,192h-7.73a8.18,8.18,0,0,1-8.25-7.47,8,8,0,0,1,8-8.53h8a51.6,51.6,0,0,0,24-5.88v0A52,52,0,0,0,212,76Zm-12,36h-4a36,36,0,0,1-36-36V72a8,8,0,0,1,16,0v4a20,20,0,0,0,20,20h4a8,8,0,0,1,0,16ZM88,28A44.05,44.05,0,0,0,44,72v4a52,52,0,0,0-4,94.12h0A51.6,51.6,0,0,0,64,176h7.73A8.18,8.18,0,0,1,80,183.47,8,8,0,0,1,72,192H64a67.48,67.48,0,0,1-15.21-1.73,4,4,0,0,0-4.5,5.55A47.93,47.93,0,0,0,118.51,213a4,4,0,0,0,1.49-3.12V176a32,32,0,0,0-32-32,8,8,0,0,1-8-8.42A8.18,8.18,0,0,1,88.32,128a47.67,47.67,0,0,1,25.48,7.54,4,4,0,0,0,6.2-3.33V43.49a4,4,0,0,0-1.14-2.81A43.85,43.85,0,0,0,88,28Zm8,48a36,36,0,0,1-36,36H56a8,8,0,0,1,0-16h4A20,20,0,0,0,80,76V72a8,8,0,0,1,16,0Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M246,124a54.13,54.13,0,0,0-32-49.33V72a46,46,0,0,0-86-22.67A46,46,0,0,0,42,72v2.67a54,54,0,0,0,0,98.63V176a46,46,0,0,0,86,22.67A46,46,0,0,0,214,176v-2.7A54.07,54.07,0,0,0,246,124ZM88,210a34,34,0,0,1-34-32.94A53.67,53.67,0,0,0,64,178h8a6,6,0,0,0,0-12H64A42,42,0,0,1,50,84.39a6,6,0,0,0,4-5.66V72a34,34,0,0,1,68,0v73.05A45.89,45.89,0,0,0,88,130a6,6,0,0,0,0,12,34,34,0,0,1,0,68Zm104-44h-8a6,6,0,0,0,0,12h8a53.67,53.67,0,0,0,10-.94A34,34,0,1,1,168,142a6,6,0,0,0,0-12,45.89,45.89,0,0,0-34,15.05V72a34,34,0,0,1,68,0v6.73a6,6,0,0,0,4,5.66A42,42,0,0,1,192,166Zm14-54a6,6,0,0,1-6,6h-4a34,34,0,0,1-34-34V80a6,6,0,0,1,12,0v4a22,22,0,0,0,22,22h4A6,6,0,0,1,206,112ZM60,118H56a6,6,0,0,1,0-12h4A22,22,0,0,0,82,84V80a6,6,0,0,1,12,0v4A34,34,0,0,1,60,118Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M248,124a56.11,56.11,0,0,0-32-50.61V72a48,48,0,0,0-88-26.49A48,48,0,0,0,40,72v1.39a56,56,0,0,0,0,101.2V176a48,48,0,0,0,88,26.49A48,48,0,0,0,216,176v-1.41A56.09,56.09,0,0,0,248,124ZM88,208a32,32,0,0,1-31.81-28.56A55.87,55.87,0,0,0,64,180h8a8,8,0,0,0,0-16H64A40,40,0,0,1,50.67,86.27,8,8,0,0,0,56,78.73V72a32,32,0,0,1,64,0v68.26A47.8,47.8,0,0,0,88,128a8,8,0,0,0,0,16,32,32,0,0,1,0,64Zm104-44h-8a8,8,0,0,0,0,16h8a55.87,55.87,0,0,0,7.81-.56A32,32,0,1,1,168,144a8,8,0,0,0,0-16,47.8,47.8,0,0,0-32,12.26V72a32,32,0,0,1,64,0v6.73a8,8,0,0,0,5.33,7.54A40,40,0,0,1,192,164Zm16-52a8,8,0,0,1-8,8h-4a36,36,0,0,1-36-36V80a8,8,0,0,1,16,0v4a20,20,0,0,0,20,20h4A8,8,0,0,1,208,112ZM60,120H56a8,8,0,0,1,0-16h4A20,20,0,0,0,80,84V80a8,8,0,0,1,16,0v4A36,36,0,0,1,60,120Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M244,124a52.1,52.1,0,0,0-32-48V72a44,44,0,0,0-84-18.3A44,44,0,0,0,44,72v4a52,52,0,0,0,0,96v4a44,44,0,0,0,84,18.3A44,44,0,0,0,212,176v-4A52.07,52.07,0,0,0,244,124ZM88,212a36,36,0,0,1-36-36v-1.41A52.13,52.13,0,0,0,64,176h8a4,4,0,0,0,0-8H64A44,44,0,0,1,49.33,82.5,4,4,0,0,0,52,78.73V72a36,36,0,0,1,72,0v78.75A44,44,0,0,0,88,132a4,4,0,0,0,0,8,36,36,0,0,1,0,72Zm104-44h-8a4,4,0,0,0,0,8h8a52.13,52.13,0,0,0,12-1.41V176a36,36,0,1,1-36-36,4,4,0,0,0,0-8,44,44,0,0,0-36,18.75V72a36,36,0,0,1,72,0v6.73a4,4,0,0,0,2.67,3.77A44,44,0,0,1,192,168Zm12-56a4,4,0,0,1-4,4h-4a32,32,0,0,1-32-32V80a4,4,0,0,1,8,0v4a24,24,0,0,0,24,24h4A4,4,0,0,1,204,112ZM92,84a32,32,0,0,1-32,32H56a4,4,0,0,1,0-8h4A24,24,0,0,0,84,84V80a4,4,0,0,1,8,0Z"}))]])}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8312],{6175:(e,a,t)=>{t.d(a,{H:()=>n});var l=t(4978);function n(e,a=new Date){if(null===e)return null;let t=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime(),r=Math.round((t(a)-t(e))/864e5);if(0===r)return(0,l.ei)(e);if(r>=1&&r<=6)return e.toLocaleDateString(void 0,{weekday:"short"});let i=e.getFullYear()===a.getFullYear();return e.toLocaleDateString(void 0,{month:"short",day:"numeric",...i?{}:{year:"numeric"}})}},7576:(e,a,t)=>{t.d(a,{A:()=>i});var l=t(48503),n=t(80351);let r={ink:"accent-ink",agent:"accent-agent-vivid",skill:"accent-skill-vivid",connector:"accent-conn-vivid"};function i({label:e,tone:a="ink",id:t,className:s="",containerClassName:d="",...o}){let c=(0,n.useId)(),m=t??c,u=(0,l.jsx)("input",{id:m,type:"checkbox",className:`h-4 w-4 shrink-0 cursor-pointer rounded border-rule disabled:cursor-not-allowed disabled:opacity-50 ${r[a]} ${s}`,...o});return e?(0,l.jsxs)("label",{htmlFor:m,className:`flex cursor-pointer items-center gap-2 text-sm text-ink ${d}`,children:[u,e]}):(0,l.jsx)("div",{className:d,children:u})}},9594:(e,a,t)=>{t.d(a,{A:()=>i});var l=t(48503),n=t(80351),r=t(5829);let i=(0,n.forwardRef)(function({label:e,error:a,id:t,className:i="",containerClassName:s="",...d},o){let c=(0,n.useId)(),m=t??c;return(0,l.jsxs)("div",{className:s,children:[e&&(0,l.jsx)(r.A,{htmlFor:m,children:e}),(0,l.jsx)("input",{id:m,ref:o,"aria-invalid":!!a||void 0,className:`w-full rounded-md border bg-hover py-1.5 pr-2 pl-3 text-body-14 leading-5! text-ink placeholder:text-ink-4 transition-colors focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 ${a?"border-err focus:border-err":"border-rule focus:border-ink-3"} ${i}`,...d}),a&&(0,l.jsx)("p",{className:"mt-1 text-xs text-err",children:a})]})})},16763:(e,a,t)=>{t.d(a,{A:()=>n});var l=t(80351);let n=l.forwardRef((e,a)=>{let{alt:t,color:n="currentColor",size:r="1em",weight:i="regular",mirrored:s=!1,children:d,weights:o,...c}=e;return l.createElement("svg",{ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,fill:n,viewBox:"0 0 256 256",transform:s?"scale(-1, 1)":void 0,...c},!!t&&l.createElement("title",null,t),d,o.get(i))});n.displayName="SSRBase"},45070:(e,a,t)=>{t.d(a,{A:()=>d,j:()=>c});var l=t(48503),n=t(80351),r=t(88142),i=t(86045),s=t(12871);function d({open:e,onClose:a,title:t,children:s,footer:o,className:c="",dismissable:m=!0,testId:u}){let[h,x]=(0,n.useState)(!1);return((0,n.useEffect)(()=>{x(!0)},[]),(0,i.Z4)(e,m?a:i.C5),(0,n.useEffect)(()=>{if(!e)return;let a=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=a}},[e]),e&&h)?(0,r.createPortal)((0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"fixed inset-0 z-40 bg-black/60 animate-[fadeIn_150ms_ease]",onClick:m?a:void 0,"aria-hidden":"true"}),(0,l.jsx)("div",{role:"dialog","aria-modal":"true","data-testid":u,className:"fixed inset-0 z-50 flex items-center justify-center p-4 pointer-events-none",children:(0,l.jsxs)("div",{className:`pointer-events-auto w-full max-w-lg max-h-[90vh] overflow-y-auto bg-paper border border-rule-2 rounded-xl shadow-2xl animate-[scaleIn_150ms_ease] ${c}`,children:[void 0!==t&&(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2 px-6 pt-5 pb-4 border-b border-rule-2",children:[(0,l.jsx)("h3",{className:"text-sm font-semibold text-ink",children:t}),m&&(0,l.jsx)("button",{type:"button",onClick:a,"aria-label":"Close",className:"text-ink-3 hover:text-ink transition-colors",children:"✕"})]}),(0,l.jsx)("div",{className:"p-6 pt-5",children:s}),o]})})]}),document.body):null}function o(e){return n.Children.map(e,e=>(0,n.isValidElement)(e)&&e.type===s.A?(0,n.cloneElement)(e,{size:"md"}):e)}function c({children:e,danger:a,className:t=""}){return(0,l.jsxs)("div",{className:`flex items-center gap-2 border-t border-rule-2 px-6 py-4 ${a?"justify-between":"justify-end"} ${t}`,children:[o(a),(0,l.jsx)("div",{className:"flex items-center gap-2",children:o(e)})]})}},45678:(e,a,t)=>{t.d(a,{A:()=>c});var l=t(48503),n=t(80351),r=t(88142),i=t(86045),s=t(12871),d=t(9594),o=t(45070);function c({open:e,title:a,message:t,confirmLabel:m="Confirm",cancelLabel:u="Cancel",destructive:h=!0,typeToConfirm:x,extra:b,onConfirm:f,onCancel:g}){let p=(0,n.useRef)(null),[v,A]=(0,n.useState)(!1),[w,k]=(0,n.useState)(""),[Z,j]=(0,n.useState)(e);Z!==e&&(j(e),e&&k(""));let E=!!x&&w!==x;return((0,n.useEffect)(()=>{A(!0)},[]),(0,i.Z4)(e,g),(0,n.useEffect)(()=>{e&&p.current?.focus()},[e]),e&&v)?(0,r.createPortal)((0,l.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"confirm-dialog-title",className:"fixed inset-0 z-50 flex items-center justify-center px-4 text-left",children:[(0,l.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:g,"aria-hidden":"true"}),(0,l.jsxs)("div",{className:"relative bg-paper border border-rule-2 rounded-xl max-w-md w-full shadow-2xl",children:[(0,l.jsxs)("div",{className:"p-6",children:[(0,l.jsx)("h2",{id:"confirm-dialog-title",className:"text-base font-semibold text-ink",children:a}),t&&(0,l.jsx)("p",{className:"mt-2 text-sm text-ink-3 leading-relaxed",children:t}),b&&(0,l.jsx)("div",{className:"mt-3",children:b}),x&&(0,l.jsxs)("div",{className:"mt-4",children:[(0,l.jsxs)("p",{className:"text-body-13 text-ink-3",children:["Type ",(0,l.jsx)("span",{className:"font-mono font-semibold text-ink",children:x})," to confirm."]}),(0,l.jsx)(d.A,{type:"text",value:w,onChange:e=>k(e.target.value),placeholder:x,autoComplete:"off",spellCheck:!1,className:"mt-2"})]})]}),(0,l.jsxs)(o.j,{className:"rounded-b-xl",children:[(0,l.jsx)(s.A,{variant:"neutral",onClick:g,ref:p,children:u}),(0,l.jsx)(s.A,{variant:h?"danger":"ink",onClick:f,disabled:E,className:E?"cursor-not-allowed opacity-40":"",children:m})]})]})]}),document.body):null}},60128:(e,a,t)=>{t.d(a,{A:()=>o});var l=t(48503),n=t(64178),r=t(68269),i=t(90566);let s={done:"Done",warn:"Attention",run:"Running",idle:"Idle","lvl-info":"INFO","lvl-ok":"OK","lvl-warn":"WARN","lvl-err":"ERR"},d={done:"bg-ok-bg text-ok",warn:"bg-warn-bg text-warn",run:"bg-run-bg text-run",idle:"bg-black/5 text-ink-3 dark:bg-white/5","lvl-info":"bg-black/5 text-ink-3 dark:bg-white/5","lvl-ok":"bg-ok-bg text-ok","lvl-warn":"bg-warn-bg text-warn","lvl-err":"bg-warn-bg text-err"};function o({variant:e,label:a,icon:t,className:c=""}){let m=a??s[e],u=null;return void 0!==t?u=t:"done"===e?u=(0,l.jsx)(n.r,{size:11,weight:"regular"}):"warn"===e?u=(0,l.jsx)(r.N,{size:11,weight:"regular"}):"run"===e&&(u=(0,l.jsx)(i.A,{variant:"blue",size:"sm"})),(0,l.jsxs)("span",{className:`inline-flex h-[22px] items-center gap-1.5 rounded-[5px] px-2.5 text-medium-12 leading-none! ${d[e]} ${c}`,children:[u,m]})}},60525:(e,a,t)=>{t.d(a,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M176.49,95.51a12,12,0,0,1,0,17l-56,56a12,12,0,0,1-17,0l-24-24a12,12,0,1,1,17-17L112,143l47.51-47.52A12,12,0,0,1,176.49,95.51ZM236,128A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),l.createElement("path",{d:"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm45.66,85.66-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M172.24,99.76a6,6,0,0,1,0,8.48l-56,56a6,6,0,0,1-8.48,0l-24-24a6,6,0,0,1,8.48-8.48L112,151.51l51.76-51.75A6,6,0,0,1,172.24,99.76ZM230,128A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M170.83,101.17a4,4,0,0,1,0,5.66l-56,56a4,4,0,0,1-5.66,0l-24-24a4,4,0,0,1,5.66-5.66L112,154.34l53.17-53.17A4,4,0,0,1,170.83,101.17ZM228,128A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z"}))]])},60709:(e,a,t)=>{t.d(a,{A:()=>n});var l=t(80351);let n=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M240.26,186.1,152.81,34.23h0a28.74,28.74,0,0,0-49.62,0L15.74,186.1a27.45,27.45,0,0,0,0,27.71A28.31,28.31,0,0,0,40.55,228h174.9a28.31,28.31,0,0,0,24.79-14.19A27.45,27.45,0,0,0,240.26,186.1Zm-20.8,15.7a4.46,4.46,0,0,1-4,2.2H40.55a4.46,4.46,0,0,1-4-2.2,3.56,3.56,0,0,1,0-3.73L124,46.2a4.77,4.77,0,0,1,8,0l87.44,151.87A3.56,3.56,0,0,1,219.46,201.8ZM116,136V104a12,12,0,0,1,24,0v32a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,176Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M215.46,216H40.54C27.92,216,20,202.79,26.13,192.09L113.59,40.22c6.3-11,22.52-11,28.82,0l87.46,151.87C236,202.79,228.08,216,215.46,216Z",opacity:"0.2"}),l.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M235.07,189.09,147.61,37.22h0a22.75,22.75,0,0,0-39.22,0L20.93,189.09a21.53,21.53,0,0,0,0,21.72A22.35,22.35,0,0,0,40.55,222h174.9a22.35,22.35,0,0,0,19.6-11.19A21.53,21.53,0,0,0,235.07,189.09ZM224.66,204.8a10.46,10.46,0,0,1-9.21,5.2H40.55a10.46,10.46,0,0,1-9.21-5.2,9.51,9.51,0,0,1,0-9.72L118.79,43.21a10.75,10.75,0,0,1,18.42,0l87.46,151.87A9.51,9.51,0,0,1,224.66,204.8ZM122,144V104a6,6,0,0,1,12,0v40a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,180Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M233.34,190.09,145.88,38.22h0a20.75,20.75,0,0,0-35.76,0L22.66,190.09a19.52,19.52,0,0,0,0,19.71A20.36,20.36,0,0,0,40.54,220H215.46a20.36,20.36,0,0,0,17.86-10.2A19.52,19.52,0,0,0,233.34,190.09ZM226.4,205.8a12.47,12.47,0,0,1-10.94,6.2H40.54a12.47,12.47,0,0,1-10.94-6.2,11.45,11.45,0,0,1,0-11.72L117.05,42.21a12.76,12.76,0,0,1,21.9,0L226.4,194.08A11.45,11.45,0,0,1,226.4,205.8ZM124,144V104a4,4,0,0,1,8,0v40a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,180Z"}))]])},64178:(e,a,t)=>{t.d(a,{r:()=>s});var l=t(80351),n=t(16763),r=t(60525);let i=l.forwardRef((e,a)=>l.createElement(n.A,{ref:a,...e,weights:r.A}));i.displayName="CheckCircleIcon";let s=i},68269:(e,a,t)=>{t.d(a,{N:()=>s});var l=t(80351),n=t(16763),r=t(60709);let i=l.forwardRef((e,a)=>l.createElement(n.A,{ref:a,...e,weights:r.A}));i.displayName="WarningIcon";let s=i},90566:(e,a,t)=>{t.d(a,{A:()=>i});var l=t(48503);let n={ok:"bg-ok",lime:"bg-agent-vivid",coral:"bg-skill-vivid",blue:"bg-conn-vivid",warn:"bg-warn"},r={ok:"animate-[blip_1.4s_ease-out_infinite]",lime:"animate-[blip-lime_1.5s_ease-out_infinite]",coral:"animate-[blip-coral_1.4s_ease-out_infinite]",blue:"animate-[blip-blue_1.4s_ease-out_infinite]",warn:"animate-[blip-coral_1.4s_ease-out_infinite]"};function i({variant:e="ok",size:a="sm",animate:t=!0,className:s=""}){return(0,l.jsx)("span",{className:`inline-block shrink-0 rounded-full ${"sm"===a?"h-[7px] w-[7px]":"h-2 w-2"} ${n[e]} ${t?r[e]:""} ${s}`})}}}]);