nodal-agents 0.7.0 → 0.7.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 (165) hide show
  1. package/cli.js +335 -35
  2. package/migrations/0054_audit2_db_integrity.sql +52 -0
  3. package/migrations/0055_entity_settings.sql +22 -0
  4. package/migrations/0056_agents_skills_entity_scoped_unique.sql +23 -0
  5. package/migrations/0057_telegram_allowed_chats.sql +34 -0
  6. package/migrations/meta/_journal.json +28 -0
  7. package/package.json +1 -1
  8. package/runner.js +47123 -35332
  9. package/web/.next/BUILD_ID +1 -1
  10. package/web/.next/app-path-routes-manifest.json +4 -4
  11. package/web/.next/build-manifest.json +2 -2
  12. package/web/.next/prerender-manifest.json +3 -3
  13. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +3 -3
  14. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js.nft.json +1 -1
  15. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page_client-reference-manifest.js +1 -1
  16. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js +2 -2
  17. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js.nft.json +1 -1
  18. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page_client-reference-manifest.js +1 -1
  19. package/web/.next/server/app/(dashboard)/agents/page.js +2 -2
  20. package/web/.next/server/app/(dashboard)/agents/page.js.nft.json +1 -1
  21. package/web/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
  22. package/web/.next/server/app/(dashboard)/approvals/page.js +2 -2
  23. package/web/.next/server/app/(dashboard)/approvals/page.js.nft.json +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/page.js +2 -2
  26. package/web/.next/server/app/(dashboard)/automations/page.js.nft.json +1 -1
  27. package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -1
  28. package/web/.next/server/app/(dashboard)/chat/page.js +2 -2
  29. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  30. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  31. package/web/.next/server/app/(dashboard)/connectors/page.js +1 -1
  32. package/web/.next/server/app/(dashboard)/connectors/page.js.nft.json +1 -1
  33. package/web/.next/server/app/(dashboard)/connectors/page_client-reference-manifest.js +1 -1
  34. package/web/.next/server/app/(dashboard)/credentials/page.js +1 -1
  35. package/web/.next/server/app/(dashboard)/credentials/page.js.nft.json +1 -1
  36. package/web/.next/server/app/(dashboard)/credentials/page_client-reference-manifest.js +1 -1
  37. package/web/.next/server/app/(dashboard)/jobs/[id]/page.js +2 -2
  38. package/web/.next/server/app/(dashboard)/jobs/[id]/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/jobs/[id]/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/jobs/page.js +2 -2
  41. package/web/.next/server/app/(dashboard)/jobs/page.js.nft.json +1 -1
  42. package/web/.next/server/app/(dashboard)/jobs/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/(dashboard)/learned-skills/page.js +2 -2
  44. package/web/.next/server/app/(dashboard)/learned-skills/page.js.nft.json +1 -1
  45. package/web/.next/server/app/(dashboard)/learned-skills/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/(dashboard)/llm-providers/page.js +1 -1
  47. package/web/.next/server/app/(dashboard)/llm-providers/page.js.nft.json +1 -1
  48. package/web/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/logs/page.js +2 -2
  50. package/web/.next/server/app/(dashboard)/logs/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/mcp/page.js +2 -2
  53. package/web/.next/server/app/(dashboard)/mcp/page.js.nft.json +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 +2 -2
  56. package/web/.next/server/app/(dashboard)/memories/page.js.nft.json +1 -1
  57. package/web/.next/server/app/(dashboard)/memories/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/(dashboard)/page.js +2 -2
  59. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  60. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/settings/page.js +2 -2
  62. package/web/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/(dashboard)/settings/root-context/page.js +2 -2
  65. package/web/.next/server/app/(dashboard)/settings/root-context/page.js.nft.json +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 +2 -2
  68. package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js.nft.json +1 -1
  69. package/web/.next/server/app/(dashboard)/skills/[id]/edit/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/(dashboard)/skills/new/page.js +2 -2
  71. package/web/.next/server/app/(dashboard)/skills/new/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/skills/new/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/skills/page.js +2 -2
  74. package/web/.next/server/app/(dashboard)/skills/page.js.nft.json +1 -1
  75. package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/_global-error.html +1 -1
  78. package/web/.next/server/app/_global-error.rsc +2 -2
  79. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  80. package/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  81. package/web/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  82. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
  84. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  85. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/_not-found.html +1 -1
  87. package/web/.next/server/app/_not-found.rsc +3 -3
  88. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  89. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  90. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  91. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  92. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  93. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  94. package/web/.next/server/app/api/auth/[...all]/route.js +1 -1
  95. package/web/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -1
  96. package/web/.next/server/app/api/oauth/[provider]/callback/route.js +1 -1
  97. package/web/.next/server/app/api/oauth/[provider]/callback/route.js.nft.json +1 -1
  98. package/web/.next/server/app/api/oauth/[provider]/start/route.js +1 -1
  99. package/web/.next/server/app/api/oauth/[provider]/start/route.js.nft.json +1 -1
  100. package/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/onboarding/page.js +205 -185
  102. package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app-paths-manifest.json +4 -4
  104. package/web/.next/server/chunks/2713.js +47 -27
  105. package/web/.next/server/chunks/3223.js +1 -1
  106. package/web/.next/server/chunks/4574.js +1 -1
  107. package/web/.next/server/chunks/5515.js +1 -0
  108. package/web/.next/server/chunks/6468.js +1 -0
  109. package/web/.next/server/chunks/8410.js +1 -0
  110. package/web/.next/server/chunks/{4488.js → 8810.js} +2 -2
  111. package/web/.next/server/chunks/{3154.js → 960.js} +10 -10
  112. package/web/.next/server/middleware-build-manifest.js +1 -1
  113. package/web/.next/server/pages/404.html +1 -1
  114. package/web/.next/server/pages/500.html +1 -1
  115. package/web/.next/server/server-reference-manifest.js +1 -1
  116. package/web/.next/server/server-reference-manifest.json +1 -1
  117. package/web/.next/static/chunks/4964-c6711d3d479b6085.js +1 -0
  118. package/web/.next/static/chunks/{9836-6830cb9d49ad261f.js → 9836-177f6ca2f15ff703.js} +1 -1
  119. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-cfce874f4acede5e.js +6 -0
  120. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-9249c2839f551ba1.js +1 -0
  121. package/web/.next/static/chunks/app/(dashboard)/agents/page-7d784d737acedccf.js +1 -0
  122. package/web/.next/static/chunks/app/(dashboard)/approvals/{page-9a01cb723a6ccff0.js → page-b3a838ecbc94a030.js} +1 -1
  123. package/web/.next/static/chunks/app/(dashboard)/automations/page-b1b548de4f52696c.js +1 -0
  124. package/web/.next/static/chunks/app/(dashboard)/chat/{page-a6cc7a58986c0340.js → page-bcf6dcc73b370eb0.js} +1 -1
  125. package/web/.next/static/chunks/app/(dashboard)/connectors/{page-21d6c042800c8cd3.js → page-2c6f913cc6aea4b7.js} +1 -1
  126. package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-43f033251eddcc4b.js +1 -0
  127. package/web/.next/static/chunks/app/(dashboard)/jobs/page-1f892f950bb30403.js +1 -0
  128. package/web/.next/static/chunks/app/(dashboard)/layout-e184673151ff8a05.js +1 -0
  129. package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-f873bb6f8539e47e.js +1 -0
  130. package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-64adda30176f4ccb.js +1 -0
  131. package/web/.next/static/chunks/app/(dashboard)/logs/page-79cfd9141c39d8ef.js +1 -0
  132. package/web/.next/static/chunks/app/(dashboard)/mcp/page-d276d7bab25286a1.js +1 -0
  133. package/web/.next/static/chunks/app/(dashboard)/memories/page-c66720494a340503.js +1 -0
  134. package/web/.next/static/chunks/app/(dashboard)/page-3649204dd27a0ad0.js +1 -0
  135. package/web/.next/static/chunks/app/(dashboard)/settings/page-1cab404d2eccfd80.js +1 -0
  136. package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-b5898c5444f88c9a.js +1 -0
  137. package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-82d91fc6b6acc161.js +1 -0
  138. package/web/.next/static/chunks/app/(dashboard)/skills/new/page-58b5ed04583ca7d4.js +1 -0
  139. package/web/.next/static/chunks/app/(dashboard)/skills/page-312bd4ae8ddc8114.js +1 -0
  140. package/web/.next/static/chunks/app/onboarding/{page-a4116e2f430eaff8.js → page-f2f04878e81fdf23.js} +2 -2
  141. package/web/.next/static/css/{eff119dd24f92093.css → 4d808b91d7b58fce.css} +1 -1
  142. package/web/.next/server/chunks/4626.js +0 -1
  143. package/web/.next/server/chunks/8971.js +0 -1
  144. package/web/.next/server/chunks/9043.js +0 -1
  145. package/web/.next/static/chunks/4964-08171c654e41b0a4.js +0 -1
  146. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-fa5717f0d0450659.js +0 -6
  147. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-73012222871598aa.js +0 -1
  148. package/web/.next/static/chunks/app/(dashboard)/agents/page-7e9616b28c098e9e.js +0 -1
  149. package/web/.next/static/chunks/app/(dashboard)/automations/page-85c985cd687406ed.js +0 -1
  150. package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-f6b993a88c70a2fe.js +0 -1
  151. package/web/.next/static/chunks/app/(dashboard)/jobs/page-d0d6b9db1b68451f.js +0 -1
  152. package/web/.next/static/chunks/app/(dashboard)/layout-d2ac2646967496bb.js +0 -1
  153. package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-ec6312f6dfd7ee23.js +0 -1
  154. package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-1fb26463eddf509c.js +0 -1
  155. package/web/.next/static/chunks/app/(dashboard)/logs/page-0bca733315e8a208.js +0 -1
  156. package/web/.next/static/chunks/app/(dashboard)/mcp/page-ff56ecf2f65f5466.js +0 -1
  157. package/web/.next/static/chunks/app/(dashboard)/memories/page-fe4d9438c93750d6.js +0 -1
  158. package/web/.next/static/chunks/app/(dashboard)/page-9402fe2931216f4b.js +0 -1
  159. package/web/.next/static/chunks/app/(dashboard)/settings/page-995662f10ebff365.js +0 -1
  160. package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-785b6ce3e4c5890b.js +0 -1
  161. package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-2106201c4df8b5a4.js +0 -1
  162. package/web/.next/static/chunks/app/(dashboard)/skills/new/page-0135bcb86ab60dc2.js +0 -1
  163. package/web/.next/static/chunks/app/(dashboard)/skills/page-54e939d40c8b5b6d.js +0 -1
  164. /package/web/.next/static/{KFac7DQ7gdp9XPQ2bnb-2 → SgnP_MouhUmw0bBf-lUmD}/_buildManifest.js +0 -0
  165. /package/web/.next/static/{KFac7DQ7gdp9XPQ2bnb-2 → SgnP_MouhUmw0bBf-lUmD}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=3223,exports.ids=[3223],exports.modules={43223:(a,b,c)=>{c.d(b,{EB:()=>G,YT:()=>F,zw:()=>E,SV:()=>H,mV:()=>J,eS:()=>L});var d=c(59606);let e=d.k5(["telegram","api","whatsapp","internal","cron","task-board","slack","discord","dashboard"]),f=d.k5(["pending","processing","completed","failed","awaiting_approval","awaiting_delegation","cancelled"]),g=d.k5(["todo","in_progress","done","cancelled","blocked"]),h=d.k5(["low","medium","high"]),i=d.k5(["agent","orchestrator","system"]),j=d.k5(["router","planner"]),k=d.k5(["api_key","oauth2","bearer","basic","none"]),l=d.k5(["pending","approved","rejected","expired"]),m=d.k5(["auto_approve","require_approval","block"]),n=d.k5(["preference","context","outcome","learned_rule"]),o=d.k5(["agent","reflection","manual"]),p=d.k5(["L1","L2","L3"]),q=d.k5(["cron","heartbeat"]),r=d.k5(["success","failed","no_action"]),s=d.k5(["owner","admin","member","viewer"]),t=d.k5(["agency","startup","personal","studio","enterprise","other"]),u=d.k5(["read","write","destructive"]);d.k5(["webhook","transform","schedule"]),d.k5(["pre_task","post_task","pre_tool","post_tool","on_memory_save"]),d.k5(["http","stdio"]),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Ik({id:d.Yj().guid(),user_id:d.Yj().guid(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),description:d.Yj().max(500).nullable(),icon:d.Yj().max(4),industry:t.nullable(),goal:d.Yj().max(1e3).nullable(),mcp_token:d.Yj().guid().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,mcp_token:!0,created_at:!0,updated_at:!0}).extend({description:d.Yj().max(500).nullable().optional(),icon:d.Yj().max(4).default("\uD83C\uDFE2"),industry:t.nullable().optional(),goal:d.Yj().max(1e3).nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid(),user_id:d.Yj().guid(),role:s,created_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0}).extend({role:s.default("owner")}),d.Ik({user_id:d.Yj().guid(),display_name:d.Yj().max(120).nullable(),avatar_url:d.Yj().max(500).nullable(),timezone:d.Yj().max(80),locale:d.Yj().max(10),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({created_at:!0,updated_at:!0}).extend({display_name:d.Yj().max(120).nullable().optional(),avatar_url:d.Yj().max(500).nullable().optional(),timezone:d.Yj().max(80).default("UTC"),locale:d.Yj().max(10).default("en")}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),personality:d.Yj().min(1),model:d.Yj().min(1),active:d.zM(),is_default:d.zM(),role:i,orchestrator_mode:j.nullable(),telegram_bot_token:d.Yj().nullable(),telegram_bot_username:d.Yj().nullable(),telegram_offset:d.ai().int().nonnegative().nullable(),requires_approval:d.YO(d.Yj()),capabilities:d.YO(d.Yj()),task_context_template:d.Yj().nullable(),avatar_url:d.Yj().nullable(),system_agent:d.zM(),max_tokens_per_job:d.ai().int().min(0),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,telegram_offset:!0,capabilities:!0,system_agent:!0}).extend({active:d.zM().default(!0),is_default:d.zM().default(!1),role:i.default("agent"),orchestrator_mode:j.nullable().optional(),telegram_bot_token:d.Yj().nullable().optional(),telegram_bot_username:d.Yj().nullable().optional(),requires_approval:d.YO(d.Yj()).default([]),task_context_template:d.Yj().nullable().optional(),avatar_url:d.Yj().nullable().optional(),max_tokens_per_job:d.ai().int().min(0).max(5e5).default(0)});let v=d.ai().int().min(0),w=d.ai().int().min(0);d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid().nullable(),status:f,channel:e,task:d.Yj().min(1),original_task:d.Yj().nullable(),chat_id:d.Yj().nullable(),system_prompt:d.Yj().nullable(),messages:d.YO(d.g1(d.Yj(),d.L5())),tools_used:d.YO(d.Yj()),turn:d.ai().int().min(0),result:d.Yj().nullable(),error:d.Yj().nullable(),chain_count:v,request_id:d.Yj().nullable(),parent_job_id:d.Yj().guid().nullable(),parent_request_id:d.Yj().nullable(),total_duration_ms:d.ai().int().min(0),input_tokens:d.ai().int().min(0),output_tokens:d.ai().int().min(0),delegation_depth:w,pending_delegation:d.g1(d.Yj(),d.L5()).nullable(),completed_at:d.Yj().datetime().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,completed_at:!0,messages:!0,tools_used:!0,turn:!0,result:!0,error:!0,chain_count:!0,total_duration_ms:!0,input_tokens:!0,output_tokens:!0,delegation_depth:!0,pending_delegation:!0,parent_request_id:!0}).extend({status:f.default("pending"),original_task:d.Yj().nullable().optional(),chat_id:d.Yj().nullable().optional(),system_prompt:d.Yj().nullable().optional(),request_id:d.Yj().nullable().optional(),parent_job_id:d.Yj().guid().nullable().optional()});let x=d.Yj().max(2e3).nullable(),y=d.Yj().min(1).max(200);d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid(),orchestrator_id:d.Yj().guid(),title:y,description:x,status:g,priority:h,job_id:d.Yj().guid().nullable(),result:d.Yj().nullable(),created_by_agent_id:d.Yj().guid().nullable(),assigned_agent_id:d.Yj().guid().nullable(),input_tokens:d.ai().int().min(0),output_tokens:d.ai().int().min(0),cost_usd:d.ai().min(0),depends_on:d.YO(d.Yj().guid()),context:d.g1(d.Yj(),d.L5()),root_job_id:d.Yj().guid().nullable(),locked_at:d.Yj().datetime().nullable(),locked_by:d.Yj().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,job_id:!0,result:!0,created_by_agent_id:!0,assigned_agent_id:!0,input_tokens:!0,output_tokens:!0,cost_usd:!0,depends_on:!0,context:!0,root_job_id:!0,locked_at:!0,locked_by:!0}).extend({status:g.default("todo"),priority:h.default("medium"),description:x.optional(),depends_on:d.YO(d.Yj().guid()).default([]),context:d.g1(d.Yj(),d.L5()).default({}),root_job_id:d.Yj().guid().nullable().optional()}),d.Ik({id:d.Yj().guid(),owner_user_id:d.Yj().guid(),name:d.Yj().min(1),type:d.k5(["google-oauth","notion-oauth","airtable-oauth"]),payload:d.Yj(),created_at:d.p6().nullable(),updated_at:d.p6().nullable()}),d.Ik({clientId:d.Yj(),clientSecret:d.Yj(),refreshToken:d.Yj().nullable(),accessToken:d.Yj(),expiresAt:d.Yj().nullable(),scopes:d.Yj(),accountName:d.Yj(),tokenUrl:d.Yj().url()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),base_url:d.Yj().nullable(),api_key:d.Yj().nullable(),active:d.zM(),auth_type:k,credential_id:d.Yj().guid().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0}).extend({active:d.zM().default(!0),auth_type:k.default("api_key"),base_url:d.Yj().nullable().optional(),api_key:d.Yj().nullable().optional(),credential_id:d.Yj().guid().nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),job_id:d.Yj().guid().nullable(),tool_name:d.Yj().min(1),tool_input:d.g1(d.Yj(),d.L5()).nullable(),tool_output:d.Yj().nullable(),duration_ms:d.ai().int().min(0).nullable(),turn:d.ai().int().min(0).nullable(),created_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0}).extend({tool_input:d.g1(d.Yj(),d.L5()).nullable().optional(),tool_output:d.Yj().nullable().optional(),duration_ms:d.ai().int().min(0).nullable().optional(),turn:d.ai().int().min(0).nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),job_id:d.Yj().guid(),agent_id:d.Yj().guid().nullable(),tool_name:d.Yj().min(1),tool_input:d.g1(d.Yj(),d.L5()),status:l,requested_at:d.Yj().datetime(),resolved_at:d.Yj().datetime().nullable(),resolved_by:d.Yj().nullable(),expires_at:d.Yj().datetime().nullable(),notes:d.Yj().nullable()}).strict().omit({id:!0,requested_at:!0,resolved_at:!0,resolved_by:!0,expires_at:!0}).extend({status:l.default("pending"),notes:d.Yj().nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid().nullable(),tool_name:d.Yj().min(1),action:m,condition_json:d.g1(d.Yj(),d.L5()),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0}).extend({agent_id:d.Yj().guid().nullable().optional(),condition_json:d.g1(d.Yj(),d.L5()).default({})});let z=d.ai().int().min(1).max(5);d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid().nullable(),fact:d.Yj().min(1),category:n,importance:z,source:o,skill_tags:d.YO(d.Yj().max(60)),memory_layer:p.nullable(),valid_from:d.Yj().datetime().nullable(),valid_to:d.Yj().datetime().nullable(),fact_hash:d.Yj().nullable(),archived:d.zM(),importance_locked:d.zM().default(!1),last_accessed_at:d.Yj().datetime().nullable(),access_count:d.ai().int().min(0),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,fact_hash:!0,archived:!0,importance_locked:!0,last_accessed_at:!0,access_count:!0,valid_from:!0,valid_to:!0}).extend({agent_id:d.Yj().guid().nullable().optional(),category:n.default("context"),importance:z.default(3),source:o.default("manual"),skill_tags:d.YO(d.Yj().max(60)).max(20).default([]),memory_layer:p.nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid().nullable(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),task_template:d.Yj().min(1),active:d.zM(),secret:d.Yj().nullable(),last_triggered_at:d.Yj().datetime().nullable(),trigger_count:d.ai().int().min(0),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,secret:!0,last_triggered_at:!0,trigger_count:!0}).extend({active:d.zM().default(!0)});let A=d.Ik({name:d.Yj().min(1),slug:d.Yj().min(1).regex(/^[a-z0-9-]+$/),risk:u,requires_approval:d.zM()}).strict(),B=d.Ik({label:d.Yj().min(1),description:d.Yj().min(1),type:d.k5(["connector_slug","manual"]),value:d.Yj().optional(),critical:d.zM()}).strict();d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),content:d.Yj().min(1),active:d.zM(),description:d.Yj().max(300).nullable(),default_content:d.Yj().nullable(),content_overridden:d.zM(),required_config:d.YO(B),operations:d.YO(A),required_builtins:d.YO(d.Yj()),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0}).extend({active:d.zM().default(!0),description:d.Yj().max(300).nullable().optional(),default_content:d.Yj().nullable().optional(),content_overridden:d.zM().default(!1),required_config:d.YO(B).default([]),operations:d.YO(A).default([]),required_builtins:d.YO(d.Yj()).default([])}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid(),agent_id:d.Yj().guid(),skill_id:d.Yj().guid(),approval_overrides:d.g1(d.Yj(),d.zM()),use_custom_instructions:d.zM(),enabled_operations:d.YO(d.Yj()).nullable(),created_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0}).extend({approval_overrides:d.g1(d.Yj(),d.zM()).default({}),use_custom_instructions:d.zM().default(!1),enabled_operations:d.YO(d.Yj()).nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid(),type:q,name:d.Yj().min(1).max(120),cron_expr:d.Yj().min(1),task:d.Yj().nullable(),objectives:d.Yj().nullable(),active:d.zM(),last_run:d.Yj().datetime().nullable(),next_run:d.Yj().datetime().nullable(),last_status:r.nullable(),chat_id:d.Yj().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,last_run:!0,next_run:!0,last_status:!0}).extend({type:q.default("cron"),active:d.zM().default(!0),task:d.Yj().nullable().optional(),objectives:d.Yj().nullable().optional(),chat_id:d.Yj().nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid(),provider:d.Yj().min(1),api_key:d.Yj(),base_url:d.Yj().nullable(),nickname:d.Yj().max(80).nullable(),is_active:d.zM(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0}).extend({api_key:d.Yj().default(""),base_url:d.Yj().nullable().optional(),nickname:d.Yj().max(80).nullable().optional(),is_active:d.zM().default(!0)});let C=["https://www.googleapis.com/auth/userinfo.email","openid"];[...C],[...C],[...C],[...C],[...C];let D=d.k5(["propose_confirm","destructive_gate","fully_autonomous"]);d.Ik({createAgent:d.zM(),updateAgent:d.zM(),attachAgent:d.zM(),createSkill:d.zM(),updateSkill:d.zM(),assignSkill:d.zM(),createMcp:d.zM(),attachMcp:d.zM(),createConnector:d.zM(),attachConnector:d.zM(),manageSchedules:d.zM(),autonomy:D});let E={createAgent:!0,updateAgent:!0,attachAgent:!0,createSkill:!0,updateSkill:!0,assignSkill:!0,createMcp:!0,attachMcp:!0,createConnector:!0,attachConnector:!0,manageSchedules:!0,autonomy:"propose_confirm"},F=[{slug:"notion",label:"Notion",authType:"api_key",docsHint:"Create a Notion integration at notion.so/my-integrations and copy its internal secret."},{slug:"notion-oauth",label:"Notion (OAuth)",authType:"oauth2",credentialType:"notion-oauth",docsHint:"Public Integration via OAuth — create one at notion.so/my-integrations (Public type) and authorize from your dashboard."},{slug:"google-drive",label:"Google Drive",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"gmail",label:"Gmail",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"google-calendar",label:"Google Calendar",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"google-sheets",label:"Google Sheets",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"google-docs",label:"Google Docs",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"airtable-oauth",label:"Airtable (OAuth)",authType:"oauth2",credentialType:"airtable-oauth",docsHint:"OAuth flow for Airtable Public Integrations (recommended)."},{slug:"airtable",label:"Airtable",authType:"api_key",docsHint:"Personal Access Token — airtable.com/create/tokens."},{slug:"apify",label:"Apify",authType:"api_key",docsHint:"Apify API token — console.apify.com/account/integrations."},{slug:"firecrawl",label:"Firecrawl",authType:"api_key",docsHint:"Firecrawl API key — firecrawl.dev/account."},{slug:"tavily",label:"Tavily",authType:"api_key",docsHint:"Tavily API key — app.tavily.com."},{slug:"poyo",label:"Poyo",authType:"api_key",docsHint:"Poyo API key — poyo.ai (API Console). Sent as a Bearer token."}],G=[{slug:"comfyui",name:"ComfyUI",description:"Generate images, video and audio with your own ComfyUI (local, Desktop or Cloud) — run any workflow with parameter injection. Requires a running ComfyUI + python3.",source:"NousResearch/hermes-agent/skills/creative/comfyui",sourceHost:"github",category:"Creative"},{slug:"excel-author",name:"Excel author",description:"Build auditable Excel workbooks headlessly (openpyxl) — real formulas instead of hardcoded values, cell-colour conventions and balance checks. Needs python3.",source:"NousResearch/hermes-agent/optional-skills/finance/excel-author",sourceHost:"github",category:"Office & documents"},{slug:"pptx-author",name:"PowerPoint author",description:"Generate PowerPoint decks headlessly (python-pptx) — slides, speaker notes and templates, with numbers traceable back to a workbook. Needs python3.",source:"NousResearch/hermes-agent/optional-skills/finance/pptx-author",sourceHost:"github",category:"Office & documents"},{slug:"ocr-and-documents",name:"PDF & OCR",description:"Extract text from PDFs and scanned images (pymupdf, marker-pdf) — searchable text out of documents that have none. Needs python3.",source:"NousResearch/hermes-agent/skills/productivity/ocr-and-documents",sourceHost:"github",category:"Office & documents"},{slug:"nano-pdf",name:"PDF editor",description:"Edit PDF text, fix typos and change titles from natural-language prompts (nano-pdf CLI) — no re-export from the source document.",source:"NousResearch/hermes-agent/skills/productivity/nano-pdf",sourceHost:"github",category:"Office & documents"},{slug:"youtube-content",name:"YouTube content",description:"Turn YouTube videos into summaries, threads and blog posts from their transcripts — no video download.",source:"NousResearch/hermes-agent/skills/media/youtube-content",sourceHost:"github",category:"Media"},{slug:"whisper",name:"Whisper speech-to-text",description:"Local speech-to-text in 99 languages (OpenAI Whisper) — transcription and translation, offline. Needs python3.",source:"NousResearch/hermes-agent/optional-skills/mlops/whisper",sourceHost:"github",category:"Media"},{slug:"osint-investigation",name:"OSINT investigation",description:"Public-records OSINT — SEC EDGAR filings, USAspending contracts, sanctions lists and court records, with entity resolution. No API key (stdlib only).",source:"NousResearch/hermes-agent/optional-skills/research/osint-investigation",sourceHost:"github",category:"Research"},{slug:"stocks",name:"Stocks & crypto",description:"Stock quotes, history, comparison and crypto prices via Yahoo Finance. No API key.",source:"NousResearch/hermes-agent/optional-skills/finance/stocks",sourceHost:"github",category:"Finance"},{slug:"doc-coauthoring",name:"Doc co-authoring",description:"Structured workflow to co-author docs, proposals, specs and decision documents.",source:"anthropics/skills/skills/doc-coauthoring",sourceHost:"github",category:"Office & documents"},{slug:"skill-creator",name:"Skill creator",description:"Create, evaluate and package new agent skills — Anthropic's official skill scaffolder.",source:"anthropics/skills/skills/skill-creator",sourceHost:"github",category:"Development"},{slug:"mcp-builder",name:"MCP builder",description:"Guidance for building well-designed MCP servers with good tools.",source:"anthropics/skills/skills/mcp-builder",sourceHost:"github",category:"Development"},{slug:"webapp-testing",name:"Web app testing",description:"Test and debug local web apps with Playwright — screenshots, console logs, server lifecycle. Needs python3.",source:"anthropics/skills/skills/webapp-testing",sourceHost:"github",category:"Development"},{slug:"frontend-design",name:"Frontend design",description:"Opinionated guidance for distinctive, intentional UI and visual design (one of the most-installed skills).",source:"anthropics/skills/skills/frontend-design",sourceHost:"github",category:"Design"},{slug:"canvas-design",name:"Canvas design",description:"Design-philosophy-driven visual art as PNG/PDF compositions.",source:"anthropics/skills/skills/canvas-design",sourceHost:"github",category:"Design"},{slug:"theme-factory",name:"Theme factory",description:"Style artifacts (slides, docs, HTML) with preset or custom themes.",source:"anthropics/skills/skills/theme-factory",sourceHost:"github",category:"Design"},{slug:"algorithmic-art",name:"Algorithmic art",description:"Generative art via p5.js (flow fields, particles) as self-contained HTML.",source:"anthropics/skills/skills/algorithmic-art",sourceHost:"github",category:"Media"},{slug:"internal-comms",name:"Internal comms",description:"Write internal company communications in preferred formats.",source:"anthropics/skills/skills/internal-comms",sourceHost:"github",category:"Productivity"},{slug:"test-driven-development",name:"Test-driven development",description:"Enforce RED-GREEN-REFACTOR — write tests before code (Superpowers).",source:"obra/superpowers/skills/test-driven-development",sourceHost:"github",category:"Development"},{slug:"systematic-debugging",name:"Systematic debugging",description:"Hypothesis-first structured debugging — understand before fixing (Superpowers).",source:"obra/superpowers/skills/systematic-debugging",sourceHost:"github",category:"Development"},{slug:"writing-plans",name:"Writing plans",description:"Turn a spec into an actionable, checkpointed implementation plan (Superpowers).",source:"obra/superpowers/skills/writing-plans",sourceHost:"github",category:"Development"},{slug:"verification-before-completion",name:"Verify before done",description:"Show real evidence before claiming a task is complete (Superpowers).",source:"obra/superpowers/skills/verification-before-completion",sourceHost:"github",category:"Development"},{slug:"using-git-worktrees",name:"Git worktrees",description:"Isolated parallel workspaces with git worktrees (Superpowers).",source:"obra/superpowers/skills/using-git-worktrees",sourceHost:"github",category:"Development"},{slug:"find-skills",name:"Find skills",description:"Discover and install agent skills on demand (Vercel) — the most-installed skill.",source:"vercel-labs/skills/skills/find-skills",sourceHost:"github",category:"Development"},{slug:"agent-browser",name:"Agent browser",description:"Drive a real browser for agent tasks (Vercel). Needs the browser runtime.",source:"vercel-labs/agent-browser/skills/agent-browser",sourceHost:"github",category:"Web"},{slug:"react-best-practices",name:"React best practices",description:"React patterns and performance guidance (Vercel).",source:"vercel-labs/agent-skills/skills/react-best-practices",sourceHost:"github",category:"Development"},{slug:"web-design-guidelines",name:"Web design guidelines",description:"Practical web design heuristics and guidelines (Vercel).",source:"vercel-labs/agent-skills/skills/web-design-guidelines",sourceHost:"github",category:"Design"},{slug:"playwright",name:"Playwright browser",description:"Browser automation — navigate, fill forms, scrape (OpenAI). Needs the Playwright runtime.",source:"openai/skills/skills/.curated/playwright",sourceHost:"github",category:"Web"},{slug:"supabase-postgres-best-practices",name:"Supabase / Postgres",description:"Postgres & Supabase schema, RLS and query best practices (Supabase).",source:"supabase/agent-skills/skills/supabase-postgres-best-practices",sourceHost:"github",category:"Development"},{slug:"workers-best-practices",name:"Cloudflare Workers",description:"Author and review Cloudflare Workers code (Cloudflare).",source:"cloudflare/skills/skills/workers-best-practices",sourceHost:"github",category:"Development"},{slug:"firecrawl-scrape",name:"Firecrawl scrape",description:"Scrape any page to clean markdown via Firecrawl. Needs a Firecrawl API key.",source:"firecrawl/firecrawl-claude-plugin/skills/firecrawl-scrape",sourceHost:"github",category:"Web"},{slug:"firecrawl-search",name:"Firecrawl search",description:"Web search via Firecrawl. Needs a Firecrawl API key.",source:"firecrawl/firecrawl-claude-plugin/skills/firecrawl-search",sourceHost:"github",category:"Web"},{slug:"semgrep",name:"Semgrep static analysis",description:"Find security bugs with Semgrep static analysis (Trail of Bits). Needs python3.",source:"trailofbits/skills/plugins/static-analysis/skills/semgrep",sourceHost:"github",category:"Security"},{slug:"codeql",name:"CodeQL static analysis",description:"CodeQL static analysis for security review (Trail of Bits).",source:"trailofbits/skills/plugins/static-analysis/skills/codeql",sourceHost:"github",category:"Security"},{slug:"dcf-model",name:"DCF model",description:"Build institutional-quality DCF valuation models in Excel. Needs python3.",source:"NousResearch/hermes-agent/optional-skills/finance/dcf-model",sourceHost:"github",category:"Finance"},{slug:"3-statement-model",name:"3-statement model",description:"Build fully-integrated 3-statement models (income, balance, cash flow) in Excel.",source:"NousResearch/hermes-agent/optional-skills/finance/3-statement-model",sourceHost:"github",category:"Finance"},{slug:"lbo-model",name:"LBO model",description:"Leveraged-buyout models — sources & uses, debt schedule, IRR/MOIC, in Excel.",source:"NousResearch/hermes-agent/optional-skills/finance/lbo-model",sourceHost:"github",category:"Finance"},{slug:"comps-analysis",name:"Comps analysis",description:"Comparable-company analysis — trading multiples and benchmarking, in Excel.",source:"NousResearch/hermes-agent/optional-skills/finance/comps-analysis",sourceHost:"github",category:"Finance"},{slug:"merger-model",name:"Merger model",description:"Accretion/dilution merger models — pro-forma P&L and EPS impact, in Excel.",source:"NousResearch/hermes-agent/optional-skills/finance/merger-model",sourceHost:"github",category:"Finance"},{slug:"remotion",name:"Remotion video",description:"Programmatic video with React via Remotion (official). Needs node.",source:"remotion-dev/skills/skills/remotion",sourceHost:"github",category:"Media"}],H={deepseek:[{modelId:"deepseek-chat",label:"DeepSeek Chat (V3)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:128e3},{modelId:"deepseek-reasoner",label:"DeepSeek Reasoner (R1)",capabilities:{tools:!0,forcedToolChoice:!0,reasoning:!0},contextWindow:128e3}],minimax:[{modelId:"MiniMax-M3",label:"MiniMax M3",capabilities:{tools:!0,forcedToolChoice:!1,reasoning:!0},contextWindow:1048576},{modelId:"MiniMax-M2.7",label:"MiniMax M2.7",capabilities:{tools:!0,forcedToolChoice:!1},contextWindow:2e5},{modelId:"MiniMax-M2",label:"MiniMax M2",capabilities:{tools:!0,forcedToolChoice:!1},contextWindow:2e5}],anthropic:[{modelId:"claude-opus-4-8",label:"Claude Opus 4.8",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:2e5},{modelId:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:2e5},{modelId:"claude-haiku-4-5-20251001",label:"Claude Haiku 4.5",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:2e5}],openai:[{modelId:"gpt-5",label:"GPT-5",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:4e5},{modelId:"gpt-5-mini",label:"GPT-5 mini",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:4e5}],google:[{modelId:"gemini-2.0-flash",label:"Gemini 2.0 Flash",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576},{modelId:"gemini-2.5-pro",label:"Gemini 2.5 Pro",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576}],groq:[{modelId:"llama-3.3-70b-versatile",label:"Llama 3.3 70B",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:131072}],mistral:[{modelId:"mistral-large-latest",label:"Mistral Large",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:131072}],openrouter:[{modelId:"anthropic/claude-haiku-4.5",label:"Claude Haiku 4.5",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:2e5},{modelId:"anthropic/claude-opus-4.7",label:"Claude Opus 4.7",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"anthropic/claude-opus-4.7-fast",label:"Claude Opus 4.7 (fast)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"anthropic/claude-opus-4.8",label:"Claude Opus 4.8",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"anthropic/claude-opus-4.8-fast",label:"Claude Opus 4.8 (fast)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"anthropic/claude-sonnet-4.6",label:"Claude Sonnet 4.6",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"deepseek/deepseek-v3.2",label:"DeepSeek V3.2",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:131072},{modelId:"deepseek/deepseek-v4-flash",label:"DeepSeek V4 Flash",capabilities:{tools:!0,forcedToolChoice:!0,reasoning:!0},contextWindow:1048576,providerOrder:["deepseek"]},{modelId:"deepseek/deepseek-v4-pro",label:"DeepSeek V4 Pro",capabilities:{tools:!0,forcedToolChoice:!0,reasoning:!0},contextWindow:1048576,providerOrder:["deepseek"]},{modelId:"google/gemini-3.1-flash-lite-preview",label:"Gemini 3.1 Flash Lite (preview)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576},{modelId:"google/gemini-3.1-pro-preview",label:"Gemini 3.1 Pro (preview)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576},{modelId:"google/gemini-3.5-flash",label:"Gemini 3.5 Flash",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576},{modelId:"google/gemma-4-31b-it",label:"Gemma 4 31B-IT",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:262144},{modelId:"minimax/minimax-m3",label:"MiniMax M3",capabilities:{tools:!0,forcedToolChoice:!1,reasoning:!0},contextWindow:1048576},{modelId:"z-ai/glm-5.2",label:"GLM 5.2",capabilities:{tools:!0,forcedToolChoice:!1,reasoning:!0},contextWindow:1048576},{modelId:"moonshotai/kimi-k2.7-code",label:"Kimi K2.7 Code",capabilities:{tools:!0,forcedToolChoice:!1,reasoning:!0},contextWindow:262144}]},I=new Set(["anthropic/claude-haiku-4.5","anthropic/claude-opus-4.7","anthropic/claude-opus-4.7-fast","anthropic/claude-opus-4.8","anthropic/claude-opus-4.8-fast","anthropic/claude-sonnet-4.6","google/gemini-3.1-flash-lite-preview","google/gemini-3.1-pro-preview","google/gemini-3.5-flash","google/gemma-4-31b-it","minimax/minimax-m3","moonshotai/kimi-k2.7-code","claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","gpt-5","gpt-5-mini","gemini-2.0-flash","gemini-2.5-pro","mistral-large-latest","MiniMax-M3"]);for(let a of Object.values(H))for(let b of a)b.capabilities.vision=I.has(b.modelId);function J(a,b){return H[a]?.find(a=>a.modelId===b)}let K={anthropic:"Anthropic",openai:"OpenAI",google:"Google",deepseek:"DeepSeek",minimax:"MiniMax",mistral:"Mistral",meta:"Meta",qwen:"Qwen","meta-llama":"Meta"};function L(a){let b=new Map;for(let c of a){let a=function(a){let b=a.indexOf("/");if(b<0)return null;let c=a.slice(0,b);return K[c]??c.charAt(0).toUpperCase()+c.slice(1)}(c.modelId),d=b.get(a)??[];d.push(c),b.set(a,d)}return[...b.entries()].map(([a,b])=>({group:a,models:[...b].sort((a,b)=>a.label.localeCompare(b.label))})).sort((a,b)=>(a.group??"").localeCompare(b.group??""))}}};
1
+ "use strict";exports.id=3223,exports.ids=[3223],exports.modules={43223:(a,b,c)=>{c.d(b,{EB:()=>G,YT:()=>F,zw:()=>E,SV:()=>H,mV:()=>J,eS:()=>L});var d=c(59606);let e=d.k5(["telegram","api","whatsapp","internal","cron","task-board","slack","discord","dashboard"]),f=d.k5(["pending","processing","completed","failed","awaiting_approval","awaiting_delegation","cancelled"]),g=d.k5(["todo","in_progress","done","cancelled","blocked"]),h=d.k5(["low","medium","high"]),i=d.k5(["agent","orchestrator","system"]),j=d.k5(["router","planner"]),k=d.k5(["api_key","oauth2","bearer","basic","none"]),l=d.k5(["pending","approved","rejected","expired"]),m=d.k5(["auto_approve","require_approval","block"]),n=d.k5(["preference","context","outcome","learned_rule"]),o=d.k5(["agent","reflection","manual"]),p=d.k5(["L1","L2","L3"]),q=d.k5(["cron","heartbeat"]),r=d.k5(["success","failed","no_action"]),s=d.k5(["owner","admin","member","viewer"]),t=d.k5(["agency","startup","personal","studio","enterprise","other"]),u=d.k5(["read","write","destructive"]);d.k5(["webhook","transform","schedule"]),d.k5(["pre_task","post_task","pre_tool","post_tool","on_memory_save"]),d.k5(["http","stdio"]),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Yj().guid().brand(),d.Ik({id:d.Yj().guid(),user_id:d.Yj().guid(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),description:d.Yj().max(500).nullable(),icon:d.Yj().max(4),industry:t.nullable(),goal:d.Yj().max(1e3).nullable(),mcp_token:d.Yj().guid().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,mcp_token:!0,created_at:!0,updated_at:!0}).extend({description:d.Yj().max(500).nullable().optional(),icon:d.Yj().max(4).default("\uD83C\uDFE2"),industry:t.nullable().optional(),goal:d.Yj().max(1e3).nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid(),user_id:d.Yj().guid(),role:s,created_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0}).extend({role:s.default("owner")}),d.Ik({user_id:d.Yj().guid(),display_name:d.Yj().max(120).nullable(),avatar_url:d.Yj().max(500).nullable(),timezone:d.Yj().max(80),locale:d.Yj().max(10),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({created_at:!0,updated_at:!0}).extend({display_name:d.Yj().max(120).nullable().optional(),avatar_url:d.Yj().max(500).nullable().optional(),timezone:d.Yj().max(80).default("UTC"),locale:d.Yj().max(10).default("en")}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),personality:d.Yj().min(1),model:d.Yj().min(1),active:d.zM(),is_default:d.zM(),role:i,orchestrator_mode:j.nullable(),telegram_bot_token:d.Yj().nullable(),telegram_bot_username:d.Yj().nullable(),telegram_offset:d.ai().int().nonnegative().nullable(),requires_approval:d.YO(d.Yj()),capabilities:d.YO(d.Yj()),task_context_template:d.Yj().nullable(),avatar_url:d.Yj().nullable(),system_agent:d.zM(),max_tokens_per_job:d.ai().int().min(0),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,telegram_offset:!0,capabilities:!0,system_agent:!0}).extend({active:d.zM().default(!0),is_default:d.zM().default(!1),role:i.default("agent"),orchestrator_mode:j.nullable().optional(),telegram_bot_token:d.Yj().nullable().optional(),telegram_bot_username:d.Yj().nullable().optional(),requires_approval:d.YO(d.Yj()).default([]),task_context_template:d.Yj().nullable().optional(),avatar_url:d.Yj().nullable().optional(),max_tokens_per_job:d.ai().int().min(0).max(5e5).default(0)});let v=d.ai().int().min(0),w=d.ai().int().min(0);d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid().nullable(),status:f,channel:e,task:d.Yj().min(1),original_task:d.Yj().nullable(),chat_id:d.Yj().nullable(),system_prompt:d.Yj().nullable(),messages:d.YO(d.g1(d.Yj(),d.L5())),tools_used:d.YO(d.Yj()),turn:d.ai().int().min(0),result:d.Yj().nullable(),error:d.Yj().nullable(),chain_count:v,request_id:d.Yj().nullable(),parent_job_id:d.Yj().guid().nullable(),parent_request_id:d.Yj().nullable(),total_duration_ms:d.ai().int().min(0),input_tokens:d.ai().int().min(0),output_tokens:d.ai().int().min(0),delegation_depth:w,pending_delegation:d.g1(d.Yj(),d.L5()).nullable(),completed_at:d.Yj().datetime().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,completed_at:!0,messages:!0,tools_used:!0,turn:!0,result:!0,error:!0,chain_count:!0,total_duration_ms:!0,input_tokens:!0,output_tokens:!0,delegation_depth:!0,pending_delegation:!0,parent_request_id:!0}).extend({status:f.default("pending"),original_task:d.Yj().nullable().optional(),chat_id:d.Yj().nullable().optional(),system_prompt:d.Yj().nullable().optional(),request_id:d.Yj().nullable().optional(),parent_job_id:d.Yj().guid().nullable().optional()});let x=d.Yj().max(2e3).nullable(),y=d.Yj().min(1).max(200);d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid(),orchestrator_id:d.Yj().guid(),title:y,description:x,status:g,priority:h,job_id:d.Yj().guid().nullable(),result:d.Yj().nullable(),created_by_agent_id:d.Yj().guid().nullable(),assigned_agent_id:d.Yj().guid().nullable(),input_tokens:d.ai().int().min(0),output_tokens:d.ai().int().min(0),cost_usd:d.ai().min(0),depends_on:d.YO(d.Yj().guid()),context:d.g1(d.Yj(),d.L5()),root_job_id:d.Yj().guid().nullable(),locked_at:d.Yj().datetime().nullable(),locked_by:d.Yj().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,job_id:!0,result:!0,created_by_agent_id:!0,assigned_agent_id:!0,input_tokens:!0,output_tokens:!0,cost_usd:!0,depends_on:!0,context:!0,root_job_id:!0,locked_at:!0,locked_by:!0}).extend({status:g.default("todo"),priority:h.default("medium"),description:x.optional(),depends_on:d.YO(d.Yj().guid()).default([]),context:d.g1(d.Yj(),d.L5()).default({}),root_job_id:d.Yj().guid().nullable().optional()}),d.Ik({id:d.Yj().guid(),owner_user_id:d.Yj().guid(),name:d.Yj().min(1),type:d.k5(["google-oauth","notion-oauth","airtable-oauth"]),payload:d.Yj(),created_at:d.p6().nullable(),updated_at:d.p6().nullable()}),d.Ik({clientId:d.Yj(),clientSecret:d.Yj(),refreshToken:d.Yj().nullable(),accessToken:d.Yj(),expiresAt:d.Yj().nullable(),scopes:d.Yj(),accountName:d.Yj(),tokenUrl:d.Yj().url()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),base_url:d.Yj().nullable(),api_key:d.Yj().nullable(),active:d.zM(),auth_type:k,credential_id:d.Yj().guid().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0}).extend({active:d.zM().default(!0),auth_type:k.default("api_key"),base_url:d.Yj().nullable().optional(),api_key:d.Yj().nullable().optional(),credential_id:d.Yj().guid().nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),job_id:d.Yj().guid().nullable(),tool_name:d.Yj().min(1),tool_input:d.g1(d.Yj(),d.L5()).nullable(),tool_output:d.Yj().nullable(),duration_ms:d.ai().int().min(0).nullable(),turn:d.ai().int().min(0).nullable(),created_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0}).extend({tool_input:d.g1(d.Yj(),d.L5()).nullable().optional(),tool_output:d.Yj().nullable().optional(),duration_ms:d.ai().int().min(0).nullable().optional(),turn:d.ai().int().min(0).nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),job_id:d.Yj().guid(),agent_id:d.Yj().guid().nullable(),tool_name:d.Yj().min(1),tool_input:d.g1(d.Yj(),d.L5()),status:l,requested_at:d.Yj().datetime(),resolved_at:d.Yj().datetime().nullable(),resolved_by:d.Yj().nullable(),expires_at:d.Yj().datetime().nullable(),notes:d.Yj().nullable()}).strict().omit({id:!0,requested_at:!0,resolved_at:!0,resolved_by:!0,expires_at:!0}).extend({status:l.default("pending"),notes:d.Yj().nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid().nullable(),tool_name:d.Yj().min(1),action:m,condition_json:d.g1(d.Yj(),d.L5()),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0}).extend({agent_id:d.Yj().guid().nullable().optional(),condition_json:d.g1(d.Yj(),d.L5()).default({})});let z=d.ai().int().min(1).max(5);d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid().nullable(),fact:d.Yj().min(1),category:n,importance:z,source:o,skill_tags:d.YO(d.Yj().max(60)),memory_layer:p.nullable(),valid_from:d.Yj().datetime().nullable(),valid_to:d.Yj().datetime().nullable(),fact_hash:d.Yj().nullable(),archived:d.zM(),importance_locked:d.zM().default(!1),last_accessed_at:d.Yj().datetime().nullable(),access_count:d.ai().int().min(0),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,fact_hash:!0,archived:!0,importance_locked:!0,last_accessed_at:!0,access_count:!0,valid_from:!0,valid_to:!0}).extend({agent_id:d.Yj().guid().nullable().optional(),category:n.default("context"),importance:z.default(3),source:o.default("manual"),skill_tags:d.YO(d.Yj().max(60)).max(20).default([]),memory_layer:p.nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid().nullable(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),task_template:d.Yj().min(1),active:d.zM(),secret:d.Yj().nullable(),last_triggered_at:d.Yj().datetime().nullable(),trigger_count:d.ai().int().min(0),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,secret:!0,last_triggered_at:!0,trigger_count:!0}).extend({active:d.zM().default(!0)});let A=d.Ik({name:d.Yj().min(1),slug:d.Yj().min(1).regex(/^[a-z0-9-]+$/),risk:u,requires_approval:d.zM()}).strict(),B=d.Ik({label:d.Yj().min(1),description:d.Yj().min(1),type:d.k5(["connector_slug","manual"]),value:d.Yj().optional(),critical:d.zM()}).strict();d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),name:d.Yj().min(1).max(120),slug:d.Yj().min(1).max(80).regex(/^[a-z0-9-]+$/),content:d.Yj().min(1),active:d.zM(),description:d.Yj().max(300).nullable(),default_content:d.Yj().nullable(),content_overridden:d.zM(),required_config:d.YO(B),operations:d.YO(A),required_builtins:d.YO(d.Yj()),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0}).extend({active:d.zM().default(!0),description:d.Yj().max(300).nullable().optional(),default_content:d.Yj().nullable().optional(),content_overridden:d.zM().default(!1),required_config:d.YO(B).default([]),operations:d.YO(A).default([]),required_builtins:d.YO(d.Yj()).default([])}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid(),agent_id:d.Yj().guid(),skill_id:d.Yj().guid(),approval_overrides:d.g1(d.Yj(),d.zM()),use_custom_instructions:d.zM(),enabled_operations:d.YO(d.Yj()).nullable(),created_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0}).extend({approval_overrides:d.g1(d.Yj(),d.zM()).default({}),use_custom_instructions:d.zM().default(!1),enabled_operations:d.YO(d.Yj()).nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid().nullable(),agent_id:d.Yj().guid(),type:q,name:d.Yj().min(1).max(120),cron_expr:d.Yj().min(1),task:d.Yj().nullable(),objectives:d.Yj().nullable(),active:d.zM(),last_run:d.Yj().datetime().nullable(),next_run:d.Yj().datetime().nullable(),last_status:r.nullable(),chat_id:d.Yj().nullable(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0,last_run:!0,next_run:!0,last_status:!0}).extend({type:q.default("cron"),active:d.zM().default(!0),task:d.Yj().nullable().optional(),objectives:d.Yj().nullable().optional(),chat_id:d.Yj().nullable().optional()}),d.Ik({id:d.Yj().guid(),entity_id:d.Yj().guid(),provider:d.Yj().min(1),api_key:d.Yj(),base_url:d.Yj().nullable(),nickname:d.Yj().max(80).nullable(),is_active:d.zM(),created_at:d.Yj().datetime(),updated_at:d.Yj().datetime()}).strict().omit({id:!0,created_at:!0,updated_at:!0}).extend({api_key:d.Yj().default(""),base_url:d.Yj().nullable().optional(),nickname:d.Yj().max(80).nullable().optional(),is_active:d.zM().default(!0)});let C=["https://www.googleapis.com/auth/userinfo.email","openid"];[...C],[...C],[...C],[...C],[...C];let D=d.k5(["propose_confirm","destructive_gate","fully_autonomous"]);d.Ik({createAgent:d.zM(),updateAgent:d.zM(),attachAgent:d.zM(),createSkill:d.zM(),updateSkill:d.zM(),assignSkill:d.zM(),createMcp:d.zM(),attachMcp:d.zM(),createConnector:d.zM(),attachConnector:d.zM(),manageSchedules:d.zM(),autonomy:D});let E={createAgent:!0,updateAgent:!0,attachAgent:!0,createSkill:!0,updateSkill:!0,assignSkill:!0,createMcp:!0,attachMcp:!0,createConnector:!0,attachConnector:!0,manageSchedules:!0,autonomy:"propose_confirm"},F=[{slug:"notion",label:"Notion",authType:"api_key",docsHint:"Create a Notion integration at notion.so/my-integrations and copy its internal secret."},{slug:"notion-oauth",label:"Notion (OAuth)",authType:"oauth2",credentialType:"notion-oauth",docsHint:"Public Integration via OAuth — create one at notion.so/my-integrations (Public type) and authorize from your dashboard."},{slug:"google-drive",label:"Google Drive",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"gmail",label:"Gmail",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"google-calendar",label:"Google Calendar",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"google-sheets",label:"Google Sheets",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"google-docs",label:"Google Docs",authType:"oauth2",credentialType:"google-oauth",docsHint:"OAuth flow — uses your Google credential (create one under Credentials)."},{slug:"airtable-oauth",label:"Airtable (OAuth)",authType:"oauth2",credentialType:"airtable-oauth",docsHint:"OAuth flow for Airtable Public Integrations (recommended)."},{slug:"airtable",label:"Airtable",authType:"api_key",docsHint:"Personal Access Token — airtable.com/create/tokens."},{slug:"apify",label:"Apify",authType:"api_key",docsHint:"Apify API token — console.apify.com/account/integrations."},{slug:"firecrawl",label:"Firecrawl",authType:"api_key",docsHint:"Firecrawl API key — firecrawl.dev/account."},{slug:"tavily",label:"Tavily",authType:"api_key",docsHint:"Tavily API key — app.tavily.com."},{slug:"poyo",label:"Poyo",authType:"api_key",docsHint:"Poyo API key — poyo.ai (API Console). Sent as a Bearer token."}],G=[{slug:"comfyui",name:"ComfyUI",description:"Generate images, video and audio with your own ComfyUI (local, Desktop or Cloud) — run any workflow with parameter injection. Requires a running ComfyUI + python3.",source:"NousResearch/hermes-agent/skills/creative/comfyui",sourceHost:"github",category:"Creative"},{slug:"excel-author",name:"Excel author",description:"Build auditable Excel workbooks headlessly (openpyxl) — real formulas instead of hardcoded values, cell-colour conventions and balance checks. Needs python3.",source:"NousResearch/hermes-agent/optional-skills/finance/excel-author",sourceHost:"github",category:"Office & documents"},{slug:"pptx-author",name:"PowerPoint author",description:"Generate PowerPoint decks headlessly (python-pptx) — slides, speaker notes and templates, with numbers traceable back to a workbook. Needs python3.",source:"NousResearch/hermes-agent/optional-skills/finance/pptx-author",sourceHost:"github",category:"Office & documents"},{slug:"ocr-and-documents",name:"PDF & OCR",description:"Extract text from PDFs and scanned images (pymupdf, marker-pdf) — searchable text out of documents that have none. Needs python3.",source:"NousResearch/hermes-agent/skills/productivity/ocr-and-documents",sourceHost:"github",category:"Office & documents"},{slug:"nano-pdf",name:"PDF editor",description:"Edit PDF text, fix typos and change titles from natural-language prompts (nano-pdf CLI) — no re-export from the source document.",source:"NousResearch/hermes-agent/skills/productivity/nano-pdf",sourceHost:"github",category:"Office & documents"},{slug:"youtube-content",name:"YouTube content",description:"Turn YouTube videos into summaries, threads and blog posts from their transcripts — no video download.",source:"NousResearch/hermes-agent/skills/media/youtube-content",sourceHost:"github",category:"Media"},{slug:"whisper",name:"Whisper speech-to-text",description:"Local speech-to-text in 99 languages (OpenAI Whisper) — transcription and translation, offline. Needs python3.",source:"NousResearch/hermes-agent/optional-skills/mlops/whisper",sourceHost:"github",category:"Media"},{slug:"osint-investigation",name:"OSINT investigation",description:"Public-records OSINT — SEC EDGAR filings, USAspending contracts, sanctions lists and court records, with entity resolution. No API key (stdlib only).",source:"NousResearch/hermes-agent/optional-skills/research/osint-investigation",sourceHost:"github",category:"Research"},{slug:"stocks",name:"Stocks & crypto",description:"Stock quotes, history, comparison and crypto prices via Yahoo Finance. No API key.",source:"NousResearch/hermes-agent/optional-skills/finance/stocks",sourceHost:"github",category:"Finance"},{slug:"doc-coauthoring",name:"Doc co-authoring",description:"Structured workflow to co-author docs, proposals, specs and decision documents.",source:"anthropics/skills/skills/doc-coauthoring",sourceHost:"github",category:"Office & documents"},{slug:"skill-creator",name:"Skill creator",description:"Create, evaluate and package new agent skills — Anthropic's official skill scaffolder.",source:"anthropics/skills/skills/skill-creator",sourceHost:"github",category:"Development"},{slug:"mcp-builder",name:"MCP builder",description:"Guidance for building well-designed MCP servers with good tools.",source:"anthropics/skills/skills/mcp-builder",sourceHost:"github",category:"Development"},{slug:"webapp-testing",name:"Web app testing",description:"Test and debug local web apps with Playwright — screenshots, console logs, server lifecycle. Needs python3.",source:"anthropics/skills/skills/webapp-testing",sourceHost:"github",category:"Development"},{slug:"frontend-design",name:"Frontend design",description:"Opinionated guidance for distinctive, intentional UI and visual design (one of the most-installed skills).",source:"anthropics/skills/skills/frontend-design",sourceHost:"github",category:"Design"},{slug:"canvas-design",name:"Canvas design",description:"Design-philosophy-driven visual art as PNG/PDF compositions.",source:"anthropics/skills/skills/canvas-design",sourceHost:"github",category:"Design"},{slug:"theme-factory",name:"Theme factory",description:"Style artifacts (slides, docs, HTML) with preset or custom themes.",source:"anthropics/skills/skills/theme-factory",sourceHost:"github",category:"Design"},{slug:"algorithmic-art",name:"Algorithmic art",description:"Generative art via p5.js (flow fields, particles) as self-contained HTML.",source:"anthropics/skills/skills/algorithmic-art",sourceHost:"github",category:"Media"},{slug:"internal-comms",name:"Internal comms",description:"Write internal company communications in preferred formats.",source:"anthropics/skills/skills/internal-comms",sourceHost:"github",category:"Productivity"},{slug:"test-driven-development",name:"Test-driven development",description:"Enforce RED-GREEN-REFACTOR — write tests before code (Superpowers).",source:"obra/superpowers/skills/test-driven-development",sourceHost:"github",category:"Development"},{slug:"systematic-debugging",name:"Systematic debugging",description:"Hypothesis-first structured debugging — understand before fixing (Superpowers).",source:"obra/superpowers/skills/systematic-debugging",sourceHost:"github",category:"Development"},{slug:"writing-plans",name:"Writing plans",description:"Turn a spec into an actionable, checkpointed implementation plan (Superpowers).",source:"obra/superpowers/skills/writing-plans",sourceHost:"github",category:"Development"},{slug:"verification-before-completion",name:"Verify before done",description:"Show real evidence before claiming a task is complete (Superpowers).",source:"obra/superpowers/skills/verification-before-completion",sourceHost:"github",category:"Development"},{slug:"using-git-worktrees",name:"Git worktrees",description:"Isolated parallel workspaces with git worktrees (Superpowers).",source:"obra/superpowers/skills/using-git-worktrees",sourceHost:"github",category:"Development"},{slug:"find-skills",name:"Find skills",description:"Discover and install agent skills on demand (Vercel) — the most-installed skill.",source:"vercel-labs/skills/skills/find-skills",sourceHost:"github",category:"Development"},{slug:"agent-browser",name:"Agent browser",description:"Drive a real browser for agent tasks (Vercel). Needs the browser runtime.",source:"vercel-labs/agent-browser/skills/agent-browser",sourceHost:"github",category:"Web"},{slug:"react-best-practices",name:"React best practices",description:"React patterns and performance guidance (Vercel).",source:"vercel-labs/agent-skills/skills/react-best-practices",sourceHost:"github",category:"Development"},{slug:"web-design-guidelines",name:"Web design guidelines",description:"Practical web design heuristics and guidelines (Vercel).",source:"vercel-labs/agent-skills/skills/web-design-guidelines",sourceHost:"github",category:"Design"},{slug:"playwright",name:"Playwright browser",description:"Browser automation — navigate, fill forms, scrape (OpenAI). Needs the Playwright runtime.",source:"openai/skills/skills/.curated/playwright",sourceHost:"github",category:"Web"},{slug:"supabase-postgres-best-practices",name:"Supabase / Postgres",description:"Postgres & Supabase schema, RLS and query best practices (Supabase).",source:"supabase/agent-skills/skills/supabase-postgres-best-practices",sourceHost:"github",category:"Development"},{slug:"workers-best-practices",name:"Cloudflare Workers",description:"Author and review Cloudflare Workers code (Cloudflare).",source:"cloudflare/skills/skills/workers-best-practices",sourceHost:"github",category:"Development"},{slug:"firecrawl-scrape",name:"Firecrawl scrape",description:"Scrape any page to clean markdown via Firecrawl. Needs a Firecrawl API key.",source:"firecrawl/firecrawl-claude-plugin/skills/firecrawl-scrape",sourceHost:"github",category:"Web"},{slug:"firecrawl-search",name:"Firecrawl search",description:"Web search via Firecrawl. Needs a Firecrawl API key.",source:"firecrawl/firecrawl-claude-plugin/skills/firecrawl-search",sourceHost:"github",category:"Web"},{slug:"semgrep",name:"Semgrep static analysis",description:"Find security bugs with Semgrep static analysis (Trail of Bits). Needs python3.",source:"trailofbits/skills/plugins/static-analysis/skills/semgrep",sourceHost:"github",category:"Security"},{slug:"codeql",name:"CodeQL static analysis",description:"CodeQL static analysis for security review (Trail of Bits).",source:"trailofbits/skills/plugins/static-analysis/skills/codeql",sourceHost:"github",category:"Security"},{slug:"dcf-model",name:"DCF model",description:"Build institutional-quality DCF valuation models in Excel. Needs python3.",source:"NousResearch/hermes-agent/optional-skills/finance/dcf-model",sourceHost:"github",category:"Finance"},{slug:"3-statement-model",name:"3-statement model",description:"Build fully-integrated 3-statement models (income, balance, cash flow) in Excel.",source:"NousResearch/hermes-agent/optional-skills/finance/3-statement-model",sourceHost:"github",category:"Finance"},{slug:"lbo-model",name:"LBO model",description:"Leveraged-buyout models — sources & uses, debt schedule, IRR/MOIC, in Excel.",source:"NousResearch/hermes-agent/optional-skills/finance/lbo-model",sourceHost:"github",category:"Finance"},{slug:"comps-analysis",name:"Comps analysis",description:"Comparable-company analysis — trading multiples and benchmarking, in Excel.",source:"NousResearch/hermes-agent/optional-skills/finance/comps-analysis",sourceHost:"github",category:"Finance"},{slug:"merger-model",name:"Merger model",description:"Accretion/dilution merger models — pro-forma P&L and EPS impact, in Excel.",source:"NousResearch/hermes-agent/optional-skills/finance/merger-model",sourceHost:"github",category:"Finance"},{slug:"remotion",name:"Remotion video",description:"Programmatic video with React via Remotion (official). Needs node.",source:"remotion-dev/skills/skills/remotion",sourceHost:"github",category:"Media"}],H={deepseek:[{modelId:"deepseek-chat",label:"DeepSeek Chat (V3)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:128e3,pricing:{inputPerMillionUsd:.27,outputPerMillionUsd:1.1}},{modelId:"deepseek-reasoner",label:"DeepSeek Reasoner (R1)",capabilities:{tools:!0,forcedToolChoice:!0,reasoning:!0},contextWindow:128e3,pricing:{inputPerMillionUsd:.55,outputPerMillionUsd:2.19}}],minimax:[{modelId:"MiniMax-M3",label:"MiniMax M3",capabilities:{tools:!0,forcedToolChoice:!1,reasoning:!0},contextWindow:1048576},{modelId:"MiniMax-M2.7",label:"MiniMax M2.7",capabilities:{tools:!0,forcedToolChoice:!1},contextWindow:2e5},{modelId:"MiniMax-M2",label:"MiniMax M2",capabilities:{tools:!0,forcedToolChoice:!1},contextWindow:2e5}],anthropic:[{modelId:"claude-opus-4-8",label:"Claude Opus 4.8",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:2e5},{modelId:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:2e5},{modelId:"claude-haiku-4-5-20251001",label:"Claude Haiku 4.5",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:2e5}],openai:[{modelId:"gpt-5",label:"GPT-5",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:4e5},{modelId:"gpt-5-mini",label:"GPT-5 mini",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:4e5}],google:[{modelId:"gemini-2.0-flash",label:"Gemini 2.0 Flash",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576},{modelId:"gemini-2.5-pro",label:"Gemini 2.5 Pro",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576}],groq:[{modelId:"llama-3.3-70b-versatile",label:"Llama 3.3 70B",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:131072}],mistral:[{modelId:"mistral-large-latest",label:"Mistral Large",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:131072}],openrouter:[{modelId:"anthropic/claude-haiku-4.5",label:"Claude Haiku 4.5",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:2e5},{modelId:"anthropic/claude-opus-4.7",label:"Claude Opus 4.7",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"anthropic/claude-opus-4.7-fast",label:"Claude Opus 4.7 (fast)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"anthropic/claude-opus-4.8",label:"Claude Opus 4.8",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"anthropic/claude-opus-4.8-fast",label:"Claude Opus 4.8 (fast)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"anthropic/claude-sonnet-4.6",label:"Claude Sonnet 4.6",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1e6},{modelId:"deepseek/deepseek-v3.2",label:"DeepSeek V3.2",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:131072},{modelId:"deepseek/deepseek-v4-flash",label:"DeepSeek V4 Flash",capabilities:{tools:!0,forcedToolChoice:!0,reasoning:!0},contextWindow:1048576,providerOrder:["deepseek"]},{modelId:"deepseek/deepseek-v4-pro",label:"DeepSeek V4 Pro",capabilities:{tools:!0,forcedToolChoice:!0,reasoning:!0},contextWindow:1048576,providerOrder:["deepseek"]},{modelId:"google/gemini-3.1-flash-lite-preview",label:"Gemini 3.1 Flash Lite (preview)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576},{modelId:"google/gemini-3.1-pro-preview",label:"Gemini 3.1 Pro (preview)",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576},{modelId:"google/gemini-3.5-flash",label:"Gemini 3.5 Flash",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:1048576},{modelId:"google/gemma-4-31b-it",label:"Gemma 4 31B-IT",capabilities:{tools:!0,forcedToolChoice:!0},contextWindow:262144},{modelId:"minimax/minimax-m3",label:"MiniMax M3",capabilities:{tools:!0,forcedToolChoice:!1,reasoning:!0},contextWindow:1048576},{modelId:"z-ai/glm-5.2",label:"GLM 5.2",capabilities:{tools:!0,forcedToolChoice:!1,reasoning:!0},contextWindow:1048576},{modelId:"moonshotai/kimi-k2.7-code",label:"Kimi K2.7 Code",capabilities:{tools:!0,forcedToolChoice:!1,reasoning:!0},contextWindow:262144}]},I=new Set(["anthropic/claude-haiku-4.5","anthropic/claude-opus-4.7","anthropic/claude-opus-4.7-fast","anthropic/claude-opus-4.8","anthropic/claude-opus-4.8-fast","anthropic/claude-sonnet-4.6","google/gemini-3.1-flash-lite-preview","google/gemini-3.1-pro-preview","google/gemini-3.5-flash","google/gemma-4-31b-it","minimax/minimax-m3","moonshotai/kimi-k2.7-code","claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","gpt-5","gpt-5-mini","gemini-2.0-flash","gemini-2.5-pro","mistral-large-latest","MiniMax-M3"]);for(let a of Object.values(H))for(let b of a)b.capabilities.vision=I.has(b.modelId);function J(a,b){return H[a]?.find(a=>a.modelId===b)}let K={anthropic:"Anthropic",openai:"OpenAI",google:"Google",deepseek:"DeepSeek",minimax:"MiniMax",mistral:"Mistral",meta:"Meta",qwen:"Qwen","meta-llama":"Meta"};function L(a){let b=new Map;for(let c of a){let a=function(a){let b=a.indexOf("/");if(b<0)return null;let c=a.slice(0,b);return K[c]??c.charAt(0).toUpperCase()+c.slice(1)}(c.modelId),d=b.get(a)??[];d.push(c),b.set(a,d)}return[...b.entries()].map(([a,b])=>({group:a,models:[...b].sort((a,b)=>a.label.localeCompare(b.label))})).sort((a,b)=>(a.group??"").localeCompare(b.group??""))}}};