ztestoctop 10.0.0__py3-none-any.whl

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 (2087) hide show
  1. octop/__init__.py +11 -0
  2. octop/__main__.py +8 -0
  3. octop/api/__init__.py +1 -0
  4. octop/api/app.py +341 -0
  5. octop/api/bridge_peer.py +111 -0
  6. octop/api/common/__init__.py +1 -0
  7. octop/api/common/agent.py +79 -0
  8. octop/api/common/agent_runtime.py +32 -0
  9. octop/api/common/agent_workspace.py +19 -0
  10. octop/api/common/attachments.py +69 -0
  11. octop/api/common/client_ip.py +56 -0
  12. octop/api/common/content_disposition.py +35 -0
  13. octop/api/common/memory_client.py +228 -0
  14. octop/api/common/public_base.py +29 -0
  15. octop/api/common/sso_cookie.py +37 -0
  16. octop/api/common/upload_limit.py +54 -0
  17. octop/api/common/usage_xlsx.py +563 -0
  18. octop/api/common/validators.py +87 -0
  19. octop/api/common/workspace.py +135 -0
  20. octop/api/deps.py +199 -0
  21. octop/api/middleware/__init__.py +1 -0
  22. octop/api/middleware/bridge_proxy.py +313 -0
  23. octop/api/middleware/jwt_auth.py +72 -0
  24. octop/api/middleware/setup_lockdown.py +41 -0
  25. octop/api/openapi_meta.py +214 -0
  26. octop/api/routers/__init__.py +1 -0
  27. octop/api/routers/acp.py +303 -0
  28. octop/api/routers/admin.py +90 -0
  29. octop/api/routers/agent_files.py +390 -0
  30. octop/api/routers/agent_mcp.py +92 -0
  31. octop/api/routers/agent_tools.py +303 -0
  32. octop/api/routers/agents.py +585 -0
  33. octop/api/routers/auth.py +299 -0
  34. octop/api/routers/auth_ldap.py +220 -0
  35. octop/api/routers/auth_oauth.py +233 -0
  36. octop/api/routers/auth_oidc.py +182 -0
  37. octop/api/routers/backup.py +432 -0
  38. octop/api/routers/bridge.py +535 -0
  39. octop/api/routers/browser/__init__.py +20 -0
  40. octop/api/routers/browser/env.py +174 -0
  41. octop/api/routers/browser/harness.py +367 -0
  42. octop/api/routers/browser/record_replay.py +324 -0
  43. octop/api/routers/browser/stream.py +482 -0
  44. octop/api/routers/browser/uninstall.py +34 -0
  45. octop/api/routers/channels.py +1108 -0
  46. octop/api/routers/chat/__init__.py +20 -0
  47. octop/api/routers/chat/history.py +658 -0
  48. octop/api/routers/chat/models.py +252 -0
  49. octop/api/routers/chat/notify_ws.py +76 -0
  50. octop/api/routers/chat/routes.py +350 -0
  51. octop/api/routers/chat/serialize.py +1048 -0
  52. octop/api/routers/chat/sse.py +32 -0
  53. octop/api/routers/chat/trajectory.py +400 -0
  54. octop/api/routers/chat/turn.py +358 -0
  55. octop/api/routers/chat/ws.py +771 -0
  56. octop/api/routers/connectors.py +1598 -0
  57. octop/api/routers/cron.py +255 -0
  58. octop/api/routers/decision.py +198 -0
  59. octop/api/routers/desktop/__init__.py +20 -0
  60. octop/api/routers/desktop/install.py +38 -0
  61. octop/api/routers/desktop/settings.py +49 -0
  62. octop/api/routers/desktop/status.py +38 -0
  63. octop/api/routers/desktop/stream.py +379 -0
  64. octop/api/routers/desktop/uninstall.py +34 -0
  65. octop/api/routers/envs.py +134 -0
  66. octop/api/routers/experts.py +928 -0
  67. octop/api/routers/filesystem.py +250 -0
  68. octop/api/routers/health.py +28 -0
  69. octop/api/routers/i18n.py +47 -0
  70. octop/api/routers/internal_mcp.py +150 -0
  71. octop/api/routers/invites.py +178 -0
  72. octop/api/routers/knowledge_bases.py +970 -0
  73. octop/api/routers/mbti.py +770 -0
  74. octop/api/routers/media_generation.py +204 -0
  75. octop/api/routers/memory.py +973 -0
  76. octop/api/routers/memory_portable.py +303 -0
  77. octop/api/routers/memory_storage.py +254 -0
  78. octop/api/routers/mobile/__init__.py +18 -0
  79. octop/api/routers/mobile/install.py +29 -0
  80. octop/api/routers/mobile/shell_ws.py +171 -0
  81. octop/api/routers/mobile/status.py +112 -0
  82. octop/api/routers/mobile/stream.py +653 -0
  83. octop/api/routers/observability.py +87 -0
  84. octop/api/routers/ollama_download_store.py +130 -0
  85. octop/api/routers/ollama_models.py +403 -0
  86. octop/api/routers/onnx_models.py +219 -0
  87. octop/api/routers/plugins.py +508 -0
  88. octop/api/routers/preferences.py +215 -0
  89. octop/api/routers/proactive_care.py +145 -0
  90. octop/api/routers/providers.py +544 -0
  91. octop/api/routers/search.py +52 -0
  92. octop/api/routers/security.py +204 -0
  93. octop/api/routers/settings.py +284 -0
  94. octop/api/routers/setup.py +437 -0
  95. octop/api/routers/skill_packages.py +840 -0
  96. octop/api/routers/skills.py +1607 -0
  97. octop/api/routers/slash.py +79 -0
  98. octop/api/routers/storage_backends.py +372 -0
  99. octop/api/routers/subagents.py +244 -0
  100. octop/api/routers/teams.py +174 -0
  101. octop/api/routers/terminal.py +787 -0
  102. octop/api/routers/tls.py +112 -0
  103. octop/api/routers/update.py +443 -0
  104. octop/api/routers/update_store.py +85 -0
  105. octop/api/routers/uploads.py +83 -0
  106. octop/api/routers/usage.py +313 -0
  107. octop/api/routers/user_roles.py +399 -0
  108. octop/api/routers/users.py +601 -0
  109. octop/api/routers/voice.py +442 -0
  110. octop/api/routers/workspace.py +579 -0
  111. octop/cli/__init__.py +1 -0
  112. octop/cli/commands/__init__.py +1 -0
  113. octop/cli/commands/acp.py +63 -0
  114. octop/cli/commands/admin.py +122 -0
  115. octop/cli/commands/agent.py +251 -0
  116. octop/cli/commands/backup.py +188 -0
  117. octop/cli/commands/bridge.py +405 -0
  118. octop/cli/commands/captcha.py +35 -0
  119. octop/cli/commands/channel.py +571 -0
  120. octop/cli/commands/chats.py +442 -0
  121. octop/cli/commands/clean.py +44 -0
  122. octop/cli/commands/completion.py +58 -0
  123. octop/cli/commands/config.py +40 -0
  124. octop/cli/commands/cron.py +121 -0
  125. octop/cli/commands/init.py +133 -0
  126. octop/cli/commands/memory.py +275 -0
  127. octop/cli/commands/models.py +251 -0
  128. octop/cli/commands/plugin.py +80 -0
  129. octop/cli/commands/provider.py +107 -0
  130. octop/cli/commands/run.py +194 -0
  131. octop/cli/commands/service.py +214 -0
  132. octop/cli/commands/skills.py +138 -0
  133. octop/cli/commands/update.py +80 -0
  134. octop/cli/commands/user.py +148 -0
  135. octop/cli/commands/version.py +17 -0
  136. octop/cli/main.py +130 -0
  137. octop/cli/registry.py +38 -0
  138. octop/cli/repl/__init__.py +1 -0
  139. octop/cli/repl/embedded_session.py +42 -0
  140. octop/cli/repl/render.py +352 -0
  141. octop/cli/repl/runtime.py +133 -0
  142. octop/cli/repl/session.py +59 -0
  143. octop/cli/repl/toolbar.py +18 -0
  144. octop/cli/repl/turn.py +13 -0
  145. octop/cli/support/__init__.py +1 -0
  146. octop/cli/support/acting.py +30 -0
  147. octop/cli/support/ctx.py +68 -0
  148. octop/cli/support/db.py +150 -0
  149. octop/cli/support/embedded_ops.py +326 -0
  150. octop/cli/support/errors.py +14 -0
  151. octop/cli/support/feishu_creator.py +73 -0
  152. octop/cli/support/offline_ops.py +606 -0
  153. octop/cli/support/prompts.py +49 -0
  154. octop/cli/support/qr.py +167 -0
  155. octop/cli/support/skills.py +46 -0
  156. octop/cli/support/state.py +53 -0
  157. octop/cli/support/stub.py +24 -0
  158. octop/config.py +633 -0
  159. octop/dashboard/apple-touch-icon.png +0 -0
  160. octop/dashboard/assets/AgentPluginsPanel.BJlhPlDN.js +11 -0
  161. octop/dashboard/assets/AgentPluginsPanel.voOybFnP.css +1 -0
  162. octop/dashboard/assets/AuthFileDownloadLink.DQC9rSmW.js +1 -0
  163. octop/dashboard/assets/CardSkeleton.BOEc71GJ.js +1 -0
  164. octop/dashboard/assets/CopyableResourceId.8y3Y_8uc.js +1 -0
  165. octop/dashboard/assets/CopyableResourceId.DcPg4LkZ.css +1 -0
  166. octop/dashboard/assets/EditAgentDrawer.BKiWLT__.css +1 -0
  167. octop/dashboard/assets/EditAgentDrawer.w674TDCV.js +3 -0
  168. octop/dashboard/assets/KaTeX_AMS-Regular.BQhdFMY1.woff2 +0 -0
  169. octop/dashboard/assets/KaTeX_AMS-Regular.DMm9YOAa.woff +0 -0
  170. octop/dashboard/assets/KaTeX_AMS-Regular.DRggAlZN.ttf +0 -0
  171. octop/dashboard/assets/KaTeX_Caligraphic-Bold.ATXxdsX0.ttf +0 -0
  172. octop/dashboard/assets/KaTeX_Caligraphic-Bold.BEiXGLvX.woff +0 -0
  173. octop/dashboard/assets/KaTeX_Caligraphic-Bold.Dq_IR9rO.woff2 +0 -0
  174. octop/dashboard/assets/KaTeX_Caligraphic-Regular.CTRA-rTL.woff +0 -0
  175. octop/dashboard/assets/KaTeX_Caligraphic-Regular.Di6jR-x-.woff2 +0 -0
  176. octop/dashboard/assets/KaTeX_Caligraphic-Regular.wX97UBjC.ttf +0 -0
  177. octop/dashboard/assets/KaTeX_Fraktur-Bold.BdnERNNW.ttf +0 -0
  178. octop/dashboard/assets/KaTeX_Fraktur-Bold.BsDP51OF.woff +0 -0
  179. octop/dashboard/assets/KaTeX_Fraktur-Bold.CL6g_b3V.woff2 +0 -0
  180. octop/dashboard/assets/KaTeX_Fraktur-Regular.CB_wures.ttf +0 -0
  181. octop/dashboard/assets/KaTeX_Fraktur-Regular.CTYiF6lA.woff2 +0 -0
  182. octop/dashboard/assets/KaTeX_Fraktur-Regular.Dxdc4cR9.woff +0 -0
  183. octop/dashboard/assets/KaTeX_Main-Bold.Cx986IdX.woff2 +0 -0
  184. octop/dashboard/assets/KaTeX_Main-Bold.Jm3AIy58.woff +0 -0
  185. octop/dashboard/assets/KaTeX_Main-Bold.waoOVXN0.ttf +0 -0
  186. octop/dashboard/assets/KaTeX_Main-BoldItalic.DxDJ3AOS.woff2 +0 -0
  187. octop/dashboard/assets/KaTeX_Main-BoldItalic.DzxPMmG6.ttf +0 -0
  188. octop/dashboard/assets/KaTeX_Main-BoldItalic.SpSLRI95.woff +0 -0
  189. octop/dashboard/assets/KaTeX_Main-Italic.3WenGoN9.ttf +0 -0
  190. octop/dashboard/assets/KaTeX_Main-Italic.BMLOBm91.woff +0 -0
  191. octop/dashboard/assets/KaTeX_Main-Italic.NWA7e6Wa.woff2 +0 -0
  192. octop/dashboard/assets/KaTeX_Main-Regular.B22Nviop.woff2 +0 -0
  193. octop/dashboard/assets/KaTeX_Main-Regular.Dr94JaBh.woff +0 -0
  194. octop/dashboard/assets/KaTeX_Main-Regular.ypZvNtVU.ttf +0 -0
  195. octop/dashboard/assets/KaTeX_Math-BoldItalic.B3XSjfu4.ttf +0 -0
  196. octop/dashboard/assets/KaTeX_Math-BoldItalic.CZnvNsCZ.woff2 +0 -0
  197. octop/dashboard/assets/KaTeX_Math-BoldItalic.iY-2wyZ7.woff +0 -0
  198. octop/dashboard/assets/KaTeX_Math-Italic.DA0__PXp.woff +0 -0
  199. octop/dashboard/assets/KaTeX_Math-Italic.flOr_0UB.ttf +0 -0
  200. octop/dashboard/assets/KaTeX_Math-Italic.t53AETM-.woff2 +0 -0
  201. octop/dashboard/assets/KaTeX_SansSerif-Bold.CFMepnvq.ttf +0 -0
  202. octop/dashboard/assets/KaTeX_SansSerif-Bold.D1sUS0GD.woff2 +0 -0
  203. octop/dashboard/assets/KaTeX_SansSerif-Bold.DbIhKOiC.woff +0 -0
  204. octop/dashboard/assets/KaTeX_SansSerif-Italic.C3H0VqGB.woff2 +0 -0
  205. octop/dashboard/assets/KaTeX_SansSerif-Italic.DN2j7dab.woff +0 -0
  206. octop/dashboard/assets/KaTeX_SansSerif-Italic.YYjJ1zSn.ttf +0 -0
  207. octop/dashboard/assets/KaTeX_SansSerif-Regular.BNo7hRIc.ttf +0 -0
  208. octop/dashboard/assets/KaTeX_SansSerif-Regular.CS6fqUqJ.woff +0 -0
  209. octop/dashboard/assets/KaTeX_SansSerif-Regular.DDBCnlJ7.woff2 +0 -0
  210. octop/dashboard/assets/KaTeX_Script-Regular.C5JkGWo-.ttf +0 -0
  211. octop/dashboard/assets/KaTeX_Script-Regular.D3wIWfF6.woff2 +0 -0
  212. octop/dashboard/assets/KaTeX_Script-Regular.D5yQViql.woff +0 -0
  213. octop/dashboard/assets/KaTeX_Size1-Regular.C195tn64.woff +0 -0
  214. octop/dashboard/assets/KaTeX_Size1-Regular.Dbsnue_I.ttf +0 -0
  215. octop/dashboard/assets/KaTeX_Size1-Regular.mCD8mA8B.woff2 +0 -0
  216. octop/dashboard/assets/KaTeX_Size2-Regular.B7gKUWhC.ttf +0 -0
  217. octop/dashboard/assets/KaTeX_Size2-Regular.Dy4dx90m.woff2 +0 -0
  218. octop/dashboard/assets/KaTeX_Size2-Regular.oD1tc_U0.woff +0 -0
  219. octop/dashboard/assets/KaTeX_Size3-Regular.CTq5MqoE.woff +0 -0
  220. octop/dashboard/assets/KaTeX_Size3-Regular.DgpXs0kz.ttf +0 -0
  221. octop/dashboard/assets/KaTeX_Size4-Regular.BF-4gkZK.woff +0 -0
  222. octop/dashboard/assets/KaTeX_Size4-Regular.DWFBv043.ttf +0 -0
  223. octop/dashboard/assets/KaTeX_Size4-Regular.Dl5lxZxV.woff2 +0 -0
  224. octop/dashboard/assets/KaTeX_Typewriter-Regular.C0xS9mPB.woff +0 -0
  225. octop/dashboard/assets/KaTeX_Typewriter-Regular.CO6r4hn1.woff2 +0 -0
  226. octop/dashboard/assets/KaTeX_Typewriter-Regular.D3Ib7_Hf.ttf +0 -0
  227. octop/dashboard/assets/LazyMarkdown.xHp3di3S.js +2 -0
  228. octop/dashboard/assets/NotFoundPage.CqDvdQeL.js +1 -0
  229. octop/dashboard/assets/NotFoundPage.DRS7wjz-.css +1 -0
  230. octop/dashboard/assets/PageShell.8ngNwS9L.js +1 -0
  231. octop/dashboard/assets/PageShell.BgrZ6oXn.css +1 -0
  232. octop/dashboard/assets/PeerOnlyRemoteAlert.B0srpEt9.js +1 -0
  233. octop/dashboard/assets/PieChart.B6MMA9GE.js +83 -0
  234. octop/dashboard/assets/SkillHubTab.ByYOm00n.js +7 -0
  235. octop/dashboard/assets/SkillHubTab.D5WeJoju.css +1 -0
  236. octop/dashboard/assets/SkillsTabs.BwL6T1Jc.js +7 -0
  237. octop/dashboard/assets/SkillsTabs.VxEVpMV5.css +1 -0
  238. octop/dashboard/assets/StreamSetupGuide.BX4_ZFvD.js +1 -0
  239. octop/dashboard/assets/StreamSetupGuide.DmLDVh1D.css +1 -0
  240. octop/dashboard/assets/TabBar.DHfji3ca.js +1 -0
  241. octop/dashboard/assets/TabPanelHeader.BXWWcA2I.css +1 -0
  242. octop/dashboard/assets/TabPanelHeader.DSqqHepQ.js +1 -0
  243. octop/dashboard/assets/WorkspaceDrawer.Cc8YzXoV.js +1 -0
  244. octop/dashboard/assets/admin.BJmj3OMW.png +0 -0
  245. octop/dashboard/assets/agentBackendForm.Cyogjd5F.js +1 -0
  246. octop/dashboard/assets/agentChat.BPMckKf8.js +1 -0
  247. octop/dashboard/assets/agentRuntimeConfig.VJnO6pld.js +1 -0
  248. octop/dashboard/assets/aiden0z-pptx-renderer.es.FsOErv6n.js +130 -0
  249. octop/dashboard/assets/anthropic.hp89qtrg.png +0 -0
  250. octop/dashboard/assets/arc.C4lJrdy6.js +1 -0
  251. octop/dashboard/assets/architectureDiagram-3BPJPVTR.TMyKZ9uQ.js +36 -0
  252. octop/dashboard/assets/band.CudBVStT.js +1 -0
  253. octop/dashboard/assets/bash.C7aaPQPZ.js +1 -0
  254. octop/dashboard/assets/blockDiagram-GPEHLZMM.DjrwR_5e.js +132 -0
  255. octop/dashboard/assets/boss.CPpLkNXR.png +0 -0
  256. octop/dashboard/assets/bridge.CS4EPjYd.js +1 -0
  257. octop/dashboard/assets/builtinToolIcons.BB0yeh2V.js +1 -0
  258. octop/dashboard/assets/c.BgpyoaDV.js +1 -0
  259. octop/dashboard/assets/c.Ji4TZplN.js +1 -0
  260. octop/dashboard/assets/c4Diagram-AAUBKEIU.DWxB1Q0G.js +10 -0
  261. octop/dashboard/assets/channel.C81DwWXg.js +1 -0
  262. octop/dashboard/assets/chunk-2J33WTMH.BrNdWQtV.js +1 -0
  263. octop/dashboard/assets/chunk-4BX2VUAB.Dt5z7Z0k.js +1 -0
  264. octop/dashboard/assets/chunk-55IACEB6.DA3zh9g7.js +1 -0
  265. octop/dashboard/assets/chunk-727SXJPM.BHbb6I-3.js +206 -0
  266. octop/dashboard/assets/chunk-AQP2D5EJ.CQ3jAq8F.js +231 -0
  267. octop/dashboard/assets/chunk-FMBD7UC4.e8ytq19x.js +15 -0
  268. octop/dashboard/assets/chunk-ND2GUHAM.DmIRSVQy.js +1 -0
  269. octop/dashboard/assets/chunk-QZHKN3VN.DMi7aXHr.js +1 -0
  270. octop/dashboard/assets/classDiagram-4FO5ZUOK.CJWgUZ5M.js +1 -0
  271. octop/dashboard/assets/classDiagram-v2-Q7XG4LA2.CJWgUZ5M.js +1 -0
  272. octop/dashboard/assets/clike.CPA0YzTK.js +1 -0
  273. octop/dashboard/assets/codebuddy.CQQPq5E1.png +0 -0
  274. octop/dashboard/assets/confirmModal.DXH0-jZp.js +1 -0
  275. octop/dashboard/assets/connectorDefs.Cu4tm4IW.css +1 -0
  276. octop/dashboard/assets/connectorDefs.D69XOP1x.js +1 -0
  277. octop/dashboard/assets/connectors.BOgw8HEB.js +1 -0
  278. octop/dashboard/assets/copyText.31kHvk1y.js +1 -0
  279. octop/dashboard/assets/cose-bilkent-S5V4N54A.BIn02t04.js +1 -0
  280. octop/dashboard/assets/cpp.Bh3md360.js +1 -0
  281. octop/dashboard/assets/css.Dn-1w2Q4.js +1 -0
  282. octop/dashboard/assets/ctrip-wendao.xsDDzyDE.png +0 -0
  283. octop/dashboard/assets/cursor.B5jS275Y.png +0 -0
  284. octop/dashboard/assets/customMcpUtils.XVuTpzYg.js +13 -0
  285. octop/dashboard/assets/cytoscape.esm.DqnC6J6I.js +331 -0
  286. octop/dashboard/assets/dagre-BM42HDAG.DPz6OBSV.js +4 -0
  287. octop/dashboard/assets/dashscope.ClgxyOUM.png +0 -0
  288. octop/dashboard/assets/deepseek.BfIKgrKz.png +0 -0
  289. octop/dashboard/assets/defaultLocale.CcTwRAjA.js +1 -0
  290. octop/dashboard/assets/detailRequestGate.CAwTyMBp.js +1 -0
  291. octop/dashboard/assets/detailRequestGate.DuK91rVc.css +1 -0
  292. octop/dashboard/assets/diagram-2AECGRRQ.rNUm64G3.js +43 -0
  293. octop/dashboard/assets/diagram-5GNKFQAL.KNYjOxDK.js +10 -0
  294. octop/dashboard/assets/diagram-KO2AKTUF.BBLMeyGA.js +3 -0
  295. octop/dashboard/assets/diagram-LMA3HP47.CaGVZ4wJ.js +24 -0
  296. octop/dashboard/assets/diagram-OG6HWLK6.Ce4peo31.js +24 -0
  297. octop/dashboard/assets/diff.BYE4s9y_.js +3 -0
  298. octop/dashboard/assets/docKind.DxmOLsrX.js +1 -0
  299. octop/dashboard/assets/docker.-fJRh9XC.js +1 -0
  300. octop/dashboard/assets/doctor.HfeCK8-G.png +0 -0
  301. octop/dashboard/assets/docx-preview.Dms6UQRC.js +27 -0
  302. octop/dashboard/assets/en.CaWe8dRV.js +90 -0
  303. octop/dashboard/assets/ensureBuiltins.FqYeL7_D.js +1 -0
  304. octop/dashboard/assets/erDiagram-TEJ5UH35.CC6xdiq5.js +85 -0
  305. octop/dashboard/assets/expertMarket.Drt0Z0gb.js +1 -0
  306. octop/dashboard/assets/feishu.yzJIGqLk.svg +1 -0
  307. octop/dashboard/assets/fileKind.Ce-W68us.js +1 -0
  308. octop/dashboard/assets/fileTreeIcon.0systHJG.css +1 -0
  309. octop/dashboard/assets/fileTreeIcon.QTgjm1tj.js +13 -0
  310. octop/dashboard/assets/fileTreeNodes.BjDCEnE-.js +1 -0
  311. octop/dashboard/assets/finance.BoZ3Sw4O.png +0 -0
  312. octop/dashboard/assets/flowDiagram-I6XJVG4X.Dy5i77Up.js +162 -0
  313. octop/dashboard/assets/formDraft.d8WbgDpb.js +1 -0
  314. octop/dashboard/assets/formatMessageTime.C9oWSxOW.js +1 -0
  315. octop/dashboard/assets/ganttDiagram-6RSMTGT7.2QLA4LMv.js +292 -0
  316. octop/dashboard/assets/gitGraphDiagram-PVQCEYII.DvYmEEY7.js +106 -0
  317. octop/dashboard/assets/go.Camj7avl.js +1 -0
  318. octop/dashboard/assets/graph.Bad5vU0y.js +1 -0
  319. octop/dashboard/assets/groq.DxjL3oyr.png +0 -0
  320. octop/dashboard/assets/index.7t8MmVD3.js +27 -0
  321. octop/dashboard/assets/index.B63AzAzb.js +6 -0
  322. octop/dashboard/assets/index.BB2TACFT.js +7 -0
  323. octop/dashboard/assets/index.BDgsFf1o.js +1 -0
  324. octop/dashboard/assets/index.BGKpDfUo.js +1 -0
  325. octop/dashboard/assets/index.BOSlOnE5.css +1 -0
  326. octop/dashboard/assets/index.BQ1HUqpX.css +1 -0
  327. octop/dashboard/assets/index.Bexwf9h5.js +9 -0
  328. octop/dashboard/assets/index.Bf2P8KOW.css +1 -0
  329. octop/dashboard/assets/index.BnR0UZNm.css +1 -0
  330. octop/dashboard/assets/index.BqxIKm3E.css +1 -0
  331. octop/dashboard/assets/index.BsYGCvv_.js +72 -0
  332. octop/dashboard/assets/index.BsfH4C6q.css +1 -0
  333. octop/dashboard/assets/index.Bxr_iAco.js +2 -0
  334. octop/dashboard/assets/index.C03jfRo1.js +5 -0
  335. octop/dashboard/assets/index.C1PiI6iC.css +1 -0
  336. octop/dashboard/assets/index.C1lMbskB.js +3 -0
  337. octop/dashboard/assets/index.C2dl2LAE.css +1 -0
  338. octop/dashboard/assets/index.C4yxPFQf.css +1 -0
  339. octop/dashboard/assets/index.CC_uo9wK.css +1 -0
  340. octop/dashboard/assets/index.CUATZ323.css +1 -0
  341. octop/dashboard/assets/index.CcscnKYC.js +5 -0
  342. octop/dashboard/assets/index.Cjc4TCPe.css +1 -0
  343. octop/dashboard/assets/index.Cl5Q7N4w.css +1 -0
  344. octop/dashboard/assets/index.CrSjNUub.js +1 -0
  345. octop/dashboard/assets/index.Cz7IYLwr.js +5 -0
  346. octop/dashboard/assets/index.D-iyj8DH.js +8 -0
  347. octop/dashboard/assets/index.D4OCT0Yt.css +1 -0
  348. octop/dashboard/assets/index.D6xoRuBe.js +1 -0
  349. octop/dashboard/assets/index.D7nEM7nv.css +1 -0
  350. octop/dashboard/assets/index.DCrcvDUN.css +1 -0
  351. octop/dashboard/assets/index.DH7bXiZ0.js +2 -0
  352. octop/dashboard/assets/index.DRfjDAAF.css +1 -0
  353. octop/dashboard/assets/index.DWqAV4n3.js +12 -0
  354. octop/dashboard/assets/index.DWyIhCFK.js +10 -0
  355. octop/dashboard/assets/index.DZrflTr9.css +1 -0
  356. octop/dashboard/assets/index.Dd4k5Ti-.js +1 -0
  357. octop/dashboard/assets/index.DjpO9Zui.js +1 -0
  358. octop/dashboard/assets/index.DkFEuo4I.js +1 -0
  359. octop/dashboard/assets/index.Dpb1ICSh.css +1 -0
  360. octop/dashboard/assets/index.Ds_DN6_-.css +1 -0
  361. octop/dashboard/assets/index.Fzwav60h.css +1 -0
  362. octop/dashboard/assets/index.G9_xhF8C.js +9 -0
  363. octop/dashboard/assets/index.GTq9IEDq.js +1 -0
  364. octop/dashboard/assets/index.IcHPDMJY.js +7 -0
  365. octop/dashboard/assets/index.U8WmVql_.css +1 -0
  366. octop/dashboard/assets/index.XeflAzh6.js +11 -0
  367. octop/dashboard/assets/index.bLemDvv8.js +1 -0
  368. octop/dashboard/assets/index.ev1UC638.js +1 -0
  369. octop/dashboard/assets/index.module.B9de4inW.js +1 -0
  370. octop/dashboard/assets/index.o73Ap-yM.js +1 -0
  371. octop/dashboard/assets/index.wE0QXcyN.css +1 -0
  372. octop/dashboard/assets/infoDiagram-5YYISTIA.B5DCRsIU.js +2 -0
  373. octop/dashboard/assets/init.DDlSWoZO.js +1 -0
  374. octop/dashboard/assets/ishikawaDiagram-YF4QCWOH.BMqclxra.js +70 -0
  375. octop/dashboard/assets/java.CLDpgQbZ.js +1 -0
  376. octop/dashboard/assets/javascript.BCEfN6Kw.js +1 -0
  377. octop/dashboard/assets/javascript.C0YHZvne.js +1 -0
  378. octop/dashboard/assets/jev.B-V1Gp3c.png +0 -0
  379. octop/dashboard/assets/journeyDiagram-JHISSGLW.DKhU2Q9D.js +139 -0
  380. octop/dashboard/assets/json.P74dTKQ0.js +1 -0
  381. octop/dashboard/assets/kanban-definition-UN3LZRKU.QKkipNYE.js +89 -0
  382. octop/dashboard/assets/knowledgeCitationDisplay.DMM3mIg7.js +1 -0
  383. octop/dashboard/assets/knowledgeDocPreview.CRXKTGi6.js +1 -0
  384. octop/dashboard/assets/laya.BrsDQXb7.png +0 -0
  385. octop/dashboard/assets/layout.CYcqwDbi.js +1 -0
  386. octop/dashboard/assets/linear.CJtCR-3w.js +1 -0
  387. octop/dashboard/assets/markdown.C2jwThto.js +1 -0
  388. octop/dashboard/assets/markup.BNAwpkfj.js +1 -0
  389. octop/dashboard/assets/mbti/ENFJ.svg +2 -0
  390. octop/dashboard/assets/mbti/ENFP.svg +2 -0
  391. octop/dashboard/assets/mbti/ENTJ.svg +2 -0
  392. octop/dashboard/assets/mbti/ENTP.svg +2 -0
  393. octop/dashboard/assets/mbti/ESFJ.svg +2 -0
  394. octop/dashboard/assets/mbti/ESFP.svg +2 -0
  395. octop/dashboard/assets/mbti/ESTJ.svg +2 -0
  396. octop/dashboard/assets/mbti/ESTP.svg +2 -0
  397. octop/dashboard/assets/mbti/INFJ.svg +2 -0
  398. octop/dashboard/assets/mbti/INFP.svg +2 -0
  399. octop/dashboard/assets/mbti/INTJ.svg +2 -0
  400. octop/dashboard/assets/mbti/INTP.svg +2 -0
  401. octop/dashboard/assets/mbti/ISFJ.svg +2 -0
  402. octop/dashboard/assets/mbti/ISFP.svg +2 -0
  403. octop/dashboard/assets/mbti/ISTJ.svg +2 -0
  404. octop/dashboard/assets/mbti/ISTP.svg +2 -0
  405. octop/dashboard/assets/mermaid.core.Bg-GuoUs.js +309 -0
  406. octop/dashboard/assets/mimo.pbhfe3Fd.svg +17 -0
  407. octop/dashboard/assets/mindmap-definition-RKZ34NQL.DLAZa5J4.js +96 -0
  408. octop/dashboard/assets/minimax.B0Eo-1V9.png +0 -0
  409. octop/dashboard/assets/modelOptions.BrFzajT7.js +1 -0
  410. octop/dashboard/assets/modelscope.CJyewHiF.png +0 -0
  411. octop/dashboard/assets/moonshot.5dnp7eVM.png +0 -0
  412. octop/dashboard/assets/moonshot.DRX5773U.webp +0 -0
  413. octop/dashboard/assets/mqtt.IKSdJE9d.png +0 -0
  414. octop/dashboard/assets/nurse.BW7VUALZ.png +0 -0
  415. octop/dashboard/assets/obsidian-cli.JedF1cy3.svg +51 -0
  416. octop/dashboard/assets/octop.tjp5Yqxl.svg +113 -0
  417. octop/dashboard/assets/ollama.BiKnEc5r.png +0 -0
  418. octop/dashboard/assets/one-dark.1LAQk5Ty.js +1 -0
  419. octop/dashboard/assets/one-light.CMyozx7s.js +1 -0
  420. octop/dashboard/assets/openai.-2_yMGcs.png +0 -0
  421. octop/dashboard/assets/openalex.DnywkSp7.svg +145 -0
  422. octop/dashboard/assets/openrouter.CT0jBAsT.png +0 -0
  423. octop/dashboard/assets/ops.CcZlHhfj.png +0 -0
  424. octop/dashboard/assets/ordinal.djD5ulR0.js +1 -0
  425. octop/dashboard/assets/pdf.worker.min.qwK7q_zL.mjs +28 -0
  426. octop/dashboard/assets/pieDiagram-4H26LBE5.BMmfnM-m.js +30 -0
  427. octop/dashboard/assets/plugins.CKG7_ncx.js +1 -0
  428. octop/dashboard/assets/postgres.N6c1xTVB.svg +21 -0
  429. octop/dashboard/assets/prism-light.BOOS0CO3.js +5 -0
  430. octop/dashboard/assets/python.DtXtXTKX.js +1 -0
  431. octop/dashboard/assets/quadrantDiagram-W4KKPZXB.B9GuMtQb.js +7 -0
  432. octop/dashboard/assets/requirementDiagram-4Y6WPE33.D9OCdpGT.js +84 -0
  433. octop/dashboard/assets/rust.5cgPugzK.js +1 -0
  434. octop/dashboard/assets/sankeyDiagram-5OEKKPKP.DwG1hQlh.js +40 -0
  435. octop/dashboard/assets/saveBlobAsFile.Bq4VCdIR.js +1 -0
  436. octop/dashboard/assets/sequenceDiagram-3UESZ5HK.C8JwDwZu.js +162 -0
  437. octop/dashboard/assets/shellCodeBlock.BHtT7p-E.js +1 -0
  438. octop/dashboard/assets/showApiToast.BwqXoOxP.js +1 -0
  439. octop/dashboard/assets/skillDisplayNames.ClhQkBfn.js +1 -0
  440. octop/dashboard/assets/sql.x1lYX_si.js +1 -0
  441. octop/dashboard/assets/staff.CYK1Sglf.png +0 -0
  442. octop/dashboard/assets/stateDiagram-AJRCARHV.BQu2cU7D.js +1 -0
  443. octop/dashboard/assets/stateDiagram-v2-BHNVJYJU.BF4LUSzE.js +1 -0
  444. octop/dashboard/assets/string.C-vk08Zt.js +1 -0
  445. octop/dashboard/assets/student.CCx1FvhV.png +0 -0
  446. octop/dashboard/assets/support.BDskL7hI.png +0 -0
  447. octop/dashboard/assets/sw-register.BB5nh-x9.js +1 -0
  448. octop/dashboard/assets/teacher.t6gMsB_T.png +0 -0
  449. octop/dashboard/assets/teams.CdSyvhZG.js +1 -0
  450. octop/dashboard/assets/tencent-ardot.CWlfHmKV.png +0 -0
  451. octop/dashboard/assets/tencent-ima.DBik34z0.png +0 -0
  452. octop/dashboard/assets/tencent-lexiang.DQ8U6HGW.png +0 -0
  453. octop/dashboard/assets/terminalThemes.0aI4bBTI.js +1 -0
  454. octop/dashboard/assets/time.DyOCc4Rp.js +1 -0
  455. octop/dashboard/assets/timeline-definition-PNZ67QCA.Dkge0DhL.js +120 -0
  456. octop/dashboard/assets/tiny-invariant.KZqkzbCb.js +1 -0
  457. octop/dashboard/assets/toolPluginIndex.Bt1q0eH2.js +2 -0
  458. octop/dashboard/assets/tsx.SFJiIzlP.js +1 -0
  459. octop/dashboard/assets/typescript.B-ryfxa4.js +1 -0
  460. octop/dashboard/assets/typescript.TG2tIqnY.js +1 -0
  461. octop/dashboard/assets/useAsyncResource.DfHlgN-i.js +1 -0
  462. octop/dashboard/assets/useCardTableView.BF_3-RaS.js +1 -0
  463. octop/dashboard/assets/useGatedSearchTabs.BYgxOL9j.js +1 -0
  464. octop/dashboard/assets/useHorizontalResize.BlO2xrI3.js +1 -0
  465. octop/dashboard/assets/useLandscapeFullscreen.BHCFxZ6c.js +1 -0
  466. octop/dashboard/assets/useLandscapeFullscreen.D9T5ieL9.css +1 -0
  467. octop/dashboard/assets/usePathTabs.FsA2xXjw.js +1 -0
  468. octop/dashboard/assets/useServerTimezone.BFsDQWJx.js +1 -0
  469. octop/dashboard/assets/useStorageBackends.OFPZoX4n.js +1 -0
  470. octop/dashboard/assets/vendor-antd.CTwSf1Lt.js +454 -0
  471. octop/dashboard/assets/vendor-icons.D5K817Wm.js +1246 -0
  472. octop/dashboard/assets/vendor-markdown.8x0SH759.js +291 -0
  473. octop/dashboard/assets/vendor-markdown.DVjVcbQd.css +1 -0
  474. octop/dashboard/assets/vendor-react.DWWhhpb4.js +51 -0
  475. octop/dashboard/assets/vendor-utils.Bxy7mX_Z.js +20 -0
  476. octop/dashboard/assets/vendor-xterm.BnL5uhB6.js +9 -0
  477. octop/dashboard/assets/vendor-xterm.DYP7pi_n.css +32 -0
  478. octop/dashboard/assets/vennDiagram-CIIHVFJN.Bxcrb0E8.js +34 -0
  479. octop/dashboard/assets/wardley-L42UT6IY.CDxYcuri.js +173 -0
  480. octop/dashboard/assets/wardleyDiagram-YWT4CUSO.ebCeL3XK.js +78 -0
  481. octop/dashboard/assets/workspacePath.B1xlGfEs.js +2 -0
  482. octop/dashboard/assets/workspacePath.C83dq62S.css +1 -0
  483. octop/dashboard/assets/xiaoyi.sDsAd89K.png +0 -0
  484. octop/dashboard/assets/xlsx.CHiiUxq-.js +105 -0
  485. octop/dashboard/assets/xychartDiagram-2RQKCTM6.B2keBDWP.js +7 -0
  486. octop/dashboard/assets/yaml.BOXLgM6u.js +1 -0
  487. octop/dashboard/assets/yuque-mcp.AbtXyfSM.png +0 -0
  488. octop/dashboard/assets/zh.D-7HvP3m.js +90 -0
  489. octop/dashboard/assets/zhipu.CFgqzqwQ.png +0 -0
  490. octop/dashboard/experts/avatars/ai-coding-coach.svg +34 -0
  491. octop/dashboard/experts/avatars/ai-safety-guardian.svg +34 -0
  492. octop/dashboard/experts/avatars/business-operations.svg +37 -0
  493. octop/dashboard/experts/avatars/clinical-learning-subscription.svg +34 -0
  494. octop/dashboard/experts/avatars/cvm-ai-doctor.svg +34 -0
  495. octop/dashboard/experts/avatars/cvm-cluster-doctor.svg +34 -0
  496. octop/dashboard/experts/avatars/default.svg +34 -0
  497. octop/dashboard/experts/avatars/general-assistant.svg +34 -0
  498. octop/dashboard/experts/avatars/karpathy-knowledge-base.svg +34 -0
  499. octop/dashboard/experts/avatars/meituan-living-assistant.svg +34 -0
  500. octop/dashboard/experts/avatars/multi-agent-orchestrator.svg +34 -0
  501. octop/dashboard/experts/avatars/news-trend.svg +34 -0
  502. octop/dashboard/experts/avatars/office-automation.svg +34 -0
  503. octop/dashboard/experts/avatars/ops-engineer.svg +34 -0
  504. octop/dashboard/experts/avatars/parenting-companion.svg +34 -0
  505. octop/dashboard/experts/avatars/scene-academic.svg +28 -0
  506. octop/dashboard/experts/avatars/scene-content-creation.svg +28 -0
  507. octop/dashboard/experts/avatars/scene-data.svg +28 -0
  508. octop/dashboard/experts/avatars/scene-default.svg +28 -0
  509. octop/dashboard/experts/avatars/scene-design.svg +28 -0
  510. octop/dashboard/experts/avatars/scene-ecommerce.svg +28 -0
  511. octop/dashboard/experts/avatars/scene-education.svg +28 -0
  512. octop/dashboard/experts/avatars/scene-finance.svg +28 -0
  513. octop/dashboard/experts/avatars/scene-healthcare.svg +28 -0
  514. octop/dashboard/experts/avatars/scene-hr.svg +28 -0
  515. octop/dashboard/experts/avatars/scene-legal.svg +28 -0
  516. octop/dashboard/experts/avatars/scene-lifestyle.svg +28 -0
  517. octop/dashboard/experts/avatars/scene-marketing.svg +28 -0
  518. octop/dashboard/experts/avatars/scene-media.svg +28 -0
  519. octop/dashboard/experts/avatars/scene-mysticism.svg +28 -0
  520. octop/dashboard/experts/avatars/scene-office.svg +28 -0
  521. octop/dashboard/experts/avatars/scene-tech.svg +28 -0
  522. octop/dashboard/experts/avatars/stock-assistant.svg +34 -0
  523. octop/dashboard/experts/avatars/superpowers-methodology.svg +34 -0
  524. octop/dashboard/experts/avatars/team-host.svg +53 -0
  525. octop/dashboard/experts/avatars/tencentcloud-api.svg +34 -0
  526. octop/dashboard/experts/avatars/wechat-ops.svg +34 -0
  527. octop/dashboard/favico.svg +35 -0
  528. octop/dashboard/fonts/FSPixelSansUnicode-Regular.ttf +0 -0
  529. octop/dashboard/index.html +319 -0
  530. octop/dashboard/logo_horizontal_dark.png +0 -0
  531. octop/dashboard/logo_horizontal_white.png +0 -0
  532. octop/dashboard/logo_vertical_dark.svg +61 -0
  533. octop/dashboard/logo_vertical_white.svg +61 -0
  534. octop/dashboard/manifest.json +41 -0
  535. octop/dashboard/octop-mascot-empty.png +0 -0
  536. octop/dashboard/octop-mascot-peek.webm +0 -0
  537. octop/dashboard/octop-mascot-peek.webp +0 -0
  538. octop/dashboard/octop-mascot-tasks.png +0 -0
  539. octop/dashboard/octop-mascot-type.webm +0 -0
  540. octop/dashboard/octop-mascot-type.webp +0 -0
  541. octop/dashboard/offline.html +77 -0
  542. octop/dashboard/pcm-processor.js +67 -0
  543. octop/dashboard/pwa-192.png +0 -0
  544. octop/dashboard/pwa-512.png +0 -0
  545. octop/dashboard/sw.js +1 -0
  546. octop/dashboard/workbox-f0bb1bde.js +1 -0
  547. octop/i18n/__init__.py +45 -0
  548. octop/i18n/domains/__init__.py +61 -0
  549. octop/i18n/domains/agents.py +93 -0
  550. octop/i18n/domains/attachment.py +56 -0
  551. octop/i18n/domains/channel.py +41 -0
  552. octop/i18n/domains/errors.py +12 -0
  553. octop/i18n/domains/skills.py +28 -0
  554. octop/i18n/domains/slash.py +23 -0
  555. octop/i18n/domains/stream.py +290 -0
  556. octop/i18n/domains/tls.py +9 -0
  557. octop/i18n/domains/tools.py +122 -0
  558. octop/i18n/domains/voice.py +61 -0
  559. octop/i18n/en.json +997 -0
  560. octop/i18n/loader.py +64 -0
  561. octop/i18n/zh.json +997 -0
  562. octop/infra/__init__.py +30 -0
  563. octop/infra/agent_mcp/__init__.py +5 -0
  564. octop/infra/agent_mcp/protocol.py +195 -0
  565. octop/infra/agent_mcp/service.py +316 -0
  566. octop/infra/agents/builtin_skills/__init__.py +94 -0
  567. octop/infra/agents/builtin_skills/skill-manager/SKILL.md +71 -0
  568. octop/infra/agents/builtin_skills/skill-manager/scripts/manage_skills.py +683 -0
  569. octop/infra/agents/conversation_mode.py +168 -0
  570. octop/infra/agents/experts/avatar.py +267 -0
  571. octop/infra/agents/experts/catalog.py +961 -0
  572. octop/infra/agents/experts/composer_files.py +286 -0
  573. octop/infra/agents/experts/default_agent.py +107 -0
  574. octop/infra/agents/experts/library/LICENSE +212 -0
  575. octop/infra/agents/experts/library/README.md +9 -0
  576. octop/infra/agents/experts/library/ai-coding-coach/SOUL.md +34 -0
  577. octop/infra/agents/experts/library/ai-coding-coach/manifest.json +82 -0
  578. octop/infra/agents/experts/library/ai-coding-coach/skills/cheatsheet/SKILL.md +49 -0
  579. octop/infra/agents/experts/library/ai-safety-guardian/SOUL.md +42 -0
  580. octop/infra/agents/experts/library/ai-safety-guardian/manifest.json +82 -0
  581. octop/infra/agents/experts/library/ai-safety-guardian/skills/security-guide/SKILL.md +55 -0
  582. octop/infra/agents/experts/library/business-operations/AGENTS.md +39 -0
  583. octop/infra/agents/experts/library/business-operations/BOOTSTRAP.md +7 -0
  584. octop/infra/agents/experts/library/business-operations/IDENTITY.md +16 -0
  585. octop/infra/agents/experts/library/business-operations/README.md +233 -0
  586. octop/infra/agents/experts/library/business-operations/SOUL.md +13 -0
  587. octop/infra/agents/experts/library/business-operations/manifest.json +139 -0
  588. octop/infra/agents/experts/library/business-operations/skills/bo-process-doc/SKILL.md +27 -0
  589. octop/infra/agents/experts/library/business-operations/skills/bo-process-optimization/SKILL.md +35 -0
  590. octop/infra/agents/experts/library/business-operations/skills/bo-risk-assessment/SKILL.md +27 -0
  591. octop/infra/agents/experts/library/business-operations/skills/bo-runbook/SKILL.md +35 -0
  592. octop/infra/agents/experts/library/business-operations/skills/bo-status-report/SKILL.md +29 -0
  593. octop/infra/agents/experts/library/business-operations/skills/bo-vendor-review/SKILL.md +22 -0
  594. octop/infra/agents/experts/library/clinical-learning-subscription/AGENTS.md +51 -0
  595. octop/infra/agents/experts/library/clinical-learning-subscription/BOOTSTRAP.md +91 -0
  596. octop/infra/agents/experts/library/clinical-learning-subscription/SOUL.md +39 -0
  597. octop/infra/agents/experts/library/clinical-learning-subscription/USER.md +51 -0
  598. octop/infra/agents/experts/library/clinical-learning-subscription/agents/guideline-learning-designer.md +34 -0
  599. octop/infra/agents/experts/library/clinical-learning-subscription/agents/medical-learning-safety-reviewer.md +32 -0
  600. octop/infra/agents/experts/library/clinical-learning-subscription/manifest.json +346 -0
  601. octop/infra/agents/experts/library/clinical-learning-subscription/references/compliance-boundary.md +73 -0
  602. octop/infra/agents/experts/library/clinical-learning-subscription/references/cron-presets.json +71 -0
  603. octop/infra/agents/experts/library/clinical-learning-subscription/references/daily-learning-template.md +57 -0
  604. octop/infra/agents/experts/library/clinical-learning-subscription/references/department-queues.md +22 -0
  605. octop/infra/agents/experts/library/clinical-learning-subscription/references/international-guideline-source-routes.yaml +96 -0
  606. octop/infra/agents/experts/library/clinical-learning-subscription/references/learning-diagnosis-template.md +55 -0
  607. octop/infra/agents/experts/library/clinical-learning-subscription/references/learning-operations.md +117 -0
  608. octop/infra/agents/experts/library/clinical-learning-subscription/references/learning-track-template.md +45 -0
  609. octop/infra/agents/experts/library/clinical-learning-subscription/references/output-templates.md +189 -0
  610. octop/infra/agents/experts/library/clinical-learning-subscription/references/professional-society-source-routes.yaml +174 -0
  611. octop/infra/agents/experts/library/clinical-learning-subscription/references/source-policy.yaml +420 -0
  612. octop/infra/agents/experts/library/clinical-learning-subscription/references/verified-source-entrypoints.yaml +55 -0
  613. octop/infra/agents/experts/library/clinical-learning-subscription/scripts/clinical_profile.py +2608 -0
  614. octop/infra/agents/experts/library/clinical-learning-subscription/scripts/simulate_weixin_flow.py +238 -0
  615. octop/infra/agents/experts/library/clinical-learning-subscription/scripts/validate_output.py +513 -0
  616. octop/infra/agents/experts/library/clinical-learning-subscription/skills/clinical-q-and-a/SKILL.md +50 -0
  617. octop/infra/agents/experts/library/clinical-learning-subscription/skills/doctor-registration/SKILL.md +97 -0
  618. octop/infra/agents/experts/library/clinical-learning-subscription/skills/exam-material-recommendation/SKILL.md +77 -0
  619. octop/infra/agents/experts/library/clinical-learning-subscription/skills/guideline-learning/SKILL.md +58 -0
  620. octop/infra/agents/experts/library/clinical-learning-subscription/skills/guideline-learning-diagnosis/SKILL.md +119 -0
  621. octop/infra/agents/experts/library/clinical-learning-subscription/skills/guideline-section-expansion/SKILL.md +107 -0
  622. octop/infra/agents/experts/library/clinical-learning-subscription/skills/guideline-update-reminder/SKILL.md +100 -0
  623. octop/infra/agents/experts/library/clinical-learning-subscription/skills/insurance-policy-learning/SKILL.md +107 -0
  624. octop/infra/agents/experts/library/clinical-learning-subscription/skills/intent-routing/SKILL.md +30 -0
  625. octop/infra/agents/experts/library/clinical-learning-subscription/skills/medical-source-failover/SKILL.md +98 -0
  626. octop/infra/agents/experts/library/clinical-learning-subscription/skills/medical-source-failover/references/document-identity.md +97 -0
  627. octop/infra/agents/experts/library/clinical-learning-subscription/skills/medical-source-failover/references/domestic-source-registry.md +83 -0
  628. octop/infra/agents/experts/library/clinical-learning-subscription/skills/medical-source-failover/references/failover-policy.md +93 -0
  629. octop/infra/agents/experts/library/clinical-learning-subscription/skills/output-format/SKILL.md +89 -0
  630. octop/infra/agents/experts/library/clinical-learning-subscription/skills/source-verify/SKILL.md +181 -0
  631. octop/infra/agents/experts/library/clinical-learning-subscription/skills/subscription-setup/SKILL.md +70 -0
  632. octop/infra/agents/experts/library/cowork-plugin-management/AGENTS.md +27 -0
  633. octop/infra/agents/experts/library/cowork-plugin-management/SOUL.md +18 -0
  634. octop/infra/agents/experts/library/cowork-plugin-management/manifest.json +88 -0
  635. octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md +150 -0
  636. octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json +40 -0
  637. octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md +93 -0
  638. octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md +51 -0
  639. octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md +268 -0
  640. octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md +396 -0
  641. octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md +352 -0
  642. octop/infra/agents/experts/library/cvm-ai-doctor/HEARTBEAT.md +225 -0
  643. octop/infra/agents/experts/library/cvm-ai-doctor/IDENTITY.md +38 -0
  644. octop/infra/agents/experts/library/cvm-ai-doctor/SOUL.md +123 -0
  645. octop/infra/agents/experts/library/cvm-ai-doctor/USER.md +48 -0
  646. octop/infra/agents/experts/library/cvm-ai-doctor/manifest.json +138 -0
  647. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/API.md +167 -0
  648. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/AUDIT-INDEX.txt +171 -0
  649. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/AUDIT-REPORT-2026-05-09.md +410 -0
  650. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/AUDIT-SUMMARY.txt +270 -0
  651. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/COMMAND-SAMPLING-AUDIT.txt +175 -0
  652. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/README.md +161 -0
  653. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/SKILL.md +469 -0
  654. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/_archived/SKILL-v1-original.md.bak +1136 -0
  655. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/_archived/SKILL-v3-lean.md +420 -0
  656. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/_backup/00-quick-reference.md +186 -0
  657. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/_backup/00-scenario-index.md +1251 -0
  658. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/_backup/disk-smart.md +573 -0
  659. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/_backup/hardware-other.md +943 -0
  660. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/_backup/resource-saturation.md +848 -0
  661. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/_backup/system-logs.md +709 -0
  662. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/_backup/time-sync.md +675 -0
  663. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/cli-seeders/ai-clis.md +3 -0
  664. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/cli-seeders/evaltools.md +7 -0
  665. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/local-ai/audit-local-ai-packages.md +97 -0
  666. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/local-ai/comfyui/setup-comfyui.md +75 -0
  667. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/local-ai/gpu-ai-ml-assessment.md +441 -0
  668. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/local-ai/ollama/prune-ollama.md +14 -0
  669. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/local-ai/ollama/setup-ollama.md +57 -0
  670. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/local-ai/ollama/suggest-ollama-models.md +78 -0
  671. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/mcp/manage-mcp-servers.md +104 -0
  672. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/ai/stt/setup-speech-to-text.md +112 -0
  673. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/audio/mic-always-100.md +5 -0
  674. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/audio/set-as-default-mic.md +2 -0
  675. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/backup/identify-backup-targets.md +109 -0
  676. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/bluetooth/reset-bluetooth.md +330 -0
  677. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/bluetooth/troubleshoot-bluetooth.md +300 -0
  678. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/configuration/bash/add-bash-alias.md +9 -0
  679. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/configuration/bash/validate-bashrc.md +99 -0
  680. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/configuration/check-path.md +209 -0
  681. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/configuration/git/check-git-config.md +103 -0
  682. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/configuration/git/check-global-gitignore.md +145 -0
  683. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/configuration/permissions/debug-folder-permissions.md +234 -0
  684. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/configuration/ssh/list-ssh-connections.md +91 -0
  685. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/configuration/ssh/manage-ssh-keys.md +91 -0
  686. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/debugging/boot/check-boot-logs.md +43 -0
  687. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/debugging/boot/failed-boot-services.md +7 -0
  688. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/debugging/boot/review-boot.md +75 -0
  689. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/debugging/diagnose-crash.md +157 -0
  690. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/debugging/diagnose-slowdown.md +155 -0
  691. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/docker/setup-docker.md +258 -0
  692. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/ides/optimize-vscode-installation.md +131 -0
  693. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/node/node-version-check.md +1 -0
  694. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/node/npm-install.md +1 -0
  695. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/python/conda/manage-conda-environments.md +368 -0
  696. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/python/conda/setup-conda-data-analysis.md +88 -0
  697. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/python/conda/setup-conda-llm-finetune.md +108 -0
  698. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/python/conda/setup-conda-rocm.md +86 -0
  699. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/python/conda/setup-conda-stt-finetune.md +103 -0
  700. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/python/identify-python-environments.md +89 -0
  701. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/python/pyenv/setup-pyenv.md +52 -0
  702. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/sdks/sdk-check.md +2 -0
  703. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/suggest-ides.md +115 -0
  704. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/yadm/check-yadm.md +51 -0
  705. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/dev-tools/yadm/manually-update-yadm.md +49 -0
  706. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/display/capture-current-config.md +8 -0
  707. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/display/list-connected-displays.md +72 -0
  708. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/display/optimize-display-scaling.md +135 -0
  709. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/display/setup-multi-monitor.md +90 -0
  710. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/display/switch-display-profile.md +172 -0
  711. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fonts/install-google-fonts.md +80 -0
  712. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fonts/list-fonts.md +79 -0
  713. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fs-optimisation/chunk/chunk-this-dir.md +5 -0
  714. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fs-optimisation/consolidate/consolidate-folders.md +46 -0
  715. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fs-optimisation/flatten/flatten.md +7 -0
  716. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fs-optimisation/idate/suggest-folder-structure.md +52 -0
  717. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fs-optimisation/separate/separate-by-filetype.md +3 -0
  718. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fs-optimisation/separate/separate-photos-and-video.md +5 -0
  719. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fs-optimisation/tidy-up/desktop-tidy.md +9 -0
  720. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/fs-optimisation/tidy-up/organize-loose-files.md +32 -0
  721. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/hardware/check-gpu-os-optimization.md +84 -0
  722. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/hardware/evaluate-wake-devices.md +75 -0
  723. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/hardware/hardware-profilers/by-component/profile-cpu.md +420 -0
  724. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/hardware/hardware-profilers/by-component/profile-gpu.md +357 -0
  725. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/hardware/hardware-profilers/by-component/profile-motherboard.md +456 -0
  726. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/hardware/hardware-profilers/by-component/profile-ram.md +278 -0
  727. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/hardware/hardware-profilers/hardware-identity.md +139 -0
  728. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/hardware/hardware-profilers/hardware-profile.md +245 -0
  729. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/hardware/review-gpu-settings.md +104 -0
  730. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/clis/install-brew.md +123 -0
  731. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/clis/install-gh-cli.md +309 -0
  732. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/clis/install-pipx.md +321 -0
  733. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/clis/install-sdkman.md +180 -0
  734. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/clis/install-yadm.md +111 -0
  735. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/clis/setup-aws-cli.md +40 -0
  736. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/clis/setup-b2-cli.md +40 -0
  737. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/clis/setup-rclone.md +41 -0
  738. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/guis/input-remapper.md +1 -0
  739. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/install-from-gh.md +7 -0
  740. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/installation/install-this.md +3 -0
  741. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/kde/backup-kde-settings.md +248 -0
  742. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/kde/list-kde-shortcuts.md +291 -0
  743. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/kde/optimize-kde-performance.md +288 -0
  744. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/kde/reset-plasma-config.md +249 -0
  745. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/logging/analyze-journal-errors.md +118 -0
  746. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/logging/check-failed-units.md +204 -0
  747. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/logging/monitor-system-resources.md +139 -0
  748. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/logging/tail-system-logs.md +115 -0
  749. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/media/check-codecs.md +89 -0
  750. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/network/diagnose-network-issues.md +87 -0
  751. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/network/lan/diagnose-lan-connectivity.md +80 -0
  752. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/network/lan/lan-ssh-setup.md +11 -0
  753. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/network/lan/scan-lan.md +47 -0
  754. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/network/lan/smart-arp.md +17 -0
  755. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/optimisation/large-files.md +7 -0
  756. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/optimisation/optimize-boot-speed.md +73 -0
  757. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/package-management/check-apt-health.md +183 -0
  758. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/package-management/check-third-party-repos.md +54 -0
  759. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/package-management/configure-auto-updates.md +186 -0
  760. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/package-management/evaluate-installed-software.md +50 -0
  761. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/package-management/identify-unused-packages.md +55 -0
  762. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/package-management/install-brew.md +1 -0
  763. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/peripherals/evtest.md +3 -0
  764. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/peripherals/list-usb-devices.md +277 -0
  765. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/power-mgmt/hibernation.md +1 -0
  766. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/power-mgmt/wol-setup.md +14 -0
  767. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/program-management/install-github-program.md +50 -0
  768. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/repositories/delete-old-repos.md +15 -0
  769. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/repositories/organise-repos.md +17 -0
  770. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/security/audits/probe-vulnerabilities.md +59 -0
  771. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/security/audits/write-audit.md +13 -0
  772. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/security/auth/yubi-setup.md +7 -0
  773. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/security/av/install-clamav.md +89 -0
  774. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/security/detect-spyware.md +62 -0
  775. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/security/firewall/analyze-firewall.md +286 -0
  776. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/security/posture-diagnostics/security-posture-check.md +98 -0
  777. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/storage/health-checks/btrfs-snapper-health.md +41 -0
  778. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/storage/health-checks/check-drive-health.md +117 -0
  779. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/storage/health-checks/smart-status.md +43 -0
  780. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/storage/network-mounts/setup-nfs-mounts.md +154 -0
  781. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/storage/network-mounts/setup-smb-mounts.md +201 -0
  782. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/storage/raid/check-raid-config.md +54 -0
  783. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/storage/storage-deep-dive.md +88 -0
  784. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/system-health/optimize-pipewire.md +57 -0
  785. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/system-health/review-startup-services.md +102 -0
  786. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/system-health/system-health-checkup.md +118 -0
  787. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/system-health/system-upgrade.md +21 -0
  788. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/utilities/diagnose-printers.md +54 -0
  789. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/video/codecs.md +1 -0
  790. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/commands/virtualization/check-virtualization.md +318 -0
  791. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/docs/architecture.md +409 -0
  792. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/docs/cvm-doctor-report.html +851 -0
  793. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/docs/scenario-decision-guide.md +302 -0
  794. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/docs/scenario-index-maintenance.md +208 -0
  795. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/examples/cron-job-spec.json +34 -0
  796. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/00-scenario-index.md +457 -0
  797. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/cluster-deep-analysis.md +463 -0
  798. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/cluster-discovery.md +169 -0
  799. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/cluster-health-score.md +173 -0
  800. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/cluster-quick-check.md +230 -0
  801. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/cluster-remediation.md +215 -0
  802. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/cvm-self-diagnosis-repair.md +219 -0
  803. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/disk-smart-deep.md +209 -0
  804. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/disk-smart-quick.md +145 -0
  805. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/hardware-health-deep.md +276 -0
  806. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/hardware-health-quick.md +236 -0
  807. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/resource-saturation-deep-combined.md +345 -0
  808. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/resource-saturation-deep-cpu.md +278 -0
  809. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/resource-saturation-deep-disk.md +343 -0
  810. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/resource-saturation-deep-memory.md +282 -0
  811. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/resource-saturation-deep-network.md +297 -0
  812. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/resource-saturation-quick.md +342 -0
  813. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/skill-collaboration-tencentcloud.md +276 -0
  814. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/skill-collaboration.md +223 -0
  815. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/system-logs-deep-auth.md +111 -0
  816. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/system-logs-deep-fs.md +106 -0
  817. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/system-logs-deep-kernel.md +196 -0
  818. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/system-logs-deep-oom.md +176 -0
  819. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/system-logs-deep-service.md +102 -0
  820. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/system-logs-quick.md +327 -0
  821. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/references/time-sync.md +675 -0
  822. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/README.md +141 -0
  823. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/analyze_stats.sh +287 -0
  824. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/cluster_deep_cpu.sh +55 -0
  825. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/cluster_deep_disk.sh +56 -0
  826. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/cluster_deep_memory.sh +50 -0
  827. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/cluster_deep_network.sh +58 -0
  828. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/cluster_deep_ssh.sh +53 -0
  829. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/cluster_os_snapshot.sh +39 -0
  830. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/cluster_patrol_record.py +171 -0
  831. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/cluster_patrol_server.py +226 -0
  832. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/cluster_score.sh +292 -0
  833. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/combined_analysis.sh +259 -0
  834. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/deep_scan.sh +452 -0
  835. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/generate_promo.py +53 -0
  836. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/log_stats.sh +36 -0
  837. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/patrol.sh +453 -0
  838. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/patrol_server.py +139 -0
  839. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/quick_scan.ps1 +182 -0
  840. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/quick_scan.sh +415 -0
  841. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/serve_dashboard.sh +57 -0
  842. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/setup-lightclaw-cron.sh +199 -0
  843. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/scripts/sync_skill.sh +136 -0
  844. octop/infra/agents/experts/library/cvm-ai-doctor/skills/cvm-ai-doctor/version.ini +12 -0
  845. octop/infra/agents/experts/library/cvm-cluster-doctor/HEARTBEAT.md +221 -0
  846. octop/infra/agents/experts/library/cvm-cluster-doctor/IDENTITY.md +53 -0
  847. octop/infra/agents/experts/library/cvm-cluster-doctor/SOUL.md +151 -0
  848. octop/infra/agents/experts/library/cvm-cluster-doctor/USER.md +53 -0
  849. octop/infra/agents/experts/library/cvm-cluster-doctor/manifest.json +142 -0
  850. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/SKILL.md +565 -0
  851. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/_meta.json +6 -0
  852. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/references/auto-check-resource.md +90 -0
  853. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/references/cbs-bindto-cvm.md +437 -0
  854. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/references/cloud-service-healthcheck.md +688 -0
  855. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/references/cvm-security-check.md +192 -0
  856. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/references/lighthouse-app-deploy.md +516 -0
  857. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/references/lighthouse-openclaw-setup.md +154 -0
  858. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/references/lighthouse-website-setup.md +308 -0
  859. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/scripts/tccli-oauth-helper.py +361 -0
  860. octop/infra/agents/experts/library/cvm-cluster-doctor/skills/tencentcloud-infra/scripts/whoami.sh +17 -0
  861. octop/infra/agents/experts/library/default/AGENTS.md +22 -0
  862. octop/infra/agents/experts/library/default/manifest.json +32 -0
  863. octop/infra/agents/experts/library/design/AGENTS.md +27 -0
  864. octop/infra/agents/experts/library/design/CONNECTORS.md +18 -0
  865. octop/infra/agents/experts/library/design/SOUL.md +23 -0
  866. octop/infra/agents/experts/library/design/manifest.json +88 -0
  867. octop/infra/agents/experts/library/design/skills/accessibility-review/SKILL.md +128 -0
  868. octop/infra/agents/experts/library/design/skills/design-critique/SKILL.md +118 -0
  869. octop/infra/agents/experts/library/design/skills/design-handoff/SKILL.md +131 -0
  870. octop/infra/agents/experts/library/design/skills/design-system/SKILL.md +190 -0
  871. octop/infra/agents/experts/library/design/skills/research-synthesis/SKILL.md +92 -0
  872. octop/infra/agents/experts/library/design/skills/user-research/SKILL.md +41 -0
  873. octop/infra/agents/experts/library/design/skills/ux-copy/SKILL.md +107 -0
  874. octop/infra/agents/experts/library/engineering/AGENTS.md +27 -0
  875. octop/infra/agents/experts/library/engineering/CONNECTORS.md +19 -0
  876. octop/infra/agents/experts/library/engineering/SOUL.md +26 -0
  877. octop/infra/agents/experts/library/engineering/manifest.json +88 -0
  878. octop/infra/agents/experts/library/engineering/skills/architecture/SKILL.md +85 -0
  879. octop/infra/agents/experts/library/engineering/skills/code-review/SKILL.md +118 -0
  880. octop/infra/agents/experts/library/engineering/skills/debug/SKILL.md +95 -0
  881. octop/infra/agents/experts/library/engineering/skills/deploy-checklist/SKILL.md +78 -0
  882. octop/infra/agents/experts/library/engineering/skills/documentation/SKILL.md +49 -0
  883. octop/infra/agents/experts/library/engineering/skills/incident-response/SKILL.md +158 -0
  884. octop/infra/agents/experts/library/engineering/skills/standup/SKILL.md +75 -0
  885. octop/infra/agents/experts/library/engineering/skills/system-design/SKILL.md +42 -0
  886. octop/infra/agents/experts/library/engineering/skills/tech-debt/SKILL.md +32 -0
  887. octop/infra/agents/experts/library/engineering/skills/testing-strategy/SKILL.md +33 -0
  888. octop/infra/agents/experts/library/general-assistant/SOUL.md +48 -0
  889. octop/infra/agents/experts/library/general-assistant/manifest.json +226 -0
  890. octop/infra/agents/experts/library/general-assistant/skills/octop-assistant/SKILL.md +666 -0
  891. octop/infra/agents/experts/library/karpathy-knowledge-base/AGENTS.md +66 -0
  892. octop/infra/agents/experts/library/karpathy-knowledge-base/BOOTSTRAP.md +16 -0
  893. octop/infra/agents/experts/library/karpathy-knowledge-base/MEMORY.md +36 -0
  894. octop/infra/agents/experts/library/karpathy-knowledge-base/SOUL.md +20 -0
  895. octop/infra/agents/experts/library/karpathy-knowledge-base/knowledge-base/raw/README.md +11 -0
  896. octop/infra/agents/experts/library/karpathy-knowledge-base/knowledge-base/wiki/index.md +29 -0
  897. octop/infra/agents/experts/library/karpathy-knowledge-base/knowledge-base/wiki/log.md +8 -0
  898. octop/infra/agents/experts/library/karpathy-knowledge-base/knowledge-base/wiki/overview.md +27 -0
  899. octop/infra/agents/experts/library/karpathy-knowledge-base/manifest.json +122 -0
  900. octop/infra/agents/experts/library/karpathy-knowledge-base/skills/llm-wiki/SKILL.md +97 -0
  901. octop/infra/agents/experts/library/meituan-living-assistant/SOUL.md +28 -0
  902. octop/infra/agents/experts/library/meituan-living-assistant/manifest.json +136 -0
  903. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/SKILL.md +742 -0
  904. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/references/DOCTOR.md +224 -0
  905. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/references/mt_login.png +0 -0
  906. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/auth.py +224 -0
  907. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/config.json +3 -0
  908. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/diag_auth_log.py +111 -0
  909. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/diag_issue_log.py +78 -0
  910. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/mtuser-pt-passport-0.1.4.tgz +0 -0
  911. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/package-lock.json +40 -0
  912. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/package.json +5 -0
  913. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/plugin_version_lite.py +308 -0
  914. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/qr_local.py +70 -0
  915. octop/infra/agents/experts/library/meituan-living-assistant/skills/meituan-deals/scripts/run.js +1275 -0
  916. octop/infra/agents/experts/library/multi-agent-orchestrator/AGENTS.md +64 -0
  917. octop/infra/agents/experts/library/multi-agent-orchestrator/SOUL.md +48 -0
  918. octop/infra/agents/experts/library/multi-agent-orchestrator/manifest.json +67 -0
  919. octop/infra/agents/experts/library/news-trend/HEARTBEAT.md +38 -0
  920. octop/infra/agents/experts/library/news-trend/IDENTITY.md +53 -0
  921. octop/infra/agents/experts/library/news-trend/SOUL.md +314 -0
  922. octop/infra/agents/experts/library/news-trend/USER.md +53 -0
  923. octop/infra/agents/experts/library/news-trend/manifest.json +138 -0
  924. octop/infra/agents/experts/library/news-trend/skills/daily-hot-news/SKILL.md +256 -0
  925. octop/infra/agents/experts/library/news-trend/skills/daily-hot-news/references/api-formats.md +105 -0
  926. octop/infra/agents/experts/library/news-trend/skills/daily-hot-news/references/dailyhot-api.md +183 -0
  927. octop/infra/agents/experts/library/news-trend/skills/daily-hot-news/references/sources.md +640 -0
  928. octop/infra/agents/experts/library/news-trend/skills/daily-hot-news/scripts/fetch_dailyhot.mjs +41 -0
  929. octop/infra/agents/experts/library/office-automation/IDENTITY.md +38 -0
  930. octop/infra/agents/experts/library/office-automation/SOUL.md +23 -0
  931. octop/infra/agents/experts/library/office-automation/USER.md +38 -0
  932. octop/infra/agents/experts/library/office-automation/manifest.json +137 -0
  933. octop/infra/agents/experts/library/office-automation/skills/file_reader/SKILL.md +66 -0
  934. octop/infra/agents/experts/library/office-automation/skills/news/SKILL.md +55 -0
  935. octop/infra/agents/experts/library/ops-engineer/IDENTITY.md +24 -0
  936. octop/infra/agents/experts/library/ops-engineer/SOUL.md +23 -0
  937. octop/infra/agents/experts/library/ops-engineer/USER.md +24 -0
  938. octop/infra/agents/experts/library/ops-engineer/manifest.json +137 -0
  939. octop/infra/agents/experts/library/parenting-companion/AGENTS.md +168 -0
  940. octop/infra/agents/experts/library/parenting-companion/BOOTSTRAP.md +98 -0
  941. octop/infra/agents/experts/library/parenting-companion/HEARTBEAT.md +127 -0
  942. octop/infra/agents/experts/library/parenting-companion/IDENTITY.md +59 -0
  943. octop/infra/agents/experts/library/parenting-companion/SOUL.md +33 -0
  944. octop/infra/agents/experts/library/parenting-companion/USER.md +59 -0
  945. octop/infra/agents/experts/library/parenting-companion/manifest.json +139 -0
  946. octop/infra/agents/experts/library/parenting-companion/scripts/check_memory_freshness.sh +81 -0
  947. octop/infra/agents/experts/library/productivity/AGENTS.md +31 -0
  948. octop/infra/agents/experts/library/productivity/CONNECTORS.md +18 -0
  949. octop/infra/agents/experts/library/productivity/SOUL.md +22 -0
  950. octop/infra/agents/experts/library/productivity/manifest.json +88 -0
  951. octop/infra/agents/experts/library/productivity/skills/dashboard.html +3112 -0
  952. octop/infra/agents/experts/library/productivity/skills/memory-management/SKILL.md +323 -0
  953. octop/infra/agents/experts/library/productivity/skills/start/SKILL.md +158 -0
  954. octop/infra/agents/experts/library/productivity/skills/task-management/SKILL.md +91 -0
  955. octop/infra/agents/experts/library/productivity/skills/update/SKILL.md +168 -0
  956. octop/infra/agents/experts/library/stock-assistant/HEARTBEAT.md +79 -0
  957. octop/infra/agents/experts/library/stock-assistant/IDENTITY.md +37 -0
  958. octop/infra/agents/experts/library/stock-assistant/SOUL.md +252 -0
  959. octop/infra/agents/experts/library/stock-assistant/USER.md +37 -0
  960. octop/infra/agents/experts/library/stock-assistant/manifest.json +138 -0
  961. octop/infra/agents/experts/library/stock-assistant/skills/stock-info/SKILL.md +163 -0
  962. octop/infra/agents/experts/library/stock-assistant/skills/stock-info/references/examples.md +65 -0
  963. octop/infra/agents/experts/library/stock-assistant/skills/stock-info/references/known-issues.md +35 -0
  964. octop/infra/agents/experts/library/superpowers-methodology/SOUL.md +33 -0
  965. octop/infra/agents/experts/library/superpowers-methodology/manifest.json +82 -0
  966. octop/infra/agents/experts/library/superpowers-methodology/skills/engineering-workflow/SKILL.md +61 -0
  967. octop/infra/agents/experts/library/tencentcloud-api/SOUL.md +88 -0
  968. octop/infra/agents/experts/library/tencentcloud-api/manifest.json +136 -0
  969. octop/infra/agents/experts/library/tencentcloud-api/skills/tcapi/SKILL.md +391 -0
  970. octop/infra/agents/experts/library/tencentcloud-api/skills/tcapi/references/auth.md +117 -0
  971. octop/infra/agents/experts/library/tencentcloud-api/skills/tcapi/references/install.md +48 -0
  972. octop/infra/agents/experts/library/tencentcloud-api/skills/tcapi/references/refs.md +49 -0
  973. octop/infra/agents/experts/library/wechat-ops/IDENTITY.md +62 -0
  974. octop/infra/agents/experts/library/wechat-ops/SOUL.md +39 -0
  975. octop/infra/agents/experts/library/wechat-ops/USER.md +62 -0
  976. octop/infra/agents/experts/library/wechat-ops/manifest.json +137 -0
  977. octop/infra/agents/experts/library/wechat-ops/skills/publisher-multi-platform/IDENTITY.md +45 -0
  978. octop/infra/agents/experts/library/wechat-ops/skills/publisher-multi-platform/SKILL.md +453 -0
  979. octop/infra/agents/experts/library/wechat-ops/skills/publisher-multi-platform/SOUL.md +39 -0
  980. octop/infra/agents/experts/library/wechat-ops/skills/publisher-multi-platform/manifest.yaml +11 -0
  981. octop/infra/agents/experts/library/wechat-ops/skills/publisher-multi-platform/scripts/setup_server.sh +112 -0
  982. octop/infra/agents/experts/library/wechat-ops/skills/publisher-multi-platform/scripts/wechat_publish.py +1097 -0
  983. octop/infra/agents/experts/library/wechat-ops/skills/publisher-multi-platform/scripts/xhs_publish.py +592 -0
  984. octop/infra/agents/experts/manifest_generator.py +653 -0
  985. octop/infra/agents/experts/manifest_generator_skill.md +144 -0
  986. octop/infra/agents/experts/market_creation.py +406 -0
  987. octop/infra/agents/experts/publish.py +293 -0
  988. octop/infra/agents/experts/published_creation.py +427 -0
  989. octop/infra/agents/experts/skillhub_market.py +1355 -0
  990. octop/infra/agents/manager.py +4187 -0
  991. octop/infra/agents/memory/__init__.py +21 -0
  992. octop/infra/agents/memory/backend.py +87 -0
  993. octop/infra/agents/memory/compact_store.py +50 -0
  994. octop/infra/agents/memory/postgres_storage.py +220 -0
  995. octop/infra/agents/memory/slim.py +553 -0
  996. octop/infra/agents/memory/slim_control.py +176 -0
  997. octop/infra/agents/memory/sqlite_restore.py +129 -0
  998. octop/infra/agents/memory/sqlite_storage.py +102 -0
  999. octop/infra/agents/memory/storage.py +47 -0
  1000. octop/infra/agents/memory/thread_cleanup.py +933 -0
  1001. octop/infra/agents/middleware/binary_read_guard.py +128 -0
  1002. octop/infra/agents/middleware/browser_profile.py +71 -0
  1003. octop/infra/agents/middleware/model_failover.py +203 -0
  1004. octop/infra/agents/middleware/octop_ui_offload.py +88 -0
  1005. octop/infra/agents/middleware/reasoning.py +50 -0
  1006. octop/infra/agents/middleware/thread_artifacts.py +199 -0
  1007. octop/infra/agents/middleware/token_quota.py +48 -0
  1008. octop/infra/agents/middleware/workspace_image.py +88 -0
  1009. octop/infra/agents/persona/__init__.py +21 -0
  1010. octop/infra/agents/persona/loader.py +83 -0
  1011. octop/infra/agents/persona/mbti_profiles.py +596 -0
  1012. octop/infra/agents/plugins/__init__.py +25 -0
  1013. octop/infra/agents/plugins/bundled/__init__.py +13 -0
  1014. octop/infra/agents/plugins/bundled/air-quality/icon.svg +6 -0
  1015. octop/infra/agents/plugins/bundled/air-quality/main.py +105 -0
  1016. octop/infra/agents/plugins/bundled/air-quality/plugin.yaml +13 -0
  1017. octop/infra/agents/plugins/bundled/air-quality/ui/index.js +38 -0
  1018. octop/infra/agents/plugins/bundled/air-quality/ui/manifest.json +3 -0
  1019. octop/infra/agents/plugins/bundled/arxiv-search/README.md +34 -0
  1020. octop/infra/agents/plugins/bundled/arxiv-search/icon.svg +12 -0
  1021. octop/infra/agents/plugins/bundled/arxiv-search/main.py +186 -0
  1022. octop/infra/agents/plugins/bundled/arxiv-search/plugin.yaml +13 -0
  1023. octop/infra/agents/plugins/bundled/arxiv-search/ui/index.js +194 -0
  1024. octop/infra/agents/plugins/bundled/arxiv-search/ui/manifest.json +3 -0
  1025. octop/infra/agents/plugins/bundled/bilibili-anime/icon.svg +7 -0
  1026. octop/infra/agents/plugins/bundled/bilibili-anime/main.py +207 -0
  1027. octop/infra/agents/plugins/bundled/bilibili-anime/plugin.yaml +13 -0
  1028. octop/infra/agents/plugins/bundled/bilibili-anime/ui/index.js +203 -0
  1029. octop/infra/agents/plugins/bundled/bilibili-anime/ui/manifest.json +3 -0
  1030. octop/infra/agents/plugins/bundled/color-convert/icon.svg +6 -0
  1031. octop/infra/agents/plugins/bundled/color-convert/main.py +88 -0
  1032. octop/infra/agents/plugins/bundled/color-convert/plugin.yaml +11 -0
  1033. octop/infra/agents/plugins/bundled/color-convert/ui/index.js +37 -0
  1034. octop/infra/agents/plugins/bundled/color-convert/ui/manifest.json +3 -0
  1035. octop/infra/agents/plugins/bundled/daily-english/icon.svg +4 -0
  1036. octop/infra/agents/plugins/bundled/daily-english/main.py +115 -0
  1037. octop/infra/agents/plugins/bundled/daily-english/plugin.yaml +11 -0
  1038. octop/infra/agents/plugins/bundled/daily-english/ui/index.js +32 -0
  1039. octop/infra/agents/plugins/bundled/daily-english/ui/manifest.json +3 -0
  1040. octop/infra/agents/plugins/bundled/fortune/icon.svg +8 -0
  1041. octop/infra/agents/plugins/bundled/fortune/main.py +116 -0
  1042. octop/infra/agents/plugins/bundled/fortune/plugin.yaml +11 -0
  1043. octop/infra/agents/plugins/bundled/fortune/ui/index.js +106 -0
  1044. octop/infra/agents/plugins/bundled/fortune/ui/manifest.json +5 -0
  1045. octop/infra/agents/plugins/bundled/fun-facts/icon.svg +5 -0
  1046. octop/infra/agents/plugins/bundled/fun-facts/main.py +71 -0
  1047. octop/infra/agents/plugins/bundled/fun-facts/plugin.yaml +11 -0
  1048. octop/infra/agents/plugins/bundled/fun-facts/ui/index.js +34 -0
  1049. octop/infra/agents/plugins/bundled/fun-facts/ui/manifest.json +3 -0
  1050. octop/infra/agents/plugins/bundled/github-trending/icon.svg +4 -0
  1051. octop/infra/agents/plugins/bundled/github-trending/main.py +88 -0
  1052. octop/infra/agents/plugins/bundled/github-trending/plugin.yaml +13 -0
  1053. octop/infra/agents/plugins/bundled/github-trending/ui/index.js +59 -0
  1054. octop/infra/agents/plugins/bundled/github-trending/ui/manifest.json +3 -0
  1055. octop/infra/agents/plugins/bundled/hot-topics/icon.svg +6 -0
  1056. octop/infra/agents/plugins/bundled/hot-topics/main.py +155 -0
  1057. octop/infra/agents/plugins/bundled/hot-topics/plugin.yaml +13 -0
  1058. octop/infra/agents/plugins/bundled/hot-topics/ui/index.js +98 -0
  1059. octop/infra/agents/plugins/bundled/hot-topics/ui/manifest.json +3 -0
  1060. octop/infra/agents/plugins/bundled/ip-lookup/icon.svg +6 -0
  1061. octop/infra/agents/plugins/bundled/ip-lookup/main.py +54 -0
  1062. octop/infra/agents/plugins/bundled/ip-lookup/plugin.yaml +13 -0
  1063. octop/infra/agents/plugins/bundled/ip-lookup/ui/index.js +32 -0
  1064. octop/infra/agents/plugins/bundled/ip-lookup/ui/manifest.json +3 -0
  1065. octop/infra/agents/plugins/bundled/market-quotes/icon.svg +6 -0
  1066. octop/infra/agents/plugins/bundled/market-quotes/main.py +163 -0
  1067. octop/infra/agents/plugins/bundled/market-quotes/plugin.yaml +13 -0
  1068. octop/infra/agents/plugins/bundled/market-quotes/ui/index.js +82 -0
  1069. octop/infra/agents/plugins/bundled/market-quotes/ui/manifest.json +8 -0
  1070. octop/infra/agents/plugins/bundled/meme-maker/icon.svg +7 -0
  1071. octop/infra/agents/plugins/bundled/meme-maker/main.py +92 -0
  1072. octop/infra/agents/plugins/bundled/meme-maker/plugin.yaml +13 -0
  1073. octop/infra/agents/plugins/bundled/meme-maker/ui/index.js +40 -0
  1074. octop/infra/agents/plugins/bundled/meme-maker/ui/manifest.json +6 -0
  1075. octop/infra/agents/plugins/bundled/mini-games/icon.svg +8 -0
  1076. octop/infra/agents/plugins/bundled/mini-games/main.py +106 -0
  1077. octop/infra/agents/plugins/bundled/mini-games/plugin.yaml +11 -0
  1078. octop/infra/agents/plugins/bundled/mini-games/ui/index.js +94 -0
  1079. octop/infra/agents/plugins/bundled/mini-games/ui/manifest.json +5 -0
  1080. octop/infra/agents/plugins/bundled/movie-search/icon.svg +5 -0
  1081. octop/infra/agents/plugins/bundled/movie-search/main.py +87 -0
  1082. octop/infra/agents/plugins/bundled/movie-search/plugin.yaml +13 -0
  1083. octop/infra/agents/plugins/bundled/movie-search/ui/index.js +54 -0
  1084. octop/infra/agents/plugins/bundled/movie-search/ui/manifest.json +3 -0
  1085. octop/infra/agents/plugins/bundled/parcel-tracker/icon.svg +8 -0
  1086. octop/infra/agents/plugins/bundled/parcel-tracker/main.py +105 -0
  1087. octop/infra/agents/plugins/bundled/parcel-tracker/plugin.yaml +13 -0
  1088. octop/infra/agents/plugins/bundled/parcel-tracker/ui/index.js +101 -0
  1089. octop/infra/agents/plugins/bundled/parcel-tracker/ui/manifest.json +3 -0
  1090. octop/infra/agents/plugins/bundled/pomodoro/icon.svg +6 -0
  1091. octop/infra/agents/plugins/bundled/pomodoro/main.py +61 -0
  1092. octop/infra/agents/plugins/bundled/pomodoro/plugin.yaml +11 -0
  1093. octop/infra/agents/plugins/bundled/pomodoro/ui/index.js +176 -0
  1094. octop/infra/agents/plugins/bundled/pomodoro/ui/manifest.json +5 -0
  1095. octop/infra/agents/plugins/bundled/qrcode/icon.svg +9 -0
  1096. octop/infra/agents/plugins/bundled/qrcode/main.py +50 -0
  1097. octop/infra/agents/plugins/bundled/qrcode/plugin.yaml +13 -0
  1098. octop/infra/agents/plugins/bundled/qrcode/ui/index.js +49 -0
  1099. octop/infra/agents/plugins/bundled/qrcode/ui/manifest.json +3 -0
  1100. octop/infra/agents/plugins/bundled/server-status/icon.svg +8 -0
  1101. octop/infra/agents/plugins/bundled/server-status/main.py +159 -0
  1102. octop/infra/agents/plugins/bundled/server-status/plugin.yaml +13 -0
  1103. octop/infra/agents/plugins/bundled/server-status/ui/index.js +76 -0
  1104. octop/infra/agents/plugins/bundled/server-status/ui/manifest.json +3 -0
  1105. octop/infra/agents/plugins/bundled/short-link/icon.svg +4 -0
  1106. octop/infra/agents/plugins/bundled/short-link/main.py +49 -0
  1107. octop/infra/agents/plugins/bundled/short-link/plugin.yaml +13 -0
  1108. octop/infra/agents/plugins/bundled/short-link/ui/index.js +33 -0
  1109. octop/infra/agents/plugins/bundled/short-link/ui/manifest.json +3 -0
  1110. octop/infra/agents/plugins/bundled/slack-calendar/icon.svg +8 -0
  1111. octop/infra/agents/plugins/bundled/slack-calendar/main.py +92 -0
  1112. octop/infra/agents/plugins/bundled/slack-calendar/plugin.yaml +11 -0
  1113. octop/infra/agents/plugins/bundled/slack-calendar/ui/index.js +97 -0
  1114. octop/infra/agents/plugins/bundled/slack-calendar/ui/manifest.json +5 -0
  1115. octop/infra/agents/plugins/bundled/sports-scores/icon.svg +5 -0
  1116. octop/infra/agents/plugins/bundled/sports-scores/main.py +66 -0
  1117. octop/infra/agents/plugins/bundled/sports-scores/plugin.yaml +13 -0
  1118. octop/infra/agents/plugins/bundled/sports-scores/ui/index.js +48 -0
  1119. octop/infra/agents/plugins/bundled/sports-scores/ui/manifest.json +3 -0
  1120. octop/infra/agents/plugins/bundled/tetris/icon.svg +7 -0
  1121. octop/infra/agents/plugins/bundled/tetris/main.py +30 -0
  1122. octop/infra/agents/plugins/bundled/tetris/plugin.yaml +11 -0
  1123. octop/infra/agents/plugins/bundled/tetris/ui/index.js +426 -0
  1124. octop/infra/agents/plugins/bundled/tetris/ui/manifest.json +3 -0
  1125. octop/infra/agents/plugins/bundled/travel-inspire/icon.svg +4 -0
  1126. octop/infra/agents/plugins/bundled/travel-inspire/main.py +132 -0
  1127. octop/infra/agents/plugins/bundled/travel-inspire/plugin.yaml +11 -0
  1128. octop/infra/agents/plugins/bundled/travel-inspire/ui/index.js +34 -0
  1129. octop/infra/agents/plugins/bundled/travel-inspire/ui/manifest.json +3 -0
  1130. octop/infra/agents/plugins/bundled/unit-convert/icon.svg +4 -0
  1131. octop/infra/agents/plugins/bundled/unit-convert/main.py +99 -0
  1132. octop/infra/agents/plugins/bundled/unit-convert/plugin.yaml +11 -0
  1133. octop/infra/agents/plugins/bundled/unit-convert/ui/index.js +28 -0
  1134. octop/infra/agents/plugins/bundled/unit-convert/ui/manifest.json +3 -0
  1135. octop/infra/agents/plugins/bundled/weather/icon.svg +6 -0
  1136. octop/infra/agents/plugins/bundled/weather/main.py +215 -0
  1137. octop/infra/agents/plugins/bundled/weather/plugin.yaml +13 -0
  1138. octop/infra/agents/plugins/bundled/weather/ui/index.js +132 -0
  1139. octop/infra/agents/plugins/bundled/weather/ui/manifest.json +3 -0
  1140. octop/infra/agents/plugins/bundled/what-to-eat/icon.svg +5 -0
  1141. octop/infra/agents/plugins/bundled/what-to-eat/main.py +52 -0
  1142. octop/infra/agents/plugins/bundled/what-to-eat/plugin.yaml +11 -0
  1143. octop/infra/agents/plugins/bundled/what-to-eat/ui/index.js +27 -0
  1144. octop/infra/agents/plugins/bundled/what-to-eat/ui/manifest.json +3 -0
  1145. octop/infra/agents/plugins/bundled/wiki-summary/icon.svg +4 -0
  1146. octop/infra/agents/plugins/bundled/wiki-summary/main.py +83 -0
  1147. octop/infra/agents/plugins/bundled/wiki-summary/plugin.yaml +13 -0
  1148. octop/infra/agents/plugins/bundled/wiki-summary/ui/index.js +39 -0
  1149. octop/infra/agents/plugins/bundled/wiki-summary/ui/manifest.json +3 -0
  1150. octop/infra/agents/plugins/legacy_imports.py +87 -0
  1151. octop/infra/agents/plugins/manager.py +809 -0
  1152. octop/infra/agents/plugins/plugin_tool_defaults.py +118 -0
  1153. octop/infra/agents/plugins/plugin_tool_names.py +104 -0
  1154. octop/infra/agents/plugins/seed.py +107 -0
  1155. octop/infra/agents/providers/__init__.py +15 -0
  1156. octop/infra/agents/providers/codex_apply.py +67 -0
  1157. octop/infra/agents/providers/codex_oauth.py +298 -0
  1158. octop/infra/agents/providers/harness_factory.py +47 -0
  1159. octop/infra/agents/providers/health.py +205 -0
  1160. octop/infra/agents/providers/model_flags.py +176 -0
  1161. octop/infra/agents/providers/onnx_catalog.py +179 -0
  1162. octop/infra/agents/providers/onnx_download.py +457 -0
  1163. octop/infra/agents/providers/onnx_service.py +664 -0
  1164. octop/infra/agents/providers/opencode_session.py +95 -0
  1165. octop/infra/agents/providers/presets.py +279 -0
  1166. octop/infra/agents/providers/probe.py +341 -0
  1167. octop/infra/agents/providers/reasoning.py +235 -0
  1168. octop/infra/agents/providers/resolved.py +49 -0
  1169. octop/infra/agents/providers/store.py +416 -0
  1170. octop/infra/agents/security/__init__.py +23 -0
  1171. octop/infra/agents/security/hitl_session.py +286 -0
  1172. octop/infra/agents/security/policy_store.py +65 -0
  1173. octop/infra/agents/security/tool_guard_rules.py +60 -0
  1174. octop/infra/agents/settings/__init__.py +29 -0
  1175. octop/infra/agents/settings/acp.py +144 -0
  1176. octop/infra/agents/settings/decision.py +332 -0
  1177. octop/infra/agents/settings/langfuse.py +166 -0
  1178. octop/infra/agents/settings/laya_runtime.py +531 -0
  1179. octop/infra/agents/settings/media_generation.py +628 -0
  1180. octop/infra/agents/settings/profile.py +153 -0
  1181. octop/infra/agents/settings/runtime_limits.py +182 -0
  1182. octop/infra/agents/settings/tool_catalog.py +226 -0
  1183. octop/infra/agents/subagents/catalog.py +557 -0
  1184. octop/infra/agents/subagents/library/README.md +9 -0
  1185. octop/infra/agents/subagents/library/en/academic/academic-anthropologist.md +125 -0
  1186. octop/infra/agents/subagents/library/en/academic/academic-geographer.md +127 -0
  1187. octop/infra/agents/subagents/library/en/academic/academic-historian.md +123 -0
  1188. octop/infra/agents/subagents/library/en/academic/academic-narratologist.md +118 -0
  1189. octop/infra/agents/subagents/library/en/academic/academic-psychologist.md +118 -0
  1190. octop/infra/agents/subagents/library/en/design/design-brand-guardian.md +322 -0
  1191. octop/infra/agents/subagents/library/en/design/design-image-prompt-engineer.md +236 -0
  1192. octop/infra/agents/subagents/library/en/design/design-inclusive-visuals-specialist.md +71 -0
  1193. octop/infra/agents/subagents/library/en/design/design-persona-walkthrough.md +272 -0
  1194. octop/infra/agents/subagents/library/en/design/design-ui-designer.md +383 -0
  1195. octop/infra/agents/subagents/library/en/design/design-ux-architect.md +469 -0
  1196. octop/infra/agents/subagents/library/en/design/design-ux-researcher.md +329 -0
  1197. octop/infra/agents/subagents/library/en/design/design-visual-storyteller.md +149 -0
  1198. octop/infra/agents/subagents/library/en/design/design-whimsy-injector.md +438 -0
  1199. octop/infra/agents/subagents/library/en/divisions.json +21 -0
  1200. octop/infra/agents/subagents/library/en/engineering/engineering-ai-data-remediation-engineer.md +211 -0
  1201. octop/infra/agents/subagents/library/en/engineering/engineering-ai-engineer.md +146 -0
  1202. octop/infra/agents/subagents/library/en/engineering/engineering-autonomous-optimization-architect.md +107 -0
  1203. octop/infra/agents/subagents/library/en/engineering/engineering-backend-architect.md +236 -0
  1204. octop/infra/agents/subagents/library/en/engineering/engineering-cms-developer.md +536 -0
  1205. octop/infra/agents/subagents/library/en/engineering/engineering-code-reviewer.md +76 -0
  1206. octop/infra/agents/subagents/library/en/engineering/engineering-codebase-onboarding-engineer.md +173 -0
  1207. octop/infra/agents/subagents/library/en/engineering/engineering-data-engineer.md +306 -0
  1208. octop/infra/agents/subagents/library/en/engineering/engineering-database-optimizer.md +176 -0
  1209. octop/infra/agents/subagents/library/en/engineering/engineering-devops-automator.md +376 -0
  1210. octop/infra/agents/subagents/library/en/engineering/engineering-drupal-shopping-cart.md +360 -0
  1211. octop/infra/agents/subagents/library/en/engineering/engineering-email-intelligence-engineer.md +353 -0
  1212. octop/infra/agents/subagents/library/en/engineering/engineering-embedded-firmware-engineer.md +173 -0
  1213. octop/infra/agents/subagents/library/en/engineering/engineering-feishu-integration-developer.md +598 -0
  1214. octop/infra/agents/subagents/library/en/engineering/engineering-filament-optimization-specialist.md +283 -0
  1215. octop/infra/agents/subagents/library/en/engineering/engineering-frontend-developer.md +225 -0
  1216. octop/infra/agents/subagents/library/en/engineering/engineering-git-workflow-master.md +84 -0
  1217. octop/infra/agents/subagents/library/en/engineering/engineering-incident-response-commander.md +444 -0
  1218. octop/infra/agents/subagents/library/en/engineering/engineering-it-service-manager.md +561 -0
  1219. octop/infra/agents/subagents/library/en/engineering/engineering-minimal-change-engineer.md +207 -0
  1220. octop/infra/agents/subagents/library/en/engineering/engineering-mobile-app-builder.md +493 -0
  1221. octop/infra/agents/subagents/library/en/engineering/engineering-multi-agent-systems-architect.md +600 -0
  1222. octop/infra/agents/subagents/library/en/engineering/engineering-orgscript-engineer.md +113 -0
  1223. octop/infra/agents/subagents/library/en/engineering/engineering-prompt-engineer.md +202 -0
  1224. octop/infra/agents/subagents/library/en/engineering/engineering-rapid-prototyper.md +462 -0
  1225. octop/infra/agents/subagents/library/en/engineering/engineering-senior-developer.md +176 -0
  1226. octop/infra/agents/subagents/library/en/engineering/engineering-software-architect.md +112 -0
  1227. octop/infra/agents/subagents/library/en/engineering/engineering-solidity-smart-contract-engineer.md +522 -0
  1228. octop/infra/agents/subagents/library/en/engineering/engineering-sre.md +90 -0
  1229. octop/infra/agents/subagents/library/en/engineering/engineering-technical-writer.md +393 -0
  1230. octop/infra/agents/subagents/library/en/engineering/engineering-voice-ai-integration-engineer.md +561 -0
  1231. octop/infra/agents/subagents/library/en/engineering/engineering-wechat-mini-program-developer.md +350 -0
  1232. octop/infra/agents/subagents/library/en/engineering/engineering-wordpress-shopping-cart.md +346 -0
  1233. octop/infra/agents/subagents/library/en/finance/finance-bookkeeper-controller.md +260 -0
  1234. octop/infra/agents/subagents/library/en/finance/finance-financial-analyst.md +234 -0
  1235. octop/infra/agents/subagents/library/en/finance/finance-fpa-analyst.md +263 -0
  1236. octop/infra/agents/subagents/library/en/finance/finance-investment-researcher.md +272 -0
  1237. octop/infra/agents/subagents/library/en/finance/finance-tax-strategist.md +239 -0
  1238. octop/infra/agents/subagents/library/en/game-development/game-audio-engineer.md +264 -0
  1239. octop/infra/agents/subagents/library/en/game-development/game-designer.md +167 -0
  1240. octop/infra/agents/subagents/library/en/game-development/level-designer.md +208 -0
  1241. octop/infra/agents/subagents/library/en/game-development/narrative-designer.md +243 -0
  1242. octop/infra/agents/subagents/library/en/game-development/technical-artist.md +229 -0
  1243. octop/infra/agents/subagents/library/en/gis/gis-3d-scene-developer.md +111 -0
  1244. octop/infra/agents/subagents/library/en/gis/gis-analyst.md +91 -0
  1245. octop/infra/agents/subagents/library/en/gis/gis-bim-specialist.md +108 -0
  1246. octop/infra/agents/subagents/library/en/gis/gis-cartography-designer.md +150 -0
  1247. octop/infra/agents/subagents/library/en/gis/gis-drone-reality-mapping.md +120 -0
  1248. octop/infra/agents/subagents/library/en/gis/gis-geoai-ml-engineer.md +105 -0
  1249. octop/infra/agents/subagents/library/en/gis/gis-geoprocessing-specialist.md +97 -0
  1250. octop/infra/agents/subagents/library/en/gis/gis-qa-engineer.md +133 -0
  1251. octop/infra/agents/subagents/library/en/gis/gis-solution-engineer.md +101 -0
  1252. octop/infra/agents/subagents/library/en/gis/gis-spatial-data-engineer.md +97 -0
  1253. octop/infra/agents/subagents/library/en/gis/gis-spatial-data-scientist.md +111 -0
  1254. octop/infra/agents/subagents/library/en/gis/gis-technical-consultant.md +86 -0
  1255. octop/infra/agents/subagents/library/en/gis/gis-web-gis-developer.md +108 -0
  1256. octop/infra/agents/subagents/library/en/marketing/marketing-aeo-foundations.md +264 -0
  1257. octop/infra/agents/subagents/library/en/marketing/marketing-agentic-search-optimizer.md +311 -0
  1258. octop/infra/agents/subagents/library/en/marketing/marketing-ai-citation-strategist.md +170 -0
  1259. octop/infra/agents/subagents/library/en/marketing/marketing-app-store-optimizer.md +321 -0
  1260. octop/infra/agents/subagents/library/en/marketing/marketing-baidu-seo-specialist.md +226 -0
  1261. octop/infra/agents/subagents/library/en/marketing/marketing-bilibili-content-strategist.md +199 -0
  1262. octop/infra/agents/subagents/library/en/marketing/marketing-book-co-author.md +110 -0
  1263. octop/infra/agents/subagents/library/en/marketing/marketing-carousel-growth-engine.md +199 -0
  1264. octop/infra/agents/subagents/library/en/marketing/marketing-china-ecommerce-operator.md +283 -0
  1265. octop/infra/agents/subagents/library/en/marketing/marketing-china-market-localization-strategist.md +283 -0
  1266. octop/infra/agents/subagents/library/en/marketing/marketing-content-creator.md +54 -0
  1267. octop/infra/agents/subagents/library/en/marketing/marketing-cross-border-ecommerce.md +259 -0
  1268. octop/infra/agents/subagents/library/en/marketing/marketing-douyin-strategist.md +149 -0
  1269. octop/infra/agents/subagents/library/en/marketing/marketing-email-strategist.md +249 -0
  1270. octop/infra/agents/subagents/library/en/marketing/marketing-global-podcast-strategist.md +206 -0
  1271. octop/infra/agents/subagents/library/en/marketing/marketing-growth-hacker.md +54 -0
  1272. octop/infra/agents/subagents/library/en/marketing/marketing-instagram-curator.md +113 -0
  1273. octop/infra/agents/subagents/library/en/marketing/marketing-kuaishou-strategist.md +223 -0
  1274. octop/infra/agents/subagents/library/en/marketing/marketing-linkedin-content-creator.md +214 -0
  1275. octop/infra/agents/subagents/library/en/marketing/marketing-livestream-commerce-coach.md +305 -0
  1276. octop/infra/agents/subagents/library/en/marketing/marketing-multi-platform-publisher.md +217 -0
  1277. octop/infra/agents/subagents/library/en/marketing/marketing-podcast-strategist.md +277 -0
  1278. octop/infra/agents/subagents/library/en/marketing/marketing-pr-communications-manager.md +473 -0
  1279. octop/infra/agents/subagents/library/en/marketing/marketing-private-domain-operator.md +308 -0
  1280. octop/infra/agents/subagents/library/en/marketing/marketing-reddit-community-builder.md +123 -0
  1281. octop/infra/agents/subagents/library/en/marketing/marketing-seo-specialist.md +321 -0
  1282. octop/infra/agents/subagents/library/en/marketing/marketing-short-video-editing-coach.md +412 -0
  1283. octop/infra/agents/subagents/library/en/marketing/marketing-social-media-strategist.md +125 -0
  1284. octop/infra/agents/subagents/library/en/marketing/marketing-tiktok-strategist.md +125 -0
  1285. octop/infra/agents/subagents/library/en/marketing/marketing-twitter-engager.md +126 -0
  1286. octop/infra/agents/subagents/library/en/marketing/marketing-video-optimization-specialist.md +119 -0
  1287. octop/infra/agents/subagents/library/en/marketing/marketing-wechat-official-account.md +145 -0
  1288. octop/infra/agents/subagents/library/en/marketing/marketing-weibo-strategist.md +240 -0
  1289. octop/infra/agents/subagents/library/en/marketing/marketing-x-twitter-intelligence-analyst.md +161 -0
  1290. octop/infra/agents/subagents/library/en/marketing/marketing-xiaohongshu-specialist.md +138 -0
  1291. octop/infra/agents/subagents/library/en/marketing/marketing-zhihu-strategist.md +162 -0
  1292. octop/infra/agents/subagents/library/en/paid-media/paid-media-auditor.md +71 -0
  1293. octop/infra/agents/subagents/library/en/paid-media/paid-media-creative-strategist.md +71 -0
  1294. octop/infra/agents/subagents/library/en/paid-media/paid-media-paid-social-strategist.md +71 -0
  1295. octop/infra/agents/subagents/library/en/paid-media/paid-media-ppc-strategist.md +71 -0
  1296. octop/infra/agents/subagents/library/en/paid-media/paid-media-programmatic-buyer.md +71 -0
  1297. octop/infra/agents/subagents/library/en/paid-media/paid-media-search-query-analyst.md +71 -0
  1298. octop/infra/agents/subagents/library/en/paid-media/paid-media-tracking-specialist.md +71 -0
  1299. octop/infra/agents/subagents/library/en/product/product-behavioral-nudge-engine.md +80 -0
  1300. octop/infra/agents/subagents/library/en/product/product-feedback-synthesizer.md +119 -0
  1301. octop/infra/agents/subagents/library/en/product/product-manager.md +469 -0
  1302. octop/infra/agents/subagents/library/en/product/product-sprint-prioritizer.md +154 -0
  1303. octop/infra/agents/subagents/library/en/product/product-trend-researcher.md +159 -0
  1304. octop/infra/agents/subagents/library/en/project-management/project-management-experiment-tracker.md +198 -0
  1305. octop/infra/agents/subagents/library/en/project-management/project-management-jira-workflow-steward.md +230 -0
  1306. octop/infra/agents/subagents/library/en/project-management/project-management-meeting-notes-specialist.md +95 -0
  1307. octop/infra/agents/subagents/library/en/project-management/project-management-project-shepherd.md +194 -0
  1308. octop/infra/agents/subagents/library/en/project-management/project-management-studio-operations.md +200 -0
  1309. octop/infra/agents/subagents/library/en/project-management/project-management-studio-producer.md +203 -0
  1310. octop/infra/agents/subagents/library/en/project-management/project-manager-senior.md +135 -0
  1311. octop/infra/agents/subagents/library/en/sales/sales-account-strategist.md +227 -0
  1312. octop/infra/agents/subagents/library/en/sales/sales-coach.md +271 -0
  1313. octop/infra/agents/subagents/library/en/sales/sales-deal-strategist.md +180 -0
  1314. octop/infra/agents/subagents/library/en/sales/sales-discovery-coach.md +225 -0
  1315. octop/infra/agents/subagents/library/en/sales/sales-engineer.md +182 -0
  1316. octop/infra/agents/subagents/library/en/sales/sales-offer-lead-gen-strategist.md +257 -0
  1317. octop/infra/agents/subagents/library/en/sales/sales-outbound-strategist.md +201 -0
  1318. octop/infra/agents/subagents/library/en/sales/sales-pipeline-analyst.md +267 -0
  1319. octop/infra/agents/subagents/library/en/sales/sales-proposal-strategist.md +217 -0
  1320. octop/infra/agents/subagents/library/en/security/security-appsec-engineer.md +491 -0
  1321. octop/infra/agents/subagents/library/en/security/security-architect.md +304 -0
  1322. octop/infra/agents/subagents/library/en/security/security-blockchain-security-auditor.md +463 -0
  1323. octop/infra/agents/subagents/library/en/security/security-cloud-security-architect.md +523 -0
  1324. octop/infra/agents/subagents/library/en/security/security-compliance-auditor.md +158 -0
  1325. octop/infra/agents/subagents/library/en/security/security-incident-responder.md +437 -0
  1326. octop/infra/agents/subagents/library/en/security/security-penetration-tester.md +399 -0
  1327. octop/infra/agents/subagents/library/en/security/security-senior-secops.md +750 -0
  1328. octop/infra/agents/subagents/library/en/security/security-threat-detection-engineer.md +534 -0
  1329. octop/infra/agents/subagents/library/en/security/security-threat-intelligence-analyst.md +644 -0
  1330. octop/infra/agents/subagents/library/en/spatial-computing/macos-spatial-metal-engineer.md +337 -0
  1331. octop/infra/agents/subagents/library/en/spatial-computing/terminal-integration-specialist.md +70 -0
  1332. octop/infra/agents/subagents/library/en/spatial-computing/visionos-spatial-engineer.md +54 -0
  1333. octop/infra/agents/subagents/library/en/spatial-computing/xr-cockpit-interaction-specialist.md +32 -0
  1334. octop/infra/agents/subagents/library/en/spatial-computing/xr-immersive-developer.md +32 -0
  1335. octop/infra/agents/subagents/library/en/spatial-computing/xr-interface-architect.md +32 -0
  1336. octop/infra/agents/subagents/library/en/specialized/accounts-payable-agent.md +185 -0
  1337. octop/infra/agents/subagents/library/en/specialized/agentic-identity-trust.md +387 -0
  1338. octop/infra/agents/subagents/library/en/specialized/agents-orchestrator.md +367 -0
  1339. octop/infra/agents/subagents/library/en/specialized/automation-governance-architect.md +216 -0
  1340. octop/infra/agents/subagents/library/en/specialized/business-strategist.md +488 -0
  1341. octop/infra/agents/subagents/library/en/specialized/change-management-consultant.md +497 -0
  1342. octop/infra/agents/subagents/library/en/specialized/chief-financial-officer.md +388 -0
  1343. octop/infra/agents/subagents/library/en/specialized/corporate-training-designer.md +192 -0
  1344. octop/infra/agents/subagents/library/en/specialized/customer-service.md +398 -0
  1345. octop/infra/agents/subagents/library/en/specialized/customer-success-manager.md +460 -0
  1346. octop/infra/agents/subagents/library/en/specialized/data-consolidation-agent.md +60 -0
  1347. octop/infra/agents/subagents/library/en/specialized/data-privacy-officer.md +412 -0
  1348. octop/infra/agents/subagents/library/en/specialized/esg-sustainability-officer.md +396 -0
  1349. octop/infra/agents/subagents/library/en/specialized/government-digital-presales-consultant.md +363 -0
  1350. octop/infra/agents/subagents/library/en/specialized/grant-writer.md +511 -0
  1351. octop/infra/agents/subagents/library/en/specialized/healthcare-customer-service.md +389 -0
  1352. octop/infra/agents/subagents/library/en/specialized/healthcare-marketing-compliance.md +395 -0
  1353. octop/infra/agents/subagents/library/en/specialized/hospitality-guest-services.md +603 -0
  1354. octop/infra/agents/subagents/library/en/specialized/hr-onboarding.md +451 -0
  1355. octop/infra/agents/subagents/library/en/specialized/identity-graph-operator.md +260 -0
  1356. octop/infra/agents/subagents/library/en/specialized/language-translator.md +264 -0
  1357. octop/infra/agents/subagents/library/en/specialized/legal-billing-time-tracking.md +569 -0
  1358. octop/infra/agents/subagents/library/en/specialized/legal-client-intake.md +492 -0
  1359. octop/infra/agents/subagents/library/en/specialized/legal-document-review.md +454 -0
  1360. octop/infra/agents/subagents/library/en/specialized/loan-officer-assistant.md +555 -0
  1361. octop/infra/agents/subagents/library/en/specialized/lsp-index-engineer.md +314 -0
  1362. octop/infra/agents/subagents/library/en/specialized/ma-integration-manager.md +427 -0
  1363. octop/infra/agents/subagents/library/en/specialized/medical-billing-coding-specialist.md +491 -0
  1364. octop/infra/agents/subagents/library/en/specialized/operations-manager.md +399 -0
  1365. octop/infra/agents/subagents/library/en/specialized/organizational-psychologist.md +391 -0
  1366. octop/infra/agents/subagents/library/en/specialized/personal-growth-mentor.md +159 -0
  1367. octop/infra/agents/subagents/library/en/specialized/real-estate-buyer-seller.md +596 -0
  1368. octop/infra/agents/subagents/library/en/specialized/recruitment-specialist.md +509 -0
  1369. octop/infra/agents/subagents/library/en/specialized/report-distribution-agent.md +65 -0
  1370. octop/infra/agents/subagents/library/en/specialized/retail-customer-returns.md +566 -0
  1371. octop/infra/agents/subagents/library/en/specialized/sales-data-extraction-agent.md +67 -0
  1372. octop/infra/agents/subagents/library/en/specialized/sales-outreach.md +425 -0
  1373. octop/infra/agents/subagents/library/en/specialized/specialized-chief-of-staff.md +279 -0
  1374. octop/infra/agents/subagents/library/en/specialized/specialized-civil-engineer.md +356 -0
  1375. octop/infra/agents/subagents/library/en/specialized/specialized-cultural-intelligence-strategist.md +88 -0
  1376. octop/infra/agents/subagents/library/en/specialized/specialized-developer-advocate.md +317 -0
  1377. octop/infra/agents/subagents/library/en/specialized/specialized-document-generator.md +55 -0
  1378. octop/infra/agents/subagents/library/en/specialized/specialized-french-consulting-market.md +192 -0
  1379. octop/infra/agents/subagents/library/en/specialized/specialized-korean-business-navigator.md +216 -0
  1380. octop/infra/agents/subagents/library/en/specialized/specialized-mcp-builder.md +248 -0
  1381. octop/infra/agents/subagents/library/en/specialized/specialized-model-qa.md +488 -0
  1382. octop/infra/agents/subagents/library/en/specialized/specialized-pricing-analyst.md +243 -0
  1383. octop/infra/agents/subagents/library/en/specialized/specialized-salesforce-architect.md +180 -0
  1384. octop/infra/agents/subagents/library/en/specialized/specialized-strategy-duel-agent.md +130 -0
  1385. octop/infra/agents/subagents/library/en/specialized/specialized-workflow-architect.md +597 -0
  1386. octop/infra/agents/subagents/library/en/specialized/study-abroad-advisor.md +282 -0
  1387. octop/infra/agents/subagents/library/en/specialized/supply-chain-strategist.md +582 -0
  1388. octop/infra/agents/subagents/library/en/specialized/zk-steward.md +211 -0
  1389. octop/infra/agents/subagents/library/en/support/support-analytics-reporter.md +365 -0
  1390. octop/infra/agents/subagents/library/en/support/support-executive-summary-generator.md +212 -0
  1391. octop/infra/agents/subagents/library/en/support/support-finance-tracker.md +442 -0
  1392. octop/infra/agents/subagents/library/en/support/support-infrastructure-maintainer.md +618 -0
  1393. octop/infra/agents/subagents/library/en/support/support-legal-compliance-checker.md +588 -0
  1394. octop/infra/agents/subagents/library/en/support/support-support-responder.md +585 -0
  1395. octop/infra/agents/subagents/library/en/testing/testing-accessibility-auditor.md +316 -0
  1396. octop/infra/agents/subagents/library/en/testing/testing-api-tester.md +306 -0
  1397. octop/infra/agents/subagents/library/en/testing/testing-evidence-collector.md +210 -0
  1398. octop/infra/agents/subagents/library/en/testing/testing-performance-benchmarker.md +268 -0
  1399. octop/infra/agents/subagents/library/en/testing/testing-reality-checker.md +236 -0
  1400. octop/infra/agents/subagents/library/en/testing/testing-test-results-analyzer.md +305 -0
  1401. octop/infra/agents/subagents/library/en/testing/testing-tool-evaluator.md +394 -0
  1402. octop/infra/agents/subagents/library/en/testing/testing-workflow-optimizer.md +450 -0
  1403. octop/infra/agents/subagents/library/zh/academic/academic-anthropologist.md +125 -0
  1404. octop/infra/agents/subagents/library/zh/academic/academic-geographer.md +127 -0
  1405. octop/infra/agents/subagents/library/zh/academic/academic-historian.md +124 -0
  1406. octop/infra/agents/subagents/library/zh/academic/academic-narratologist.md +118 -0
  1407. octop/infra/agents/subagents/library/zh/academic/academic-psychologist.md +118 -0
  1408. octop/infra/agents/subagents/library/zh/academic/academic-study-planner.md +262 -0
  1409. octop/infra/agents/subagents/library/zh/design/design-brand-guardian.md +322 -0
  1410. octop/infra/agents/subagents/library/zh/design/design-image-prompt-engineer.md +236 -0
  1411. octop/infra/agents/subagents/library/zh/design/design-inclusive-visuals-specialist.md +78 -0
  1412. octop/infra/agents/subagents/library/zh/design/design-persona-walkthrough.md +266 -0
  1413. octop/infra/agents/subagents/library/zh/design/design-ui-designer.md +383 -0
  1414. octop/infra/agents/subagents/library/zh/design/design-ux-architect.md +470 -0
  1415. octop/infra/agents/subagents/library/zh/design/design-ux-researcher.md +329 -0
  1416. octop/infra/agents/subagents/library/zh/design/design-visual-storyteller.md +155 -0
  1417. octop/infra/agents/subagents/library/zh/design/design-whimsy-injector.md +435 -0
  1418. octop/infra/agents/subagents/library/zh/divisions.json +100 -0
  1419. octop/infra/agents/subagents/library/zh/engineering/engineering-ai-data-remediation-engineer.md +210 -0
  1420. octop/infra/agents/subagents/library/zh/engineering/engineering-ai-engineer.md +146 -0
  1421. octop/infra/agents/subagents/library/zh/engineering/engineering-autonomous-optimization-architect.md +107 -0
  1422. octop/infra/agents/subagents/library/zh/engineering/engineering-backend-architect.md +219 -0
  1423. octop/infra/agents/subagents/library/zh/engineering/engineering-cms-developer.md +261 -0
  1424. octop/infra/agents/subagents/library/zh/engineering/engineering-code-reviewer.md +76 -0
  1425. octop/infra/agents/subagents/library/zh/engineering/engineering-codebase-onboarding-engineer.md +173 -0
  1426. octop/infra/agents/subagents/library/zh/engineering/engineering-data-engineer.md +306 -0
  1427. octop/infra/agents/subagents/library/zh/engineering/engineering-database-optimizer.md +176 -0
  1428. octop/infra/agents/subagents/library/zh/engineering/engineering-devops-automator.md +376 -0
  1429. octop/infra/agents/subagents/library/zh/engineering/engineering-dingtalk-integration-developer.md +574 -0
  1430. octop/infra/agents/subagents/library/zh/engineering/engineering-drupal-shopping-cart.md +230 -0
  1431. octop/infra/agents/subagents/library/zh/engineering/engineering-email-intelligence-engineer.md +181 -0
  1432. octop/infra/agents/subagents/library/zh/engineering/engineering-embedded-firmware-engineer.md +163 -0
  1433. octop/infra/agents/subagents/library/zh/engineering/engineering-embedded-linux-driver-engineer.md +255 -0
  1434. octop/infra/agents/subagents/library/zh/engineering/engineering-feishu-integration-developer.md +178 -0
  1435. octop/infra/agents/subagents/library/zh/engineering/engineering-filament-optimization-specialist.md +197 -0
  1436. octop/infra/agents/subagents/library/zh/engineering/engineering-fpga-digital-design-engineer.md +227 -0
  1437. octop/infra/agents/subagents/library/zh/engineering/engineering-frontend-developer.md +68 -0
  1438. octop/infra/agents/subagents/library/zh/engineering/engineering-git-workflow-master.md +93 -0
  1439. octop/infra/agents/subagents/library/zh/engineering/engineering-incident-response-commander.md +98 -0
  1440. octop/infra/agents/subagents/library/zh/engineering/engineering-iot-solution-architect.md +220 -0
  1441. octop/infra/agents/subagents/library/zh/engineering/engineering-it-service-manager.md +95 -0
  1442. octop/infra/agents/subagents/library/zh/engineering/engineering-mechanical-design-engineer.md +311 -0
  1443. octop/infra/agents/subagents/library/zh/engineering/engineering-minimal-change-engineer.md +142 -0
  1444. octop/infra/agents/subagents/library/zh/engineering/engineering-mobile-app-builder.md +288 -0
  1445. octop/infra/agents/subagents/library/zh/engineering/engineering-multi-agent-systems-architect.md +600 -0
  1446. octop/infra/agents/subagents/library/zh/engineering/engineering-network-engineer-china.md +162 -0
  1447. octop/infra/agents/subagents/library/zh/engineering/engineering-orgscript-engineer.md +124 -0
  1448. octop/infra/agents/subagents/library/zh/engineering/engineering-pc-host-engineer.md +231 -0
  1449. octop/infra/agents/subagents/library/zh/engineering/engineering-prompt-engineer.md +205 -0
  1450. octop/infra/agents/subagents/library/zh/engineering/engineering-rapid-prototyper.md +462 -0
  1451. octop/infra/agents/subagents/library/zh/engineering/engineering-security-engineer.md +303 -0
  1452. octop/infra/agents/subagents/library/zh/engineering/engineering-senior-developer.md +176 -0
  1453. octop/infra/agents/subagents/library/zh/engineering/engineering-software-architect.md +112 -0
  1454. octop/infra/agents/subagents/library/zh/engineering/engineering-solidity-smart-contract-engineer.md +522 -0
  1455. octop/infra/agents/subagents/library/zh/engineering/engineering-sre.md +90 -0
  1456. octop/infra/agents/subagents/library/zh/engineering/engineering-technical-writer.md +317 -0
  1457. octop/infra/agents/subagents/library/zh/engineering/engineering-threat-detection-engineer.md +553 -0
  1458. octop/infra/agents/subagents/library/zh/engineering/engineering-voice-ai-integration-engineer.md +562 -0
  1459. octop/infra/agents/subagents/library/zh/engineering/engineering-wechat-mini-program-developer.md +350 -0
  1460. octop/infra/agents/subagents/library/zh/engineering/engineering-wordpress-shopping-cart.md +346 -0
  1461. octop/infra/agents/subagents/library/zh/finance/finance-bookkeeper-controller.md +130 -0
  1462. octop/infra/agents/subagents/library/zh/finance/finance-financial-analyst.md +119 -0
  1463. octop/infra/agents/subagents/library/zh/finance/finance-financial-forecaster.md +213 -0
  1464. octop/infra/agents/subagents/library/zh/finance/finance-fpa-analyst.md +118 -0
  1465. octop/infra/agents/subagents/library/zh/finance/finance-fraud-detector.md +241 -0
  1466. octop/infra/agents/subagents/library/zh/finance/finance-hk-stock-compliance-reviewer.md +316 -0
  1467. octop/infra/agents/subagents/library/zh/finance/finance-investment-researcher.md +121 -0
  1468. octop/infra/agents/subagents/library/zh/finance/finance-invoice-manager.md +242 -0
  1469. octop/infra/agents/subagents/library/zh/finance/finance-tax-strategist.md +235 -0
  1470. octop/infra/agents/subagents/library/zh/game-development/blender-addon-engineer.md +233 -0
  1471. octop/infra/agents/subagents/library/zh/game-development/game-audio-engineer.md +264 -0
  1472. octop/infra/agents/subagents/library/zh/game-development/game-designer.md +167 -0
  1473. octop/infra/agents/subagents/library/zh/game-development/godot-gameplay-scripter.md +335 -0
  1474. octop/infra/agents/subagents/library/zh/game-development/godot-multiplayer-engineer.md +296 -0
  1475. octop/infra/agents/subagents/library/zh/game-development/godot-shader-developer.md +267 -0
  1476. octop/infra/agents/subagents/library/zh/game-development/level-designer.md +208 -0
  1477. octop/infra/agents/subagents/library/zh/game-development/narrative-designer.md +243 -0
  1478. octop/infra/agents/subagents/library/zh/game-development/roblox-avatar-creator.md +298 -0
  1479. octop/infra/agents/subagents/library/zh/game-development/roblox-experience-designer.md +306 -0
  1480. octop/infra/agents/subagents/library/zh/game-development/roblox-systems-scripter.md +325 -0
  1481. octop/infra/agents/subagents/library/zh/game-development/technical-artist.md +229 -0
  1482. octop/infra/agents/subagents/library/zh/game-development/unity-architect.md +272 -0
  1483. octop/infra/agents/subagents/library/zh/game-development/unity-editor-tool-developer.md +300 -0
  1484. octop/infra/agents/subagents/library/zh/game-development/unity-multiplayer-engineer.md +238 -0
  1485. octop/infra/agents/subagents/library/zh/game-development/unity-shader-graph-artist.md +270 -0
  1486. octop/infra/agents/subagents/library/zh/game-development/unreal-multiplayer-architect.md +314 -0
  1487. octop/infra/agents/subagents/library/zh/game-development/unreal-systems-engineer.md +311 -0
  1488. octop/infra/agents/subagents/library/zh/game-development/unreal-technical-artist.md +256 -0
  1489. octop/infra/agents/subagents/library/zh/game-development/unreal-world-builder.md +274 -0
  1490. octop/infra/agents/subagents/library/zh/gis/gis-3d-scene-developer.md +111 -0
  1491. octop/infra/agents/subagents/library/zh/gis/gis-analyst.md +91 -0
  1492. octop/infra/agents/subagents/library/zh/gis/gis-bim-specialist.md +107 -0
  1493. octop/infra/agents/subagents/library/zh/gis/gis-cartography-designer.md +150 -0
  1494. octop/infra/agents/subagents/library/zh/gis/gis-drone-reality-mapping.md +120 -0
  1495. octop/infra/agents/subagents/library/zh/gis/gis-geoai-ml-engineer.md +105 -0
  1496. octop/infra/agents/subagents/library/zh/gis/gis-geoprocessing-specialist.md +97 -0
  1497. octop/infra/agents/subagents/library/zh/gis/gis-qa-engineer.md +133 -0
  1498. octop/infra/agents/subagents/library/zh/gis/gis-solution-engineer.md +100 -0
  1499. octop/infra/agents/subagents/library/zh/gis/gis-spatial-data-engineer.md +97 -0
  1500. octop/infra/agents/subagents/library/zh/gis/gis-spatial-data-scientist.md +111 -0
  1501. octop/infra/agents/subagents/library/zh/gis/gis-technical-consultant.md +85 -0
  1502. octop/infra/agents/subagents/library/zh/gis/gis-web-gis-developer.md +107 -0
  1503. octop/infra/agents/subagents/library/zh/hr/hr-performance-reviewer.md +248 -0
  1504. octop/infra/agents/subagents/library/zh/hr/hr-recruiter.md +232 -0
  1505. octop/infra/agents/subagents/library/zh/legal/legal-contract-reviewer.md +240 -0
  1506. octop/infra/agents/subagents/library/zh/legal/legal-policy-writer.md +308 -0
  1507. octop/infra/agents/subagents/library/zh/marketing/marketing-aeo-foundations.md +261 -0
  1508. octop/infra/agents/subagents/library/zh/marketing/marketing-agentic-search-optimizer.md +313 -0
  1509. octop/infra/agents/subagents/library/zh/marketing/marketing-ai-citation-strategist.md +170 -0
  1510. octop/infra/agents/subagents/library/zh/marketing/marketing-app-store-optimizer.md +310 -0
  1511. octop/infra/agents/subagents/library/zh/marketing/marketing-baidu-seo-specialist.md +226 -0
  1512. octop/infra/agents/subagents/library/zh/marketing/marketing-bilibili-content-strategist.md +199 -0
  1513. octop/infra/agents/subagents/library/zh/marketing/marketing-bilibili-strategist.md +194 -0
  1514. octop/infra/agents/subagents/library/zh/marketing/marketing-book-co-author.md +108 -0
  1515. octop/infra/agents/subagents/library/zh/marketing/marketing-carousel-growth-engine.md +196 -0
  1516. octop/infra/agents/subagents/library/zh/marketing/marketing-china-ecommerce-operator.md +283 -0
  1517. octop/infra/agents/subagents/library/zh/marketing/marketing-china-market-localization-strategist.md +283 -0
  1518. octop/infra/agents/subagents/library/zh/marketing/marketing-content-creator.md +54 -0
  1519. octop/infra/agents/subagents/library/zh/marketing/marketing-cross-border-ecommerce.md +259 -0
  1520. octop/infra/agents/subagents/library/zh/marketing/marketing-daily-news-briefing.md +303 -0
  1521. octop/infra/agents/subagents/library/zh/marketing/marketing-douyin-strategist.md +150 -0
  1522. octop/infra/agents/subagents/library/zh/marketing/marketing-ecommerce-operator.md +216 -0
  1523. octop/infra/agents/subagents/library/zh/marketing/marketing-email-strategist.md +249 -0
  1524. octop/infra/agents/subagents/library/zh/marketing/marketing-global-podcast-strategist.md +199 -0
  1525. octop/infra/agents/subagents/library/zh/marketing/marketing-growth-hacker.md +54 -0
  1526. octop/infra/agents/subagents/library/zh/marketing/marketing-instagram-curator.md +112 -0
  1527. octop/infra/agents/subagents/library/zh/marketing/marketing-knowledge-commerce-strategist.md +384 -0
  1528. octop/infra/agents/subagents/library/zh/marketing/marketing-kuaishou-strategist.md +223 -0
  1529. octop/infra/agents/subagents/library/zh/marketing/marketing-linkedin-content-creator.md +211 -0
  1530. octop/infra/agents/subagents/library/zh/marketing/marketing-livestream-commerce-coach.md +301 -0
  1531. octop/infra/agents/subagents/library/zh/marketing/marketing-multi-platform-publisher.md +215 -0
  1532. octop/infra/agents/subagents/library/zh/marketing/marketing-podcast-strategist.md +276 -0
  1533. octop/infra/agents/subagents/library/zh/marketing/marketing-pr-communications-manager.md +461 -0
  1534. octop/infra/agents/subagents/library/zh/marketing/marketing-private-domain-operator.md +336 -0
  1535. octop/infra/agents/subagents/library/zh/marketing/marketing-reddit-community-builder.md +122 -0
  1536. octop/infra/agents/subagents/library/zh/marketing/marketing-seo-specialist.md +321 -0
  1537. octop/infra/agents/subagents/library/zh/marketing/marketing-short-video-editing-coach.md +438 -0
  1538. octop/infra/agents/subagents/library/zh/marketing/marketing-social-media-strategist.md +125 -0
  1539. octop/infra/agents/subagents/library/zh/marketing/marketing-tiktok-strategist.md +124 -0
  1540. octop/infra/agents/subagents/library/zh/marketing/marketing-twitter-engager.md +125 -0
  1541. octop/infra/agents/subagents/library/zh/marketing/marketing-video-optimization-specialist.md +118 -0
  1542. octop/infra/agents/subagents/library/zh/marketing/marketing-wechat-official-account.md +145 -0
  1543. octop/infra/agents/subagents/library/zh/marketing/marketing-wechat-operator.md +156 -0
  1544. octop/infra/agents/subagents/library/zh/marketing/marketing-weibo-strategist.md +240 -0
  1545. octop/infra/agents/subagents/library/zh/marketing/marketing-weixin-channels-strategist.md +297 -0
  1546. octop/infra/agents/subagents/library/zh/marketing/marketing-x-twitter-intelligence-analyst.md +159 -0
  1547. octop/infra/agents/subagents/library/zh/marketing/marketing-xiaohongshu-operator.md +139 -0
  1548. octop/infra/agents/subagents/library/zh/marketing/marketing-xiaohongshu-specialist.md +145 -0
  1549. octop/infra/agents/subagents/library/zh/marketing/marketing-zhihu-strategist.md +171 -0
  1550. octop/infra/agents/subagents/library/zh/paid-media/paid-media-auditor.md +71 -0
  1551. octop/infra/agents/subagents/library/zh/paid-media/paid-media-creative-strategist.md +71 -0
  1552. octop/infra/agents/subagents/library/zh/paid-media/paid-media-paid-social-strategist.md +71 -0
  1553. octop/infra/agents/subagents/library/zh/paid-media/paid-media-ppc-strategist.md +71 -0
  1554. octop/infra/agents/subagents/library/zh/paid-media/paid-media-programmatic-buyer.md +71 -0
  1555. octop/infra/agents/subagents/library/zh/paid-media/paid-media-search-query-analyst.md +71 -0
  1556. octop/infra/agents/subagents/library/zh/paid-media/paid-media-tracking-specialist.md +71 -0
  1557. octop/infra/agents/subagents/library/zh/product/product-behavioral-nudge-engine.md +80 -0
  1558. octop/infra/agents/subagents/library/zh/product/product-feedback-synthesizer.md +119 -0
  1559. octop/infra/agents/subagents/library/zh/product/product-manager.md +470 -0
  1560. octop/infra/agents/subagents/library/zh/product/product-sprint-prioritizer.md +154 -0
  1561. octop/infra/agents/subagents/library/zh/product/product-trend-researcher.md +159 -0
  1562. octop/infra/agents/subagents/library/zh/project-management/project-management-experiment-tracker.md +197 -0
  1563. octop/infra/agents/subagents/library/zh/project-management/project-management-jira-workflow-steward.md +228 -0
  1564. octop/infra/agents/subagents/library/zh/project-management/project-management-meeting-notes-specialist.md +94 -0
  1565. octop/infra/agents/subagents/library/zh/project-management/project-management-project-shepherd.md +193 -0
  1566. octop/infra/agents/subagents/library/zh/project-management/project-management-studio-operations.md +199 -0
  1567. octop/infra/agents/subagents/library/zh/project-management/project-management-studio-producer.md +202 -0
  1568. octop/infra/agents/subagents/library/zh/project-management/project-manager-senior.md +134 -0
  1569. octop/infra/agents/subagents/library/zh/sales/sales-account-strategist.md +223 -0
  1570. octop/infra/agents/subagents/library/zh/sales/sales-coach.md +267 -0
  1571. octop/infra/agents/subagents/library/zh/sales/sales-deal-strategist.md +180 -0
  1572. octop/infra/agents/subagents/library/zh/sales/sales-discovery-coach.md +220 -0
  1573. octop/infra/agents/subagents/library/zh/sales/sales-engineer.md +191 -0
  1574. octop/infra/agents/subagents/library/zh/sales/sales-offer-lead-gen-strategist.md +256 -0
  1575. octop/infra/agents/subagents/library/zh/sales/sales-outbound-strategist.md +200 -0
  1576. octop/infra/agents/subagents/library/zh/sales/sales-pipeline-analyst.md +261 -0
  1577. octop/infra/agents/subagents/library/zh/sales/sales-proposal-strategist.md +217 -0
  1578. octop/infra/agents/subagents/library/zh/security/security-appsec-engineer.md +491 -0
  1579. octop/infra/agents/subagents/library/zh/security/security-architect.md +75 -0
  1580. octop/infra/agents/subagents/library/zh/security/security-blockchain-security-auditor.md +463 -0
  1581. octop/infra/agents/subagents/library/zh/security/security-cloud-security-architect.md +69 -0
  1582. octop/infra/agents/subagents/library/zh/security/security-compliance-auditor.md +54 -0
  1583. octop/infra/agents/subagents/library/zh/security/security-incident-responder.md +436 -0
  1584. octop/infra/agents/subagents/library/zh/security/security-penetration-tester.md +400 -0
  1585. octop/infra/agents/subagents/library/zh/security/security-senior-secops.md +749 -0
  1586. octop/infra/agents/subagents/library/zh/security/security-threat-detection-engineer.md +75 -0
  1587. octop/infra/agents/subagents/library/zh/security/security-threat-intelligence-analyst.md +72 -0
  1588. octop/infra/agents/subagents/library/zh/spatial-computing/macos-spatial-metal-engineer.md +335 -0
  1589. octop/infra/agents/subagents/library/zh/spatial-computing/terminal-integration-specialist.md +70 -0
  1590. octop/infra/agents/subagents/library/zh/spatial-computing/visionos-spatial-engineer.md +54 -0
  1591. octop/infra/agents/subagents/library/zh/spatial-computing/xr-cockpit-interaction-specialist.md +32 -0
  1592. octop/infra/agents/subagents/library/zh/spatial-computing/xr-immersive-developer.md +32 -0
  1593. octop/infra/agents/subagents/library/zh/spatial-computing/xr-interface-architect.md +32 -0
  1594. octop/infra/agents/subagents/library/zh/specialized/accounts-payable-agent.md +184 -0
  1595. octop/infra/agents/subagents/library/zh/specialized/agentic-identity-trust.md +384 -0
  1596. octop/infra/agents/subagents/library/zh/specialized/agents-orchestrator.md +364 -0
  1597. octop/infra/agents/subagents/library/zh/specialized/automation-governance-architect.md +215 -0
  1598. octop/infra/agents/subagents/library/zh/specialized/business-strategist.md +482 -0
  1599. octop/infra/agents/subagents/library/zh/specialized/change-management-consultant.md +489 -0
  1600. octop/infra/agents/subagents/library/zh/specialized/chief-financial-officer.md +382 -0
  1601. octop/infra/agents/subagents/library/zh/specialized/corporate-training-designer.md +189 -0
  1602. octop/infra/agents/subagents/library/zh/specialized/customer-service.md +396 -0
  1603. octop/infra/agents/subagents/library/zh/specialized/customer-success-manager.md +453 -0
  1604. octop/infra/agents/subagents/library/zh/specialized/data-consolidation-agent.md +60 -0
  1605. octop/infra/agents/subagents/library/zh/specialized/data-privacy-officer.md +418 -0
  1606. octop/infra/agents/subagents/library/zh/specialized/esg-sustainability-officer.md +390 -0
  1607. octop/infra/agents/subagents/library/zh/specialized/gaokao-college-advisor.md +333 -0
  1608. octop/infra/agents/subagents/library/zh/specialized/government-digital-presales-consultant.md +360 -0
  1609. octop/infra/agents/subagents/library/zh/specialized/grant-writer.md +504 -0
  1610. octop/infra/agents/subagents/library/zh/specialized/healthcare-customer-service.md +376 -0
  1611. octop/infra/agents/subagents/library/zh/specialized/healthcare-marketing-compliance.md +389 -0
  1612. octop/infra/agents/subagents/library/zh/specialized/hospitality-guest-services.md +571 -0
  1613. octop/infra/agents/subagents/library/zh/specialized/hr-onboarding.md +450 -0
  1614. octop/infra/agents/subagents/library/zh/specialized/identity-graph-operator.md +257 -0
  1615. octop/infra/agents/subagents/library/zh/specialized/language-translator.md +256 -0
  1616. octop/infra/agents/subagents/library/zh/specialized/legal-billing-time-tracking.md +524 -0
  1617. octop/infra/agents/subagents/library/zh/specialized/legal-client-intake.md +462 -0
  1618. octop/infra/agents/subagents/library/zh/specialized/legal-document-review.md +450 -0
  1619. octop/infra/agents/subagents/library/zh/specialized/livestock-archive-auditor.md +135 -0
  1620. octop/infra/agents/subagents/library/zh/specialized/loan-officer-assistant.md +541 -0
  1621. octop/infra/agents/subagents/library/zh/specialized/lsp-index-engineer.md +312 -0
  1622. octop/infra/agents/subagents/library/zh/specialized/ma-integration-manager.md +419 -0
  1623. octop/infra/agents/subagents/library/zh/specialized/medical-billing-coding-specialist.md +484 -0
  1624. octop/infra/agents/subagents/library/zh/specialized/operations-manager.md +393 -0
  1625. octop/infra/agents/subagents/library/zh/specialized/organizational-psychologist.md +346 -0
  1626. octop/infra/agents/subagents/library/zh/specialized/personal-growth-mentor.md +158 -0
  1627. octop/infra/agents/subagents/library/zh/specialized/prompt-engineer.md +176 -0
  1628. octop/infra/agents/subagents/library/zh/specialized/real-estate-buyer-seller.md +587 -0
  1629. octop/infra/agents/subagents/library/zh/specialized/recruitment-specialist.md +509 -0
  1630. octop/infra/agents/subagents/library/zh/specialized/report-distribution-agent.md +65 -0
  1631. octop/infra/agents/subagents/library/zh/specialized/retail-customer-returns.md +545 -0
  1632. octop/infra/agents/subagents/library/zh/specialized/sales-data-extraction-agent.md +67 -0
  1633. octop/infra/agents/subagents/library/zh/specialized/sales-outreach.md +417 -0
  1634. octop/infra/agents/subagents/library/zh/specialized/specialized-ai-policy-writer.md +217 -0
  1635. octop/infra/agents/subagents/library/zh/specialized/specialized-chief-of-staff.md +276 -0
  1636. octop/infra/agents/subagents/library/zh/specialized/specialized-civil-engineer.md +349 -0
  1637. octop/infra/agents/subagents/library/zh/specialized/specialized-cultural-intelligence-strategist.md +87 -0
  1638. octop/infra/agents/subagents/library/zh/specialized/specialized-developer-advocate.md +303 -0
  1639. octop/infra/agents/subagents/library/zh/specialized/specialized-document-generator.md +56 -0
  1640. octop/infra/agents/subagents/library/zh/specialized/specialized-french-consulting-market.md +190 -0
  1641. octop/infra/agents/subagents/library/zh/specialized/specialized-korean-business-navigator.md +214 -0
  1642. octop/infra/agents/subagents/library/zh/specialized/specialized-mcp-builder.md +246 -0
  1643. octop/infra/agents/subagents/library/zh/specialized/specialized-meeting-assistant.md +236 -0
  1644. octop/infra/agents/subagents/library/zh/specialized/specialized-model-qa.md +482 -0
  1645. octop/infra/agents/subagents/library/zh/specialized/specialized-pricing-analyst.md +241 -0
  1646. octop/infra/agents/subagents/library/zh/specialized/specialized-pricing-optimizer.md +254 -0
  1647. octop/infra/agents/subagents/library/zh/specialized/specialized-risk-assessor.md +240 -0
  1648. octop/infra/agents/subagents/library/zh/specialized/specialized-salesforce-architect.md +178 -0
  1649. octop/infra/agents/subagents/library/zh/specialized/specialized-strategy-duel-agent.md +129 -0
  1650. octop/infra/agents/subagents/library/zh/specialized/specialized-workflow-architect.md +593 -0
  1651. octop/infra/agents/subagents/library/zh/specialized/study-abroad-advisor.md +280 -0
  1652. octop/infra/agents/subagents/library/zh/specialized/supply-chain-strategist.md +576 -0
  1653. octop/infra/agents/subagents/library/zh/specialized/technical-translator-agent.md +167 -0
  1654. octop/infra/agents/subagents/library/zh/specialized/zk-steward.md +210 -0
  1655. octop/infra/agents/subagents/library/zh/supply-chain/supply-chain-garment-factory-planning-engineer.md +262 -0
  1656. octop/infra/agents/subagents/library/zh/supply-chain/supply-chain-inventory-forecaster.md +212 -0
  1657. octop/infra/agents/subagents/library/zh/supply-chain/supply-chain-route-optimizer.md +224 -0
  1658. octop/infra/agents/subagents/library/zh/supply-chain/supply-chain-strategist.md +581 -0
  1659. octop/infra/agents/subagents/library/zh/supply-chain/supply-chain-vendor-evaluator.md +232 -0
  1660. octop/infra/agents/subagents/library/zh/support/support-analytics-reporter.md +364 -0
  1661. octop/infra/agents/subagents/library/zh/support/support-executive-summary-generator.md +212 -0
  1662. octop/infra/agents/subagents/library/zh/support/support-finance-tracker.md +441 -0
  1663. octop/infra/agents/subagents/library/zh/support/support-infrastructure-maintainer.md +617 -0
  1664. octop/infra/agents/subagents/library/zh/support/support-legal-compliance-checker.md +587 -0
  1665. octop/infra/agents/subagents/library/zh/support/support-recruitment-specialist.md +508 -0
  1666. octop/infra/agents/subagents/library/zh/support/support-support-responder.md +584 -0
  1667. octop/infra/agents/subagents/library/zh/testing/testing-accessibility-auditor.md +316 -0
  1668. octop/infra/agents/subagents/library/zh/testing/testing-api-tester.md +306 -0
  1669. octop/infra/agents/subagents/library/zh/testing/testing-embedded-qa-engineer.md +258 -0
  1670. octop/infra/agents/subagents/library/zh/testing/testing-evidence-collector.md +210 -0
  1671. octop/infra/agents/subagents/library/zh/testing/testing-performance-benchmarker.md +268 -0
  1672. octop/infra/agents/subagents/library/zh/testing/testing-reality-checker.md +238 -0
  1673. octop/infra/agents/subagents/library/zh/testing/testing-test-results-analyzer.md +305 -0
  1674. octop/infra/agents/subagents/library/zh/testing/testing-tool-evaluator.md +394 -0
  1675. octop/infra/agents/subagents/library/zh/testing/testing-workflow-optimizer.md +450 -0
  1676. octop/infra/agents/teams/__init__.py +41 -0
  1677. octop/infra/agents/teams/jobs.py +77 -0
  1678. octop/infra/agents/teams/service.py +348 -0
  1679. octop/infra/agents/teams/team_manager.py +2384 -0
  1680. octop/infra/agents/teams/template/AGENTS.md +32 -0
  1681. octop/infra/agents/teams/template/MEMORY.md +21 -0
  1682. octop/infra/agents/teams/template/SOUL.md +36 -0
  1683. octop/infra/agents/teams/template/manifest.json +9 -0
  1684. octop/infra/agents/teams/welcome.py +127 -0
  1685. octop/infra/agents/threads/__init__.py +29 -0
  1686. octop/infra/agents/threads/artifact.py +310 -0
  1687. octop/infra/agents/threads/context_breakdown.py +264 -0
  1688. octop/infra/agents/threads/fork.py +289 -0
  1689. octop/infra/agents/workspace/__init__.py +21 -0
  1690. octop/infra/agents/workspace/dir.py +530 -0
  1691. octop/infra/agents/workspace/execute_env.py +138 -0
  1692. octop/infra/auth/__init__.py +1 -0
  1693. octop/infra/auth/captcha/__init__.py +57 -0
  1694. octop/infra/auth/captcha/config.py +85 -0
  1695. octop/infra/auth/captcha/providers.py +425 -0
  1696. octop/infra/auth/captcha/store.py +357 -0
  1697. octop/infra/auth/captcha/verify.py +76 -0
  1698. octop/infra/auth/ldap/__init__.py +5 -0
  1699. octop/infra/auth/ldap/client.py +411 -0
  1700. octop/infra/auth/ldap/config.py +355 -0
  1701. octop/infra/auth/ldap/service.py +312 -0
  1702. octop/infra/auth/ldap/throttle.py +120 -0
  1703. octop/infra/auth/sso/__init__.py +5 -0
  1704. octop/infra/auth/sso/crypto.py +24 -0
  1705. octop/infra/auth/sso/discovery.py +48 -0
  1706. octop/infra/auth/sso/id_token.py +58 -0
  1707. octop/infra/auth/sso/pkce.py +14 -0
  1708. octop/infra/auth/sso/providers/__init__.py +27 -0
  1709. octop/infra/auth/sso/providers/base.py +39 -0
  1710. octop/infra/auth/sso/providers/dingtalk.py +138 -0
  1711. octop/infra/auth/sso/providers/feishu.py +159 -0
  1712. octop/infra/auth/sso/providers/oidc.py +88 -0
  1713. octop/infra/auth/sso/providers/wecom.py +182 -0
  1714. octop/infra/auth/sso/public_base.py +41 -0
  1715. octop/infra/auth/sso/redirect_after.py +17 -0
  1716. octop/infra/auth/sso/service.py +496 -0
  1717. octop/infra/auth/tokens.py +45 -0
  1718. octop/infra/backend/__init__.py +17 -0
  1719. octop/infra/backend/adapter.py +172 -0
  1720. octop/infra/backend/browse.py +312 -0
  1721. octop/infra/backend/compat.py +333 -0
  1722. octop/infra/backend/docker_spec.py +91 -0
  1723. octop/infra/backend/grep_safety.py +362 -0
  1724. octop/infra/backend/opensandbox_deps.py +37 -0
  1725. octop/infra/backend/postgres_spec.py +167 -0
  1726. octop/infra/backend/probe.py +231 -0
  1727. octop/infra/backend/resolver.py +227 -0
  1728. octop/infra/backend/shell_output.py +101 -0
  1729. octop/infra/backend/tree_listing.py +41 -0
  1730. octop/infra/backup/__init__.py +33 -0
  1731. octop/infra/backup/auto.py +290 -0
  1732. octop/infra/backup/chats.py +381 -0
  1733. octop/infra/backup/manifest.py +100 -0
  1734. octop/infra/backup/pg_dump.py +68 -0
  1735. octop/infra/backup/snapshot.py +349 -0
  1736. octop/infra/backup/store.py +249 -0
  1737. octop/infra/backup/system_archive.py +657 -0
  1738. octop/infra/backup/workspace_archive.py +269 -0
  1739. octop/infra/bridge/__init__.py +19 -0
  1740. octop/infra/bridge/crypto.py +28 -0
  1741. octop/infra/bridge/http_tunnel.py +109 -0
  1742. octop/infra/bridge/icons.py +62 -0
  1743. octop/infra/bridge/ids.py +219 -0
  1744. octop/infra/bridge/manager.py +2552 -0
  1745. octop/infra/bridge/peer_auth.py +149 -0
  1746. octop/infra/bridge/peer_turn.py +88 -0
  1747. octop/infra/bridge/transport.py +455 -0
  1748. octop/infra/bridge/tunnel_policy.py +97 -0
  1749. octop/infra/browser/__init__.py +19 -0
  1750. octop/infra/browser/setup.py +531 -0
  1751. octop/infra/connectors/__init__.py +1 -0
  1752. octop/infra/connectors/builder.py +732 -0
  1753. octop/infra/connectors/catalog.json +765 -0
  1754. octop/infra/connectors/catalog.py +316 -0
  1755. octop/infra/connectors/crypto.py +28 -0
  1756. octop/infra/connectors/custom_mcp.py +433 -0
  1757. octop/infra/connectors/default_open.py +57 -0
  1758. octop/infra/connectors/gateway/__init__.py +11 -0
  1759. octop/infra/connectors/gateway/adapters/__init__.py +1 -0
  1760. octop/infra/connectors/gateway/adapters/agently_cli.py +443 -0
  1761. octop/infra/connectors/gateway/adapters/baidu_map.py +113 -0
  1762. octop/infra/connectors/gateway/adapters/ctrip_wendao.py +79 -0
  1763. octop/infra/connectors/gateway/adapters/dingtalk_cli.py +109 -0
  1764. octop/infra/connectors/gateway/adapters/feishu_cli.py +279 -0
  1765. octop/infra/connectors/gateway/adapters/fliggy.py +213 -0
  1766. octop/infra/connectors/gateway/adapters/meituan_travel.py +98 -0
  1767. octop/infra/connectors/gateway/adapters/obsidian_cli.py +475 -0
  1768. octop/infra/connectors/gateway/adapters/qq_mail.py +242 -0
  1769. octop/infra/connectors/gateway/adapters/qq_music.py +145 -0
  1770. octop/infra/connectors/gateway/adapters/tencent_ima.py +508 -0
  1771. octop/infra/connectors/gateway/adapters/tencent_news.py +101 -0
  1772. octop/infra/connectors/gateway/adapters/wechat_reading.py +90 -0
  1773. octop/infra/connectors/gateway/adapters/wecom_cli.py +212 -0
  1774. octop/infra/connectors/gateway/adapters/weknora.py +239 -0
  1775. octop/infra/connectors/gateway/adapters/yuandian.py +221 -0
  1776. octop/infra/connectors/gateway/agently_auth.py +321 -0
  1777. octop/infra/connectors/gateway/agently_watch.py +140 -0
  1778. octop/infra/connectors/gateway/cli_dirs.py +65 -0
  1779. octop/infra/connectors/gateway/cli_fingerprint.py +15 -0
  1780. octop/infra/connectors/gateway/cli_install.py +506 -0
  1781. octop/infra/connectors/gateway/cli_runner.py +96 -0
  1782. octop/infra/connectors/gateway/feishu_creds.py +104 -0
  1783. octop/infra/connectors/gateway/feishu_user_auth.py +223 -0
  1784. octop/infra/connectors/gateway/langchain.py +80 -0
  1785. octop/infra/connectors/gateway/protocol.py +78 -0
  1786. octop/infra/connectors/gateway/registry.py +83 -0
  1787. octop/infra/connectors/gateway/wecom_creds.py +156 -0
  1788. octop/infra/connectors/mail_servers.py +90 -0
  1789. octop/infra/connectors/mcp_tool_cache.py +94 -0
  1790. octop/infra/connectors/oauth/__init__.py +33 -0
  1791. octop/infra/connectors/oauth/builtin.py +36 -0
  1792. octop/infra/connectors/oauth/discovery.py +219 -0
  1793. octop/infra/connectors/oauth/mcp.py +247 -0
  1794. octop/infra/connectors/oauth/pkce.py +18 -0
  1795. octop/infra/connectors/oauth/registry.py +401 -0
  1796. octop/infra/connectors/probe.py +602 -0
  1797. octop/infra/connectors/qcc.py +181 -0
  1798. octop/infra/connectors/service.py +798 -0
  1799. octop/infra/cron/__init__.py +1 -0
  1800. octop/infra/cron/delivery.py +361 -0
  1801. octop/infra/cron/job.py +118 -0
  1802. octop/infra/cron/manager.py +505 -0
  1803. octop/infra/cron/task_type.py +53 -0
  1804. octop/infra/cron/tools.py +267 -0
  1805. octop/infra/cron/trigger.py +140 -0
  1806. octop/infra/db/__init__.py +1 -0
  1807. octop/infra/db/factory.py +44 -0
  1808. octop/infra/db/migrate.py +2110 -0
  1809. octop/infra/db/migrations/001_initial.pg.sql +264 -0
  1810. octop/infra/db/migrations/001_initial.sql +270 -0
  1811. octop/infra/db/migrations/002_cron_mcp_and_skill_packages.pg.sql +21 -0
  1812. octop/infra/db/migrations/002_cron_mcp_and_skill_packages.sql +20 -0
  1813. octop/infra/db/migrations/003_repair_legacy_thread_titles.pg.sql +3 -0
  1814. octop/infra/db/migrations/003_repair_legacy_thread_titles.sql +3 -0
  1815. octop/infra/db/migrations/004_thread_composer_preferences.pg.sql +6 -0
  1816. octop/infra/db/migrations/004_thread_composer_preferences.sql +6 -0
  1817. octop/infra/db/migrations/005_shared_experts_sso_knowledge.pg.sql +100 -0
  1818. octop/infra/db/migrations/005_shared_experts_sso_knowledge.sql +147 -0
  1819. octop/infra/db/migrations/006_user_permissions.pg.sql +3 -0
  1820. octop/infra/db/migrations/006_user_permissions.sql +3 -0
  1821. octop/infra/db/migrations/007_resource_identity_and_profile.pg.sql +124 -0
  1822. octop/infra/db/migrations/007_resource_identity_and_profile.sql +131 -0
  1823. octop/infra/db/migrations/008_usage_cache_tokens.pg.sql +14 -0
  1824. octop/infra/db/migrations/008_usage_cache_tokens.sql +14 -0
  1825. octop/infra/db/migrations/009_user_invites.pg.sql +17 -0
  1826. octop/infra/db/migrations/009_user_invites.sql +17 -0
  1827. octop/infra/db/migrations/010_thread_message_projection.pg.sql +39 -0
  1828. octop/infra/db/migrations/010_thread_message_projection.sql +36 -0
  1829. octop/infra/db/migrations/011_cron_job_names.pg.sql +5 -0
  1830. octop/infra/db/migrations/011_cron_job_names.sql +7 -0
  1831. octop/infra/db/migrations/012_trajectory_events.pg.sql +22 -0
  1832. octop/infra/db/migrations/012_trajectory_events.sql +22 -0
  1833. octop/infra/db/migrations/013_connector_instances.pg.sql +23 -0
  1834. octop/infra/db/migrations/013_connector_instances.sql +52 -0
  1835. octop/infra/db/migrations/014_user_policy.pg.sql +19 -0
  1836. octop/infra/db/migrations/014_user_policy.sql +18 -0
  1837. octop/infra/db/migrations/015_sso_provider_kind.pg.sql +23 -0
  1838. octop/infra/db/migrations/015_sso_provider_kind.sql +23 -0
  1839. octop/infra/db/migrations/016_agent_teams.pg.sql +6 -0
  1840. octop/infra/db/migrations/016_agent_teams.sql +6 -0
  1841. octop/infra/db/migrations/017_thread_conversation_mode.pg.sql +7 -0
  1842. octop/infra/db/migrations/017_thread_conversation_mode.sql +7 -0
  1843. octop/infra/db/migrations/018_user_role.pg.sql +21 -0
  1844. octop/infra/db/migrations/018_user_role.sql +23 -0
  1845. octop/infra/db/migrations/019_bridge_connections.pg.sql +30 -0
  1846. octop/infra/db/migrations/019_bridge_connections.sql +30 -0
  1847. octop/infra/db/migrations/020_skill_copy_policy.pg.sql +5 -0
  1848. octop/infra/db/migrations/020_skill_copy_policy.sql +5 -0
  1849. octop/infra/db/migrations/021_skill_package_download.pg.sql +5 -0
  1850. octop/infra/db/migrations/021_skill_package_download.sql +5 -0
  1851. octop/infra/db/pool.py +176 -0
  1852. octop/infra/db/probe.py +49 -0
  1853. octop/infra/db/rebind.py +150 -0
  1854. octop/infra/db/repos/__init__.py +1 -0
  1855. octop/infra/db/repos/_base.py +81 -0
  1856. octop/infra/db/repos/agents.py +312 -0
  1857. octop/infra/db/repos/audit.py +113 -0
  1858. octop/infra/db/repos/backends.py +154 -0
  1859. octop/infra/db/repos/bridge_connections.py +347 -0
  1860. octop/infra/db/repos/care_push.py +71 -0
  1861. octop/infra/db/repos/channels.py +121 -0
  1862. octop/infra/db/repos/connectors.py +291 -0
  1863. octop/infra/db/repos/cron.py +282 -0
  1864. octop/infra/db/repos/invites.py +240 -0
  1865. octop/infra/db/repos/knowledge.py +508 -0
  1866. octop/infra/db/repos/proactive_care_config.py +127 -0
  1867. octop/infra/db/repos/providers.py +151 -0
  1868. octop/infra/db/repos/published_experts.py +153 -0
  1869. octop/infra/db/repos/secrets.py +41 -0
  1870. octop/infra/db/repos/sessions.py +310 -0
  1871. octop/infra/db/repos/settings.py +38 -0
  1872. octop/infra/db/repos/skill_packages.py +140 -0
  1873. octop/infra/db/repos/sso.py +345 -0
  1874. octop/infra/db/repos/thread_messages.py +317 -0
  1875. octop/infra/db/repos/threads.py +347 -0
  1876. octop/infra/db/repos/trajectory_events.py +194 -0
  1877. octop/infra/db/repos/usage.py +501 -0
  1878. octop/infra/db/repos/user_policies.py +116 -0
  1879. octop/infra/db/repos/user_roles.py +277 -0
  1880. octop/infra/db/repos/users.py +389 -0
  1881. octop/infra/db/repos/voice_providers.py +140 -0
  1882. octop/infra/db/services.py +217 -0
  1883. octop/infra/desktop/__init__.py +5 -0
  1884. octop/infra/desktop/capture.py +266 -0
  1885. octop/infra/desktop/input.py +450 -0
  1886. octop/infra/desktop/scripts/linux/v1.0/check.sh +117 -0
  1887. octop/infra/desktop/scripts/linux/v1.0/install.sh +1150 -0
  1888. octop/infra/desktop/scripts/linux/v1.0/resize.sh +67 -0
  1889. octop/infra/desktop/scripts/linux/v1.0/start-menu.png +0 -0
  1890. octop/infra/desktop/scripts/linux/v1.0/start.sh +44 -0
  1891. octop/infra/desktop/scripts/linux/v1.0/stop.sh +15 -0
  1892. octop/infra/desktop/scripts/linux/v1.0/wallpaper.png +0 -0
  1893. octop/infra/desktop/session.py +129 -0
  1894. octop/infra/desktop/setup.py +1069 -0
  1895. octop/infra/errors.py +357 -0
  1896. octop/infra/gateway/__init__.py +1 -0
  1897. octop/infra/gateway/bot_creators/__init__.py +1 -0
  1898. octop/infra/gateway/bot_creators/feishu_runner.py +123 -0
  1899. octop/infra/gateway/channels/__init__.py +1 -0
  1900. octop/infra/gateway/channels/dingtalk_registration.py +57 -0
  1901. octop/infra/gateway/channels/qr_bind.py +136 -0
  1902. octop/infra/gateway/cli/__init__.py +11 -0
  1903. octop/infra/gateway/cli/cli_channel.py +176 -0
  1904. octop/infra/gateway/cli/events.py +46 -0
  1905. octop/infra/gateway/cli/turn.py +75 -0
  1906. octop/infra/gateway/gateway.py +789 -0
  1907. octop/infra/gateway/history_backfill.py +66 -0
  1908. octop/infra/gateway/hitl/__init__.py +24 -0
  1909. octop/infra/gateway/hitl/coordinator.py +646 -0
  1910. octop/infra/gateway/hitl/format.py +315 -0
  1911. octop/infra/gateway/hitl/store.py +322 -0
  1912. octop/infra/gateway/hitl/stream_compat.py +86 -0
  1913. octop/infra/gateway/media/__init__.py +11 -0
  1914. octop/infra/gateway/media/attachment_hints.py +632 -0
  1915. octop/infra/gateway/media/backend_files.py +573 -0
  1916. octop/infra/gateway/media/constants.py +4 -0
  1917. octop/infra/gateway/media/inbound_store.py +459 -0
  1918. octop/infra/gateway/media/ingress.py +49 -0
  1919. octop/infra/gateway/media/tool_media.py +944 -0
  1920. octop/infra/gateway/plugin_channels.py +223 -0
  1921. octop/infra/gateway/process/__init__.py +31 -0
  1922. octop/infra/gateway/process/agent_resolve.py +40 -0
  1923. octop/infra/gateway/process/channel_thinking.py +32 -0
  1924. octop/infra/gateway/process/harness_request.py +375 -0
  1925. octop/infra/gateway/process/message_keys.py +203 -0
  1926. octop/infra/gateway/process/processor.py +1835 -0
  1927. octop/infra/gateway/process/response_mode.py +202 -0
  1928. octop/infra/gateway/process/stream_project.py +269 -0
  1929. octop/infra/gateway/process/usage_record.py +276 -0
  1930. octop/infra/gateway/slash/__init__.py +18 -0
  1931. octop/infra/gateway/slash/catalog.py +332 -0
  1932. octop/infra/gateway/slash/ctx.py +169 -0
  1933. octop/infra/gateway/slash/dispatcher.py +88 -0
  1934. octop/infra/gateway/slash/formatting.py +63 -0
  1935. octop/infra/gateway/slash/handlers/__init__.py +28 -0
  1936. octop/infra/gateway/slash/handlers/composite.py +365 -0
  1937. octop/infra/gateway/slash/handlers/hitl.py +28 -0
  1938. octop/infra/gateway/slash/handlers/memory.py +187 -0
  1939. octop/infra/gateway/slash/handlers/platform.py +168 -0
  1940. octop/infra/gateway/slash/handlers/session.py +173 -0
  1941. octop/infra/gateway/slash/help.py +25 -0
  1942. octop/infra/gateway/slash/parser.py +20 -0
  1943. octop/infra/gateway/slash/runner.py +46 -0
  1944. octop/infra/gateway/slash/runtime_bridge.py +72 -0
  1945. octop/infra/gateway/slash/types.py +17 -0
  1946. octop/infra/gateway/steer/__init__.py +47 -0
  1947. octop/infra/gateway/steer/coordinator.py +702 -0
  1948. octop/infra/gateway/steer/types.py +141 -0
  1949. octop/infra/gateway/threads.py +520 -0
  1950. octop/infra/gateway/ws/__init__.py +14 -0
  1951. octop/infra/gateway/ws/ws_channel.py +584 -0
  1952. octop/infra/gateway/ws/ws_hub.py +167 -0
  1953. octop/infra/history/__init__.py +1 -0
  1954. octop/infra/history/legacy.py +30 -0
  1955. octop/infra/history/projection.py +240 -0
  1956. octop/infra/history/reader.py +113 -0
  1957. octop/infra/history/recorder.py +485 -0
  1958. octop/infra/history/service.py +272 -0
  1959. octop/infra/history/store.py +273 -0
  1960. octop/infra/history/trajectory/__init__.py +6 -0
  1961. octop/infra/history/trajectory/live.py +31 -0
  1962. octop/infra/history/trajectory/metrics.py +108 -0
  1963. octop/infra/history/trajectory/projector.py +320 -0
  1964. octop/infra/history/trajectory/service.py +409 -0
  1965. octop/infra/history/trajectory/settings.py +79 -0
  1966. octop/infra/history/trajectory/store.py +63 -0
  1967. octop/infra/history/trajectory/turn_context.py +128 -0
  1968. octop/infra/history/trajectory/types.py +29 -0
  1969. octop/infra/history/trajectory_compat.py +96 -0
  1970. octop/infra/knowledge/__init__.py +1 -0
  1971. octop/infra/knowledge/chunk.py +21 -0
  1972. octop/infra/knowledge/citations.py +66 -0
  1973. octop/infra/knowledge/default_open.py +63 -0
  1974. octop/infra/knowledge/embed.py +70 -0
  1975. octop/infra/knowledge/files.py +37 -0
  1976. octop/infra/knowledge/gate.py +170 -0
  1977. octop/infra/knowledge/hint.py +119 -0
  1978. octop/infra/knowledge/index.py +134 -0
  1979. octop/infra/knowledge/jobs.py +87 -0
  1980. octop/infra/knowledge/ocr.py +355 -0
  1981. octop/infra/knowledge/params.py +115 -0
  1982. octop/infra/knowledge/parse.py +314 -0
  1983. octop/infra/knowledge/relpath.py +58 -0
  1984. octop/infra/knowledge/retrieve.py +132 -0
  1985. octop/infra/knowledge/service.py +463 -0
  1986. octop/infra/knowledge/tools.py +120 -0
  1987. octop/infra/metrics.py +37 -0
  1988. octop/infra/mobile/__init__.py +1 -0
  1989. octop/infra/mobile/__main__.py +22 -0
  1990. octop/infra/mobile/adb.py +682 -0
  1991. octop/infra/mobile/agent_control.py +56 -0
  1992. octop/infra/mobile/config_probe.py +56 -0
  1993. octop/infra/mobile/docker_install.py +387 -0
  1994. octop/infra/mobile/h264.py +97 -0
  1995. octop/infra/mobile/probe.py +72 -0
  1996. octop/infra/mobile/scripts/linux/v1.0/install-docker.sh +857 -0
  1997. octop/infra/mobile/scripts/linux/v1.0/install.sh +112 -0
  1998. octop/infra/mobile/setup.py +259 -0
  1999. octop/infra/mobile/tools.py +253 -0
  2000. octop/infra/proactive/__init__.py +18 -0
  2001. octop/infra/proactive/picker.py +217 -0
  2002. octop/infra/proactive/scheduler.py +396 -0
  2003. octop/infra/proactive/service.py +282 -0
  2004. octop/infra/server.py +810 -0
  2005. octop/infra/setup/__init__.py +1 -0
  2006. octop/infra/setup/password_file.py +81 -0
  2007. octop/infra/setup/self_update.py +1188 -0
  2008. octop/infra/setup/service.py +963 -0
  2009. octop/infra/setup/tls/__init__.py +7 -0
  2010. octop/infra/setup/tls/acme_issue.py +135 -0
  2011. octop/infra/setup/tls/challenge.py +28 -0
  2012. octop/infra/setup/tls/http_companion.py +43 -0
  2013. octop/infra/setup/tls/listeners.py +62 -0
  2014. octop/infra/setup/tls/manager.py +257 -0
  2015. octop/infra/setup/tls/modes.py +54 -0
  2016. octop/infra/setup/tls/preflight.py +269 -0
  2017. octop/infra/setup/tls/renewal.py +88 -0
  2018. octop/infra/setup/tls/store.py +95 -0
  2019. octop/infra/setup/wizard_tokens.py +67 -0
  2020. octop/infra/skills/__init__.py +41 -0
  2021. octop/infra/skills/install.py +221 -0
  2022. octop/infra/skills/presentation.py +95 -0
  2023. octop/infra/skills/skill_archive.py +48 -0
  2024. octop/infra/skills/skill_package_from_skillhub.py +132 -0
  2025. octop/infra/skills/skill_package_store.py +229 -0
  2026. octop/infra/skills/skill_packages.py +209 -0
  2027. octop/infra/skills/skill_transfer.py +222 -0
  2028. octop/infra/skills/skillhub_common.py +24 -0
  2029. octop/infra/skills/skillhub_market.py +447 -0
  2030. octop/infra/skills/skills_hub.py +1493 -0
  2031. octop/infra/skills/workspace_catalog.py +176 -0
  2032. octop/infra/users/__init__.py +9 -0
  2033. octop/infra/users/acting.py +42 -0
  2034. octop/infra/users/email.py +34 -0
  2035. octop/infra/users/identity.py +31 -0
  2036. octop/infra/users/invites.py +279 -0
  2037. octop/infra/users/manager.py +887 -0
  2038. octop/infra/users/password.py +70 -0
  2039. octop/infra/users/permissions.py +319 -0
  2040. octop/infra/users/preferences.py +312 -0
  2041. octop/infra/users/profile_avatar.py +100 -0
  2042. octop/infra/users/resource_policy.py +207 -0
  2043. octop/infra/utils/__init__.py +1 -0
  2044. octop/infra/utils/accept_errors.py +67 -0
  2045. octop/infra/utils/anydoc_convert.py +85 -0
  2046. octop/infra/utils/browser_media.py +154 -0
  2047. octop/infra/utils/bwrap.py +215 -0
  2048. octop/infra/utils/doc_edit.py +335 -0
  2049. octop/infra/utils/docker_env.py +411 -0
  2050. octop/infra/utils/download_links.py +73 -0
  2051. octop/infra/utils/env_file.py +176 -0
  2052. octop/infra/utils/frontmatter.py +94 -0
  2053. octop/infra/utils/host_dirs.py +403 -0
  2054. octop/infra/utils/httpx_proxy.py +152 -0
  2055. octop/infra/utils/json_file.py +109 -0
  2056. octop/infra/utils/llm_text.py +128 -0
  2057. octop/infra/utils/locale.py +83 -0
  2058. octop/infra/utils/ollama_manager.py +411 -0
  2059. octop/infra/utils/paths.py +160 -0
  2060. octop/infra/utils/posix_compat.py +118 -0
  2061. octop/infra/utils/process_resources.py +50 -0
  2062. octop/infra/utils/runtime_packages.py +284 -0
  2063. octop/infra/utils/search_probe.py +221 -0
  2064. octop/infra/utils/ssl_errors.py +18 -0
  2065. octop/infra/utils/ssrf_guard.py +221 -0
  2066. octop/infra/utils/subprocess_io.py +49 -0
  2067. octop/infra/utils/subprocess_io_win.py +26 -0
  2068. octop/infra/utils/tencent_asr_sign.py +70 -0
  2069. octop/infra/utils/tencent_sign.py +60 -0
  2070. octop/infra/utils/thread_artifact.py +119 -0
  2071. octop/infra/utils/turn_failure.py +158 -0
  2072. octop/infra/utils/ulid.py +44 -0
  2073. octop/infra/utils/url.py +19 -0
  2074. octop/infra/utils/user_downloads.py +108 -0
  2075. octop/infra/utils/utf8_text.py +156 -0
  2076. octop/infra/utils/weixin_context.py +60 -0
  2077. octop/infra/voice/__init__.py +1 -0
  2078. octop/infra/voice/adapters.py +571 -0
  2079. octop/infra/voice/manager.py +251 -0
  2080. octop/infra/voice/presets.py +73 -0
  2081. octop/infra/voice/realtime.py +217 -0
  2082. octop/launch.py +166 -0
  2083. ztestoctop-10.0.0.dist-info/METADATA +1524 -0
  2084. ztestoctop-10.0.0.dist-info/RECORD +2087 -0
  2085. ztestoctop-10.0.0.dist-info/WHEEL +4 -0
  2086. ztestoctop-10.0.0.dist-info/entry_points.txt +2 -0
  2087. ztestoctop-10.0.0.dist-info/licenses/LICENSE +21 -0
octop/__init__.py ADDED
@@ -0,0 +1,11 @@
1
+ """Octop — smarter self-hosted AI assistant (multi-user, multi-agent)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from octop.infra.utils.httpx_proxy import install_httpx_cidr_no_proxy
6
+
7
+ __version__ = "10.0.0"
8
+
9
+ # httpx 0.28 treats NO_PROXY CIDR as an exact IP (see issue #1347). Patch once
10
+ # at import so CLI, ``octop run``, and in-process harness clients all honor it.
11
+ install_httpx_cidr_no_proxy()
octop/__main__.py ADDED
@@ -0,0 +1,8 @@
1
+ """Entry point: ``python -m octop`` → CLI."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from octop.cli.main import cli
6
+
7
+ if __name__ == "__main__":
8
+ cli()
octop/api/__init__.py ADDED
@@ -0,0 +1 @@
1
+
octop/api/app.py ADDED
@@ -0,0 +1,341 @@
1
+ """FastAPI app factory."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import logging
6
+ from collections.abc import Sequence
7
+ from dataclasses import dataclass
8
+ from pathlib import Path
9
+ from typing import Any
10
+
11
+ from fastapi import FastAPI, HTTPException, Request
12
+ from fastapi.middleware.cors import CORSMiddleware
13
+ from fastapi.responses import FileResponse, HTMLResponse, JSONResponse, PlainTextResponse
14
+ from scalar_fastapi import get_scalar_api_reference
15
+
16
+ from octop.api.middleware.jwt_auth import install as install_jwt_auth
17
+ from octop.api.middleware.setup_lockdown import install as install_setup_lockdown
18
+ from octop.api.openapi_meta import API_DESCRIPTION, OPENAPI_TAGS, configure_openapi
19
+ from octop.infra.errors import ErrorCode, OctopError
20
+ from octop.infra.server import OctopServer
21
+ from octop.infra.utils.locale import resolve_request_locale
22
+
23
+ logger = logging.getLogger(__name__)
24
+
25
+
26
+ @dataclass(frozen=True)
27
+ class _RouterMount:
28
+ router: Any
29
+ prefix: str
30
+ tags: Sequence[str]
31
+
32
+
33
+ _NO_CACHE_DASHBOARD_NAMES = frozenset({"sw.js", "manifest.json", "index.html"})
34
+
35
+
36
+ def dashboard_cache_control(full_path: str) -> str | None:
37
+ """Cache-Control for a dashboard SPA path, or ``None`` to leave unset."""
38
+ name = Path(full_path).name.lower() if full_path else "index.html"
39
+ if not full_path or name in _NO_CACHE_DASHBOARD_NAMES:
40
+ return "no-cache"
41
+ # Vite emits content-hashed files under assets/ — safe to pin forever.
42
+ if full_path.startswith("assets/"):
43
+ return "public, max-age=31536000, immutable"
44
+ return None
45
+
46
+
47
+ def _dashboard_response(path: Path, full_path: str) -> FileResponse:
48
+ response = FileResponse(path)
49
+ cache_control = dashboard_cache_control(full_path)
50
+ if cache_control is not None:
51
+ response.headers["Cache-Control"] = cache_control
52
+ return response
53
+
54
+
55
+ def is_dashboard_asset_path(full_path: str) -> bool:
56
+ """True for hashed build artifacts that must 404 instead of falling back."""
57
+ return full_path.startswith("assets/")
58
+
59
+
60
+ def _dashboard_fallback(index_file: Path, full_path: str) -> FileResponse:
61
+ """Serve the SPA shell for routes; 404 for a missing hashed asset.
62
+
63
+ Answering ``/assets/index.<old-hash>.js`` with ``index.html`` makes the
64
+ browser reject HTML as a module script ("not a valid JavaScript MIME
65
+ type"), which hides the real cause — a stale shell after an upgrade.
66
+ """
67
+ if is_dashboard_asset_path(full_path):
68
+ raise HTTPException(status_code=404, detail="Not Found")
69
+ return _dashboard_response(index_file, "")
70
+
71
+
72
+ def _mount_routers(app: FastAPI, mounts: Sequence[_RouterMount]) -> None:
73
+ for spec in mounts:
74
+ app.include_router(spec.router, prefix=spec.prefix, tags=list(spec.tags))
75
+
76
+
77
+ def _install_exception_handlers(app: FastAPI) -> None:
78
+ @app.exception_handler(OctopError)
79
+ async def _octop(request: Request, exc: OctopError) -> JSONResponse:
80
+ # Client responses are locale-localized; log the original English message
81
+ # so INTERNAL_ERROR (and other 5xx) remain diagnosable in ~/.octop/logs.
82
+ if exc.status >= 500:
83
+ logger.error(
84
+ "OctopError %s in %s: %s",
85
+ exc.code.value,
86
+ request.url.path,
87
+ exc.message,
88
+ exc_info=exc,
89
+ )
90
+ locale = resolve_request_locale(request)
91
+ return JSONResponse(status_code=exc.status, content=exc.to_envelope(locale=locale))
92
+
93
+ @app.exception_handler(Exception)
94
+ async def _unhandled(request: Request, exc: Exception) -> JSONResponse:
95
+ logger.exception("unhandled exception in %s", request.url.path)
96
+ locale = resolve_request_locale(request)
97
+ err = OctopError.localized(ErrorCode.INTERNAL_ERROR, locale)
98
+ return JSONResponse(status_code=err.status, content=err.to_envelope())
99
+
100
+
101
+ def build_app(server: OctopServer) -> FastAPI:
102
+ cfg = server.services.config if server.services else getattr(server, "config", None)
103
+ enable_dashboard = cfg.enable_dashboard if cfg else True
104
+ enable_api_docs = cfg.enable_api_docs if cfg else False
105
+ enable_mobile = (
106
+ cfg.capabilities.mobile.enabled if cfg and cfg.capabilities.mobile.enabled else False
107
+ )
108
+
109
+ app = FastAPI(
110
+ title="Octop API",
111
+ version="0.1.0",
112
+ description=API_DESCRIPTION,
113
+ openapi_url="/api/openapi.json" if enable_api_docs else None,
114
+ openapi_tags=OPENAPI_TAGS,
115
+ )
116
+ configure_openapi(app)
117
+ app.state.octop_server = server
118
+ _install_exception_handlers(app)
119
+
120
+ if cfg and cfg.cors_origins:
121
+ from octop.api.deps import ACCESS_TOKEN_RESPONSE_HEADER
122
+
123
+ app.add_middleware(
124
+ CORSMiddleware,
125
+ allow_origins=cfg.cors_origins,
126
+ allow_credentials=True,
127
+ allow_methods=["*"],
128
+ allow_headers=["*"],
129
+ expose_headers=[ACCESS_TOKEN_RESPONSE_HEADER],
130
+ )
131
+
132
+ from octop.api.middleware.bridge_proxy import install as install_bridge_proxy
133
+
134
+ # Bridge proxy must sit inside JWT auth so ``request.state.octop_user`` is set
135
+ # (Starlette runs the last-added middleware first).
136
+ install_bridge_proxy(app, server)
137
+ install_jwt_auth(app, server)
138
+ install_setup_lockdown(app, server)
139
+
140
+ if server.app_runtime is not None and server.app_runtime.bridge_manager is not None:
141
+ from octop.api.bridge_peer import prepare_peer_dashboard_turn
142
+ from octop.api.routers.browser.stream import run_browser_stream_session
143
+
144
+ server.app_runtime.bridge_manager.bind_asgi_app(
145
+ app,
146
+ peer_turn_runner=prepare_peer_dashboard_turn,
147
+ peer_browser_runner=run_browser_stream_session,
148
+ )
149
+
150
+ from octop.infra.setup.tls.challenge import challenge_store
151
+
152
+ @app.get("/.well-known/acme-challenge/{token}", include_in_schema=False)
153
+ async def acme_http01_challenge(token: str) -> PlainTextResponse:
154
+ body = challenge_store.get(token)
155
+ if body is None:
156
+ raise HTTPException(status_code=404, detail="challenge not found")
157
+ return PlainTextResponse(body)
158
+
159
+ from octop.api.routers import (
160
+ acp,
161
+ admin,
162
+ agent_files,
163
+ agent_mcp,
164
+ agent_tools,
165
+ agents,
166
+ auth,
167
+ auth_ldap,
168
+ auth_oauth,
169
+ auth_oidc,
170
+ backup,
171
+ bridge,
172
+ browser,
173
+ channels,
174
+ chat,
175
+ connectors,
176
+ cron,
177
+ desktop,
178
+ envs,
179
+ experts,
180
+ health,
181
+ i18n,
182
+ internal_mcp,
183
+ invites,
184
+ knowledge_bases,
185
+ mbti,
186
+ media_generation,
187
+ memory,
188
+ memory_portable,
189
+ memory_storage,
190
+ mobile,
191
+ ollama_models,
192
+ onnx_models,
193
+ plugins,
194
+ preferences,
195
+ proactive_care,
196
+ providers,
197
+ search,
198
+ settings,
199
+ setup,
200
+ skill_packages,
201
+ skills,
202
+ slash,
203
+ subagents,
204
+ teams,
205
+ terminal,
206
+ update,
207
+ uploads,
208
+ usage,
209
+ user_roles,
210
+ users,
211
+ voice,
212
+ workspace,
213
+ )
214
+ from octop.api.routers.decision import router as decision_router
215
+ from octop.api.routers.filesystem import router as filesystem_router
216
+ from octop.api.routers.observability import router as observability_router
217
+ from octop.api.routers.providers import admin_router as admin_providers_router
218
+ from octop.api.routers.security import router as security_router
219
+ from octop.api.routers.storage_backends import admin_router as admin_storage_router
220
+ from octop.api.routers.storage_backends import user_router as storage_backends_user_router
221
+ from octop.api.routers.tls import router as tls_router
222
+ from octop.api.routers.voice import admin_router as admin_voice_router
223
+
224
+ _mount_routers(
225
+ app,
226
+ [
227
+ _RouterMount(setup.router, "/api", ["setup"]),
228
+ _RouterMount(auth.router, "/api/auth", ["auth"]),
229
+ _RouterMount(auth_oidc.router, "/api/auth", ["auth"]),
230
+ _RouterMount(auth_oauth.router, "/api/auth", ["auth"]),
231
+ _RouterMount(auth_ldap.router, "/api/auth", ["auth"]),
232
+ _RouterMount(invites.public_router, "/api/auth/invite", ["auth"]),
233
+ _RouterMount(preferences.router, "/api", ["auth"]),
234
+ _RouterMount(i18n.router, "/api", ["i18n"]),
235
+ _RouterMount(health.router, "/api/health", ["health"]),
236
+ _RouterMount(invites.admin_router, "/api/users/invites", ["users"]),
237
+ _RouterMount(user_roles.router, "/api/users/roles", ["users"]),
238
+ _RouterMount(users.router, "/api/users", ["users"]),
239
+ _RouterMount(agents.router, "/api/agents", ["agents"]),
240
+ _RouterMount(agent_tools.router, "/api", ["agents"]),
241
+ _RouterMount(acp.router, "/api", ["agents"]),
242
+ _RouterMount(agent_mcp.router, "/api", ["agent-mcp"]),
243
+ _RouterMount(chat.router, "/api", ["chat"]),
244
+ _RouterMount(slash.router, "/api", ["slash"]),
245
+ _RouterMount(connectors.router, "/api", ["connectors"]),
246
+ _RouterMount(bridge.router, "/api", ["bridge"]),
247
+ _RouterMount(knowledge_bases.router, "/api", ["knowledge"]),
248
+ _RouterMount(internal_mcp.router, "/api", ["internal-mcp"]),
249
+ _RouterMount(channels.router, "/api", ["channels"]),
250
+ _RouterMount(cron.router, "/api", ["cron"]),
251
+ _RouterMount(settings.router, "/api", ["settings"]),
252
+ _RouterMount(decision_router, "/api", ["settings"]),
253
+ _RouterMount(envs.router, "/api", ["envs"]),
254
+ _RouterMount(search.router, "/api", ["search"]),
255
+ _RouterMount(providers.router, "/api/providers", ["providers"]),
256
+ _RouterMount(voice.router, "/api/voice", ["voice"]),
257
+ _RouterMount(admin.router, "/api/admin", ["admin"]),
258
+ _RouterMount(backup.router, "/api/admin", ["admin"]),
259
+ _RouterMount(admin_providers_router, "/api/admin/providers", ["admin"]),
260
+ _RouterMount(admin_voice_router, "/api/admin/voice/providers", ["admin"]),
261
+ _RouterMount(observability_router, "/api/admin/observability", ["observability"]),
262
+ _RouterMount(
263
+ media_generation.router,
264
+ "/api/admin/media-generation",
265
+ ["providers"],
266
+ ),
267
+ _RouterMount(tls_router, "/api/admin/tls", ["tls"]),
268
+ _RouterMount(security_router, "/api/admin/security", ["security"]),
269
+ _RouterMount(admin_storage_router, "/api/admin/storage-backends", ["admin"]),
270
+ _RouterMount(
271
+ storage_backends_user_router, "/api/storage-backends", ["storage-backends"]
272
+ ),
273
+ _RouterMount(filesystem_router, "/api/filesystem", ["filesystem"]),
274
+ _RouterMount(mbti.router, "/api", ["mbti"]),
275
+ _RouterMount(experts.router, "/api", ["experts"]),
276
+ _RouterMount(teams.router, "/api", ["teams"]),
277
+ _RouterMount(workspace.router, "/api", ["workspace"]),
278
+ _RouterMount(agent_files.router, "/api", ["agent_files"]),
279
+ _RouterMount(memory.router, "/api", ["memory"]),
280
+ _RouterMount(memory_portable.router, "/api", ["memory"]),
281
+ _RouterMount(memory_storage.router, "/api", ["memory"]),
282
+ _RouterMount(proactive_care.router, "/api", ["proactive-care"]),
283
+ _RouterMount(usage.router, "/api", ["usage"]),
284
+ _RouterMount(usage.admin_router, "/api/admin", ["admin"]),
285
+ _RouterMount(skill_packages.router, "/api", ["skill-packages"]),
286
+ _RouterMount(skills.router, "/api", ["skills"]),
287
+ _RouterMount(subagents.router, "/api", ["subagents"]),
288
+ _RouterMount(terminal.router, "/api", ["terminal"]),
289
+ _RouterMount(uploads.router, "/api", ["chat"]),
290
+ _RouterMount(update.router, "/api", ["update"]),
291
+ _RouterMount(browser.router, "/api", ["browser"]),
292
+ _RouterMount(desktop.router, "/api", ["desktop"]),
293
+ _RouterMount(ollama_models.router, "/api", ["ollama"]),
294
+ _RouterMount(onnx_models.router, "/api", ["onnx"]),
295
+ _RouterMount(plugins.router, "/api", ["plugins"]),
296
+ ],
297
+ )
298
+
299
+ if enable_mobile:
300
+ _mount_routers(
301
+ app,
302
+ [
303
+ _RouterMount(mobile.router, "/api", ["mobile"]),
304
+ ],
305
+ )
306
+
307
+ if enable_api_docs:
308
+
309
+ @app.get("/api/docs", include_in_schema=False)
310
+ async def api_docs() -> HTMLResponse:
311
+ return get_scalar_api_reference(
312
+ openapi_url=app.openapi_url,
313
+ title="Octop API",
314
+ )
315
+
316
+ if enable_dashboard:
317
+ dashboard_dir = Path(__file__).parent.parent / "dashboard"
318
+ index_file = dashboard_dir / "index.html"
319
+ if index_file.exists():
320
+
321
+ @app.get("/{full_path:path}", include_in_schema=False)
322
+ async def spa_fallback(full_path: str) -> FileResponse:
323
+ if full_path.startswith(("api/", "ws/")):
324
+ raise HTTPException(status_code=404, detail="Not Found")
325
+
326
+ if full_path:
327
+ raw_path = Path(full_path)
328
+ # Reject absolute paths and parent-dir references before
329
+ # joining, so user input never drives a path expression.
330
+ if raw_path.is_absolute() or ".." in raw_path.parts:
331
+ return _dashboard_fallback(index_file, full_path)
332
+ candidate = (dashboard_dir / Path(*raw_path.parts)).resolve()
333
+ try:
334
+ candidate.relative_to(dashboard_dir.resolve())
335
+ except ValueError:
336
+ return _dashboard_fallback(index_file, full_path)
337
+ if candidate.is_file():
338
+ return _dashboard_response(candidate, full_path)
339
+ return _dashboard_fallback(index_file, full_path)
340
+
341
+ return app
@@ -0,0 +1,111 @@
1
+ """ASGI-layer helpers that Bridge calls for local dashboard turns.
2
+
3
+ Wired from ``build_app`` so ``infra.bridge`` never imports ``api/``.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ from dataclasses import dataclass
9
+ from typing import Any
10
+
11
+ from octop.api.routers.chat.models import UserTurnWsFrame
12
+ from octop.api.routers.chat.turn import (
13
+ build_dashboard_inbound,
14
+ prepare_dashboard_turn,
15
+ turn_has_content,
16
+ )
17
+ from octop.infra.bridge.peer_turn import PeerTurnRejected, bridge_turn_ws_payload
18
+
19
+
20
+ @dataclass(frozen=True)
21
+ class PreparedPeerTurn:
22
+ thread_id: str
23
+ inbound: Any
24
+
25
+
26
+ async def prepare_peer_dashboard_turn(
27
+ *,
28
+ server: Any,
29
+ user: Any,
30
+ agent_id: str,
31
+ payload: dict[str, Any],
32
+ ws_connection_id: str,
33
+ ) -> PreparedPeerTurn:
34
+ """Validate a peer ``turn.start`` and build the gateway inbound.
35
+
36
+ When the room is already busy, admit a mid-turn steer and return
37
+ ``inbound=None`` so the peer does not enqueue a second turn.
38
+ """
39
+ frame = UserTurnWsFrame.model_validate(bridge_turn_ws_payload(payload))
40
+ turn = frame.to_turn_body()
41
+ if not turn_has_content(turn):
42
+ raise PeerTurnRejected("empty message")
43
+ prepared = await prepare_dashboard_turn(
44
+ server,
45
+ agent_id=agent_id,
46
+ user=user,
47
+ turn=turn,
48
+ )
49
+ if await _admit_peer_steer(
50
+ server,
51
+ agent_id=agent_id,
52
+ thread_id=prepared.thread_id,
53
+ turn=turn,
54
+ ):
55
+ return PreparedPeerTurn(thread_id=prepared.thread_id, inbound=None)
56
+ inbound = build_dashboard_inbound(
57
+ agent_id=agent_id,
58
+ user_id=user.id,
59
+ prepared=prepared,
60
+ turn=turn,
61
+ ws_connection_id=ws_connection_id,
62
+ user_is_admin=bool(getattr(user, "is_admin", False)),
63
+ )
64
+ return PreparedPeerTurn(thread_id=prepared.thread_id, inbound=inbound)
65
+
66
+
67
+ async def _admit_peer_steer(
68
+ server: Any,
69
+ *,
70
+ agent_id: str,
71
+ thread_id: str,
72
+ turn: Any,
73
+ ) -> bool:
74
+ """Push steer.ack / queued onto the live turn subscriber when busy."""
75
+ rt = getattr(server, "app_runtime", None)
76
+ gateway = getattr(rt, "gateway", None) if rt is not None else None
77
+ if gateway is None:
78
+ return False
79
+ from octop.api.routers.chat.ws import ( # noqa: PLC0415
80
+ _maybe_admit_steer,
81
+ _plain_text_from_turn,
82
+ _steer_blocks_from_turn,
83
+ _thread_hitl_paused,
84
+ )
85
+
86
+ hub = gateway.ws_hub
87
+ delivery = turn.delivery or "auto"
88
+ # Team members speak after the host WS turn goes idle. A leftover steer
89
+ # coordinator row must not swallow the next user_turn as a queued insert.
90
+ if (
91
+ delivery != "steer"
92
+ and not hub.is_turn_active(thread_id)
93
+ and not _thread_hitl_paused(gateway, thread_id, agent_id)
94
+ ):
95
+ return False
96
+
97
+ async def send_via_hub(steer_frame: dict[str, Any]) -> None:
98
+ await hub.push_to_thread(thread_id, steer_frame)
99
+
100
+ return await _maybe_admit_steer(
101
+ text=(turn.text or "").strip() or _plain_text_from_turn(turn),
102
+ thread_id=thread_id,
103
+ delivery=delivery,
104
+ client_pending_id=turn.client_pending_id,
105
+ expected_turn_id=turn.expected_turn_id,
106
+ steer=gateway.steer,
107
+ hub=hub,
108
+ send_frame=send_via_hub,
109
+ hitl_paused=_thread_hitl_paused(gateway, thread_id, agent_id),
110
+ content_blocks=_steer_blocks_from_turn(turn),
111
+ )
@@ -0,0 +1 @@
1
+ """Shared router helpers — agent access, workspace glue, request validation."""
@@ -0,0 +1,79 @@
1
+ """Shared agent ownership / existence checks for HTTP routers."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from octop.infra.errors import ErrorCode, OctopError
8
+
9
+
10
+ def agent_is_shared(row: Any) -> bool:
11
+ return int(getattr(row, "is_shared", 0) or 0) == 1
12
+
13
+
14
+ def user_owns_agent(row: Any, user: Any) -> bool:
15
+ return row.user_id is not None and row.user_id == user.id
16
+
17
+
18
+ def assert_agent_owner(row: Any, user: Any) -> None:
19
+ """Raise if the user may not mutate this agent row (admin bypasses)."""
20
+ if user.is_admin:
21
+ return
22
+ if row.user_id is None or row.user_id != user.id:
23
+ raise OctopError(ErrorCode.FORBIDDEN, "agent not owned by user")
24
+
25
+
26
+ def _user_may_access(row: Any, user: Any) -> bool:
27
+ if user.is_admin:
28
+ return True
29
+ if row.user_id is not None and row.user_id == user.id:
30
+ return True
31
+ return bool(agent_is_shared(row))
32
+
33
+
34
+ def assert_agent_access_row(row: Any, user: Any) -> None:
35
+ if not _user_may_access(row, user):
36
+ raise OctopError(ErrorCode.FORBIDDEN, "agent not accessible to user")
37
+
38
+
39
+ def require_agent_row(
40
+ agent_id: str,
41
+ *,
42
+ user: Any,
43
+ as_user: int | None,
44
+ server: Any,
45
+ ) -> Any:
46
+ """Load an agent row after owner / shared-agent / admin ``as_user`` checks."""
47
+ assert server.app_runtime is not None
48
+ row = server.app_runtime.agent_registry.get_row(agent_id)
49
+ if row is None:
50
+ raise OctopError(ErrorCode.AGENT_NOT_FOUND, f"agent {agent_id!r} not found")
51
+ if as_user is not None and as_user != user.id:
52
+ if not user.is_admin:
53
+ raise OctopError(ErrorCode.FORBIDDEN, "as_user requires admin")
54
+ target = server.user_manager.get_by_id(as_user)
55
+ if target is None:
56
+ raise OctopError(ErrorCode.NOT_FOUND, f"user {as_user} not found")
57
+ if row.user_id is not None and row.user_id != as_user:
58
+ raise OctopError(ErrorCode.FORBIDDEN, "agent not owned by as_user")
59
+ else:
60
+ assert_agent_access_row(row, user)
61
+ return row
62
+
63
+
64
+ def require_agent_owner_row(
65
+ agent_id: str,
66
+ *,
67
+ user: Any,
68
+ as_user: int | None,
69
+ server: Any,
70
+ ) -> Any:
71
+ """Load an agent row and require owner-level access."""
72
+ row = require_agent_row(agent_id, user=user, as_user=as_user, server=server)
73
+ assert_agent_owner(row, user)
74
+ return row
75
+
76
+
77
+ def assert_agent_access(server: Any, agent_id: str, user: Any) -> None:
78
+ """Ensure agent exists and is accessible to the current user."""
79
+ require_agent_row(agent_id, user=user, as_user=None, server=server)
@@ -0,0 +1,32 @@
1
+ """Typed API fields for per-agent runtime and model settings."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from pydantic import BaseModel, Field
8
+
9
+ from octop.infra.agents.settings.runtime_limits import AGENT_RUNTIME_CONFIG_KEYS
10
+
11
+
12
+ class AgentRuntimeFields(BaseModel):
13
+ """First-class create/edit fields persisted in the agent's config storage."""
14
+
15
+ max_iters: int | None = Field(default=None, ge=1)
16
+ max_input_length: int | None = Field(default=None, ge=1_000)
17
+ temperature: float | None = Field(default=None, ge=0, le=2)
18
+ top_p: float | None = Field(default=None, ge=0, le=1)
19
+ max_tokens: int | None = Field(default=None, ge=1)
20
+
21
+
22
+ def runtime_field_updates(
23
+ model: BaseModel,
24
+ *,
25
+ exclude_unset: bool,
26
+ ) -> dict[str, Any]:
27
+ """Extract runtime fields from an API body without leaking unrelated fields."""
28
+ dumped = model.model_dump(exclude_unset=exclude_unset)
29
+ return {key: dumped[key] for key in AGENT_RUNTIME_CONFIG_KEYS if key in dumped}
30
+
31
+
32
+ __all__ = ["AgentRuntimeFields", "runtime_field_updates"]
@@ -0,0 +1,19 @@
1
+ """Resolve agent ``workspace_dir`` for API handlers."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pathlib import Path
6
+ from typing import Any, cast
7
+
8
+
9
+ def resolve_agent_workspace_dir(server: Any, agent_id: str) -> Path:
10
+ """Prefer ``config.workspace_dir`` via agent registry; else Octop default layout."""
11
+ runtime = getattr(server, "app_runtime", None)
12
+ registry = getattr(runtime, "agent_registry", None) if runtime is not None else None
13
+ if registry is not None and hasattr(registry, "resolve_workspace_dir"):
14
+ return cast(Path, registry.resolve_workspace_dir(agent_id))
15
+ paths = getattr(server, "paths", None) or server.services.paths
16
+ return cast(Path, paths.ensure_agent_workspace(agent_id))
17
+
18
+
19
+ __all__ = ["resolve_agent_workspace_dir"]
@@ -0,0 +1,69 @@
1
+ """Chat attachment HTTP helpers — thin wrappers over :mod:`inbound_store`."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+ from typing import TYPE_CHECKING
7
+ from urllib.parse import quote
8
+
9
+ from octop.infra.gateway.media.attachment_hints import is_preview_media_type
10
+ from octop.infra.gateway.media.inbound_store import InboundFile, write_inbound
11
+
12
+ if TYPE_CHECKING:
13
+ from octop_harness.backends.workspace import BackendWorkspace
14
+
15
+
16
+ @dataclass(frozen=True)
17
+ class StoredAttachment:
18
+ filename: str
19
+ media_type: str
20
+ size: int
21
+ data_path: str
22
+ owner_id: int = 0
23
+
24
+
25
+ def _stored_from_inbound(inbound: InboundFile, *, owner_id: int = 0) -> StoredAttachment:
26
+ return StoredAttachment(
27
+ owner_id=owner_id,
28
+ filename=inbound.filename,
29
+ media_type=inbound.media_type,
30
+ size=inbound.size,
31
+ data_path=inbound.path,
32
+ )
33
+
34
+
35
+ def dashboard_inbound_preview_url(
36
+ agent_id: str,
37
+ workspace_path: str,
38
+ *,
39
+ media_type: str = "",
40
+ ) -> str:
41
+ """JWT-protected preview/download URL for dashboard UI (not for LLM)."""
42
+ rel = workspace_path.lstrip("/")
43
+ aid = quote(agent_id, safe="")
44
+ if is_preview_media_type(media_type):
45
+ params = f"source={quote(rel, safe='')}"
46
+ if media_type:
47
+ params += f"&mime_type={quote(media_type, safe='')}"
48
+ return f"/api/agents/{aid}/media/preview?{params}"
49
+ return f"/api/agents/{aid}/workspace/download?path={quote(rel, safe='')}"
50
+
51
+
52
+ async def save_attachment(
53
+ workspace: BackendWorkspace,
54
+ *,
55
+ owner_id: int,
56
+ filename: str,
57
+ media_type: str,
58
+ data: bytes,
59
+ max_bytes: int | None = None,
60
+ ) -> StoredAttachment:
61
+ del owner_id # access control is JWT + agent scope at download time
62
+ inbound = await write_inbound(
63
+ workspace,
64
+ data,
65
+ filename=filename,
66
+ media_type=media_type,
67
+ max_bytes=max_bytes,
68
+ )
69
+ return _stored_from_inbound(inbound)