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,482 +0,0 @@
1
- # 📱 Capacitor 整合 TODO List
2
-
3
- **建立日期**:2025-11-06
4
- **狀態**:進行中 (6/22 完成)
5
- **預計完成時間**:3-5 天
6
- **最後更新**:2025-11-06 (完成 Native 平台檔案讀取邏輯)
7
-
8
- ---
9
-
10
- ## 🎯 專案目標
11
-
12
- 將現有的 Next.js web app 封裝為 iOS 和 Android 原生 App,並解決長時間錄音問題。
13
-
14
- ---
15
-
16
- ## 📊 整體進度
17
-
18
- ```
19
- 階段 1: Audio Recorder 整合 [▓▓▓▓▓▓░░░] 6/9 (Native 檔案讀取完成)
20
- 階段 2: iOS 完善 [░░░░░░░░░] 0/3
21
- 階段 3: Android 建立 [░░░░░░░░░] 0/5
22
- 階段 4: 資源與優化 [░░░░░░░░░] 0/3
23
- 階段 5: 測試與部署 [░░░░░░░░░] 0/2
24
- ```
25
-
26
- ---
27
-
28
- ## 🎤 階段 1:Audio Recorder 整合(優先)
29
-
30
- **目標**:替換 MediaRecorder 為 Capawesome Audio Recorder,解決長時間錄音問題
31
- **預計時間**:1 天
32
- **相依性**:無
33
-
34
- ### ✅ 前置檢查
35
-
36
- - [x] **#1** 檢查 web/ 專案是否已整合 Capacitor SDK ✅
37
- - **檢查項目**:
38
- - [x] 是否有 `import { AudioRecorder } from '@capawesome-team/capacitor-audio-recorder'`
39
- - [x] 環境判斷邏輯(使用 `window.Capacitor` 檢查)
40
- - [ ] Firebase Auth 是否考慮 native 環境(尚未實作)
41
- - **檔案位置**:`web/components/chat-input.tsx`, `web/contexts/AuthContext.tsx`
42
- - **完成時間**:2025-11-06
43
- - **備註**:發現 Capawesome Audio Recorder 本身支援跨平台,不需要手動區分環境
44
-
45
- ### 📦 Plugin 安裝
46
-
47
- - [x] **#2** 在 web/ 安裝 @capacitor/filesystem 和 @capawesome/capacitor-audio-recorder ✅
48
- ```bash
49
- cd web && npm install @capacitor/filesystem @capawesome-team/capacitor-audio-recorder
50
- ```
51
- - **完成時間**:2025-11-06
52
- - **備註**:Web 專案先安裝,mobile-ios/ 和 mobile-android/ 會在建置時同步
53
-
54
- - [x] **#3** 設定 Capawesome Audio Recorder license key ✅
55
- - **方式**:環境變數 `CAPAWESOME_LICENSE_KEY`(或寫在 `capacitor.config.ts`)
56
- - **檔案位置**:`mobile-ios/capacitor.config.ts`, `mobile-android/capacitor.config.ts`
57
- - **完成時間**:2025-11-06
58
- - **備註**:待 iOS/Android 專案建立時設定
59
-
60
- - [x] **#4** 在 web/package.json 加入 @capawesome/capacitor-audio-recorder 依賴 ✅
61
- ```bash
62
- cd web && npm install @capacitor/core @capawesome-team/capacitor-audio-recorder
63
- ```
64
- - **完成時間**:2025-11-06
65
- - **備註**:同時安裝了 `@capacitor/core` (v7.4.4)
66
-
67
- ### 💻 程式碼重構
68
-
69
- - [x] **#5** 修改 chat-input.tsx 支援 Capacitor Audio Recorder ✅
70
- - **實作重點**:
71
- - [x] 加入 `import { AudioRecorder } from '@capawesome-team/capacitor-audio-recorder'`
72
- - [x] 使用統一 API:`AudioRecorder.startRecording()` / `stopRecording()`
73
- - [x] 跨平台支援:Web 返回 `blob`,Native 返回 `uri`
74
- - [x] 權限請求:`AudioRecorder.requestPermissions()`
75
- - [x] Web 平台測試通過
76
- - **檔案位置**:`web/components/chat-input.tsx:515-582`
77
- - **參考文件**:https://capawesome.io/plugins/audio-recorder/
78
- - **完成時間**:2025-11-06
79
- - **備註**:Plugin 本身支援跨平台,不需要手動區分 Web/Native
80
-
81
- - [x] **#6** 更新轉錄邏輯支援 native 錄音檔案路徑 ✅
82
- - **實作重點**:
83
- - [x] Native 回傳檔案路徑(uri)
84
- - [x] 使用 `Filesystem.readFile()` 讀取錄音檔案(base64 格式)
85
- - [x] 轉換 base64 為 Blob
86
- - [x] 支援多種音訊格式(webm, mp4, aac)
87
- - [x] 驗證後端 API 支援所有格式
88
- - **檔案位置**:`web/components/chat-input.tsx:378-387, 543-572, 475-482`
89
- - **完成時間**:2025-11-06
90
- - **音訊格式**:
91
- - Web: audio/webm (.webm)
92
- - iOS: audio/mp4 (.m4a)
93
- - Android: audio/aac (.aac)
94
-
95
- ### 🔐 權限設定
96
-
97
- - [ ] **#7** 設定 iOS 錄音權限說明
98
- - **檔案位置**:`mobile-ios/ios/App/App/Info.plist`
99
- - **新增內容**:
100
- ```xml
101
- <key>NSMicrophoneUsageDescription</key>
102
- <string>需要麥克風權限以錄製語音訊息並轉換為文字</string>
103
- ```
104
- - **預計時間**:5 分鐘
105
-
106
- - [ ] **#8** 設定 Android 錄音權限
107
- - **檔案位置**:`mobile-android/android/app/src/main/AndroidManifest.xml`
108
- - **新增內容**:
109
- ```xml
110
- <uses-permission android:name="android.permission.RECORD_AUDIO" />
111
- ```
112
- - **預計時間**:5 分鐘
113
-
114
- ### 🧪 測試
115
-
116
- - [ ] **#9** 測試長時間錄音功能(>10 分鐘)
117
- - **測試項目**:
118
- - [ ] iOS 實機測試 10+ 分鐘錄音
119
- - [ ] Android 實機測試 10+ 分鐘錄音
120
- - [ ] 背景錄音測試(切換 App)
121
- - [ ] 轉錄功能是否正常
122
- - [ ] 檔案大小和格式
123
- - **預計時間**:1 小時
124
-
125
- ---
126
-
127
- ## 📱 階段 2:iOS 完善
128
-
129
- **目標**:補完 iOS 專案的缺失部分
130
- **預計時間**:半天
131
- **相依性**:階段 1 完成
132
-
133
- - [ ] **#10** 在 mobile-ios/ 安裝 Firebase Authentication plugin
134
- ```bash
135
- cd mobile-ios && npm install @capacitor-firebase/authentication
136
- ```
137
- - **檔案位置**:`mobile-ios/package.json`
138
- - **參考文件**:https://github.com/capawesome-team/capacitor-firebase
139
- - **預計時間**:10 分鐘
140
-
141
- - [ ] **#18** 設定 iOS 其他權限說明
142
- - **檔案位置**:`mobile-ios/ios/App/App/Info.plist`
143
- - **新增內容**:
144
- ```xml
145
- <key>NSCameraUsageDescription</key>
146
- <string>需要相機權限以拍攝照片並上傳</string>
147
-
148
- <key>NSPhotoLibraryUsageDescription</key>
149
- <string>需要相簿權限以選擇照片上傳</string>
150
-
151
- <key>NSPhotoLibraryAddUsageDescription</key>
152
- <string>需要權限以儲存照片到相簿</string>
153
- ```
154
- - **參考文件**:`mobile-ios/IOS-PERMISSIONS.md`
155
- - **預計時間**:10 分鐘
156
-
157
- - [ ] **#20** 測試 iOS 建置流程
158
- ```bash
159
- cd mobile-ios
160
- npm run build # 建置 web + 同步 + 開啟 Xcode
161
- ```
162
- - **測試項目**:
163
- - [ ] Next.js 靜態輸出正常
164
- - [ ] Capacitor sync 成功
165
- - [ ] Xcode 開啟無錯誤
166
- - [ ] 模擬器運行正常
167
- - [ ] 實機安裝成功
168
- - **預計時間**:30 分鐘
169
-
170
- ---
171
-
172
- ## 🤖 階段 3:Android 建立
173
-
174
- **目標**:建立完整的 Android 專案
175
- **預計時間**:2 天
176
- **相依性**:階段 1 完成(可平行進行)
177
-
178
- ### 📁 專案結構
179
-
180
- - [ ] **#11** 建立 mobile-android/ 目錄結構和基本配置
181
- - **建立檔案**:
182
- - [ ] `mobile-android/capacitor.config.ts`(參考 iOS 版本)
183
- - [ ] `mobile-android/package.json`
184
- - [ ] `mobile-android/tsconfig.json`
185
- - [ ] `mobile-android/.gitignore`
186
- - **預計時間**:30 分鐘
187
-
188
- - [ ] **#12** 在 mobile-android/ 安裝 Android 相關依賴
189
- ```bash
190
- cd mobile-android
191
- npm install @capacitor/core @capacitor/android @capacitor/cli
192
- npm install @capacitor/app @capacitor/haptics @capacitor/keyboard @capacitor/status-bar
193
- npm install @capacitor-firebase/authentication
194
- npm install @capawesome/capacitor-audio-recorder
195
- ```
196
- - **預計時間**:10 分鐘
197
-
198
- ### 🔥 Firebase 設定
199
-
200
- - [ ] **#13** 建立 Android Firebase 設定模板
201
- - **建立檔案**:`mobile-android/google-services.json.template`
202
- - **參考**:Firebase Console → Android App → 下載 `google-services.json`
203
- - **Bundle ID**:`com.botrun.agent`(需與 iOS 一致)
204
- - **預計時間**:15 分鐘
205
-
206
- ### 📜 文件與腳本
207
-
208
- - [ ] **#14** 建立 Android 設定腳本
209
- - **建立檔案**:`mobile-android/setup-android.sh`(參考 `mobile-ios/setup-ios.sh`)
210
- - **功能**:
211
- - [ ] 檢查環境(Node.js, Android Studio, JDK)
212
- - [ ] 安裝相依套件
213
- - [ ] 建置 Next.js Web
214
- - [ ] 初始化 Android 專案(`npx cap add android`)
215
- - [ ] 同步 Web 內容
216
- - [ ] 複製 Firebase 設定
217
- - **預計時間**:1 小時
218
-
219
- - [ ] **#15** 建立 Android 文件
220
- - **建立檔案**:
221
- - [ ] `mobile-android/README.md`
222
- - [ ] `mobile-android/QUICK-START.md`
223
- - [ ] `mobile-android/ANDROID-PERMISSIONS.md`
224
- - **參考**:`mobile-ios/` 對應檔案
225
- - **預計時間**:1 小時
226
-
227
- ### 🔐 權限設定
228
-
229
- - [ ] **#19** 設定 Android 其他權限
230
- - **檔案位置**:`mobile-android/android/app/src/main/AndroidManifest.xml`
231
- - **新增內容**:
232
- ```xml
233
- <uses-permission android:name="android.permission.CAMERA" />
234
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
235
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
236
- <uses-permission android:name="android.permission.INTERNET" />
237
- ```
238
- - **預計時間**:10 分鐘
239
-
240
- ### 🧪 測試
241
-
242
- - [ ] **#21** 測試 Android 建置流程
243
- ```bash
244
- cd mobile-android
245
- npm run build
246
- npx cap open android
247
- ```
248
- - **測試項目**:
249
- - [ ] Next.js 靜態輸出正常
250
- - [ ] Capacitor sync 成功
251
- - [ ] Android Studio 開啟無錯誤
252
- - [ ] 模擬器運行正常
253
- - [ ] 實機安裝成功
254
- - **預計時間**:30 分鐘
255
-
256
- ---
257
-
258
- ## 🎨 階段 4:資源與優化
259
-
260
- **目標**:準備 App 發布資源
261
- **預計時間**:1 天
262
- **相依性**:階段 2, 3 完成
263
-
264
- - [ ] **#16** 評估並安裝額外需要的 Capacitor plugins
265
- - **評估清單**:
266
- - [ ] **@capacitor/filesystem** - 檔案讀寫(轉錄檔案、PDF 處理)
267
- - [ ] **@capacitor/camera** - 拍照功能
268
- - [ ] **@capacitor/network** - 網路狀態檢測(離線提示)
269
- - [ ] **@capacitor/share** - 分享功能
270
- - [ ] **@capacitor/app-launcher** - 開啟外部 App(如 PDF 閱讀器)
271
- - **決策**:根據實際需求選擇安裝
272
- - **預計時間**:1 小時
273
-
274
- - [ ] **#17** 準備 App Icon 和 Splash Screen 圖片資源
275
- - **需求**:
276
- - [ ] App Icon(iOS: 1024x1024, Android: 多尺寸)
277
- - [ ] Splash Screen(iOS: 多尺寸, Android: 多尺寸)
278
- - **工具**:
279
- - Figma / Sketch 設計
280
- - Capacitor Assets 自動生成:`npx @capacitor/assets generate`
281
- - **檔案位置**:
282
- - `mobile-ios/resources/icon.png`
283
- - `mobile-ios/resources/splash.png`
284
- - `mobile-android/resources/icon.png`
285
- - `mobile-android/resources/splash.png`
286
- - **參考文件**:https://capacitorjs.com/docs/guides/splash-screens-and-icons
287
- - **預計時間**:2 小時
288
-
289
- ---
290
-
291
- ## 🚀 階段 5:測試與部署
292
-
293
- **目標**:驗證所有功能並建立統一部署流程
294
- **預計時間**:半天
295
- **相依性**:所有階段完成
296
-
297
- - [ ] **#22** 建立統一的部署腳本
298
- - **建立檔案**:`scripts/build-mobile-apps.sh`
299
- - **功能**:
300
- - [ ] 建置 Next.js web (static export)
301
- - [ ] 同步到 iOS (`cd mobile-ios && npm run sync`)
302
- - [ ] 同步到 Android (`cd mobile-android && npm run sync`)
303
- - [ ] 可選參數:`--ios-only`, `--android-only`, `--open-xcode`, `--open-android-studio`
304
- - **範例**:
305
- ```bash
306
- ./scripts/build-mobile-apps.sh --ios-only --open-xcode
307
- ```
308
- - **預計時間**:1 小時
309
-
310
- - [ ] **最終測試清單**
311
- - **iOS**:
312
- - [ ] Gmail 登入正常
313
- - [ ] 長時間錄音(>10 分鐘)正常
314
- - [ ] 檔案上傳正常
315
- - [ ] 轉錄功能正常
316
- - [ ] 離線行為正常(顯示錯誤提示)
317
- - **Android**:
318
- - [ ] Gmail 登入正常
319
- - [ ] 長時間錄音(>10 分鐘)正常
320
- - [ ] 檔案上傳正常
321
- - [ ] 轉錄功能正常
322
- - [ ] 離線行為正常(顯示錯誤提示)
323
-
324
- ---
325
-
326
- ## 📚 參考文件
327
-
328
- ### Capacitor
329
- - [Capacitor 官方文件](https://capacitorjs.com/docs)
330
- - [Capacitor CLI](https://capacitorjs.com/docs/cli)
331
- - [Capacitor Plugins](https://capacitorjs.com/docs/plugins)
332
-
333
- ### Capawesome Audio Recorder
334
- - [官方文件](https://capawesome.io/plugins/audio-recorder/)
335
- - [Getting Started](https://capawesome.io/plugins/audio-recorder/getting-started/)
336
- - [API Reference](https://capawesome.io/plugins/audio-recorder/api/)
337
-
338
- ### Firebase
339
- - [Firebase iOS Setup](https://firebase.google.com/docs/ios/setup)
340
- - [Firebase Android Setup](https://firebase.google.com/docs/android/setup)
341
- - [Capacitor Firebase Plugin](https://github.com/capawesome-team/capacitor-firebase)
342
-
343
- ### 平台特定
344
- - [iOS Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/)
345
- - [Android Material Design](https://m3.material.io/)
346
-
347
- ---
348
-
349
- ## 🐛 已知問題與風險
350
-
351
- ### 高風險
352
- 1. ✅ **長時間錄音穩定性**(已透過 Capawesome Audio Recorder 解決)
353
- 2. ✅ **檔案上傳在 native 的路徑處理**(已完成 Filesystem plugin 整合)
354
- 3. **Firebase Auth 在 native 環境的行為差異**(需測試)
355
-
356
- ### 中風險
357
- 1. **iOS App Store 審核要求**(權限說明必須清楚)
358
- 2. **Android 多裝置相容性**(需測試多個 Android 版本)
359
- 3. **Capacitor plugin 版本衝突**(需統一版本)
360
-
361
- ### 低風險
362
- 1. **App Icon / Splash Screen 尺寸生成**(工具自動處理)
363
- 2. **打包簽章設定**(後續處理)
364
-
365
- ---
366
-
367
- ## 📝 開發筆記
368
-
369
- ### 重要決策
370
-
371
- #### 2025-11-06 - 14:00
372
- - **決策**:使用 Capawesome Audio Recorder 取代 MediaRecorder
373
- - **原因**:解決長時間錄音不穩定問題
374
- - **取得 license key**:已完成
375
-
376
- #### 2025-11-06 - 14:30
377
- - **決策**:Capawesome Audio Recorder 本身支援跨平台
378
- - **原因**:官方文件說明 "Cross-platform: Supports Android, iOS and Web"
379
- - **影響**:不需要手動區分環境或使用 fallback,統一使用 AudioRecorder API
380
- - **實作**:Web 返回 `blob`,Native 返回 `uri`(需要 Filesystem plugin 讀取)
381
-
382
- #### 2025-11-06 - 17:00
383
- - **決策**:完成 Native 平台檔案讀取邏輯實作
384
- - **實作內容**:
385
- - 加入 `@capacitor/filesystem` 依賴
386
- - 實作 `base64ToBlob()` helper function
387
- - 使用 `Filesystem.readFile()` 讀取 Native 錄音檔案
388
- - 支援多種音訊格式(webm, mp4, aac)
389
- - **驗證**:後端 API 已支援所有音訊格式
390
- - **下一步**:設定 iOS/Android 權限並實機測試
391
-
392
- #### 待決策
393
- - [x] 是否需要 Filesystem plugin?(**✅ 已完成**,用於讀取 Native 平台的 `uri`)
394
- - [ ] 是否需要 Camera plugin?(目前只有檔案上傳,未來可能需要)
395
- - [ ] App Icon 設計風格?(需與 web 版一致)
396
-
397
- ---
398
-
399
- ## 📱 Android 測試準備(當前階段)
400
-
401
- ### 前置需求
402
- 1. ✅ Web 平台錄音功能已測試通過
403
- 2. ✅ Native 檔案讀取邏輯已完成(TODO #6)
404
- 3. ⏳ 需要設定 iOS 錄音權限(TODO #7)
405
- 4. ⏳ 需要設定 Android 錄音權限(TODO #8)
406
-
407
- ### 測試環境檢查
408
- ```bash
409
- # 1. 檢查 mobile-android 是否存在
410
- ls -la mobile-android/
411
-
412
- # 2. 如果不存在,需要先建立(參考階段 3)
413
- # 3. 檢查 Node.js 和 Android Studio 環境
414
- node --version
415
- echo $ANDROID_HOME
416
- ```
417
-
418
- ### 快速測試步驟
419
- 1. **安裝依賴**(如果 mobile-android 已存在)
420
- ```bash
421
- cd mobile-android
422
- npm install
423
- npm install @capawesome-team/capacitor-audio-recorder
424
- npm install @capacitor/filesystem
425
- ```
426
-
427
- 2. **同步 Web 內容**
428
- ```bash
429
- cd ../web
430
- npm run build
431
- cd ../mobile-android
432
- npx cap sync
433
- ```
434
-
435
- 3. **開啟 Android Studio**
436
- ```bash
437
- npx cap open android
438
- ```
439
-
440
- 4. **測試項目**
441
- - [ ] 錄音權限請求是否正常
442
- - [ ] 開始錄音功能
443
- - [ ] 停止錄音功能
444
- - [ ] 錄音檔案是否正確儲存
445
- - [ ] 轉錄功能是否正常(需要先完成 TODO #6)
446
-
447
- ### 已知問題
448
- - ✅ **Native 平台檔案讀取已完成**:已實作 Filesystem plugin 讀取 uri 邏輯
449
- - ⚠️ **權限設定尚未完成**:需要在 Info.plist (iOS) 和 AndroidManifest.xml (Android) 加入錄音權限
450
- - ⚠️ **尚未實機測試**:Native 平台功能需要在真實裝置上測試驗證
451
-
452
- ---
453
-
454
- ## ✅ 完成標記
455
-
456
- 完成每個 TODO 後,請:
457
- 1. 勾選對應的 checkbox
458
- 2. 更新「整體進度」統計
459
- 3. 記錄完成時間和遇到的問題
460
- 4. Commit 變更並註明 TODO 編號
461
-
462
- **範例 commit message**:
463
- ```
464
- ✅ TODO #6: 實作 Native 平台檔案讀取與轉錄邏輯
465
-
466
- - 安裝 @capacitor/filesystem 依賴
467
- - 實作 base64ToBlob() helper function
468
- - 使用 Filesystem.readFile() 讀取 Native 錄音檔案
469
- - 支援多種音訊格式(webm, mp4, aac)
470
- - 驗證後端 API 相容性
471
-
472
- Changes:
473
- - web/components/chat-input.tsx (新增 import、helper function、Native 檔案讀取邏輯)
474
- - web/package.json (新增依賴)
475
-
476
- Time: 1 hour
477
- ```
478
-
479
- ---
480
-
481
- **最後更新**:2025-11-06 17:00
482
- **下次 Review**:完成權限設定並實機測試後
@@ -1,121 +0,0 @@
1
- # 上傳路徑統一修正 - 驗證報告
2
-
3
- ## 📋 修正內容
4
-
5
- ### 問題
6
- 本地開發與生產環境的檔案路徑結構不一致,導致 Claude 無法正確找到上傳的檔案。
7
-
8
- ### 修正
9
- 1. **後端** (`api/src/routes/upload.ts:50`):統一本地開發也使用 `uploads/` 子目錄
10
- 2. **前端** (`web/components/chat-input.tsx:358-392`):統一路徑轉換邏輯
11
-
12
- ## ✅ 驗證結果
13
-
14
- ### 測試時間
15
- 2025-11-11 13:59
16
-
17
- ### 測試環境
18
- - 環境:sh/server.sh (本地開發)
19
- - API URL: http://localhost:8080
20
- - 工作目錄:`./api/data/test-user/projects/default/`
21
-
22
- ### 測試步驟與結果
23
-
24
- #### 1. 檔案上傳測試 ✅
25
- ```bash
26
- curl -X POST "http://localhost:8080/api/upload/direct" \
27
- -H "Authorization: Bearer dummy-token" \
28
- -F "file=@/Users/40gpu/Downloads/IMG_9165.PNG"
29
- ```
30
-
31
- **結果**:
32
- - ✅ 上傳成功
33
- - ✅ 檔案儲存位置:`./api/data/test-user/projects/default/uploads/IMG_9165.PNG`
34
- - ✅ API 回傳 `displayPath`: `IMG_9165.PNG`
35
-
36
- **驗證**:
37
- ```bash
38
- $ ls -la ./api/data/test-user/projects/default/uploads/
39
- -rw-r--r-- 1 40gpu staff 817948 11 11 13:59 IMG_9165.PNG
40
- -rw-r--r-- 1 40gpu staff 489429 11 11 13:52 IMG_9166.PNG
41
- ```
42
-
43
- #### 2. 前端路徑轉換測試 ✅
44
- **前端接收**:`displayPath = "IMG_9165.PNG"`
45
-
46
- **轉換後**:`uploads/IMG_9165.PNG`
47
-
48
- **邏輯**:
49
- - 如果是純檔名(不含 `/`)→ 加上 `uploads/` 前綴
50
- - 如果是 GCS URL (`gs://...`) → 提取相對路徑
51
-
52
- #### 3. Chat API 多模態閱讀測試 ✅
53
- **使用者訊息**:
54
- ```
55
- 📄 IMG_9165.PNG - uploads/IMG_9165.PNG
56
-
57
- 請幫我多模態解析這張圖片的內容
58
- ```
59
-
60
- **Claude 工具呼叫**:
61
- ```json
62
- {
63
- "toolName": "mcp__botrun-multimodal-reader__read_multimodal",
64
- "toolInput": {
65
- "filePaths": "uploads/IMG_9165.PNG",
66
- "prompt": "請詳細分析這張圖片的所有視覺元素..."
67
- }
68
- }
69
- ```
70
-
71
- **結果**:
72
- - ✅ Claude 正確識別檔案路徑為 `uploads/IMG_9165.PNG`
73
- - ✅ 工具呼叫格式正確
74
- - ✅ 路徑與實際檔案位置一致
75
-
76
- ## 📊 統一後的路徑結構
77
-
78
- ### 本地開發 (sh/server.sh)
79
- ```
80
- 工作目錄:./api/data/test-user/projects/default/
81
- 檔案位置:./api/data/test-user/projects/default/uploads/IMG_9165.PNG
82
- 相對路徑:uploads/IMG_9165.PNG ✅
83
- ```
84
-
85
- ### 生產環境 (sh/deploy-gcp.sh, Cloud Run)
86
- ```
87
- 工作目錄:/mnt/data/{userId}/projects/default/
88
- GCS 位置:gs://botrun-c/{userId}/projects/default/uploads/IMG_9165.PNG
89
- 相對路徑:uploads/IMG_9165.PNG ✅
90
- ```
91
-
92
- ## 🎯 結論
93
-
94
- ✅ **修正成功**:本地開發與生產環境的路徑結構現已完全統一
95
-
96
- ✅ **sh/server.sh 環境驗證通過**:
97
- - 上傳功能正常
98
- - 檔案儲存在正確位置
99
- - 前端路徑轉換正確
100
- - Claude 能正確呼叫 multimodal-reader
101
-
102
- ✅ **sh/deploy-gcp.sh 環境預期**:
103
- - 路徑結構與本地一致
104
- - 應能正常運作
105
-
106
- ## 📝 後續建議
107
-
108
- 1. **部署到 Cloud Run 後驗證**:
109
- - 上傳檔案
110
- - 確認檔案在 GCS 的 `uploads/` 子目錄下
111
- - 測試多模態閱讀功能
112
-
113
- 2. **更新相關文件**:
114
- - 更新地雷經驗文件,記錄此次路徑統一修正
115
- - 確保未來開發者知道本地與生產環境路徑結構一致
116
-
117
- ## 🔗 相關檔案
118
-
119
- - 後端修正:`api/src/routes/upload.ts`
120
- - 前端修正:`web/components/chat-input.tsx`
121
- - 測試腳本:`api/test-chat-upload.sh`