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,825 +0,0 @@
1
- # Android 自動部署設定指南
2
-
3
- 本指南將帶你完成 Botrun Android App 的自動化部署設定,使用 Fastlane + Firebase App Distribution + Google Play Console。
4
-
5
- ---
6
-
7
- ## 📋 目錄
8
-
9
- ### 快速開始(使用現有設定)
10
-
11
- 1. [前置準備](#前置準備)
12
- 2. [Android Studio 設定](#android-studio-設定)
13
- 3. [取得 Service Account Keys](#取得-service-account-keys)
14
- 4. [設定 Fastlane 配置檔](#設定-fastlane-配置檔)
15
- 5. [執行第一次部署測試](#執行第一次部署測試)
16
- 6. [部署流程](#部署流程)
17
- 7. [疑難排解](#疑難排解)
18
-
19
- ### 附錄:從零開始建立(首次設定參考)
20
-
21
- - [附錄 A:建立 Android 平台](#附錄-a建立-android-平台)
22
- - [附錄 B:Firebase Service Account 建立流程](#附錄-bfirebase-service-account-建立流程)
23
- - [附錄 C:Google Play Service Account 建立流程](#附錄-cgoogle-play-service-account-建立流程)
24
- - [附錄 D:首次手動上傳到 Google Play](#附錄-d首次手動上傳到-google-play)
25
-
26
- ---
27
-
28
- # 快速開始(使用現有設定)
29
-
30
- > 💡 **適用對象:** 新加入的團隊成員,使用專案已建立好的 Service Accounts
31
-
32
- ## 前置準備
33
-
34
- ### ✅ 必須先完成
35
-
36
- 1. **Ruby 環境已設定完成**
37
- - 📖 參考 [README.md - Ruby 環境設定](./README.md#-ruby-環境設定共用)
38
- - ✅ 確認指令可用:
39
- ```bash
40
- ruby --version # 應顯示 3.3.0
41
- bundle --version # 應顯示 Bundler version 2.x
42
- bundle exec fastlane --version # 應顯示 fastlane 2.x
43
- ```
44
-
45
- 2. **本地開發環境**
46
- - ✅ Node.js & npm 已安裝
47
- - ✅ 專案可正常建置(`npm run build` 成功)
48
-
49
- 3. **帳號權限(向管理員申請)**
50
- - ✅ Firebase 專案檢視權限(可選,用於查看部署狀態)
51
- - ✅ Google Play Console 檢視權限(可選,用於查看部署狀態)
52
-
53
- ---
54
-
55
- ## Android Studio 設定
56
-
57
- ### 1. 安裝 Android Studio
58
-
59
- 從 [Android Studio 官網](https://developer.android.com/studio) 下載並安裝。
60
-
61
- ### 2. 安裝 Android SDK 和 Build Tools
62
-
63
- 在 Android Studio 中:
64
- - 開啟 **Preferences / Settings**
65
- - 導航到 **Appearance & Behavior → System Settings → Android SDK**
66
- - 安裝至少一個 **Android SDK Platform**(建議最新穩定版)
67
- - 安裝 **Android SDK Build-Tools**(建議最新版)
68
-
69
- ### 3. 設定 ANDROID_HOME 環境變數
70
-
71
- **macOS/Linux:**
72
- ```bash
73
- # 加入到 ~/.zshrc 或 ~/.bashrc
74
- export ANDROID_HOME=$HOME/Library/Android/sdk
75
- export PATH=$PATH:$ANDROID_HOME/emulator
76
- export PATH=$PATH:$ANDROID_HOME/tools
77
- export PATH=$PATH:$ANDROID_HOME/tools/bin
78
- export PATH=$PATH:$ANDROID_HOME/platform-tools
79
-
80
- # 重新載入 shell
81
- source ~/.zshrc # 或 source ~/.bashrc
82
- ```
83
-
84
- **Windows (PowerShell):**
85
- ```powershell
86
- # 設定用戶環境變數(永久)
87
- [System.Environment]::SetEnvironmentVariable('ANDROID_HOME', "$env:LOCALAPPDATA\Android\Sdk", 'User')
88
- [System.Environment]::SetEnvironmentVariable('Path', "$env:Path;$env:LOCALAPPDATA\Android\Sdk\platform-tools", 'User')
89
-
90
- # 重新開啟 PowerShell
91
- ```
92
-
93
- ### 4. 驗證安裝
94
-
95
- ```bash
96
- # 檢查 ANDROID_HOME
97
- echo $ANDROID_HOME # macOS/Linux
98
- echo $env:ANDROID_HOME # Windows PowerShell
99
-
100
- # 檢查 adb
101
- adb --version
102
- # 應顯示 Android Debug Bridge 版本資訊
103
- ```
104
-
105
- ---
106
-
107
- ## 取得 Service Account Keys
108
-
109
- ### 需要的檔案
110
-
111
- 向專案管理員(目前是 Seba)索取以下兩個 JSON 檔案:
112
-
113
- 1. **Firebase Service Account Key**
114
- - 用於:上傳 APK 到 Firebase App Distribution
115
- - 檔案名稱:`botrun-c-xxxxx.json`(或類似名稱)
116
-
117
- 2. **Google Play Service Account Key**
118
- - 用於:上傳 AAB 到 Google Play Console
119
- - 檔案名稱:`botrun-c-xxxxx.json`(或類似名稱)
120
-
121
- ### 設定步驟
122
-
123
- 收到檔案後,執行以下指令:
124
-
125
- ```bash
126
- # 進入專案目錄
127
- cd /path/to/botrun-c
128
-
129
- # 建立目錄(如果不存在)
130
- mkdir -p mobile-android/fastlane
131
-
132
- # 複製 Firebase Service Account Key
133
- cp ~/Downloads/firebase-檔案名稱.json mobile-android/fastlane/firebase-service-account.json
134
-
135
- # 複製 Google Play Service Account Key
136
- cp ~/Downloads/google-play-檔案名稱.json mobile-android/fastlane/google-play-service-account.json
137
-
138
- # 設定安全權限(只有你可以讀寫)
139
- chmod 600 mobile-android/fastlane/firebase-service-account.json
140
- chmod 600 mobile-android/fastlane/google-play-service-account.json
141
-
142
- # 驗證檔案已被 git ignore
143
- git check-ignore -v mobile-android/fastlane/firebase-service-account.json
144
- git check-ignore -v mobile-android/fastlane/google-play-service-account.json
145
- # 兩個都應該顯示被 .gitignore 排除
146
- ```
147
-
148
- ✅ **安全提醒:** 這兩個檔案已自動被 `.gitignore` 排除,**絕對不要** commit 到 git!
149
-
150
- ---
151
-
152
- ## 設定 Fastlane 配置檔
153
-
154
- ### 1. 建立 .env 檔案
155
-
156
- ```bash
157
- cd /path/to/botrun-c/mobile-android/fastlane
158
-
159
- # 複製現有的 .env(如果不存在的話,向管理員索取)
160
- # .env 檔案已經在 mobile-android/fastlane/.env
161
- ```
162
-
163
- ### 2. 確認 .env 內容
164
-
165
- 確認 `mobile-android/fastlane/.env` 包含以下資訊:
166
-
167
- ```bash
168
- # === Firebase ===
169
- FIREBASE_APP_ID=1:257949799705:android:2806947bf699e29d0d6188
170
-
171
- # Service Account JSON 檔案路徑(相對於此 Fastfile 的路徑)
172
- FIREBASE_SERVICE_ACCOUNT=./firebase-service-account.json
173
-
174
- # === Google Play ===
175
- GOOGLE_PLAY_SERVICE_ACCOUNT=./google-play-service-account.json
176
-
177
- # === Build Paths ===
178
- ANDROID_PROJECT_PATH=../android
179
- ```
180
-
181
- ### 3. 設定權限
182
-
183
- ```bash
184
- chmod 600 mobile-android/fastlane/.env
185
- ```
186
-
187
- ✅ **安全提醒:** `.env` 檔案已被 `.gitignore` 排除,不要 commit 到 git!
188
-
189
- ---
190
-
191
- ## 建立 Firebase Tester Group
192
-
193
- ⚠️ **重要:必須先建立 tester group,否則部署會失敗(404 錯誤)**
194
-
195
- ### 步驟
196
-
197
- 1. 前往 [Firebase Console](https://console.firebase.google.com/)
198
- 2. 選擇你的專案(botrun-c)
199
- 3. 左側選單點擊 **"App Distribution"**
200
- 4. 如果是第一次使用,點擊 **"Get started"**
201
- 5. 切換到 **"Testers & Groups"** tab
202
- 6. 點擊 **"Add Group"**
203
- 7. 輸入 Group name: `internal-testers`(必須與 Fastfile 中的名稱一致)
204
- 8. 點擊 **"Create group"**
205
- 9. 點擊剛建立的 `internal-testers` group
206
- 10. 點擊 **"Add testers"**
207
- 11. 輸入測試人員的 email(一行一個)
208
- 12. 點擊 **"Add testers"**
209
-
210
- ✅ **完成!** 現在可以開始部署了。
211
-
212
- **常見 tester group 名稱:**
213
- - `internal-testers` - 內部測試人員(預設)
214
- - `beta-testers` - Beta 測試人員
215
- - `qa-team` - QA 團隊
216
-
217
- 💡 **提示:** Fastfile 中的 `groups: "internal-testers"` 必須與 Firebase Console 中的 group 名稱完全一致(包含大小寫)。
218
-
219
- ---
220
-
221
- ## 設定 Android Keystore(用於 Google Play 發佈)
222
-
223
- ⚠️ **重要:** 發佈到 Google Play 需要簽署的 AAB。如果你只使用 Firebase App Distribution,可以跳過此步驟。
224
-
225
- ### 選項 A:使用現有 Keystore(推薦)
226
-
227
- 如果你已經有 keystore(例如之前建立過),請按照以下步驟:
228
-
229
- #### 1. 複製 Keystore 到專案
230
-
231
- ```bash
232
- # 將你的 keystore 複製到 Android 專案目錄
233
- cp /path/to/your-keystore.keystore /path/to/botrun-c/mobile-android/android/app/botrun-release.keystore
234
-
235
- # 設定權限
236
- chmod 600 /path/to/botrun-c/mobile-android/android/app/botrun-release.keystore
237
- ```
238
-
239
- #### 2. 建立 keystore.properties
240
-
241
- 在 `mobile-android/android/keystore.properties` 建立檔案:
242
-
243
- ```properties
244
- storePassword=你的_keystore_密碼
245
- keyPassword=你的_key_密碼
246
- keyAlias=你的_key_alias
247
- storeFile=app/botrun-release.keystore
248
- ```
249
-
250
- **設定權限:**
251
- ```bash
252
- chmod 600 /path/to/botrun-c/mobile-android/android/keystore.properties
253
- ```
254
-
255
- ✅ **安全提醒:** keystore 和 keystore.properties 都已被 `.gitignore` 排除,不會 commit 到 git。
256
-
257
- #### 3. 驗證 Keystore 規格
258
-
259
- 確認你的 keystore 符合 Google Play 要求(2024/2025 規範):
260
-
261
- ```bash
262
- keytool -list -v -keystore /path/to/botrun-c/mobile-android/android/app/botrun-release.keystore -alias 你的_alias
263
- ```
264
-
265
- **必須符合:**
266
- - ✅ 2048 bit RSA key
267
- - ✅ SHA256withRSA 簽章演算法
268
- - ✅ 有效期至少 25 年
269
-
270
- ### 選項 B:建立新的 Keystore
271
-
272
- 如果這是第一次建立 keystore:
273
-
274
- ```bash
275
- cd /path/to/botrun-c/mobile-android/android/app
276
-
277
- # 建立 keystore(2024/2025 規範)
278
- keytool -genkeypair -v -storetype PKCS12 \
279
- -keystore botrun-release.keystore \
280
- -alias botrun-release-key \
281
- -keyalg RSA \
282
- -keysize 2048 \
283
- -validity 9125 \
284
- -storepass 你的密碼 \
285
- -keypass 你的密碼 \
286
- -dname "CN=你的公司名稱, OU=Development, O=你的公司, L=城市, ST=省份, C=國家代碼"
287
- ```
288
-
289
- 然後按照「選項 A」的步驟 2-3 建立 `keystore.properties`。
290
-
291
- ⚠️ **極重要:** 備份 keystore 檔案!一旦遺失,將無法再更新已發佈的 app。
292
-
293
- ### 配置完成檢查
294
-
295
- 確認以下檔案存在且已被 gitignore:
296
-
297
- ```bash
298
- # 檢查檔案
299
- ls -la mobile-android/android/app/botrun-release.keystore
300
- ls -la mobile-android/android/keystore.properties
301
-
302
- # 確認已被 gitignore
303
- git check-ignore -v mobile-android/android/app/botrun-release.keystore
304
- git check-ignore -v mobile-android/android/keystore.properties
305
- ```
306
-
307
- ✅ 兩個檔案都應該顯示被 `.gitignore` 排除。
308
-
309
- ---
310
-
311
- ## 啟用 Google Play Android Developer API
312
-
313
- ⚠️ **重要:** 如果你計劃使用 Google Play 部署功能(`internal_play` 或 `production`),必須先啟用 Google Play Android Developer API。
314
-
315
- ### 步驟
316
-
317
- 1. **前往 API 啟用頁面:**
318
-
319
- 前往以下連結(替換 `PROJECT_ID` 為你的專案 ID):
320
- ```
321
- https://console.developers.google.com/apis/api/androidpublisher.googleapis.com/overview?project=PROJECT_ID
322
- ```
323
-
324
- 💡 **如何找到專案 ID?**
325
- - 打開 `mobile-android/fastlane/google-play-service-account.json`
326
- - 搜尋 `"project_id"` 欄位
327
- - 或在 [Google Cloud Console](https://console.cloud.google.com/) 的頂部下拉選單中查看
328
-
329
- 2. **點擊「Enable」(啟用)按鈕**
330
-
331
- 3. **等待 2-5 分鐘**讓設定生效
332
-
333
- ### 驗證
334
-
335
- 部署時如果看到以下錯誤,表示 API 未啟用或剛啟用尚未生效:
336
-
337
- ```
338
- PERMISSION_DENIED: Google Play Android Developer API has not been used in project...
339
- ```
340
-
341
- **解決方法:**
342
- - 確認已點擊「Enable」按鈕
343
- - 等待 2-5 分鐘後重試
344
- - 如果剛啟用,可能需要最多 10 分鐘才會完全生效
345
-
346
- ✅ **完成!** 現在可以開始使用 Google Play 部署功能。
347
-
348
- ---
349
-
350
- ## 執行第一次部署測試
351
-
352
- ### 測試 Firebase App Distribution 部署
353
-
354
- ```bash
355
- cd /path/to/botrun-c/mobile-android
356
-
357
- # 初始化 rbenv(如果使用 rbenv)
358
- eval "$(rbenv init - zsh)"
359
-
360
- # 執行內部測試部署(Firebase)
361
- bundle exec fastlane internal_firebase
362
- ```
363
-
364
- **預期結果:**
365
- - ✅ Web 專案建置成功
366
- - ✅ Android 專案同步成功
367
- - ✅ APK 建置成功
368
- - ✅ 上傳到 Firebase App Distribution 成功
369
- - ✅ 測試人員收到通知 email
370
-
371
- **如果失敗:** 參考 [疑難排解](#疑難排解)
372
-
373
- ### 測試 Google Play 部署(可選)
374
-
375
- ⚠️ **注意:** Google Play 部署需要先完成「首次手動上傳」(參考 [附錄 D](#附錄-d首次手動上傳到-google-play))
376
-
377
- ```bash
378
- cd /path/to/botrun-c/mobile-android
379
-
380
- # 執行 Google Play 內部測試部署
381
- bundle exec fastlane internal_play
382
- ```
383
-
384
- ---
385
-
386
- ## 部署流程
387
-
388
- ### 🧪 內部測試(Firebase App Distribution)
389
-
390
- **使用時機:** 快速分發給內部測試人員,不需要經過 Google Play 審核。
391
-
392
- ```bash
393
- cd /path/to/botrun-c/mobile-android
394
- bundle exec fastlane internal_firebase
395
- ```
396
-
397
- **流程:**
398
- 1. 建置 web 專案
399
- 2. 同步到 Android
400
- 3. 建置 Debug APK
401
- 4. 上傳到 Firebase App Distribution
402
- 5. 自動發送通知給測試人員
403
-
404
- **測試人員如何取得:**
405
- - 收到 email 通知
406
- - 點擊連結下載 APK
407
- - 安裝測試
408
-
409
- ### 📦 Google Play 內部測試
410
-
411
- **使用時機:** 測試 Google Play 商店的更新流程,需要經過 Google Play 審核(通常數小時)。
412
-
413
- ```bash
414
- cd /path/to/botrun-c/mobile-android
415
- bundle exec fastlane internal_play
416
- ```
417
-
418
- **流程:**
419
- 1. 建置 web 專案
420
- 2. 同步到 Android
421
- 3. 建置 Release AAB(已簽署)
422
- 4. 上傳到 Google Play Internal Testing track
423
- 5. 等待 Google Play 審核
424
-
425
- **測試人員如何取得:**
426
- - 需要先被加入 Play Console 的 Internal Testing testers list
427
- - 使用 Play Store 下載測試版本
428
-
429
- ### 🚀 正式發佈(Production - 100% 發佈)
430
-
431
- **使用時機:** 發佈到 Production,所有用戶立即可見。
432
-
433
- ```bash
434
- cd /path/to/botrun-c/mobile-android
435
- bundle exec fastlane production
436
- ```
437
-
438
- **流程:**
439
- 1. 建置 web 專案
440
- 2. 同步到 Android
441
- 3. 建置 Release AAB(已簽署)
442
- 4. 上傳到 Google Play Production track(100% 發佈)
443
- 5. 所有用戶將在數小時內收到更新
444
-
445
- **特點(2024/2025 最佳實踐):**
446
- - ✅ 使用 `release_status: "completed"` - 直接 100% 發佈
447
- - ✅ 使用 Google Play App Signing - Google 管理 signing key
448
- - ✅ 需要先完成「首次手動上傳」(僅需一次)
449
-
450
- **首次發佈前必須:**
451
- - ✅ Keystore 已設定(參考上方章節)
452
- - ✅ 手動上傳過至少一次 AAB 到 production track
453
- - ✅ Google Play App Signing 已啟用
454
-
455
- ---
456
-
457
- ## 疑難排解
458
-
459
- ### ❌ 錯誤:找不到 Service Account JSON 檔案
460
-
461
- **症狀:**
462
- ```
463
- No such file or directory @ rb_sysopen - .../firebase-service-account.json
464
- ```
465
-
466
- **解決:**
467
- 1. 確認檔案位置正確:
468
- ```bash
469
- ls -la mobile-android/fastlane/*.json
470
- ```
471
- 2. 確認檔案名稱正確(firebase-service-account.json 或 google-play-service-account.json)
472
- 3. 確認 `.env` 檔案中的路徑設定正確
473
-
474
- ### ❌ 錯誤:Service account does not have permission
475
-
476
- **問題:** Service Account 權限不足。
477
-
478
- **解決:** 聯絡專案管理員,確認:
479
- 1. **Firebase Service Account** 已加入 "Firebase App Distribution Admin" 角色(在 Google Cloud Console)
480
- 2. **Google Play Service Account** 已在 Play Console 授權(2024+ 版本:透過 "Users and permissions" → "Invite new users")
481
-
482
- **補充:** Service Account 權限可能需要最多 24 小時才會完全生效。如果剛剛才設定,請稍後再試。
483
-
484
- ### ❌ 錯誤:Android platform has not been added
485
-
486
- **解決:**
487
- ```bash
488
- cd /path/to/botrun-c/mobile-android
489
- npx cap add android
490
- ```
491
-
492
- ### ❌ 錯誤:No signing key found
493
-
494
- **問題:** 尚未設定 Android 簽署金鑰。
495
-
496
- **解決:** 聯絡專案管理員取得 keystore 檔案和設定。
497
-
498
- ### ❌ Fastlane 找不到 或 Ruby 相關錯誤
499
-
500
- **解決:** 參考 [README.md - Ruby 環境問題](./README.md#ruby-環境問題)
501
-
502
- ### ❌ 執行 fastlane 命令時的常見錯誤
503
-
504
- #### 錯誤 1: `parse error near ';&'`
505
-
506
- **症狀:**
507
- ```bash
508
- cd /path && bundle exec fastlane internal_play
509
- # Error: (eval):1: parse error near `;&'
510
- ```
511
-
512
- **原因:** Bash 命令中的 `&&` 符號在某些環境中會導致解析錯誤。
513
-
514
- **解決:** 使用分號 `;` 代替 `&&`
515
- ```bash
516
- cd /Users/seba/Projects/botrun-c/mobile-android; bundle exec fastlane internal_play
517
- ```
518
-
519
- #### 錯誤 2: `bundler: command not found: fastlane`
520
-
521
- **症狀:**
522
- ```bash
523
- cd /path; bundle exec fastlane internal_play
524
- # Error: bundler: command not found: fastlane
525
- # Your RubyGems version (3.0.3.1) has a bug...
526
- ```
527
-
528
- **原因:** Ruby 環境 PATH 未正確設定,Bundler 找不到 fastlane gem。
529
-
530
- **解決:** 必須先設定 rbenv PATH 再執行 fastlane
531
- ```bash
532
- cd /Users/seba/Projects/botrun-c/mobile-android; export PATH="$HOME/.rbenv/shims:$PATH"; bundle exec fastlane internal_play
533
- ```
534
-
535
- #### ✅ 正確的執行方式(範本)
536
-
537
- **部署到 Google Play Internal Testing:**
538
- ```bash
539
- cd /Users/seba/Projects/botrun-c/mobile-android; export PATH="$HOME/.rbenv/shims:$PATH"; bundle exec fastlane internal_play
540
- ```
541
-
542
- **部署到 Firebase App Distribution:**
543
- ```bash
544
- cd /Users/seba/Projects/botrun-c/mobile-android; export PATH="$HOME/.rbenv/shims:$PATH"; bundle exec fastlane internal_firebase
545
- ```
546
-
547
- **部署到 Google Play Production:**
548
- ```bash
549
- cd /Users/seba/Projects/botrun-c/mobile-android; export PATH="$HOME/.rbenv/shims:$PATH"; bundle exec fastlane production
550
- ```
551
-
552
- **重點:**
553
- - ✅ 使用 `;` 分隔命令(不要用 `&&`)
554
- - ✅ 必須先 `export PATH="$HOME/.rbenv/shims:$PATH"` 設定 Ruby 環境
555
- - ✅ 從 `mobile-android` 目錄執行(不是 `mobile-android/fastlane`)
556
-
557
- ---
558
-
559
- # 附錄:從零開始建立(首次設定參考)
560
-
561
- > 💡 **適用對象:** 第一次設定專案,或需要重新建立 Service Accounts 的管理員
562
-
563
- ---
564
-
565
- ## 附錄 A:建立 Android 平台
566
-
567
- 如果專案尚未建立 Android 平台(使用 Capacitor):
568
-
569
- ### 1. 進入 mobile-android 目錄
570
-
571
- ```bash
572
- cd /path/to/botrun-c/mobile-android
573
- ```
574
-
575
- ### 2. 新增 Android 平台
576
-
577
- ```bash
578
- npx cap add android
579
- ```
580
-
581
- 這會建立 `android/` 子目錄,包含完整的 Android 專案結構。
582
-
583
- ### 3. 同步 Web 資源
584
-
585
- ```bash
586
- npm run build
587
- ```
588
-
589
- 這會:
590
- - 建置 web 專案
591
- - 將建置結果同步到 Android 專案
592
-
593
- ### 4. 驗證 Android 專案
594
-
595
- ```bash
596
- npx cap open android
597
- ```
598
-
599
- 這會開啟 Android Studio,確認專案可以正常開啟。
600
-
601
- ---
602
-
603
- ## 附錄 B:Firebase Service Account 建立流程
604
-
605
- ### 1. 取得 Firebase App ID
606
-
607
- 前往 [Firebase Console](https://console.firebase.google.com/):
608
-
609
- 1. 選擇你的專案
610
- 2. 點擊左側齒輪圖示 **⚙️ Project settings**
611
- 3. 往下滾動到 **"Your apps"**
612
- 4. 找到 Android app(package name: `ai.botrun.botrunapp`)
613
- 5. 複製 **App ID**(格式:`1:123456789:android:abcd1234xxxx`)
614
- 6. 將此 App ID 記錄下來,稍後需要填入 `.env` 檔案
615
-
616
- ### 2. 建立 Firebase Service Account
617
-
618
- 前往 [Google Cloud Console - Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts):
619
-
620
- 1. **選擇對應的 Firebase 專案**(確認專案名稱正確)
621
- 2. 點擊 **"+ Create Service Account"**
622
- 3. 填寫資訊:
623
- - **Service account name**: `firebase-app-distribution`
624
- - **Description**: "Fastlane Firebase App Distribution 部署用"
625
- 4. 點擊 **"Create and Continue"**
626
- 5. 選擇角色:**"Firebase App Distribution Admin"**
627
- - 在 "Select a role" 下拉選單中搜尋 "Firebase"
628
- - 選擇 **"Firebase App Distribution Admin"**
629
- 6. 點擊 **"Continue"** → **"Done"**
630
-
631
- ### 3. 下載 Service Account Key
632
-
633
- 1. 在 Service Accounts 列表中,找到剛建立的 `firebase-app-distribution@xxx.iam.gserviceaccount.com`
634
- 2. 點擊該 Service Account
635
- 3. 切換到 **"Keys"** tab
636
- 4. 點擊 **"Add Key"** → **"Create new key"**
637
- 5. 選擇 **JSON** 格式
638
- 6. 點擊 **"Create"** → JSON 檔案會自動下載
639
-
640
- ### 4. 移動檔案到專案
641
-
642
- ```bash
643
- # 建立目錄(如果不存在)
644
- mkdir -p mobile-android/fastlane
645
-
646
- # 移動並重新命名檔案(替換成你的檔案名稱)
647
- cp ~/Downloads/你的專案名稱-xxxxx.json mobile-android/fastlane/firebase-service-account.json
648
-
649
- # 設定安全權限(只有你可以讀寫)
650
- chmod 600 mobile-android/fastlane/firebase-service-account.json
651
-
652
- # 驗證檔案已被 git ignore
653
- git check-ignore -v mobile-android/fastlane/firebase-service-account.json
654
- # 應該顯示:.gitignore:xxx:mobile-android/fastlane/*-service-account.json
655
- ```
656
-
657
- ✅ **已自動被 .gitignore 排除**
658
-
659
- ---
660
-
661
- ## 附錄 C:Google Play Service Account 建立流程
662
-
663
- ### 1. 建立 Google Play Service Account
664
-
665
- 前往 [Google Cloud Console - Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts):
666
-
667
- 1. **確保選擇與 Firebase 相同的專案**
668
- 2. 點擊 **"+ Create Service Account"**
669
- 3. 填寫資訊:
670
- - **Service account name**: `google-play-api`
671
- - **Description**: "Fastlane Google Play 部署用"
672
- 4. 點擊 **"Create and Continue"**
673
- 5. **跳過角色選擇**(點擊 "Continue")- 權限稍後在 Play Console 設定
674
- 6. 點擊 **"Done"**
675
-
676
- ### 2. 下載 Service Account Key
677
-
678
- 1. 在 Service Accounts 列表中,找到剛建立的 `google-play-api@xxx.iam.gserviceaccount.com`
679
- 2. 點擊該 Service Account
680
- 3. 切換到 **"Keys"** tab
681
- 4. 點擊 **"Add Key"** → **"Create new key"**
682
- 5. 選擇 **JSON** 格式
683
- 6. 點擊 **"Create"** → JSON 檔案會自動下載
684
-
685
- ### 3. 移動檔案到專案
686
-
687
- ```bash
688
- # 移動並重新命名檔案
689
- cp ~/Downloads/你的專案名稱-xxxxx.json mobile-android/fastlane/google-play-service-account.json
690
-
691
- # 設定安全權限
692
- chmod 600 mobile-android/fastlane/google-play-service-account.json
693
-
694
- # 驗證檔案已被 git ignore
695
- git check-ignore -v mobile-android/fastlane/google-play-service-account.json
696
- ```
697
-
698
- ### 4. 在 Play Console 授權 Service Account
699
-
700
- ⚠️ **重要:2024+ 版本更新** - Google Play Console 已改版,不再有 "Settings → API Access" 選項。
701
-
702
- 前往 [Google Play Console](https://play.google.com/console/):
703
-
704
- #### 步驟 1:取得 Service Account Email
705
-
706
- 1. 前往 [Google Cloud Console - Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts)
707
- 2. 確保選擇正確的專案
708
- 3. 找到剛建立的 `google-play-api` Service Account
709
- 4. **複製完整的 email**(格式:`google-play-api@你的專案ID.iam.gserviceaccount.com`)
710
-
711
- #### 步驟 2:在 Play Console 邀請 Service Account
712
-
713
- 1. 在 Google Play Console 選擇你的開發者帳號
714
- 2. 點擊左側邊欄的 **"Users and permissions"**(使用者和權限)
715
- 3. 點擊右上角的 **"Invite new users"**(邀請新使用者)按鈕
716
- 4. 在 Email address 欄位貼上剛複製的 Service Account email
717
-
718
- #### 步驟 3:設定權限
719
-
720
- **Account permissions(帳戶權限)tab:**
721
- - 選擇 **"Admin (all permissions)"**(推薦)
722
- - 或至少勾選:
723
- - ✅ View app information and download bulk reports
724
- - ✅ Manage production releases
725
- - ✅ Manage testing track releases
726
-
727
- **App permissions(應用程式權限)tab:**
728
- - 點擊 **"Add app"**
729
- - 選擇你的 app(`Botrun` / package name: `ai.botrun.botrunapp`)
730
- - 或選擇 **"All apps"**(套用到所有目前和未來的 apps)
731
-
732
- #### 步驟 4:發送邀請
733
-
734
- 1. 點擊 **"Invite user"**
735
- 2. 點擊 **"Send invitation"**
736
-
737
- ✅ **完成!** Service Account 現在有權限透過 API 上傳 APK/AAB 到 Google Play。
738
-
739
- ⏱️ **注意:** Service Account 權限可能需要最多 24 小時才會完全生效。通常幾分鐘內就可以使用,但如果遇到權限錯誤,請稍後再試。
740
-
741
- ### 5. 啟用 Google Play Android Developer API
742
-
743
- ⚠️ **重要:** 必須啟用此 API,否則無法透過 Fastlane 上傳到 Google Play。
744
-
745
- 1. **取得專案 ID:**
746
- - 打開剛下載的 `google-play-service-account.json`
747
- - 搜尋 `"project_id"` 欄位並複製值
748
-
749
- 2. **前往 API 啟用頁面:**
750
- ```
751
- https://console.developers.google.com/apis/api/androidpublisher.googleapis.com/overview?project=你的專案ID
752
- ```
753
- (替換 `你的專案ID` 為上一步複製的值)
754
-
755
- 3. **點擊「Enable」(啟用)按鈕**
756
-
757
- 4. **等待 2-5 分鐘**讓設定生效
758
-
759
- **常見錯誤:**
760
- ```
761
- PERMISSION_DENIED: Google Play Android Developer API has not been used in project...
762
- ```
763
- - **原因:** API 未啟用或剛啟用尚未生效
764
- - **解決:** 確認已啟用,等待 2-5 分鐘後重試
765
-
766
- ✅ **Service Account 設定完成!** 現在可以使用 Fastlane 自動部署到 Google Play。
767
-
768
- ---
769
-
770
- ## 附錄 D:首次手動上傳到 Google Play
771
-
772
- ⚠️ **重要:** 在使用 Fastlane API 上傳到 Google Play 之前,**必須先手動上傳一次 APK/AAB** 到 Internal Testing track。
773
-
774
- ### 為什麼需要首次手動上傳?
775
-
776
- Google Play API 要求 app 必須先有至少一個手動上傳的版本,才能使用 API 進行後續的自動化上傳。
777
-
778
- ### 步驟
779
-
780
- #### 1. 建置 Release AAB
781
-
782
- ```bash
783
- cd /path/to/botrun-c/mobile-android
784
-
785
- # 建置 web 專案
786
- npm run build
787
-
788
- # 進入 Android 專案
789
- cd android
790
-
791
- # 建置 release AAB
792
- ./gradlew bundleRelease
793
-
794
- # AAB 檔案位置
795
- ls -la app/build/outputs/bundle/release/app-release.aab
796
- ```
797
-
798
- #### 2. 在 Play Console 手動上傳
799
-
800
- 1. 前往 [Google Play Console](https://play.google.com/console/)
801
- 2. 選擇你的 app
802
- 3. 導航到 **"Release"** → **"Testing"** → **"Internal testing"**
803
- 4. 點擊 **"Create new release"**
804
- 5. 上傳 AAB 檔案:
805
- - 拖曳或選擇 `app/build/outputs/bundle/release/app-release.aab`
806
- 6. 填寫 **Release notes**(例如:`Initial release for testing`)
807
- 7. 點擊 **"Save"**
808
- 8. 點擊 **"Review release"**
809
- 9. 確認無誤後,點擊 **"Start rollout to Internal testing"**
810
-
811
- #### 3. 等待審核
812
-
813
- - Google Play 審核通常需要數小時
814
- - 審核通過後,可以開始使用 Fastlane 自動化部署
815
-
816
- ✅ **完成!** 之後就可以使用 `bundle exec fastlane internal_play` 進行自動化部署。
817
-
818
- ---
819
-
820
- ## 參考資源
821
-
822
- - [Fastlane 官方文件](https://docs.fastlane.tools/)
823
- - [Firebase App Distribution](https://firebase.google.com/docs/app-distribution)
824
- - [Google Play Console API](https://developers.google.com/android-publisher)
825
- - [Capacitor Android](https://capacitorjs.com/docs/android)