dsh-plugin-t-expert 0.1.0

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 (619) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +215 -0
  3. package/THIRD-PARTY-NOTICES +33 -0
  4. package/cordis.patch.yml +7 -0
  5. package/data/experts/academic/academic-anthropologist.md +125 -0
  6. package/data/experts/academic/academic-geographer.md +127 -0
  7. package/data/experts/academic/academic-historian.md +123 -0
  8. package/data/experts/academic/academic-narratologist.md +118 -0
  9. package/data/experts/academic/academic-psychologist.md +118 -0
  10. package/data/experts/academic/academic-statistician.md +144 -0
  11. package/data/experts/design/design-brand-guardian.md +322 -0
  12. package/data/experts/design/design-image-prompt-engineer.md +236 -0
  13. package/data/experts/design/design-inclusive-visuals-specialist.md +71 -0
  14. package/data/experts/design/design-persona-walkthrough.md +272 -0
  15. package/data/experts/design/design-ui-designer.md +383 -0
  16. package/data/experts/design/design-ui-finish-gate-reviewer.md +217 -0
  17. package/data/experts/design/design-ux-architect.md +469 -0
  18. package/data/experts/design/design-ux-researcher.md +329 -0
  19. package/data/experts/design/design-visual-storyteller.md +149 -0
  20. package/data/experts/design/design-whimsy-injector.md +438 -0
  21. package/data/experts/engineering/engineering-ai-data-remediation-engineer.md +211 -0
  22. package/data/experts/engineering/engineering-ai-engineer.md +146 -0
  23. package/data/experts/engineering/engineering-api-platform-engineer.md +162 -0
  24. package/data/experts/engineering/engineering-ats-validator-architect.md +383 -0
  25. package/data/experts/engineering/engineering-autonomous-optimization-architect.md +107 -0
  26. package/data/experts/engineering/engineering-backend-architect.md +236 -0
  27. package/data/experts/engineering/engineering-china-network-engineer.md +252 -0
  28. package/data/experts/engineering/engineering-cms-developer.md +536 -0
  29. package/data/experts/engineering/engineering-code-reviewer.md +76 -0
  30. package/data/experts/engineering/engineering-codebase-onboarding-engineer.md +173 -0
  31. package/data/experts/engineering/engineering-data-engineer.md +306 -0
  32. package/data/experts/engineering/engineering-data-visualization-engineer.md +151 -0
  33. package/data/experts/engineering/engineering-database-optimizer.md +176 -0
  34. package/data/experts/engineering/engineering-database-reliability-engineer.md +162 -0
  35. package/data/experts/engineering/engineering-desktop-app-engineer.md +204 -0
  36. package/data/experts/engineering/engineering-developer-tooling-engineer.md +153 -0
  37. package/data/experts/engineering/engineering-devops-automator.md +376 -0
  38. package/data/experts/engineering/engineering-drupal-performance.md +347 -0
  39. package/data/experts/engineering/engineering-drupal-shopping-cart.md +360 -0
  40. package/data/experts/engineering/engineering-email-intelligence-engineer.md +353 -0
  41. package/data/experts/engineering/engineering-embedded-firmware-engineer.md +173 -0
  42. package/data/experts/engineering/engineering-feishu-integration-developer.md +598 -0
  43. package/data/experts/engineering/engineering-filament-optimization-specialist.md +283 -0
  44. package/data/experts/engineering/engineering-finops-engineer.md +153 -0
  45. package/data/experts/engineering/engineering-frontend-developer.md +225 -0
  46. package/data/experts/engineering/engineering-gaussdb-expert.md +334 -0
  47. package/data/experts/engineering/engineering-git-workflow-master.md +84 -0
  48. package/data/experts/engineering/engineering-i18n-engineer.md +184 -0
  49. package/data/experts/engineering/engineering-identity-access-engineer.md +196 -0
  50. package/data/experts/engineering/engineering-incident-response-commander.md +444 -0
  51. package/data/experts/engineering/engineering-iot-fleet-engineer.md +148 -0
  52. package/data/experts/engineering/engineering-it-service-manager.md +561 -0
  53. package/data/experts/engineering/engineering-knowledge-graph-engineer.md +368 -0
  54. package/data/experts/engineering/engineering-llm-post-training-engineer.md +166 -0
  55. package/data/experts/engineering/engineering-minimal-change-engineer.md +207 -0
  56. package/data/experts/engineering/engineering-mobile-app-builder.md +493 -0
  57. package/data/experts/engineering/engineering-mobile-release-engineer.md +163 -0
  58. package/data/experts/engineering/engineering-multi-agent-systems-architect.md +600 -0
  59. package/data/experts/engineering/engineering-network-engineer.md +239 -0
  60. package/data/experts/engineering/engineering-orgscript-engineer.md +113 -0
  61. package/data/experts/engineering/engineering-payments-billing-engineer.md +194 -0
  62. package/data/experts/engineering/engineering-pdf-engine-architect.md +666 -0
  63. package/data/experts/engineering/engineering-platform-engineer.md +270 -0
  64. package/data/experts/engineering/engineering-privacy-engineer.md +152 -0
  65. package/data/experts/engineering/engineering-prompt-engineer.md +202 -0
  66. package/data/experts/engineering/engineering-rag-pipeline-engineer.md +437 -0
  67. package/data/experts/engineering/engineering-rapid-prototyper.md +462 -0
  68. package/data/experts/engineering/engineering-realtime-collaboration-engineer.md +187 -0
  69. package/data/experts/engineering/engineering-rust-refactoring-specialist.md +313 -0
  70. package/data/experts/engineering/engineering-search-relevance-engineer.md +237 -0
  71. package/data/experts/engineering/engineering-section-508-specialist.md +339 -0
  72. package/data/experts/engineering/engineering-senior-developer.md +176 -0
  73. package/data/experts/engineering/engineering-software-architect.md +112 -0
  74. package/data/experts/engineering/engineering-solidity-smart-contract-engineer.md +522 -0
  75. package/data/experts/engineering/engineering-sre.md +90 -0
  76. package/data/experts/engineering/engineering-technical-writer.md +393 -0
  77. package/data/experts/engineering/engineering-universal-document-compiler.md +344 -0
  78. package/data/experts/engineering/engineering-uswds-developer.md +340 -0
  79. package/data/experts/engineering/engineering-video-streaming-engineer.md +150 -0
  80. package/data/experts/engineering/engineering-voice-ai-integration-engineer.md +561 -0
  81. package/data/experts/engineering/engineering-webassembly-engineer.md +156 -0
  82. package/data/experts/engineering/engineering-wechat-mini-program-developer.md +350 -0
  83. package/data/experts/engineering/engineering-wordpress-performance.md +346 -0
  84. package/data/experts/engineering/engineering-wordpress-shopping-cart.md +346 -0
  85. package/data/experts/finance/finance-bookkeeper-controller.md +260 -0
  86. package/data/experts/finance/finance-financial-analyst.md +234 -0
  87. package/data/experts/finance/finance-fpa-analyst.md +263 -0
  88. package/data/experts/finance/finance-investment-researcher.md +272 -0
  89. package/data/experts/finance/finance-tax-strategist.md +239 -0
  90. package/data/experts/game-development/blender/blender-addon-engineer.md +234 -0
  91. package/data/experts/game-development/economy-designer.md +156 -0
  92. package/data/experts/game-development/game-audio-engineer.md +264 -0
  93. package/data/experts/game-development/game-designer.md +167 -0
  94. package/data/experts/game-development/godot/godot-gameplay-scripter.md +334 -0
  95. package/data/experts/game-development/godot/godot-multiplayer-engineer.md +297 -0
  96. package/data/experts/game-development/godot/godot-shader-developer.md +266 -0
  97. package/data/experts/game-development/level-designer.md +208 -0
  98. package/data/experts/game-development/narrative-designer.md +243 -0
  99. package/data/experts/game-development/roblox-studio/roblox-avatar-creator.md +297 -0
  100. package/data/experts/game-development/roblox-studio/roblox-experience-designer.md +305 -0
  101. package/data/experts/game-development/roblox-studio/roblox-systems-scripter.md +325 -0
  102. package/data/experts/game-development/technical-artist.md +229 -0
  103. package/data/experts/game-development/unity/unity-architect.md +271 -0
  104. package/data/experts/game-development/unity/unity-editor-tool-developer.md +310 -0
  105. package/data/experts/game-development/unity/unity-multiplayer-engineer.md +321 -0
  106. package/data/experts/game-development/unity/unity-shader-graph-artist.md +269 -0
  107. package/data/experts/game-development/unreal-engine/unreal-multiplayer-architect.md +313 -0
  108. package/data/experts/game-development/unreal-engine/unreal-systems-engineer.md +310 -0
  109. package/data/experts/game-development/unreal-engine/unreal-technical-artist.md +256 -0
  110. package/data/experts/game-development/unreal-engine/unreal-world-builder.md +273 -0
  111. package/data/experts/gis/gis-3d-scene-developer.md +111 -0
  112. package/data/experts/gis/gis-analyst.md +91 -0
  113. package/data/experts/gis/gis-bim-specialist.md +108 -0
  114. package/data/experts/gis/gis-cartography-designer.md +150 -0
  115. package/data/experts/gis/gis-drone-reality-mapping.md +120 -0
  116. package/data/experts/gis/gis-geoai-ml-engineer.md +105 -0
  117. package/data/experts/gis/gis-geoprocessing-specialist.md +97 -0
  118. package/data/experts/gis/gis-qa-engineer.md +133 -0
  119. package/data/experts/gis/gis-solution-engineer.md +101 -0
  120. package/data/experts/gis/gis-spatial-data-engineer.md +97 -0
  121. package/data/experts/gis/gis-spatial-data-scientist.md +111 -0
  122. package/data/experts/gis/gis-technical-consultant.md +86 -0
  123. package/data/experts/gis/gis-web-gis-developer.md +108 -0
  124. package/data/experts/healthcare/healthcare-clinical-evidence-agent.md +231 -0
  125. package/data/experts/healthcare/healthcare-innovation-strategist.md +433 -0
  126. package/data/experts/healthcare/healthcare-sovereign-health-systems-agent.md +312 -0
  127. package/data/experts/marketing/marketing-aeo-foundations.md +264 -0
  128. package/data/experts/marketing/marketing-agentic-search-optimizer.md +313 -0
  129. package/data/experts/marketing/marketing-ai-citation-strategist.md +172 -0
  130. package/data/experts/marketing/marketing-app-store-optimizer.md +321 -0
  131. package/data/experts/marketing/marketing-baidu-seo-specialist.md +226 -0
  132. package/data/experts/marketing/marketing-bilibili-content-strategist.md +199 -0
  133. package/data/experts/marketing/marketing-book-co-author.md +110 -0
  134. package/data/experts/marketing/marketing-carousel-growth-engine.md +199 -0
  135. package/data/experts/marketing/marketing-china-ecommerce-operator.md +283 -0
  136. package/data/experts/marketing/marketing-china-market-localization-strategist.md +283 -0
  137. package/data/experts/marketing/marketing-content-creator.md +54 -0
  138. package/data/experts/marketing/marketing-cross-border-ecommerce.md +259 -0
  139. package/data/experts/marketing/marketing-douyin-strategist.md +149 -0
  140. package/data/experts/marketing/marketing-email-strategist.md +249 -0
  141. package/data/experts/marketing/marketing-global-podcast-strategist.md +206 -0
  142. package/data/experts/marketing/marketing-growth-hacker.md +54 -0
  143. package/data/experts/marketing/marketing-instagram-curator.md +113 -0
  144. package/data/experts/marketing/marketing-kuaishou-strategist.md +223 -0
  145. package/data/experts/marketing/marketing-linkedin-content-creator.md +214 -0
  146. package/data/experts/marketing/marketing-livestream-commerce-coach.md +305 -0
  147. package/data/experts/marketing/marketing-multi-platform-publisher.md +217 -0
  148. package/data/experts/marketing/marketing-podcast-strategist.md +277 -0
  149. package/data/experts/marketing/marketing-pr-communications-manager.md +473 -0
  150. package/data/experts/marketing/marketing-private-domain-operator.md +308 -0
  151. package/data/experts/marketing/marketing-reddit-community-builder.md +123 -0
  152. package/data/experts/marketing/marketing-seo-specialist.md +370 -0
  153. package/data/experts/marketing/marketing-short-video-editing-coach.md +412 -0
  154. package/data/experts/marketing/marketing-social-media-strategist.md +125 -0
  155. package/data/experts/marketing/marketing-tiktok-strategist.md +125 -0
  156. package/data/experts/marketing/marketing-twitter-engager.md +126 -0
  157. package/data/experts/marketing/marketing-video-optimization-specialist.md +119 -0
  158. package/data/experts/marketing/marketing-wechat-official-account.md +145 -0
  159. package/data/experts/marketing/marketing-weibo-strategist.md +240 -0
  160. package/data/experts/marketing/marketing-x-twitter-intelligence-analyst.md +161 -0
  161. package/data/experts/marketing/marketing-xiaohongshu-specialist.md +138 -0
  162. package/data/experts/marketing/marketing-zhihu-strategist.md +162 -0
  163. package/data/experts/paid-media/paid-media-auditor.md +71 -0
  164. package/data/experts/paid-media/paid-media-creative-strategist.md +71 -0
  165. package/data/experts/paid-media/paid-media-paid-social-strategist.md +71 -0
  166. package/data/experts/paid-media/paid-media-ppc-strategist.md +71 -0
  167. package/data/experts/paid-media/paid-media-programmatic-buyer.md +71 -0
  168. package/data/experts/paid-media/paid-media-search-query-analyst.md +71 -0
  169. package/data/experts/paid-media/paid-media-tracking-specialist.md +71 -0
  170. package/data/experts/product/product-behavioral-nudge-engine.md +80 -0
  171. package/data/experts/product/product-feedback-synthesizer.md +119 -0
  172. package/data/experts/product/product-manager.md +469 -0
  173. package/data/experts/product/product-sprint-prioritizer.md +154 -0
  174. package/data/experts/product/product-trend-researcher.md +159 -0
  175. package/data/experts/project-management/project-management-experiment-tracker.md +198 -0
  176. package/data/experts/project-management/project-management-jira-workflow-steward.md +230 -0
  177. package/data/experts/project-management/project-management-meeting-notes-specialist.md +95 -0
  178. package/data/experts/project-management/project-management-project-shepherd.md +194 -0
  179. package/data/experts/project-management/project-management-studio-operations.md +200 -0
  180. package/data/experts/project-management/project-management-studio-producer.md +203 -0
  181. package/data/experts/project-management/project-manager-senior.md +135 -0
  182. package/data/experts/research/research-synthesist.md +136 -0
  183. package/data/experts/sales/sales-account-strategist.md +227 -0
  184. package/data/experts/sales/sales-coach.md +271 -0
  185. package/data/experts/sales/sales-deal-strategist.md +180 -0
  186. package/data/experts/sales/sales-discovery-coach.md +225 -0
  187. package/data/experts/sales/sales-engineer.md +182 -0
  188. package/data/experts/sales/sales-offer-lead-gen-strategist.md +257 -0
  189. package/data/experts/sales/sales-outbound-strategist.md +201 -0
  190. package/data/experts/sales/sales-pipeline-analyst.md +267 -0
  191. package/data/experts/sales/sales-proposal-strategist.md +217 -0
  192. package/data/experts/security/security-ai-generated-code-auditor.md +207 -0
  193. package/data/experts/security/security-appsec-engineer.md +491 -0
  194. package/data/experts/security/security-architect.md +304 -0
  195. package/data/experts/security/security-blockchain-security-auditor.md +463 -0
  196. package/data/experts/security/security-cloud-security-architect.md +523 -0
  197. package/data/experts/security/security-compliance-auditor.md +158 -0
  198. package/data/experts/security/security-incident-responder.md +437 -0
  199. package/data/experts/security/security-penetration-tester.md +399 -0
  200. package/data/experts/security/security-secrets-credential-engineer.md +176 -0
  201. package/data/experts/security/security-senior-secops.md +750 -0
  202. package/data/experts/security/security-threat-detection-engineer.md +534 -0
  203. package/data/experts/security/security-threat-intelligence-analyst.md +644 -0
  204. package/data/experts/spatial-computing/macos-spatial-metal-engineer.md +337 -0
  205. package/data/experts/spatial-computing/terminal-integration-specialist.md +70 -0
  206. package/data/experts/spatial-computing/visionos-spatial-engineer.md +54 -0
  207. package/data/experts/spatial-computing/xr-cockpit-interaction-specialist.md +32 -0
  208. package/data/experts/spatial-computing/xr-immersive-developer.md +32 -0
  209. package/data/experts/spatial-computing/xr-interface-architect.md +32 -0
  210. package/data/experts/specialized/accounts-payable-agent.md +185 -0
  211. package/data/experts/specialized/agentic-identity-trust.md +387 -0
  212. package/data/experts/specialized/agents-orchestrator.md +367 -0
  213. package/data/experts/specialized/automation-governance-architect.md +216 -0
  214. package/data/experts/specialized/business-strategist.md +488 -0
  215. package/data/experts/specialized/change-management-consultant.md +497 -0
  216. package/data/experts/specialized/chief-financial-officer.md +388 -0
  217. package/data/experts/specialized/corporate-training-designer.md +192 -0
  218. package/data/experts/specialized/customer-service.md +398 -0
  219. package/data/experts/specialized/customer-success-manager.md +460 -0
  220. package/data/experts/specialized/data-consolidation-agent.md +60 -0
  221. package/data/experts/specialized/data-privacy-officer.md +412 -0
  222. package/data/experts/specialized/esg-sustainability-officer.md +396 -0
  223. package/data/experts/specialized/government-digital-presales-consultant.md +363 -0
  224. package/data/experts/specialized/grant-writer.md +511 -0
  225. package/data/experts/specialized/healthcare-aging-parent-care-companion.md +414 -0
  226. package/data/experts/specialized/healthcare-customer-service.md +389 -0
  227. package/data/experts/specialized/healthcare-marketing-compliance.md +395 -0
  228. package/data/experts/specialized/hospitality-guest-services.md +603 -0
  229. package/data/experts/specialized/hr-onboarding.md +451 -0
  230. package/data/experts/specialized/identity-graph-operator.md +260 -0
  231. package/data/experts/specialized/language-translator.md +264 -0
  232. package/data/experts/specialized/legal-billing-time-tracking.md +569 -0
  233. package/data/experts/specialized/legal-client-intake.md +492 -0
  234. package/data/experts/specialized/legal-document-review.md +454 -0
  235. package/data/experts/specialized/loan-officer-assistant.md +555 -0
  236. package/data/experts/specialized/lsp-index-engineer.md +314 -0
  237. package/data/experts/specialized/ma-integration-manager.md +427 -0
  238. package/data/experts/specialized/medical-billing-coding-specialist.md +491 -0
  239. package/data/experts/specialized/operations-manager.md +399 -0
  240. package/data/experts/specialized/organizational-psychologist.md +391 -0
  241. package/data/experts/specialized/personal-growth-mentor.md +159 -0
  242. package/data/experts/specialized/real-estate-buyer-seller.md +596 -0
  243. package/data/experts/specialized/recruitment-specialist.md +509 -0
  244. package/data/experts/specialized/report-distribution-agent.md +65 -0
  245. package/data/experts/specialized/resume-tailor.md +230 -0
  246. package/data/experts/specialized/retail-customer-returns.md +566 -0
  247. package/data/experts/specialized/sales-data-extraction-agent.md +67 -0
  248. package/data/experts/specialized/sales-outreach.md +425 -0
  249. package/data/experts/specialized/specialized-chief-of-staff.md +279 -0
  250. package/data/experts/specialized/specialized-civil-engineer.md +356 -0
  251. package/data/experts/specialized/specialized-codebase-archaeologist.md +341 -0
  252. package/data/experts/specialized/specialized-cultural-intelligence-strategist.md +88 -0
  253. package/data/experts/specialized/specialized-developer-advocate.md +317 -0
  254. package/data/experts/specialized/specialized-document-generator.md +55 -0
  255. package/data/experts/specialized/specialized-fedramp-rmf-compliance.md +378 -0
  256. package/data/experts/specialized/specialized-focus-music-architect.md +172 -0
  257. package/data/experts/specialized/specialized-french-consulting-market.md +194 -0
  258. package/data/experts/specialized/specialized-korean-business-navigator.md +216 -0
  259. package/data/experts/specialized/specialized-master-plan-architect.md +157 -0
  260. package/data/experts/specialized/specialized-mcp-builder.md +248 -0
  261. package/data/experts/specialized/specialized-model-qa.md +488 -0
  262. package/data/experts/specialized/specialized-pricing-analyst.md +243 -0
  263. package/data/experts/specialized/specialized-salesforce-architect.md +182 -0
  264. package/data/experts/specialized/specialized-strategy-duel-agent.md +130 -0
  265. package/data/experts/specialized/specialized-workflow-architect.md +597 -0
  266. package/data/experts/specialized/study-abroad-advisor.md +282 -0
  267. package/data/experts/specialized/supply-chain-strategist.md +582 -0
  268. package/data/experts/specialized/zk-steward.md +211 -0
  269. package/data/experts/support/support-analytics-reporter.md +365 -0
  270. package/data/experts/support/support-executive-summary-generator.md +212 -0
  271. package/data/experts/support/support-finance-tracker.md +442 -0
  272. package/data/experts/support/support-infrastructure-maintainer.md +618 -0
  273. package/data/experts/support/support-legal-compliance-checker.md +588 -0
  274. package/data/experts/support/support-support-responder.md +585 -0
  275. package/data/experts/testing/testing-accessibility-auditor.md +316 -0
  276. package/data/experts/testing/testing-api-tester.md +306 -0
  277. package/data/experts/testing/testing-evidence-collector.md +210 -0
  278. package/data/experts/testing/testing-performance-benchmarker.md +268 -0
  279. package/data/experts/testing/testing-reality-checker.md +249 -0
  280. package/data/experts/testing/testing-test-automation-engineer.md +179 -0
  281. package/data/experts/testing/testing-test-results-analyzer.md +305 -0
  282. package/data/experts/testing/testing-tool-evaluator.md +394 -0
  283. package/data/experts/testing/testing-workflow-optimizer.md +450 -0
  284. package/data/source.json +27 -0
  285. package/data/t-team.config.json +998 -0
  286. package/data/team-profiles.py +365 -0
  287. package/data/teams.json +581 -0
  288. package/data/teams.resolved.json +1121 -0
  289. package/data/zh/COVERAGE.json +20 -0
  290. package/data/zh/academic/academic-anthropologist.md +124 -0
  291. package/data/zh/academic/academic-geographer.md +126 -0
  292. package/data/zh/academic/academic-historian.md +122 -0
  293. package/data/zh/academic/academic-narratologist.md +117 -0
  294. package/data/zh/academic/academic-psychologist.md +117 -0
  295. package/data/zh/academic/academic-statistician.md +40 -0
  296. package/data/zh/descriptions.json +281 -0
  297. package/data/zh/design/design-brand-guardian.md +321 -0
  298. package/data/zh/design/design-image-prompt-engineer.md +255 -0
  299. package/data/zh/design/design-inclusive-visuals-specialist.md +177 -0
  300. package/data/zh/design/design-persona-walkthrough.md +271 -0
  301. package/data/zh/design/design-ui-designer.md +382 -0
  302. package/data/zh/design/design-ui-finish-gate-reviewer.md +40 -0
  303. package/data/zh/design/design-ux-architect.md +482 -0
  304. package/data/zh/design/design-ux-researcher.md +328 -0
  305. package/data/zh/design/design-visual-storyteller.md +159 -0
  306. package/data/zh/design/design-whimsy-injector.md +453 -0
  307. package/data/zh/divisions.json +74 -0
  308. package/data/zh/engineering/engineering-ai-data-remediation-engineer.md +209 -0
  309. package/data/zh/engineering/engineering-ai-engineer.md +161 -0
  310. package/data/zh/engineering/engineering-api-platform-engineer.md +40 -0
  311. package/data/zh/engineering/engineering-ats-validator-architect.md +383 -0
  312. package/data/zh/engineering/engineering-autonomous-optimization-architect.md +115 -0
  313. package/data/zh/engineering/engineering-backend-architect.md +234 -0
  314. package/data/zh/engineering/engineering-china-network-engineer.md +252 -0
  315. package/data/zh/engineering/engineering-cms-developer.md +534 -0
  316. package/data/zh/engineering/engineering-code-reviewer.md +172 -0
  317. package/data/zh/engineering/engineering-codebase-onboarding-engineer.md +172 -0
  318. package/data/zh/engineering/engineering-data-engineer.md +324 -0
  319. package/data/zh/engineering/engineering-data-visualization-engineer.md +40 -0
  320. package/data/zh/engineering/engineering-database-optimizer.md +175 -0
  321. package/data/zh/engineering/engineering-database-reliability-engineer.md +40 -0
  322. package/data/zh/engineering/engineering-desktop-app-engineer.md +40 -0
  323. package/data/zh/engineering/engineering-developer-tooling-engineer.md +40 -0
  324. package/data/zh/engineering/engineering-devops-automator.md +375 -0
  325. package/data/zh/engineering/engineering-drupal-performance.md +40 -0
  326. package/data/zh/engineering/engineering-drupal-shopping-cart.md +359 -0
  327. package/data/zh/engineering/engineering-email-intelligence-engineer.md +349 -0
  328. package/data/zh/engineering/engineering-embedded-firmware-engineer.md +168 -0
  329. package/data/zh/engineering/engineering-feishu-integration-developer.md +597 -0
  330. package/data/zh/engineering/engineering-filament-optimization-specialist.md +283 -0
  331. package/data/zh/engineering/engineering-finops-engineer.md +40 -0
  332. package/data/zh/engineering/engineering-frontend-developer.md +224 -0
  333. package/data/zh/engineering/engineering-gaussdb-expert.md +40 -0
  334. package/data/zh/engineering/engineering-git-workflow-master.md +220 -0
  335. package/data/zh/engineering/engineering-i18n-engineer.md +40 -0
  336. package/data/zh/engineering/engineering-identity-access-engineer.md +40 -0
  337. package/data/zh/engineering/engineering-incident-response-commander.md +465 -0
  338. package/data/zh/engineering/engineering-iot-fleet-engineer.md +40 -0
  339. package/data/zh/engineering/engineering-it-service-manager.md +560 -0
  340. package/data/zh/engineering/engineering-knowledge-graph-engineer.md +40 -0
  341. package/data/zh/engineering/engineering-llm-post-training-engineer.md +40 -0
  342. package/data/zh/engineering/engineering-minimal-change-engineer.md +206 -0
  343. package/data/zh/engineering/engineering-mobile-app-builder.md +434 -0
  344. package/data/zh/engineering/engineering-mobile-release-engineer.md +40 -0
  345. package/data/zh/engineering/engineering-multi-agent-systems-architect.md +599 -0
  346. package/data/zh/engineering/engineering-network-engineer.md +40 -0
  347. package/data/zh/engineering/engineering-orgscript-engineer.md +112 -0
  348. package/data/zh/engineering/engineering-payments-billing-engineer.md +40 -0
  349. package/data/zh/engineering/engineering-pdf-engine-architect.md +666 -0
  350. package/data/zh/engineering/engineering-platform-engineer.md +271 -0
  351. package/data/zh/engineering/engineering-privacy-engineer.md +40 -0
  352. package/data/zh/engineering/engineering-prompt-engineer.md +203 -0
  353. package/data/zh/engineering/engineering-rag-pipeline-engineer.md +40 -0
  354. package/data/zh/engineering/engineering-rapid-prototyper.md +461 -0
  355. package/data/zh/engineering/engineering-realtime-collaboration-engineer.md +40 -0
  356. package/data/zh/engineering/engineering-rust-refactoring-specialist.md +40 -0
  357. package/data/zh/engineering/engineering-search-relevance-engineer.md +40 -0
  358. package/data/zh/engineering/engineering-section-508-specialist.md +40 -0
  359. package/data/zh/engineering/engineering-senior-developer.md +177 -0
  360. package/data/zh/engineering/engineering-software-architect.md +200 -0
  361. package/data/zh/engineering/engineering-solidity-smart-contract-engineer.md +541 -0
  362. package/data/zh/engineering/engineering-sre.md +233 -0
  363. package/data/zh/engineering/engineering-technical-writer.md +409 -0
  364. package/data/zh/engineering/engineering-universal-document-compiler.md +344 -0
  365. package/data/zh/engineering/engineering-uswds-developer.md +40 -0
  366. package/data/zh/engineering/engineering-video-streaming-engineer.md +40 -0
  367. package/data/zh/engineering/engineering-voice-ai-integration-engineer.md +560 -0
  368. package/data/zh/engineering/engineering-webassembly-engineer.md +40 -0
  369. package/data/zh/engineering/engineering-wechat-mini-program-developer.md +288 -0
  370. package/data/zh/engineering/engineering-wordpress-performance.md +40 -0
  371. package/data/zh/engineering/engineering-wordpress-shopping-cart.md +345 -0
  372. package/data/zh/finance/finance-bookkeeper-controller.md +271 -0
  373. package/data/zh/finance/finance-financial-analyst.md +244 -0
  374. package/data/zh/finance/finance-fpa-analyst.md +272 -0
  375. package/data/zh/finance/finance-investment-researcher.md +283 -0
  376. package/data/zh/finance/finance-tax-strategist.md +250 -0
  377. package/data/zh/game-development/blender/blender-addon-engineer.md +233 -0
  378. package/data/zh/game-development/economy-designer.md +40 -0
  379. package/data/zh/game-development/game-audio-engineer.md +265 -0
  380. package/data/zh/game-development/game-designer.md +168 -0
  381. package/data/zh/game-development/godot/godot-gameplay-scripter.md +335 -0
  382. package/data/zh/game-development/godot/godot-multiplayer-engineer.md +296 -0
  383. package/data/zh/game-development/godot/godot-shader-developer.md +267 -0
  384. package/data/zh/game-development/level-designer.md +209 -0
  385. package/data/zh/game-development/narrative-designer.md +244 -0
  386. package/data/zh/game-development/roblox-studio/roblox-avatar-creator.md +298 -0
  387. package/data/zh/game-development/roblox-studio/roblox-experience-designer.md +306 -0
  388. package/data/zh/game-development/roblox-studio/roblox-systems-scripter.md +325 -0
  389. package/data/zh/game-development/technical-artist.md +230 -0
  390. package/data/zh/game-development/unity/unity-architect.md +272 -0
  391. package/data/zh/game-development/unity/unity-editor-tool-developer.md +300 -0
  392. package/data/zh/game-development/unity/unity-multiplayer-engineer.md +238 -0
  393. package/data/zh/game-development/unity/unity-shader-graph-artist.md +270 -0
  394. package/data/zh/game-development/unreal-engine/unreal-multiplayer-architect.md +314 -0
  395. package/data/zh/game-development/unreal-engine/unreal-systems-engineer.md +311 -0
  396. package/data/zh/game-development/unreal-engine/unreal-technical-artist.md +256 -0
  397. package/data/zh/game-development/unreal-engine/unreal-world-builder.md +274 -0
  398. package/data/zh/gis/gis-3d-scene-developer.md +110 -0
  399. package/data/zh/gis/gis-analyst.md +90 -0
  400. package/data/zh/gis/gis-bim-specialist.md +107 -0
  401. package/data/zh/gis/gis-cartography-designer.md +149 -0
  402. package/data/zh/gis/gis-drone-reality-mapping.md +119 -0
  403. package/data/zh/gis/gis-geoai-ml-engineer.md +104 -0
  404. package/data/zh/gis/gis-geoprocessing-specialist.md +96 -0
  405. package/data/zh/gis/gis-qa-engineer.md +132 -0
  406. package/data/zh/gis/gis-solution-engineer.md +100 -0
  407. package/data/zh/gis/gis-spatial-data-engineer.md +96 -0
  408. package/data/zh/gis/gis-spatial-data-scientist.md +110 -0
  409. package/data/zh/gis/gis-technical-consultant.md +85 -0
  410. package/data/zh/gis/gis-web-gis-developer.md +107 -0
  411. package/data/zh/healthcare/healthcare-clinical-evidence-agent.md +40 -0
  412. package/data/zh/healthcare/healthcare-innovation-strategist.md +40 -0
  413. package/data/zh/healthcare/healthcare-sovereign-health-systems-agent.md +40 -0
  414. package/data/zh/manual-bodies/engineering/engineering-ats-validator-architect.md +383 -0
  415. package/data/zh/manual-bodies/engineering/engineering-china-network-engineer.md +252 -0
  416. package/data/zh/manual-bodies/engineering/engineering-pdf-engine-architect.md +666 -0
  417. package/data/zh/manual-bodies/engineering/engineering-platform-engineer.md +271 -0
  418. package/data/zh/manual-bodies/engineering/engineering-universal-document-compiler.md +344 -0
  419. package/data/zh/manual-bodies/specialized/specialized-focus-music-architect.md +172 -0
  420. package/data/zh/manual.json +22 -0
  421. package/data/zh/marketing/marketing-aeo-foundations.md +263 -0
  422. package/data/zh/marketing/marketing-agentic-search-optimizer.md +312 -0
  423. package/data/zh/marketing/marketing-ai-citation-strategist.md +169 -0
  424. package/data/zh/marketing/marketing-app-store-optimizer.md +319 -0
  425. package/data/zh/marketing/marketing-baidu-seo-specialist.md +220 -0
  426. package/data/zh/marketing/marketing-bilibili-content-strategist.md +40 -0
  427. package/data/zh/marketing/marketing-book-co-author.md +109 -0
  428. package/data/zh/marketing/marketing-carousel-growth-engine.md +215 -0
  429. package/data/zh/marketing/marketing-china-ecommerce-operator.md +277 -0
  430. package/data/zh/marketing/marketing-china-market-localization-strategist.md +282 -0
  431. package/data/zh/marketing/marketing-content-creator.md +145 -0
  432. package/data/zh/marketing/marketing-cross-border-ecommerce.md +260 -0
  433. package/data/zh/marketing/marketing-douyin-strategist.md +150 -0
  434. package/data/zh/marketing/marketing-email-strategist.md +248 -0
  435. package/data/zh/marketing/marketing-global-podcast-strategist.md +204 -0
  436. package/data/zh/marketing/marketing-growth-hacker.md +121 -0
  437. package/data/zh/marketing/marketing-instagram-curator.md +179 -0
  438. package/data/zh/marketing/marketing-kuaishou-strategist.md +182 -0
  439. package/data/zh/marketing/marketing-linkedin-content-creator.md +232 -0
  440. package/data/zh/marketing/marketing-livestream-commerce-coach.md +303 -0
  441. package/data/zh/marketing/marketing-multi-platform-publisher.md +216 -0
  442. package/data/zh/marketing/marketing-podcast-strategist.md +278 -0
  443. package/data/zh/marketing/marketing-pr-communications-manager.md +472 -0
  444. package/data/zh/marketing/marketing-private-domain-operator.md +309 -0
  445. package/data/zh/marketing/marketing-reddit-community-builder.md +127 -0
  446. package/data/zh/marketing/marketing-seo-specialist.md +298 -0
  447. package/data/zh/marketing/marketing-short-video-editing-coach.md +413 -0
  448. package/data/zh/marketing/marketing-social-media-strategist.md +118 -0
  449. package/data/zh/marketing/marketing-tiktok-strategist.md +124 -0
  450. package/data/zh/marketing/marketing-twitter-engager.md +132 -0
  451. package/data/zh/marketing/marketing-video-optimization-specialist.md +128 -0
  452. package/data/zh/marketing/marketing-wechat-official-account.md +158 -0
  453. package/data/zh/marketing/marketing-weibo-strategist.md +241 -0
  454. package/data/zh/marketing/marketing-x-twitter-intelligence-analyst.md +160 -0
  455. package/data/zh/marketing/marketing-xiaohongshu-specialist.md +151 -0
  456. package/data/zh/marketing/marketing-zhihu-strategist.md +175 -0
  457. package/data/zh/names.json +281 -0
  458. package/data/zh/paid-media/paid-media-auditor.md +170 -0
  459. package/data/zh/paid-media/paid-media-creative-strategist.md +173 -0
  460. package/data/zh/paid-media/paid-media-paid-social-strategist.md +180 -0
  461. package/data/zh/paid-media/paid-media-ppc-strategist.md +180 -0
  462. package/data/zh/paid-media/paid-media-programmatic-buyer.md +177 -0
  463. package/data/zh/paid-media/paid-media-search-query-analyst.md +182 -0
  464. package/data/zh/paid-media/paid-media-tracking-specialist.md +199 -0
  465. package/data/zh/product/product-behavioral-nudge-engine.md +246 -0
  466. package/data/zh/product/product-feedback-synthesizer.md +175 -0
  467. package/data/zh/product/product-manager.md +474 -0
  468. package/data/zh/product/product-sprint-prioritizer.md +133 -0
  469. package/data/zh/product/product-trend-researcher.md +143 -0
  470. package/data/zh/project-management/project-management-experiment-tracker.md +206 -0
  471. package/data/zh/project-management/project-management-jira-workflow-steward.md +249 -0
  472. package/data/zh/project-management/project-management-meeting-notes-specialist.md +94 -0
  473. package/data/zh/project-management/project-management-project-shepherd.md +202 -0
  474. package/data/zh/project-management/project-management-studio-operations.md +208 -0
  475. package/data/zh/project-management/project-management-studio-producer.md +211 -0
  476. package/data/zh/project-management/project-manager-senior.md +135 -0
  477. package/data/zh/research/research-synthesist.md +40 -0
  478. package/data/zh/sales/sales-account-strategist.md +243 -0
  479. package/data/zh/sales/sales-coach.md +291 -0
  480. package/data/zh/sales/sales-deal-strategist.md +204 -0
  481. package/data/zh/sales/sales-discovery-coach.md +230 -0
  482. package/data/zh/sales/sales-engineer.md +200 -0
  483. package/data/zh/sales/sales-offer-lead-gen-strategist.md +256 -0
  484. package/data/zh/sales/sales-outbound-strategist.md +208 -0
  485. package/data/zh/sales/sales-pipeline-analyst.md +284 -0
  486. package/data/zh/sales/sales-proposal-strategist.md +233 -0
  487. package/data/zh/security/security-ai-generated-code-auditor.md +40 -0
  488. package/data/zh/security/security-appsec-engineer.md +490 -0
  489. package/data/zh/security/security-architect.md +303 -0
  490. package/data/zh/security/security-blockchain-security-auditor.md +462 -0
  491. package/data/zh/security/security-cloud-security-architect.md +522 -0
  492. package/data/zh/security/security-compliance-auditor.md +157 -0
  493. package/data/zh/security/security-incident-responder.md +436 -0
  494. package/data/zh/security/security-penetration-tester.md +398 -0
  495. package/data/zh/security/security-secrets-credential-engineer.md +40 -0
  496. package/data/zh/security/security-senior-secops.md +751 -0
  497. package/data/zh/security/security-threat-detection-engineer.md +533 -0
  498. package/data/zh/security/security-threat-intelligence-analyst.md +643 -0
  499. package/data/zh/spatial-computing/macos-spatial-metal-engineer.md +337 -0
  500. package/data/zh/spatial-computing/terminal-integration-specialist.md +236 -0
  501. package/data/zh/spatial-computing/visionos-spatial-engineer.md +282 -0
  502. package/data/zh/spatial-computing/xr-cockpit-interaction-specialist.md +220 -0
  503. package/data/zh/spatial-computing/xr-immersive-developer.md +229 -0
  504. package/data/zh/spatial-computing/xr-interface-architect.md +253 -0
  505. package/data/zh/specialized/accounts-payable-agent.md +212 -0
  506. package/data/zh/specialized/agentic-identity-trust.md +388 -0
  507. package/data/zh/specialized/agents-orchestrator.md +366 -0
  508. package/data/zh/specialized/automation-governance-architect.md +215 -0
  509. package/data/zh/specialized/business-strategist.md +487 -0
  510. package/data/zh/specialized/change-management-consultant.md +495 -0
  511. package/data/zh/specialized/chief-financial-officer.md +390 -0
  512. package/data/zh/specialized/corporate-training-designer.md +191 -0
  513. package/data/zh/specialized/customer-service.md +40 -0
  514. package/data/zh/specialized/customer-success-manager.md +458 -0
  515. package/data/zh/specialized/data-consolidation-agent.md +327 -0
  516. package/data/zh/specialized/data-privacy-officer.md +411 -0
  517. package/data/zh/specialized/esg-sustainability-officer.md +395 -0
  518. package/data/zh/specialized/government-digital-presales-consultant.md +362 -0
  519. package/data/zh/specialized/grant-writer.md +510 -0
  520. package/data/zh/specialized/healthcare-aging-parent-care-companion.md +40 -0
  521. package/data/zh/specialized/healthcare-customer-service.md +388 -0
  522. package/data/zh/specialized/healthcare-marketing-compliance.md +394 -0
  523. package/data/zh/specialized/hospitality-guest-services.md +597 -0
  524. package/data/zh/specialized/hr-onboarding.md +450 -0
  525. package/data/zh/specialized/identity-graph-operator.md +270 -0
  526. package/data/zh/specialized/language-translator.md +275 -0
  527. package/data/zh/specialized/legal-billing-time-tracking.md +566 -0
  528. package/data/zh/specialized/legal-client-intake.md +487 -0
  529. package/data/zh/specialized/legal-document-review.md +452 -0
  530. package/data/zh/specialized/loan-officer-assistant.md +549 -0
  531. package/data/zh/specialized/lsp-index-engineer.md +334 -0
  532. package/data/zh/specialized/ma-integration-manager.md +426 -0
  533. package/data/zh/specialized/medical-billing-coding-specialist.md +489 -0
  534. package/data/zh/specialized/operations-manager.md +398 -0
  535. package/data/zh/specialized/organizational-psychologist.md +390 -0
  536. package/data/zh/specialized/personal-growth-mentor.md +158 -0
  537. package/data/zh/specialized/real-estate-buyer-seller.md +594 -0
  538. package/data/zh/specialized/recruitment-specialist.md +49 -0
  539. package/data/zh/specialized/report-distribution-agent.md +354 -0
  540. package/data/zh/specialized/resume-tailor.md +40 -0
  541. package/data/zh/specialized/retail-customer-returns.md +564 -0
  542. package/data/zh/specialized/sales-data-extraction-agent.md +159 -0
  543. package/data/zh/specialized/sales-outreach.md +40 -0
  544. package/data/zh/specialized/specialized-chief-of-staff.md +40 -0
  545. package/data/zh/specialized/specialized-civil-engineer.md +355 -0
  546. package/data/zh/specialized/specialized-codebase-archaeologist.md +40 -0
  547. package/data/zh/specialized/specialized-cultural-intelligence-strategist.md +168 -0
  548. package/data/zh/specialized/specialized-developer-advocate.md +334 -0
  549. package/data/zh/specialized/specialized-document-generator.md +346 -0
  550. package/data/zh/specialized/specialized-fedramp-rmf-compliance.md +40 -0
  551. package/data/zh/specialized/specialized-focus-music-architect.md +172 -0
  552. package/data/zh/specialized/specialized-french-consulting-market.md +46 -0
  553. package/data/zh/specialized/specialized-korean-business-navigator.md +46 -0
  554. package/data/zh/specialized/specialized-master-plan-architect.md +40 -0
  555. package/data/zh/specialized/specialized-mcp-builder.md +351 -0
  556. package/data/zh/specialized/specialized-model-qa.md +507 -0
  557. package/data/zh/specialized/specialized-pricing-analyst.md +242 -0
  558. package/data/zh/specialized/specialized-salesforce-architect.md +179 -0
  559. package/data/zh/specialized/specialized-strategy-duel-agent.md +129 -0
  560. package/data/zh/specialized/specialized-workflow-architect.md +596 -0
  561. package/data/zh/specialized/study-abroad-advisor.md +281 -0
  562. package/data/zh/specialized/supply-chain-strategist.md +581 -0
  563. package/data/zh/specialized/zk-steward.md +228 -0
  564. package/data/zh/support/support-analytics-reporter.md +364 -0
  565. package/data/zh/support/support-executive-summary-generator.md +217 -0
  566. package/data/zh/support/support-finance-tracker.md +447 -0
  567. package/data/zh/support/support-infrastructure-maintainer.md +623 -0
  568. package/data/zh/support/support-legal-compliance-checker.md +587 -0
  569. package/data/zh/support/support-support-responder.md +584 -0
  570. package/data/zh/testing/testing-accessibility-auditor.md +329 -0
  571. package/data/zh/testing/testing-api-tester.md +305 -0
  572. package/data/zh/testing/testing-evidence-collector.md +153 -0
  573. package/data/zh/testing/testing-performance-benchmarker.md +196 -0
  574. package/data/zh/testing/testing-reality-checker.md +235 -0
  575. package/data/zh/testing/testing-test-automation-engineer.md +40 -0
  576. package/data/zh/testing/testing-test-results-analyzer.md +313 -0
  577. package/data/zh/testing/testing-tool-evaluator.md +402 -0
  578. package/data/zh/testing/testing-workflow-optimizer.md +458 -0
  579. package/lib/assets/t-team/action-celebrating-v2.png +0 -0
  580. package/lib/assets/t-team/action-reporting-v2.png +0 -0
  581. package/lib/assets/t-team/action-sending-v2.png +0 -0
  582. package/lib/assets/t-team/action-sleeping-v2.png +0 -0
  583. package/lib/assets/t-team/action-thinking-v2.png +0 -0
  584. package/lib/assets/t-team/action-working-v2.png +0 -0
  585. package/lib/assets/t-team/member-data-v2.png +0 -0
  586. package/lib/assets/t-team/member-designer-v2.png +0 -0
  587. package/lib/assets/t-team/member-docs-v2.png +0 -0
  588. package/lib/assets/t-team/member-engineer-v2.png +0 -0
  589. package/lib/assets/t-team/member-operator-v2.png +0 -0
  590. package/lib/assets/t-team/member-qa-v2.png +0 -0
  591. package/lib/assets/t-team/member-researcher-v2.png +0 -0
  592. package/lib/assets/t-team/member-security-v2.png +0 -0
  593. package/lib/assets/t-team/team-lead-v2.png +0 -0
  594. package/lib/bootstrap.js +85 -0
  595. package/lib/catalog.js +376 -0
  596. package/lib/client.js +21034 -0
  597. package/lib/command.js +228 -0
  598. package/lib/i18n.js +136 -0
  599. package/lib/index.js +686 -0
  600. package/lib/plan-check.js +171 -0
  601. package/lib/remote.js +353 -0
  602. package/lib/squads.js +231 -0
  603. package/lib/teams/capabilities.js +106 -0
  604. package/lib/teams/command.js +143 -0
  605. package/lib/teams/event-types.js +12 -0
  606. package/lib/teams/events.js +60 -0
  607. package/lib/teams/harness-compat.js +179 -0
  608. package/lib/teams/index.js +441 -0
  609. package/lib/teams/members.js +602 -0
  610. package/lib/teams/profiles.js +572 -0
  611. package/lib/teams/quality-gates.js +822 -0
  612. package/lib/teams/scheduler.js +434 -0
  613. package/lib/teams/snapshot.js +181 -0
  614. package/lib/teams/state.js +925 -0
  615. package/lib/teams/tool-names.js +11 -0
  616. package/lib/teams/tools.js +2279 -0
  617. package/lib/teams/types.js +22 -0
  618. package/lib/teams/web-routes.js +86 -0
  619. package/package.json +191 -0
package/lib/command.js ADDED
@@ -0,0 +1,228 @@
1
+ /**
2
+ * `/t` —— T专家 的小队短命令。
3
+ *
4
+ * 只做一件事:把 `/t <小队> <目标>` 翻译成引擎认得的手势消息
5
+ * `/t --profile <key> <目标>`(引擎的手势边界认得这个形状),并作为**一条真实用户消息**投递回去;
6
+ * 之后由引擎的 `agent/pre-step` 手势边界接手。
7
+ * 也就是说:引擎 100% 复用内置的团队引擎(lib/teams/),T专家 只提供「人 + 短命令」。
8
+ */
9
+ import { readFileSync } from "node:fs";
10
+ import { createUserMessage } from "@deepseek-ai/dsh-llm";
11
+
12
+ export const COMMAND_NAME = "t";
13
+
14
+ /** 把两种来源的成员写法归一成 { name, role }:
15
+ * - team-profiles.py 生成的 teams.resolved.json:成员已是对象
16
+ * - 人工维护的 teams.json:成员是专家 slug 字符串
17
+ */
18
+ function normalizeMembers(members) {
19
+ if (!Array.isArray(members)) return [];
20
+ return members
21
+ .map((member) => {
22
+ if (typeof member === "string") return { name: member, role: member };
23
+ if (member !== null && typeof member === "object" && typeof member.name === "string") {
24
+ return { name: member.name, role: typeof member.role === "string" ? member.role : member.name };
25
+ }
26
+ return undefined;
27
+ })
28
+ .filter((member) => member !== undefined);
29
+ }
30
+
31
+ /** 归一成 { description, aliases, taskPlanning, members },缺字段给安全默认值。 */
32
+ function normalizeProfile(profile) {
33
+ const source = profile !== null && typeof profile === "object" ? profile : {};
34
+ return {
35
+ description: typeof source.description === "string" ? source.description : "",
36
+ aliases: Array.isArray(source.aliases) ? source.aliases.filter((a) => typeof a === "string") : [],
37
+ taskPlanning: source.taskPlanning === "seed" ? "seed" : "captain",
38
+ members: normalizeMembers(source.members),
39
+ };
40
+ }
41
+
42
+ /**
43
+ * 每次调用都从磁盘读小队定义(改名单不需要重启):
44
+ * 优先读同目录下由 team-profiles.py 生成的 `teams.resolved.json`(成员带中文名),
45
+ * 缺失时回退人工维护的 `teams.json`(成员是 slug)。
46
+ */
47
+ export function readTeams(file) {
48
+ const candidates = [file.replace(/teams\.json$/u, "teams.resolved.json"), file];
49
+ for (const candidate of candidates) {
50
+ try {
51
+ const parsed = JSON.parse(readFileSync(candidate, "utf8"));
52
+ const profiles = parsed?.profiles;
53
+ if (profiles === null || typeof profiles !== "object" || Array.isArray(profiles)) continue;
54
+ const out = {};
55
+ for (const [key, profile] of Object.entries(profiles)) out[key] = normalizeProfile(profile);
56
+ if (Object.keys(out).length > 0) return out;
57
+ } catch {
58
+ /* 试下一个候选 */
59
+ }
60
+ }
61
+ return {};
62
+ }
63
+
64
+ /** 归一化:小写、去空白、全角转半角(中文别名不受影响)。 */
65
+ function normalizeToken(value) {
66
+ return String(value ?? "")
67
+ .trim()
68
+ .toLowerCase()
69
+ .replace(/[\uFF01-\uFF5E]/gu, (ch) => String.fromCharCode(ch.charCodeAt(0) - 0xfee0))
70
+ .replace(/[\s\u3000]/gu, "");
71
+ }
72
+
73
+ /**
74
+ * 用 profile key 或别名找小队。三轮:① 精确(key/别名)② 双向子串(用户多打或少打字)
75
+ * ③ 多个别名命中同一小队时视为命中(例如「写首诗」同时含「诗」与「写」两个别名)。
76
+ */
77
+ export function resolveTeam(profiles, query) {
78
+ const needle = normalizeToken(query);
79
+ if (needle === "") return undefined;
80
+ const entries = Object.entries(profiles).map(([key, profile]) => ({
81
+ key,
82
+ profile,
83
+ tokens: [key, ...(Array.isArray(profile?.aliases) ? profile.aliases : [])].map(normalizeToken).filter((t) => t !== ""),
84
+ }));
85
+ for (const entry of entries) {
86
+ if (entry.tokens.some((token) => token === needle)) return { key: entry.key, profile: entry.profile };
87
+ }
88
+ const fuzzy = entries.filter((entry) => entry.tokens.some((token) => token.includes(needle) || needle.includes(token)));
89
+ if (fuzzy.length === 1) return { key: fuzzy[0].key, profile: fuzzy[0].profile };
90
+ const multi = entries.filter((entry) => entry.tokens.filter((token) => needle.includes(token)).length >= 2);
91
+ if (multi.length === 1) return { key: multi[0].key, profile: multi[0].profile };
92
+ return undefined;
93
+ }
94
+
95
+ /** 小队一句话摘要(给队长复述用)。 */
96
+ function describeProfile(key, profile) {
97
+ const members = Array.isArray(profile?.members) ? profile.members : [];
98
+ const names = members.map((member) => member.name).filter((name) => typeof name === "string");
99
+ const aliases = Array.isArray(profile?.aliases) && profile.aliases.length > 0 ? `(别名 ${profile.aliases.join(" / ")})` : "";
100
+ return `${key}${aliases} — ${profile?.description ?? ""}${names.length > 0 ? ` · ${names.length} 人:${names.join("、")}` : ""}`;
101
+ }
102
+
103
+ /**
104
+ * 让队长把信息**用中文说出来**的投递文本。
105
+ *
106
+ * 为什么不用命令的返回值:部分 DSH 版本里命令行的结果行不渲染(用户「发了命令没任何反应」),
107
+ * 而 followup 消息一定会渲染成可见对话。所以 `/t` 的每一种结果都投一条可读指令给队长。
108
+ */
109
+ function relayListDirective(list) {
110
+ return [
111
+ "【T专家 · 小队列表】用户敲了 `/t`(没有带目标),请直接用中文把下面的小队列表回复给用户,",
112
+ "并带一句用法提示:`/t <小队|别名> <目标>`。不要创建团队、不要调用建队工具。",
113
+ "",
114
+ list,
115
+ ].join("\n");
116
+ }
117
+
118
+ function relayPickDirective(key, profile) {
119
+ const members = Array.isArray(profile?.members) ? profile.members : [];
120
+ const names = members.map((member) => member.name).filter((name) => typeof name === "string");
121
+ return [
122
+ `【T专家 · 已选定小队:${key}】用户敲了 \`/t ${key}\` 但没给目标。`,
123
+ "请用中文先列出这个小队的成员,再问用户这次要完成什么。现在不要建队、不要调用建队工具。",
124
+ "",
125
+ `小队:${describeProfile(key, profile)}`,
126
+ names.length > 0 ? `成员:${names.join("、")}` : "成员:尚未解析(跑一次 team-profiles.py)",
127
+ ].join("\n");
128
+ }
129
+
130
+ function relayRouteDirective(input, list) {
131
+ return [
132
+ `【T专家 · 未指定小队】用户敲的是:\`/t ${input}\`,其中没有能匹配到小队名的词。`,
133
+ `请把「${input}」当作目标,从下面的小队里挑最合适的一个,然后**直接调用 t_team_create 并带上 profile="<key>"** 建队(approval=\"required\" 先 staged,等用户在面板 review);`,
134
+ "不要反问用户该用哪个小队,也不要自己手搭成员——profile 已带好成员与人格。",
135
+ "若确实没有合适的小队,就用中文说明原因并列出可用小队。",
136
+ "",
137
+ list,
138
+ ].join("\n");
139
+ }
140
+
141
+ /** `/t` 无参数时的列表。 */
142
+ export function renderTeamList(profiles) {
143
+ const keys = Object.keys(profiles);
144
+ if (keys.length === 0) {
145
+ return "还没有配置小队。打开 设置 → T专家 → 小队 保存一次就会生成(保存时用数据目录里的 team-profiles.py 编译引擎配置)。";
146
+ }
147
+ const lines = ["T专家 小队(用 /t <小队> <目标> 拉起):"];
148
+ for (const key of keys) {
149
+ const profile = profiles[key] ?? {};
150
+ const members = Array.isArray(profile.members) ? profile.members : [];
151
+ const names = members.map((member) => member.name).filter((name) => typeof name === "string");
152
+ const aliases = Array.isArray(profile.aliases) && profile.aliases.length > 0
153
+ ? `(别名 ${profile.aliases.join(" / ")})`
154
+ : "";
155
+ const detail = names.length > 0 ? `${names.length} 人:${names.join("、")}` : "尚未解析成员(跑一次 team-profiles.py)";
156
+ lines.push(`- ${key}${aliases} — ${profile.description ?? ""} · ${detail}`);
157
+ }
158
+ lines.push("也可以直接用引号里的完整写法:/t --profile <key> <目标>");
159
+ return lines.join("\n");
160
+ }
161
+
162
+ /**
163
+ * 注册 `/t`。
164
+ * @param ctx 宿主上下文
165
+ * @param options.teamsFile teams.json 路径(通常与名册同目录)
166
+ * @param options.hasEngine 探测内置团队引擎是否在位的函数
167
+ */
168
+ export function registerTeamCommand(ctx, options) {
169
+ const teamsFile = options.teamsFile;
170
+ const hasEngine = options.hasEngine;
171
+ ctx.effect(() => ctx.commands.register({
172
+ name: COMMAND_NAME,
173
+ description: "用 T专家 小队执行一个目标(底层走 T专家 内置的多智能体团队引擎)",
174
+ input: { hint: "<小队名|别名> <目标>" },
175
+ handler(invocation) {
176
+ if (hasEngine() !== true) {
177
+ const detail = typeof options.engineError === "function" ? options.engineError() : "";
178
+ const text = detail === ""
179
+ ? "团队引擎未就绪:T专家 内置的团队引擎没有挂载成功(查看 DSH 日志里的 [t-team] 行)。"
180
+ : `团队引擎挂载失败:${detail}`;
181
+ // 命令结果行在部分 DSH 版本不渲染,所以连错误也交给队长转述一次。
182
+ invocation.agent.followup(createUserMessage({
183
+ content: [{ type: "text", text: `【T专家】团队引擎未就绪,请用中文把这句话转告用户,不要建队:${text}` }],
184
+ source: { kind: "user" },
185
+ }));
186
+ return { kind: "error", text };
187
+ }
188
+ const profiles = readTeams(teamsFile);
189
+ const list = renderTeamList(profiles);
190
+ const deliver = (text) => invocation.agent.followup(createUserMessage({
191
+ content: [{ type: "text", text }],
192
+ source: { kind: "user" },
193
+ }));
194
+ const raw = String(invocation?.rawInput ?? "").trim();
195
+
196
+ // ① `/t` 裸调用:让队长把小队列表说出来(可见),而不是只塞进命令结果行。
197
+ if (raw === "" || raw === "list" || raw === "ls" || raw === "help") {
198
+ deliver(relayListDirective(list));
199
+ return { kind: "success", text: list };
200
+ }
201
+
202
+ const [head, ...rest] = raw.split(/\s+/u);
203
+ const goal = rest.join(" ").trim();
204
+ const hit = resolveTeam(profiles, head);
205
+
206
+ // ② 没匹配到小队:不报错了事,让队长按目标自动挑小队(用户不必记得队名)。
207
+ if (hit === undefined) {
208
+ deliver(relayRouteDirective(raw, list));
209
+ return { kind: "success", text: `「${head}」不是小队名——已交给队长按目标挑选小队。` };
210
+ }
211
+
212
+ // ③ 只给了小队名:让队长列成员并问目标。
213
+ if (goal === "") {
214
+ deliver(relayPickDirective(hit.key, hit.profile));
215
+ return { kind: "success", text: `已选定「${hit.key}」,队长会列出成员并问你这次要做什么。` };
216
+ }
217
+
218
+ // ④ 小队 + 目标:投成引擎认得的手势消息,pre-step 边界注入队长协议。
219
+ deliver(`/t --profile ${hit.key} ${goal}`);
220
+ const memberCount = Array.isArray(hit.profile?.members) ? hit.profile.members.length : 0;
221
+ const label = hit.profile?.description || hit.key;
222
+ return {
223
+ kind: "success",
224
+ text: `已激活「${label}」${memberCount > 0 ? `(${memberCount} 人)` : ""} —— 队长会先给出成员与任务草案,等你 review 后再启动。`,
225
+ };
226
+ },
227
+ }), "t-team: /t command");
228
+ }
package/lib/i18n.js ADDED
@@ -0,0 +1,136 @@
1
+ /** T专家 host 侧文案与列表/结果渲染。 */
2
+
3
+ export const NS = "t-team";
4
+
5
+ const ZH = {
6
+ "error.rootMissing": "T专家 专家目录不存在或无法访问:\"{root}\"。请运行 ~/.t-team/sync.sh 生成,或配置正确的 root。",
7
+ "error.rootNotDir": "T专家 专家目录 \"{root}\" 不是目录",
8
+ "error.catalogEmpty": "在 root \"{root}\" 下没有发现任何专家(*.md)。请确认已运行 sync.sh。",
9
+ "error.summonRequiresAgent": "当前上下文没有可用的 parent agent,无法召唤专家。",
10
+ "error.providerMissing": "找不到子代理 provider:{provider}",
11
+ "error.providerNoPersona": "provider {provider} 不支持 persona,无法注入专家人格。",
12
+ "error.providerNoToolFilter": "provider {provider} 不支持 toolFilter,无法限制专家可用工具。",
13
+ "error.providerNoMaxDepth": "provider {provider} 不支持 depthLimit,无法应用 maxDepth。",
14
+ "error.expertDisabled": "专家「{name}」尚未启用:请在 设置 → T专家 里先启用它。",
15
+ "error.expertRun": "专家运行未正常结束({reason}):{detail}",
16
+ "error.partialOutput": "已产生部分输出:{text}",
17
+ "error.taskEmpty": "task 不能为空",
18
+ "error.taskTooLong": "task 超过 {limit} 个字符",
19
+ "error.specsEmpty": "experts 不能为空",
20
+ "error.specsTooMany": "一次最多召唤 {limit} 位专家",
21
+ "error.specInvalid": "experts[{index}] 需要 expert 与 task 两个字段",
22
+ "error.settingsMissing": "T专家 设置段尚未注册",
23
+ "list.headerAll": "T专家 花名册(已启用 {total} 位,覆盖 {divisions} 个分区):",
24
+ "list.headerOne": "分区 {division} 的已启用专家({count} 位):",
25
+ "list.emptyAll": "还没有启用任何专家。请在 设置 → T专家 里启用。",
26
+ "list.emptyOne": "分区「{division}」下没有已启用的专家。",
27
+ "list.unknownDivision": "找不到分区「{query}」。可用分区:{divisions}",
28
+ "list.hint": "用 summon_t_expert(expert, task) 召唤其中一位;批量用 summon_t_experts。",
29
+ "summon.batchHeader": "批量召唤 {total} 位专家:成功 {ok} / 失败 {failed}",
30
+ "summon.itemOk": "## {expert}\n{answer}",
31
+ "summon.itemFail": "## {expert}\n失败:{error}",
32
+ };
33
+
34
+ const EN = {
35
+ "error.rootMissing": "T Expert expert directory is missing or unreadable: \"{root}\". Run ~/.t-team/sync.sh or configure a valid root.",
36
+ "error.rootNotDir": "T Expert expert root \"{root}\" is not a directory",
37
+ "error.catalogEmpty": "No experts (*.md) found under root \"{root}\". Run sync.sh first.",
38
+ "error.summonRequiresAgent": "No parent agent in this context; cannot summon an expert.",
39
+ "error.providerMissing": "Subagent provider not found: {provider}",
40
+ "error.providerNoPersona": "Provider {provider} does not support persona injection.",
41
+ "error.providerNoToolFilter": "Provider {provider} does not support toolFilter.",
42
+ "error.providerNoMaxDepth": "Provider {provider} does not support depthLimit, so maxDepth cannot apply.",
43
+ "error.expertDisabled": "Expert \"{name}\" is not enabled. Enable it in Settings → T Expert first.",
44
+ "error.expertRun": "Expert run did not complete ({reason}): {detail}",
45
+ "error.partialOutput": "Partial output: {text}",
46
+ "error.taskEmpty": "task must not be empty",
47
+ "error.taskTooLong": "task exceeds {limit} characters",
48
+ "error.specsEmpty": "experts must not be empty",
49
+ "error.specsTooMany": "At most {limit} experts per call",
50
+ "error.specInvalid": "experts[{index}] requires both expert and task",
51
+ "error.settingsMissing": "T Expert settings section is not registered yet",
52
+ "list.headerAll": "T Expert roster ({total} enabled experts across {divisions} divisions):",
53
+ "list.headerOne": "Enabled experts in division {division} ({count}):",
54
+ "list.emptyAll": "No expert is enabled yet. Enable some in Settings → T Expert.",
55
+ "list.emptyOne": "No enabled expert in division \"{division}\".",
56
+ "list.unknownDivision": "Unknown division \"{query}\". Available: {divisions}",
57
+ "list.hint": "Summon one with summon_t_expert(expert, task); use summon_t_experts for a batch.",
58
+ "summon.batchHeader": "Summoned {total} experts: {ok} succeeded / {failed} failed",
59
+ "summon.itemOk": "## {expert}\n{answer}",
60
+ "summon.itemFail": "## {expert}\nfailed: {error}",
61
+ };
62
+
63
+ /** 取文案并按 {name} 占位替换。 */
64
+ export function t(locale, key, params = {}) {
65
+ const table = locale === "en" ? EN : ZH;
66
+ let text = table[key] ?? ZH[key] ?? key;
67
+ for (const [key2, value] of Object.entries(params)) {
68
+ text = text.split(`{${key2}}`).join(String(value));
69
+ }
70
+ return text;
71
+ }
72
+
73
+ /** 从宿主 locale 设置读语言,缺失或异常回退 zh。 */
74
+ export function readLocale(ctx) {
75
+ try {
76
+ const section = ctx.settings?.get?.("locale");
77
+ const preference = section?.preference;
78
+ if (typeof preference === "string" && preference.toLowerCase().startsWith("en")) return "en";
79
+ } catch {
80
+ /* 读不到就用中文 */
81
+ }
82
+ return "zh";
83
+ }
84
+
85
+ /**
86
+ * 按语言取专家显示名与简介。
87
+ * 中文优先用侧车目录的译文(expert.nameZh / descriptionZh),缺失则回退上游英文。
88
+ */
89
+ export function localized(expert, locale) {
90
+ if (locale === "en") {
91
+ return { name: expert.nameEn || expert.name, description: expert.descriptionEn || expert.description };
92
+ }
93
+ return {
94
+ name: expert.nameZh || expert.name,
95
+ description: expert.descriptionZh || expert.description,
96
+ };
97
+ }
98
+
99
+ /** list_t_experts 的文本渲染。 */
100
+ export function renderList(locale, { query, groups, total, allDivisions }) {
101
+ if (query !== "" && groups.length === 0) {
102
+ return t(locale, "list.unknownDivision", { query, divisions: allDivisions.join(", ") });
103
+ }
104
+ if (total === 0) {
105
+ return query === "" ? t(locale, "list.emptyAll") : t(locale, "list.emptyOne", { division: query });
106
+ }
107
+ const lines = [];
108
+ if (query === "") {
109
+ lines.push(t(locale, "list.headerAll", { total, divisions: groups.length }));
110
+ for (const group of groups) {
111
+ lines.push(`- ${group.label} (${group.division}) — ${group.count}`);
112
+ }
113
+ lines.push(t(locale, "list.hint"));
114
+ } else {
115
+ const group = groups[0];
116
+ lines.push(t(locale, "list.headerOne", { division: `${group.label} (${group.division})`, count: group.count }));
117
+ for (const expert of group.experts) {
118
+ const { name, description } = localized(expert, locale);
119
+ // 带上 slug:模型可以直接拿它当召唤参数,避免只靠名字解析
120
+ lines.push(`- ${expert.emoji} ${name} (${expert.slug}) — ${description}`);
121
+ }
122
+ }
123
+ return lines.join("\n");
124
+ }
125
+
126
+ /** summon_experts 的文本渲染。 */
127
+ export function renderSummonResults(locale, results) {
128
+ const ok = results.filter((r) => r.ok).length;
129
+ const lines = [t(locale, "summon.batchHeader", { total: results.length, ok, failed: results.length - ok })];
130
+ for (const item of results) {
131
+ lines.push(item.ok
132
+ ? t(locale, "summon.itemOk", { expert: item.expert, answer: item.answer })
133
+ : t(locale, "summon.itemFail", { expert: item.expert, error: item.error ?? "" }));
134
+ }
135
+ return lines.join("\n\n");
136
+ }