@proflandrigan/shards 1.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 (397) hide show
  1. package/README.md +475 -0
  2. package/package.json +37 -0
  3. package/src/agents/academic.md +276 -0
  4. package/src/agents/ai-engineer.md +377 -0
  5. package/src/agents/analytics-engineer.md +364 -0
  6. package/src/agents/applied-ml-scientist.md +410 -0
  7. package/src/agents/backend-engineer.md +255 -0
  8. package/src/agents/bi-engineer.md +333 -0
  9. package/src/agents/data-analyst.md +343 -0
  10. package/src/agents/data-engineer.md +260 -0
  11. package/src/agents/data-modeller.md +386 -0
  12. package/src/agents/data-scientist.md +366 -0
  13. package/src/agents/deep-learning-engineer.md +389 -0
  14. package/src/agents/ml-engineer.md +424 -0
  15. package/src/agents/mlops-engineer.md +339 -0
  16. package/src/agents/researcher.md +187 -0
  17. package/src/agents/specific_instructions/academic/critical_review.md +263 -0
  18. package/src/agents/specific_instructions/academic/report.md +113 -0
  19. package/src/agents/specific_instructions/ai_engineer/advise.md +162 -0
  20. package/src/agents/specific_instructions/ai_engineer/bi_engineer_handoff.md +86 -0
  21. package/src/agents/specific_instructions/ai_engineer/experiment.md +471 -0
  22. package/src/agents/specific_instructions/ai_engineer/experiment_ui_mode.md +44 -0
  23. package/src/agents/specific_instructions/ai_engineer/phases/index.md +45 -0
  24. package/src/agents/specific_instructions/ai_engineer/phases/phase-1.md +55 -0
  25. package/src/agents/specific_instructions/ai_engineer/phases/phase-2.md +86 -0
  26. package/src/agents/specific_instructions/ai_engineer/phases/phase-3.md +96 -0
  27. package/src/agents/specific_instructions/ai_engineer/phases/phase-4.md +138 -0
  28. package/src/agents/specific_instructions/ai_engineer/phases/phase-5.md +157 -0
  29. package/src/agents/specific_instructions/ai_engineer/phases/phase-6.md +196 -0
  30. package/src/agents/specific_instructions/ai_engineer/phases/phase-7.md +313 -0
  31. package/src/agents/specific_instructions/ai_engineer/phases.md +1011 -0
  32. package/src/agents/specific_instructions/ai_engineer/prompt_lab.md +161 -0
  33. package/src/agents/specific_instructions/ai_engineer/prompt_lab_ui_mode.md +28 -0
  34. package/src/agents/specific_instructions/ai_engineer/research.md +393 -0
  35. package/src/agents/specific_instructions/ai_engineer/research_ui_mode.md +66 -0
  36. package/src/agents/specific_instructions/ai_engineer/review.md +159 -0
  37. package/src/agents/specific_instructions/ai_engineer/validation_checklist.md +182 -0
  38. package/src/agents/specific_instructions/analytics_engineer/advise.md +155 -0
  39. package/src/agents/specific_instructions/analytics_engineer/bi_engineer_handoff.md +91 -0
  40. package/src/agents/specific_instructions/analytics_engineer/data_analyst_handoff.md +84 -0
  41. package/src/agents/specific_instructions/analytics_engineer/deep_phases.md +818 -0
  42. package/src/agents/specific_instructions/analytics_engineer/phases_deep/index.md +24 -0
  43. package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-1.md +77 -0
  44. package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-2.md +106 -0
  45. package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-3.md +93 -0
  46. package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-4.md +79 -0
  47. package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-5.md +61 -0
  48. package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-6.md +45 -0
  49. package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-7.md +235 -0
  50. package/src/agents/specific_instructions/analytics_engineer/phases_deep/phase-8.md +221 -0
  51. package/src/agents/specific_instructions/analytics_engineer/phases_quick/index.md +19 -0
  52. package/src/agents/specific_instructions/analytics_engineer/phases_quick/phase-1.md +47 -0
  53. package/src/agents/specific_instructions/analytics_engineer/phases_quick/phase-2.md +78 -0
  54. package/src/agents/specific_instructions/analytics_engineer/quick_phases.md +112 -0
  55. package/src/agents/specific_instructions/analytics_engineer/review.md +167 -0
  56. package/src/agents/specific_instructions/analytics_engineer/service_mode.md +369 -0
  57. package/src/agents/specific_instructions/analytics_engineer/ui_mode.md +45 -0
  58. package/src/agents/specific_instructions/analytics_engineer/update.md +162 -0
  59. package/src/agents/specific_instructions/analytics_engineer/validation_checklist.md +121 -0
  60. package/src/agents/specific_instructions/applied_ml_scientist/advise.md +143 -0
  61. package/src/agents/specific_instructions/applied_ml_scientist/phases/index.md +21 -0
  62. package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-1.md +51 -0
  63. package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-2.md +66 -0
  64. package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-3.md +113 -0
  65. package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-4.md +104 -0
  66. package/src/agents/specific_instructions/applied_ml_scientist/phases/phase-5.md +156 -0
  67. package/src/agents/specific_instructions/applied_ml_scientist/phases.md +428 -0
  68. package/src/agents/specific_instructions/applied_ml_scientist/research.md +379 -0
  69. package/src/agents/specific_instructions/applied_ml_scientist/review.md +142 -0
  70. package/src/agents/specific_instructions/applied_ml_scientist/validation_checklist.md +136 -0
  71. package/src/agents/specific_instructions/backend_engineer/clean.md +149 -0
  72. package/src/agents/specific_instructions/backend_engineer/review.md +91 -0
  73. package/src/agents/specific_instructions/backend_engineer/review_checklist.md +54 -0
  74. package/src/agents/specific_instructions/backend_engineer/service_mode.md +67 -0
  75. package/src/agents/specific_instructions/bi_engineer/advise.md +137 -0
  76. package/src/agents/specific_instructions/bi_engineer/data_analyst_handoff.md +77 -0
  77. package/src/agents/specific_instructions/bi_engineer/incoming_handoff.md +45 -0
  78. package/src/agents/specific_instructions/bi_engineer/phases/index.md +20 -0
  79. package/src/agents/specific_instructions/bi_engineer/phases/phase-1.md +164 -0
  80. package/src/agents/specific_instructions/bi_engineer/phases/phase-2.md +92 -0
  81. package/src/agents/specific_instructions/bi_engineer/phases/phase-3.md +121 -0
  82. package/src/agents/specific_instructions/bi_engineer/phases/phase-4.md +106 -0
  83. package/src/agents/specific_instructions/bi_engineer/phases.md +451 -0
  84. package/src/agents/specific_instructions/bi_engineer/review.md +166 -0
  85. package/src/agents/specific_instructions/bi_engineer/update.md +147 -0
  86. package/src/agents/specific_instructions/bi_engineer/validation_checklist.md +124 -0
  87. package/src/agents/specific_instructions/data_analyst/advise.md +138 -0
  88. package/src/agents/specific_instructions/data_analyst/explain.md +221 -0
  89. package/src/agents/specific_instructions/data_analyst/incoming_handoff.md +40 -0
  90. package/src/agents/specific_instructions/data_analyst/phases/index.md +20 -0
  91. package/src/agents/specific_instructions/data_analyst/phases/phase-1.md +159 -0
  92. package/src/agents/specific_instructions/data_analyst/phases/phase-2.md +112 -0
  93. package/src/agents/specific_instructions/data_analyst/phases/phase-3.md +265 -0
  94. package/src/agents/specific_instructions/data_analyst/phases/phase-4.md +100 -0
  95. package/src/agents/specific_instructions/data_analyst/phases.md +501 -0
  96. package/src/agents/specific_instructions/data_analyst/review.md +138 -0
  97. package/src/agents/specific_instructions/data_analyst/ui_mode.md +26 -0
  98. package/src/agents/specific_instructions/data_analyst/update.md +144 -0
  99. package/src/agents/specific_instructions/data_analyst/validation_checklist.md +95 -0
  100. package/src/agents/specific_instructions/data_engineer/advise.md +137 -0
  101. package/src/agents/specific_instructions/data_engineer/phases.md +466 -0
  102. package/src/agents/specific_instructions/data_engineer/phases_deep/index.md +23 -0
  103. package/src/agents/specific_instructions/data_engineer/phases_deep/phase-1.md +49 -0
  104. package/src/agents/specific_instructions/data_engineer/phases_deep/phase-2.md +93 -0
  105. package/src/agents/specific_instructions/data_engineer/phases_deep/phase-3.md +55 -0
  106. package/src/agents/specific_instructions/data_engineer/phases_deep/phase-4.md +48 -0
  107. package/src/agents/specific_instructions/data_engineer/phases_deep/phase-5.md +40 -0
  108. package/src/agents/specific_instructions/data_engineer/phases_deep/phase-6.md +102 -0
  109. package/src/agents/specific_instructions/data_engineer/phases_deep/phase-7.md +87 -0
  110. package/src/agents/specific_instructions/data_engineer/phases_quick/index.md +19 -0
  111. package/src/agents/specific_instructions/data_engineer/phases_quick/phase-1.md +45 -0
  112. package/src/agents/specific_instructions/data_engineer/phases_quick/phase-2.md +54 -0
  113. package/src/agents/specific_instructions/data_engineer/review.md +135 -0
  114. package/src/agents/specific_instructions/data_engineer/validation_checklist.md +136 -0
  115. package/src/agents/specific_instructions/data_modeller/advise.md +137 -0
  116. package/src/agents/specific_instructions/data_modeller/phases.md +581 -0
  117. package/src/agents/specific_instructions/data_modeller/phases_deep/index.md +23 -0
  118. package/src/agents/specific_instructions/data_modeller/phases_deep/phase-1.md +52 -0
  119. package/src/agents/specific_instructions/data_modeller/phases_deep/phase-2.md +113 -0
  120. package/src/agents/specific_instructions/data_modeller/phases_deep/phase-3.md +47 -0
  121. package/src/agents/specific_instructions/data_modeller/phases_deep/phase-4.md +51 -0
  122. package/src/agents/specific_instructions/data_modeller/phases_deep/phase-5.md +45 -0
  123. package/src/agents/specific_instructions/data_modeller/phases_deep/phase-6.md +105 -0
  124. package/src/agents/specific_instructions/data_modeller/phases_deep/phase-7.md +136 -0
  125. package/src/agents/specific_instructions/data_modeller/phases_quick/index.md +19 -0
  126. package/src/agents/specific_instructions/data_modeller/phases_quick/phase-1.md +47 -0
  127. package/src/agents/specific_instructions/data_modeller/phases_quick/phase-2.md +65 -0
  128. package/src/agents/specific_instructions/data_modeller/review.md +141 -0
  129. package/src/agents/specific_instructions/data_modeller/service_mode.md +218 -0
  130. package/src/agents/specific_instructions/data_modeller/validation_checklist.md +125 -0
  131. package/src/agents/specific_instructions/data_scientist/advise.md +158 -0
  132. package/src/agents/specific_instructions/data_scientist/bi_engineer_handoff.md +63 -0
  133. package/src/agents/specific_instructions/data_scientist/experiment.md +482 -0
  134. package/src/agents/specific_instructions/data_scientist/experiment_ui_mode.md +44 -0
  135. package/src/agents/specific_instructions/data_scientist/explain.md +247 -0
  136. package/src/agents/specific_instructions/data_scientist/greenfield_data.md +35 -0
  137. package/src/agents/specific_instructions/data_scientist/ml_engineer_handoff.md +52 -0
  138. package/src/agents/specific_instructions/data_scientist/notebook_walkthrough.md +76 -0
  139. package/src/agents/specific_instructions/data_scientist/phases/index.md +24 -0
  140. package/src/agents/specific_instructions/data_scientist/phases/phase-1.md +45 -0
  141. package/src/agents/specific_instructions/data_scientist/phases/phase-2.md +67 -0
  142. package/src/agents/specific_instructions/data_scientist/phases/phase-3.md +89 -0
  143. package/src/agents/specific_instructions/data_scientist/phases/phase-4.md +143 -0
  144. package/src/agents/specific_instructions/data_scientist/phases/phase-5.md +71 -0
  145. package/src/agents/specific_instructions/data_scientist/phases/phase-6.md +239 -0
  146. package/src/agents/specific_instructions/data_scientist/phases/phase-7.md +207 -0
  147. package/src/agents/specific_instructions/data_scientist/phases.md +651 -0
  148. package/src/agents/specific_instructions/data_scientist/research.md +345 -0
  149. package/src/agents/specific_instructions/data_scientist/research_ui_mode.md +52 -0
  150. package/src/agents/specific_instructions/data_scientist/review.md +136 -0
  151. package/src/agents/specific_instructions/data_scientist/service_mode.md +247 -0
  152. package/src/agents/specific_instructions/data_scientist/validation_checklist.md +183 -0
  153. package/src/agents/specific_instructions/deep_learning_engineer/advise.md +145 -0
  154. package/src/agents/specific_instructions/deep_learning_engineer/phases/index.md +21 -0
  155. package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-1.md +74 -0
  156. package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-2.md +98 -0
  157. package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-3.md +76 -0
  158. package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-4.md +128 -0
  159. package/src/agents/specific_instructions/deep_learning_engineer/phases/phase-5.md +292 -0
  160. package/src/agents/specific_instructions/deep_learning_engineer/phases.md +567 -0
  161. package/src/agents/specific_instructions/deep_learning_engineer/research.md +389 -0
  162. package/src/agents/specific_instructions/deep_learning_engineer/review.md +155 -0
  163. package/src/agents/specific_instructions/deep_learning_engineer/validation_checklist.md +147 -0
  164. package/src/agents/specific_instructions/ml_engineer/advise.md +174 -0
  165. package/src/agents/specific_instructions/ml_engineer/bi_engineer_handoff.md +71 -0
  166. package/src/agents/specific_instructions/ml_engineer/experiment.md +474 -0
  167. package/src/agents/specific_instructions/ml_engineer/experiment_ui_mode.md +44 -0
  168. package/src/agents/specific_instructions/ml_engineer/notebook_walkthrough.md +75 -0
  169. package/src/agents/specific_instructions/ml_engineer/phases/index.md +25 -0
  170. package/src/agents/specific_instructions/ml_engineer/phases/phase-1.md +49 -0
  171. package/src/agents/specific_instructions/ml_engineer/phases/phase-2.md +75 -0
  172. package/src/agents/specific_instructions/ml_engineer/phases/phase-3.md +124 -0
  173. package/src/agents/specific_instructions/ml_engineer/phases/phase-4.md +279 -0
  174. package/src/agents/specific_instructions/ml_engineer/phases/phase-5.md +160 -0
  175. package/src/agents/specific_instructions/ml_engineer/phases/phase-6-5.md +170 -0
  176. package/src/agents/specific_instructions/ml_engineer/phases/phase-6.md +295 -0
  177. package/src/agents/specific_instructions/ml_engineer/phases/phase-7.md +337 -0
  178. package/src/agents/specific_instructions/ml_engineer/phases.md +1068 -0
  179. package/src/agents/specific_instructions/ml_engineer/research.md +437 -0
  180. package/src/agents/specific_instructions/ml_engineer/research_ui_mode.md +71 -0
  181. package/src/agents/specific_instructions/ml_engineer/review.md +187 -0
  182. package/src/agents/specific_instructions/ml_engineer/service_mode.md +273 -0
  183. package/src/agents/specific_instructions/ml_engineer/validation_checklist.md +185 -0
  184. package/src/agents/specific_instructions/mlops_engineer/advise.md +139 -0
  185. package/src/agents/specific_instructions/mlops_engineer/phases/index.md +23 -0
  186. package/src/agents/specific_instructions/mlops_engineer/phases/phase-1.md +52 -0
  187. package/src/agents/specific_instructions/mlops_engineer/phases/phase-2.md +86 -0
  188. package/src/agents/specific_instructions/mlops_engineer/phases/phase-3.md +105 -0
  189. package/src/agents/specific_instructions/mlops_engineer/phases/phase-4.md +128 -0
  190. package/src/agents/specific_instructions/mlops_engineer/phases/phase-5.md +106 -0
  191. package/src/agents/specific_instructions/mlops_engineer/phases/phase-6.md +128 -0
  192. package/src/agents/specific_instructions/mlops_engineer/phases/phase-7.md +144 -0
  193. package/src/agents/specific_instructions/mlops_engineer/phases.md +671 -0
  194. package/src/agents/specific_instructions/mlops_engineer/review.md +164 -0
  195. package/src/agents/specific_instructions/mlops_engineer/service_mode.md +81 -0
  196. package/src/agents/specific_instructions/mlops_engineer/validation_checklist.md +151 -0
  197. package/src/agents/specific_instructions/researcher/critical_review.md +292 -0
  198. package/src/agents/specific_instructions/researcher/review_checklist.md +67 -0
  199. package/src/agents/specific_instructions/researcher/service_mode.md +224 -0
  200. package/src/agents/specific_instructions/shared/auto_verify_mode.md +141 -0
  201. package/src/agents/specific_instructions/shared/autonomous_research.md +1289 -0
  202. package/src/agents/specific_instructions/shared/behavioral_rules.md +36 -0
  203. package/src/agents/specific_instructions/shared/diverge_protocol.md +387 -0
  204. package/src/agents/specific_instructions/shared/engineering_guidelines.md +136 -0
  205. package/src/agents/specific_instructions/shared/experiment_versioning.md +184 -0
  206. package/src/agents/specific_instructions/shared/goal_mode.md +187 -0
  207. package/src/agents/specific_instructions/shared/incremental_testing.md +139 -0
  208. package/src/agents/specific_instructions/shared/intent_discovery.md +223 -0
  209. package/src/agents/specific_instructions/shared/join_path_protocol.md +168 -0
  210. package/src/agents/specific_instructions/shared/knowledge_checkpoint.md +83 -0
  211. package/src/agents/specific_instructions/shared/knowledge_harvest.md +220 -0
  212. package/src/agents/specific_instructions/shared/knowledge_retrieval.md +100 -0
  213. package/src/agents/specific_instructions/shared/notebook_walkthrough_protocol.md +367 -0
  214. package/src/agents/specific_instructions/shared/reviewer_verdict_protocol.md +74 -0
  215. package/src/agents/specific_instructions/shared/swarm_protocol.md +97 -0
  216. package/src/agents/specific_instructions/shared/validation_protocol.md +139 -0
  217. package/src/agents/specific_instructions/syn/arbiter.md +140 -0
  218. package/src/agents/specific_instructions/syn/brainstorm.md +550 -0
  219. package/src/agents/specific_instructions/syn/code_review.md +232 -0
  220. package/src/agents/specific_instructions/syn/diff.md +239 -0
  221. package/src/agents/specific_instructions/syn/final_review.md +65 -0
  222. package/src/agents/specific_instructions/syn/fixer.md +240 -0
  223. package/src/agents/specific_instructions/syn/free_form.md +130 -0
  224. package/src/agents/specific_instructions/syn/knowledge.md +468 -0
  225. package/src/agents/specific_instructions/syn/notebook_walkthrough.md +78 -0
  226. package/src/agents/specific_instructions/syn/panel_review.md +634 -0
  227. package/src/agents/specific_instructions/syn/pm.md +453 -0
  228. package/src/agents/specific_instructions/syn/pr_review.md +255 -0
  229. package/src/agents/specific_instructions/syn/slides.md +417 -0
  230. package/src/agents/syn.md +729 -0
  231. package/src/commands/academic.md +41 -0
  232. package/src/commands/ai-engineer.md +45 -0
  233. package/src/commands/analytics-engineer.md +48 -0
  234. package/src/commands/applied-ml-scientist.md +45 -0
  235. package/src/commands/backend-engineer.md +35 -0
  236. package/src/commands/bi-engineer.md +40 -0
  237. package/src/commands/brainstorm.md +24 -0
  238. package/src/commands/data-analyst.md +38 -0
  239. package/src/commands/data-engineer.md +37 -0
  240. package/src/commands/data-modeller.md +38 -0
  241. package/src/commands/data-scientist.md +38 -0
  242. package/src/commands/deep-learning-engineer.md +47 -0
  243. package/src/commands/end.md +49 -0
  244. package/src/commands/knowledge.md +24 -0
  245. package/src/commands/ml-engineer.md +42 -0
  246. package/src/commands/mlops-engineer.md +47 -0
  247. package/src/commands/notebook-walkthrough.md +58 -0
  248. package/src/commands/researcher.md +40 -0
  249. package/src/commands/resume.md +57 -0
  250. package/src/commands/review-pr.md +26 -0
  251. package/src/commands/shards-guide.md +41 -0
  252. package/src/commands/shards-ui.md +32 -0
  253. package/src/commands/shards.md +41 -0
  254. package/src/docs/01-getting-started/concepts.md +109 -0
  255. package/src/docs/01-getting-started/first-session.md +79 -0
  256. package/src/docs/01-getting-started/install.md +61 -0
  257. package/src/docs/02-agents/academic.md +71 -0
  258. package/src/docs/02-agents/ai-engineer.md +78 -0
  259. package/src/docs/02-agents/analytics-engineer.md +58 -0
  260. package/src/docs/02-agents/applied-ml-scientist.md +59 -0
  261. package/src/docs/02-agents/backend-engineer.md +58 -0
  262. package/src/docs/02-agents/bi-engineer.md +65 -0
  263. package/src/docs/02-agents/data-analyst.md +67 -0
  264. package/src/docs/02-agents/data-engineer.md +57 -0
  265. package/src/docs/02-agents/data-modeller.md +51 -0
  266. package/src/docs/02-agents/data-scientist.md +78 -0
  267. package/src/docs/02-agents/deep-learning-engineer.md +64 -0
  268. package/src/docs/02-agents/ml-engineer.md +80 -0
  269. package/src/docs/02-agents/mlops-engineer.md +59 -0
  270. package/src/docs/02-agents/overview.md +62 -0
  271. package/src/docs/02-agents/researcher.md +73 -0
  272. package/src/docs/02-agents/syn.md +88 -0
  273. package/src/docs/03-protocols/auto-verify.md +82 -0
  274. package/src/docs/03-protocols/autonomous-research.md +59 -0
  275. package/src/docs/03-protocols/behavioral-rules.md +35 -0
  276. package/src/docs/03-protocols/diverge.md +50 -0
  277. package/src/docs/03-protocols/engineering-guidelines.md +56 -0
  278. package/src/docs/03-protocols/experiment-versioning.md +38 -0
  279. package/src/docs/03-protocols/gate-pattern.md +65 -0
  280. package/src/docs/03-protocols/incremental-testing.md +68 -0
  281. package/src/docs/03-protocols/join-path.md +46 -0
  282. package/src/docs/03-protocols/knowledge-ledger.md +70 -0
  283. package/src/docs/03-protocols/reviewer-verdicts.md +39 -0
  284. package/src/docs/03-protocols/swarm.md +40 -0
  285. package/src/docs/03-protocols/validation.md +174 -0
  286. package/src/docs/04-ui/activity-bar.md +70 -0
  287. package/src/docs/04-ui/chat-pane.md +80 -0
  288. package/src/docs/04-ui/code-intel.md +62 -0
  289. package/src/docs/04-ui/file-editing.md +61 -0
  290. package/src/docs/04-ui/git.md +54 -0
  291. package/src/docs/04-ui/keybindings.md +79 -0
  292. package/src/docs/04-ui/knowledge-map.md +76 -0
  293. package/src/docs/04-ui/overview.md +93 -0
  294. package/src/docs/04-ui/panels.md +49 -0
  295. package/src/docs/04-ui/pinboard-selection.md +66 -0
  296. package/src/docs/04-ui/quick-open-palette.md +56 -0
  297. package/src/docs/04-ui/sessions.md +81 -0
  298. package/src/docs/04-ui/settings-permissions.md +56 -0
  299. package/src/docs/05-commands/reference.md +59 -0
  300. package/src/docs/06-outputs/directory-map.md +116 -0
  301. package/src/docs/07-workflows/ai-eval-first.md +57 -0
  302. package/src/docs/07-workflows/deep-study-to-production.md +76 -0
  303. package/src/docs/07-workflows/diverge-exploration.md +77 -0
  304. package/src/docs/07-workflows/quick-analysis.md +45 -0
  305. package/src/docs/08-integrations/claude-code-auto-mode.md +191 -0
  306. package/src/docs/08-integrations/google-slides.md +175 -0
  307. package/src/docs/README.md +30 -0
  308. package/src/docs/manifest.json +108 -0
  309. package/src/templates/analysis-template.md +20 -0
  310. package/src/templates/branch-report.md +46 -0
  311. package/src/templates/diff-report.md +88 -0
  312. package/src/templates/knowledge-index.md +7 -0
  313. package/src/templates/model-card-schema.json +186 -0
  314. package/src/templates/model-card-schema.md +88 -0
  315. package/src/templates/model-card.md +124 -0
  316. package/src/templates/project-plan.md +47 -0
  317. package/src/templates/project-specs.md +81 -0
  318. package/src/templates/report-template.md +43 -0
  319. package/src/templates/study-template.md +25 -0
  320. package/src/ui/cc-readonly.js +181 -0
  321. package/src/ui/chat-session.js +466 -0
  322. package/src/ui/css/base.css +136 -0
  323. package/src/ui/css/brainstorm.css +525 -0
  324. package/src/ui/css/chat.css +1405 -0
  325. package/src/ui/css/editor.css +546 -0
  326. package/src/ui/css/eval-dashboard.css +157 -0
  327. package/src/ui/css/experiment.css +237 -0
  328. package/src/ui/css/guide.css +186 -0
  329. package/src/ui/css/knowledge-map.css +383 -0
  330. package/src/ui/css/layout.css +431 -0
  331. package/src/ui/css/model-card.css +161 -0
  332. package/src/ui/css/notebook-walkthrough.css +271 -0
  333. package/src/ui/css/pr-review.css +403 -0
  334. package/src/ui/css/prompt-lab.css +325 -0
  335. package/src/ui/css/sessions.css +258 -0
  336. package/src/ui/css/sidebar.css +661 -0
  337. package/src/ui/css/terminal.css +113 -0
  338. package/src/ui/css/theme-light.css +542 -0
  339. package/src/ui/index.html +389 -0
  340. package/src/ui/js/agents.js +32 -0
  341. package/src/ui/js/bookmarks.js +230 -0
  342. package/src/ui/js/chat.js +1776 -0
  343. package/src/ui/js/code-intel.js +328 -0
  344. package/src/ui/js/command-palette.js +142 -0
  345. package/src/ui/js/events.js +591 -0
  346. package/src/ui/js/explorer.js +317 -0
  347. package/src/ui/js/file-view.js +477 -0
  348. package/src/ui/js/git.js +536 -0
  349. package/src/ui/js/guide.js +198 -0
  350. package/src/ui/js/hud.js +75 -0
  351. package/src/ui/js/init.js +351 -0
  352. package/src/ui/js/knowledge-map.js +906 -0
  353. package/src/ui/js/markdown.js +114 -0
  354. package/src/ui/js/monaco.js +164 -0
  355. package/src/ui/js/notebook-walkthrough.js +272 -0
  356. package/src/ui/js/notebook.js +448 -0
  357. package/src/ui/js/panels.js +2681 -0
  358. package/src/ui/js/pinboard.js +186 -0
  359. package/src/ui/js/quick-open.js +164 -0
  360. package/src/ui/js/selection-context.js +131 -0
  361. package/src/ui/js/sessions.js +256 -0
  362. package/src/ui/js/settings.js +476 -0
  363. package/src/ui/js/split-view.js +82 -0
  364. package/src/ui/js/state.js +343 -0
  365. package/src/ui/js/table.js +161 -0
  366. package/src/ui/js/tabs.js +284 -0
  367. package/src/ui/js/tabular.js +125 -0
  368. package/src/ui/js/terminal.js +354 -0
  369. package/src/ui/js/timeline.js +137 -0
  370. package/src/ui/js/utils.js +293 -0
  371. package/src/ui/notebook-kernel.py +790 -0
  372. package/src/ui/open-browser.js +55 -0
  373. package/src/ui/permission-pattern.js +42 -0
  374. package/src/ui/relay.js +513 -0
  375. package/src/ui/server.js +3072 -0
  376. package/src/ui/session-index.js +225 -0
  377. package/src/ui/shards_icon.png +0 -0
  378. package/src/ui/spawn-server.js +41 -0
  379. package/src/ui/symbol-index.js +813 -0
  380. package/src/ui/ui-push.js +177 -0
  381. package/tools/gate-hook/VALIDATION_SPEC.md +273 -0
  382. package/tools/gate-hook/__tests__/auto-verify.test.js +343 -0
  383. package/tools/gate-hook/auto-allowlist.js +179 -0
  384. package/tools/gate-hook/auto-state.js +68 -0
  385. package/tools/gate-hook/classify.js +21 -0
  386. package/tools/gate-hook/log.js +57 -0
  387. package/tools/gate-hook/parser.js +205 -0
  388. package/tools/gate-hook/sql-guard.js +230 -0
  389. package/tools/gate-hook/state.js +170 -0
  390. package/tools/gate-hook/sweep.js +139 -0
  391. package/tools/gate-hook/transcript.js +45 -0
  392. package/tools/gate-hook/validation.js +321 -0
  393. package/tools/gate-hook.js +475 -0
  394. package/tools/install.js +914 -0
  395. package/tools/shards-gates.js +311 -0
  396. package/tools/shards-sessions.js +261 -0
  397. package/tools/shards-ui.js +377 -0
@@ -0,0 +1,1405 @@
1
+ /* ─── Chat pane ──────────────────────────────────────────── */
2
+ #chat-pane {
3
+ flex: 1;
4
+ display: flex;
5
+ flex-direction: column;
6
+ overflow: hidden;
7
+ background: transparent;
8
+ min-width: 0;
9
+ }
10
+ #conv-header {
11
+ padding: 6px 16px;
12
+ border-bottom: 1px solid var(--glass-border);
13
+ font-size: 10px;
14
+ letter-spacing: 2px;
15
+ text-transform: uppercase;
16
+ color: #4a4a68;
17
+ flex-shrink: 0;
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: space-between;
21
+ }
22
+ #chat-collapse-btn {
23
+ background: none;
24
+ border: 1px solid #3a3a5a;
25
+ border-radius: 4px;
26
+ color: #7a7a98;
27
+ font-size: 12px;
28
+ cursor: pointer;
29
+ padding: 0 6px;
30
+ line-height: 1.4;
31
+ transition: all 0.2s;
32
+ display: none;
33
+ }
34
+ #chat-collapse-btn:hover { background: #1a1a30; color: #b0b0c8; }
35
+ #chat-pane.split-visible #chat-collapse-btn { display: block; }
36
+
37
+ /* ─── Collapsed chat state ────────────────────────────────── */
38
+ #chat-pane.collapsed {
39
+ flex: none !important;
40
+ width: 36px !important;
41
+ min-width: 36px;
42
+ overflow: hidden;
43
+ }
44
+ #chat-pane.collapsed #conv-header {
45
+ writing-mode: vertical-rl;
46
+ text-orientation: mixed;
47
+ padding: 12px 6px;
48
+ justify-content: flex-start;
49
+ gap: 10px;
50
+ height: 100%;
51
+ border-bottom: none;
52
+ border-right: 1px solid rgba(255, 255, 255, 0.08);
53
+ }
54
+ #chat-pane.collapsed #chat-collapse-btn {
55
+ display: block;
56
+ writing-mode: horizontal-tb;
57
+ transform: rotate(180deg);
58
+ }
59
+ #chat-pane.collapsed #agent-picker,
60
+ #chat-pane.collapsed #messages,
61
+ #chat-pane.collapsed #chat-input-area {
62
+ display: none !important;
63
+ }
64
+ #messages {
65
+ flex: 1;
66
+ overflow-y: auto;
67
+ padding: 16px;
68
+ display: flex;
69
+ flex-direction: column;
70
+ gap: 24px;
71
+ }
72
+ .empty-state {
73
+ color: #2a2a3a;
74
+ font-size: 12px;
75
+ text-align: center;
76
+ margin-top: 60px;
77
+ }
78
+ .message { max-width: 88%; line-height: 1.55; }
79
+ .message.user { align-self: flex-end; }
80
+ .message.assistant { align-self: flex-start; }
81
+ .message-meta {
82
+ font-size: 11px;
83
+ color: #3a3a50;
84
+ margin-bottom: 4px;
85
+ display: flex;
86
+ align-items: center;
87
+ gap: 5px;
88
+ }
89
+ .message.user .message-meta { justify-content: flex-end; }
90
+ .message.assistant .message-meta {
91
+ font-size: 10px;
92
+ font-weight: 700;
93
+ text-transform: uppercase;
94
+ letter-spacing: 2px;
95
+ color: var(--current-accent);
96
+ gap: 8px;
97
+ margin-bottom: 8px;
98
+ }
99
+ .meta-dot {
100
+ width: 8px;
101
+ height: 8px;
102
+ border-radius: 50%;
103
+ display: inline-block;
104
+ flex-shrink: 0;
105
+ box-shadow: 0 0 10px currentColor;
106
+ }
107
+ .message-bubble {
108
+ padding: 9px 13px;
109
+ border-radius: 8px;
110
+ font-size: 13px;
111
+ word-break: break-word;
112
+ }
113
+ .message.user .message-bubble {
114
+ background: rgba(255, 255, 255, 0.05);
115
+ backdrop-filter: blur(6px);
116
+ -webkit-backdrop-filter: blur(6px);
117
+ color: #a0a0b8;
118
+ border: 1px solid rgba(255,255,255,0.1);
119
+ border-radius: 12px 12px 0 12px;
120
+ padding: 15px 20px;
121
+ font-size: 14px;
122
+ white-space: pre-wrap;
123
+ }
124
+ .message.assistant .message-bubble {
125
+ background: var(--glass-bg);
126
+ backdrop-filter: blur(10px);
127
+ -webkit-backdrop-filter: blur(10px);
128
+ border: 1px solid var(--glass-border);
129
+ color: #e0e0f0;
130
+ box-shadow: 0 10px 30px rgba(0,0,0,0.3);
131
+ padding: 20px;
132
+ position: relative;
133
+ }
134
+ .agent-divider {
135
+ text-align: center;
136
+ font-size: 11px;
137
+ padding: 8px 0;
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 10px;
141
+ align-self: stretch;
142
+ }
143
+ .agent-divider::before, .agent-divider::after {
144
+ content: '';
145
+ flex: 1;
146
+ height: 1px;
147
+ background: #141420;
148
+ }
149
+
150
+ /* Tool use indicator in chat */
151
+ .tool-indicator {
152
+ font-size: 11px;
153
+ color: #4a4a68;
154
+ padding: 4px 10px;
155
+ margin: 2px 0;
156
+ border-left: 2px solid #2a2a40;
157
+ align-self: flex-start;
158
+ }
159
+ .tool-indicator .tool-name { color: #6a6a90; font-weight: 600; }
160
+
161
+ /* ─── Thinking indicator (pre-first-token) ───────────────── */
162
+ .thinking-indicator {
163
+ display: flex;
164
+ align-items: center;
165
+ gap: 5px;
166
+ padding: 10px 12px;
167
+ align-self: flex-start;
168
+ }
169
+ .thinking-dot {
170
+ width: 6px;
171
+ height: 6px;
172
+ border-radius: 50%;
173
+ animation: thinking-bounce 1.3s ease-in-out infinite;
174
+ }
175
+ .thinking-dot:nth-child(2) { animation-delay: 0.18s; }
176
+ .thinking-dot:nth-child(3) { animation-delay: 0.36s; }
177
+ @keyframes thinking-bounce {
178
+ 0%, 70%, 100% { opacity: 0.2; transform: scale(0.75); }
179
+ 35% { opacity: 1; transform: scale(1); }
180
+ }
181
+
182
+ /* ─── Gathering animation for new messages ─────────────── */
183
+ @keyframes gather-msg {
184
+ 0% { transform: translateX(-30px) scale(0.95); opacity: 0; filter: blur(8px); }
185
+ 100% { transform: translateX(0) scale(1); opacity: 1; filter: blur(0); }
186
+ }
187
+ .message.assistant.gathering .message-bubble {
188
+ animation: gather-msg 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
189
+ }
190
+
191
+ /* ─── Consulting agent indicator ─────────────────────────── */
192
+ .consulting-indicator {
193
+ display: flex;
194
+ align-items: center;
195
+ gap: 8px;
196
+ padding: 4px 10px;
197
+ margin: 2px 0;
198
+ align-self: flex-start;
199
+ font-size: 11px;
200
+ color: #5a5a80;
201
+ }
202
+ .consulting-glow-dot {
203
+ width: 8px;
204
+ height: 8px;
205
+ border-radius: 50%;
206
+ flex-shrink: 0;
207
+ animation: consulting-glow 1.6s ease-in-out infinite;
208
+ }
209
+ .consulting-glow-dot--done {
210
+ animation: none;
211
+ opacity: 0.6;
212
+ }
213
+ @keyframes consulting-glow {
214
+ 0%, 100% { opacity: 0.5; transform: scale(0.85); box-shadow: none; }
215
+ 50% { opacity: 1; transform: scale(1.15); box-shadow: 0 0 8px currentColor; }
216
+ }
217
+ .consulting-label strong { font-weight: 600; }
218
+
219
+ /* Markdown in bubbles */
220
+ .message-bubble h1 { font-size: 15px; color: #dde; margin: 10px 0 5px; }
221
+ .message-bubble h2 { font-size: 14px; color: #dde; margin: 9px 0 4px; }
222
+ .message-bubble h3 { font-size: 13px; color: #dde; margin: 8px 0 4px; }
223
+ .message-bubble h4, .message-bubble h5, .message-bubble h6 { font-size: 12px; color: #ccd; margin: 6px 0 3px; }
224
+ .message-bubble p { margin: 5px 0; }
225
+ .message-bubble code {
226
+ background: #141428;
227
+ border-radius: 3px;
228
+ padding: 1px 5px;
229
+ font-size: 11px;
230
+ color: #9ab4ff;
231
+ font-family: inherit;
232
+ }
233
+ .message-bubble pre {
234
+ background: #08080f;
235
+ border: 1px solid rgba(255, 255, 255, 0.08);
236
+ border-radius: 6px;
237
+ padding: 10px;
238
+ overflow-x: auto;
239
+ margin: 8px 0;
240
+ }
241
+ .message-bubble pre code { background: none; padding: 0; color: #c0c0d0; }
242
+ .message-bubble ul, .message-bubble ol { padding-left: 18px; margin: 5px 0; }
243
+ .message-bubble li { margin: 2px 0; }
244
+ .message-bubble strong { color: #e0e0f0; font-weight: 600; }
245
+ .message-bubble em { color: #9090b0; font-style: italic; }
246
+ .message-bubble hr { border: none; border-top: 1px solid rgba(255, 255, 255, 0.08); margin: 10px 0; }
247
+ .message-bubble a { color: #5080e0; }
248
+ .message-bubble blockquote {
249
+ border-left: 3px solid #1e1e30;
250
+ padding-left: 10px;
251
+ color: #666;
252
+ margin: 5px 0;
253
+ }
254
+ .message-bubble table { border-collapse: collapse; margin: 8px 0; font-size: 12px; }
255
+ .message-bubble th, .message-bubble td { border: 1px solid #1e1e30; padding: 4px 8px; }
256
+ .message-bubble th { background: #0f0f1e; color: #c0c0d0; }
257
+ .message-bubble del { opacity: 0.55; text-decoration: line-through; }
258
+ .message-bubble input[type="checkbox"] { margin-right: 5px; vertical-align: middle; pointer-events: none; }
259
+ .message-bubble li.task-list-item { list-style: none; margin-left: -16px; }
260
+
261
+ /* File links */
262
+ .file-link {
263
+ color: #70a0ff;
264
+ text-decoration: underline;
265
+ text-decoration-style: dotted;
266
+ cursor: pointer;
267
+ padding: 0 2px;
268
+ border-radius: 3px;
269
+ transition: background 0.2s, color 0.2s;
270
+ }
271
+ .file-link:hover {
272
+ background: rgba(112, 160, 255, 0.15);
273
+ color: #a0c4ff;
274
+ text-decoration-style: solid;
275
+ }
276
+
277
+ /* Enhanced Markdown Tables */
278
+ .message-bubble table {
279
+ border-collapse: collapse;
280
+ margin: 12px 0;
281
+ font-size: 11px;
282
+ width: 100%;
283
+ border: 1px solid rgba(255, 255, 255, 0.08);
284
+ background: #08080f;
285
+ border-radius: 4px;
286
+ overflow: hidden;
287
+ }
288
+ .message-bubble th, .message-bubble td {
289
+ border: 1px solid rgba(255, 255, 255, 0.08);
290
+ padding: 8px 12px;
291
+ text-align: left;
292
+ }
293
+ .message-bubble th {
294
+ background: #0f0f1e;
295
+ color: #e0e0f0;
296
+ font-weight: 600;
297
+ text-transform: uppercase;
298
+ font-size: 9px;
299
+ letter-spacing: 0.5px;
300
+ }
301
+ .message-bubble tr:nth-child(even) {
302
+ background: rgba(255, 255, 255, 0.02);
303
+ }
304
+ .message-bubble tr:hover {
305
+ background: rgba(255, 255, 255, 0.05);
306
+ }
307
+ .message-bubble td code, .message-bubble th code {
308
+ background: rgba(154, 180, 255, 0.1);
309
+ color: #8aa0d8;
310
+ border: 1px solid rgba(154, 180, 255, 0.12);
311
+ padding: 1px 4px;
312
+ font-size: 11px;
313
+ }
314
+
315
+ /* ─── Code block copy button ──────────────────────────────── */
316
+ .code-block-wrapper { position: relative; }
317
+ .code-block-wrapper .copy-code-btn {
318
+ position: absolute;
319
+ top: 6px;
320
+ right: 6px;
321
+ background: rgba(255, 255, 255, 0.06);
322
+ border: 1px solid #2a2a40;
323
+ border-radius: 4px;
324
+ color: #6a6a90;
325
+ font-size: 10px;
326
+ padding: 2px 8px;
327
+ cursor: pointer;
328
+ opacity: 0;
329
+ transition: opacity 0.2s;
330
+ z-index: 2;
331
+ font-family: inherit;
332
+ }
333
+ .code-block-wrapper:hover .copy-code-btn { opacity: 1; }
334
+ .code-block-wrapper .copy-code-btn:hover { background: #252540; color: #b0b0c8; }
335
+
336
+ /* ─── Tool call groups ───────────────────────────────────── */
337
+ .tool-group {
338
+ align-self: flex-start;
339
+ margin: 2px 0;
340
+ font-size: 11px;
341
+ }
342
+ .tool-group-header {
343
+ color: #4a4a68;
344
+ padding: 4px 10px;
345
+ cursor: pointer;
346
+ display: flex;
347
+ align-items: center;
348
+ gap: 6px;
349
+ border-left: 2px solid #2a2a40;
350
+ transition: color 0.2s;
351
+ user-select: none;
352
+ }
353
+ .tool-group-header:hover { color: #7070a0; }
354
+ .tool-group-chevron {
355
+ font-size: 8px;
356
+ transition: transform 0.2s;
357
+ display: inline-block;
358
+ }
359
+ .tool-group.expanded .tool-group-chevron { transform: rotate(90deg); }
360
+ .tool-group-items { display: none; padding-left: 8px; }
361
+ .tool-group.expanded .tool-group-items { display: block; }
362
+
363
+ /* ─── Message copy button ────────────────────────────────── */
364
+ .message { position: relative; }
365
+ .message-actions {
366
+ position: absolute;
367
+ top: 0;
368
+ right: 0;
369
+ opacity: 0;
370
+ transition: opacity 0.2s;
371
+ }
372
+ .message:hover .message-actions { opacity: 1; }
373
+ .msg-copy-btn {
374
+ background: rgba(255, 255, 255, 0.06);
375
+ border: 1px solid #2a2a40;
376
+ border-radius: 4px;
377
+ color: #6a6a90;
378
+ font-size: 10px;
379
+ padding: 2px 8px;
380
+ cursor: pointer;
381
+ font-family: inherit;
382
+ }
383
+ .msg-copy-btn:hover { background: #252540; color: #b0b0c8; }
384
+
385
+ /* ─── Bookmark star button ───────────────────────────────── */
386
+ .bookmark-star {
387
+ background: none;
388
+ border: 1px solid transparent;
389
+ border-radius: 4px;
390
+ color: #3a3a54;
391
+ font-size: 14px;
392
+ padding: 1px 4px;
393
+ cursor: pointer;
394
+ font-family: inherit;
395
+ line-height: 1;
396
+ transition: color 0.15s, border-color 0.15s;
397
+ }
398
+ .bookmark-star:hover { color: #e8b84a; border-color: #2a2a40; }
399
+ .bookmark-star.bookmarked {
400
+ color: #e8b84a;
401
+ font-size: 0;
402
+ }
403
+ .bookmark-star.bookmarked::before {
404
+ content: '\2605';
405
+ font-size: 14px;
406
+ }
407
+
408
+ /* Flash highlight when navigating to a bookmarked message */
409
+ .message.bookmark-highlight .message-bubble {
410
+ box-shadow: 0 0 0 2px #e8b84a;
411
+ transition: box-shadow 0.3s;
412
+ }
413
+ .message.bookmark-highlight { animation: bookmarkFlash 1.5s ease-out; }
414
+ @keyframes bookmarkFlash {
415
+ 0% { background: rgba(232, 184, 74, 0.1); }
416
+ 100% { background: transparent; }
417
+ }
418
+
419
+ /* ─── Collapsible long messages ──────────────────────────── */
420
+ .message-bubble.collapsed {
421
+ max-height: 300px;
422
+ overflow: hidden;
423
+ -webkit-mask-image: linear-gradient(to bottom, black 70%, transparent 100%);
424
+ mask-image: linear-gradient(to bottom, black 70%, transparent 100%);
425
+ }
426
+ .show-more-btn {
427
+ background: none;
428
+ border: 1px solid #2a2a40;
429
+ border-radius: 4px;
430
+ color: #6a6a90;
431
+ font-size: 11px;
432
+ padding: 3px 12px;
433
+ cursor: pointer;
434
+ margin-top: 4px;
435
+ font-family: inherit;
436
+ }
437
+ .show-more-btn:hover { background: rgba(255, 255, 255, 0.06); color: #b0b0c8; }
438
+
439
+ /* ─── Gate confirmation buttons ──────────────────────────── */
440
+ .gate-actions {
441
+ display: flex;
442
+ align-items: center;
443
+ gap: 8px;
444
+ margin-top: 8px;
445
+ padding: 8px 12px;
446
+ background: #0d0d1e;
447
+ border: 1px solid #1e1e36;
448
+ border-radius: 6px;
449
+ animation: gateSlideIn 0.25s ease-out;
450
+ }
451
+ @keyframes gateSlideIn {
452
+ from { opacity: 0; transform: translateY(6px); }
453
+ to { opacity: 1; transform: translateY(0); }
454
+ }
455
+ .gate-actions.gate-resolved {
456
+ opacity: 0;
457
+ transition: opacity 0.3s;
458
+ }
459
+ .gate-label {
460
+ font-size: 10px;
461
+ color: #4a4a68;
462
+ text-transform: uppercase;
463
+ letter-spacing: 1px;
464
+ margin-right: 4px;
465
+ flex-shrink: 0;
466
+ }
467
+ .gate-btn {
468
+ font-size: 12px;
469
+ font-family: inherit;
470
+ padding: 5px 14px;
471
+ border-radius: 4px;
472
+ border: 1px solid #2a2a50;
473
+ cursor: pointer;
474
+ transition: all 0.15s;
475
+ background: #1a1a30;
476
+ color: #b0b0d0;
477
+ }
478
+ .gate-btn:hover { background: #252545; }
479
+ .gate-btn-confirm {
480
+ background: #1a2e1a;
481
+ border-color: #2a5a2a;
482
+ color: #80c080;
483
+ }
484
+ .gate-btn-confirm:hover { background: #254025; color: #a0e0a0; }
485
+ .gate-btn-changes {
486
+ background: #1a1a30;
487
+ border-color: #2a2a50;
488
+ color: #9090b0;
489
+ }
490
+ .gate-btn-changes:hover { background: #252540; color: #b0b0d0; }
491
+
492
+ /* ─── Chat search bar ────────────────────────────────────── */
493
+ #chat-search-bar {
494
+ display: none;
495
+ padding: 6px 16px;
496
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
497
+ background: #0a0a14;
498
+ flex-shrink: 0;
499
+ align-items: center;
500
+ gap: 8px;
501
+ }
502
+ #chat-search-bar.visible { display: flex; }
503
+ #chat-search-input {
504
+ flex: 1;
505
+ background: rgba(255, 255, 255, 0.03);
506
+ border: 1px solid #1e1e32;
507
+ border-radius: 4px;
508
+ color: #c8c8d8;
509
+ font-family: inherit;
510
+ font-size: 12px;
511
+ padding: 4px 8px;
512
+ outline: none;
513
+ }
514
+ #chat-search-input:focus { border-color: #3860c0; }
515
+ #chat-search-count { font-size: 11px; color: #4a4a68; white-space: nowrap; }
516
+ .chat-search-nav-btn {
517
+ background: none;
518
+ border: 1px solid #1e1e32;
519
+ border-radius: 3px;
520
+ color: #6a6a90;
521
+ font-size: 11px;
522
+ padding: 2px 6px;
523
+ cursor: pointer;
524
+ font-family: inherit;
525
+ }
526
+ .chat-search-nav-btn:hover { background: rgba(255, 255, 255, 0.06); color: #b0b0c8; }
527
+ .message.search-highlight .message-bubble { box-shadow: 0 0 0 2px #3860c0; }
528
+
529
+ /* ─── Chat input bar ─────────────────────────────────────── */
530
+ #chat-input-area {
531
+ display: none;
532
+ padding: 12px 16px;
533
+ border-top: none;
534
+ background: linear-gradient(to top, #05050f, transparent);
535
+ flex-shrink: 0;
536
+ gap: 8px;
537
+ align-items: flex-end;
538
+ position: relative;
539
+ flex-wrap: wrap;
540
+ }
541
+
542
+ /* ─── Slash command suggestions ──────────────────────────── */
543
+ #slash-suggestions {
544
+ display: none;
545
+ position: absolute;
546
+ bottom: 100%;
547
+ left: 16px;
548
+ right: 16px;
549
+ background: rgba(255, 255, 255, 0.03);
550
+ border: 1px solid #2a2a40;
551
+ border-radius: 6px;
552
+ max-height: 240px;
553
+ overflow-y: auto;
554
+ z-index: 100;
555
+ margin-bottom: 4px;
556
+ box-shadow: 0 -4px 16px rgba(0,0,0,0.4);
557
+ }
558
+ #slash-suggestions.visible { display: block; }
559
+ .slash-suggestion {
560
+ display: flex;
561
+ align-items: center;
562
+ gap: 12px;
563
+ padding: 8px 14px;
564
+ cursor: pointer;
565
+ transition: background 0.1s;
566
+ }
567
+ .slash-suggestion:hover, .slash-suggestion.active {
568
+ background: #151528;
569
+ }
570
+ .slash-suggestion-cmd {
571
+ color: #7090e0;
572
+ font-weight: 600;
573
+ font-size: 12px;
574
+ white-space: nowrap;
575
+ min-width: 120px;
576
+ }
577
+ .slash-suggestion-desc {
578
+ color: #4a4a68;
579
+ font-size: 12px;
580
+ overflow: hidden;
581
+ text-overflow: ellipsis;
582
+ white-space: nowrap;
583
+ }
584
+ #chat-input-area.visible {
585
+ display: flex;
586
+ }
587
+
588
+ /* ─── Permission mode indicator (Shift+Tab) ─────────────── */
589
+ #mode-indicator-row {
590
+ display: flex;
591
+ align-items: center;
592
+ width: 100%;
593
+ order: -1;
594
+ }
595
+ #mode-indicator {
596
+ background: none;
597
+ border: 1px solid #4CAF50;
598
+ border-radius: 4px;
599
+ color: #4CAF50;
600
+ font-family: inherit;
601
+ font-size: 10px;
602
+ font-weight: 600;
603
+ letter-spacing: 0.5px;
604
+ padding: 2px 8px;
605
+ cursor: pointer;
606
+ transition: color 0.2s, border-color 0.2s, background 0.2s;
607
+ white-space: nowrap;
608
+ }
609
+ #mode-indicator:hover {
610
+ background: rgba(255, 255, 255, 0.04);
611
+ }
612
+ #mode-indicator.mode-flash {
613
+ animation: mode-pulse 0.3s ease-out;
614
+ }
615
+ @keyframes mode-pulse {
616
+ 0% { transform: scale(1.1); }
617
+ 100% { transform: scale(1); }
618
+ }
619
+
620
+ #chat-input {
621
+ flex: 1;
622
+ background: rgba(255, 255, 255, 0.03);
623
+ border: 1px solid var(--glass-border);
624
+ border-radius: 6px;
625
+ color: #e0e0f0;
626
+ font-family: inherit;
627
+ font-size: 13px;
628
+ padding: 8px 12px;
629
+ outline: none;
630
+ transition: border-color 0.2s;
631
+ resize: none;
632
+ overflow-y: auto;
633
+ max-height: 160px;
634
+ min-height: 34px;
635
+ line-height: 1.5;
636
+ box-sizing: border-box;
637
+ }
638
+ #chat-input:focus {
639
+ border-color: var(--current-accent);
640
+ box-shadow: 0 0 20px rgba(255, 215, 0, 0.05);
641
+ }
642
+ #chat-input:disabled { opacity: 0.4; }
643
+
644
+ /* ─── Working indicator (input area, persistent while agent responds) ── */
645
+ .working-indicator {
646
+ display: flex;
647
+ align-items: center;
648
+ gap: 6px;
649
+ width: 100%;
650
+ padding: 4px 0 2px;
651
+ font-size: 11px;
652
+ color: #4a4a68;
653
+ order: -1;
654
+ }
655
+ .working-indicator-dot {
656
+ width: 5px;
657
+ height: 5px;
658
+ border-radius: 50%;
659
+ animation: working-pulse 2s ease-in-out infinite;
660
+ }
661
+ .working-indicator-text {
662
+ animation: working-text-pulse 2s ease-in-out infinite;
663
+ }
664
+ @keyframes working-pulse {
665
+ 0%, 100% { opacity: 0.3; transform: scale(0.8); }
666
+ 50% { opacity: 0.8; transform: scale(1.1); }
667
+ }
668
+ @keyframes working-text-pulse {
669
+ 0%, 100% { opacity: 0.3; }
670
+ 50% { opacity: 0.7; }
671
+ }
672
+ #chat-send-btn, #chat-stop-btn {
673
+ background: rgba(255, 255, 255, 0.1);
674
+ border: 1px solid #4a4a6a;
675
+ border-radius: 5px;
676
+ color: #b0b0c8;
677
+ font-family: inherit;
678
+ font-size: 12px;
679
+ padding: 6px 14px;
680
+ cursor: pointer;
681
+ transition: all 0.2s;
682
+ }
683
+ #chat-send-btn:hover { background: #2a2a4a; color: #e0e0f0; }
684
+ #chat-stop-btn { border-color: #7a3030; color: #e07070; }
685
+ #chat-stop-btn:hover { background: #3a1515; color: #ff9090; }
686
+ #chat-send-btn:disabled { opacity: 0.3; cursor: default; }
687
+
688
+ /* ─── Agent picker grid ──────────────────────────────────── */
689
+ #agent-picker {
690
+ display: none;
691
+ flex-direction: column;
692
+ gap: 2px;
693
+ padding: 20px 40px;
694
+ overflow-y: auto;
695
+ flex: 1;
696
+ max-width: 680px;
697
+ margin: 0;
698
+ width: 100%;
699
+ }
700
+ #agent-picker.visible {
701
+ display: flex;
702
+ }
703
+
704
+ /* Search input */
705
+ .agent-picker-search-wrap {
706
+ margin-bottom: 12px;
707
+ }
708
+ .agent-picker-search {
709
+ width: 100%;
710
+ background: transparent;
711
+ border: 1px solid rgba(255, 255, 255, 0.08);
712
+ border-radius: 6px;
713
+ padding: 8px 12px;
714
+ font-family: inherit;
715
+ font-size: 12px;
716
+ color: #6a6a90;
717
+ outline: none;
718
+ box-sizing: border-box;
719
+ transition: border-color 0.15s, color 0.15s;
720
+ }
721
+ .agent-picker-search::placeholder { color: #3a3a58; }
722
+ .agent-picker-search:focus {
723
+ border-color: #2a2a40;
724
+ color: #b0b0c8;
725
+ }
726
+
727
+ /* Syn hero card */
728
+ .agent-card-hero {
729
+ border-left: 3px solid #FFD700 !important;
730
+ padding: 12px 14px;
731
+ margin-bottom: 4px;
732
+ align-items: flex-start !important;
733
+ }
734
+ .agent-card-hero-body {
735
+ display: flex;
736
+ flex-direction: column;
737
+ gap: 3px;
738
+ }
739
+ .agent-card-hero-tagline {
740
+ font-size: 11px;
741
+ color: #3a3a58;
742
+ line-height: 1.4;
743
+ }
744
+ .agent-card-hero:hover .agent-card-hero-tagline { color: #4a4a68; }
745
+
746
+ /* Section headers */
747
+ .agent-picker-section-header {
748
+ font-size: 10px;
749
+ font-weight: 600;
750
+ letter-spacing: 2px;
751
+ text-transform: uppercase;
752
+ color: #252538;
753
+ padding: 10px 14px 2px;
754
+ pointer-events: none;
755
+ transition: opacity 0.15s;
756
+ }
757
+ .agent-picker-section-header.dimmed { opacity: 0.3; }
758
+
759
+ /* Agent cards */
760
+ .agent-card {
761
+ display: flex;
762
+ align-items: baseline;
763
+ gap: 12px;
764
+ padding: 10px 14px;
765
+ background: transparent;
766
+ border: 1px solid transparent;
767
+ border-radius: 6px;
768
+ cursor: pointer;
769
+ transition: all 0.2s;
770
+ }
771
+ .agent-card:hover {
772
+ background: #0f0f1e;
773
+ border-color: rgba(255, 255, 255, 0.08);
774
+ }
775
+ .agent-card.dimmed {
776
+ opacity: 0.25;
777
+ pointer-events: none;
778
+ }
779
+ .agent-card-dot {
780
+ width: 8px;
781
+ height: 8px;
782
+ border-radius: 50%;
783
+ flex-shrink: 0;
784
+ }
785
+ .agent-card-name {
786
+ font-size: 13px;
787
+ font-weight: 600;
788
+ color: #b0b0c8;
789
+ white-space: nowrap;
790
+ min-width: 200px;
791
+ }
792
+ .agent-card-desc {
793
+ font-size: 12px;
794
+ color: #4a4a68;
795
+ line-height: 1.4;
796
+ }
797
+
798
+ /* ─── Session tab bar (in header) ─────────────────────────── */
799
+ #header-session-bar {
800
+ display: flex;
801
+ align-items: center;
802
+ overflow-x: auto;
803
+ gap: 2px;
804
+ flex: 1;
805
+ min-width: 0;
806
+ }
807
+ #header-session-bar::-webkit-scrollbar { height: 0; }
808
+ .session-tab {
809
+ display: flex;
810
+ flex-direction: column;
811
+ justify-content: center;
812
+ gap: 1px;
813
+ padding: 4px 10px;
814
+ border-radius: 4px;
815
+ cursor: pointer;
816
+ font-size: 11px;
817
+ color: #6a6a90;
818
+ white-space: nowrap;
819
+ border: 1px solid transparent;
820
+ transition: background 0.15s, color 0.15s, border-color 0.15s;
821
+ position: relative;
822
+ flex-shrink: 0;
823
+ height: 28px;
824
+ box-sizing: border-box;
825
+ }
826
+ .session-tab.has-subline {
827
+ height: 40px;
828
+ padding: 3px 10px;
829
+ }
830
+ .session-tab-row {
831
+ display: flex;
832
+ align-items: center;
833
+ gap: 6px;
834
+ min-width: 0;
835
+ }
836
+ .session-tab:hover { background: rgba(255, 255, 255, 0.06); color: #9090b0; }
837
+ .session-tab.active {
838
+ color: #c0c0d0;
839
+ border-color: var(--tab-color, #4a4a80);
840
+ background: #0f0f1e;
841
+ }
842
+ .session-tab.unread::after {
843
+ content: '';
844
+ position: absolute;
845
+ top: 6px;
846
+ right: 6px;
847
+ width: 6px;
848
+ height: 6px;
849
+ border-radius: 50%;
850
+ background: var(--tab-color, #5080e0);
851
+ animation: unread-pulse 2s ease-in-out infinite;
852
+ }
853
+ @keyframes unread-pulse {
854
+ 0%, 100% { opacity: 0.5; transform: scale(0.8); }
855
+ 50% { opacity: 1; transform: scale(1.2); }
856
+ }
857
+ /* ─── Needs-attention indicator (stronger than unread) ─────── */
858
+ .session-tab.needs-attention {
859
+ border-color: #e0a030;
860
+ }
861
+ .session-tab.needs-attention::after {
862
+ content: '';
863
+ position: absolute;
864
+ top: 4px;
865
+ right: 4px;
866
+ width: 8px;
867
+ height: 8px;
868
+ border-radius: 50%;
869
+ background: #e0a030;
870
+ animation: attention-pulse 1s ease-in-out infinite;
871
+ box-shadow: 0 0 4px rgba(224, 160, 48, 0.6);
872
+ }
873
+ @keyframes attention-pulse {
874
+ 0%, 100% { opacity: 0.6; transform: scale(1); }
875
+ 50% { opacity: 1; transform: scale(1.4); }
876
+ }
877
+ .session-tab-dot {
878
+ width: 6px;
879
+ height: 6px;
880
+ border-radius: 50%;
881
+ flex-shrink: 0;
882
+ transition: box-shadow 0.2s;
883
+ }
884
+ /* R1 — pulsing dot while the agent is actively responding */
885
+ .session-tab.responding .session-tab-dot {
886
+ animation: tab-dot-pulse 1.4s ease-in-out infinite;
887
+ box-shadow: 0 0 6px var(--tab-color, #5080e0);
888
+ }
889
+ @keyframes tab-dot-pulse {
890
+ 0%, 100% { opacity: 0.5; transform: scale(0.85); }
891
+ 50% { opacity: 1; transform: scale(1.15); }
892
+ }
893
+ .session-tab-title {
894
+ max-width: 120px;
895
+ overflow: hidden;
896
+ text-overflow: ellipsis;
897
+ }
898
+ /* R1 — dim suffix (project name or "#N") for duplicate-agent disambiguation */
899
+ .session-tab-suffix {
900
+ color: #5a5a78;
901
+ font-weight: 400;
902
+ font-size: 10px;
903
+ max-width: 110px;
904
+ overflow: hidden;
905
+ text-overflow: ellipsis;
906
+ white-space: nowrap;
907
+ }
908
+ .session-tab.active .session-tab-suffix {
909
+ color: #8090b0;
910
+ }
911
+ /* R2 — "now doing" subline beneath the title */
912
+ .session-tab-subline {
913
+ font-size: 9.5px;
914
+ color: #4a4a68;
915
+ white-space: nowrap;
916
+ overflow: hidden;
917
+ text-overflow: ellipsis;
918
+ max-width: 220px;
919
+ padding-left: 12px; /* align under title (past the dot) */
920
+ letter-spacing: 0.2px;
921
+ }
922
+ .session-tab.active .session-tab-subline {
923
+ color: #6a7a98;
924
+ }
925
+ .session-tab.needs-attention .session-tab-subline {
926
+ color: #c08840;
927
+ }
928
+ .session-tab.responding .session-tab-subline {
929
+ color: #6a8acc;
930
+ }
931
+ .session-tab-close {
932
+ font-size: 14px;
933
+ line-height: 1;
934
+ opacity: 0;
935
+ transition: opacity 0.15s;
936
+ padding: 0 2px;
937
+ }
938
+ .session-tab:hover .session-tab-close { opacity: 0.6; }
939
+ .session-tab-close:hover { opacity: 1 !important; color: #e05050; }
940
+ .session-tab-rename-input {
941
+ background: rgba(255, 255, 255, 0.03);
942
+ border: 1px solid #3860c0;
943
+ border-radius: 3px;
944
+ color: #c0c0d0;
945
+ font-family: inherit;
946
+ font-size: 11px;
947
+ padding: 1px 4px;
948
+ width: 100px;
949
+ outline: none;
950
+ }
951
+ #new-session-btn {
952
+ background: none;
953
+ border: 1px solid #3a3a5a;
954
+ border-radius: 4px;
955
+ color: #7a7a98;
956
+ font-size: 11px;
957
+ height: 26px;
958
+ padding: 0 10px;
959
+ cursor: pointer;
960
+ display: flex;
961
+ align-items: center;
962
+ justify-content: center;
963
+ transition: all 0.15s;
964
+ flex-shrink: 0;
965
+ margin-left: 4px;
966
+ white-space: nowrap;
967
+ font-family: inherit;
968
+ }
969
+ #new-session-btn:hover { background: rgba(255, 255, 255, 0.06); color: #b0b0c8; border-color: #4a4a6a; }
970
+
971
+ /* ─── Permission approval cards ─────────────────────────── */
972
+ .permission-card {
973
+ margin: 8px 16px;
974
+ background: #13132a;
975
+ border: 1px solid #2a2a50;
976
+ border-radius: 8px;
977
+ padding: 14px 16px;
978
+ animation: permCardSlide 0.2s ease-out;
979
+ }
980
+ @keyframes permCardSlide {
981
+ from { opacity: 0; transform: translateY(8px); }
982
+ to { opacity: 1; transform: translateY(0); }
983
+ }
984
+ .permission-card.fade-out {
985
+ opacity: 0;
986
+ transition: opacity 0.5s;
987
+ }
988
+ .permission-header {
989
+ display: flex;
990
+ align-items: center;
991
+ margin-bottom: 10px;
992
+ }
993
+ .permission-lock {
994
+ font-size: 14px;
995
+ margin-right: 8px;
996
+ }
997
+ .permission-title {
998
+ font-size: 13px;
999
+ font-weight: 600;
1000
+ color: #e0e0f0;
1001
+ flex: 1;
1002
+ }
1003
+ .permission-tool {
1004
+ font-size: 11px;
1005
+ color: #6a6a90;
1006
+ text-transform: uppercase;
1007
+ letter-spacing: 1px;
1008
+ margin-bottom: 6px;
1009
+ }
1010
+ .permission-command {
1011
+ background: #0a0a18;
1012
+ border: 1px solid #1e1e36;
1013
+ border-radius: 4px;
1014
+ padding: 8px 12px;
1015
+ margin-bottom: 12px;
1016
+ overflow-x: auto;
1017
+ }
1018
+ .permission-command-text {
1019
+ font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', monospace;
1020
+ font-size: 12px;
1021
+ color: #c0c0e0;
1022
+ white-space: pre-wrap;
1023
+ word-break: break-all;
1024
+ }
1025
+ .permission-show-more {
1026
+ display: inline-block;
1027
+ background: none;
1028
+ border: none;
1029
+ color: #5050a0;
1030
+ font-size: 11px;
1031
+ cursor: pointer;
1032
+ margin-left: 4px;
1033
+ padding: 0;
1034
+ }
1035
+ .permission-show-more:hover { color: #7070c0; }
1036
+ .permission-actions {
1037
+ display: flex;
1038
+ gap: 8px;
1039
+ flex-wrap: wrap;
1040
+ }
1041
+ .permission-btn {
1042
+ font-size: 12px;
1043
+ font-family: inherit;
1044
+ padding: 6px 14px;
1045
+ border-radius: 4px;
1046
+ border: 1px solid #2a2a50;
1047
+ cursor: pointer;
1048
+ transition: all 0.15s;
1049
+ background: #1a1a30;
1050
+ color: #b0b0d0;
1051
+ }
1052
+ .permission-btn:disabled {
1053
+ opacity: 0.4;
1054
+ cursor: not-allowed;
1055
+ }
1056
+ .permission-btn-allow {
1057
+ background: #1a2e1a;
1058
+ border-color: #2a5a2a;
1059
+ color: #80c080;
1060
+ }
1061
+ .permission-btn-allow:hover:not(:disabled) { background: #254025; }
1062
+ .permission-btn-always {
1063
+ background: #1a2a1a;
1064
+ border-color: #2a5a2a;
1065
+ color: #60a060;
1066
+ }
1067
+ .permission-btn-always:hover:not(:disabled) { background: #254025; }
1068
+ .permission-btn-deny {
1069
+ background: #2e1a1a;
1070
+ border-color: #5a2a2a;
1071
+ color: #c08080;
1072
+ }
1073
+ .permission-btn-deny:hover:not(:disabled) { background: #402525; }
1074
+ .permission-btn-always-deny {
1075
+ background: #2a1a1a;
1076
+ border-color: #5a2a2a;
1077
+ color: #a06060;
1078
+ }
1079
+ .permission-btn-always-deny:hover:not(:disabled) { background: #402525; }
1080
+ .permission-error {
1081
+ margin-top: 8px;
1082
+ color: #e05050;
1083
+ font-size: 11px;
1084
+ }
1085
+ .permission-resolved {
1086
+ text-align: center;
1087
+ font-size: 13px;
1088
+ font-weight: 600;
1089
+ padding: 8px;
1090
+ }
1091
+ .permission-resolved.allowed { color: #60c060; }
1092
+ .permission-resolved.denied { color: #e06060; }
1093
+
1094
+ /* ─── Selection context indicator ────────────────────────── */
1095
+ #selection-context-indicator {
1096
+ display: none;
1097
+ align-items: center;
1098
+ gap: 8px;
1099
+ padding: 5px 10px;
1100
+ background: rgba(255, 255, 255, 0.03);
1101
+ border: 1px solid #1e1e32;
1102
+ border-radius: 5px;
1103
+ margin-bottom: 6px;
1104
+ font-size: 11px;
1105
+ width: 100%;
1106
+ box-sizing: border-box;
1107
+ }
1108
+ #selection-context-indicator.visible { display: flex; }
1109
+ .sel-ctx-label {
1110
+ color: #5080e0;
1111
+ font-weight: 600;
1112
+ flex-shrink: 0;
1113
+ }
1114
+ .sel-ctx-file {
1115
+ color: #b0b0c8;
1116
+ font-weight: 500;
1117
+ flex-shrink: 0;
1118
+ white-space: nowrap;
1119
+ }
1120
+ .sel-ctx-preview {
1121
+ color: #4a4a68;
1122
+ overflow: hidden;
1123
+ text-overflow: ellipsis;
1124
+ white-space: nowrap;
1125
+ flex: 1;
1126
+ min-width: 0;
1127
+ font-family: 'SF Mono', 'Fira Code', monospace;
1128
+ font-size: 10px;
1129
+ }
1130
+ .sel-ctx-dismiss {
1131
+ background: none;
1132
+ border: none;
1133
+ color: #4a4a68;
1134
+ font-size: 14px;
1135
+ cursor: pointer;
1136
+ padding: 0 4px;
1137
+ line-height: 1;
1138
+ flex-shrink: 0;
1139
+ transition: color 0.15s;
1140
+ }
1141
+ .sel-ctx-dismiss:hover { color: #e05050; }
1142
+
1143
+ /* ─── Pinboard (context shelf) ──────────────────────────── */
1144
+ #pinboard {
1145
+ display: none;
1146
+ flex-direction: column;
1147
+ gap: 6px;
1148
+ width: 100%;
1149
+ box-sizing: border-box;
1150
+ padding: 8px 10px;
1151
+ background: rgba(255, 255, 255, 0.03);
1152
+ backdrop-filter: blur(10px);
1153
+ -webkit-backdrop-filter: blur(10px);
1154
+ border: 1px solid rgba(255,255,255,0.06);
1155
+ border-radius: 6px;
1156
+ margin-bottom: 4px;
1157
+ order: -2;
1158
+ transition: border-color 0.2s, background 0.2s;
1159
+ }
1160
+ #pinboard.visible { display: flex; }
1161
+
1162
+ /* Drop zone feedback */
1163
+ #pinboard.drop-target {
1164
+ border-color: #3860c0;
1165
+ border-style: dashed;
1166
+ }
1167
+ #pinboard.drag-over {
1168
+ border-color: #5080e0;
1169
+ background: rgba(56, 96, 192, 0.08);
1170
+ border-style: dashed;
1171
+ }
1172
+ /* Show a placeholder pinboard when dragging and no pins exist */
1173
+ #pinboard.drop-target:not(.visible) {
1174
+ display: flex;
1175
+ border-color: #3860c0;
1176
+ border-style: dashed;
1177
+ min-height: 36px;
1178
+ align-items: center;
1179
+ justify-content: center;
1180
+ }
1181
+ #pinboard.drop-target:not(.visible)::after {
1182
+ content: 'Drop here to pin as context';
1183
+ color: #4a4a80;
1184
+ font-size: 11px;
1185
+ }
1186
+ #pinboard.drag-over:not(.visible) {
1187
+ display: flex;
1188
+ border-color: #5080e0;
1189
+ background: rgba(56, 96, 192, 0.08);
1190
+ border-style: dashed;
1191
+ min-height: 36px;
1192
+ align-items: center;
1193
+ justify-content: center;
1194
+ }
1195
+
1196
+ .pinboard-header {
1197
+ display: flex;
1198
+ align-items: center;
1199
+ justify-content: space-between;
1200
+ }
1201
+ .pinboard-label {
1202
+ font-size: 10px;
1203
+ font-weight: 600;
1204
+ letter-spacing: 1px;
1205
+ text-transform: uppercase;
1206
+ color: var(--current-accent);
1207
+ opacity: 0.7;
1208
+ }
1209
+ .pinboard-clear {
1210
+ background: none;
1211
+ border: none;
1212
+ color: #4a4a68;
1213
+ font-size: 10px;
1214
+ cursor: pointer;
1215
+ padding: 0 4px;
1216
+ font-family: inherit;
1217
+ transition: color 0.15s;
1218
+ }
1219
+ .pinboard-clear:hover { color: #e05050; }
1220
+
1221
+ .pinboard-chips {
1222
+ display: flex;
1223
+ flex-wrap: wrap;
1224
+ gap: 4px;
1225
+ }
1226
+ .pin-chip {
1227
+ display: inline-flex;
1228
+ align-items: center;
1229
+ gap: 4px;
1230
+ padding: 3px 6px 3px 8px;
1231
+ background: rgba(19, 19, 32, 0.6);
1232
+ border: 1px solid rgba(255,255,255,0.08);
1233
+ border-radius: 4px;
1234
+ font-size: 11px;
1235
+ color: #b0b0c8;
1236
+ max-width: 220px;
1237
+ cursor: default;
1238
+ transition: border-color 0.15s;
1239
+ clip-path: polygon(3% 0%, 100% 0%, 97% 100%, 0% 100%);
1240
+ }
1241
+ .pin-chip:hover { border-color: #3a3a5a; }
1242
+ .pin-chip-icon {
1243
+ font-size: 10px;
1244
+ flex-shrink: 0;
1245
+ }
1246
+ .pin-chip-name {
1247
+ overflow: hidden;
1248
+ text-overflow: ellipsis;
1249
+ white-space: nowrap;
1250
+ min-width: 0;
1251
+ }
1252
+ .pin-chip-remove {
1253
+ background: none;
1254
+ border: none;
1255
+ color: #4a4a68;
1256
+ font-size: 13px;
1257
+ line-height: 1;
1258
+ cursor: pointer;
1259
+ padding: 0 2px;
1260
+ flex-shrink: 0;
1261
+ transition: color 0.15s;
1262
+ }
1263
+ .pin-chip-remove:hover { color: #e05050; }
1264
+
1265
+ /* Dragging state for explorer entries */
1266
+ .tree-entry.dragging,
1267
+ .dir-entry.dragging,
1268
+ .session-file-entry.dragging,
1269
+ .git-change-entry.dragging {
1270
+ opacity: 0.4;
1271
+ }
1272
+
1273
+ /* ─── Gate block banner (hook returned decision:block) ──────── */
1274
+ .gate-block-banner {
1275
+ display: flex;
1276
+ align-items: center;
1277
+ gap: 10px;
1278
+ padding: 8px 12px;
1279
+ margin: 8px 0;
1280
+ background: rgba(220, 60, 60, 0.12);
1281
+ border: 1px solid rgba(220, 60, 60, 0.5);
1282
+ border-left: 3px solid #dc3c3c;
1283
+ border-radius: 6px;
1284
+ font-size: 13px;
1285
+ color: #ffb0b0;
1286
+ animation: gateSlideIn 0.25s ease-out;
1287
+ }
1288
+ .gate-block-icon {
1289
+ font-size: 16px;
1290
+ }
1291
+ .gate-block-text {
1292
+ flex: 1;
1293
+ font-family: inherit;
1294
+ }
1295
+ .gate-block-text strong { color: #ff8080; }
1296
+ .gate-block-dismiss {
1297
+ background: transparent;
1298
+ border: 0;
1299
+ color: #ffb0b0;
1300
+ font-size: 18px;
1301
+ line-height: 1;
1302
+ cursor: pointer;
1303
+ padding: 0 4px;
1304
+ opacity: 0.7;
1305
+ }
1306
+ .gate-block-dismiss:hover { opacity: 1; }
1307
+
1308
+ /* ─── Gate-mode disabled banner (SHARDS_*_ENFORCE=0) ────────── */
1309
+ .gate-mode-banner {
1310
+ padding: 6px 12px;
1311
+ margin: 0 0 6px 0;
1312
+ background: rgba(255, 170, 0, 0.10);
1313
+ border: 1px solid rgba(255, 170, 0, 0.35);
1314
+ border-radius: 6px;
1315
+ font-size: 12px;
1316
+ color: #ffc266;
1317
+ text-align: center;
1318
+ }
1319
+
1320
+ /* ─── Chat attachments (pasted/dropped images) ──────────────── */
1321
+ .chat-attachments {
1322
+ display: flex;
1323
+ flex-wrap: wrap;
1324
+ gap: 6px;
1325
+ width: 100%;
1326
+ box-sizing: border-box;
1327
+ padding: 8px 10px;
1328
+ background: rgba(255, 255, 255, 0.03);
1329
+ border: 1px solid rgba(255,255,255,0.06);
1330
+ border-radius: 6px;
1331
+ margin-bottom: 4px;
1332
+ order: -1;
1333
+ transition: border-color 0.2s, background 0.2s;
1334
+ }
1335
+ .chat-attachments.drag-over {
1336
+ border-color: #5080e0;
1337
+ background: rgba(56, 96, 192, 0.08);
1338
+ border-style: dashed;
1339
+ }
1340
+ .attachment-chip {
1341
+ position: relative;
1342
+ display: inline-flex;
1343
+ align-items: center;
1344
+ gap: 6px;
1345
+ padding: 4px 28px 4px 4px;
1346
+ background: rgba(19, 19, 32, 0.7);
1347
+ border: 1px solid rgba(255,255,255,0.08);
1348
+ border-radius: 4px;
1349
+ font-size: 11px;
1350
+ color: #b0b0c8;
1351
+ max-width: 220px;
1352
+ }
1353
+ .attachment-chip-thumb {
1354
+ width: 36px;
1355
+ height: 36px;
1356
+ object-fit: cover;
1357
+ border-radius: 3px;
1358
+ flex-shrink: 0;
1359
+ background: #0a0a14;
1360
+ }
1361
+ .attachment-chip-meta {
1362
+ display: flex;
1363
+ flex-direction: column;
1364
+ min-width: 0;
1365
+ line-height: 1.2;
1366
+ }
1367
+ .attachment-chip-name {
1368
+ overflow: hidden;
1369
+ text-overflow: ellipsis;
1370
+ white-space: nowrap;
1371
+ max-width: 130px;
1372
+ }
1373
+ .attachment-chip-size {
1374
+ font-size: 10px;
1375
+ color: #6a6a88;
1376
+ }
1377
+ .attachment-chip-remove {
1378
+ position: absolute;
1379
+ top: 2px;
1380
+ right: 4px;
1381
+ background: none;
1382
+ border: none;
1383
+ color: #7a7a98;
1384
+ font-size: 14px;
1385
+ line-height: 1;
1386
+ cursor: pointer;
1387
+ padding: 2px 4px;
1388
+ }
1389
+ .attachment-chip-remove:hover { color: #e05050; }
1390
+
1391
+ /* Inline attachments inside user message bubbles */
1392
+ .message-attachments {
1393
+ display: flex;
1394
+ flex-wrap: wrap;
1395
+ gap: 6px;
1396
+ margin-bottom: 6px;
1397
+ }
1398
+ .message-attachment-img {
1399
+ max-width: 240px;
1400
+ max-height: 240px;
1401
+ border-radius: 4px;
1402
+ border: 1px solid rgba(255,255,255,0.08);
1403
+ cursor: zoom-in;
1404
+ display: block;
1405
+ }