botrun-horse 2.30.0 → 2.34.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 (664) hide show
  1. package/bin/bh.mjs +37 -170
  2. package/bin/commands/help.mjs +30 -30
  3. package/{lib/flows → modules/_core}/draft-writing.mjs +1 -1
  4. package/{lib/flows → modules/_core}/gemini-ask.mjs +1 -1
  5. package/{lib/flows → modules/_core}/legal-ask.mjs +4 -4
  6. package/{lib/flows → modules/_core}/openai-agent.mjs +2 -2
  7. package/{lib/flows → modules/_core}/openrouter-ask.mjs +1 -1
  8. package/{bin/commands/dag-cmd.mjs → modules/dag/command.mjs} +2 -2
  9. package/modules/dag/index.mjs +30 -0
  10. package/{bin/commands/db-cmd.mjs → modules/db/command.mjs} +3 -3
  11. package/modules/db/index.mjs +26 -0
  12. package/modules/discover.mjs +43 -0
  13. package/{bin/commands/doc.mjs → modules/doc/command.mjs} +5 -5
  14. package/modules/doc/index.mjs +55 -0
  15. package/{lib/doc/index.mjs → modules/doc/ingest.mjs} +1 -1
  16. package/{lib → modules}/doc/office2text.mjs +1 -1
  17. package/{lib → modules}/doc/pdf2text.mjs +1 -1
  18. package/{lib → modules}/doc/split.mjs +1 -1
  19. package/{bin/commands/gemini.mjs → modules/gemini/command.mjs} +3 -3
  20. package/modules/gemini/index.mjs +41 -0
  21. package/modules/imagen/command.mjs +117 -0
  22. package/modules/imagen/imagen-client.mjs +239 -0
  23. package/modules/imagen/index.mjs +60 -0
  24. package/modules/imagen/server.mjs +133 -0
  25. package/{bin/commands/legal.mjs → modules/legal/command.mjs} +5 -5
  26. package/modules/legal/index.mjs +56 -0
  27. package/{bin/commands/nchc.mjs → modules/nchc/command.mjs} +4 -4
  28. package/modules/nchc/index.mjs +48 -0
  29. package/modules/ocr/index.mjs +17 -0
  30. package/{bin/commands/openrouter.mjs → modules/openrouter/command.mjs} +5 -5
  31. package/modules/openrouter/index.mjs +49 -0
  32. package/modules/portal/index.mjs +17 -0
  33. package/{bin/commands/search.mjs → modules/search/command.mjs} +3 -3
  34. package/modules/search/index.mjs +23 -0
  35. package/{lib/search/index.mjs → modules/search/search-lib.mjs} +1 -1
  36. package/{bin/commands/skill.mjs → modules/skill/command.mjs} +46 -9
  37. package/modules/skill/index.mjs +35 -0
  38. package/{lib/prompt → modules/skill}/prompt-search.mjs +1 -1
  39. package/{lib/prompt → modules/skill}/prompt-store.mjs +28 -11
  40. package/modules/skill/prompts/zero-framework/address-matching.md +22 -0
  41. package/modules/skill/prompts/zero-framework/data-integrity.md +15 -0
  42. package/modules/skill/prompts/zero-framework/data-reasonability.md +17 -0
  43. package/modules/skill/prompts/zero-framework/gemini-image-gen.md +20 -0
  44. package/modules/skill/prompts/zero-framework/gemini-search-cli.md +10 -0
  45. package/modules/skill/prompts/zero-framework/html-report.md +15 -0
  46. package/modules/skill/prompts/zero-framework/smart-cache.md +10 -0
  47. package/modules/skill/prompts/zero-framework/trigram-search.md +12 -0
  48. package/modules/skill/prompts/zero-framework/tts-format.md +6 -0
  49. package/modules/skill/prompts/zero-framework/watermelon-sqlite.md +8 -0
  50. package/{bin/commands/writing.mjs → modules/writing/command.mjs} +3 -3
  51. package/{lib → modules}/writing/generate.mjs +2 -2
  52. package/modules/writing/index.mjs +38 -0
  53. package/package.json +3 -1
  54. package/parallel-dag-todo-list/imagen-module.md +51 -0
  55. package/bin/commands/schema.mjs +0 -254
  56. package/botrun-c/.claude/skills/DOCX/351/226/261/350/256/200/346/212/200/350/203/275/SKILL.md +0 -103
  57. package/botrun-c/.claude/skills/DOCX/351/226/261/350/256/200/346/212/200/350/203/275/scripts/docx-to-markdown.mjs +0 -206
  58. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/SKILL.md +0 -1093
  59. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-branch.mjs +0 -73
  60. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-branches.mjs +0 -77
  61. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-checkout.mjs +0 -72
  62. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-clone.mjs +0 -72
  63. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-commit.mjs +0 -75
  64. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-delete-branch.mjs +0 -75
  65. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-delete-file.mjs +0 -72
  66. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-diff.mjs +0 -80
  67. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-list-tree.mjs +0 -336
  68. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-list.mjs +0 -199
  69. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-merge.mjs +0 -86
  70. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-move.mjs +0 -75
  71. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-create.mjs +0 -81
  72. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-list.mjs +0 -74
  73. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-merge.mjs +0 -83
  74. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-view.mjs +0 -71
  75. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-push.mjs +0 -71
  76. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-read.mjs +0 -277
  77. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-search.mjs +0 -370
  78. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-stash.mjs +0 -116
  79. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-sync.mjs +0 -71
  80. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-write.mjs +0 -74
  81. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/lib/path-validator.mjs +0 -167
  82. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/SKILL.md +0 -605
  83. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-create.mjs +0 -127
  84. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-delete.mjs +0 -77
  85. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-diff.mjs +0 -87
  86. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-history.mjs +0 -99
  87. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-list.mjs +0 -174
  88. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-read.mjs +0 -214
  89. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-restore.mjs +0 -75
  90. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-search.mjs +0 -270
  91. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-sync-back.mjs +0 -155
  92. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-update.mjs +0 -100
  93. package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/SKILL.md +0 -414
  94. package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/scripts/create-project.mjs +0 -91
  95. package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/scripts/finalize-project.mjs +0 -162
  96. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/SKILL.md +0 -206
  97. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/package.json +0 -19
  98. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-analyze.mjs +0 -309
  99. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-compress.mjs +0 -315
  100. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-split.mjs +0 -275
  101. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-to-text.mjs +0 -336
  102. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/test-pdf-scripts.mjs +0 -491
  103. package/botrun-c/.claude/skills/docx-to-markdown/SKILL.md +0 -76
  104. package/botrun-c/.claude/skills/docx-to-markdown/scripts/convert_docx.py +0 -183
  105. package/botrun-c/.claude/skills/gcp-coord-ml-ocr/SKILL.md +0 -133
  106. package/botrun-c/.claude/skills/gcp-coord-ml-ocr/scripts/ocr_processor.py +0 -381
  107. package/botrun-c/.claude/skills/gemini-transcribe/SKILL.md +0 -115
  108. package/botrun-c/.claude/skills/gemini-transcribe/scripts/transcribe.py +0 -499
  109. package/botrun-c/.claude/skills/nchc-transcribe/SKILL.md +0 -131
  110. package/botrun-c/.claude/skills/nchc-transcribe/scripts/transcribe.py +0 -522
  111. package/botrun-c/.claude/skills/p320-moj-review/SKILL.md +0 -200
  112. package/botrun-c/.claude/skills/p320-moj-review/references/guideline.md +0 -118
  113. package/botrun-c/.claude/skills/pdf-multimodal-processor/SKILL.md +0 -186
  114. package/botrun-c/.claude/skills/pdf-multimodal-processor/scripts/process_pdf.py +0 -515
  115. package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/SKILL.md +0 -81
  116. package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/scripts/package.json +0 -13
  117. package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/scripts/secure-search.mjs +0 -232
  118. package/botrun-c/.claude/skills/top100/351/240/230/350/242/226/351/240/220/346/270/254/346/212/200/350/203/275/SKILL.md +0 -518
  119. package/botrun-c/.claude/skills//345/216/273/350/255/230/345/210/245/346/212/200/350/203/275/SKILL.md +0 -125
  120. package/botrun-c/.claude/skills//345/233/236/346/206/266/346/212/200/350/203/275/SKILL.md +0 -123
  121. package/botrun-c/.claude/skills//345/233/236/346/206/266/346/212/200/350/203/275/scripts/recall.mjs +0 -339
  122. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/SKILL.md +0 -156
  123. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/scripts/__tests__/utils.test.mjs +0 -139
  124. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/scripts/constants.mjs +0 -40
  125. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/scripts/gcs-uploader.mjs +0 -195
  126. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/scripts/gemini-image-client.mjs +0 -307
  127. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/scripts/generate-image.mjs +0 -103
  128. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/scripts/image-session-manager.mjs +0 -219
  129. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/scripts/output-formatter.mjs +0 -209
  130. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/scripts/package.json +0 -20
  131. package/botrun-c/.claude/skills//345/234/226/347/211/207/347/224/237/346/210/220/346/212/200/350/203/275/scripts/utils.mjs +0 -115
  132. package/botrun-c/.claude/skills//345/244/232/346/250/241/346/205/213/351/226/261/350/256/200/346/212/200/350/203/275/SKILL.md +0 -86
  133. package/botrun-c/.claude/skills//345/244/232/346/250/241/346/205/213/351/226/261/350/256/200/346/212/200/350/203/275/scripts/multimodal-read.mjs +0 -304
  134. package/botrun-c/.claude/skills//345/244/232/346/250/241/346/205/213/351/226/261/350/256/200/346/212/200/350/203/275/scripts/package.json +0 -17
  135. package/botrun-c/.claude/skills//345/255/265/345/214/226/346/212/200/350/203/275/SKILL.md +0 -131
  136. package/botrun-c/.claude/skills//345/255/265/345/214/226/346/212/200/350/203/275/scripts/skill-manager.mjs +0 -542
  137. package/botrun-c/.claude/skills//346/234/203/350/255/260/350/250/230/351/214/204/346/212/200/350/203/275/SKILL.md +0 -127
  138. package/botrun-c/.claude/skills//347/233/256/351/214/204/345/210/227/350/241/250/346/212/200/350/203/275/SKILL.md +0 -53
  139. package/botrun-c/.claude/skills//347/233/256/351/214/204/345/210/227/350/241/250/346/212/200/350/203/275/scripts/package.json +0 -13
  140. package/botrun-c/.claude/skills//347/233/256/351/214/204/345/210/227/350/241/250/346/212/200/350/203/275/scripts/tree-view.mjs +0 -149
  141. package/botrun-c/.claude/skills//347/264/224/346/226/207/345/255/227/345/244/232/346/252/224/346/241/210/350/256/200/345/217/226/346/212/200/350/203/275/SKILL.md +0 -82
  142. package/botrun-c/.claude/skills//347/264/224/346/226/207/345/255/227/345/244/232/346/252/224/346/241/210/350/256/200/345/217/226/346/212/200/350/203/275/scripts/package.json +0 -16
  143. package/botrun-c/.claude/skills//347/264/224/346/226/207/345/255/227/345/244/232/346/252/224/346/241/210/350/256/200/345/217/226/346/212/200/350/203/275/scripts/secure-read.mjs +0 -260
  144. package/botrun-c/.claude/skills//347/266/262/350/267/257/346/220/234/345/260/213/346/212/200/350/203/275/SKILL.md +0 -156
  145. package/botrun-c/.claude/skills//347/266/262/350/267/257/346/220/234/345/260/213/346/212/200/350/203/275/scripts/package.json +0 -16
  146. package/botrun-c/.claude/skills//347/266/262/350/267/257/346/220/234/345/260/213/346/212/200/350/203/275/scripts/search.js +0 -139
  147. package/botrun-c/.claude/skills//347/266/262/350/267/257/346/220/234/345/260/213/346/212/200/350/203/275/scripts/search.mjs +0 -272
  148. package/botrun-c/.claude/skills//347/266/262/350/267/257/346/220/234/345/260/213/346/212/200/350/203/275/scripts/search.ts +0 -166
  149. package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/SKILL.md +0 -114
  150. package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/remember.mjs +0 -159
  151. package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/test-advanced.mjs +0 -342
  152. package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/test.mjs +0 -430
  153. package/botrun-c/.claude/skills//350/252/236/351/237/263/350/275/211/346/226/207/345/255/227/346/212/200/350/203/275/SKILL.md +0 -30
  154. package/botrun-c/.claude/skills//350/252/236/351/237/263/350/275/211/346/226/207/345/255/227/346/212/200/350/203/275/scripts/package.json +0 -13
  155. package/botrun-c/.claude/skills//350/252/236/351/237/263/350/275/211/346/226/207/345/255/227/346/212/200/350/203/275/scripts/transcribe.mjs +0 -294
  156. package/botrun-c/.claude/skills//351/233/266/345/271/273/350/246/272/350/255/211/346/230/216/346/212/200/350/203/275/SKILL.md +0 -338
  157. package/botrun-c/.dockerignore +0 -131
  158. package/botrun-c/.dockeroptimize +0 -13
  159. package/botrun-c/.firebase/hosting.b3V0.cache +0 -30
  160. package/botrun-c/.firebaserc +0 -5
  161. package/botrun-c/.gcloudignore +0 -56
  162. package/botrun-c/.ruby-version +0 -1
  163. package/botrun-c/CHANGELOG.md +0 -224
  164. package/botrun-c/Dockerfile.gcp +0 -365
  165. package/botrun-c/Dockerfile.slim +0 -195
  166. package/botrun-c/Gemfile +0 -8
  167. package/botrun-c/Gemfile.lock +0 -233
  168. package/botrun-c/LOCAL-DEVELOPMENT-GUIDE.md +0 -393
  169. package/botrun-c/PLAN.md +0 -131
  170. package/botrun-c/README.md +0 -129
  171. package/botrun-c/TODO-CAPACITOR-INTEGRATION.md +0 -482
  172. package/botrun-c/VERIFICATION.md +0 -121
  173. package/botrun-c/admin/RATE_LIMIT_MANAGEMENT.md +0 -312
  174. package/botrun-c/admin/README.md +0 -338
  175. package/botrun-c/admin/botrun-billing-report-1765235244038.csv +0 -22
  176. package/botrun-c/admin/botrun-billing-report-1765235323089.csv +0 -22
  177. package/botrun-c/admin/botrun-dashboard-1765235244039.html +0 -278
  178. package/botrun-c/admin/botrun-dashboard-1765235323089.html +0 -278
  179. package/botrun-c/admin/botrun-timeseries-074xGzIKWyfKTBt1NMIj9lxi5mO2-1765235244039.html +0 -161
  180. package/botrun-c/admin/botrun-timeseries-074xGzIKWyfKTBt1NMIj9lxi5mO2-1765235323090.html +0 -161
  181. package/botrun-c/admin/check-billing.ts +0 -48
  182. package/botrun-c/admin/count-all-users.ts +0 -65
  183. package/botrun-c/admin/generate-analytics-report.ts +0 -188
  184. package/botrun-c/admin/jest.config.ts +0 -43
  185. package/botrun-c/admin/lib/__tests__/formatters.test.ts +0 -264
  186. package/botrun-c/admin/lib/__tests__/mocks/firebase.mock.ts +0 -112
  187. package/botrun-c/admin/lib/__tests__/services/UserService.test.ts +0 -83
  188. package/botrun-c/admin/lib/__tests__/user-resolver.test.ts +0 -439
  189. package/botrun-c/admin/lib/analyzers/BillingAnalyticsService.ts +0 -242
  190. package/botrun-c/admin/lib/analyzers/CsvExporter.ts +0 -263
  191. package/botrun-c/admin/lib/analyzers/HtmlChartGenerator.ts +0 -530
  192. package/botrun-c/admin/lib/analyzers/SpikeAnalyzer.ts +0 -608
  193. package/botrun-c/admin/lib/analyzers/TimeSeriesAnalyzer.ts +0 -344
  194. package/botrun-c/admin/lib/cli/CLIBootstrapper.ts +0 -40
  195. package/botrun-c/admin/lib/commands/AbstractCommand.ts +0 -69
  196. package/botrun-c/admin/lib/commands/AnalyticsCommand.ts +0 -215
  197. package/botrun-c/admin/lib/commands/ListCommand.ts +0 -85
  198. package/botrun-c/admin/lib/commands/QueryCommand.ts +0 -81
  199. package/botrun-c/admin/lib/commands/SpikeCommand.ts +0 -83
  200. package/botrun-c/admin/lib/domain/User.ts +0 -38
  201. package/botrun-c/admin/lib/firebase.ts +0 -92
  202. package/botrun-c/admin/lib/firestore-safe.ts +0 -105
  203. package/botrun-c/admin/lib/formatters.ts +0 -154
  204. package/botrun-c/admin/lib/rate-limit-detailed.ts +0 -355
  205. package/botrun-c/admin/lib/rate-limit.ts +0 -286
  206. package/botrun-c/admin/lib/repositories/UserRepository.ts +0 -104
  207. package/botrun-c/admin/lib/services/UserService.ts +0 -108
  208. package/botrun-c/admin/lib/types.ts +0 -56
  209. package/botrun-c/admin/lib/user-resolver.ts +0 -275
  210. package/botrun-c/admin/manage-auth-domains.js +0 -178
  211. package/botrun-c/admin/migrate-plan-free.sh +0 -64
  212. package/botrun-c/admin/package-lock.json +0 -5656
  213. package/botrun-c/admin/package.json +0 -28
  214. package/botrun-c/admin/rate-limit.sh +0 -55
  215. package/botrun-c/admin/remove-custom-limits.ts +0 -75
  216. package/botrun-c/admin/reset-rate.sh +0 -70
  217. package/botrun-c/admin/reset-trial.sh +0 -68
  218. package/botrun-c/admin/seed-trial-data.sh +0 -38
  219. package/botrun-c/admin/trial.sh +0 -55
  220. package/botrun-c/admin/tsconfig.json +0 -20
  221. package/botrun-c/admin/users-cli.py +0 -298
  222. package/botrun-c/admin/users.sh +0 -12
  223. package/botrun-c/admin/users.ts +0 -1321
  224. package/botrun-c/api/admin-tools/check-whitelist.mjs.migration-bak +0 -74
  225. package/botrun-c/api/admin-tools/create-user.mjs +0 -92
  226. package/botrun-c/api/admin-tools/create-user.mjs.migration-bak +0 -92
  227. package/botrun-c/api/admin-tools/firebase-auth-domains-v2.py +0 -287
  228. package/botrun-c/api/admin-tools/firebase-auth-domains-v2.py.migration-bak +0 -287
  229. package/botrun-c/api/admin-tools/init-firestore.mjs +0 -75
  230. package/botrun-c/api/admin-tools/init-firestore.mjs.migration-bak +0 -101
  231. package/botrun-c/api/admin-tools/list-users.mjs +0 -43
  232. package/botrun-c/api/admin-tools/list-users.mjs.migration-bak +0 -43
  233. package/botrun-c/api/admin-tools/manage-authorized-domains.ts +0 -255
  234. package/botrun-c/api/admin-tools/manage-authorized-domains.ts.migration-bak +0 -255
  235. package/botrun-c/api/admin-tools/setup-custom-claims.ts.migration-bak +0 -155
  236. package/botrun-c/api/admin-tools/test-claims.mjs +0 -69
  237. package/botrun-c/api/admin-tools/test-claims.mjs.migration-bak +0 -69
  238. package/botrun-c/api/admin-tools/update-service-urls-gcloud.mjs +0 -72
  239. package/botrun-c/api/admin-tools/update-service-urls-gcloud.mjs.migration-bak +0 -72
  240. package/botrun-c/api/admin-tools/update-service-urls-to-lb.mjs +0 -159
  241. package/botrun-c/api/admin-tools/update-service-urls-to-lb.mjs.migration-bak +0 -159
  242. package/botrun-c/api/admin-tools/update-service-urls.mjs +0 -82
  243. package/botrun-c/api/admin-tools/update-service-urls.mjs.migration-bak +0 -82
  244. package/botrun-c/api/package-lock.json +0 -5031
  245. package/botrun-c/api/package.json +0 -63
  246. package/botrun-c/api/pnpm-lock.yaml +0 -4157
  247. package/botrun-c/api/rate-limit-export-1763620678737.csv +0 -79
  248. package/botrun-c/api/scripts/README-migrate-plan-free.md +0 -197
  249. package/botrun-c/api/scripts/check-users.ts +0 -45
  250. package/botrun-c/api/scripts/delete-firestore-docs.js +0 -43
  251. package/botrun-c/api/scripts/dump-subscriptions.ts +0 -395
  252. package/botrun-c/api/scripts/list-all-users.ts +0 -65
  253. package/botrun-c/api/scripts/migrate-plan-free-rpd-16to32.ts +0 -262
  254. package/botrun-c/api/scripts/migrate-plan-names-to-lite-max.ts +0 -269
  255. package/botrun-c/api/scripts/query-user-info.ts +0 -304
  256. package/botrun-c/api/scripts/reset-rate-limit.ts +0 -206
  257. package/botrun-c/api/scripts/reset-trial-subscription.ts +0 -166
  258. package/botrun-c/api/scripts/rollback-plan-names-from-lite-max.ts +0 -139
  259. package/botrun-c/api/scripts/seed-rate-limit-test-data.ts +0 -114
  260. package/botrun-c/api/scripts/seed-subscription-test-data.ts +0 -173
  261. package/botrun-c/api/scripts/test-rate-limit-message.ts +0 -108
  262. package/botrun-c/api/test-billing-write.ts +0 -103
  263. package/botrun-c/api/test-billing.ts +0 -81
  264. package/botrun-c/api/test-chat-upload.sh +0 -162
  265. package/botrun-c/api/test-nchc-whisper.ts +0 -87
  266. package/botrun-c/api/test-skills-loading.js +0 -77
  267. package/botrun-c/api/test-skills-symlink.js +0 -118
  268. package/botrun-c/api/test-upload-multimodal.sh +0 -167
  269. package/botrun-c/api/tsconfig.json +0 -27
  270. package/botrun-c/api/verify-form-2-1.mjs +0 -229
  271. package/botrun-c/api/vitest.config.ts +0 -9
  272. package/botrun-c/appium-capabilities.json +0 -20
  273. package/botrun-c/cors.json +0 -26
  274. package/botrun-c/delete-old.sh +0 -44
  275. package/botrun-c/design/google-drive/01-architecture.md +0 -186
  276. package/botrun-c/design/google-drive/02-api-design.md +0 -314
  277. package/botrun-c/design/google-drive/03-frontend-design.md +0 -278
  278. package/botrun-c/design/google-drive/04-skill-design.md +0 -384
  279. package/botrun-c/design/google-drive/05-test-plan.md +0 -507
  280. package/botrun-c/design/google-drive/README.md +0 -32
  281. package/botrun-c/dev/mcp-token-calculator/README.md +0 -92
  282. package/botrun-c/dev/mcp-token-calculator/RESULTS.md +0 -188
  283. package/botrun-c/dev/mcp-token-calculator/calculate-current-tokens.ts +0 -369
  284. package/botrun-c/dev/mcp-token-calculator/calculate-mcp-tokens.ts +0 -464
  285. package/botrun-c/dev/mcp-token-calculator/optimization-proposals.ts +0 -316
  286. package/botrun-c/dev/mcp-token-calculator/package-lock.json +0 -599
  287. package/botrun-c/dev/mcp-token-calculator/package.json +0 -22
  288. package/botrun-c/dev/mcp-token-calculator/test-all-schemas.ts +0 -314
  289. package/botrun-c/dev/mcp-token-calculator/test-schema-correctness.ts +0 -221
  290. package/botrun-c/dev/mcp-token-calculator/verify-optimization.ts +0 -159
  291. package/botrun-c/fastlane/ANDROID-DEPLOYMENT-SETUP.md +0 -825
  292. package/botrun-c/fastlane/IOS-DEPLOYMENT-SETUP.md +0 -431
  293. package/botrun-c/fastlane/Pluginfile +0 -5
  294. package/botrun-c/fastlane/QUICK-START.md +0 -133
  295. package/botrun-c/fastlane/README.md +0 -424
  296. package/botrun-c/fastlane/RUBY-SETUP.md +0 -449
  297. package/botrun-c/fastlane/android/Appfile +0 -11
  298. package/botrun-c/fastlane/android/Fastfile +0 -240
  299. package/botrun-c/firebase.json +0 -46
  300. package/botrun-c/firestore-init-data.json +0 -40
  301. package/botrun-c/firestore.indexes.json +0 -55
  302. package/botrun-c/firestore.rules +0 -53
  303. package/botrun-c/fix-codex-permissions.sh +0 -56
  304. package/botrun-c/gcs-lifecycle-30day-retention.json +0 -12
  305. package/botrun-c/html-architecture/architecture/deployment.html +0 -664
  306. package/botrun-c/html-architecture/architecture/index.html +0 -309
  307. package/botrun-c/html-architecture/architecture/styles.css +0 -500
  308. package/botrun-c/html-architecture/architecture/system-components.html +0 -538
  309. package/botrun-c/html-architecture/architecture/user-flow.html +0 -370
  310. package/botrun-c/mobile-android/FIREBASE-AUTH-SETUP.md +0 -302
  311. package/botrun-c/mobile-android/WSL-ANDROID-SETUP.md +0 -252
  312. package/botrun-c/mobile-android/android/app/build.gradle +0 -75
  313. package/botrun-c/mobile-android/android/app/capacitor.build.gradle +0 -31
  314. package/botrun-c/mobile-android/android/app/proguard-rules.pro +0 -21
  315. package/botrun-c/mobile-android/android/build.gradle +0 -29
  316. package/botrun-c/mobile-android/android/capacitor.settings.gradle +0 -42
  317. package/botrun-c/mobile-android/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  318. package/botrun-c/mobile-android/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  319. package/botrun-c/mobile-android/android/gradle.properties +0 -22
  320. package/botrun-c/mobile-android/android/gradlew +0 -252
  321. package/botrun-c/mobile-android/android/gradlew.bat +0 -94
  322. package/botrun-c/mobile-android/android/settings.gradle +0 -5
  323. package/botrun-c/mobile-android/android/variables.gradle +0 -16
  324. package/botrun-c/mobile-android/capacitor.config.ts +0 -44
  325. package/botrun-c/mobile-android/fastlane/Appfile +0 -11
  326. package/botrun-c/mobile-android/fastlane/Fastfile +0 -202
  327. package/botrun-c/mobile-android/fastlane/README.md +0 -96
  328. package/botrun-c/mobile-android/google-services.json.template +0 -39
  329. package/botrun-c/mobile-android/package.json +0 -32
  330. package/botrun-c/mobile-android/resources/icon.png +0 -0
  331. package/botrun-c/mobile-android/tsconfig.json +0 -15
  332. package/botrun-c/mobile-ios/.ruby-version +0 -1
  333. package/botrun-c/mobile-ios/BUILD-LOG.md +0 -82
  334. package/botrun-c/mobile-ios/Gemfile +0 -4
  335. package/botrun-c/mobile-ios/Gemfile.lock +0 -299
  336. package/botrun-c/mobile-ios/GoogleService-Info.plist.template +0 -34
  337. package/botrun-c/mobile-ios/IOS-PERMISSIONS.md +0 -80
  338. package/botrun-c/mobile-ios/QUICK-START.md +0 -189
  339. package/botrun-c/mobile-ios/README.md +0 -231
  340. package/botrun-c/mobile-ios/capacitor.config.ts +0 -46
  341. package/botrun-c/mobile-ios/fastlane/Fastfile +0 -326
  342. package/botrun-c/mobile-ios/fastlane/README.md +0 -88
  343. package/botrun-c/mobile-ios/ios/App/App/App.entitlements +0 -10
  344. package/botrun-c/mobile-ios/ios/App/App/AppDelegate.swift +0 -49
  345. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png +0 -0
  346. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  347. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Contents.json +0 -6
  348. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +0 -56
  349. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png +0 -0
  350. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png +0 -0
  351. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png +0 -0
  352. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png +0 -0
  353. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png +0 -0
  354. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png +0 -0
  355. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  356. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  357. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  358. package/botrun-c/mobile-ios/ios/App/App/Base.lproj/LaunchScreen.storyboard +0 -32
  359. package/botrun-c/mobile-ios/ios/App/App/Base.lproj/Main.storyboard +0 -19
  360. package/botrun-c/mobile-ios/ios/App/App/Info.plist +0 -72
  361. package/botrun-c/mobile-ios/ios/App/App.xcodeproj/project.pbxproj +0 -446
  362. package/botrun-c/mobile-ios/ios/App/App.xcodeproj/xcshareddata/xcschemes/App.xcscheme +0 -78
  363. package/botrun-c/mobile-ios/ios/App/App.xcworkspace/contents.xcworkspacedata +0 -10
  364. package/botrun-c/mobile-ios/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  365. package/botrun-c/mobile-ios/ios/App/Podfile +0 -52
  366. package/botrun-c/mobile-ios/ios/App/Podfile.lock +0 -205
  367. package/botrun-c/mobile-ios/ios/App/add_plist.rb +0 -30
  368. package/botrun-c/mobile-ios/ios/App/fix_plist_path.rb +0 -22
  369. package/botrun-c/mobile-ios/package.json +0 -29
  370. package/botrun-c/mobile-ios/resources/icon.png +0 -0
  371. package/botrun-c/mobile-ios/run-simulator.sh +0 -34
  372. package/botrun-c/mobile-ios/screenshot-after-clean-rebuild.png +0 -0
  373. package/botrun-c/mobile-ios/screenshot-final-version.png +0 -0
  374. package/botrun-c/mobile-ios/screenshot-simulator.png +0 -0
  375. package/botrun-c/mobile-ios/screenshot-version-1009.png +0 -0
  376. package/botrun-c/mobile-ios/screenshot-with-version.png +0 -0
  377. package/botrun-c/mobile-ios/screenshot-working.png +0 -0
  378. package/botrun-c/mobile-ios/setup-ios.sh +0 -106
  379. package/botrun-c/mobile-ios/tsconfig.json +0 -16
  380. package/botrun-c/org-policy-allow-all-users.yaml +0 -3
  381. package/botrun-c/package.json +0 -68
  382. package/botrun-c/pnpm-lock.yaml +0 -10198
  383. package/botrun-c/pnpm-workspace.yaml +0 -6
  384. package/botrun-c/prompts/BOTRUN-1.md +0 -13
  385. package/botrun-c/prompts/BOTRUN-2.md +0 -70
  386. package/botrun-c/prompts/BOTRUN-3.md +0 -139
  387. package/botrun-c/prototypes/firestore-gax-debug/package-lock.json +0 -1204
  388. package/botrun-c/prototypes/firestore-gax-debug/package.json +0 -12
  389. package/botrun-c/prototypes/firestore-gax-debug/pnpm-workspace.yaml +0 -2
  390. package/botrun-c/prototypes/firestore-gax-debug/test.js +0 -98
  391. package/botrun-c/prototypes/taiwan-haiku/README.md +0 -93
  392. package/botrun-c/prototypes/taiwan-haiku/index.ts +0 -139
  393. package/botrun-c/prototypes/taiwan-haiku/package.json +0 -23
  394. package/botrun-c/prototypes/taiwan-haiku/pnpm-lock.yaml +0 -730
  395. package/botrun-c/prototypes/taiwan-haiku/test-vertex-direct.ts +0 -83
  396. package/botrun-c/prototypes/taiwan-haiku/tsconfig.json +0 -18
  397. package/botrun-c/prototypes/web-search/FINDINGS-STAGE-1.md +0 -48
  398. package/botrun-c/prototypes/web-search/README.md +0 -46
  399. package/botrun-c/prototypes/web-search/VERIFICATION-REPORT.md +0 -310
  400. package/botrun-c/prototypes/web-search/package-lock.json +0 -595
  401. package/botrun-c/prototypes/web-search/package.json +0 -18
  402. package/botrun-c/prototypes/web-search/stage-1.1-basic-connection.js +0 -123
  403. package/botrun-c/prototypes/web-search/stage-1.2-with-websearch.js +0 -154
  404. package/botrun-c/prototypes/web-search/stage-1.3-search-query.js +0 -192
  405. package/botrun-c/prototypes/web-search/stage-2-agent-sdk-websearch.js +0 -265
  406. package/botrun-c/runtime-scripts/env-detect.sh +0 -64
  407. package/botrun-c/scripts/github-collaborator-manager.sh +0 -297
  408. package/botrun-c/scripts/github-collaborator-manager.ts +0 -325
  409. package/botrun-c/scripts/manage-collaborators.sh +0 -91
  410. package/botrun-c/scripts/setup-secrets.sh +0 -202
  411. package/botrun-c/scripts/stress-test-17-users.sh +0 -113
  412. package/botrun-c/scripts/stress-test-api.sh +0 -119
  413. package/botrun-c/scripts/stress-test-full-report.sh +0 -385
  414. package/botrun-c/specs/infra-vm/design.md +0 -0
  415. package/botrun-c/specs/share-skill/design.md +0 -1146
  416. package/botrun-c/specs/share-skill/tasks.md +0 -444
  417. package/botrun-c/stress-test-results/20260121-162630/config.json +0 -7
  418. package/botrun-c/stress-test-results/20260121-162630/user-1-status.txt +0 -1
  419. package/botrun-c/stress-test-results/20260121-162630/user-1-timing.txt +0 -1
  420. package/botrun-c/stress-test-results/20260121-162630/user-1.json +0 -2
  421. package/botrun-c/stress-test-results/20260121-162646/config.json +0 -7
  422. package/botrun-c/stress-test-results/20260121-162646/user-1-status.txt +0 -1
  423. package/botrun-c/stress-test-results/20260121-162646/user-1-timing.txt +0 -1
  424. package/botrun-c/stress-test-results/20260121-162646/user-1.json +0 -2
  425. package/botrun-c/stress-test-results/20260121-162646/user-10-status.txt +0 -1
  426. package/botrun-c/stress-test-results/20260121-162646/user-10-timing.txt +0 -1
  427. package/botrun-c/stress-test-results/20260121-162646/user-10.json +0 -2
  428. package/botrun-c/stress-test-results/20260121-162646/user-11-status.txt +0 -1
  429. package/botrun-c/stress-test-results/20260121-162646/user-11-timing.txt +0 -1
  430. package/botrun-c/stress-test-results/20260121-162646/user-11.json +0 -2
  431. package/botrun-c/stress-test-results/20260121-162646/user-12-status.txt +0 -1
  432. package/botrun-c/stress-test-results/20260121-162646/user-12-timing.txt +0 -1
  433. package/botrun-c/stress-test-results/20260121-162646/user-12.json +0 -2
  434. package/botrun-c/stress-test-results/20260121-162646/user-13-status.txt +0 -1
  435. package/botrun-c/stress-test-results/20260121-162646/user-13-timing.txt +0 -1
  436. package/botrun-c/stress-test-results/20260121-162646/user-13.json +0 -2
  437. package/botrun-c/stress-test-results/20260121-162646/user-14-status.txt +0 -1
  438. package/botrun-c/stress-test-results/20260121-162646/user-14-timing.txt +0 -1
  439. package/botrun-c/stress-test-results/20260121-162646/user-14.json +0 -2
  440. package/botrun-c/stress-test-results/20260121-162646/user-15-status.txt +0 -1
  441. package/botrun-c/stress-test-results/20260121-162646/user-15-timing.txt +0 -1
  442. package/botrun-c/stress-test-results/20260121-162646/user-15.json +0 -2
  443. package/botrun-c/stress-test-results/20260121-162646/user-16-status.txt +0 -1
  444. package/botrun-c/stress-test-results/20260121-162646/user-16-timing.txt +0 -1
  445. package/botrun-c/stress-test-results/20260121-162646/user-16.json +0 -2
  446. package/botrun-c/stress-test-results/20260121-162646/user-17-status.txt +0 -1
  447. package/botrun-c/stress-test-results/20260121-162646/user-17-timing.txt +0 -1
  448. package/botrun-c/stress-test-results/20260121-162646/user-17.json +0 -2
  449. package/botrun-c/stress-test-results/20260121-162646/user-2-status.txt +0 -1
  450. package/botrun-c/stress-test-results/20260121-162646/user-2-timing.txt +0 -1
  451. package/botrun-c/stress-test-results/20260121-162646/user-2.json +0 -2
  452. package/botrun-c/stress-test-results/20260121-162646/user-3-status.txt +0 -1
  453. package/botrun-c/stress-test-results/20260121-162646/user-3-timing.txt +0 -1
  454. package/botrun-c/stress-test-results/20260121-162646/user-3.json +0 -2
  455. package/botrun-c/stress-test-results/20260121-162646/user-4-status.txt +0 -1
  456. package/botrun-c/stress-test-results/20260121-162646/user-4-timing.txt +0 -1
  457. package/botrun-c/stress-test-results/20260121-162646/user-4.json +0 -2
  458. package/botrun-c/stress-test-results/20260121-162646/user-5-status.txt +0 -1
  459. package/botrun-c/stress-test-results/20260121-162646/user-5-timing.txt +0 -1
  460. package/botrun-c/stress-test-results/20260121-162646/user-5.json +0 -2
  461. package/botrun-c/stress-test-results/20260121-162646/user-6-status.txt +0 -1
  462. package/botrun-c/stress-test-results/20260121-162646/user-6-timing.txt +0 -1
  463. package/botrun-c/stress-test-results/20260121-162646/user-6.json +0 -2
  464. package/botrun-c/stress-test-results/20260121-162646/user-7-status.txt +0 -1
  465. package/botrun-c/stress-test-results/20260121-162646/user-7-timing.txt +0 -1
  466. package/botrun-c/stress-test-results/20260121-162646/user-7.json +0 -2
  467. package/botrun-c/stress-test-results/20260121-162646/user-8-status.txt +0 -1
  468. package/botrun-c/stress-test-results/20260121-162646/user-8-timing.txt +0 -1
  469. package/botrun-c/stress-test-results/20260121-162646/user-8.json +0 -2
  470. package/botrun-c/stress-test-results/20260121-162646/user-9-status.txt +0 -1
  471. package/botrun-c/stress-test-results/20260121-162646/user-9-timing.txt +0 -1
  472. package/botrun-c/stress-test-results/20260121-162646/user-9.json +0 -2
  473. package/botrun-c/stress-test-results/20260121-163148/REPORT.html +0 -344
  474. package/botrun-c/stress-test-results/20260121-163148/REPORT.md +0 -93
  475. package/botrun-c/stress-test-results/20260121-163148/REPORT.pdf +0 -0
  476. package/botrun-c/stress-test-results/20260121-163148/config.json +0 -7
  477. package/botrun-c/stress-test-results/20260121-163148/summary.json +0 -26
  478. package/botrun-c/stress-test-results/20260121-163148/user-1-status.txt +0 -1
  479. package/botrun-c/stress-test-results/20260121-163148/user-1-timing.txt +0 -1
  480. package/botrun-c/stress-test-results/20260121-163148/user-1.json +0 -206
  481. package/botrun-c/stress-test-results/20260121-163148/user-10-status.txt +0 -1
  482. package/botrun-c/stress-test-results/20260121-163148/user-10-timing.txt +0 -1
  483. package/botrun-c/stress-test-results/20260121-163148/user-10.json +0 -110
  484. package/botrun-c/stress-test-results/20260121-163148/user-11-status.txt +0 -1
  485. package/botrun-c/stress-test-results/20260121-163148/user-11-timing.txt +0 -1
  486. package/botrun-c/stress-test-results/20260121-163148/user-11.json +0 -104
  487. package/botrun-c/stress-test-results/20260121-163148/user-12-status.txt +0 -1
  488. package/botrun-c/stress-test-results/20260121-163148/user-12-timing.txt +0 -1
  489. package/botrun-c/stress-test-results/20260121-163148/user-12.json +0 -98
  490. package/botrun-c/stress-test-results/20260121-163148/user-13-status.txt +0 -1
  491. package/botrun-c/stress-test-results/20260121-163148/user-13-timing.txt +0 -1
  492. package/botrun-c/stress-test-results/20260121-163148/user-13.json +0 -68
  493. package/botrun-c/stress-test-results/20260121-163148/user-14-status.txt +0 -1
  494. package/botrun-c/stress-test-results/20260121-163148/user-14-timing.txt +0 -1
  495. package/botrun-c/stress-test-results/20260121-163148/user-14.json +0 -116
  496. package/botrun-c/stress-test-results/20260121-163148/user-15-status.txt +0 -1
  497. package/botrun-c/stress-test-results/20260121-163148/user-15-timing.txt +0 -1
  498. package/botrun-c/stress-test-results/20260121-163148/user-15.json +0 -131
  499. package/botrun-c/stress-test-results/20260121-163148/user-16-status.txt +0 -1
  500. package/botrun-c/stress-test-results/20260121-163148/user-16-timing.txt +0 -1
  501. package/botrun-c/stress-test-results/20260121-163148/user-16.json +0 -110
  502. package/botrun-c/stress-test-results/20260121-163148/user-17-status.txt +0 -1
  503. package/botrun-c/stress-test-results/20260121-163148/user-17-timing.txt +0 -1
  504. package/botrun-c/stress-test-results/20260121-163148/user-17.json +0 -116
  505. package/botrun-c/stress-test-results/20260121-163148/user-2-status.txt +0 -1
  506. package/botrun-c/stress-test-results/20260121-163148/user-2-timing.txt +0 -1
  507. package/botrun-c/stress-test-results/20260121-163148/user-2.json +0 -98
  508. package/botrun-c/stress-test-results/20260121-163148/user-3-status.txt +0 -1
  509. package/botrun-c/stress-test-results/20260121-163148/user-3-timing.txt +0 -1
  510. package/botrun-c/stress-test-results/20260121-163148/user-3.json +0 -62
  511. package/botrun-c/stress-test-results/20260121-163148/user-4-status.txt +0 -1
  512. package/botrun-c/stress-test-results/20260121-163148/user-4-timing.txt +0 -1
  513. package/botrun-c/stress-test-results/20260121-163148/user-4.json +0 -113
  514. package/botrun-c/stress-test-results/20260121-163148/user-5-status.txt +0 -1
  515. package/botrun-c/stress-test-results/20260121-163148/user-5-timing.txt +0 -1
  516. package/botrun-c/stress-test-results/20260121-163148/user-5.json +0 -83
  517. package/botrun-c/stress-test-results/20260121-163148/user-6-status.txt +0 -1
  518. package/botrun-c/stress-test-results/20260121-163148/user-6-timing.txt +0 -1
  519. package/botrun-c/stress-test-results/20260121-163148/user-6.json +0 -125
  520. package/botrun-c/stress-test-results/20260121-163148/user-7-status.txt +0 -1
  521. package/botrun-c/stress-test-results/20260121-163148/user-7-timing.txt +0 -1
  522. package/botrun-c/stress-test-results/20260121-163148/user-7.json +0 -62
  523. package/botrun-c/stress-test-results/20260121-163148/user-8-status.txt +0 -1
  524. package/botrun-c/stress-test-results/20260121-163148/user-8-timing.txt +0 -1
  525. package/botrun-c/stress-test-results/20260121-163148/user-8.json +0 -41
  526. package/botrun-c/stress-test-results/20260121-163148/user-9-status.txt +0 -1
  527. package/botrun-c/stress-test-results/20260121-163148/user-9-timing.txt +0 -1
  528. package/botrun-c/stress-test-results/20260121-163148/user-9.json +0 -53
  529. package/botrun-c/test-merge.md +0 -1
  530. package/botrun-c/version.txt +0 -1
  531. package/botrun-c/web/.version +0 -1
  532. package/botrun-c/web/ALLOW-PUBLIC-ACCESS.md +0 -57
  533. package/botrun-c/web/FINAL-SETUP-STEPS.md +0 -71
  534. package/botrun-c/web/FIREBASE-MANUAL-STEPS.md +0 -41
  535. package/botrun-c/web/QUICK-SETUP-HELPER.md +0 -79
  536. package/botrun-c/web/README.md +0 -162
  537. package/botrun-c/web/__tests__/image-extractor.test.ts +0 -147
  538. package/botrun-c/web/__tests__/useGitHub.test.ts +0 -245
  539. package/botrun-c/web/app/favicon.ico +0 -0
  540. package/botrun-c/web/app/globals.css +0 -215
  541. package/botrun-c/web/app/image-preview/page.tsx +0 -213
  542. package/botrun-c/web/app/layout.tsx +0 -46
  543. package/botrun-c/web/app/page.tsx +0 -45
  544. package/botrun-c/web/components/CapacitorProvider.tsx +0 -43
  545. package/botrun-c/web/components/ChatPage.tsx +0 -1736
  546. package/botrun-c/web/components/ConversationList.tsx +0 -237
  547. package/botrun-c/web/components/ConversationListItem.tsx +0 -121
  548. package/botrun-c/web/components/LoginPage.tsx +0 -212
  549. package/botrun-c/web/components/Providers.tsx +0 -12
  550. package/botrun-c/web/components/StatusBarProvider.tsx +0 -16
  551. package/botrun-c/web/components/attachment-preview.tsx +0 -193
  552. package/botrun-c/web/components/botrun-incubator/BotrunIncubator.tsx +0 -266
  553. package/botrun-c/web/components/botrun-incubator/index.ts +0 -1
  554. package/botrun-c/web/components/chat-input.tsx +0 -1251
  555. package/botrun-c/web/components/chat-message.tsx +0 -598
  556. package/botrun-c/web/components/drop-zone.tsx +0 -143
  557. package/botrun-c/web/components/gdrive/gdrive-add-dialog.tsx +0 -254
  558. package/botrun-c/web/components/gdrive/gdrive-drawer.tsx +0 -236
  559. package/botrun-c/web/components/gdrive/gdrive-selector.tsx +0 -226
  560. package/botrun-c/web/components/gdrive/index.ts +0 -7
  561. package/botrun-c/web/components/generated-image-card.tsx +0 -363
  562. package/botrun-c/web/components/github/GitHubConnect.tsx +0 -366
  563. package/botrun-c/web/components/github/index.ts +0 -2
  564. package/botrun-c/web/components/import-skill-dialog.tsx +0 -208
  565. package/botrun-c/web/components/scroll-to-bottom-button.tsx +0 -90
  566. package/botrun-c/web/components/share-skill-dialog.tsx +0 -175
  567. package/botrun-c/web/components/skills-editor.tsx +0 -443
  568. package/botrun-c/web/components/skills-manager-drawer.tsx +0 -586
  569. package/botrun-c/web/components/smart-button-group.tsx +0 -132
  570. package/botrun-c/web/config/smart-buttons.ts +0 -295
  571. package/botrun-c/web/config/welcome-messages.ts +0 -29
  572. package/botrun-c/web/contexts/AuthContext.tsx +0 -220
  573. package/botrun-c/web/hooks/use-toast.ts +0 -187
  574. package/botrun-c/web/hooks/useAppStoreUpdate.ts +0 -356
  575. package/botrun-c/web/hooks/useAppVersion.ts +0 -113
  576. package/botrun-c/web/hooks/useAttachments.ts +0 -269
  577. package/botrun-c/web/hooks/useAuthToken.ts +0 -59
  578. package/botrun-c/web/hooks/useAutoWelcome.ts +0 -89
  579. package/botrun-c/web/hooks/useCapacitorPlatform.ts +0 -113
  580. package/botrun-c/web/hooks/useCapawesomeLiveUpdate.ts +0 -149
  581. package/botrun-c/web/hooks/useClaudeModel.ts +0 -118
  582. package/botrun-c/web/hooks/useConversation.ts +0 -115
  583. package/botrun-c/web/hooks/useConversations.ts +0 -235
  584. package/botrun-c/web/hooks/useGdriveFolders.ts +0 -199
  585. package/botrun-c/web/hooks/useGdriveSync.ts +0 -107
  586. package/botrun-c/web/hooks/useGitHub.ts +0 -409
  587. package/botrun-c/web/hooks/useScrollToBottom.ts +0 -150
  588. package/botrun-c/web/hooks/useStatusBar.ts +0 -42
  589. package/botrun-c/web/hooks/useUserPlan.ts +0 -153
  590. package/botrun-c/web/lib/api-config.ts +0 -162
  591. package/botrun-c/web/lib/api-url.ts +0 -62
  592. package/botrun-c/web/lib/api.ts +0 -105
  593. package/botrun-c/web/lib/attachment-utils.ts +0 -168
  594. package/botrun-c/web/lib/build-version.ts +0 -11
  595. package/botrun-c/web/lib/clipboard-utils.ts +0 -199
  596. package/botrun-c/web/lib/constants.ts +0 -62
  597. package/botrun-c/web/lib/conversation-storage.ts +0 -324
  598. package/botrun-c/web/lib/firebase-capacitor.ts +0 -135
  599. package/botrun-c/web/lib/firebase.ts +0 -137
  600. package/botrun-c/web/lib/firestore-auth.ts +0 -61
  601. package/botrun-c/web/lib/firestore-auth.ts.migration-bak +0 -319
  602. package/botrun-c/web/lib/image-extractor.ts +0 -156
  603. package/botrun-c/web/lib/path-utils.ts +0 -48
  604. package/botrun-c/web/lib/rehype-del-to-mark.ts +0 -19
  605. package/botrun-c/web/lib/upload-service.ts +0 -326
  606. package/botrun-c/web/lib/utils.ts +0 -6
  607. package/botrun-c/web/next.config.js +0 -49
  608. package/botrun-c/web/package-lock.json +0 -6711
  609. package/botrun-c/web/package.json +0 -63
  610. package/botrun-c/web/postcss.config.js +0 -6
  611. package/botrun-c/web/public/apple_icon.png +0 -0
  612. package/botrun-c/web/public/google_icon.png +0 -0
  613. package/botrun-c/web/public/logo-48-small.png +0 -0
  614. package/botrun-c/web/public/logo-48.png +0 -0
  615. package/botrun-c/web/scripts/generate-version.js +0 -36
  616. package/botrun-c/web/scripts/update-build-version.js +0 -41
  617. package/botrun-c/web/tailwind.config.ts +0 -80
  618. package/botrun-c/web/test-welcome-message.mjs +0 -115
  619. package/botrun-c/web/tsconfig.json +0 -42
  620. package/botrun-c/web/types/agent.ts +0 -6
  621. package/botrun-c/web/types/attachment.ts +0 -39
  622. package/botrun-c/web/types/conversation.ts +0 -68
  623. package/botrun-c/web/types/flutter.d.ts +0 -6
  624. package/botrun-c/web/types/project.ts +0 -41
  625. package/botrun-c/web/types/skills.ts +0 -13
  626. package/botrun-c/web//350/250/272/346/226/267-Skills-/345/211/215/347/253/257/351/241/257/347/244/272/345/225/217/351/241/214.md +0 -83
  627. package/lib/writing/index.mjs +0 -5
  628. /package/{lib/core → modules/_core}/adapters/base.mjs +0 -0
  629. /package/{lib/core → modules/_core}/adapters/claude.mjs +0 -0
  630. /package/{lib/core → modules/_core}/adapters/gemini-api.mjs +0 -0
  631. /package/{lib/core → modules/_core}/adapters/gemini-shared.mjs +0 -0
  632. /package/{lib/core → modules/_core}/adapters/gemini-vertex.mjs +0 -0
  633. /package/{lib/core → modules/_core}/adapters/local.mjs +0 -0
  634. /package/{lib/core → modules/_core}/adapters/nchc.mjs +0 -0
  635. /package/{lib/core → modules/_core}/adapters/openai-shared.mjs +0 -0
  636. /package/{lib/core → modules/_core}/adapters/openrouter.mjs +0 -0
  637. /package/{lib/core → modules/_core}/ai-cache.mjs +0 -0
  638. /package/{lib/core → modules/_core}/ai-router.mjs +0 -0
  639. /package/{lib/core → modules/_core}/cli-utils.mjs +0 -0
  640. /package/{lib/core → modules/_core}/dag.mjs +0 -0
  641. /package/{lib/core → modules/_core}/db.mjs +0 -0
  642. /package/{lib/core → modules/_core}/env.mjs +0 -0
  643. /package/{lib/flows → modules/_core}/hatch-portal.mjs +0 -0
  644. /package/{lib/core → modules/_core}/llm.mjs +0 -0
  645. /package/{lib/flows → modules/_core}/opencode-agent.mjs +0 -0
  646. /package/{lib/core → modules/_core}/paths.mjs +0 -0
  647. /package/{lib/core → modules/_core}/proxy.mjs +0 -0
  648. /package/{lib/flows → modules/_core}/review-doc.mjs +0 -0
  649. /package/{lib → modules/_core}/tools/fs-tools.mjs +0 -0
  650. /package/{lib → modules/_core}/tools/index.mjs +0 -0
  651. /package/{lib/core → modules/_core}/watermelon.mjs +0 -0
  652. /package/{lib/ocr/index.mjs → modules/ocr/ocr-lib.mjs} +0 -0
  653. /package/{lib → modules}/portal/hatch.mjs +0 -0
  654. /package/{lib/portal/index.mjs → modules/portal/portal-lib.mjs} +0 -0
  655. /package/{lib → modules}/search/crawler.mjs +0 -0
  656. /package/{lib/prompt → modules/skill}/prompts/zero-framework/coding.md +0 -0
  657. /package/{lib/prompt → modules/skill}/prompts/zero-framework/fullstack.md +0 -0
  658. /package/{lib/prompt → modules/skill}/prompts/zero-framework/search.md +0 -0
  659. /package/{lib/prompt → modules/skill}/prompts/zero-framework/segment.md +0 -0
  660. /package/{lib/prompt → modules/skill}/prompts/zero-framework/slice.md +0 -0
  661. /package/{lib → modules}/writing/generators/nstc-generators.mjs +0 -0
  662. /package/{lib → modules}/writing/generators/nstc-top5.mjs +0 -0
  663. /package/{lib → modules}/writing/layouts/nstc-layout.mjs +0 -0
  664. /package/{lib → modules}/writing/renderer.mjs +0 -0
@@ -1,312 +0,0 @@
1
- # Rate Limit 詳細管理功能
2
-
3
- 完整的 Rate Limit 管理工具,支援查詢、設定、匯出等功能。
4
-
5
- ## 🎯 核心功能
6
-
7
- ### 1. 詳細查詢(單一使用者)
8
-
9
- ```bash
10
- # 查詢使用者的完整 Rate Limit 資訊
11
- bash admin/users.sh rate-limit query <email> --detailed
12
- ```
13
-
14
- **顯示內容:**
15
- - 📋 方案類型(plan-free, plan-max-1, plan-max-2)
16
- - 預設限制(RPM, TPM, RPD)
17
- - ⚙️ 自訂限制(Custom Limits)- 如果有覆寫
18
- - 📊 實際生效限制(有 custom 用 custom,沒有用 plan 預設)
19
- - 📈 當前使用狀況(包含百分比)
20
-
21
- **範例:**
22
- ```bash
23
- bash admin/users.sh rate-limit query bohachu@gmail.com --detailed
24
- ```
25
-
26
- **輸出範例:**
27
- ```
28
- ==================================================
29
- 👤 使用者: bohachu@gmail.com
30
- ==================================================
31
-
32
- 📋 方案類型: plan-free
33
- 預設限制: RPM=6, TPM=200000, RPD=32
34
-
35
- ✅ 無自訂限制(使用方案預設值)
36
-
37
- 📊 實際生效限制:
38
- RPM: 6
39
- TPM: 200000
40
- RPD: 32
41
-
42
- 📈 當前使用狀況:
43
- RPM: 0 / 6 (0.0%)
44
- TPM: 0 / 200000 (0.0%)
45
- RPD: 2 / 32 (6.3%)
46
-
47
- ==================================================
48
- ```
49
-
50
- ---
51
-
52
- ### 2. 詳細列表(所有使用者)
53
-
54
- ```bash
55
- # 列出所有使用者的詳細 Rate Limit 資訊
56
- bash admin/users.sh rate-limit list --detailed
57
-
58
- # 同時匯出 CSV
59
- bash admin/users.sh rate-limit list --detailed --export csv
60
- ```
61
-
62
- ---
63
-
64
- ### 3. 快速匯出 CSV
65
-
66
- ```bash
67
- # 匯出所有使用者的完整 Rate Limit 資訊為 CSV
68
- bash admin/users.sh rate-limit export
69
- ```
70
-
71
- **CSV 包含欄位:**
72
- - Email, UID, Plan
73
- - Plan_Default_RPM, Plan_Default_TPM, Plan_Default_RPD
74
- - Has_Custom_Limits
75
- - Custom_RPM, Custom_TPM, Custom_RPD
76
- - Effective_RPM, Effective_TPM, Effective_RPD
77
- - Current_RPM, Current_TPM, Current_RPD
78
- - RPM_Usage, TPM_Usage, RPD_Usage (百分比)
79
-
80
- ---
81
-
82
- ### 4. 設定自訂限制
83
-
84
- ```bash
85
- # 設定使用者的自訂 Rate Limit
86
- bash admin/users.sh rate-limit set-custom <email> --rpd <value> --rpm <value> --tpm <value>
87
- ```
88
-
89
- **範例:**
90
- ```bash
91
- # 設定 RPD 為 1000
92
- bash admin/users.sh rate-limit set-custom bohachu@gmail.com --rpd 1000
93
-
94
- # 同時設定多個限制
95
- bash admin/users.sh rate-limit set-custom user@example.com --rpd 500 --rpm 10 --tpm 300000
96
- ```
97
-
98
- **說明:**
99
- - 自訂限制會覆寫使用者的方案預設值
100
- - 只設定你指定的欄位(例如只設定 RPD,RPM/TPM 仍使用 plan 預設)
101
- - 自訂限制儲存在 Firestore `users/{userId}.customLimits`
102
-
103
- ---
104
-
105
- ### 5. 移除自訂限制
106
-
107
- ```bash
108
- # 移除使用者的自訂限制,恢復為方案預設值
109
- bash admin/users.sh rate-limit remove-custom <email>
110
- ```
111
-
112
- **範例:**
113
- ```bash
114
- bash admin/users.sh rate-limit remove-custom bohachu@gmail.com
115
- ```
116
-
117
- **說明:**
118
- - 完全刪除 `customLimits` 欄位
119
- - 使用者將恢復使用 plan 的預設限制
120
-
121
- ---
122
-
123
- ### 6. 設定計數器值(危險操作)
124
-
125
- ```bash
126
- # 直接設定使用者的計數器值(僅供測試)
127
- bash admin/users.sh rate-limit set-counter <email> --rpd <value> --rpm <value> --tpm <value>
128
- ```
129
-
130
- **範例:**
131
- ```bash
132
- # 設定 RPD 計數器為 10(模擬已使用 10 次)
133
- bash admin/users.sh rate-limit set-counter user@example.com --rpd 10
134
- ```
135
-
136
- **⚠️ 警告:**
137
- - 這是危險操作,直接修改計數器值
138
- - 僅供測試使用
139
- - 生產環境請謹慎使用
140
-
141
- ---
142
-
143
- ### 7. 重置計數器(清除使用量)
144
-
145
- ```bash
146
- # 清除使用者的所有計數器
147
- bash admin/users.sh rate-limit reset <email>
148
- ```
149
-
150
- **說明:**
151
- - 刪除該使用者的所有 RPM、TPM、RPD 計數器
152
- - 使用者可以重新開始使用服務
153
-
154
- ---
155
-
156
- ## 📊 Plan 預設限制
157
-
158
- ### plan-free
159
- - RPM: 6 次/分鐘
160
- - TPM: 200,000 tokens/分鐘
161
- - RPD: 32 次/天
162
-
163
- ### plan-max-1
164
- - RPM: 6 次/分鐘
165
- - TPM: 600,000 tokens/分鐘
166
- - RPD: 111 次/天
167
-
168
- ### plan-max-2
169
- - RPM: 6 次/分鐘
170
- - TPM: 600,000 tokens/分鐘
171
- - RPD: 450 次/天
172
-
173
- ---
174
-
175
- ## 🔍 常見使用場景
176
-
177
- ### 場景 1:查看使用者完整狀態
178
- ```bash
179
- # 查詢使用者的詳細資訊,了解是否有 custom limits
180
- bash admin/users.sh rate-limit query bohachu@gmail.com --detailed
181
- ```
182
-
183
- ### 場景 2:批次檢查所有使用者
184
- ```bash
185
- # 匯出 CSV 並在試算表中分析
186
- bash admin/users.sh rate-limit export
187
- ```
188
-
189
- ### 場景 3:特定使用者需要更高限制
190
- ```bash
191
- # 設定自訂 RPD 為 1000
192
- bash admin/users.sh rate-limit set-custom user@example.com --rpd 1000
193
-
194
- # 驗證設定
195
- bash admin/users.sh rate-limit query user@example.com --detailed
196
- ```
197
-
198
- ### 場景 4:恢復為預設限制
199
- ```bash
200
- # 移除自訂限制
201
- bash admin/users.sh rate-limit remove-custom user@example.com
202
-
203
- # 驗證已恢復
204
- bash admin/users.sh rate-limit query user@example.com --detailed
205
- ```
206
-
207
- ### 場景 5:重置使用量
208
- ```bash
209
- # 清除計數器
210
- bash admin/users.sh rate-limit reset user@example.com
211
- ```
212
-
213
- ---
214
-
215
- ## 🎓 進階功能
216
-
217
- ### 1. 混合使用 plan 和 custom limits
218
-
219
- 使用者可以只覆寫部分限制:
220
-
221
- ```bash
222
- # 只覆寫 RPD,RPM/TPM 仍使用 plan 預設
223
- bash admin/users.sh rate-limit set-custom user@example.com --rpd 500
224
-
225
- # 查詢結果會顯示:
226
- # - Custom_RPD: 500 (覆寫預設)
227
- # - RPM: 6 (使用 plan 預設)
228
- # - TPM: 200000 (使用 plan 預設)
229
- ```
230
-
231
- ### 2. CSV 分析技巧
232
-
233
- 匯出的 CSV 可以在試算表中進行:
234
- - 篩選有 `Has_Custom_Limits=YES` 的使用者
235
- - 計算平均使用率
236
- - 找出接近限制的使用者(RPD > 80%)
237
- - 對比 plan 預設值和實際生效值
238
-
239
- ---
240
-
241
- ## 📂 檔案結構
242
-
243
- ```
244
- admin/
245
- ├── users.sh # CLI 入口腳本
246
- ├── users-cli.ts # 主程式
247
- ├── lib/
248
- │ ├── rate-limit-detailed.ts # 詳細查詢模組(新增)
249
- │ ├── firebase.ts # Firebase 初始化
250
- │ ├── user-resolver.ts # Email ↔ UID 轉換
251
- │ └── firestore-safe.ts # 安全的 Firestore 操作
252
- └── RATE_LIMIT_MANAGEMENT.md # 本文件
253
- ```
254
-
255
- ---
256
-
257
- ## ⚙️ 技術細節
258
-
259
- ### 資料來源
260
-
261
- 1. **Plan 資訊**:`users/{userId}.plan` (預設 plan-free)
262
- 2. **Custom Limits**:`users/{userId}.customLimits`
263
- 3. **計數器**:`rate_limit_counters/{type}:{userId}:{time}`
264
-
265
- ### 計數器 Key 格式
266
-
267
- - **RPM/TPM**:`rpm:userId:29390840`(分鐘編號)
268
- - **RPD**:`rpd:userId:2025-11-18`(日期字串)
269
-
270
- ### 限制生效邏輯
271
-
272
- ```typescript
273
- effectiveLimit = customLimits?.rpd ?? planDefaults.rpd
274
- ```
275
-
276
- 有 custom 就用 custom,沒有就用 plan 預設。
277
-
278
- ---
279
-
280
- ## 🆘 疑難排解
281
-
282
- ### Q: 為什麼 custom limits 沒有立即生效?
283
-
284
- A: Custom limits 在使用者**下次 API 請求**時才會載入。如果需要立即生效,可以:
285
- 1. 請使用者重新發送請求
286
- 2. 或重啟 API 服務(不建議)
287
-
288
- ### Q: 如何確認 custom limits 已移除?
289
-
290
- A: 使用詳細查詢:
291
- ```bash
292
- bash admin/users.sh rate-limit query <email> --detailed
293
- ```
294
- 應該看到「✅ 無自訂限制(使用方案預設值)」
295
-
296
- ### Q: CSV 檔案在哪裡?
297
-
298
- A: 匯出的 CSV 會儲存在執行目錄(通常是 `api/`),檔名格式:
299
- ```
300
- rate-limit-export-{timestamp}.csv
301
- ```
302
-
303
- ---
304
-
305
- ## 📝 更新日誌
306
-
307
- ### 2025-11-18
308
- - ✅ 新增詳細查詢功能(`--detailed`)
309
- - ✅ 新增 CSV 匯出功能
310
- - ✅ 新增 `remove-custom` 命令
311
- - ✅ 新增 `set-counter` 命令(危險操作)
312
- - ✅ 整合所有 Rate Limit 管理功能到統一 CLI
@@ -1,338 +0,0 @@
1
- # 波特人 Users CLI - 統一使用者管理工具
2
-
3
- 統一的命令列工具,用於管理 Rate Limit、訂閱、使用者資訊等。
4
-
5
- ## 🚀 快速開始
6
-
7
- ```bash
8
- # 查看所有可用命令
9
- ./admin/users.sh --help
10
-
11
- # 查詢單一使用者完整資訊
12
- ./admin/users.sh query aidoer@cameo.tw
13
-
14
- # 列出所有 Firebase Auth 使用者
15
- ./admin/users.sh list --auth
16
-
17
- # 重置使用者 Rate Limit
18
- ./admin/users.sh rate-limit reset aidoer@cameo.tw
19
-
20
- # 重置使用者試用期
21
- ./admin/users.sh subscription reset-trial aidoer@cameo.tw
22
- ```
23
-
24
- > **注意**:`users.sh` 是包裝腳本,會自動設定環境變數並呼叫 `users.ts`
25
-
26
- ## 📋 完整命令列表
27
-
28
- ### 主命令
29
-
30
- ```bash
31
- ./admin/users.sh [command] [options]
32
- ```
33
-
34
- ### 1. list - 列出使用者
35
-
36
- ```bash
37
- # 列出所有 Firebase Auth 使用者
38
- ./admin/users.sh list --auth
39
-
40
- # 列出 Firestore users collection 使用者(含 plan 資訊)
41
- ./admin/users.sh list --firestore
42
-
43
- # 列出有 rate limit 記錄的使用者
44
- ./admin/users.sh list --rate-limit
45
-
46
- # 列出有訂閱記錄的使用者
47
- ./admin/users.sh list --subscription
48
-
49
- # 匯出為 CSV
50
- ./admin/users.sh list --auth --export csv
51
- ```
52
-
53
- ### 2. query - 查詢單一使用者
54
-
55
- ```bash
56
- # 查詢使用者完整資訊(訂閱 + Rate Limit)
57
- ./admin/users.sh query aidoer@cameo.tw
58
- ./admin/users.sh query t1ZdkoObjMf8j7jwiUUFC1kOvTt1
59
-
60
- # 以 JSON 格式輸出
61
- ./admin/users.sh query aidoer@cameo.tw --json
62
- ```
63
-
64
- ### 3. rate-limit - Rate Limit 管理
65
-
66
- #### 3.1 列出所有 Rate Limit 狀態
67
-
68
- ```bash
69
- # 列出所有使用者的 Rate Limit 狀態(含視覺化進度條)
70
- ./admin/users.sh rate-limit list
71
-
72
- # 匯出 CSV 並自動開啟
73
- ./admin/users.sh rate-limit list --export csv
74
- ```
75
-
76
- #### 3.2 查詢特定使用者 Rate Limit
77
-
78
- ```bash
79
- ./admin/users.sh rate-limit query aidoer@cameo.tw
80
- ```
81
-
82
- #### 3.3 重置特定使用者 Rate Limit
83
-
84
- ```bash
85
- # 清除使用者的所有 Rate Limit 計數器(RPM, TPM, RPD)
86
- ./admin/users.sh rate-limit reset aidoer@cameo.tw
87
- ./admin/users.sh rate-limit reset t1ZdkoObjMf8j7jwiUUFC1kOvTt1
88
- ```
89
-
90
- ### 4. subscription - 訂閱管理
91
-
92
- #### 4.1 列出所有訂閱狀態
93
-
94
- ```bash
95
- # 列出所有使用者的訂閱狀態(含試用期剩餘天數)
96
- ./admin/users.sh subscription list
97
-
98
- # 匯出 CSV 並自動開啟
99
- ./admin/users.sh subscription list --export csv
100
- ```
101
-
102
- #### 4.2 查詢特定使用者訂閱
103
-
104
- ```bash
105
- ./admin/users.sh subscription query aidoer@cameo.tw
106
- ```
107
-
108
- #### 4.3 設定使用者試用期結束日期
109
-
110
- ```bash
111
- # 設定特定日期(用於測試過期功能)
112
- ./admin/users.sh subscription set-expiry aidoer@cameo.tw 2024-01-15
113
-
114
- # 設定為昨天(立即過期)
115
- ./admin/users.sh subscription set-expiry aidoer@cameo.tw yesterday
116
-
117
- # 設定為今天
118
- ./admin/users.sh subscription set-expiry aidoer@cameo.tw today
119
-
120
- # 設定為明天
121
- ./admin/users.sh subscription set-expiry aidoer@cameo.tw tomorrow
122
- ```
123
-
124
- #### 4.4 重置使用者試用期
125
-
126
- ```bash
127
- # 刪除訂閱記錄,使用者下次使用時將自動獲得新的 14 天試用期
128
- ./admin/users.sh subscription reset-trial aidoer@cameo.tw
129
- ```
130
-
131
- ### 5. plan - 方案管理
132
-
133
- #### 5.1 設定使用者方案
134
-
135
- ```bash
136
- # 設定使用者方案(Lite | Max-1 | Max-2)
137
- ./admin/users.sh plan set aidoer@cameo.tw Max-1
138
- ./admin/users.sh plan set user@example.com Max-2
139
-
140
- # 支援使用 UID
141
- ./admin/users.sh plan set t1ZdkoObjMf8j7jwiUUFC1kOvTt1 Max-1
142
- ```
143
-
144
- **方案限制對照表:**
145
-
146
- | 方案 | RPM | TPM | RPD |
147
- |------|-----|-----|-----|
148
- | Lite | 6 | 200K | 32 |
149
- | Max-1 | 6 | 600K | 111 |
150
- | Max-2 | 6 | 600K | 450 |
151
-
152
- **注意事項:**
153
- - 會同時更新 `user_subscriptions/{userId}` 和 `users/{userId}` 的 plan 欄位
154
- - 如果使用者沒有訂閱記錄,會自動建立 `active` 狀態的訂閱
155
- - 新的 Rate Limit 在下次 API 請求時生效
156
-
157
- #### 5.2 查詢使用者方案
158
-
159
- ```bash
160
- # 查詢使用者目前方案及訂閱詳情
161
- ./admin/users.sh plan get aidoer@cameo.tw
162
- ./admin/users.sh plan get t1ZdkoObjMf8j7jwiUUFC1kOvTt1
163
- ```
164
-
165
- ### 6. migrate - 資料遷移
166
-
167
- ```bash
168
- # 遷移 Lite 方案的 RPD 限制
169
- # (當修改 Lite 方案的 RPD 限制時,使用此工具更新所有現有使用者的計數器)
170
- ./admin/users.sh migrate plan-free-rpd
171
- ```
172
-
173
- ### 7. seed - 建立測試資料
174
-
175
- ```bash
176
- # 建立 Rate Limit 測試資料
177
- ./admin/users.sh seed --rate-limit
178
-
179
- # 建立訂閱測試資料
180
- ./admin/users.sh seed --subscription
181
-
182
- # 同時建立兩種測試資料
183
- ./admin/users.sh seed --rate-limit --subscription
184
- ```
185
-
186
- ## 🎯 常見使用場景
187
-
188
- ### 場景 1: 使用者反應被限制,需要查詢狀態
189
-
190
- ```bash
191
- # 1. 查詢使用者完整資訊
192
- ./admin/users.sh query user@example.com
193
-
194
- # 2. 查看詳細 Rate Limit 狀態
195
- ./admin/users.sh rate-limit query user@example.com
196
-
197
- # 3. 如需重置 Rate Limit
198
- ./admin/users.sh rate-limit reset user@example.com
199
- ```
200
-
201
- ### 場景 2: 使用者試用期過期,需要重新試用
202
-
203
- ```bash
204
- # 1. 查詢目前訂閱狀態
205
- ./admin/users.sh subscription query user@example.com
206
-
207
- # 2. 重置試用期
208
- ./admin/users.sh subscription reset-trial user@example.com
209
- ```
210
-
211
- ### 場景 3: 批次檢查所有使用者狀態
212
-
213
- ```bash
214
- # 1. 列出所有 Rate Limit 狀態並匯出 CSV
215
- ./admin/users.sh rate-limit list --export csv
216
-
217
- # 2. 列出所有訂閱狀態並匯出 CSV
218
- ./admin/users.sh subscription list --export csv
219
-
220
- # 3. 在試算表中分析和篩選
221
- ```
222
-
223
- ### 場景 4: 升級使用者方案
224
-
225
- ```bash
226
- # 1. 查詢使用者目前方案
227
- ./admin/users.sh plan get user@example.com
228
-
229
- # 2. 升級到 Max-1 或 Max-2
230
- ./admin/users.sh plan set user@example.com Max-1
231
-
232
- # 3. 驗證方案已更新
233
- ./admin/users.sh query user@example.com
234
- ```
235
-
236
- ### 場景 5: 修改 Rate Limit 方案限制後
237
-
238
- ```bash
239
- # 執行資料遷移,更新所有現有使用者的計數器(Lite 方案)
240
- ./admin/users.sh migrate plan-free-rpd
241
- ```
242
-
243
- ## 🔧 技術細節
244
-
245
- ### 檔案結構
246
-
247
- ```
248
- admin/
249
- ├── users.sh # Shell wrapper 腳本(主入口)
250
- ├── users.ts # TypeScript CLI 主程式
251
- ├── lib/ # 共用模組
252
- │ ├── firebase.ts # Firebase Admin 初始化
253
- │ ├── firestore-safe.ts # 安全的 Firestore 操作(避開 google-gax 問題)
254
- │ ├── user-resolver.ts # Email ↔ UID 轉換
255
- │ ├── formatters.ts # 輸出格式化(表格、CSV、JSON)
256
- │ └── types.ts # 共用型別定義
257
- └── README.md # 本文件
258
- ```
259
-
260
- ### google-gax 問題處理
261
-
262
- 本工具使用 REST API 作為 fallback 來刪除 Firestore 文件,避開了 `google-gax` 套件的 `ERR_PACKAGE_PATH_NOT_EXPORTED` 錯誤。
263
-
264
- 當執行 `rate-limit reset` 時,會自動使用安全的 REST API 方式刪除計數器。
265
-
266
- ### 環境需求
267
-
268
- 1. **Google Cloud 認證**
269
- - 需要 `keys/compute-sa-key.json` 或 `keys/firebase-admin-key.json`
270
- - 或設定 `GOOGLE_APPLICATION_CREDENTIALS` 環境變數
271
-
272
- 2. **必要套件**
273
- - `tsx` - TypeScript 執行器(已安裝)
274
- - `commander` - CLI 框架(已安裝)
275
- - `firebase-admin` - Firebase SDK(已安裝)
276
-
277
- 3. **GCP CLI**
278
- - 部分功能需要 `gcloud` CLI(用於 REST API 認證)
279
-
280
- ## ⚠️ 注意事項
281
-
282
- 1. **生產環境操作**
283
- - 所有工具都會直接操作生產環境的 Firestore
284
- - 重置操作無法復原,請謹慎使用
285
-
286
- 2. **權限要求**
287
- - Service Account 需要有 Firestore 讀寫權限
288
- - 需要 Firebase Auth 讀取權限
289
-
290
- 3. **自動重建**
291
- - 重置試用期後,使用者下次使用時會自動建立新的 14 天試用訂閱
292
- - Rate Limit 重置後,使用者立即可以重新開始使用服務
293
-
294
- ## 🆘 常見問題
295
-
296
- ### Q1: 執行時出現「找不到 firebase-admin」
297
-
298
- **解決方式:**
299
- 使用 `./admin/users.sh` wrapper 腳本,不要直接執行 `users.ts`
300
-
301
- ### Q2: 出現「找不到 GCP 認證金鑰」
302
-
303
- **解決方式:**
304
- 確認 `keys/compute-sa-key.json` 存在,或設定環境變數:
305
- ```bash
306
- export GOOGLE_APPLICATION_CREDENTIALS="keys/compute-sa-key.json"
307
- ```
308
-
309
- ### Q3: rate-limit reset 失敗
310
-
311
- **解決方式:**
312
- 1. 確認已安裝並登入 `gcloud` CLI
313
- 2. 確認 GCP 專案設定正確:`gcloud config get-value project`
314
- 3. 如果專案不對,切換:`gcloud config set project botrun-c`
315
-
316
- ## 📚 延伸閱讀
317
-
318
- - [Rate Limit 系統架構](../api/src/rate-limit/README.md)
319
- - [訂閱系統架構](../api/src/subscription/README.md)
320
- - [工具-Reset-Rate-Limit-腳本](../docs/工具-Reset-Rate-Limit-腳本.txt)
321
- - [工具-Reset-Trial-Subscription-腳本](../docs/工具-Reset-Trial-Subscription-腳本.txt)
322
-
323
- ## 🎉 從舊工具遷移
324
-
325
- ### 舊的 Shell 腳本對照表
326
-
327
- | 舊腳本 | 新命令 |
328
- |--------|--------|
329
- | `admin/rate-limit.sh` | `./admin/users.sh rate-limit list` |
330
- | `admin/reset-rate.sh <user>` | `./admin/users.sh rate-limit reset <user>` |
331
- | `admin/trial.sh` | `./admin/users.sh subscription list` |
332
- | `admin/reset-trial.sh <user>` | `./admin/users.sh subscription reset-trial <user>` |
333
- | `admin/migrate-plan-free.sh` | `./admin/users.sh migrate plan-free-rpd` |
334
- | `admin/seed-trial-data.sh` | `./admin/users.sh seed --subscription` |
335
- | (無舊工具) | `./admin/users.sh plan set <user> <plan>` ✨ 新功能 |
336
- | (無舊工具) | `./admin/users.sh plan get <user>` ✨ 新功能 |
337
-
338
- 所有舊的 `.sh` 腳本已移至 `bak/admin/` 目錄備份。
@@ -1,22 +0,0 @@
1
- # Botrun-C 成本分析報告
2
- # 生成時間: 2025-12-08T23:07:24.015Z
3
- # 分析期間: 2025/12/2 - 2025/12/9 (7 天)
4
- # 總使用者數: 10
5
- # 總 Token 數: 0
6
- # 總成本: $1196.00
7
-
8
- # 按方案分佈
9
- # Max-2: 4 位使用者, $1196.00 (100.0%)
10
- # Lite: 6 位使用者, $0.00 (0.0%)
11
-
12
- ✉️ Email,User ID,Plan,Total Requests,Total Tokens,Avg Daily Requests,Avg Daily Tokens,Monthly Plan Cost,Estimated Monthly Cost,Estimated Annual Cost,Cost per Token,Cost per Request,Cost per Day,TPM Utilization,RPM Utilization,RPD Utilization,Rank,Percentile Rank
13
- baby.ff.74@gmail.com,074xGzIKWyfKTBt1NMIj9lxi5mO2,Max-2,0,0,0.00,0.00,$299.00,$299.00,$3588.00,$0.000000,$0.000000,$9.97,0.0%,0.0%,0.0%,1,10.0%
14
- cyh6800@gmail.com,0l3CZEWySQRTre9nK5NbW2tbZuK2,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,5,50.0%
15
- damonwheeler.49353@gmail.com,15diNdor1XPCqJ2P6wqGVNXY2wj2,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,6,60.0%
16
- sebastian.hsu@cameo.tw,18BJ7J6UjOME9K64pHZT2aD0FeF3,Max-2,0,0,0.00,0.00,$299.00,$299.00,$3588.00,$0.000000,$0.000000,$9.97,0.0%,0.0%,0.0%,2,20.0%
17
- alanmcdonald.32283@gmail.com,1XIowNy4HGRPlaEMoGyp167NPHC3,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,7,70.0%
18
- minah.say@gmail.com,1s6ZM7LIoEOZZoSJ8EBmGdghdH42,Max-2,0,0,0.00,0.00,$299.00,$299.00,$3588.00,$0.000000,$0.000000,$9.97,0.0%,0.0%,0.0%,3,30.0%
19
- gemini0619200@gmail.com,2EJnLIQ3fnduA7uR578SwFuBs962,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,8,80.0%
20
- mathewmack.80060@gmail.com,3ESZBFrWzLgs44njrsPz1EUzwmn2,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,9,90.0%
21
- 4pf8n66zw8@privaterelay.appleid.com,4QbgM0jDNWOouL766csx2cArvBI3,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,10,100.0%
22
- wengroy@cameo.tw,4pv86sko5cU0QaJfhdGaGX4X6EC3,Max-2,0,0,0.00,0.00,$299.00,$299.00,$3588.00,$0.000000,$0.000000,$9.97,0.0%,0.0%,0.0%,4,40.0%
@@ -1,22 +0,0 @@
1
- # Botrun-C 成本分析報告
2
- # 生成時間: 2025-12-08T23:08:43.063Z
3
- # 分析期間: 2025/12/2 - 2025/12/9 (7 天)
4
- # 總使用者數: 10
5
- # 總 Token 數: 0
6
- # 總成本: $1196.00
7
-
8
- # 按方案分佈
9
- # Max-2: 4 位使用者, $1196.00 (100.0%)
10
- # Lite: 6 位使用者, $0.00 (0.0%)
11
-
12
- Email,User ID,Plan,Total Requests,Total Tokens,Avg Daily Requests,Avg Daily Tokens,Monthly Plan Cost,Estimated Monthly Cost,Estimated Annual Cost,Cost per Token,Cost per Request,Cost per Day,TPM Utilization,RPM Utilization,RPD Utilization,Rank,Percentile Rank
13
- baby.ff.74@gmail.com,074xGzIKWyfKTBt1NMIj9lxi5mO2,Max-2,0,0,0.00,0.00,$299.00,$299.00,$3588.00,$0.000000,$0.000000,$9.97,0.0%,0.0%,0.0%,1,10.0%
14
- cyh6800@gmail.com,0l3CZEWySQRTre9nK5NbW2tbZuK2,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,5,50.0%
15
- damonwheeler.49353@gmail.com,15diNdor1XPCqJ2P6wqGVNXY2wj2,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,6,60.0%
16
- sebastian.hsu@cameo.tw,18BJ7J6UjOME9K64pHZT2aD0FeF3,Max-2,0,0,0.00,0.00,$299.00,$299.00,$3588.00,$0.000000,$0.000000,$9.97,0.0%,0.0%,0.0%,2,20.0%
17
- alanmcdonald.32283@gmail.com,1XIowNy4HGRPlaEMoGyp167NPHC3,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,7,70.0%
18
- minah.say@gmail.com,1s6ZM7LIoEOZZoSJ8EBmGdghdH42,Max-2,0,0,0.00,0.00,$299.00,$299.00,$3588.00,$0.000000,$0.000000,$9.97,0.0%,0.0%,0.0%,3,30.0%
19
- gemini0619200@gmail.com,2EJnLIQ3fnduA7uR578SwFuBs962,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,8,80.0%
20
- mathewmack.80060@gmail.com,3ESZBFrWzLgs44njrsPz1EUzwmn2,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,9,90.0%
21
- 4pf8n66zw8@privaterelay.appleid.com,4QbgM0jDNWOouL766csx2cArvBI3,Lite,0,0,0.00,0.00,$0.00,$0.00,$0.00,$0.000000,$0.000000,$0.00,0.0%,0.0%,0.0%,10,100.0%
22
- wengroy@cameo.tw,4pv86sko5cU0QaJfhdGaGX4X6EC3,Max-2,0,0,0.00,0.00,$299.00,$299.00,$3588.00,$0.000000,$0.000000,$9.97,0.0%,0.0%,0.0%,4,40.0%