botrun-horse 2.31.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} +8 -8
  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 +7 -5
  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/html-report.md +15 -0
  45. package/{bin/commands/writing.mjs → modules/writing/command.mjs} +3 -3
  46. package/{lib → modules}/writing/generate.mjs +2 -2
  47. package/modules/writing/index.mjs +38 -0
  48. package/package.json +3 -1
  49. package/parallel-dag-todo-list/imagen-module.md +51 -0
  50. package/bin/commands/schema.mjs +0 -254
  51. package/botrun-c/.claude/skills/DOCX/351/226/261/350/256/200/346/212/200/350/203/275/SKILL.md +0 -103
  52. 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
  53. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/SKILL.md +0 -1093
  54. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-branch.mjs +0 -73
  55. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-branches.mjs +0 -77
  56. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-checkout.mjs +0 -72
  57. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-clone.mjs +0 -72
  58. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-commit.mjs +0 -75
  59. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-delete-branch.mjs +0 -75
  60. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-delete-file.mjs +0 -72
  61. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-diff.mjs +0 -80
  62. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-list-tree.mjs +0 -336
  63. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-list.mjs +0 -199
  64. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-merge.mjs +0 -86
  65. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-move.mjs +0 -75
  66. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-create.mjs +0 -81
  67. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-list.mjs +0 -74
  68. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-merge.mjs +0 -83
  69. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-view.mjs +0 -71
  70. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-push.mjs +0 -71
  71. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-read.mjs +0 -277
  72. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-search.mjs +0 -370
  73. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-stash.mjs +0 -116
  74. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-sync.mjs +0 -71
  75. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-write.mjs +0 -74
  76. package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/lib/path-validator.mjs +0 -167
  77. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/SKILL.md +0 -605
  78. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-create.mjs +0 -127
  79. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-delete.mjs +0 -77
  80. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-diff.mjs +0 -87
  81. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-history.mjs +0 -99
  82. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-list.mjs +0 -174
  83. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-read.mjs +0 -214
  84. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-restore.mjs +0 -75
  85. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-search.mjs +0 -270
  86. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-sync-back.mjs +0 -155
  87. package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-update.mjs +0 -100
  88. package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/SKILL.md +0 -414
  89. package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/scripts/create-project.mjs +0 -91
  90. package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/scripts/finalize-project.mjs +0 -162
  91. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/SKILL.md +0 -206
  92. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/package.json +0 -19
  93. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-analyze.mjs +0 -309
  94. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-compress.mjs +0 -315
  95. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-split.mjs +0 -275
  96. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-to-text.mjs +0 -336
  97. package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/test-pdf-scripts.mjs +0 -491
  98. package/botrun-c/.claude/skills/docx-to-markdown/SKILL.md +0 -76
  99. package/botrun-c/.claude/skills/docx-to-markdown/scripts/convert_docx.py +0 -183
  100. package/botrun-c/.claude/skills/gcp-coord-ml-ocr/SKILL.md +0 -133
  101. package/botrun-c/.claude/skills/gcp-coord-ml-ocr/scripts/ocr_processor.py +0 -381
  102. package/botrun-c/.claude/skills/gemini-transcribe/SKILL.md +0 -115
  103. package/botrun-c/.claude/skills/gemini-transcribe/scripts/transcribe.py +0 -499
  104. package/botrun-c/.claude/skills/nchc-transcribe/SKILL.md +0 -131
  105. package/botrun-c/.claude/skills/nchc-transcribe/scripts/transcribe.py +0 -522
  106. package/botrun-c/.claude/skills/p320-moj-review/SKILL.md +0 -200
  107. package/botrun-c/.claude/skills/p320-moj-review/references/guideline.md +0 -118
  108. package/botrun-c/.claude/skills/pdf-multimodal-processor/SKILL.md +0 -186
  109. package/botrun-c/.claude/skills/pdf-multimodal-processor/scripts/process_pdf.py +0 -515
  110. package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/SKILL.md +0 -81
  111. package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/scripts/package.json +0 -13
  112. package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/scripts/secure-search.mjs +0 -232
  113. 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
  114. package/botrun-c/.claude/skills//345/216/273/350/255/230/345/210/245/346/212/200/350/203/275/SKILL.md +0 -125
  115. package/botrun-c/.claude/skills//345/233/236/346/206/266/346/212/200/350/203/275/SKILL.md +0 -123
  116. package/botrun-c/.claude/skills//345/233/236/346/206/266/346/212/200/350/203/275/scripts/recall.mjs +0 -339
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. 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
  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/image-session-manager.mjs +0 -219
  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/output-formatter.mjs +0 -209
  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/package.json +0 -20
  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/utils.mjs +0 -115
  127. 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
  128. 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
  129. 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
  130. package/botrun-c/.claude/skills//345/255/265/345/214/226/346/212/200/350/203/275/SKILL.md +0 -131
  131. package/botrun-c/.claude/skills//345/255/265/345/214/226/346/212/200/350/203/275/scripts/skill-manager.mjs +0 -542
  132. 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
  133. 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
  134. 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
  135. 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
  136. 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
  137. 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
  138. 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
  139. 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
  140. 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
  141. 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
  142. 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
  143. 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
  144. package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/SKILL.md +0 -114
  145. package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/remember.mjs +0 -159
  146. package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/test-advanced.mjs +0 -342
  147. package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/test.mjs +0 -430
  148. 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
  149. 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
  150. 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
  151. 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
  152. package/botrun-c/.dockerignore +0 -131
  153. package/botrun-c/.dockeroptimize +0 -13
  154. package/botrun-c/.firebase/hosting.b3V0.cache +0 -30
  155. package/botrun-c/.firebaserc +0 -5
  156. package/botrun-c/.gcloudignore +0 -56
  157. package/botrun-c/.ruby-version +0 -1
  158. package/botrun-c/CHANGELOG.md +0 -224
  159. package/botrun-c/Dockerfile.gcp +0 -365
  160. package/botrun-c/Dockerfile.slim +0 -195
  161. package/botrun-c/Gemfile +0 -8
  162. package/botrun-c/Gemfile.lock +0 -233
  163. package/botrun-c/LOCAL-DEVELOPMENT-GUIDE.md +0 -393
  164. package/botrun-c/PLAN.md +0 -131
  165. package/botrun-c/README.md +0 -129
  166. package/botrun-c/TODO-CAPACITOR-INTEGRATION.md +0 -482
  167. package/botrun-c/VERIFICATION.md +0 -121
  168. package/botrun-c/admin/RATE_LIMIT_MANAGEMENT.md +0 -312
  169. package/botrun-c/admin/README.md +0 -338
  170. package/botrun-c/admin/botrun-billing-report-1765235244038.csv +0 -22
  171. package/botrun-c/admin/botrun-billing-report-1765235323089.csv +0 -22
  172. package/botrun-c/admin/botrun-dashboard-1765235244039.html +0 -278
  173. package/botrun-c/admin/botrun-dashboard-1765235323089.html +0 -278
  174. package/botrun-c/admin/botrun-timeseries-074xGzIKWyfKTBt1NMIj9lxi5mO2-1765235244039.html +0 -161
  175. package/botrun-c/admin/botrun-timeseries-074xGzIKWyfKTBt1NMIj9lxi5mO2-1765235323090.html +0 -161
  176. package/botrun-c/admin/check-billing.ts +0 -48
  177. package/botrun-c/admin/count-all-users.ts +0 -65
  178. package/botrun-c/admin/generate-analytics-report.ts +0 -188
  179. package/botrun-c/admin/jest.config.ts +0 -43
  180. package/botrun-c/admin/lib/__tests__/formatters.test.ts +0 -264
  181. package/botrun-c/admin/lib/__tests__/mocks/firebase.mock.ts +0 -112
  182. package/botrun-c/admin/lib/__tests__/services/UserService.test.ts +0 -83
  183. package/botrun-c/admin/lib/__tests__/user-resolver.test.ts +0 -439
  184. package/botrun-c/admin/lib/analyzers/BillingAnalyticsService.ts +0 -242
  185. package/botrun-c/admin/lib/analyzers/CsvExporter.ts +0 -263
  186. package/botrun-c/admin/lib/analyzers/HtmlChartGenerator.ts +0 -530
  187. package/botrun-c/admin/lib/analyzers/SpikeAnalyzer.ts +0 -608
  188. package/botrun-c/admin/lib/analyzers/TimeSeriesAnalyzer.ts +0 -344
  189. package/botrun-c/admin/lib/cli/CLIBootstrapper.ts +0 -40
  190. package/botrun-c/admin/lib/commands/AbstractCommand.ts +0 -69
  191. package/botrun-c/admin/lib/commands/AnalyticsCommand.ts +0 -215
  192. package/botrun-c/admin/lib/commands/ListCommand.ts +0 -85
  193. package/botrun-c/admin/lib/commands/QueryCommand.ts +0 -81
  194. package/botrun-c/admin/lib/commands/SpikeCommand.ts +0 -83
  195. package/botrun-c/admin/lib/domain/User.ts +0 -38
  196. package/botrun-c/admin/lib/firebase.ts +0 -92
  197. package/botrun-c/admin/lib/firestore-safe.ts +0 -105
  198. package/botrun-c/admin/lib/formatters.ts +0 -154
  199. package/botrun-c/admin/lib/rate-limit-detailed.ts +0 -355
  200. package/botrun-c/admin/lib/rate-limit.ts +0 -286
  201. package/botrun-c/admin/lib/repositories/UserRepository.ts +0 -104
  202. package/botrun-c/admin/lib/services/UserService.ts +0 -108
  203. package/botrun-c/admin/lib/types.ts +0 -56
  204. package/botrun-c/admin/lib/user-resolver.ts +0 -275
  205. package/botrun-c/admin/manage-auth-domains.js +0 -178
  206. package/botrun-c/admin/migrate-plan-free.sh +0 -64
  207. package/botrun-c/admin/package-lock.json +0 -5656
  208. package/botrun-c/admin/package.json +0 -28
  209. package/botrun-c/admin/rate-limit.sh +0 -55
  210. package/botrun-c/admin/remove-custom-limits.ts +0 -75
  211. package/botrun-c/admin/reset-rate.sh +0 -70
  212. package/botrun-c/admin/reset-trial.sh +0 -68
  213. package/botrun-c/admin/seed-trial-data.sh +0 -38
  214. package/botrun-c/admin/trial.sh +0 -55
  215. package/botrun-c/admin/tsconfig.json +0 -20
  216. package/botrun-c/admin/users-cli.py +0 -298
  217. package/botrun-c/admin/users.sh +0 -12
  218. package/botrun-c/admin/users.ts +0 -1321
  219. package/botrun-c/api/admin-tools/check-whitelist.mjs.migration-bak +0 -74
  220. package/botrun-c/api/admin-tools/create-user.mjs +0 -92
  221. package/botrun-c/api/admin-tools/create-user.mjs.migration-bak +0 -92
  222. package/botrun-c/api/admin-tools/firebase-auth-domains-v2.py +0 -287
  223. package/botrun-c/api/admin-tools/firebase-auth-domains-v2.py.migration-bak +0 -287
  224. package/botrun-c/api/admin-tools/init-firestore.mjs +0 -75
  225. package/botrun-c/api/admin-tools/init-firestore.mjs.migration-bak +0 -101
  226. package/botrun-c/api/admin-tools/list-users.mjs +0 -43
  227. package/botrun-c/api/admin-tools/list-users.mjs.migration-bak +0 -43
  228. package/botrun-c/api/admin-tools/manage-authorized-domains.ts +0 -255
  229. package/botrun-c/api/admin-tools/manage-authorized-domains.ts.migration-bak +0 -255
  230. package/botrun-c/api/admin-tools/setup-custom-claims.ts.migration-bak +0 -155
  231. package/botrun-c/api/admin-tools/test-claims.mjs +0 -69
  232. package/botrun-c/api/admin-tools/test-claims.mjs.migration-bak +0 -69
  233. package/botrun-c/api/admin-tools/update-service-urls-gcloud.mjs +0 -72
  234. package/botrun-c/api/admin-tools/update-service-urls-gcloud.mjs.migration-bak +0 -72
  235. package/botrun-c/api/admin-tools/update-service-urls-to-lb.mjs +0 -159
  236. package/botrun-c/api/admin-tools/update-service-urls-to-lb.mjs.migration-bak +0 -159
  237. package/botrun-c/api/admin-tools/update-service-urls.mjs +0 -82
  238. package/botrun-c/api/admin-tools/update-service-urls.mjs.migration-bak +0 -82
  239. package/botrun-c/api/package-lock.json +0 -5031
  240. package/botrun-c/api/package.json +0 -63
  241. package/botrun-c/api/pnpm-lock.yaml +0 -4157
  242. package/botrun-c/api/rate-limit-export-1763620678737.csv +0 -79
  243. package/botrun-c/api/scripts/README-migrate-plan-free.md +0 -197
  244. package/botrun-c/api/scripts/check-users.ts +0 -45
  245. package/botrun-c/api/scripts/delete-firestore-docs.js +0 -43
  246. package/botrun-c/api/scripts/dump-subscriptions.ts +0 -395
  247. package/botrun-c/api/scripts/list-all-users.ts +0 -65
  248. package/botrun-c/api/scripts/migrate-plan-free-rpd-16to32.ts +0 -262
  249. package/botrun-c/api/scripts/migrate-plan-names-to-lite-max.ts +0 -269
  250. package/botrun-c/api/scripts/query-user-info.ts +0 -304
  251. package/botrun-c/api/scripts/reset-rate-limit.ts +0 -206
  252. package/botrun-c/api/scripts/reset-trial-subscription.ts +0 -166
  253. package/botrun-c/api/scripts/rollback-plan-names-from-lite-max.ts +0 -139
  254. package/botrun-c/api/scripts/seed-rate-limit-test-data.ts +0 -114
  255. package/botrun-c/api/scripts/seed-subscription-test-data.ts +0 -173
  256. package/botrun-c/api/scripts/test-rate-limit-message.ts +0 -108
  257. package/botrun-c/api/test-billing-write.ts +0 -103
  258. package/botrun-c/api/test-billing.ts +0 -81
  259. package/botrun-c/api/test-chat-upload.sh +0 -162
  260. package/botrun-c/api/test-nchc-whisper.ts +0 -87
  261. package/botrun-c/api/test-skills-loading.js +0 -77
  262. package/botrun-c/api/test-skills-symlink.js +0 -118
  263. package/botrun-c/api/test-upload-multimodal.sh +0 -167
  264. package/botrun-c/api/tsconfig.json +0 -27
  265. package/botrun-c/api/verify-form-2-1.mjs +0 -229
  266. package/botrun-c/api/vitest.config.ts +0 -9
  267. package/botrun-c/appium-capabilities.json +0 -20
  268. package/botrun-c/cors.json +0 -26
  269. package/botrun-c/delete-old.sh +0 -44
  270. package/botrun-c/design/google-drive/01-architecture.md +0 -186
  271. package/botrun-c/design/google-drive/02-api-design.md +0 -314
  272. package/botrun-c/design/google-drive/03-frontend-design.md +0 -278
  273. package/botrun-c/design/google-drive/04-skill-design.md +0 -384
  274. package/botrun-c/design/google-drive/05-test-plan.md +0 -507
  275. package/botrun-c/design/google-drive/README.md +0 -32
  276. package/botrun-c/dev/mcp-token-calculator/README.md +0 -92
  277. package/botrun-c/dev/mcp-token-calculator/RESULTS.md +0 -188
  278. package/botrun-c/dev/mcp-token-calculator/calculate-current-tokens.ts +0 -369
  279. package/botrun-c/dev/mcp-token-calculator/calculate-mcp-tokens.ts +0 -464
  280. package/botrun-c/dev/mcp-token-calculator/optimization-proposals.ts +0 -316
  281. package/botrun-c/dev/mcp-token-calculator/package-lock.json +0 -599
  282. package/botrun-c/dev/mcp-token-calculator/package.json +0 -22
  283. package/botrun-c/dev/mcp-token-calculator/test-all-schemas.ts +0 -314
  284. package/botrun-c/dev/mcp-token-calculator/test-schema-correctness.ts +0 -221
  285. package/botrun-c/dev/mcp-token-calculator/verify-optimization.ts +0 -159
  286. package/botrun-c/fastlane/ANDROID-DEPLOYMENT-SETUP.md +0 -825
  287. package/botrun-c/fastlane/IOS-DEPLOYMENT-SETUP.md +0 -431
  288. package/botrun-c/fastlane/Pluginfile +0 -5
  289. package/botrun-c/fastlane/QUICK-START.md +0 -133
  290. package/botrun-c/fastlane/README.md +0 -424
  291. package/botrun-c/fastlane/RUBY-SETUP.md +0 -449
  292. package/botrun-c/fastlane/android/Appfile +0 -11
  293. package/botrun-c/fastlane/android/Fastfile +0 -240
  294. package/botrun-c/firebase.json +0 -46
  295. package/botrun-c/firestore-init-data.json +0 -40
  296. package/botrun-c/firestore.indexes.json +0 -55
  297. package/botrun-c/firestore.rules +0 -53
  298. package/botrun-c/fix-codex-permissions.sh +0 -56
  299. package/botrun-c/gcs-lifecycle-30day-retention.json +0 -12
  300. package/botrun-c/html-architecture/architecture/deployment.html +0 -664
  301. package/botrun-c/html-architecture/architecture/index.html +0 -309
  302. package/botrun-c/html-architecture/architecture/styles.css +0 -500
  303. package/botrun-c/html-architecture/architecture/system-components.html +0 -538
  304. package/botrun-c/html-architecture/architecture/user-flow.html +0 -370
  305. package/botrun-c/mobile-android/FIREBASE-AUTH-SETUP.md +0 -302
  306. package/botrun-c/mobile-android/WSL-ANDROID-SETUP.md +0 -252
  307. package/botrun-c/mobile-android/android/app/build.gradle +0 -75
  308. package/botrun-c/mobile-android/android/app/capacitor.build.gradle +0 -31
  309. package/botrun-c/mobile-android/android/app/proguard-rules.pro +0 -21
  310. package/botrun-c/mobile-android/android/build.gradle +0 -29
  311. package/botrun-c/mobile-android/android/capacitor.settings.gradle +0 -42
  312. package/botrun-c/mobile-android/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  313. package/botrun-c/mobile-android/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  314. package/botrun-c/mobile-android/android/gradle.properties +0 -22
  315. package/botrun-c/mobile-android/android/gradlew +0 -252
  316. package/botrun-c/mobile-android/android/gradlew.bat +0 -94
  317. package/botrun-c/mobile-android/android/settings.gradle +0 -5
  318. package/botrun-c/mobile-android/android/variables.gradle +0 -16
  319. package/botrun-c/mobile-android/capacitor.config.ts +0 -44
  320. package/botrun-c/mobile-android/fastlane/Appfile +0 -11
  321. package/botrun-c/mobile-android/fastlane/Fastfile +0 -202
  322. package/botrun-c/mobile-android/fastlane/README.md +0 -96
  323. package/botrun-c/mobile-android/google-services.json.template +0 -39
  324. package/botrun-c/mobile-android/package.json +0 -32
  325. package/botrun-c/mobile-android/resources/icon.png +0 -0
  326. package/botrun-c/mobile-android/tsconfig.json +0 -15
  327. package/botrun-c/mobile-ios/.ruby-version +0 -1
  328. package/botrun-c/mobile-ios/BUILD-LOG.md +0 -82
  329. package/botrun-c/mobile-ios/Gemfile +0 -4
  330. package/botrun-c/mobile-ios/Gemfile.lock +0 -299
  331. package/botrun-c/mobile-ios/GoogleService-Info.plist.template +0 -34
  332. package/botrun-c/mobile-ios/IOS-PERMISSIONS.md +0 -80
  333. package/botrun-c/mobile-ios/QUICK-START.md +0 -189
  334. package/botrun-c/mobile-ios/README.md +0 -231
  335. package/botrun-c/mobile-ios/capacitor.config.ts +0 -46
  336. package/botrun-c/mobile-ios/fastlane/Fastfile +0 -326
  337. package/botrun-c/mobile-ios/fastlane/README.md +0 -88
  338. package/botrun-c/mobile-ios/ios/App/App/App.entitlements +0 -10
  339. package/botrun-c/mobile-ios/ios/App/App/AppDelegate.swift +0 -49
  340. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png +0 -0
  341. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  342. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Contents.json +0 -6
  343. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +0 -56
  344. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png +0 -0
  345. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png +0 -0
  346. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png +0 -0
  347. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png +0 -0
  348. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png +0 -0
  349. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png +0 -0
  350. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  351. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  352. package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  353. package/botrun-c/mobile-ios/ios/App/App/Base.lproj/LaunchScreen.storyboard +0 -32
  354. package/botrun-c/mobile-ios/ios/App/App/Base.lproj/Main.storyboard +0 -19
  355. package/botrun-c/mobile-ios/ios/App/App/Info.plist +0 -72
  356. package/botrun-c/mobile-ios/ios/App/App.xcodeproj/project.pbxproj +0 -446
  357. package/botrun-c/mobile-ios/ios/App/App.xcodeproj/xcshareddata/xcschemes/App.xcscheme +0 -78
  358. package/botrun-c/mobile-ios/ios/App/App.xcworkspace/contents.xcworkspacedata +0 -10
  359. package/botrun-c/mobile-ios/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  360. package/botrun-c/mobile-ios/ios/App/Podfile +0 -52
  361. package/botrun-c/mobile-ios/ios/App/Podfile.lock +0 -205
  362. package/botrun-c/mobile-ios/ios/App/add_plist.rb +0 -30
  363. package/botrun-c/mobile-ios/ios/App/fix_plist_path.rb +0 -22
  364. package/botrun-c/mobile-ios/package.json +0 -29
  365. package/botrun-c/mobile-ios/resources/icon.png +0 -0
  366. package/botrun-c/mobile-ios/run-simulator.sh +0 -34
  367. package/botrun-c/mobile-ios/screenshot-after-clean-rebuild.png +0 -0
  368. package/botrun-c/mobile-ios/screenshot-final-version.png +0 -0
  369. package/botrun-c/mobile-ios/screenshot-simulator.png +0 -0
  370. package/botrun-c/mobile-ios/screenshot-version-1009.png +0 -0
  371. package/botrun-c/mobile-ios/screenshot-with-version.png +0 -0
  372. package/botrun-c/mobile-ios/screenshot-working.png +0 -0
  373. package/botrun-c/mobile-ios/setup-ios.sh +0 -106
  374. package/botrun-c/mobile-ios/tsconfig.json +0 -16
  375. package/botrun-c/org-policy-allow-all-users.yaml +0 -3
  376. package/botrun-c/package.json +0 -68
  377. package/botrun-c/pnpm-lock.yaml +0 -10198
  378. package/botrun-c/pnpm-workspace.yaml +0 -6
  379. package/botrun-c/prompts/BOTRUN-1.md +0 -13
  380. package/botrun-c/prompts/BOTRUN-2.md +0 -70
  381. package/botrun-c/prompts/BOTRUN-3.md +0 -139
  382. package/botrun-c/prototypes/firestore-gax-debug/package-lock.json +0 -1204
  383. package/botrun-c/prototypes/firestore-gax-debug/package.json +0 -12
  384. package/botrun-c/prototypes/firestore-gax-debug/pnpm-workspace.yaml +0 -2
  385. package/botrun-c/prototypes/firestore-gax-debug/test.js +0 -98
  386. package/botrun-c/prototypes/taiwan-haiku/README.md +0 -93
  387. package/botrun-c/prototypes/taiwan-haiku/index.ts +0 -139
  388. package/botrun-c/prototypes/taiwan-haiku/package.json +0 -23
  389. package/botrun-c/prototypes/taiwan-haiku/pnpm-lock.yaml +0 -730
  390. package/botrun-c/prototypes/taiwan-haiku/test-vertex-direct.ts +0 -83
  391. package/botrun-c/prototypes/taiwan-haiku/tsconfig.json +0 -18
  392. package/botrun-c/prototypes/web-search/FINDINGS-STAGE-1.md +0 -48
  393. package/botrun-c/prototypes/web-search/README.md +0 -46
  394. package/botrun-c/prototypes/web-search/VERIFICATION-REPORT.md +0 -310
  395. package/botrun-c/prototypes/web-search/package-lock.json +0 -595
  396. package/botrun-c/prototypes/web-search/package.json +0 -18
  397. package/botrun-c/prototypes/web-search/stage-1.1-basic-connection.js +0 -123
  398. package/botrun-c/prototypes/web-search/stage-1.2-with-websearch.js +0 -154
  399. package/botrun-c/prototypes/web-search/stage-1.3-search-query.js +0 -192
  400. package/botrun-c/prototypes/web-search/stage-2-agent-sdk-websearch.js +0 -265
  401. package/botrun-c/runtime-scripts/env-detect.sh +0 -64
  402. package/botrun-c/scripts/github-collaborator-manager.sh +0 -297
  403. package/botrun-c/scripts/github-collaborator-manager.ts +0 -325
  404. package/botrun-c/scripts/manage-collaborators.sh +0 -91
  405. package/botrun-c/scripts/setup-secrets.sh +0 -202
  406. package/botrun-c/scripts/stress-test-17-users.sh +0 -113
  407. package/botrun-c/scripts/stress-test-api.sh +0 -119
  408. package/botrun-c/scripts/stress-test-full-report.sh +0 -385
  409. package/botrun-c/specs/infra-vm/design.md +0 -0
  410. package/botrun-c/specs/share-skill/design.md +0 -1146
  411. package/botrun-c/specs/share-skill/tasks.md +0 -444
  412. package/botrun-c/stress-test-results/20260121-162630/config.json +0 -7
  413. package/botrun-c/stress-test-results/20260121-162630/user-1-status.txt +0 -1
  414. package/botrun-c/stress-test-results/20260121-162630/user-1-timing.txt +0 -1
  415. package/botrun-c/stress-test-results/20260121-162630/user-1.json +0 -2
  416. package/botrun-c/stress-test-results/20260121-162646/config.json +0 -7
  417. package/botrun-c/stress-test-results/20260121-162646/user-1-status.txt +0 -1
  418. package/botrun-c/stress-test-results/20260121-162646/user-1-timing.txt +0 -1
  419. package/botrun-c/stress-test-results/20260121-162646/user-1.json +0 -2
  420. package/botrun-c/stress-test-results/20260121-162646/user-10-status.txt +0 -1
  421. package/botrun-c/stress-test-results/20260121-162646/user-10-timing.txt +0 -1
  422. package/botrun-c/stress-test-results/20260121-162646/user-10.json +0 -2
  423. package/botrun-c/stress-test-results/20260121-162646/user-11-status.txt +0 -1
  424. package/botrun-c/stress-test-results/20260121-162646/user-11-timing.txt +0 -1
  425. package/botrun-c/stress-test-results/20260121-162646/user-11.json +0 -2
  426. package/botrun-c/stress-test-results/20260121-162646/user-12-status.txt +0 -1
  427. package/botrun-c/stress-test-results/20260121-162646/user-12-timing.txt +0 -1
  428. package/botrun-c/stress-test-results/20260121-162646/user-12.json +0 -2
  429. package/botrun-c/stress-test-results/20260121-162646/user-13-status.txt +0 -1
  430. package/botrun-c/stress-test-results/20260121-162646/user-13-timing.txt +0 -1
  431. package/botrun-c/stress-test-results/20260121-162646/user-13.json +0 -2
  432. package/botrun-c/stress-test-results/20260121-162646/user-14-status.txt +0 -1
  433. package/botrun-c/stress-test-results/20260121-162646/user-14-timing.txt +0 -1
  434. package/botrun-c/stress-test-results/20260121-162646/user-14.json +0 -2
  435. package/botrun-c/stress-test-results/20260121-162646/user-15-status.txt +0 -1
  436. package/botrun-c/stress-test-results/20260121-162646/user-15-timing.txt +0 -1
  437. package/botrun-c/stress-test-results/20260121-162646/user-15.json +0 -2
  438. package/botrun-c/stress-test-results/20260121-162646/user-16-status.txt +0 -1
  439. package/botrun-c/stress-test-results/20260121-162646/user-16-timing.txt +0 -1
  440. package/botrun-c/stress-test-results/20260121-162646/user-16.json +0 -2
  441. package/botrun-c/stress-test-results/20260121-162646/user-17-status.txt +0 -1
  442. package/botrun-c/stress-test-results/20260121-162646/user-17-timing.txt +0 -1
  443. package/botrun-c/stress-test-results/20260121-162646/user-17.json +0 -2
  444. package/botrun-c/stress-test-results/20260121-162646/user-2-status.txt +0 -1
  445. package/botrun-c/stress-test-results/20260121-162646/user-2-timing.txt +0 -1
  446. package/botrun-c/stress-test-results/20260121-162646/user-2.json +0 -2
  447. package/botrun-c/stress-test-results/20260121-162646/user-3-status.txt +0 -1
  448. package/botrun-c/stress-test-results/20260121-162646/user-3-timing.txt +0 -1
  449. package/botrun-c/stress-test-results/20260121-162646/user-3.json +0 -2
  450. package/botrun-c/stress-test-results/20260121-162646/user-4-status.txt +0 -1
  451. package/botrun-c/stress-test-results/20260121-162646/user-4-timing.txt +0 -1
  452. package/botrun-c/stress-test-results/20260121-162646/user-4.json +0 -2
  453. package/botrun-c/stress-test-results/20260121-162646/user-5-status.txt +0 -1
  454. package/botrun-c/stress-test-results/20260121-162646/user-5-timing.txt +0 -1
  455. package/botrun-c/stress-test-results/20260121-162646/user-5.json +0 -2
  456. package/botrun-c/stress-test-results/20260121-162646/user-6-status.txt +0 -1
  457. package/botrun-c/stress-test-results/20260121-162646/user-6-timing.txt +0 -1
  458. package/botrun-c/stress-test-results/20260121-162646/user-6.json +0 -2
  459. package/botrun-c/stress-test-results/20260121-162646/user-7-status.txt +0 -1
  460. package/botrun-c/stress-test-results/20260121-162646/user-7-timing.txt +0 -1
  461. package/botrun-c/stress-test-results/20260121-162646/user-7.json +0 -2
  462. package/botrun-c/stress-test-results/20260121-162646/user-8-status.txt +0 -1
  463. package/botrun-c/stress-test-results/20260121-162646/user-8-timing.txt +0 -1
  464. package/botrun-c/stress-test-results/20260121-162646/user-8.json +0 -2
  465. package/botrun-c/stress-test-results/20260121-162646/user-9-status.txt +0 -1
  466. package/botrun-c/stress-test-results/20260121-162646/user-9-timing.txt +0 -1
  467. package/botrun-c/stress-test-results/20260121-162646/user-9.json +0 -2
  468. package/botrun-c/stress-test-results/20260121-163148/REPORT.html +0 -344
  469. package/botrun-c/stress-test-results/20260121-163148/REPORT.md +0 -93
  470. package/botrun-c/stress-test-results/20260121-163148/REPORT.pdf +0 -0
  471. package/botrun-c/stress-test-results/20260121-163148/config.json +0 -7
  472. package/botrun-c/stress-test-results/20260121-163148/summary.json +0 -26
  473. package/botrun-c/stress-test-results/20260121-163148/user-1-status.txt +0 -1
  474. package/botrun-c/stress-test-results/20260121-163148/user-1-timing.txt +0 -1
  475. package/botrun-c/stress-test-results/20260121-163148/user-1.json +0 -206
  476. package/botrun-c/stress-test-results/20260121-163148/user-10-status.txt +0 -1
  477. package/botrun-c/stress-test-results/20260121-163148/user-10-timing.txt +0 -1
  478. package/botrun-c/stress-test-results/20260121-163148/user-10.json +0 -110
  479. package/botrun-c/stress-test-results/20260121-163148/user-11-status.txt +0 -1
  480. package/botrun-c/stress-test-results/20260121-163148/user-11-timing.txt +0 -1
  481. package/botrun-c/stress-test-results/20260121-163148/user-11.json +0 -104
  482. package/botrun-c/stress-test-results/20260121-163148/user-12-status.txt +0 -1
  483. package/botrun-c/stress-test-results/20260121-163148/user-12-timing.txt +0 -1
  484. package/botrun-c/stress-test-results/20260121-163148/user-12.json +0 -98
  485. package/botrun-c/stress-test-results/20260121-163148/user-13-status.txt +0 -1
  486. package/botrun-c/stress-test-results/20260121-163148/user-13-timing.txt +0 -1
  487. package/botrun-c/stress-test-results/20260121-163148/user-13.json +0 -68
  488. package/botrun-c/stress-test-results/20260121-163148/user-14-status.txt +0 -1
  489. package/botrun-c/stress-test-results/20260121-163148/user-14-timing.txt +0 -1
  490. package/botrun-c/stress-test-results/20260121-163148/user-14.json +0 -116
  491. package/botrun-c/stress-test-results/20260121-163148/user-15-status.txt +0 -1
  492. package/botrun-c/stress-test-results/20260121-163148/user-15-timing.txt +0 -1
  493. package/botrun-c/stress-test-results/20260121-163148/user-15.json +0 -131
  494. package/botrun-c/stress-test-results/20260121-163148/user-16-status.txt +0 -1
  495. package/botrun-c/stress-test-results/20260121-163148/user-16-timing.txt +0 -1
  496. package/botrun-c/stress-test-results/20260121-163148/user-16.json +0 -110
  497. package/botrun-c/stress-test-results/20260121-163148/user-17-status.txt +0 -1
  498. package/botrun-c/stress-test-results/20260121-163148/user-17-timing.txt +0 -1
  499. package/botrun-c/stress-test-results/20260121-163148/user-17.json +0 -116
  500. package/botrun-c/stress-test-results/20260121-163148/user-2-status.txt +0 -1
  501. package/botrun-c/stress-test-results/20260121-163148/user-2-timing.txt +0 -1
  502. package/botrun-c/stress-test-results/20260121-163148/user-2.json +0 -98
  503. package/botrun-c/stress-test-results/20260121-163148/user-3-status.txt +0 -1
  504. package/botrun-c/stress-test-results/20260121-163148/user-3-timing.txt +0 -1
  505. package/botrun-c/stress-test-results/20260121-163148/user-3.json +0 -62
  506. package/botrun-c/stress-test-results/20260121-163148/user-4-status.txt +0 -1
  507. package/botrun-c/stress-test-results/20260121-163148/user-4-timing.txt +0 -1
  508. package/botrun-c/stress-test-results/20260121-163148/user-4.json +0 -113
  509. package/botrun-c/stress-test-results/20260121-163148/user-5-status.txt +0 -1
  510. package/botrun-c/stress-test-results/20260121-163148/user-5-timing.txt +0 -1
  511. package/botrun-c/stress-test-results/20260121-163148/user-5.json +0 -83
  512. package/botrun-c/stress-test-results/20260121-163148/user-6-status.txt +0 -1
  513. package/botrun-c/stress-test-results/20260121-163148/user-6-timing.txt +0 -1
  514. package/botrun-c/stress-test-results/20260121-163148/user-6.json +0 -125
  515. package/botrun-c/stress-test-results/20260121-163148/user-7-status.txt +0 -1
  516. package/botrun-c/stress-test-results/20260121-163148/user-7-timing.txt +0 -1
  517. package/botrun-c/stress-test-results/20260121-163148/user-7.json +0 -62
  518. package/botrun-c/stress-test-results/20260121-163148/user-8-status.txt +0 -1
  519. package/botrun-c/stress-test-results/20260121-163148/user-8-timing.txt +0 -1
  520. package/botrun-c/stress-test-results/20260121-163148/user-8.json +0 -41
  521. package/botrun-c/stress-test-results/20260121-163148/user-9-status.txt +0 -1
  522. package/botrun-c/stress-test-results/20260121-163148/user-9-timing.txt +0 -1
  523. package/botrun-c/stress-test-results/20260121-163148/user-9.json +0 -53
  524. package/botrun-c/test-merge.md +0 -1
  525. package/botrun-c/version.txt +0 -1
  526. package/botrun-c/web/.version +0 -1
  527. package/botrun-c/web/ALLOW-PUBLIC-ACCESS.md +0 -57
  528. package/botrun-c/web/FINAL-SETUP-STEPS.md +0 -71
  529. package/botrun-c/web/FIREBASE-MANUAL-STEPS.md +0 -41
  530. package/botrun-c/web/QUICK-SETUP-HELPER.md +0 -79
  531. package/botrun-c/web/README.md +0 -162
  532. package/botrun-c/web/__tests__/image-extractor.test.ts +0 -147
  533. package/botrun-c/web/__tests__/useGitHub.test.ts +0 -245
  534. package/botrun-c/web/app/favicon.ico +0 -0
  535. package/botrun-c/web/app/globals.css +0 -215
  536. package/botrun-c/web/app/image-preview/page.tsx +0 -213
  537. package/botrun-c/web/app/layout.tsx +0 -46
  538. package/botrun-c/web/app/page.tsx +0 -45
  539. package/botrun-c/web/components/CapacitorProvider.tsx +0 -43
  540. package/botrun-c/web/components/ChatPage.tsx +0 -1736
  541. package/botrun-c/web/components/ConversationList.tsx +0 -237
  542. package/botrun-c/web/components/ConversationListItem.tsx +0 -121
  543. package/botrun-c/web/components/LoginPage.tsx +0 -212
  544. package/botrun-c/web/components/Providers.tsx +0 -12
  545. package/botrun-c/web/components/StatusBarProvider.tsx +0 -16
  546. package/botrun-c/web/components/attachment-preview.tsx +0 -193
  547. package/botrun-c/web/components/botrun-incubator/BotrunIncubator.tsx +0 -266
  548. package/botrun-c/web/components/botrun-incubator/index.ts +0 -1
  549. package/botrun-c/web/components/chat-input.tsx +0 -1251
  550. package/botrun-c/web/components/chat-message.tsx +0 -598
  551. package/botrun-c/web/components/drop-zone.tsx +0 -143
  552. package/botrun-c/web/components/gdrive/gdrive-add-dialog.tsx +0 -254
  553. package/botrun-c/web/components/gdrive/gdrive-drawer.tsx +0 -236
  554. package/botrun-c/web/components/gdrive/gdrive-selector.tsx +0 -226
  555. package/botrun-c/web/components/gdrive/index.ts +0 -7
  556. package/botrun-c/web/components/generated-image-card.tsx +0 -363
  557. package/botrun-c/web/components/github/GitHubConnect.tsx +0 -366
  558. package/botrun-c/web/components/github/index.ts +0 -2
  559. package/botrun-c/web/components/import-skill-dialog.tsx +0 -208
  560. package/botrun-c/web/components/scroll-to-bottom-button.tsx +0 -90
  561. package/botrun-c/web/components/share-skill-dialog.tsx +0 -175
  562. package/botrun-c/web/components/skills-editor.tsx +0 -443
  563. package/botrun-c/web/components/skills-manager-drawer.tsx +0 -586
  564. package/botrun-c/web/components/smart-button-group.tsx +0 -132
  565. package/botrun-c/web/config/smart-buttons.ts +0 -295
  566. package/botrun-c/web/config/welcome-messages.ts +0 -29
  567. package/botrun-c/web/contexts/AuthContext.tsx +0 -220
  568. package/botrun-c/web/hooks/use-toast.ts +0 -187
  569. package/botrun-c/web/hooks/useAppStoreUpdate.ts +0 -356
  570. package/botrun-c/web/hooks/useAppVersion.ts +0 -113
  571. package/botrun-c/web/hooks/useAttachments.ts +0 -269
  572. package/botrun-c/web/hooks/useAuthToken.ts +0 -59
  573. package/botrun-c/web/hooks/useAutoWelcome.ts +0 -89
  574. package/botrun-c/web/hooks/useCapacitorPlatform.ts +0 -113
  575. package/botrun-c/web/hooks/useCapawesomeLiveUpdate.ts +0 -149
  576. package/botrun-c/web/hooks/useClaudeModel.ts +0 -118
  577. package/botrun-c/web/hooks/useConversation.ts +0 -115
  578. package/botrun-c/web/hooks/useConversations.ts +0 -235
  579. package/botrun-c/web/hooks/useGdriveFolders.ts +0 -199
  580. package/botrun-c/web/hooks/useGdriveSync.ts +0 -107
  581. package/botrun-c/web/hooks/useGitHub.ts +0 -409
  582. package/botrun-c/web/hooks/useScrollToBottom.ts +0 -150
  583. package/botrun-c/web/hooks/useStatusBar.ts +0 -42
  584. package/botrun-c/web/hooks/useUserPlan.ts +0 -153
  585. package/botrun-c/web/lib/api-config.ts +0 -162
  586. package/botrun-c/web/lib/api-url.ts +0 -62
  587. package/botrun-c/web/lib/api.ts +0 -105
  588. package/botrun-c/web/lib/attachment-utils.ts +0 -168
  589. package/botrun-c/web/lib/build-version.ts +0 -11
  590. package/botrun-c/web/lib/clipboard-utils.ts +0 -199
  591. package/botrun-c/web/lib/constants.ts +0 -62
  592. package/botrun-c/web/lib/conversation-storage.ts +0 -324
  593. package/botrun-c/web/lib/firebase-capacitor.ts +0 -135
  594. package/botrun-c/web/lib/firebase.ts +0 -137
  595. package/botrun-c/web/lib/firestore-auth.ts +0 -61
  596. package/botrun-c/web/lib/firestore-auth.ts.migration-bak +0 -319
  597. package/botrun-c/web/lib/image-extractor.ts +0 -156
  598. package/botrun-c/web/lib/path-utils.ts +0 -48
  599. package/botrun-c/web/lib/rehype-del-to-mark.ts +0 -19
  600. package/botrun-c/web/lib/upload-service.ts +0 -326
  601. package/botrun-c/web/lib/utils.ts +0 -6
  602. package/botrun-c/web/next.config.js +0 -49
  603. package/botrun-c/web/package-lock.json +0 -6711
  604. package/botrun-c/web/package.json +0 -63
  605. package/botrun-c/web/postcss.config.js +0 -6
  606. package/botrun-c/web/public/apple_icon.png +0 -0
  607. package/botrun-c/web/public/google_icon.png +0 -0
  608. package/botrun-c/web/public/logo-48-small.png +0 -0
  609. package/botrun-c/web/public/logo-48.png +0 -0
  610. package/botrun-c/web/scripts/generate-version.js +0 -36
  611. package/botrun-c/web/scripts/update-build-version.js +0 -41
  612. package/botrun-c/web/tailwind.config.ts +0 -80
  613. package/botrun-c/web/test-welcome-message.mjs +0 -115
  614. package/botrun-c/web/tsconfig.json +0 -42
  615. package/botrun-c/web/types/agent.ts +0 -6
  616. package/botrun-c/web/types/attachment.ts +0 -39
  617. package/botrun-c/web/types/conversation.ts +0 -68
  618. package/botrun-c/web/types/flutter.d.ts +0 -6
  619. package/botrun-c/web/types/project.ts +0 -41
  620. package/botrun-c/web/types/skills.ts +0 -13
  621. 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
  622. package/lib/writing/index.mjs +0 -5
  623. /package/{lib/core → modules/_core}/adapters/base.mjs +0 -0
  624. /package/{lib/core → modules/_core}/adapters/claude.mjs +0 -0
  625. /package/{lib/core → modules/_core}/adapters/gemini-api.mjs +0 -0
  626. /package/{lib/core → modules/_core}/adapters/gemini-shared.mjs +0 -0
  627. /package/{lib/core → modules/_core}/adapters/gemini-vertex.mjs +0 -0
  628. /package/{lib/core → modules/_core}/adapters/local.mjs +0 -0
  629. /package/{lib/core → modules/_core}/adapters/nchc.mjs +0 -0
  630. /package/{lib/core → modules/_core}/adapters/openai-shared.mjs +0 -0
  631. /package/{lib/core → modules/_core}/adapters/openrouter.mjs +0 -0
  632. /package/{lib/core → modules/_core}/ai-cache.mjs +0 -0
  633. /package/{lib/core → modules/_core}/ai-router.mjs +0 -0
  634. /package/{lib/core → modules/_core}/cli-utils.mjs +0 -0
  635. /package/{lib/core → modules/_core}/dag.mjs +0 -0
  636. /package/{lib/core → modules/_core}/db.mjs +0 -0
  637. /package/{lib/core → modules/_core}/env.mjs +0 -0
  638. /package/{lib/flows → modules/_core}/hatch-portal.mjs +0 -0
  639. /package/{lib/core → modules/_core}/llm.mjs +0 -0
  640. /package/{lib/flows → modules/_core}/opencode-agent.mjs +0 -0
  641. /package/{lib/core → modules/_core}/paths.mjs +0 -0
  642. /package/{lib/core → modules/_core}/proxy.mjs +0 -0
  643. /package/{lib/flows → modules/_core}/review-doc.mjs +0 -0
  644. /package/{lib → modules/_core}/tools/fs-tools.mjs +0 -0
  645. /package/{lib → modules/_core}/tools/index.mjs +0 -0
  646. /package/{lib/core → modules/_core}/watermelon.mjs +0 -0
  647. /package/{lib/ocr/index.mjs → modules/ocr/ocr-lib.mjs} +0 -0
  648. /package/{lib → modules}/portal/hatch.mjs +0 -0
  649. /package/{lib/portal/index.mjs → modules/portal/portal-lib.mjs} +0 -0
  650. /package/{lib → modules}/search/crawler.mjs +0 -0
  651. /package/{lib/prompt → modules/skill}/prompts/zero-framework/coding.md +0 -0
  652. /package/{lib/prompt → modules/skill}/prompts/zero-framework/fullstack.md +0 -0
  653. /package/{lib/prompt → modules/skill}/prompts/zero-framework/gemini-search-cli.md +0 -0
  654. /package/{lib/prompt → modules/skill}/prompts/zero-framework/search.md +0 -0
  655. /package/{lib/prompt → modules/skill}/prompts/zero-framework/segment.md +0 -0
  656. /package/{lib/prompt → modules/skill}/prompts/zero-framework/slice.md +0 -0
  657. /package/{lib/prompt → modules/skill}/prompts/zero-framework/smart-cache.md +0 -0
  658. /package/{lib/prompt → modules/skill}/prompts/zero-framework/trigram-search.md +0 -0
  659. /package/{lib/prompt → modules/skill}/prompts/zero-framework/tts-format.md +0 -0
  660. /package/{lib/prompt → modules/skill}/prompts/zero-framework/watermelon-sqlite.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`